Hogyan fordítsunk LaTeX-dokumentumot a matematika, hivatkozások és címkék tönkretétele nélkül
Mit fordítsunk le egy .tex fájlban, mit hagyjunk érintetlenül, és miért fordulhat elő, hogy egy lefordított fájl hibátlanul lefordul, mégis elveszíti a szövegét. Egy mintafájllal, két ingyenes ellenőrzővel és egy 9 futásos helyi LLM-teszttel.

LaTeX-dokumentum fordítása során a prózai szöveget és a parancsok olvasóknak szóló argumentumait kell lefordítani, például a szakaszcímeket, a képaláírásokat, a lábjegyzeteket és a hivatkozások szövegét. A parancsokat, a környezetneveket, a \label, \ref és \cite kulcsokat, a matematikai kifejezéseket és a verbatim blokkokat pontosan úgy kell hagyni, ahogy vannak. Ezután egyetlen olyan változtatást kell végrehajtani, amelyet egyetlen fordítónak sem szabad helyettünk megtennie: be kell állítani a preambulumot a célnyelvre, mert egy olyan fájl, amely megtartja az angol preambulumot, hiba nélkül lefordulhat, és mégis olyan PDF-et eredményezhet, amelyből hiányzik a lefordított szöveg.
Ez utóbbi pont egy kis teszt fő eredménye. Egy 98 soros LaTeX-cikket fordítottunk le egyszerűsített kínaira kilenc alkalommal egy helyi modellel, három különböző módon, és minden eredményt ellenőriztünk egy szkripttel és egy fordítóval. Azok a részek, amelyek miatt az emberek általában aggódnak, mind a kilenc futásban sértetlenek maradtak: a címkék, a hivatkozások, az idézetek, az egyenletek, az URL-ek, a táblázatoszlopok és a kapcsos zárójelek épen visszatértek, és minden kereszthivatkozás feloldódott. A problémák máshol voltak. A hat futás, amelynek utasítása így szólt: „ne változtasd meg a preambulumot”, engedelmeskedett, 0-s kilépési kóddal fordult le, és olyan PDF-eket állított elő, amelyekben egyáltalán nem volt kínai szöveg. Egy futás a „% jel escape-elése” szabályunkat egy kódlistán belül alkalmazta, így a PDF-ben egy felesleges backslash jelenik meg. És legalább három futás olyan módon tolta el egy mondat jelentését, amelyet semmilyen szerkezeti ellenőrzés nem képes észrevenni.
Gyors válasz: mit fordítsunk le és mit hagyjunk érintetlenül
| A fájl része | Példa a mintánkból | Lefordítsuk? |
|---|---|---|
Preambulum: \documentclass, \usepackage, \newcommand | \newcommand{\wpm}{\mathrm{wpm}} | Nem, de a célnyelvi beállítást magunknak kell hozzáadnunk (lásd alább) |
\title, \author, \date | \title{Estimating Reading Time for Translated Ebooks} | Cím és dátum igen; nevek általában nem |
| Címsorok | \section{Method}\label{sec:method} | Igen, a kapcsos zárójelekben lévő szöveget; a címkét tartsuk meg |
| Címkék és hivatkozások | \label{eq:time}, Section~\ref{sec:method}, \eqref{eq:time} | Minden kulcsot tartsunk meg |
| Idézetek és bibliográfiai kulcsok | \cite{brysbaert2019}, \bibitem{rayner2016} | A kulcsokat tartsuk meg; a bejegyzés szövegét csak akkor fordítsuk le, ha a szakterületünkön ez szokás |
| Soros és kiemelt matematika | $r_c$, T = \frac{N}{r} | Nem |
| Matematikán belüli szöveg | \text{ for English silent reading.} | Igen. Ez közönséges szövegként jelenik meg. |
| Szöveget felvevő makrók | \term{characters per minute} | Az argumentumot fordítsuk le, a parancsot tartsuk meg |
| Képaláírások és lábjegyzetek | \caption{Reading rates used in this paper.} | Igen |
| Szó szerinti és kódrészletek | shelfmark count --unit chars book.epub # 100% of body text | Nem, a bennük lévő megjegyzésekkel együtt |
\url és a \href első argumentuma | \href{https://example.org/shelfmark/survey}{online appendix} | Tartsd meg az URL-t; fordítsd le a hivatkozás szövegét |
| Escape-elt karakterek | 20\%, \$12, R\&D | Tartsd meg a backslasht a prózában |
% megjegyzések | % TODO: replace the Chinese rate ... | Nem kötelező. Az olvasók soha nem látják őket. |
| Kötőjelek hivatkozások előtt | Table~\ref{tab:rates} | Tartsd meg azokban a nyelvekben, amelyek szóközt használnak; kínai és japán esetén nem kötelező |
Minden más közönséges próza: bekezdések, absztrakt, listaelemek és táblázatcellák.
Mit teszteltünk
Megírtuk a sample-source.tex fájlt, egy rövid, kitalált cikket egy Shelfmark nevű fiktív alkalmazás olvasási idő becsléseiről. Hibátlanul lefordul, és tartalmaz egy-egy példát a fenti táblázat minden konstrukciójára, valamint egy booktabs táblázatot, egy ábrát felirattal, két % megjegyzést, egy verbatim blokkot benne egy csupasz % jellel, és egy beágyazott bibliográfiát.
Ezután megkértünk egy helyi modellt, hogy fordítsa le egyszerűsített kínaira háromféleképpen:
- Teljes fájl. Illeszd be a teljes fájlt, és kérj egy lefordított fájlt, amely továbbra is lefordul.
- Utasításokkal. Ugyanaz, plusz hét szabály: ne változtasd meg a preambulumot, tartsd meg az összes parancsot, környezetet, címkét, hivatkozást és idézetkulcsot, hagyd érintetlenül a matematikát a
\text{}kivételével, hagyd érintetlenül a verbatim blokkokat és URL-eket, tartsd escape-elve a speciális karaktereket, tartsd meg a kötőjeleket, és fordítsd le a prózát, a feliratokat, a lábjegyzeteket és a hivatkozások szövegét. - Szegmensek. Tartsd a preambulumot teljesen a kérésen kívül (csak a
\titlesort küldd el, így a\dateangolul marad), oszd fel a törzset üres soroknál, hagyd ki a verbatim blokkot, küldd el mindegyik darabot ugyanazokkal a szabályokkal, és állítsd össze újra.
A modell a Qwen 3.6 27B (Q4_K_M) volt az LM Studio-ban, gondolkodás kikapcsolva és 0,3-as hőmérséklet mellett, egy Apple M4 Max 64 GB memóriával. Minden feltételt háromszor futtattunk, összesen kilenc futást, 2026. október 26-án. A szkript a run_llm_latex_test.py, és mind a kilenc kimenet szerkesztetlenül megjelent az outputs mappában. Ha még soha nem állítottál be helyi modellt, a helyi LLM fordítási útmutatónk lefedi a beállításokat.
Minden kimenetet lefordítottunk a Tectonic 0.17.0-val, amely az XeTeX motort használja, egyszer pontosan úgy, ahogy visszakaptuk, egyszer pedig úgy, hogy a preambulumba kínai beállítást adtunk. Ezután visszaolvastuk a szöveget minden PDF-ből. Ez egy kis teszt volt egy modellrel, egy nyelvpárral és egy fájllal. Megmutatja, milyen problémák fordulnak elő, és hogyan lehet elkapni őket. Nem rangsorol modelleket vagy promptokat.
Eredmény: A szerkezet túlélte; a preambulum döntötte el, hogy megjelenik-e a szöveg
A check_latex_translation.py összehasonlította az egyes kimeneteket a forrással, a compile_check.py pedig lefordította őket. A teljes kimenetek a check-results.txt és a compile-results.txt fájlokban találhatók, a results.csv pedig futásonként egy sort tartalmaz.
| Ellenőrzés | Teljes fájl | Utasítással | Szegmensek |
|---|---|---|---|
| Címkék, hivatkozások, idézetek és bibliográfiai kulcsok változatlanok | 3 / 3 | 3 / 3 | 3 / 3 |
Matematika változatlan (a \text{} belsejében lévő szöveg lefordítva) | 3 / 3 | 3 / 3 | 3 / 3 |
| URL-ek, kapcsos zárójelek és táblázatoszlopok érintetlenek | 3 / 3 | 3 / 3 | 3 / 3 |
| A modell kínai csomagot adott a preambulumba | 3 / 3 | 0 / 3 | 0 / 3 |
| Visszaadott állapotában lefordul | 3 / 3 | 3 / 3 | 3 / 3 |
| A kínai szöveg ténylegesen benne van a visszaadott PDF-ben | 3 / 3 | 0 / 3 | 0 / 3 |
| Szó szerinti blokk változatlan | 3 / 3 | 2 / 3 | 3 / 3 |
% megjegyzések angolul maradtak | 3 / 3 | 3 / 3 | 1 / 3 |
| Minden hivatkozás és idézet feloldódik a kínai beállítás hozzáadása után | 3 / 3 | 3 / 3 | 3 / 3 |
Ellenőrzőnk az első futásban megváltozott matematikát jelzett. A matematika rendben volt: a kínai szórend miatt egy mondatban a $N$ a $r$ elé került. A közzétett ellenőrző ezért rendeletlen gyűjteményként hasonlítja össze a matematikai szegmenseket, így az átrendezés megengedett, de a megváltozott szimbólum nem.
1. A „Ne nyúlj a preambulumhoz” olyan PDF-et eredményezett, amelyben nem volt kínai
A preambulumra vonatkozó szabály a legbiztonságosabb utasításnak hangzik, amit adhatsz. Mintánk preambuluma betölti az amsmath, booktabs és hyperref csomagokat, és három makrót definiál, és ezek egyike sem igényel fordítást. Így az utasított és szegmentált futások békén hagyták, pontosan ahogy kértük.
De a szabványos LaTeX-beállítás alapértelmezett betűtípusai nem tartalmaznak kínai karaktereket. Mind a hat fájl 0-s kilépési kóddal fordult le. A Tectonic figyelmeztetett is, minden hiányzó karakter után egyszer, olyan sorokkal, mint Missing character: There is no 估 (U+4F30) in font [lmroman17-regular], és a naplófájl futásonként 554 és 577 közötti ilyen figyelmeztetést rögzített. De egy figyelmeztetés nem állítja le a fordítást. Amikor kinyertük a szöveget ebből a hat PDF-ből, azok a szerzőneveket, a számokat és a matematikát tartalmazták, és nulla kínai karaktert. A három teljes fájlos PDF 481–490-et tartalmazott. Egy olyan build szkript, amely csak azt ellenőrzi, hogy a fordítás sikeres volt-e, vagy egy olyan személy, aki csak a kimenet végét futja át, mind a hatot kiszolgálta volna.
A három teljes fájlos futás, amelyeknél nem volt ilyen szabály, magától hozzáadta a \usepackage{ctex} sort, és a PDF-jeik teljesek voltak. Ez nem ok arra, hogy hagyjuk a modellt átírni a preambulumot. Ez ok arra, hogy a célnyelvi beállítást a fordítási feladat részének tekintsük, egyszer, általad elvégezve:
- Kínai: töltsd be a ctex csomagot, amely támogatja a pdfLaTeX, XeLaTeX és LuaLaTeX motorokat. Alapértelmezés szerint az operációs rendszeredhez választ betűtípusokat; a naplónk szerint a macOS betűtípus-készletét tölti be. Ha a fájlnak más gépeken is ugyanúgy kell lefordulnia, a
\usepackage[UTF8,fontset=fandol]{ctex}a TeX Live-hoz mellékelt ingyenes Fandol betűtípusokat használja, amelyeket a Tectonic is igény szerint letölt. Ezt adja hozzá acompile_check.py. - Más nyelvek: töltsd be a babel csomagot a célnyelvvel, hogy az elválasztás és a generált szavak, például az „Figure”, „Table” és „Abstract” kövessék az új nyelvet. A japán, koreai és jobbról balra író nyelvek mindegyike saját beállítást igényel.
Fordítás után keresd a naplóban a Missing character üzenetet, és olvasd el a PDF-et, ne csak a kilépési kódot. Mi csak a XeTeX motort teszteltük a Tectonic-on keresztül; más motorok másképp jelentik a hiányzó betűtípust.
2. A karakterhelyettesítési szabály beszivárgott a kódlistába
Utasításaink azt mondták, hogy tartsuk meg a speciális karakterek karakterhelyettesítését, és prózai szövegben ez a helyes szabály: a LaTeX-ben egy csupasz % megjegyzést indít, és csendesen elnyeli a sor többi részét. Mind a kilenc futás megtartotta a 20\%-ot az absztraktban.
Az első utasításos futásban a modell a verbatim blokkon belül is alkalmazta a szabályt, és lefordította az ott lévő kódkommentet:
source: shelfmark count --unit chars book.epub # 100% of body text
translation: shelfmark count --unit chars book.epub # 100\% 正文
A verbatim belsejében semmi sem parancs, ezért a PDF a 100\%-ot fordított perjellel nyomtatja. A megoldás nem egy jobb prompt. A verbatim, lstlisting vagy minted blokkokat egyáltalán ne küldje fordítónak, ahogy a szegmensek feltétel tette. Ezután fordítsa le a bennük lévő kommenteket kézzel, ha az olvasóinak szükségük van rájuk.
3. A kommentek követték a kérés határait
A fájlban két % komment van: egy megjegyzés a makródefiníciók felett és egy TODO a kódlista felett. A teljes fájlos és az utasításos futások mindkettőt angolul hagyták. A szegmensek feltétel a TODO-t három futásból kettőben lefordította, mert a TODO véletlenül ugyanabba a blokkba került, mint egy fordításra küldött bekezdés. Két teljes fájlos futás saját kommentet is hozzáadott a beszúrt csomag után.
Mindez nem változtat a PDF-en. Akkor számít, ha a lefordított forrás visszakerül a társszerzőkhöz vagy egy repóba, ahol a lefordított TODO már nem egyezik az eredetivel, és minden diffben megjelenik egy plusz komment. Az ellenőrző figyelmeztetésként jelenti a lefordított kommenteket, hogy Ön dönthessen.
4. A strukturális ellenőrzések átmentek, a jelentés mégis megváltozott
Az absztrakt azt mondja: „a 20%-kal eltérő címke még mindig hasznos”. Kilenc futásból háromban a kínai szöveg azt mondta, hogy a 20%-on belüli hibájú címkék még mindig hasznosak, ami a toleranciát küszöbbé alakítja. Több más futás átrendezte a mondatot, így az „although” tagmondat rossz gondolathoz kapcsolódott, és egy követhetetlenné vált. Ezek egyetlen olvasó ítéletei, aki a kínait az angollal veti össze, nem vak bírálat, de a lényeg nem a pontos számon múlik: minden strukturális ellenőrzés átment azokon a fájlokon, mert a 20\%, a makró és a kapcsos zárójelek mind helyesek voltak.
Két másik változás rendben volt, de érdemes tudni róluk. A teljes fájlos futások a \$12-t 12美元-ként („12 amerikai dollár”) írták, ami teljesen megszünteti az escape-elés kérdését. Két teljes fájlos futás a \ref és \cite előtti ~ kötések többségét is elhagyta. Ez a kínaiban ártalmatlan, mert nem tesz szóközt a szavak közé, de egy olyan nyelvben, amelyik tesz, a hiányzó kötés miatt a sortörés elválaszthatja a „Table” szót a számától. Az ellenőrző a kötéseket figyelmeztetésként jelenti, nem hibaként.
A strukturális ellenőrzés megmondja, hogy a fájl még működik. Azt nem tudja megmondani, hogy a cikk még ugyanazt mondja-e. Ehhez használjon kétnyelvű olvasást az absztraktról, az állításokról és a számokról, ahogy a lefordított kutatási cikk áttekintéséről szóló útmutatónkban leírjuk.
Egy munkafolyamat, amely kiállja a próbát
-
Szerezze be a forrást, és ellenőrizze, mit tehet vele. Az arXiv-on a TeX-ben beküldött cikkek általában a Source linken keresztül kínálják a forrásukat az absztrakt oldalon vagy az Other formats oldalon, gzippelt fájlként vagy tar archívumként, ha több fájl van (arXiv súgó). A saját olvasásra való fordítás egy dolog. A fordítás közzététele más: az arXiv saját, nem kizárólagos licence korlátozza mások újrafelhasználását, míg a CC BY és a CC BY-SA engedélyezi az adaptációkat név feltüntetésével, a CC BY-NC-ND pedig nem. Kétség esetén kérdezze meg a szerzőket.
-
Először fordítsa le az eredetit. Ha a fordítás előtt nem fordul le, semmi, amit utána megtud, nem megbízható. Őrizze meg az eredeti PDF-et összehasonlításra.
-
Állítsa be a célnyelvet a preambulumban saját maga. Adja hozzá a
ctexvagybabelcsomagot a fentiek szerint, fordítsa le egyszer az angol szöveggel, és külön commitolja ezt a változtatást. -
Fordítsa le a törzset a preambulum és a verbatim blokkok nélkül. Használjon LaTeX-et elemző eszközt, vagy küldje el a törzset darabokban, kifejezett szabályokkal, ahogy a szegmensek feltételünkben. A TransLaTeX, egy erre a célra készült nyílt forráskódú eszköz, tokenekkel helyettesíti a LaTeX szerkezeteket, mielőtt a szöveget gépi fordítónak küldené. A dokumentációja azt is mondja, hogy érintetlenül hagyja a dokumentum fejlécét, nem támogat makrókat, és csak egyfájlos dokumentumokat kezel,
\inputnélkül. Még egy dedikált eszköz is Önre bízza a preambulum döntését. -
Futtassa a strukturális ellenőrzést minden fájlpáron.
python3 check_latex_translation.py main.tex main-zh.tex --keep ShelfmarkÖsszehasonlítja a preambulumot, a parancsneveket, a környezetek sorrendjét, a címkéket, a hivatkozásokat, az idézeteket, a bibliográfiai kulcsokat, a matematikát, a verbatim blokkokat, az URL-eket, a nem escape-elt
%,&és#karaktereket, a kapcsos zárójelek egyensúlyát, a kötéseket, a kommenteket és minden olyan kifejezést, amelyet meg kér, hogy tartson meg. Számítson arra, hogy a preambulum sora elbukik a 3. lépés után, ha az eredetihez hasonlítja; hasonlítsa inkább a frissített angol fájljához. Több\inputfájlra osztott projekt esetén minden párt ellenőrizzen. -
Fordítsa le és olvassa el a PDF-et.
python3 compile_check.py main-zh.texJelenti a feloldatlan hivatkozásokat (
??), a feloldatlan idézeteket ([?]) és a hiányzó glyph-eket. Ezután nyissa meg a PDF-et, és olvassa el az absztraktot, minden képaláírást és minden táblázatot az eredetihez hasonlítva. -
Végezzen kétnyelvű olvasást az állításokról és a számokról. Itt derült volna ki a három megváltozott mondatunk. Tartson rövid fordítási szószedetet a cikk műszaki kifejezéseihez, hogy ugyanazt a kifejezést ne fordítsa háromféleképpen.
Hogyan illeszkedik ide a BookTranslator
A BookTranslator dokumentumfordítója elfogad .tex fájlokat a PDF, DOCX, EPUB, Markdown és más strukturált formátumok mellett. A GYIK szerint az eredmény „egy használható, a formátumnak megfelelő fájl, amikor a formátum ezt támogatja”.
A termékoldal nem írja le, hogyan kezeli a LaTeX makrókat, a matematikát vagy a preambulumot, és ezt a mintát nem futtattuk át a BookTranslatoron ehhez a cikkhez. Bármilyen eszközt is használ, végezze el az 1–3. lépést a fordítás előtt és az 5–7. lépést utána. Egy fájl, amely csak angol preambulumot tart meg, továbbra is lefordul kínai szöveg nélkül, és egy megváltozott állítás továbbra is átmegy minden strukturális ellenőrzésen.
Ha csak egy cikk PDF-je van meg, a forrása nem, a munkafolyamat más: lásd a kutatási cikk szerkezetének megőrzése melletti fordításáról szóló útmutatónkat. Ha a forrása Markdown és nem LaTeX, ugyanaz a gépezet és a próza szétválasztása érvényes, más csapdákkal; ezeket a Markdown fájlok fordításáról szóló cikkünkben teszteltük.
Szerezze be a tesztfájlokat
A teszt minden eleme szabadon újrafelhasználható:
- sample-source.tex: a 98 soros angol minta;
- check_latex_translation.py: a strukturális ellenőrző (csak Python szabványos könyvtár);
- compile_check.py: lefordítja az egyes visszakapott fájlokat, valamint kínai beállításokkal is, és megszámolja a feloldatlan hivatkozásokat, a feloldatlan idézeteket és a hiányzó karaktereket (Tectonic és pdftotext szükséges);
- run_llm_latex_test.py: a három promptfeltétel bármely OpenAI-kompatibilis helyi szerverhez;
- a kilenc kimenet az outputs mappában, a check-results.txt, a compile-results.txt és a results.csv fájlokkal.
Kapcsolódó bejegyzések





