MathML

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

MathML (ראשי תיבות של Mathematical Markup Language) היא שפת סימון לתיאור סימונים מתמטיים. מטרת השפה היא לשלב ולהציג סימונים מתמטיים מורכבים בצורה מסודרת בדפי אינטרנט ובמסמכים אחרים ללא צורך בשילוב תמונות, סימון TeX, עיבוד JavaScript, או בתוספות צד־שלישי לדפדפן. השפה היא חלק מ־HTML5, ותקן ISO/IEC DIS 40314 החל משנת 2015.[1]

MathML
פרדיגמות שפת סימון
שנה 1998
מפתח World Wide Web Consortium עריכת הנתון בוויקינתונים
גרסה אחרונה 3.0 (2014)
מימושים WebKit, Gecko, Blink, ויישומים אחרים של HTML5.
הושפעה על ידי XML, סימון מתמטי
סיומת mml עריכת הנתון בוויקינתונים
www.w3.org/Math/
לעריכה בוויקינתונים שמשמש מקור לחלק מהמידע בתבנית OOjs UI icon info big.svg

היסטוריהעריכה

בעיית קידוד הסימונים המתמטיים במחשבים הייתה קיימת עוד לפני האינטרנט. משתמשי דואר אלקטרוני נהגו לקודד סימונים מתמטיים בעזרת תווי ASCII. מספר שיטת ושפות לסימון מתמטי, לדוגמה TeX, היו נמצאות בשימוש נרחב כבר בשנת 1992 מעט לפני שהאינטרנט הפך לכלי פופולרי לשיתוף מידע בין מדענים וגולשים. HTML – שפת הסימון של הרשת – נוצרה בדיוק למטרת שיתוף המידע בין מדענים באקדמיה, ולמרות זאת, הדרכים לשתף סימונים מתמטיים בעזרת HTML היו מוגבלות מאוד. במקום זאת נעשה שימוש בתמונות כדי להציג את הנוסחאות המתמטיות בדפי הרשת. תמונות אלה בדרך כלל לא היו קריאות כי סבלו מטשטוש שנוצר מדחיסת תמונה, ובנוסף גרמו לקושי בעריכה ותחזוקה עבור החוקרים.[2]

ארגון ה־W3C זיהה כי המחסור בדרכים יעילות לשיתוף מסרים מדעיים ברשת היווה בעיה רצינית וקשה שדרשה תקינה. בשנת 1994 התקבלה ההצעה הראשונה שכונתה HTML Math עבור HTML 3.0, שאותה הגיש דֵייב רָאגֶט. בשנת 1995 נעשה דיון נוסף מסביב לבעיה בכנס של ה־W3C בדרמשטאדט, בנובמבר 1995 נציגים מטעם Wolfram Research הגישו הצעה נוספת ל־W3C. במאי 1996 בכנס ה־Digital Library Initiative בשמפיין, אלינוי שוב הועלה הנושא בין גורמים שונים. אחרי הכנס הזה הוקמה הוועדה לעריכה מתמטית ב־HTML (באנגלית HTML Math Editorial Review Board) הראשונה מטעם ה־W3C שהוקצתה לאתגר. במשך הזמן הוועדה התרחבה והשתכללה, במרץ 1997 הוועדה התחדשה כ־קבוצת העבודה למתמטיקה מטעם ה־W3C (באנגלית W3C Math Working Group) הראשונה. קבוצת העבודה השנייה למתמטיקה מטעם ה־W3C הוקמה ביולי 1998, קבוצה זאת המשיכה לעבוד על המשימה עד לסוף שנת 2000.[2]

MathML נוצרה כדי לתת מענה מיטבי לתחומי עניין והתמחות מגוונים במתמטיקה, מדע, והנדסה. בנוסף לכך הוועדה דאגה שההצעה הסופית תתחשב גם בנגישות עבור לקויי ראייה. חוקרים מטעם Wolfram Research שהיו חלק מהוועדה הביאו אתם ניסיון וידע קודם מהפיתוח של Mathematica 3.0 שהתמודדה גם היא עם בעיות דומות בהצגה של מבנים מתמטיים. בוועדה השתתפו עוד מדענים ואנשי מחקר רבים שתרמו לעיצובה של MathML, ובניהם נציגים מטעם מייפל, IBM, אוניברסיטת מערב אונטריו, INRIA (המכון הצרפתי לחקר מדעי המחשב), הוצאת Elsevier, ונוספים. MathML הושפעה מפרויקט ה־OpenMath, של קב' עבודה מס' 12083 מטעם ארגון התקינה הבינלאומי (ISO). האגודה האמריקאית למתמטיקה (AMS) לקחה תפקיד מרכזי בעיצובה של MathML.[2]

