יום שלישי, 14 ביוני 2011

חבילות ב-LaTeX

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



ככלל, צירוף חבילות  יעשה באמצעות אחת משתי הפקודות הבאות:


\usepackage[option1,option2,option3,...]{package name}
\usepackage{package1,package2,package3,...}


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

\documentclass[10pt]{article}
\usepackage{lipsum}
\begin{document}
\section{This is section one}
\lipsum[1]
\section{This is section two}
\lipsum[2-3]
\end{document}


עבור מי שמתנסה בזה בפעם הראשונה, הנה הדרך: העתיקו את הקוד דלעיל לקובץ בשם file1.tex, הריצו את הפקודה pdflatex file1. הפקודה תייצר כמה קבצים ובינהם את הקובץ file1.pdf. פיתחו אותו וראו את התוצאה. עתה העתיקו את הקוד הבא לקובץ בשם file2.tex, וחיזרו על אותו תהליך עם הקובץ file2:


\documentclass[10pt]{article}
\usepackage{lipsum,multicol}
\begin{document}
\sloppy
\twocolumn
\section{This is section one}
\lipsum[1]
\section{This is section two}
\lipsum[2-3]
\onecolumn
\subsection{This is a subsection}
\lipsum[4]
\end{document}


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


זוהי סדרת חבילות מתמטיות שאי אפשר בלעדיהן. נדמה לי שכולן חוברו ע"י ה- American Mathematical Society (ומכאן התחיליות ams) והן מכילות את כל ה-basics שהמתמטיקאי או הפיזיקאי התאורטיקן נזקקים להם. אני לא יכול לומר מי בדיוק עושה מה, אבל אם אסיר מי מהן, קרוב לודאי שחלק מהקיצורים או הפקודות בקוד שאספק בהמשך לא יעבדו.


חבילה זו מכילה הרחבות חשובות ל-amsmath, וכן תיקוני באגים וקונפליקטים בתוך ובין חבילות ams. 



שלוש חבילות המאפשרות לעשות דברים שאפילו ams לא מכיר... empheq חבילה המיועדת לבניית סביבת הדגשה של נוסחאות כמו, לדוגמא, מיסגרות בגדלים שונים, הדגשה בצבע של הרקע ועוד. bigintsמייצרת סימני אינטגראל גדולים מאוד למקרה שבו האינטגראנד חורג באופן בולט ולא אסטטי ממסגרת הנוסחא, esint מאפשרת (בין השאר) לייצר אינטגרלים מרובים, ובפרט כאלו על היפר-משטחים סגורים.

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

\usepackage[utf8]{inputenc}
החבילה הראשונה מתקנת קונפליקטים של פונטים עם סימנים מתמטיים. החבילה השנייה מספרת ל-LaTeX באיזה אופן מערכת ההפעלה שלכם מקודדת את הפונטים בקבצי ה-TeX. הקישורים המצורפים נותנים תמונה יותר מקצועית על נחיצותן, ועל האופציות שבחרתי.  

\usepackage{upgreek,lmodern,eucal,color}
\usepackage[super]{nth}
upgreek - פונטים יווניים זקופים (נאים מאוד), lmodern - גירסא סטנדרטית יפה של פונטים לטינים, eucal - מגוון פונטים לטינים מעוצבים להפליא לסביבות מתמטיות, color מאפשרת צביעת סמלים וסביבות שונות במגוון צבעים, ולבסוף nth - חבילה פשוטה לספרור (1st,2nd,etc).

\usepackage{ifpdf,grphix}
ifpdf - חבילה המאפשרת להכניס פקודת if-then-else המתייחסת לפורמט הסופי של המסמך, ואשר יש לה חשיבות רבה בשיבוץ תמונות, גרפים, וכיו"ב. אני ארחיב עליה לכשיעלה הצורך. graphicx - חבילה המאפשרת שיבוץ קבצי תמונה חיצוניים (ועוד) בתוך המסמך.

\hypersetup{citecolor=DeepPink4}
\hypersetup{linkcolor=DarkRed}
\hypersetup{urlcolor=DarkBlue}
\usepackage{cleveref}
חבילות אלו והפקודות הנלוות להן מאפשרות בניית קישוריות עשירה ועניפה מתוך המסמך לתוך המסמך, ומהפנים החוצה לכל מקום ברשת.


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


\usepackage{emb}

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


אין תגובות:

הוסף רשומת תגובה