我有一个大型文档,目前由多种.tex
文件组成。
看起来mainfile.tex
像这样:
%lots of total formatting stuff
\include{Body/chapter1}
\include{Body/chapter2}
%\include{Body/chapter3}
%\include{Body/chapter4}
%etc
然而,这意味着每个组件(即 chapter1、chapter2 等)都不是有效代码。
我希望能够查看单个文件并在查看时进行编译(例如chapter1.tex
),在 TeXmaker 中。如果编译成功,那就没问题了mainfile.tex
据我了解,我需要将所有内容合并到一个文件中,或者执行以下任一操作:
- 告诉 TeXmaker 让我在某处设置“即使不查看也总是编译此文件”选项 - 这样 F1 等功能就可以正常工作,并且总是引用
mainfile.tex
或者
- 将我所有的格式化初始化等移动到一个文件中,我可以将其包含在每个单独组件的前面(并包含某种头球后卫在这?我不知道这个概念在 LaTeX 中是否可行,甚至是否有意义)因此,无论包含它们的顺序如何,相同的整体格式始终包含在文档的开头。
如果可能的话,我强烈希望选择第二种选择,但我不确定如何做到这一点。
答案1
将主文档放在当前编辑窗口中。现在,选择Options > Define Current Document as "Master Document"
。这应该可以满足我的要求。现在您将在左侧窗格中看到文档的结构,并且无论您正在编辑哪个子文件,运行编译都会编译您的主文档。
答案2
对于来这里寻找解决方案的人TexWorks
,请将其添加到子文档的最顶部:
% !TeX root = path/main_file.tex
然后 TexWork 将排版您的主文档而不是当前打开的文件。
答案3
您可以只处理主文件,但添加
\includeonly{chapter2}
那么将只处理第 2 章。与将其作为完全独立的文档进行处理不同,aux
将读取其他章节的文件,因此该章节仍将编号为 2,并且即使在此运行中省略了其他章节,也可以交叉引用其他章节。
答案4
另一种更通用的方法是使用子文件包。在您的文件中,mainfile.tex
您放入了与添加包时提到的相同的内容subfiles
:
\usepackage{subfiles}
然后,在每个页面中chapterXX.tex
添加如下内容:
\documentclass[mainfile]{subfiles}
\begin{document}
file content here ....
\end{document}
这将使您能够独立于主文件执行该文件(即,您不必打开主文件(或项目)来运行该文件)。
(顺便说一句,对于 TexnicCenter 用户,可以通过菜单获得上面提到的与 Texmaker 类似的选项Project
。设置项目后,点击F7
构建整个项目,或Ctrl+F7
构建当前文件。)