Betrachten Sie das folgende MWE - fast das gleiche wie inFehler mit [griechisch] Babel und letzte Seite, \Frontmatter?, aber nicht genau - wo ich ein großes Dokument habe, für das ich "vorkompilierte Header" generieren wollte (TikZs Externalisierung und Mylatex(Beachten Sie, dass \jobname derselbe sein sollte)) und dachte, ich würde mylatexformat
dafür verwenden (ultraschnelles PDFLatex mit Vorkompilierung).
Die Struktur sieht ungefähr so aus:
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}
Wenn ich dies mit kompiliere pdflatex test.tex
, läuft die Kompilierung einwandfrei.
Ich "kompiliere" die test.fmt
Datei folgendermaßen:
$ 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
...
... was gut zu funktionieren scheint.
.pdf
Wenn ich jedoch versuche, die Datei mit der vorkompilierten Datei wie folgt zu erstellen .fmt
(ich füge den Kommentar nicht %&test
als erste Zeile der test.tex
Datei ein, sondern gebe ihn in der Befehlszeile an):
$ 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}
?
... aus irgendeinem Grund,sogarWenn die vorkompilierte .fmt
Datei geladen wird, TeXTrotzdembeginnt mit dem Lesen von setup/_preamble.tex
- und meldet somit einen Fehler von „zwei \documentclass
Befehlen“?
Ich kenne die Lösung bereits: Sie besteht darin, die Prozentzeichen im Kommentar um das \input
in zu entfernen 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
...
... und dann funktioniert das Ausführen des Builds mit der vorkompilierten .fmt
Datei ( pdflatex "&test" test.tex
) einwandfrei.
Meine Frage lautet: Warum sollten Kommentare in der Präambel überhaupt Einfluss auf den Analyseprozess von haben mylatexformat
?