如何从 LaTeX 文档中选择要编译的部分?

如何从 LaTeX 文档中选择要编译的部分?

是否可以编译一份 LaTeX 文档但只包含一个部分及其相关的表格和图表?

我有两个案例可以证明这一点:

  1. 我想向同事提供论文的方法部分。

  2. 我想要一个文档的多个版本,其中包含主文档各部分的不同组合。

我知道我可以将每个部分放在单独的文件中,然后拥有单独的主文件 - 很可能我会对情况 2 这样做,因为它是最终文档结构不可或缺的一部分,但至少对于情况 1,我希望有一种方法可以只编译一个部分。

谢谢!

答案1

我会看看子文件第 1 部分的 LaTeX 包。它提供了很大的灵活性,并且省去了在构建文件之前更改文件的麻烦。

本质上,您可以拥有主文档 Paper.tex:

% Preamble
\usepackage{subfiles}
% More preamble
\begin{document}
  \subfile{Methods}
  \subfile{AnotherSection}
  \subfile{OtherStuff}
\end{document}

然后每个其他部分看起来有点像这样:

\documentclass[Paper.tex]{subfiles}
\begin{document}
  \section{Methods}
\end{document}

然后,您可以在各个部分(例如 Methods.tex)上运行 LaTeX,它将使用主根文档中的序言进行编译。

为了解决第 2 部分,我会做一些类似下面的事情,我刚刚用上面的例子进行了测试。

\documentclass[Paper.tex]{subfiles}
\begin{document}
  \subfile{Methods}
  \subfile{AnotherSection}
\end{document}

这意味着你只需要维护一个前言,并且避免了大量的文件,即使对于涉及多个子文件的每个文档版本,您都会有一个最小化的根文件。

答案2

对于问题 1:如果你不想改变文档的结构并将每个部分放入单独的文件中,则可以使用

\usepackage{comment}
\excludecomment{toexclude} % you can name the comment as you wish

在序言中,并用

\begin{toexclude}
...
\end{toexclude}

如果你想再次编译所有内容,只需替换

\excludecomment{toexclude}

经过

\includecomment{toexclude}

答案3

对于情况 1:

创建一个文件methods.tex并将你的方法放入其中:

\section{Methods}

The methods employed here...

将文件的剩余部分放入文件中rest.tex

在主文档的文本位置放入

\include{methods}
\include{rest}

最后,在你的序言中

\includeonly{methods}

这个解决方案的缺点是方法部分将开始一个新页面。

您也可以使用 PDF 实用程序从 PDF 中删除非方法页面。或者您可以将整篇论文发送给他们,并告诉他们只需阅读方法部分。:-)

相关内容