אפיונים והמלצותעריכה

המלצות מטעם W3C נחשבות בפועל לתקני רשת.[3] בניגוד מוחלט להמלצות, לטיוטות אין כל חשיבות או מעמד רשמי מטעם הארגון.

אפיון הופעת טיוטה ראשונה תאריך המלצה אחרונה הערות
MathML 1.0 15 במאי 1997[4] 7 באפריל 1998[5] ההמלצה הראשונה של MathML הופיעה כחודשיים אחרי XML. באפיון זה הוגדרו ליבת ומטרת השפה.[6]
MathML

1.01

(המלצה קודמת) 7 ביולי 1999[7] התגית select ב־MathML שונתה ל־selector כדי למנוע התנגשות עם התגית הקיימת ב־HTML.[8][9] עדכון לטבלת תווי Unicode ב־MathML אחרי הצעת STIX.[10] החלת תיקוני עריכה מהגרסה הקודמת.[11]
MathML 2.0 1 בדצמבר 1999[12] 21 באוקטובר 2003[13] עדכון מלא לטבלת תווי Unicode ב־MathML. תמיכה ראשונית בטקסט דו־כיווני והרחבה מקיפה לתחביר ההצגה של השפה. הוצאה משימוש לתגיות reln ו־fn לטובת שימוש עקבי עם התגית apply בתחביר התוכן של השפה. הוספת תגיות חדשות. אפיון DOM מלא עבור MathML.[14] בגרסה השנייה של MathML 2.0 הופיעו תיקוני עריכה ועדכון נוסף לטבלת התווים.[15]
MathML 3.0 27 באפריל 2007[16] 10 באפריל 2014[17] תמיכה מלאה בטקסט דו־כיווני, שליטה במיקום סימנים ושבירת שורות, הפעלת סימונים מתמטיים בסיסיים, תגי MathML חדשים כדי לבאר את משמעות הסימון וכוונת הכותב.[18] פרופיל CSS מקיף עבור MathML שהומלץ ב־2011.[19]
MathML 4.0 26 בינואר 2019[20] (טרם הומלצה)

מטרות השפהעריכה

לאור המגבלות של HTML, חוקרים נאלצו להשתמש בתמונות על מנת להציג נוסחאות מתמטיות מורכבות שהכילו בהן סימונים שהתפרשו אופקית (כמו קו שבר, סימון שורש), או אנכית (כמו ווקטורי עמודה) ולא היו ניתנות להצגה פרופורציונלית ומיטבית בעזרת תווי יוניקוד וטבלאות HTML. שימוש זה הצטבר במשך שנים, והועלתה ההצעה לשכלל את המצב הקיים ולשפר את משקל ואיכות התמונה (לדוגמה, כפי ש־SVG נתנה מענה לתצוגת תרשימים ברשת) במקום לפתח שפת סימון חדשה ייעודית למתמטיקה. לאחר דיונים הוועדה נמנעה מלאמץ את השיטה הקיימת לאור הטיעונים הבאים.[2]

שימושיותעריכה

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

תחזוקה ועריכהעריכה

  • קליטת ושליפת הסימונים כטקסט (מקודד לשפת סימון) תמיד תהיה חסכונית ומהירה יותר מאשר קובצי תמונה, במיוחד בבסיסי נתונים גדולים.
  • להשתמש בשפת סימון עם התחביר המוכר של XML הישר בתוך קובץ ה־HTML בלי צורך בעורך ייעודי.
  • לעודד משתמשי TeX בקהילה המדעית לעבור ל־MathML ולהמיר את העבודה שלהם בקלות.
  • לאפשר למנועי פריסת תצוגה לשכלל את ההצגה של התוכן המתמטי באופן אחיד בכל הרשת, גם כעבור זמן רב מאז שהתכנים פורסמו מבלי שהעורכים יצטרכו לשנות את המאמרים שכבר פרסמו בעבר על מנת להבטיח איכות הצגה מיטבית ועדכנית.

