在 Windows 7 中,如何从单个 TeX 的两个独立组件编译两个 PDF?

在 Windows 7 中,如何从单个 TeX 的两个独立组件编译两个 PDF?

我是 LaTeX 的新手,在使用朋友给我的这个很棒的模板时遇到了一些麻烦。

该模板有 3 个 TeX 文件,并声明如果我编译主 TeX,我应该得到 3 个输出:

  1. 一个包含doc1的PDF;
  2. 一个由doc2组成的PDF;
  3. 一个由doc1+doc2组成的PDF;

无论我要求编译哪一个,我使用 pdfLaTeX 获得的是完整文档 (doc1+doc2)。

该怎么办?

其它一切都正常。

“自述”文本如下:

使用说明

要编译 pdf,请在项目目录中的命令行中输入:

构建

这将生成 document1.pdf 和 document2.pdf,分别对应于 2016 年征集的 B 部分的两个部分。它还将生成包含这两个部分的 IF-2016-Part_B.pdf。

作者(文中未指明身份)也向我指出了这里的一个线索:

咨询这个 StackOverflow 答案,剧本正是以此为基础。

我多次查阅了该主题,但我无法理解 Windows 中的这种情况。似乎有些解决方案指出 Linux 有,但我不确定。抱歉,如果我需要太多信息,但我找不到任何地方。我找到了分离 Windows 的 pdf 输出的方法,但它们都非常复杂,而且似乎毫无意义,因为模板本来应该可以解决这个问题。

我正在使用 pdfLaTeX + bibtex + pdfLaTeX 进行编译(显然是从 TeXStudio 的菜单中)。

答案1

确实,@touhami 是正确的。目的是在命令行上使用构建脚本(现在已被 makefile 取代)当您想单独生成文档时。我建议使用 makefile,因为在 ide(例如,TexStudio)中单独编译文档可能非常麻烦。

解释

您可能知道,玛丽居里 IF 提案的要求是生成一个连贯的文档,但将其拆分为两个 pdf。此模板中使用的技巧是将提案编译成两个单独的文档,并在它们之间进行正确的交叉引用,方法是使用带有 的标志pdflatex

--jobname=document1 "\includeonly{doc1}\input{IF-2016-Part_B}"

这会告诉pdflatex编译器仅包含 的内容doc1.tex(对于 也类似doc2.tex)。如果完整文档 的IF-2016-Part_B.tex编译时间比任何单个文档都晚,则编译器使用的辅助文件 ( IF-2016-Part_b.aux) 将包含整个合并文档中的所有引用。因此,如果您在单独编译任何文档之前进行完整编译,则可以保留和IF-2016-Part_b.pdf之间的正确页码和交叉引用。document1.pdfdocument2.pdf

在 IDE 中编译

makefile 会替您进行这些重复的编译。在 IDE 中,您可能需要手动添加和删除标志--jobname...,首先在不使用标志的情况下进行编译(以便交叉引用正确),然后在使用标志的情况下进行编译(以生成单独的文档)。

在 TexShop 中,这是在引擎首选项的子菜单。您可以将--jobname...标志添加到命令末尾pdflatex。(可能,TexStudio 非常相似?)

建议的工作流程

如果使用 IDE,我建议的工作流程是在编写提案时在 IDE 中正常编译,并偶尔生成单独的文档以确保它们能够正确生成(使用 makefile 或通过pdflatex在 IDE 首选项中手动添加和删除编译引擎的标志)。

相关内容