o LaTeX suporta gerenciamento nativo de vários arquivos?

o LaTeX suporta gerenciamento nativo de vários arquivos?

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.texe secondary.tex.

Em primeiro lugar, como deve \setmasterser 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 \setmasterser definido? Seja no próprio documento ou em arquivo de formato personalizado. No primeiro caso, coloque a definição entre \ifdefined\setmaster\elsee \fi, porque não queremos lê-la quando secondary.texfor 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.texchamar \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.logor 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 .logarquivo com o nome derivado dele ou da -jobnamelinha 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 araramé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.

informação relacionada