סקילים למורים

סקיל עזר · מורים למתמטיקה ולמדעים

עיצוב משוואות לדפי עבודה בעברית

גרסה 2.1.0 · עודכן 07.11.2026 · format-equations-for-hebrew-worksheets

מתמטיקהכימיהביולוגיהנבדק ב-Geminiמתאים ל-Claudeמתאים ל-ChatGPT
הורדת הסקיל

קובץ zip · 4KB

הבעיה שהוא פותר

ג'מיני מציג משוואות יפה בצ'אט, אבל בייצוא ל-Google Docs הן מגיעות כקוד LaTeX גולמי, ותוספים שממירים אותן חסומים ברוב בתי הספר. גם בטקסט רגיל מטענים כמו H₃O⁺ קופצים לצד הלא נכון בדף עברי, וחצים בניסוחים כימיים יוצאים הפוכים.

מה הוא עושה

מגדיר לג'מיני איך לבנות דף עבודה בעברית עם משוואות: קובץ Word עם משוואות אמיתיות שאפשר לערוך, ניסוחים כימיים כטקסט יוניקוד, חצים בכיוון הנכון, מיקום משוואות שלא מתבלגן, ותו כיווניות נסתר שמונע קפיצת מטענים. כולל בדיקה עצמית לפני מסירה.

מה יוצא ממנו

קובץ Word (‎.docx) שנפתח נכון ב-Word וב-Google Docs

מה נבדק ומה עוד לא

בדקתי כל סקיל בשימוש אמיתי לפני שהעליתי אותו. זה מה שראיתי, כולל מה שעוד לא עובד מושלם.

נבדק ועבד (Gemini)

  • ג'מיני ממיר את הדף ב-pandoc בסביבת הקוד שלו, והקובץ יוצא עם משוואות Word אמיתיות (44 משוואות בדף סדרות הנדסיות, בלי בעיות)
  • משוואות Word ניתנות לעריכה ב-Word וב-Google Docs אחרי "שמירה כ-Google Docs"
  • תו LRM מונע קפיצת מטענים ב-Docs, ושורד המרה מ-Word ל-Docs
  • ניסוחים כימיים ביוניקוד עם → ו-⇌ ומצבי צבירה יוצאים נכון בקובץ

עוד לא, או שכדאי לדעת

  • לפעמים, במיוחד בכימיה, ג'מיני עונה בצ'אט במקום ליצור קובץ. הוספת המילים "כקובץ Word" לבקשה פותרת את זה
  • קובץ Python מצורף לסקיל גורם לג'מיני לסרב ("סקילים עם סקריפטים לא רצים כאן"), ולכן הקוד כתוב בתוך ההוראות
  • במצב "מעמיק", ריצה ארוכה עם הרבה שלבי קוד הסתיימה פעם אחת ב"קרתה שגיאה"

ב-Claude וב-ChatGPT זה אותו פורמט ואמור לעבוד, אבל עוד לא בדקתי שם.

איך מתקינים

בג'מיני

  1. מורידים את קובץ ה-zip מהכפתור בדף הזה. לא פותחים אותו.
  2. בג'מיני פותחים את הגדרות, ונכנסים ל-סקילים (כישורים).
  3. בוחרים העלאת סקיל ובוחרים את הקובץ שהורדתם.
  4. פותחים צ'אט חדש ומבקשים כרגיל, למשל: דף עבודה במשוואות ריבועיות לכיתה ט', כקובץ Word. אין צורך לקרוא לסקיל בשם.
  5. יצאה גרסה חדשה של הסקיל? מורידים שוב, ובהגדרות בוחרים החלפת סקיל. העדכון לא מגיע לבד.

ב-Claude

אותו קובץ zip בדיוק. ב-claude.ai: הגדרות, יכולות, ובאזור הסקילים מעלים את הקובץ.

ב-ChatGPT

אותו פורמט SKILL.md. אם אין אצלכם עדיין העלאת סקילים, מדביקים את התוכן של SKILL.md (בתחתית הדף) בהוראות של פרויקט או של GPT מותאם.

מה כתוב בסקיל

