
Dies ist keine wirklich praktische, sondern eher eine akademische Frage:
Ich verwende Emacs zum Schreiben meiner LaTeX-Dateien und um Dokumente mit mehreren Dateien zu verarbeiten, füge ich am Ende jeder Datei eine lokale Variable ein, %%% TeX-master: "master"
die Emacs mitteilt, dass ich beim Kompilieren dieser Datei eigentlich die Datei „master.tex“ kompilieren möchte.
Jetzt habe ich mich nur gefragt, ob es eine Möglichkeit gibt, dies in LaTeX so zu tun \setmaster{master}
, oder \includedin{master}
ob man es einfach an den Anfang der Datei setzen kann und es dem Compiler direkt mitteilt, dass er sich zuerst die andere Datei ansehen soll.
Antwort1
Dies ist möglich, allerdings mit wichtigen Einschränkungen. Nehmen wir an, wir haben master.tex
und secondary.tex
.
Zunächst einmal: Wie soll es \setmaster
definiert werden? Das ist ganz einfach:
\makeatletter
\newcommand{\setmaster}[1]{%
% Make all later \setmaster commands to be no-ops
\global\let\setmaster\@gobble
% Start reading the master file
\input{#1}%
% When it's finished, don't read from this file any more
\endinput}
\makeatother
AberWosoll \setmaster
definiert werden? Entweder im Dokument selbst oder in einer personalisierten Formatdatei. Im ersten Fall sollte die Definition zwischen \ifdefined\setmaster\else
und eingeschlossen werden \fi
, da wir sie bei der Eingabe nicht lesen möchten secondary.tex
.
Erste Einschränkung.Pfade sind relativ zum Speicherort der sekundären Datei, daher müssen sich alle Dateien im selben Verzeichnis befinden: Sie können nicht haben \input{../master}
und dann master.tex
aufrufen \input{subdir/secondary}
.
Zweite Einschränkung.TeX setzt den Jobnamen gleich der ersten Eingabedatei, wenn er nicht von der Kommandozeile mit der Option überschrieben wird -jobname
. Ohne die Zusammenarbeit mit dem Editor/Frontend erhalten Sie also nicht master.log
oder master.pdf
, sondern secondary.log
. Dies ist ein eingebautes Verhalten von TeX und kann nicht geändert werden: Sobald TeX gestartet wird und eine Datei zur Eingabe öffnet (in diesem Fall secondary.tex
), öffnet es die Datei mit dem daraus oder aus der Kommandozeilenoption .log
abgeleiteten Namen .-jobname
Daher ist ein solcher Ansatz nicht besser, als die Hauptdatei mithilfe der Funktionen des Editors oder Frontends anzugeben. Viele von ihnen verfügen über diese Funktion, daher sollte dies die bevorzugte Methode sein.
Die arara
in den Antworten aufarara: Erstellen einer Regel zum Kompilieren der Hauptdatei aus einer Kapiteldateisind mehr als einen Blick wert, da sie unabhängig vom jeweils eingesetzten Editor/Frontend sind.