LaTeX 支援本機多檔案管理嗎?

LaTeX 支援本機多檔案管理嗎?

這其實不是一個實際問題,而更像是一個學術問題:

我使用 emacs 編寫 LaTeX 文件,為了處理多文件文檔,我在每個文件末尾包含一個局部變量%%% TeX-master: "master",告訴 emacs 當我編譯此文件時,我實際上想要編譯文件“master.tex”。

現在我只是想知道是否有一種方法可以在 LaTeX 中做到這一點,\setmaster{master}或者\includedin{master}可以簡單地放在檔案的開頭,它直接告訴編譯器它應該首先開始查看另一個檔案。

答案1

這是可能的,但有重要的限制。假設我們有master.texsecondary.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.logmaster.pdf,但是secondary.log。這是 TeX 的內建行為,無法修改:一旦 TeX 啟動並開啟檔案輸入(在本例中secondary.tex),它就會使用.log源自該檔案或-jobname命令列的名稱開啟該檔案選項。

因此,這種方法並不比使用編輯器或前端的功能來聲明主文件更好。他們中的許多人都具有此功能,因此這應該是首選方法。

arara答案中概述的方法arara:制定從章節文件編譯主文件的規則值得一看,因為它們獨立於正在使用的任何編輯器/前端。

相關內容