נגישותעריכה

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

  • תצוגת הסימונים בעזרת MathML תתחייב להצגה בחדות מקסימלית בכל גודל גופן או מידת תקריב. (בדומה ל־SVG)
  • לאפשר לתכנות מחשב ודפדפנים לדובב סימוני MathML עבור קוראים שסובלים מעיוורון.
  • להתאים את התצוגה של הסימונים לצגים שונים, לדוגמה צגים קטנים לגובה כמו של טלפונים ניידים, וצגים גדולים לרוחב כמו של מחשבים, וזאת מבלי לגרוע בנגישות.

דוגמהעריכה

נוסחת השורשים הידועה,

 

תתואר ב־MathML כך:

<mrow>
  <mi>x</mi>
  <mo>=</mo>
  <mfrac>
    <mrow>
      <mrow>
        <mo>-</mo>
        <mi>b</mi>
      </mrow>
      <mo>&#xB1;<!--plus-minus sign--></mo>
      <msqrt>
        <mrow>
          <msup>
            <mi>b</mi>
            <mn>2</mn>
          </msup>
          <mo>-</mo>
          <mrow>
            <mn>4</mn>
            <mo>&#x2062;<!--invisible times--></mo>
            <mi>a</mi>
            <mo>&#x2062;<!--invisible times--></mo>
            <mi>c</mi>
          </mrow>
        </mrow>
      </msqrt>
    </mrow>
    <mrow>
      <mn>2</mn>
      <mo>&#x2062;<!--invisible times--></mo>
      <mi>a</mi>
    </mrow>
  </mfrac>
</mrow>
השוואה לשפות סימון אחרות
שפת סימון תיאור
TeX
x=\frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
troff/eqn
x={-b +- sqrt{b sup 2 – 4ac}} over 2a
OpenOffice Math

LibreOffice Math

x={-b plusminus sqrt {b^2 – 4 ac}} over {2 a}
x={-b +- sqrt {b^2 – 4ac}} over {2a}
x={-b ± sqrt {b^2 – 4ac}} over {2a}
ASCIIMath
x=(-b +- sqrt(b^2 - 4ac))/(2a)

הפרדה בין ההצגה והמשמעותעריכה

MathML עושה הפרדה בין ההצגה והמשמעות של הסימון. הסיבה לכך היא כדי לאפשר למשתמשים להחליט על העדפות האישיות שלהם כיצד ירצו לתקשר את הסימון. דוגמה מהיבט הנגישות, ליקויי ראיה מעדיפים לתת לקורא מסך לדובב את משמעות הסימון במקום לקרוא אותו. דוגמה נוספת מהיבט התחזוקה, ראוי לאחסן רק את משמעות הסימונים בבסיס נתונים כדי לחסוך פס רוחב, מקום, וזמן חיפוש, אבל את ההצגה עצמה אפשר לחולל רק אם יש באמת צורך בהצגה של התוכן.

תחביר ההצגהעריכה

מאופיין באנגלית כ‏־"presentation markup", הוא תחביר המתאר את צורת ההצגה של התוכן ב־MathML.

תחביר התוכןעריכה

מאופיין באנגלית כ־"content markup", הוא תחביר המתאר את משמעות התוכן ב־MathML. את התחביר הזה עצבו במקור אנשי OpenMath, ומאוחר יותר בשיתוף פעולה עם מעצבי MathML.[21] למבנה התחביר קיים דמיון רב לשפות Lisp, משתמשים בתגים <apply>...</apply> כדי לתאר כל פעם פעולה מתמטית בעזרת רשימת איברים. האיבר הראשון ברשימה תמיד מייצג את המשמעות המתמטית שחלה על הרשימה, ושאר האיברים ברשימה הם המשתתפים בפעולה המתמטית. כך לדוגמה תראה נוסחת השורשים בתחביר התוכן של MathML.

<apply>
  <eq/>
  <ci>x</ci>
  <apply>
    <divide/>
    <apply>
      <plus/>
      <apply>
        <minus/>
        <ci>b</ci>
      </apply>
      <apply>
        <root/>
        <apply>
          <minus/>
          <apply>
            <power/>
            <ci>b</ci>
            <cn>2</cn>
          </apply>
          <apply>
            <times/>
            <cn>4</cn>
            <ci>a</ci>
            <ci>c</ci>
          </apply>
        </apply>
      </apply>
    </apply>
    <apply>
      <times/>
      <cn>2</cn>
      <ci>a</ci>
    </apply>
  </apply>
</apply>

קישורים חיצונייםעריכה

  מדיה וקבצים בנושא MathML בוויקישיתוף

הערות שולייםעריכה