Welche Konstrukte würden eine lange Kompilierungszeit in einem Dokument verursachen?

Welche Konstrukte würden eine lange Kompilierungszeit in einem Dokument verursachen?

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 draftist nicht aktiviert).

Außerdem verwendet er in seinem Dokument sehr oft mboxSilbentrennungen. 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 openrightund 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 allexistiert. Tut sie, was ich mir vorstelle? Aktiviert sie tatsächlich jede mögliche Option? Aber ist das nicht widersprüchlich? Zum Beispiel für parskipund 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 qrcodePaket, 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; qrcodescheint ziemlich ausgezeichnet zu sein. Aber trotzdem.)

Wie ebenfalls in den Kommentaren erwähnt, nimmt umfangreiches Zeichnen in TeX ebenfalls mehr Zeit in Anspruch. tikzund 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.

verwandte Informationen