יום שלישי, 23 בנובמבר 2010

למה LaTeX?

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


ועם זאת, חלק הארי של הצרכנים, בין אם הם אנשי מקצוע ובין אם הדיוטות, משתמשים במעבדי תמלילים מהסוג WYSIWYG שפירושו הוא What You See Is What You Get. במעבדים מסוג זה, מה שאנו רואים על המסך בזמן הכתיבה דומה מאוד לפורמט הסופי של המסמך. אנו מתקתקים טקסט בשפתינו, השימוש בנוסחאות מתבצע באמצעות ממשק גרפי שהוא אולי לא הכי מתוחכם אבל סביר לצרכים בסיסיים, ושיבוץ אובייקטים חיצוניים, כמו גם קישוריות, מתבצעים באופן אינטואיטיבי ומיידי. הקונספט של WYSIWYG נוח מאוד אם אנו חפצים במסמך קטן, נגיש לכל, בעל מבנה פשוט, ובאם אנו מוכנים להתפשר על רמת האסטטיקה. מעבדי התמלילים הפועלים על פי העיקרון הזה הם אינטואיטיבים וקלים ללמידה, הקבצים שהם מייצרים קלים במשקל ונוחים לפתיחה כמעט על כל פלטפורמה. הדוגמא המוכרת ביותר הוא כמובן WORD של מייקרוסופט. מעבד תמלילים אחר הוא OpenOffice. על המעבד של מייקרוסופט תשלמו, OpenOffice היא תכנה חופשית, תוכלו להורידה בנקל, והממשק שלה דומה מאוד לזה של WORD. יש גם מעבד תמלילים WYSIWYG לאפל, אבל אותו אני לא מכיר, ויש בודאי עוד אחרים וגם אותם אני לא מכיר...

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

לאחר שכתבנו את הטקסט בשפה העילית המתאימה יש לקמפל את הקוד, בד"כ לפחות פעמיים. קימפול הקוד מייצר כמה קבצים לצרכים שונים. למשל: קובץ ביבליוגרפיה, קובץ אינדקס, קובצי קישוריות למיניהם, קובץ הודעות שגיאה, ועוד. אבל בסופו של דבר, קובץ ה-PDF שנוצר (או, לחליפין, קובץ ה-Postscript) הוא הקובץ המכיל את המסמך שבו אנו מעוניינים. כיוון שקימפול קובץ לטך מייצר מספר קבצים, ומכיוון שמסמך בודד ממילא עשוי להיות מורכב מכמה קבצי לטך, כדאי מאוד לבנות ספרייה נפרדת לכל מסמך... עבור מי שמיומן בכך אין בזה כל טרחה. הגמול הסופי הוא מסמך עשוי לעילא ולעילא, בנוי בצורה נכונה, קריא מאוד ואסטטי מאוד, אמנות של ממש. אני אתמקד כאן בלטך משום שזו השפה העילית שאני מכיר; המאמרים הספורים שכתבתי, התזה למאסטר והתזה לדוקטורט, הספר באלקטרומגנטיות עיונית עליו אני שוקד בשנים האחרונות, כמו גם כמה פרוייקטים נוספים שבצעתי עבור אחרים - כל אלו נכתבו או נכתבים בלטך.

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

ברשומות הבאות שתעסוקנה בנושא הזה אראה כיצד אני ניגש לבנות מסמך בלטך. כפי שתוכלו להווכח, אין בזה קושי מיוחד למרות החזות התחילית המאיימת... אם אתם משתמשי חלונות תצטרכו להוריד עורך מתאים (MikTex). ככל הנראה  Emacs עובד יפה עם Mac ואולי אף Xemacs - גרסא משוכללת של Emacs. אם אתם משתמשי לינוקס, רוב הסיכויים שמערכת ההפעלה שלכם באה באופן אוטומטי עם עורך מתאים, למשל Kate. אני משתמש בעורך Kile שנבנה כל כולו סביב לטך. Kile הוא עורך מהסוג WYSIWYW שפירושו: מה שאתה רואה זה מה שאתה רוצה... הוא מכיל לוחות רבים של סימנים, לשוניות המכילות סביבות ועוד. בחירה בסימבולים מתוך הלוחות, או בחירה של סביבות, מייצרת קוד LaTeX באופן אוטומטי מבלי שתזדקקו ללמוד את השפה. הוא גם מאפשר לקמפל את המסמך אוטומטית וליצא אותו כמעט לכל פורמט שתחפצו. אבל כמובן אפשר לרשום קוד ישירות לתוך העורך מבלי להזדקק ללוחות (וזה מה שאני עושה). ישנם עורכים נוספים המחקים את הרעיון של WYSIWYG, חלקם הגדול חופשיים! סקירה מאירת-עיניים על שמונה עורכי לטך חופשיים תמצאו כאן. טבלה יבשה המשווה בין כל העורכים על בסיס שפע של פרמטרים תמצאו כאן.

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

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

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


* יודעי-חן מוזמנים להעיר לתקן ולהוסיף!

אין תגובות:

פרסום תגובה