BookTranslator
BookTranslator

Wie man ein LaTeX-Dokument übersetzt, ohne Mathematik, Zitate oder Labels zu beschädigen

Was in einer .tex-Datei übersetzt werden sollte, was unangetastet bleibt und warum eine übersetzte Datei fehlerfrei kompilieren und trotzdem ihren Text verlieren kann. Mit einer Beispieldatei, zwei kostenlosen Prüfwerkzeugen und einem lokalen LLM-Test mit 9 Durchläufen.

BookTranslator

BookTranslator Team

13 min read

Um ein LaTeX-Dokument zu übersetzen, übersetzt man den Fließtext und die lesergerichteten Argumente von Befehlen wie Abschnittstitel, Bildunterschriften, Fußnoten und Linktexte. Befehle, Umgebungsnamen, \label-, \ref- und \cite-Schlüssel, Mathematik und Verbatim-Blöcke bleiben exakt unverändert. Danach nimmt man eine Änderung vor, die kein Übersetzer für einen erledigen sollte: Man richtet die Präambel für die Zielsprache ein, denn eine Datei, die ihre englische Präambel behält, kann fehlerfrei kompilieren und trotzdem ein PDF erzeugen, in dem der übersetzte Text fehlt.

Der letzte Punkt ist das Hauptergebnis eines kleinen Tests. Wir haben ein 98-zeiliges LaTeX-Paper neunmal mit einem lokalen Modell ins vereinfachte Chinesisch übersetzt, auf drei verschiedene Arten, und jedes Ergebnis mit einem Skript und einem Compiler geprüft. Die Teile, um die man sich üblicherweise sorgt, hielten in allen neun Durchläufen stand: Labels, Referenzen, Zitate, Gleichungen, URLs, Tabellenspalten und geschweifte Klammern kamen unversehrt zurück, und jede Querverweisung ließ sich auflösen. Die Probleme lagen woanders. Die sechs Durchläufe, deren Prompt „Ändere die Präambel nicht“ lautete, befolgten dies, kompilierten mit Exit-Code 0 und erzeugten PDFs, in denen überhaupt kein chinesischer Text enthalten war. Ein Durchlauf wandte unsere Regel „Escape das %-Zeichen“ innerhalb eines Code-Listings an, sodass das PDF einen überflüssigen Backslash ausgibt. Und mindestens drei Durchläufe verschoben die Bedeutung eines Satzes auf eine Weise, die keine strukturelle Prüfung erkennen kann.

Kurzantwort: Was übersetzen und was unangetastet lassen

