BookTranslator
BookTranslator

Kako prevesti LaTeX dokument bez kvarenja matematike, citata ili oznaka

Što prevoditi u .tex datoteci, što ostaviti netaknuto i zašto prevedena datoteka može čisto kompajlirati i pritom izgubiti tekst. Uz primjer datoteke, dva besplatna alata za provjeru i lokalni test LLM-a u 9 pokretanja.

BookTranslator

BookTranslator Team

13 min read

Da biste preveli LaTeX dokument, prevedite prozni tekst i argumente naredbi koje čita čitatelj, poput naslova odjeljaka, opisa slika, fusnota i teksta poveznica. Naredbe, nazive okruženja, ključeve \label, \ref i \cite, matematiku i verbatim blokove ostavite točno onakvima kakvi jesu. Zatim napravite jednu izmjenu koju nijedan prevoditelj ne bi trebao napraviti umjesto vas: postavite preambulu za ciljni jezik, jer datoteka koja zadrži englesku preambulu može se kompajlirati bez pogreške, a ipak proizvesti PDF u kojem prevedeni tekst nedostaje.

Ta posljednja točka glavni je rezultat malog testa. Preveli smo 98-redni LaTeX rad na pojednostavljeni kineski devet puta pomoću lokalnog modela, na tri različita načina, i svaki rezultat provjerili skriptom i kompajlerom. Dijelovi oko kojih ljudi obično brinu izdržali su u svih devet pokretanja: oznake, reference, citati, jednadžbe, URL-ovi, stupci tablica i vitičaste zagrade vratili su se netaknuti, a svaka unakrsna referenca bila je razriješena. Problemi su bili drugdje. Šest pokretanja čiji je prompt glasio „ne mijenjaj preambulu“ poslušalo je, kompajliralo se s izlaznim kodom 0 i proizvelo PDF-ove bez ikakvog kineskog teksta. Jedno je pokretanje primijenilo naše pravilo „escapeaj znak %“ unutar ispisa koda, pa PDF ispisuje zalutalu obrnutu kosu crtu. A najmanje tri pokretanja promijenila su značenje rečenice na način koji nijedna strukturna provjera ne može vidjeti.

Kratki odgovor: što prevoditi, a što ostaviti netaknuto

