Ich möchte den Kompilierungsprozess beschleunigen, daher habe ich das Hauptdokument in zwei Dateien aufgeteilt:
MWE
Präambel.tex
\documentclass{article}
\csname endofdump\endcsname
main.tex
\begin{document}
\ifdefined\test
:)
\else
:/
\fi
\end{document}
Das funktioniert:
#!/bin/bash
pdftex -ini -jobname="preamble" "&pdflatex" mylatexformat.ltx "preamble.tex"
pdflatex -fmt preamble "main.tex"
Problem
Ich möchte jedoch Daten von der Kommandozeile an Tex übergeben, um ein fröhliches Smilie zu erhalten,
#!/bin/bash
pdftex -ini -jobname="preamble" "&pdflatex" mylatexformat.ltx "preamble.tex"
pdflatex -fmt preamble "\def\test{1}\input{main}"
und ich stolpere über einen interaktiven Modus, bei dem ich nicht weiß, was ich tun soll. Mit dem-keine-parse-erste-zeilehilft auch nichts.
texput.log
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian) (preloaded format=preamble 2014.12.16) 16 DEC 2014 14:17
entering extended mode
restricted \write18 enabled.
**\def\test{1}\input{main}
==============================================================================
JOB NAME : "texput"
CUSTOMISED FORMAT: "preamble"
PRELOADED FILES:
article.cls 2007/10/19 v1.4h Standard LaTeX document class
size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
==============================================================================
*
! Emergency stop.
<*> \def\test{1}\input{main}
End of file on the terminal!
Here is how much of TeX's memory you used:
3 strings out of 494701
113 string characters out of 6174765
48268 words of memory out of 5000000
3561 multiletter control sequences out of 15000+600000
7639 words of font info for 26 fonts, out of 8000000 for 9000
14 hyphenation exceptions out of 8191
8i,0n,22p,42b,30s stack positions out of 5000i,500n,10000p,200000b,80000s
! ==> Fatal error occurred, no output PDF file produced!
Antwort1
Ich bin kein Experte auf diesem Gebiet, aber ich vermute, mylatexformat
dass die Eingabedateien nicht rekursiv durchsucht werden und daher nie auf das Literal \begin{document}
in gestoßen wird main.tex
, das notwendig ist, um das Ende des Formats entsprechend seinerDokumentation. Zumindest für Ihr MWE funktioniert es, wenn Sie \endofdump
(die Alternative zum Markieren des Formatendes, um zwei zu vermeiden \begin{document}
) in der Kommandozeile eingeben:
pdflatex -fmt preamble "\endofdump\def\test{1}\input{main}"