Teil der DateiBeispiel aus unserer BeispieldateiÜbersetzen?
Präambel: \documentclass, \usepackage, \newcommand\newcommand{\wpm}{\mathrm{wpm}}Nein, aber die Zielsprachen-Einrichtung selbst hinzufügen (siehe unten)
\title, \author, \date\title{Estimating Reading Time for Translated Ebooks}Titel und Datum ja; Namen normalerweise nein
Überschriften\section{Method}\label{sec:method}Ja, den Text in geschweiften Klammern; das Label behalten
Labels und Referenzen\label{eq:time}, Section~\ref{sec:method}, \eqref{eq:time}Jeden Schlüssel behalten
Zitate und Literaturverzeichnis-Schlüssel\cite{brysbaert2019}, \bibitem{rayner2016}Die Schlüssel behalten; Eintragstext nur übersetzen, wenn es in Ihrem Fachgebiet üblich ist
Inline- und Display-Mathematik$r_c$, T = \frac{N}{r}Nein
Text innerhalb von Mathematik\text{ for English silent reading.}Ja. Er wird als gewöhnlicher Text ausgegeben.
Makros, die Text aufnehmen\term{characters per minute}Das Argument übersetzen, den Befehl behalten
Bildunterschriften und Fußnoten\caption{Reading rates used in this paper.}Ja
Wörtliche und Code-Listingsshelfmark count --unit chars book.epub # 100% of body textNein, einschließlich der Kommentare darin
\url und das erste Argument von \href\href{https://example.org/shelfmark/survey}{online appendix}URL beibehalten; Linktext übersetzen
Escapte Zeichen20\%, \$12, R\&DBackslash im Fließtext beibehalten
%-Kommentare% TODO: replace the Chinese rate ...Optional. Leser sehen sie nie.
Geschützte Leerzeichen vor ReferenzenTable~\ref{tab:rates}In Sprachen mit Leerzeichen beibehalten; im Chinesischen und Japanischen optional

Alles andere ist gewöhnlicher Fließtext: Absätze, Zusammenfassung, Listeneinträge und Tabellenzellen.

Was wir getestet haben

Wir haben sample-source.tex geschrieben, ein kurzes erfundenes Paper über Lesezeit-Schätzungen für eine fiktive App namens Shelfmark. Es kompiliert sauber und enthält je ein Beispiel für jedes Konstrukt aus der obigen Tabelle, plus eine booktabs-Tabelle, eine Abbildung mit Bildunterschrift, zwei %-Kommentare, einen verbatim-Block mit einem nackten % darin und eine Inline-Bibliografie.

Dann haben wir ein lokales Modell gebeten, es auf drei Arten ins vereinfachte Chinesisch zu übersetzen:

  1. Ganze Datei. Die gesamte Datei einfügen und um eine übersetzte Datei bitten, die noch kompiliert.
  2. Mit Anweisungen. Dasselbe, plus sieben Regeln: die Präambel nicht ändern, jeden Befehl, jede Umgebung, jedes Label, jede Referenz und jeden Zitationsschlüssel beibehalten, Mathematik außer \text{} unangetastet lassen, verbatim-Blöcke und URLs in Ruhe lassen, Sonderzeichen escapt lassen, geschützte Leerzeichen beibehalten und den Fließtext, Bildunterschriften, Fußnoten und Linktexte übersetzen.
  3. Segmente. Die Präambel komplett aus der Anfrage heraushalten (nur die \title-Zeile wird gesendet, damit \date auf Englisch bleibt), den Hauptteil an Leerzeilen aufteilen, den verbatim-Block überspringen, jedes Stück mit denselben Regeln senden und wieder zusammensetzen.

Das Modell war Qwen 3.6 27B (Q4_K_M) in LM Studio, mit ausgeschaltetem Denken und Temperatur 0,3, auf einem Apple M4 Max mit 64 GB Arbeitsspeicher. Wir haben jede Bedingung dreimal ausgeführt, insgesamt neun Läufe, am 26. Oktober 2026. Das Skript ist run_llm_latex_test.py, und alle neun Ausgaben sind unredigiert im Ausgabeordner veröffentlicht. Wenn Sie noch nie ein lokales Modell eingerichtet haben, deckt unser Leitfaden zur lokalen LLM-Übersetzung die Einstellungen ab.

Wir haben jede Ausgabe mit Tectonic 0.17.0 kompiliert, das die XeTeX-Engine verwendet, einmal genau wie zurückgegeben und einmal mit einer chinesischen Einrichtung in der Präambel. Dann haben wir den Text aus jedem PDF wieder ausgelesen. Dies war ein kleiner Test mit einem Modell, einem Sprachpaar und einer Datei. Er zeigt, welche Probleme auftreten und wie man sie erkennt. Er bewertet keine Modelle oder Prompts.

Ergebnis: Die Struktur überlebte; die Präambel entschied, ob Text erschien

check_latex_translation.py hat jede Ausgabe mit der Quelle verglichen, und compile_check.py hat sie kompiliert. Die vollständigen Ausgaben stehen in check-results.txt und compile-results.txt, und results.csv enthält eine Zeile pro Lauf.

PrüfungGanze DateiAngewiesenSegmente
Labels, Referenzen, Zitate und Bibliografie-Schlüssel unverändert3 von 33 von 33 von 3
Mathematik unverändert (Text innerhalb von \text{} übersetzt)3 von 33 von 33 von 3
URLs, geschweifte Klammern und Tabellenspalten intakt3 von 33 von 33 von 3
Modell hat ein chinesisches Paket zur Präambel hinzugefügt3 von 30 von 30 von 3
Kompiliert wie zurückgegeben3 von 33 von 33 von 3
Chinesischer Text tatsächlich im PDF wie zurückgegeben3 von 30 von 30 von 3
Verbatim-Block unverändert3 von 32 von 33 von 3
%-Kommentare auf Englisch belassen3 von 33 von 31 von 3
Jede Referenz und Zitation wird nach dem Hinzufügen der chinesischen Einrichtung aufgelöst3 von 33 von 33 von 3

Unser Prüfprogramm meldete im ersten Durchlauf zunächst veränderte Mathematik. Die Mathematik war in Ordnung: Die chinesische Wortstellung hatte $N$ vor $r$ in einem Satz gesetzt. Der veröffentlichte Prüfer vergleicht Mathematiksegmente aus diesem Grund als ungeordnete Sammlung, sodass eine Umordnung erlaubt ist, ein geändertes Symbol jedoch nicht.

1. „Fass die Präambel nicht an“ führte zu einem PDF ohne Chinesisch

Die Präambel-Regel klingt wie die sicherste Anweisung, die man geben kann. Die Präambel unseres Beispiels lädt amsmath, booktabs und hyperref und definiert drei Makros, und nichts davon muss übersetzt werden. Also ließen die Läufe mit Anweisung und Segmenten sie in Ruhe, genau wie befohlen.

Aber die Standardschriften einer üblichen LaTeX-Umgebung enthalten keine chinesischen Zeichen. Jede dieser sechs Dateien kompilierte mit Exit-Code 0. Tectonic warnte zwar einmal pro fehlendem Zeichen mit Zeilen wie Missing character: There is no 估 (U+4F30) in font [lmroman17-regular], und die Logdatei verzeichnete zwischen 554 und 577 solcher Warnungen pro Lauf. Aber eine Warnung stoppt den Build nicht. Als wir den Text aus diesen sechs PDFs extrahierten, enthielten sie die Autorennamen, die Zahlen und die Mathematik – und null chinesische Zeichen. Die drei Ganzdatei-PDFs enthielten 481 bis 490. Ein Build-Skript, das nur prüft, ob die Kompilierung erfolgreich war, oder eine Person, die nur das Ende der Ausgabe überfliegt, hätte alle sechs ausgeliefert.

Die drei Ganzdatei-Läufe, die keine solche Regel hatten, fügten selbstständig \usepackage{ctex} hinzu, und ihre PDFs waren vollständig. Das ist kein Grund, ein Modell Ihre Präambel umschreiben zu lassen. Es ist ein Grund, die Einrichtung der Zielsprache als Teil der Übersetzungsaufgabe zu betrachten, einmalig von Ihnen erledigt:

  • Chinesisch: Laden Sie ctex, das pdfLaTeX, XeLaTeX und LuaLaTeX unterstützt. Standardmäßig wählt es Schriften für Ihr Betriebssystem; unser Protokoll zeigt, dass es seinen macOS-Schriftsatz lädt. Wenn die Datei auf anderen Rechnern genauso kompilieren muss, verwendet \usepackage[UTF8,fontset=fandol]{ctex} die freien Fandol-Schriften, die mit TeX Live verteilt werden und die Tectonic bei Bedarf ebenfalls herunterlädt. Das ist es, was compile_check.py hinzufügt.
  • Andere Sprachen: Laden Sie babel mit der Zielsprache, damit Silbentrennung und generierte Wörter wie „Abbildung“, „Tabelle“ und „Zusammenfassung“ der neuen Sprache folgen. Japanisch, Koreanisch und rechts-nach-links-Sprachen benötigen jeweils ihre eigene Einrichtung.

Prüfen Sie nach dem Kompilieren das Protokoll auf Missing character und lesen Sie das PDF, nicht nur den Exit-Code. Wir haben nur XeTeX über Tectonic getestet; andere Engines melden eine fehlende Schrift anders.

2. Die Escaping-Regel sickerte in das Code-Listing durch

Unsere Anweisungen besagten, Sonderzeichen escaped zu lassen, und im Fließtext ist das die richtige Regel: Ein nacktes % in LaTeX startet einen Kommentar und verschluckt stillschweigend den Rest der Zeile. Alle neun Läufe behielten 20\% im Abstract bei.

Im ersten Lauf mit Anweisungen wandte das Modell die Regel auch innerhalb des verbatim-Blocks an und übersetzte den Codekommentar darin:

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

Innerhalb von verbatim ist nichts ein Befehl, daher gibt das PDF 100\% mit dem Backslash aus. Die Lösung ist kein besserer Prompt. Senden Sie verbatim-, lstlisting- oder minted-Blöcke niemals an einen Übersetzer, wie es die Bedingung „Segmente“ tat. Übersetzen Sie dann etwaige Kommentare darin manuell, falls Ihre Leser sie benötigen.

3. Kommentare folgten den Anforderungsgrenzen

Die Datei enthält zwei %-Kommentare: eine Notiz über den Makrodefinitionen und ein TODO über dem Code-Listing. Die Ganzdatei- und die Anweisungsläufe ließen beide auf Englisch. Die Bedingung „Segmente“ übersetzte das TODO in zwei von drei Läufen, weil das TODO zufällig im selben Block wie ein von uns zur Übersetzung gesendeter Absatz lag. Zwei Ganzdateiläufe fügten zudem einen eigenen Kommentar nach dem von ihnen eingefügten Paket hinzu.

Nichts davon ändert das PDF. Es ist relevant, wenn der übersetzte Quelltext an Mitautoren oder ein Repository zurückgeht, wo ein übersetztes TODO nicht mehr mit dem Original übereinstimmt und ein zusätzlicher Kommentar in jedem Diff auftaucht. Der Prüfer meldet übersetzte Kommentare als Warnung, damit Sie entscheiden können.

4. Die strukturellen Prüfungen bestanden und die Bedeutung änderte sich dennoch

Die Zusammenfassung besagt: „Ein Label, das um 20 % danebenliegt, ist immer noch nützlich.“ In drei von neun Läufen sagte das Chinesische, dass Labels mit einem Fehler innerhalb von 20 % noch nützlich sind, was eine Toleranz in eine Schwelle verwandelt. Mehrere andere Läufe ordneten den Satz so um, dass die „obwohl“-Klausel an die falsche Idee anschließt, und einer wurde schwer nachvollziehbar. Dies sind Beurteilungen eines Lesers, der das Chinesische mit dem Englischen vergleicht, keine verblindete Überprüfung, aber der Punkt hängt nicht von der genauen Anzahl ab: Jede strukturelle Prüfung bestand bei diesen Dateien, weil das 20\%, das Makro und die Klammern alle korrekt waren.

Zwei andere Änderungen waren in Ordnung, aber wissenswert. Die Ganzdateiläufe schrieben \$12 als 12美元 („12 US-Dollar“), was die Escaping-Frage völlig beseitigt. Zwei Ganzdateiläufe ließen zudem die meisten ~-Verbindungen vor \ref und \cite weg. Das ist im Chinesischen harmlos, das keine Leerzeichen zwischen Wörtern setzt, aber in einer Sprache, die das tut, lässt eine fehlende Verbindung einen Zeilenumbruch „Tabelle“ von ihrer Nummer trennen. Der Prüfer meldet Verbindungen als Warnung, nicht als Fehler.

Eine strukturelle Prüfung sagt Ihnen, dass die Datei noch funktioniert. Sie kann Ihnen nicht sagen, dass die Arbeit noch dasselbe aussagt. Dafür lesen Sie die Zusammenfassung, die Aussagen und die Zahlen zweisprachig, wie in unserem Leitfaden zum Überprüfen einer übersetzten Forschungsarbeit beschrieben.

Ein Workflow, der standhält

  1. Besorgen Sie sich die Quelle und prüfen Sie, was Sie damit tun dürfen. Auf arXiv bieten in TeX eingereichte Arbeiten ihre Quelle normalerweise über einen Source-Link auf der Abstract-Seite oder der Seite Other formats an, als gzipgepackte Datei oder tar-Archiv, wenn es mehrere Dateien gibt (arXiv-Hilfe). Für die eigene Lektüre zu übersetzen ist eine Sache. Die Übersetzung zu veröffentlichen eine andere: arXivs eigene nicht-exklusive Lizenz beschränkt die Wiederverwendung durch andere, während CC BY und CC BY-SA Bearbeitungen mit Namensnennung erlauben und CC BY-NC-ND nicht. Fragen Sie im Zweifel die Autoren.

  2. Kompilieren Sie zuerst das Original. Wenn es vor der Übersetzung nicht kompiliert, ist nichts, was Sie danach erfahren, verlässlich. Bewahren Sie das ursprüngliche PDF zum Vergleich auf.

  3. Richten Sie die Zielsprache selbst in der Präambel ein. Fügen Sie ctex oder babel wie oben beschrieben hinzu, kompilieren Sie einmal mit dem englischen Text und committen Sie diese Änderung separat.

  4. Übersetzen Sie den Textkörper ohne Präambel und ohne verbatim-Blöcke. Verwenden Sie ein Tool, das LaTeX parst, oder senden Sie den Textkörper in Teilen mit expliziten Regeln, wie in unserer Bedingung „Segmente“. TransLaTeX, ein Open-Source-Tool, das genau dafür entwickelt wurde, ersetzt LaTeX-Konstrukte durch Token, bevor der Text an einen maschinellen Übersetzer gesendet wird. Seine Dokumentation besagt außerdem, dass es den Dokumentkopf unangetastet lässt, keine Makros unterstützt und nur Einzeldateidokumente ohne \input verarbeitet. Selbst ein spezialisiertes Tool überlässt Ihnen die Entscheidung über die Präambel.

  5. Führen Sie die strukturelle Prüfung für jedes Dateipaar durch.

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

    Sie vergleicht die Präambel, Befehlsnamen, Umgebungsreihenfolge, Labels, Referenzen, Zitate, Bibliographie-Schlüssel, Mathematik, verbatim-Blöcke, URLs, nicht maskierte %, & und #, Klammerbilanz, Verbindungen, Kommentare und alle Begriffe, die Sie beibehalten möchten. Erwarten Sie, dass die Präambelzeile nach Schritt 3 fehlschlägt, wenn Sie mit dem Original vergleichen; vergleichen Sie stattdessen mit Ihrer aktualisierten englischen Datei. Bei einem Projekt, das auf mehrere \input-Dateien aufgeteilt ist, prüfen Sie jedes Paar.

  6. Kompilieren und lesen Sie das PDF.

    python3 compile_check.py main-zh.tex
    

    Es meldet unaufgelöste Referenzen (??), unaufgelöste Zitate ([?]) und fehlende Glyphen. Öffnen Sie dann das PDF und lesen Sie die Zusammenfassung, jede Bildunterschrift und jede Tabelle gegen das Original.

  7. Machen Sie eine zweisprachige Lesung der Aussagen und Zahlen. Hier wären unsere drei geänderten Sätze aufgefallen. Führen Sie ein kurzes Übersetzungsglossar für die Fachbegriffe der Arbeit, damit derselbe Begriff nicht auf drei Arten übersetzt wird.

Wo BookTranslator passt

Der Dokumentenübersetzer von BookTranslator akzeptiert .tex-Dateien neben PDF, DOCX, EPUB, Markdown und anderen strukturierten Formaten. Laut FAQ wird das Ergebnis in „einer nutzbaren, formatgerechten Datei zurückgegeben, wann immer das Format dies unterstützt“.

Die Produktseite beschreibt nicht, wie es mit LaTeX-Makros, Mathematik oder der Präambel umgeht, und wir haben dieses Beispiel für diesen Artikel nicht durch BookTranslator laufen lassen. Welches Tool Sie auch verwenden, führen Sie die Schritte 1 bis 3 vor der Übersetzung und die Schritte 5 bis 7 danach aus. Eine Datei, die eine rein englische Präambel behält, kompiliert weiterhin ohne chinesischen Text, und eine geänderte Aussage besteht weiterhin jede strukturelle Prüfung.

Wenn Sie nur das PDF einer Arbeit haben, nicht die Quelle, ist der Workflow anders: siehe unseren Leitfaden zum Übersetzen einer Forschungsarbeit unter Beibehaltung ihrer Struktur. Wenn Ihre Quelle Markdown statt LaTeX ist, gilt dieselbe Trennung zwischen Maschinerie und Prosa, mit anderen Fallstricken; wir haben diese in Wie man Markdown-Dateien übersetzt getestet.

Holen Sie sich die Testdateien

Alles aus diesem Test kann frei wiederverwendet werden:

Verwandte Beiträge

Wie man ein LaTeX-Dokument übersetzt, ohne Mathematik, Zitate oder Labels zu beschädigen