הצגת הקובץ SKILL.md
---
name: format-equations-for-hebrew-worksheets
description: מעצב דפי עבודה וחומרי עזר בעברית שיש בהם משוואות מתמטיות או ניסוחים כימיים, ויוצר אותם כקובץ Word שנפתח נכון ב-Word וב-Google Docs. השתמש כאשר יוצרים דף עבודה, דף תרגול, מבחן, בוחן, דף נוסחאות או מפתח תשובות בעברית שכולל נוסחאות, משוואות, שברים, שורשים, חזקות, סדרות, ניסוחים כימיים, יונים או מטענים, וכאשר סקיל אחר מבקש לעצב חומר כזה.
---

# עיצוב משוואות בדפי עבודה בעברית

הכללים כאן נבדקו בפועל ב-Word וב-Google Docs. כל כלל מונע תקלה שכבר קרתה.

## התוצר: תמיד קובץ Word להורדה

- צור קובץ Word ‏(‎.docx) גם אם המורה לא כתב "קובץ". אל תכתוב את דף העבודה בתשובה בצ'אט.
- **הדרך היחידה לבנות את הקובץ:** כתוב את הדף כ-Markdown, והמר אותו ב-pandoc בסביבת הקוד שלך. pandoc מותקן בסביבת הקוד של Gemini, והוא הופך כל `$...$` למשוואת Word אמיתית.
- את הקוד שלמטה אתה כותב ומריץ בעצמך בסביבת הקוד הרגילה. זה לא סקריפט של הסקיל, ואין שום מגבלה על הרצתו.
- **אל תבנה את הקובץ ידנית עם python-docx או עם XML של משוואות.** בניסוי זה הסתיים בתקלה והקובץ לא נמסר.

## שלבי העבודה

1. כתוב את כל הדף, כולל מפתח התשובות, כ-Markdown לפי "כללי כתיבה" למטה.
2. **בהרצת קוד אחת בלבד:** הגדר את `build` שלמטה, שים את ה-Markdown במחרוזת raw (`r"""..."""`, כדי שקוד כמו `\frac` לא יישבר), וקרא ל-`build(md, "<שם-באנגלית>.docx")`. אל תפצל לכמה הרצות ואל תבדוק קודם אם pandoc קיים: הוא קיים. כל הרצה נוספת מאריכה את התשובה ועלולה לגרום לשגיאה.
3. אם הודפסו בעיות, תקן את ה-Markdown והרץ שוב. אל תמסור קובץ עם בעיות.
4. מסור את קובץ ה-docx, ואחריו את שתי שורות ההודעה למורה.

```python
import re, subprocess, zipfile, shutil

HEB = re.compile(r"[\u0590-\u05FF]")

def build(md, out):
    open("worksheet.md", "w", encoding="utf-8").write(md)
    subprocess.run(["pandoc", "worksheet.md", "-o", out], check=True)
    problems = []
    tmp = out + ".tmp"
    with zipfile.ZipFile(out) as zin, zipfile.ZipFile(tmp, "w", zipfile.ZIP_DEFLATED) as zout:
        for item in zin.infolist():
            data = zin.read(item.filename)
            if item.filename == "word/document.xml":
                xml = data.decode("utf-8")
                def fix_run(m):
                    run = m.group(0)
                    text = "".join(re.findall(r"<w:t[^>]*>(.*?)</w:t>", run, re.S))
                    if not HEB.search(text):
                        run = re.sub(r"<w:rtl\s*/>", "", run)
                    return re.sub(r"(<w:t[^>]*>)(.*?)(</w:t>)", lambda t: t.group(1) + re.sub(
                        r"(?<=[A-Za-z0-9\u00B2\u00B3\u00B9\u2070-\u209F])([\u207A\u207B)\]])(?!\u200E)",
                        "\\1\u200E", t.group(2)) + t.group(3), run, flags=re.S)
                xml = re.sub(r"<w:r>.*?</w:r>", fix_run, xml, flags=re.S)
                xml = re.sub(r'(<w:p><w:pPr><w:pStyle w:val="Heading\d" />)(?=(?:(?!</w:p>).)*מפתח תשובות)',
                             r"\1<w:pageBreakBefore />", xml, flags=re.S)
                for t in re.findall(r"<w:t[^>]*>(.*?)</w:t>", xml, re.S):
                    if "$" in t or re.search(r"\\[a-zA-Z]+", t):
                        problems.append("קוד LaTeX גלוי: " + t[:60])
                for t in re.findall(r"<m:t>(.*?)</m:t>", xml, re.S):
                    if HEB.search(t):
                        problems.append("עברית בתוך משוואה: " + t[:60])
                print("משוואות בקובץ:", xml.count("<m:oMath>"))
                data = xml.encode("utf-8")
            elif item.filename == "word/styles.xml":
                data = re.sub(r"<w:rFonts[^>]*/>", '<w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial" w:eastAsia="Arial" />',
                              data.decode("utf-8")).encode("utf-8")
            zout.writestr(item, data)
    shutil.move(tmp, out)
    print("בעיות:", problems or "אין")
    return problems
```

