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

כדי לתרגם מסמך LaTeX, תרגמו את הפרוזה ואת הארגומנטים הפונים לקורא של פקודות, כגון כותרות סעיפים, כיתובים, הערות שוליים וטקסט קישור. השאירו את הפקודות, שמות הסביבות, מפתחות \label, \ref ו־\cite, מתמטיקה ובלוקים verbatim בדיוק כפי שהם. לאחר מכן בצעו שינוי אחד שאף מתרגם לא אמור לעשות עבורכם: הגדירו את ה־preamble עבור שפת היעד, משום שקובץ ששומר על ה־preamble האנגלי שלו יכול להתקמפל בלי שגיאה ועדיין להפיק PDF שבו הטקסט המתורגם חסר.
הנקודה האחרונה היא התוצאה העיקרית של בדיקה קטנה. תרגמנו מאמר LaTeX בן 98 שורות לסינית מפושטת תשע פעמים עם מודל מקומי, בשלוש דרכים שונות, ובדקנו כל תוצאה עם סקריפט ומהדר. החלקים שאנשים בדרך כלל דואגים להם החזיקו מעמד בכל תשע ההרצות: תוויות, הפניות, ציטוטים, משוואות, כתובות URL, עמודות טבלה וסוגריים מסולסלים חזרו שלמים, וכל הפניה צולבת נפתרה. הבעיות היו במקום אחר. שש ההרצות שהפרומפט שלהן אמר "אל תשנה את ה־preamble" צייתו, התקמפלו עם קוד יציאה 0 והפיקו קובצי PDF ללא טקסט סיני כלל. הרצה אחת החילה את הכלל שלנו "escape the % sign" בתוך רשימת קוד, כך שה־PDF מדפיס קו נטוי מיותר. ולפחות שלוש הרצות שינו את משמעותו של משפט בדרכים שאף בדיקה מבנית לא יכולה לראות.
תשובה מהירה: מה לתרגם ומה להשאיר ללא שינוי
| חלק מהקובץ | דוגמה מהקובץ לדוגמה שלנו | לתרגם? |
|---|---|---|
Preamble: \documentclass, \usepackage, \newcommand | \newcommand{\wpm}{\mathrm{wpm}} | לא, אבל הוסיפו בעצמכם את הגדרת שפת היעד (ראו להלן) |
\title, \author, \date | \title{Estimating Reading Time for Translated Ebooks} | כותרת ותאריך כן; שמות בדרך כלל לא |
| כותרות | \section{Method}\label{sec:method} | כן, הטקסט שבסוגריים המסולסלים; השאירו את התווית |
| תוויות והפניות | \label{eq:time}, Section~\ref{sec:method}, \eqref{eq:time} | השאירו כל מפתח |
| ציטוטים ומפתחות ביבליוגרפיה | \cite{brysbaert2019}, \bibitem{rayner2016} | השאירו את המפתחות; תרגמו טקסט של ערך רק אם התחום שלכם עושה זאת |
| מתמטיקה בתוך השורה ובתוך בלוק | $r_c$, T = \frac{N}{r} | לא |
| טקסט בתוך מתמטיקה | \text{ for English silent reading.} | כן. הוא מודפס כטקסט רגיל. |
| פקודות מאקרו שמקבלות טקסט | \term{characters per minute} | תרגמו את הארגומנט, השאירו את הפקודה |
| כיתובים והערות שוליים | \caption{Reading rates used in this paper.} | כן |
| קטעי verbatim ורשימות קוד | shelfmark count --unit chars book.epub # 100% of body text | לא, כולל הערות בתוכם |
\url והארגומנט הראשון של \href | \href{https://example.org/shelfmark/survey}{online appendix} | שמור על ה-URL; תרגם את טקסט הקישור |
| תווים עם escape | 20\%, \$12, R\&D | שמור על הלוכסן ההפוך בפרוזה |
הערות % | % TODO: replace the Chinese rate ... | אופציונלי. הקוראים לעולם לא רואים אותן. |
| קשרים לפני הפניות | Table~\ref{tab:rates} | שמור בשפות שמשתמשות ברווחים; אופציונלי בסינית וביפנית |
כל השאר הוא פרוזה רגילה: פסקאות, תקציר, פריטי רשימה ותאי טבלה.
מה בדקנו
כתבנו את sample-source.tex, מאמר קצר בדיוני על הערכות זמן קריאה עבור אפליקציה פיקטיבית בשם Shelfmark. הוא מתקמפל בצורה נקייה ומכיל דוגמה אחת מכל מבנה בטבלה שלמעלה, בתוספת טבלת booktabs, איור עם כיתוב, שתי הערות %, בלוק verbatim עם % חשוף בתוכו, וביבליוגרפיה מוטמעת.
לאחר מכן ביקשנו ממודל מקומי לתרגם אותו לסינית מפושטת בשלוש דרכים:
- קובץ שלם. הדבק את כל הקובץ ובקש קובץ מתורגם שעדיין מתקמפל.
- עם הוראות. אותו דבר, בתוספת שבעה כללים: אל תשנה את ה-preamble, שמור על כל פקודה, סביבה, תווית, הפניה ומפתח ציטוט, השאר מתמטיקה ללא שינוי למעט
\text{}, השאר בלוקי verbatim וכתובות URL ללא שינוי, שמור על תווים מיוחדים עם escape, שמור על קשרים, ותרגם את הפרוזה, הכיתובים, הערות השוליים וטקסט הקישור. - מקטעים. הוצא את ה-preamble מהבקשה לחלוטין (רק שורת ה-
\titleנשלחת, כך ש-\dateנשאר באנגלית), פצל את הגוף בשורות ריקות, דלג על בלוק ה-verbatim, שלח כל חלק עם אותם כללים, והרכב מחדש.
המודל היה Qwen 3.6 27B (Q4_K_M) ב-LM Studio, עם חשיבה כבויה וטמפרטורה 0.3, על Apple M4 Max עם 64 GB זיכרון. הרצנו כל תנאי שלוש פעמים, תשע הרצות בסך הכל, ב-26 באוקטובר 2026. הסקריפט הוא run_llm_latex_test.py, וכל תשע הפלטים פורסמו ללא עריכה בתיקיית הפלטים. אם מעולם לא הגדרת מודל מקומי, מדריך התרגום עם LLM מקומי שלנו מכסה את ההגדרות.
קימפלנו כל פלט עם Tectonic 0.17.0, שמשתמש במנוע XeTeX, פעם אחת בדיוק כפי שהוחזר ופעם אחת עם הגדרת סינית שנוספה ל-preamble. לאחר מכן קראנו את הטקסט חזרה מכל PDF. זה היה מבחן קטן של מודל אחד, זוג שפות אחד וקובץ אחד. הוא מראה אילו בעיות מתרחשות ואיך לתפוס אותן. הוא לא מדרג מודלים או פרומפטים.
תוצאה: המבנה שרד; ה-preamble הכריע אם הטקסט הופיע
check_latex_translation.py השווה כל פלט עם המקור, ו-compile_check.py קימפל אותו. הפלטים המלאים נמצאים ב-check-results.txt וב-compile-results.txt, ול-results.csv יש שורה לכל הרצה.
| בדיקה | קובץ שלם | מונחה | מקטעים |
|---|---|---|---|
| תוויות, הפניות, ציטוטים ומפתחות ביבליוגרפיה ללא שינוי | 3 מתוך 3 | 3 מתוך 3 | 3 מתוך 3 |
מתמטיקה ללא שינוי (טקסט בתוך \text{} מתורגם) | 3 מתוך 3 | 3 מתוך 3 | 3 מתוך 3 |
| כתובות URL, סוגריים מסולסלים ועמודות טבלה שלמות | 3 מתוך 3 | 3 מתוך 3 | 3 מתוך 3 |
| המודל הוסיף חבילה סינית לפרימבול | 3 מתוך 3 | 0 מתוך 3 | 0 מתוך 3 |
| מתקמפל כפי שהוחזר | 3 מתוך 3 | 3 מתוך 3 | 3 מתוך 3 |
| טקסט סיני מופיע בפועל ב-PDF כפי שהוחזר | 3 מתוך 3 | 0 מתוך 3 | 0 מתוך 3 |
| בלוק מילולי ללא שינוי | 3 מתוך 3 | 2 מתוך 3 | 3 מתוך 3 |
הערות % נותרו באנגלית | 3 מתוך 3 | 3 מתוך 3 | 1 מתוך 3 |
| כל הפניה וציטוט נפתרים לאחר הוספת ההגדרה הסינית | 3 מתוך 3 | 3 מתוך 3 | 3 מתוך 3 |
הבודק שלנו דיווח בתחילה על שינוי במתמטיקה בהרצה הראשונה. המתמטיקה הייתה תקינה: סדר המילים בסינית הציב את $N$ לפני $r$ במשפט אחד. הבודק שפורסם משווה מקטעי מתמטיקה כאוסף לא מסודר מסיבה זו, כך שסידור מחדש מותר אך שינוי סמל אינו מותר.
1. "אל תיגע בפרימבל" הניב PDF ללא סינית
כלל הפרימבל נשמע כמו ההוראה הבטוחה ביותר שאפשר לתת. הפרימבל של הדוגמה שלנו טוען את amsmath, booktabs ו-hyperref ומגדיר שלוש פקודות מאקרו, ואף אחד מאלה אינו צריך תרגום. לכן הרצות המודרך והמקטעים השאירו אותו ללא שינוי, בדיוק כפי שנאמר.
אך לגופנים המוגדרים כברירת מחדל בהתקנת LaTeX סטנדרטית אין תווים סיניים. כל ששת הקבצים האלה הורכבו עם קוד יציאה 0. Tectonic אכן הזהיר, פעם אחת לכל תו חסר, בשורות כגון Missing character: There is no 估 (U+4F30) in font [lmroman17-regular], וקובץ הלוג תיעד בין 554 ל-577 אזהרות כאלה בכל הרצה. אך אזהרה אינה עוצרת את הבנייה. כשחילצנו את הטקסט מששת קבצי ה-PDF האלה, הם הכילו את שמות המחברים, המספרים והמתמטיקה, ואפס תווים סיניים. שלושת קבצי ה-PDF של הקובץ השלם הכילו בין 481 ל-490. סקריפט בנייה שבודק רק אם ההידור הצליח, או אדם שרק מעיף מבט בסוף הפלט, היה מפרסם את כל השישה.
שלוש ההרצות של הקובץ השלם, שלא היה להן כלל כזה, הוסיפו \usepackage{ctex} בעצמן, וה-PDF שלהן היה שלם. זו אינה סיבה לתת למודל לשכתב את הפרימבל שלך. זו סיבה לראות בהגדרת שפת היעד חלק מעבודת התרגום, שנעשית פעם אחת, על ידך:
- סינית: טען את ctex, שתומך ב-pdfLaTeX, XeLaTeX ו-LuaLaTeX. כברירת מחדל הוא בוחר גופנים עבור מערכת ההפעלה שלך; הלוג שלנו מראה שהוא טוען את ערכת הגופנים של macOS. אם הקובץ צריך להיות מורכב באותה צורה במחשבים אחרים,
\usepackage[UTF8,fontset=fandol]{ctex}משתמש בגופני Fandol החופשיים המופצים עם TeX Live, שגם Tectonic מוריד לפי דרישה. זה מה ש-compile_check.pyמוסיף. - שפות אחרות: טען את babel עם שפת היעד, כך שמקפים ומילים מיוצרות כגון "Figure", "Table" ו-"Abstract" ילכו אחרי השפה החדשה. יפנית, קוריאנית ושפות מימין לשמאל כל אחת דורשת הגדרה משלה.
לאחר ההידור, בדוק בלוג אחר Missing character וקרא את ה-PDF, לא רק את קוד היציאה. בדקנו רק XeTeX דרך Tectonic; מנועים אחרים מדווחים על גופן חסר אחרת.
2. כלל הבריחה דלף אל תוך רשימת הקוד
ההוראות שלנו אמרו לשמור על תווים מיוחדים עם בריחה, ובפרוזה זה הכלל הנכון: % בודד ב-LaTeX מתחיל הערה ובולע בשקט את שאר השורה. כל תשע ההרצות שמרו על 20\% בתקציר.
בהרצה הראשונה עם ההנחיות, המודל גם יישם את הכלל בתוך בלוק ה-verbatim ותרגם את הערת הקוד שם:
source: shelfmark count --unit chars book.epub # 100% of body text
translation: shelfmark count --unit chars book.epub # 100\% 正文
בתוך verbatim, שום דבר אינו פקודה, ולכן ה-PDF מדפיס 100\% עם הלוכסן. התיקון אינו הנחיה טובה יותר. לעולם אל תשלחו בלוקי verbatim, lstlisting או minted למתרגם כלל, כפי שעשתה תנאי הסגמנטים. לאחר מכן תרגמו כל הערה בהם ידנית אם הקוראים שלכם זקוקים לכך.
3. ההערות עקבו אחר גבולות הבקשה
בקובץ יש שתי הערות %: הערה מעל הגדרות המאקרו ו-TODO מעל רשימת הקוד. ההרצות של הקובץ השלם ושל ההנחיות השאירו את שתיהן באנגלית. תנאי הסגמנטים תרגם את ה-TODO בשתיים מתוך שלוש הרצות, מכיוון שה-TODO במקרה ישב באותו בלוק כמו פסקה ששלחנו לתרגום. שתי הרצות של הקובץ השלם גם הוסיפו הערה משלהן אחרי החבילה שהן הכניסו.
שום דבר מזה לא משנה את ה-PDF. זה חשוב אם המקור המתורגם חוזר לשותפים או למאגר, שם TODO מתורגם כבר לא תואם את המקור, והערה נוספת מופיעה בכל diff. הבודק מדווח על הערות מתורגמות כאזהרה כדי שתוכלו להחליט.
4. הבדיקות המבניות עברו והמשמעות עדיין השתנתה
התקציר אומר "תווית שסטתה ב-20% עדיין שימושית". בשלוש מתוך תשע הרצות, הסינית אמרה שתוויות עם שגיאה בתוך 20% עדיין שימושיות, מה שמעביר סובלנות לסף. כמה הרצות אחרות סידרו מחדש את המשפט כך שפסוקית ה"למרות" מתחברת לרעיון הלא נכון, ואחת הפכה קשה למעקב. אלו שיפוטים של קורא אחד שהשווה בין הסינית לאנגלית, לא סקירה עיוורת, אבל הנקודה אינה תלויה בספירה המדויקת: כל בדיקה מבנית עברה בקבצים האלה, מכיוון שה-20\%, המאקרו והסוגריים המסולסלים היו כולם נכונים.
שני שינויים אחרים היו בסדר אבל כדאי לדעת עליהם. ההרצות של הקובץ השלם כתבו \$12 כ-12 דולר אמריקאי, מה שמסיר את שאלת הבריחה לחלוטין. שתי הרצות של הקובץ השלם גם השמיטו את רוב קשרי ה-~ לפני \ref ו-\cite. זה לא מזיק בסינית, שאינה שמה רווחים בין מילים, אבל בשפה שכן שמה, קשר חסר מאפשר שבירת שורה להפריד בין "טבלה" למספר שלה. הבודק מדווח על קשרים כאזהרה, לא ככשל.
בדיקה מבנית אומרת לכם שהקובץ עדיין עובד. היא לא יכולה לומר לכם שהמאמר עדיין אומר את אותו הדבר. לשם כך, השתמשו בקריאה דו-לשונית של התקציר, הטענות והמספרים, כמתואר במדריך שלנו לסקירת מאמר מחקר מתורגם.
תהליך עבודה שעומד במבחן
-
השיגו את המקור, ובדקו מה מותר לכם לעשות איתו. ב-arXiv, מאמרים שהוגשו ב-TeX בדרך כלל מציעים את המקור שלהם דרך קישור Source בעמוד התקציר או בעמוד Other formats, כקובץ דחוס ב-gzip או כארכיון tar כשיש כמה קבצים (עזרה של arXiv). תרגום לקריאה אישית זה דבר אחד. פרסום התרגום זה דבר אחר: הרישיון הלא-בלעדי של arXiv עצמו מגביל שימוש חוזר על ידי אחרים, בעוד CC BY ו-CC BY-SA מתירים התאמות עם ייחוס, ו-CC BY-NC-ND לא. שאלו את המחברים כשאתם בספק.
-
הדרו את המקור קודם. אם הוא לא מורכב לפני התרגום, שום דבר שתלמדו אחר כך אינו אמין. שמרו את ה-PDF המקורי להשוואה.
-
הגדירו את שפת היעד בפרימבול בעצמכם. הוסיפו
ctexאוbabelכמתואר לעיל, הדרו פעם אחת עם הטקסט האנגלי, ושמרו את השינוי בנפרד. -
תרגמו את הגוף בלי הפרימבול ובלי בלוקי verbatim. השתמשו בכלי שמנתח LaTeX, או שלחו את הגוף בחתיכות עם כללים מפורשים, כמו בתנאי הסגמנטים שלנו. TransLaTeX, כלי קוד פתוח שנבנה לכך, מחליף מבני LaTeX באסימונים לפני שליחת הטקסט למתרגם מכונה. התיעוד שלו גם אומר שהוא משאיר את כותרת המסמך ללא שינוי, אינו תומך במאקרואים, ומטפל רק במסמכים בקובץ בודד, ללא
\input. אפילו כלי ייעודי משאיר את החלטת הפרימבול לכם. -
הריצו את הבדיקה המבנית על כל זוג קבצים.
python3 check_latex_translation.py main.tex main-zh.tex --keep Shelfmarkהיא משווה את הפרימבול, שמות הפקודות, סדר הסביבות, תוויות, הפניות, ציטוטים, מפתחות ביבליוגרפיה, מתמטיקה, בלוקי verbatim, כתובות URL,
%,&ו-#לא מסומנים, איזון סוגריים מסולסלים, קשרים, הערות, וכל מונח שתבקשו לשמור. צפו ששורת הפרימבול תיכשל אחרי שלב 3 כשתשוו למקור; השוו לקובץ האנגלי המעודכן שלכם במקום. בפרויקט שמפוצל על פני כמה קבצי\input, בדקו כל זוג. -
הדרו וקראו את ה-PDF.
python3 compile_check.py main-zh.texהוא מדווח על הפניות לא פתורות (
??), ציטוטים לא פתורים ([?]) וגליפים חסרים. לאחר מכן פתחו את ה-PDF וקראו את התקציר, כל כיתוב וכל טבלה מול המקור. -
עשו קריאה דו-לשונית של הטענות והמספרים. כאן היו נתפסים שלושת המשפטים שהשתנו אצלנו. החזיקו מילון תרגום קצר למונחים הטכניים של המאמר כדי שאותו מונח לא יתורגם בשלוש דרכים.
איפה BookTranslator נכנס לתמונה
מתרגם המסמכים של BookTranslator מקבל קבצי .tex יחד עם PDF, DOCX, EPUB, Markdown ופורמטים מובנים אחרים. השאלות הנפוצות שלו אומרות שהתוצאה מוחזרת ב"קובץ שמיש ומתאים לפורמט בכל פעם שהפורמט תומך בכך".
עמוד המוצר אינו מתאר כיצד הוא מטפל במאקרואים של LaTeX, במתמטיקה או בפרימבול, ולא הרצנו את הדוגמה הזו דרך BookTranslator עבור מאמר זה. בכל כלי שתשתמשו, עשו את שלבים 1 עד 3 לפני התרגום ואת שלבים 5 עד 7 אחריו. קובץ ששומר על פרימבול באנגלית בלבד עדיין יורכב ללא טקסט סיני, וטענה שהשתנתה עדיין תעבור כל בדיקה מבנית.
אם יש לכם רק את ה-PDF של מאמר, לא את המקור שלו, תהליך העבודה שונה: ראו את המדריך שלנו לתרגום מאמר מחקר תוך שמירה על המבנה שלו. אם המקור שלכם הוא Markdown ולא LaTeX, אותו פיצול בין מכונות לפרוזה חל, עם מלכודות שונות; בדקנו אותן באיך לתרגם קבצי Markdown.
השיגו את קבצי הבדיקה
כל מה שנמצא בבדיקה הזו חופשי לשימוש חוזר:
- sample-source.tex: דוגמת המקור באנגלית בת 98 השורות;
- check_latex_translation.py: בודק המבנה (ספריית התקן של Python בלבד);
- compile_check.py: מהדר כל קובץ כפי שהוא מוחזר וגם עם הגדרות סיניות, וסופר הפניות לא פתורות, ציטוטים לא פתורים וגליפים חסרים (דורש Tectonic ו-pdftotext);
- run_llm_latex_test.py: שלושת תנאי הפרומפט לכל שרת מקומי תואם OpenAI;
- תשעת הפלטים בתיקיית outputs, עם check-results.txt, compile-results.txt ו-results.csv.
פוסטים קשורים





