fmt und Kommandozeilenbefehle (mit zB mylatexformat)

fmt und Kommandozeilenbefehle (mit zB mylatexformat)

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, mylatexformatdass 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}"

verwandte Informationen