我如何强制创建 *.aux 文件?

我如何强制创建 *.aux 文件?

我想使用subfilesxr作为外部参考来撰写论文。我使用是subfiles因为这样我可以单独编写章节而不必编写整个论文。我的问题是,由于缺少辅助文件,不同子文件之间的交叉引用不起作用。

主文档输出中的交叉引用是正确的,但如果我编译一个子文件,那么对另一个子文件的交叉引用就只是问号。在构建日志中,它说

软件包 xr 警告:没有文件 main.aux。

我使用的编辑器是 Ubuntu 20.04 上的 Gummi,在编译选项中我选择了TeXLive 与 pdfTeX我也尝试选择TeXLive 与 XeteXTeXLive 与 LuateX, 和延迟Xmk,但都没有解决问题。

据我从评论中理解,某些东西(Gummi?).aux在编译后删除了文件。

当我从终端编译时(使用pdfatexlatexmk),所有.aux文件都会被创建,因此我也会在子文件中获得交叉引用。 (但我不想每次进行影响交叉引用的更改时都从终端进行编译。我使用 Gummi 的原因是它具有即时实时预览功能,因此我不必每三十秒按一次编译按钮。)

在哪里以及如何更改 Gummi 或任何删除文件的程序的设置以防止其执行此操作?

答案1

很少有subfiles比 LaTeX 内核的\include/\includeonly机制更好的解决方案。¹

在这种情况下,我认为放弃 肯定会对你更有利subfiles。相反,你的各个章节将删除除 和 之间的所有内容\begin{document}。主文档将为每个名为 的文件\end{document}加载 章节(请注意扩展名\include{FILE}FILE.tex必须语句中可以省略\include)。最后,在主文档的前言部分,你可以输入\includeonly{FILE}来表示只FILE应该排版。当你运行整个文档时(不带\includeonly——我通常会注释掉整\includeonly行),LaTeXaux将为每个加载的文件创建一个文件\include,并保留页码和\label定义,然后将它们全部读入。

因此你将拥有如下主文件:

\documentclass{thesis}
...
% \includeonly{analysis} % uncomment this line to only run analysis

\begin{document}
\include{frontmatter}
\include{introduction}
\include{methods}
\include{analysis}
\appendix
\include{appendices}
\end{document}

包含如下文件:

\chapter{Analysis}
Lots of text here

我建议将诸如、等内容\maketitle\tableofcontents集中到一个文件中。诸如\frontmatter\mainmatter\endmatter之类的命令\appendix应位于主文件中。

您将始终针对主文件而不是各个章节运行 LaTeX。您的 IDE 应该具有某种机制,允许您在包含的文件中或可能为整个项目指定主文件。例如,在 emacs 中,在文件中放入以下内容表示主文件是../ltxbook.tex

%%% Local Variables:
%%% mode: latex
%%% TeX-master: "../ltxbook"
%%% End:

请注意,在生成索引²时,您需要在运行 makeindex 之前运行整个文件,因为该.idx文件将不包含\index被省略的章节的条目\includeonly


  1. 我承认我可能存在选择性偏见,因为我接触到的大多数subfiles人都无法让它发挥作用,但我还没有看到令人信服的论据。我怀疑很多使用 的subfiles都是对整个\include机制不了解的用户的货物崇拜。

  2. 或者任何其他使用 makeindex 的工具,例如一些词汇表工具

相关内容