fmt y comandos de línea de comando (con, por ejemplo, mylatexformat)

fmt y comandos de línea de comando (con, por ejemplo, mylatexformat)

Quiero acelerar el proceso de compilación, así que dividí el documento principal en dos archivos:

MWE

preámbulo.tex

\documentclass{article}

\csname endofdump\endcsname

principal.tex

\begin{document}

\ifdefined\test
    :)
\else
    :/
\fi

\end{document}

Esto funciona:

#!/bin/bash

pdftex -ini -jobname="preamble" "&pdflatex" mylatexformat.ltx "preamble.tex"
pdflatex -fmt preamble "main.tex"

Problema

Sin embargo, quiero pasar datos desde la línea de comando a tex para obtener una carita feliz.

#!/bin/bash
pdftex -ini -jobname="preamble" "&pdflatex" mylatexformat.ltx "preamble.tex"
pdflatex -fmt preamble "\def\test{1}\input{main}"

y me topo con un modo interactivo donde no sé qué hacer. Utilizando el-sin-parse-primera-líneatampoco ayuda.

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!

Respuesta1

No soy un experto en esto, pero supongo que mylatexformatno escanea los archivos de entrada de forma recursiva, por lo que nunca encuentra el literal \begin{document}in main.tex, necesario para marcar el final del formato de acuerdo con sudocumentación. Al menos para tu MWE, funciona si emites \endofdump(la alternativa para marcar el final del formato, para evitar dos \begin{document}) en la línea de comando:

pdflatex -fmt preamble "\endofdump\def\test{1}\input{main}"

información relacionada