Considere o seguinte MWE - quase o mesmo que emFalha com babel [grego] e lastpage, \frontmatter?, mas não exatamente - onde tenho um documento grande, para o qual queria gerar "cabeçalhos pré-compilados" (Exteriorização e mylatex do TikZ(observe que \jobname deve ser o mesmo)) e pensei em usar mylatexformat
para isso (pdflatex ultrarrápido com pré-compilação).
A estrutura é mais ou menos assim:
setup/_preamble.tex
\documentclass[10pt]{book}
\usepackage{cmap}% (causes pdflatex: dangling objects discarded, no output file produced. with -ini/mylatexformat)
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
% \usepackage[english]{babel} % ok
\usepackage[greek,english]{babel} % ok w/ hack below
\usepackage{amsmath,amssymb}
\usepackage{csquotes}
\usepackage[backend=biber]{biblatex}
\usepackage{tikz}
\usepackage{siunitx}
\usepackage{lastpage}
\makeatletter
\let\oldlastpage@putl@bel\lastpage@putl@bel
\renewcommand*\lastpage@putl@bel{%
\bgroup
\let\textlatin\@firstofone % make \textlatin a no-op
\oldlastpage@putl@bel%
\egroup
}
\makeatother
test.tex
%% This is the file `test.tex'
%
\input{setup/_preamble.tex}%
%
% \csname endofdump\endcsname% may \def to \relax; https://tex.stackexchange.com/questions/57398
\ifcsname endofdump\endcsname%
% it is called with precompiled header; stop here:
\typeout{HEEEREEEE: endofdump defined!}%
\endofdump% shouldn't be here?
\typeout{HEEEREEEE: POST endofdump defined!}%
\else%
\fi%
\usepackage{lipsum}
\begin{document}
\frontmatter
\clearpage
\section{Something}
\lipsum[1-5]
\end{document}
Se eu compilar isso com pdflatex test.tex
, ele compilará bem.
Eu "compilo" o test.fmt
arquivo assim:
$ pdflatex -ini -jobname="test" "&pdflatex" mylatexformat.ltx "test.tex"
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (INITEX)
...
HEEEREEEE: endofdump defined!
<<ot1.cmap>><<oml.cmap>><<oms.cmap>><<omx.cmap>> ...
(\end occurred when \ifcsname on line 6 was incomplete)
Beginning to dump on file test.fmt
(preloaded format=test 2015.2.18)
...
20 words of pdfTeX memory
...
... o que parece funcionar bem.
Mas quando tento construir o .pdf
arquivo usando o .fmt
arquivo pré-compilado como este (não incluo o %&test
comentário como a primeira linha do test.tex
arquivo, mas o especifico na linha de comando):
$ pdflatex --file-line-error --synctex=1 "&test" test.tex
This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2014) (preloaded format=pdflatex)
...
==============================================================================
JOB NAME : "test"
CUSTOMISED FORMAT: "test"
PRELOADED FILES:
setup/_preamble.tex
...
t1cmtt.fd 2014/09/29 v2.5h Standard LaTeX font definitions
t1cmss.fd 2014/09/29 v2.5h Standard LaTeX font definitions
==============================================================================
(mylatexformat)Info: start reading document "test"
(mylatexformat) on input line 13. (\endofdump)
==============================================================================
(./setup/_preamble.tex
./setup/_preamble.tex:1: LaTeX Error: Two \documentclass or \documentstyle commands.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.1 \documentclass[10pt]{
book}
?
... por algum motivo,atése o .fmt
arquivo pré-compilado for carregado, TeXaindacomeça a ler setup/_preamble.tex
- e, portanto, relata um erro de "dois \documentclass
comandos"?
Eu já sei a solução - é remover os caracteres de porcentagem de comentários ao redor do \input
in test.tex
:
%% This is the file `test.tex'
\input{setup/_preamble.tex}
% \csname endofdump\endcsname% may \def to \relax; https://tex.stackexchange.com/questions/57398
...
... e então executar a compilação com o .fmt
arquivo pré-compilado ( pdflatex "&test" test.tex
) funciona perfeitamente.
Minha pergunta é: por que os comentários no preâmbulo deveriam ter influência no processo de análise de mylatexformat
?