Поддерживает ли LaTeX встроенное управление несколькими файлами?

Поддерживает ли LaTeX встроенное управление несколькими файлами?

Это не совсем практический вопрос, а скорее академический:

Я использую emacs для записи файлов LaTeX, а для обработки многофайловых документов я включаю в конец каждого файла локальную переменную, %%% TeX-master: "master"которая сообщает emacs, что при компиляции этого файла я на самом деле хочу скомпилировать файл «master.tex».

Теперь мне стало интересно, есть ли способ сделать это в LaTeX, \setmaster{master}или \includedin{master}можно просто вставить в начало файла, и это напрямую скажет компилятору, что сначала нужно просмотреть другой файл.

решение1

Это возможно, но с важными ограничениями. Предположим, что у нас есть master.texи secondary.tex.

Прежде всего, как следует \setmasterопределить? Это довольно просто:

\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

Ногдедолжно \setmasterбыть определено? Либо в самом документе, либо в файле персонализированного формата. В первом случае заключите определение между \ifdefined\setmaster\elseи \fi, поскольку мы не хотим читать его при secondary.texвводе.

Первое ограничение.Пути будут указываться относительно расположения вторичного файла, поэтому все файлы должны находиться в одном каталоге: нельзя иметь \input{../master}и затем master.texвызывать \input{subdir/secondary}.

Второе ограничение.TeX устанавливает имя задания, равное первому входному файлу, если оно не переопределено из командной строки с помощью параметра -jobname. Таким образом, без сотрудничества с редактором/фронтэндом вы не получите master.logили master.pdf, но secondary.log. Это встроенное поведение TeX, и его нельзя изменить: как только TeX запускается и открывает файл для ввода (в данном случае secondary.tex), он открывает .logфайл с именем, полученным из него или из -jobnameпараметра командной строки.

Таким образом, такой подход не лучше, чем указание основного файла с использованием функций редактора или интерфейса. Многие из них имеют эту функцию, поэтому это должен быть предпочтительный метод.

Методы arara, изложенные в ответах наarara: создание правила компиляции основного файла из файла главыдостойны большего, чем просто взгляд, поскольку они не зависят от используемого редактора/интерфейса.

Связанный контент