Dio datotekePrimjer iz naše datotekePrevesti?
Preambula: \documentclass, \usepackage, \newcommand\newcommand{\wpm}{\mathrm{wpm}}Ne, ali sami dodajte postavke za ciljni jezik (vidi dolje)
\title, \author, \date\title{Estimating Reading Time for Translated Ebooks}Naslov i datum da; imena obično ne
Naslovi\section{Method}\label{sec:method}Da, tekst u vitičastim zagradama; oznaku zadržite
Oznake i reference\label{eq:time}, Section~\ref{sec:method}, \eqref{eq:time}Zadržite svaki ključ
Citati i ključevi bibliografije\cite{brysbaert2019}, \bibitem{rayner2016}Zadržite ključeve; prevedite tekst unosa samo ako to vaše područje čini
Matematika u retku i u zasebnom bloku$r_c$, T = \frac{N}{r}Ne
Tekst unutar matematike\text{ for English silent reading.}Da. Ispisuje se kao običan tekst.
Makronaredbe koje primaju tekst\term{characters per minute}Prevedite argument, zadržite naredbu
Opisi slika i fusnote\caption{Reading rates used in this paper.}Da
Doslovni i kodni ispisishelfmark count --unit chars book.epub # 100% of body textNe, uključujući komentare unutar njih
\url i prvi argument naredbe \href\href{https://example.org/shelfmark/survey}{online appendix}Zadrži URL; prevedi tekst poveznice
Izlučeni znakovi20\%, \$12, R\&DZadrži obrnutu kosu crtu u proznom tekstu
Komentari s %% TODO: replace the Chinese rate ...Neobavezno. Čitatelji ih nikada ne vide.
Vezice prije referenciTable~\ref{tab:rates}Zadrži u jezicima koji koriste razmake; neobavezno u kineskom i japanskom

Sve ostalo je običan prozni tekst: odlomci, sažetak, stavke popisa i ćelije tablice.

Što smo testirali

Napisali smo sample-source.tex, kratak izmišljeni rad o procjenama vremena čitanja za fiktivnu aplikaciju Shelfmark. Ispravno se prevodi i sadrži po jedan primjer svake konstrukcije iz gornje tablice, plus booktabs tablicu, sliku s opisom, dva komentara s %, verbatim blok s golim % unutra i ugrađenu bibliografiju.

Zatim smo zamolili lokalni model da ga prevede na pojednostavljeni kineski na tri načina:

  1. Cijela datoteka. Zalijepite cijelu datoteku i zatražite prevedenu datoteku koja se još uvijek može prevesti.
  2. S uputama. Isto, plus sedam pravila: ne mijenjaj preambulu, zadrži svaku naredbu, okruženje, oznaku, referencu i ključ citata, ostavi matematiku na miru osim \text{}, ostavi verbatim blokove i URL-ove na miru, zadrži posebne znakove izlučene, zadrži vezice i prevedi prozni tekst, opise, fusnote i tekst poveznica.
  3. Segmenti. Potpuno izostavite preambulu iz zahtjeva (šalje se samo redak \title, tako da \date ostaje na engleskom), podijelite tijelo na prazne retke, preskočite verbatim blok, pošaljite svaki dio s istim pravilima i ponovno sastavite.

Model je bio Qwen 3.6 27B (Q4_K_M) u LM Studiju, s isključenim razmišljanjem i temperaturom 0,3, na Apple M4 Max s 64 GB memorije. Svaki uvjet pokrenuli smo tri puta, ukupno devet pokretanja, 26. listopada 2026. Skripta je run_llm_latex_test.py, a svih devet izlaza objavljeno je neuređeno u mapi outputs. Ako nikada niste postavili lokalni model, naš vodič za lokalno prevođenje LLM-om pokriva postavke.

Svaki izlaz preveli smo s Tectonic 0.17.0, koji koristi XeTeX pogon, jednom točno onako kako je vraćen i jednom s kineskim postavkama dodanim u preambulu. Zatim smo ponovno pročitali tekst iz svakog PDF-a. Ovo je bio mali test jednog modela, jednog jezičnog para i jedne datoteke. Pokazuje koji se problemi događaju i kako ih uhvatiti. Ne rangira modele ni upute.

Rezultat: Struktura je preživjela; preambula je odlučila hoće li se tekst pojaviti

check_latex_translation.py usporedio je svaki izlaz s izvornikom, a compile_check.py ga je preveo. Potpuni izlazi nalaze se u check-results.txt i compile-results.txt, a results.csv ima jedan redak po pokretanju.

ProvjeraCijela datotekaUputaSegmenti
Oznake, reference, citati i ključevi bibliografije nepromijenjeni3 od 33 od 33 od 3
Matematika nepromijenjena (tekst unutar \text{} preveden)3 od 33 od 33 od 3
URL-ovi, vitičaste zagrade i stupci tablice netaknuti3 od 33 od 33 od 3
Model je dodao kineski paket u preambulu3 od 30 od 30 od 3
Kompilira se kako je vraćeno3 od 33 od 33 od 3
Kineski tekst stvarno u PDF-u kako je vraćen3 od 30 od 30 od 3
Doslovni blok nepromijenjen3 od 32 od 33 od 3
% komentari ostavljeni na engleskom3 od 33 od 31 od 3
Svaka referenca i citat ispravno se razrješavaju nakon dodavanja kineskih postavki3 od 33 od 33 od 3

Naš je provjerivač isprva prijavio promijenjenu matematiku u prvom prolazu. Matematika je bila ispravna: kineski red riječi stavio je $N$ prije $r$ u jednoj rečenici. Objavljeni provjerivač uspoređuje matematičke segmente kao neuređenu zbirku upravo iz tog razloga, pa je preuređivanje dopušteno, ali promijenjeni simbol nije.

1. "Ne diraj preambulu" proizvelo je PDF bez ijednog kineskog znaka

Pravilo o preambuli zvuči kao najsigurnija uputa koju možete dati. Preambula našeg uzorka učitava amsmath, booktabs i hyperref te definira tri makroa, a ništa od toga ne treba prevođenje. Stoga su je pokretanja s uputama i segmentima ostavila na miru, točno kako je rečeno.

No zadani fontovi u standardnoj LaTeX postavci nemaju kineske znakove. Svih šest datoteka kompajliralo se s izlaznim kodom 0. Tectonic je upozorio, jednom po svakom nedostajućem znaku, retcima poput Missing character: There is no 估 (U+4F30) in font [lmroman17-regular], a datoteka zapisa zabilježila je između 554 i 577 takvih upozorenja po pokretanju. Ali upozorenje ne zaustavlja izgradnju. Kad smo izvukli tekst iz tih šest PDF-ova, sadržavali su imena autora, brojeve i matematiku, i nijedan kineski znak. Tri PDF-a cijelih datoteka sadržavala su 481 do 490. Skripta za izgradnju koja provjerava samo je li kompilacija uspjela, ili osoba koja samo preleti kraj izlaza, isporučila bi svih šest.

Tri pokretanja s cijelim datotekama, koja nisu imala takvo pravilo, sama su dodala \usepackage{ctex}, i njihovi PDF-ovi bili su potpuni. To nije razlog da modelu dopustite prepisivanje preambule. To je razlog da postavke ciljnog jezika vidite kao dio posla prevođenja, obavljen jednom, od vas:

  • Kineski: učitajte ctex, koji podržava pdfLaTeX, XeLaTeX i LuaLaTeX. Prema zadanim postavkama odabire fontove za vaš operacijski sustav; naš zapis pokazuje da učitava svoj macOS skup fontova. Ako se datoteka mora kompajlirati na isti način na drugim računalima, \usepackage[UTF8,fontset=fandol]{ctex} koristi besplatne fontove Fandol distribuirane s TeX Live, koje Tectonic također preuzima na zahtjev. To je ono što dodaje compile_check.py.
  • Ostali jezici: učitajte babel s ciljnim jezikom, kako bi se rastavljanje riječi i generirane riječi poput "Figure", "Table" i "Abstract" prilagodile novom jeziku. Japanski, korejski i jezici s pisanjem zdesna nalijevo svaki zahtijevaju vlastite postavke.

Nakon kompilacije provjerite zapis za Missing character i pročitajte PDF, a ne samo izlazni kod. Testirali smo samo XeTeX putem Tectonica; drugi pogoni prijavljuju nedostajući font na drugačiji način.

2. Pravilo o escapeanju procurilo je u ispis koda

Naše su upute govorile da posebne znakove treba držati escapeane, a u prozi je to ispravno pravilo: goli % u LaTeXu započinje komentar i tiho guta ostatak retka. Svih devet pokretanja zadržalo je 20\% u sažetku.

U prvom vođenom pokretanju model je također primijenio pravilo unutar bloka verbatim i preveo komentar u kodu:

source:      shelfmark count --unit chars book.epub  # 100% of body text
translation: shelfmark count --unit chars book.epub  # 100\% 正文

Unutar verbatim ništa nije naredba, pa PDF ispisuje 100\% s obrnutom kosom crtom. Rješenje nije bolji upit. Blokove verbatim, lstlisting ili minted nikada ne šaljite prevoditelju, kao što je činio uvjet segmenata. Zatim ručno prevedite sve komentare u njima ako ih vaši čitatelji trebaju.

3. Komentari su slijedili granice zahtjeva

Datoteka ima dva komentara s %: bilješku iznad definicija makronaredbi i TODO iznad popisa koda. Pokretanja cijele datoteke i vođena pokretanja ostavila su oba na engleskom. Uvjet segmenata preveo je TODO u dva od tri pokretanja jer se TODO slučajno nalazio u istom bloku kao odlomak koji smo poslali na prijevod. Dva pokretanja cijele datoteke također su dodala vlastiti komentar nakon paketa koji su umetnula.

Ništa od ovoga ne mijenja PDF. Važno je ako se prevedeni izvorni kod vraća koautorima ili u repozitorij, gdje prevedeni TODO više ne odgovara originalu, a dodatni se komentar pojavljuje u svakom diffu. Provjera prijavljuje prevedene komentare kao upozorenje kako biste mogli odlučiti.

4. Strukturne provjere su prošle, a značenje se ipak promijenilo

Sažetak kaže "oznaka koja je pogrešna za 20 % još je korisna". U tri od devet pokretanja kineski je rekao da su oznake s pogreškom unutar 20 % još korisne, što toleranciju pretvara u prag. Nekoliko drugih pokretanja preuredilo je rečenicu tako da se klauzula "iako" veže na pogrešnu ideju, a jedno je postalo teško pratiti. To su prosudbe jednog čitatelja koji uspoređuje kineski s engleskim, a ne zaslijepljena recenzija, ali poanta ne ovisi o točnom broju: svaka strukturna provjera prošla je na tim datotekama jer su 20\%, makronaredba i vitičaste zagrade bili ispravni.

Dvije druge promjene bile su u redu, ali vrijedi ih znati. Pokretanja cijele datoteke napisala su \$12 kao 12美元 ("12 američkih dolara"), što u potpunosti uklanja pitanje escapeanja. Dva pokretanja cijele datoteke također su ispustila većinu veza ~ prije \ref i \cite. To je bezopasno u kineskom, koji ne stavlja razmake između riječi, ali u jeziku koji ih stavlja, nedostajuća veza dopušta prijelom retka koji odvaja "Tablicu" od njezina broja. Provjera prijavljuje veze kao upozorenje, a ne kao grešku.

Strukturna provjera govori vam da datoteka još radi. Ne može vam reći da rad još govori isto. Za to upotrijebite dvojezično čitanje sažetka, tvrdnji i brojeva, kako je opisano u našem vodiču za pregled prevedenog znanstvenog rada.

Radni postupak koji izdržava

  1. Nabavite izvorni kod i provjerite što smijete s njim. Na arXivu radovi predani u TeXu obično nude svoj izvorni kod putem veze Source na stranici sažetka ili stranici Other formats, kao gzip datoteku ili tar arhivu kada ima više datoteka (pomoć arXiva). Prevođenje za vlastito čitanje jedno je. Objavljivanje prijevoda drugo: arXivova vlastita neekskluzivna licenca ograničava ponovnu upotrebu od strane drugih, dok CC BY i CC BY-SA dopuštaju prilagodbe uz atribuciju, a CC BY-NC-ND ne dopušta. U nedoumici pitajte autore.

  2. Prvo prevedite izvornik. Ako se ne prevede prije prevođenja, ništa što naknadno saznate nije pouzdano. Sačuvajte izvorni PDF za usporedbu.

  3. Sami postavite ciljni jezik u preambuli. Dodajte ctex ili babel kao gore, prevedite jednom s engleskim tekstom i zasebno predajte tu promjenu.

  4. Prevedite tijelo bez preambule i bez verbatim blokova. Upotrijebite alat koji raščlanjuje LaTeX ili pošaljite tijelo u dijelovima s izričitim pravilima, kao u našem uvjetu segmenata. TransLaTeX, open-source alat izgrađen za to, zamjenjuje LaTeX konstrukcije tokenima prije slanja teksta strojnom prevoditelju. Njegova dokumentacija također kaže da ostavlja zaglavlje dokumenta netaknutim, ne podržava makronaredbe i obrađuje samo datoteke s jednom datotekom, bez \input. Čak i namjenski alat odluku o preambuli ostavlja vama.

  5. Pokrenite strukturnu provjeru na svakom paru datoteka.

    python3 check_latex_translation.py main.tex main-zh.tex --keep Shelfmark
    

    Uspoređuje preambulu, nazive naredbi, redoslijed okruženja, oznake, reference, citate, ključeve bibliografije, matematiku, verbatim blokove, URL-ove, neescapeane %, & i #, ravnotežu vitičastih zagrada, veze, komentare i sve pojmove koje zatražite da se zadrže. Očekujte da će redak preambule pasti nakon koraka 3 kada uspoređujete s izvornikom; umjesto toga uspoređujte sa svojom ažuriranom engleskom datotekom. Za projekt podijeljen na nekoliko \input datoteka provjerite svaki par.

  6. Prevedite i pročitajte PDF.

    python3 compile_check.py main-zh.tex
    

    Prijavljuje neriješene reference (??), neriješene citate ([?]) i nedostajuće glifove. Zatim otvorite PDF i pročitajte sažetak, svaki natpis i svaku tablicu u odnosu na izvornik.

  7. Napravite dvojezično čitanje tvrdnji i brojeva. Ovdje bi se uhvatile naše tri promijenjene rečenice. Vodite kratki rječnik prijevoda za tehničke pojmove rada kako se isti pojam ne bi prevodio na tri načina.

Gdje se uklapa BookTranslator

BookTranslatorov prevoditelj dokumenata prihvaća .tex datoteke zajedno s PDF-om, DOCX-om, EPUB-om, Markdownom i drugim strukturiranim formatima. Njegov FAQ kaže da se rezultat vraća u "upotrebljivoj datoteci primjerenoj formatu kad god taj format to podržava".

Stranica proizvoda ne opisuje kako postupa s LaTeX makronaredbama, matematikom ili preambulom, a ovaj uzorak nismo provodili kroz BookTranslator za ovaj članak. Koji god alat upotrijebili, napravite korake od 1 do 3 prije prevođenja i korake od 5 do 7 nakon toga. Datoteka koja zadrži preambulu samo na engleskom i dalje će se prevesti bez kineskog teksta, a promijenjena tvrdnja i dalje će proći svaku strukturnu provjeru.

Ako imate samo PDF rada, a ne njegov izvorni kod, radni je postupak drugačiji: pogledajte naš vodič za prevođenje znanstvenog rada uz zadržavanje njegove strukture. Ako je vaš izvorni kod Markdown, a ne LaTeX, vrijedi ista podjela na mehanizam i prozni tekst, uz drugačije zamke; testirali smo ih u Kako prevesti Markdown datoteke.

Nabavite testne datoteke

Sve iz ovog testa slobodno je za ponovnu upotrebu:

Povezane objave

Kako prevesti LaTeX dokument bez kvarenja matematike, citata ili oznaka