TeX/LaTeX/Lyx
הכל התחיל לפני... 30 שנה בערך? כשנות' (D. E. Knuth) הוציא מהדורה מתוקנת לאחד מהכרכים של ספרו המפורסם "The Art of Programming". התחיל אז בדיוק לעבוד עם דפוס אוטומטי או משהו כזה, והוא היה מאוד מאוד מאוד מאוכזב מהתוצאות. זה הוביל לכך שהוא חקר את כל נושא סדור הדפוס (typesetting) במשך כ-10 שנים ובנה שפת תכנות שנקראת TeX (יש לבטא את זה "טך"). אם שפות התכנות הרגילות שאתה מכיר מתרגמות את התכניות שלהם מקבצי טקסט לקבצי הרצה (exe וכדומה) אז TeX מתרגמת את התכניות שלה לקבצי פלט dvi, שמסוגלים להגיע לכל רמת דיוק של הדפסה שנחוצה. אחד המאפיינים השולטים של TeX הוא מערכת המאקרואים שלה. בעזרת המערכת הזו ניתן להרחיב את השפה TeX, שהיא שפה מאוד מאוד פרימיטיבית לשפות ברמות הפשטה גבוהות יותר. אם ב-TeX הבסיסית הפקודות הפרימיטיביות הן "הוסף רווח של 2 נקודות (points)", או "אם תחתוך את העמוד בנקודה הזו, תקבל קנס של 700 נקודות", אז בעזרת מערכת המאקרואים ניתן להוסיף פקודות כמו:
\theorem{Cantor's Theorem on Uniform Continuity}{if f is continuous in [a,b], it is uniformly continuous there.}
שיתורגמו, למשל, לפלט:
Theorem 5.2: Cantor's Theorem on Uniform Continuity If f is continuous in [a,b], it is uniformly continuous there.
בכל זאת, TeX מגיע עם אוסף של הרחבות בסיסי שנקרא plainTeX. הוא מאפשר כתיבה בסיסית ב-TeX ומאפשר מדרגה טיפה יותר גבוהה שממנה אפשר להתחיל לבנות את ההרחבות הרצויות. אחד המאפיינים המפורסמים של plainTeX הוא האופן שבו ניתן לשלב נוסחאות כחלק בלתי נפרד וזהה לטקסט. לדוגמה:
The sum of the arithmetic sequence $1 + 2 + \ldots + n$ is: $$\sum_{i=1}^n i = \frac{n(n+1)}{2}
יראה (הרבה יותר טוב ממה שזה נראה כאן):
The sum of the arithmetic sequence 1 + 2 + ... + n is: n.......n(n+1) ∑ i = ----------- i=1.......2
אחד הייתרונות של TeX על מעבדי תמלילים כדוגמת Word הוא שהוא מאפשר לשמור על המבנה הלוגי של התוכנית. בא נסתכל איך היינו ממשים את הדוגמה על המשפט של קנטור בוורד. היינו צריכים להתחיל פסקה חדשה, להוסיף מספור אוטומטי, לכתוב את הכותרת, להדגיש אותה. לרדת שורה ולכתוב את תוכן המשפט. את כל זה נצטרך לעשות בכל פעם שנרצה להוסיף משפט. לכן, כדי לחסוך עבודה, נהיה חכמים ונוסיף פקודת מאקרו (של וורד) שתעשה את כל זה בשבילנו. עכשיו כתבנו 50 משפטים, והבאנו את הספר שלנו למעצב גרפי. הוא הסתכל על הספר ואמר שהעיצוב נוראי, ושצריך להעיף את כל הנקודותיים מהכותרת, לשנות את הגופן של הכותרת לגופן אחר (ששונה מהגופן הרגיל של הטקסט) ולהוסיף רווח יותר גדול בין הכותרת של כל משפט לגוף המשפט. מכיוון שוורד לא באמת זוכר את האופנים השונים שבהם הפעלנו את המאקרואים ועל מה בדיוק הפעלנו כל מאקרו, נצטרך לעבור משפט משפט ולשנות אותו. רוב הסיכויים שתהיה לנו טעות היכנשהו. ב-TeX נצטרך פשוט לשנות את ההגדרה של \theorem, מכיוון שבתוכנית שלנו אנחנו אומרים בדיוק מה זה כותרת המשפט, מהו גוף המשפט וכו'. בגדול, אם אתה משתמש בו באופן חכם, TeX מאפשר לך לכתוב מסמכים ארוכים בצורה גמישה יותר ועקבית יותר, ובהרבה מקרים גם נאים יותר מאשר בוורד. אחרי שגמרתי את ההלל על TeX, אזכיר חסרון משמעותי שלה: אפילו ההרחבה plainTeX היא בסיסית למדי, והשפה עצמה אינה מאוד מבנית. לכן בשנות ה-90 כתב בחור ששמו Leslie Lamport אוסף של הרחבות לשפה שנקרא LaTeX כלומר Lamport TeX. ההרחבות האלה יוצרות ממשק אחיד מבני ונוח יותר לשפה, למשל הדוגמה שלמעלה תהפוך למשהו כמו:
\begin{theorem}[Cantor's Theorem on Uniform Continuity] if f is continuous in [a,b], it is uniformly continuous there. \end{theorem}
אבל אחד היתרונות המובהקים של LaTeX הוא האופן הנוח שבו הוא מאפשר לפרק את המערכת למודולים. כלומר, אפשר לכתוב תכניות ולהשתמש בהן באופן נוח בתוך תכניות אחרות. דוגמאות למארזים כאלה: מארז לציור עצים, מארז לכתיבת תווים, מארז לטבלאות מעוצבות, מארז לסימנים מתמטים וכו'. לבסוף, LyX הוא ממשק גרפי ל-LaTeX. כלומר, הוא נראה קצת כמו וורד, אבל הוא מנסה לשמור גם את המבנה הלוגי של המסמך שלך, ובכך להנות משני העולמות. אין לי הרבה ניסיון איתו, אז אני לא יכול להרחיב יותר. נסכם בגדול: TeX זו השפה הבסיסית. אתה יכול להקביל אותה ל...C נאמר. (רק שהיא קצת יותר טובה מ-C לדעתי
) את השפה הזו תכנת TeX מתרגמת לשפה בסיסית יותר שנקראת dvi אותה אפשר להקביל ל... אסמבלי נאמר. מ-dvi אפשר לפעמים להדפיס ישירות, להעביר ל-pdf, ps, gif וכדומה. את השפה TeX הרחיבו בעזרת מערכת המאקרואים לשפה שנקראת LaTeX (את זה כבר אי אפשר לעשות ב-C
). היא שפה יותר מובנית מ-TeX. לבסוף בנו ל-LaTeX ממשק גרפי שנקרא LyX שלחלק מהאנשים הוא יותר נוח. בעיקר אם אתה לא רוצה ממש ללמוד LaTeX. לוקח קצת זמן ללמוד את השפות האלה, ובהתחלה המסמכים שלך לא יראו טוב כמו בוורד. אבל ככל שתתקדם תוכל לכתוב יותר דברים בפחות זמן באיכות גבוהה יותר. בעיקר אם אתה לומד למחזר דברים. (אם במטלה 11 מצאתי דרך מקוצרת לכתוב משהו מסובך, אין שום סיבה שאני אחפש מחדש במטלה 15. אני יכול פשוט למחזר את הקוד בעזרת מארזים.) דרך אגב, זה לא הכרחי לדעת TeX בשביל לכתוב ב-LaTeX, אבל זה יכול טיפה לעזור להבין את ההתנהגות של המאקרואים שלך
. מקווה שעזרתי, אהד.