
Это не совсем практический вопрос, а скорее академический:
Я использую 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: создание правила компиляции основного файла из файла главыдостойны большего, чем просто взгляд, поскольку они не зависят от используемого редактора/интерфейса.