
Esta não é realmente uma questão prática, mas sim acadêmica:
Eu uso o emacs para escrever meus arquivos LaTeX e para processar documentos com vários arquivos eu incluo no final de cada arquivo uma variável local %%% TeX-master: "master"
que informa ao emacs que quando eu compilar este arquivo eu realmente quero compilar o arquivo "master.tex".
Agora eu estava me perguntando se existe uma maneira de fazer isso no LaTeX, algo como \setmaster{master}
ou \includedin{master}
simplesmente colocar no início do arquivo e dizer diretamente ao compilador que ele deve começar a olhar o outro arquivo primeiro.
Responder1
Isto é possível, mas com limitações importantes. Vamos supor que temos master.tex
e secondary.tex
.
Em primeiro lugar, como deve \setmaster
ser definido? É bem fácil:
\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
Masondedeve \setmaster
ser definido? Seja no próprio documento ou em arquivo de formato personalizado. No primeiro caso, coloque a definição entre \ifdefined\setmaster\else
e \fi
, porque não queremos lê-la quando secondary.tex
for inserida.
Primeira limitação.Os caminhos serão relativos à localização do arquivo secundário, portanto, todos os arquivos devem estar no mesmo diretório: você não pode ter \input{../master}
e depois master.tex
chamar \input{subdir/secondary}
.
Segunda limitação.TeX define o nome do trabalho igual ao primeiro arquivo de entrada, se não for substituído na linha de comando pela opção -jobname
. Portanto, sem a cooperação do editor/front-end, você não obterá master.log
or master.pdf
, mas secondary.log
. Este é um comportamento interno do TeX e não pode ser modificado: assim que o TeX é iniciado e abre um arquivo para entrada (neste caso secondary.tex
), ele abre o .log
arquivo com o nome derivado dele ou da -jobname
linha de comando opção.
Portanto, tal abordagem não é melhor do que indicar qual é o arquivo principal usando os recursos do editor ou do front-end. Muitos deles possuem esse recurso, portanto este deve ser o método preferido.
Os arara
métodos descritos nas respostas aarara: criando uma regra para compilar o arquivo principal de um arquivo de capítulomerecem mais do que uma olhada, porque são independentes de qualquer editor/front-end que esteja sendo usado.