הקוד מתקן לבד שלושה דברים: מסיר סימון מימין לשמאל מקטעים באנגלית (אחרת Word הופך בהם את סדר המילים), מוסיף תו כיווניות LRM אחרי מטענים וסוגריים בניסוחים (אחרת ב-Google Docs ה-⁺ קופץ לתחילת השורה), מעביר את "מפתח תשובות" לעמוד חדש, וקובע גופן Arial לכל הטקסט (אחרת הניסוחים באנגלית יוצאים בגופן אחר מהעברית).

## כללי כתיבה ב-Markdown

- **בראש הקובץ**, בדיוק כך:
  ```
  ---
  dir: rtl
  lang: he
  ---
  ```
- **שורה ריקה בין כל שתי פסקאות.** שורות צמודות מתאחדות לפסקה אחת, ואז משוואה נדחקת לאמצע משפט.
- כותרת ראשית `#`, כותרת לכל שאלה `##`.
- מקום לתשובה: שלוש פסקאות שכל אחת מהן `&nbsp;`, עם שורה ריקה ביניהן.
- את הפתרונות שים תחת הכותרת `## מפתח תשובות`. הקוד מעביר אותה לעמוד חדש בעצמו.
- **אל תכתוב בתוך ה-Markdown שלוש גרשיים הפוכים (\`\`\`).** הם שוברים את תצוגת הקוד, ומפתח התשובות נשפך לתוך הצ'אט.

### מתמטיקה
- משוואה בפסקה משלה: `$$...$$`. משוואה קצרה בתוך שורה (`$...$`) מותרת **רק בסוף משפט, אחרי נקודתיים**.
- **אף פעם לא משוואה באמצע משפט בעברית.** ב-Word הסדר מתבלגן.
- **אין עברית בתוך `$`.** מילים נכתבות במשפט לפני המשוואה או אחריה.
- LaTeX רגיל: `\frac{a}{b}`, `\sqrt{x}`, `x^{2}`, `a_{n}`, `\cdot`.

### כימיה
- ניסוחים כימיים נכתבים כ**טקסט רגיל עם תווי יוניקוד**, לא בתוך `$`: ספרות תחתיות ₀₁₂₃₄₅₆₇₈₉, מטענים ⁺ ⁻ ² ³ (לדוגמה Fe³⁺, ‏SO₄²⁻), מצבי צבירה (s) (l) (g) (aq).
- **החץ הוא תמיד → או ⇌.** אסור ← או ⟵ בניסוח כימי. ← מותר רק בניסוח מילולי בעברית.
- כל ניסוח בפסקה משלו. תנאי התגובה (אור, חום, זרז) במשפט עברי מתחת לניסוח.

## הודעה למורה אחרי הקובץ

כתוב בדיוק את שתי השורות האלה, בלי הסברים נוספים:

1. לעבודה ב-Google Docs: מעלים את הקובץ ל-Drive, פותחים אותו, ובוחרים קובץ ← שמירה כ-Google Docs. המשוואות יישארו ניתנות לעריכה.
2. אם סימן בניסוח קפץ לתחילת השורה: מסמנים את השורה, לוחצים על כפתור כיוון הטקסט משמאל לימין, ואחר כך על יישור לימין.

## טעויות שכבר קרו

- דף עבודה שנכתב בצ'אט במקום כקובץ, עם `$a_1$` גלוי.
- תשובה "סקילים עם קוד לא יכולים לרוץ כאן". זה לא נכון: הקוד למעלה רץ בסביבת הקוד הרגילה.
- בנייה ידנית של הקובץ ב-python-docx, שהסתיימה ב"תקלה טכנית" והקובץ לא נמסר.
- משוואות בשורות צמודות לטקסט בלי שורה ריקה, שהתאחדו לאמצע משפט.
- חץ ⟵ בניסוח כימי.
- גרשיים הפוכים משולשים בתוך ה-Markdown, שגרמו למפתח התשובות להופיע בצ'אט.