Ich habe einen Freund, der ein ziemlich langes Dokument schreibt. Mittlerweile hat er etwa 130 (PDF) Seiten. Er verwendet TexWorks unter Windows und sein Dokument braucht manchmal bis zu 2 - 3 Minuten, bis es kompiliert ist.
Ich frage nicht, ob diese Zeit für eine so lange Datei normal ist. Ich weiß, dass es von vielen Dingen abhängt und dass jeder PC je nach CPU usw. unterschiedliche Zeiten benötigt.
Allerdings habe ich mich gefragt, welche Konstrukte in einer Tex-Datei besonders viel Zeit in Anspruch nehmen würden, wenn ein Dokument viele davon enthält.
Ich könnte mir beispielsweise vorstellen, dass das Einbinden vieler Bilder sehr viel Zeit in Anspruch nehmen würde, da jede externe Datei in das Dokument geladen werden muss (vorausgesetzt, dies draft
ist nicht aktiviert).
Außerdem verwendet er in seinem Dokument sehr oft mbox
Silbentrennungen. Würde sich die Zeit, die zum Kompilieren des Dokuments benötigt wird, erhöhen, wenn viele davon verwendet würden?
Als letztes Beispiel: Er kannte die Option nicht openright
und hat sie daher \newpage
überall dort verwendet, wo er wollte, dass ein neues Kapitel auf der richtigen Seite geöffnet wird. Verursacht dies zusätzliche Kompilierungszeit?
Ich hoffe, meine Frage ist klar genug.
Bearbeiten: Noch etwas habe ich in seinem Dokument gesehen. Als allererste Zeile habe ich gesehen \documentclass[all]{...}
. Ich wusste nicht, dass die Option all
existiert. Tut sie, was ich mir vorstelle? Aktiviert sie tatsächlich jede mögliche Option? Aber ist das nicht widersprüchlich? Zum Beispiel für parskip
und halfparskip
? Würde das die Leistung beeinträchtigen? Ich stelle es mir so vor wie in Java import *
.
Antwort1
Ich verstehe, dass Mathematik aufgrund der vielen zusätzlichen Überlegungen, die damit verbunden sind, länger dauern kann als einfacher Text. Das Einbinden von Bildern (außer im PDF- oder MPS-Format) erhöht auch die Kompilierungszeit, da diese verarbeitet werden müssen und nicht einfach in den Code eingefügt werden können.
Aber TeX ist eine Satzmaschine, und obwohl es Turing-vollständig ist, werden Dinge, die viel Verarbeitung erfordern, nicht besonders effizient sein, wenn wir TeX bitten, sie zu erledigen. Das Beispiel, das mir am ehesten in den Sinn kommt (aufgrund seiner jüngsten Veröffentlichung), ist das qrcode
Paket, das TeX verwendet, um Textzeichenfolgen in Binärdaten umzuwandeln und daraus dann grafische QR-Codes zu erstellen. TeX ist zu dieser Art von Dingen in der Lage, wurde aber nicht dafür entwickelt; daher dauert die Verarbeitung eines QR-Codes etwas länger als die Verarbeitung von einfachem Text. (In diesem Fall nicht viel länger; qrcode
scheint ziemlich ausgezeichnet zu sein. Aber trotzdem.)
Wie ebenfalls in den Kommentaren erwähnt, nimmt umfangreiches Zeichnen in TeX ebenfalls mehr Zeit in Anspruch. tikz
und Freunde haben darunter zu leiden; dennoch ist die Effizienz dieser Programme bemerkenswert, wenn man bedenkt, wie weit sie TeX über seine ursprünglichen Grenzen hinaus dehnen. shapepar
, obwohl es TeX für seinen beabsichtigten Zweck verwendet, zwingt es TeX dazu, Absätze in ungewöhnlichen und kreativen Formen zu setzen, und muss wiederholt Tests ausführen, um zu bestimmen, wie gegebene Texte am besten in diese Formen passen; daher dauert die Ausführung oft länger, als wenn man einfach Text in normalen, rechteckigen Absätzen setzen würde.
Unterm Strich ist TeX dafür konzipiert worden, Zeilen in Absätze, Absätze in Seiten und Formeln in schön gesetzte Einheiten aufzuteilen. Alles andere ist langsamer.