![在 Windows 7 中,如何从单个 TeX 的两个独立组件编译两个 PDF?](https://linux22.com/image/340061/%E5%9C%A8%20Windows%207%20%E4%B8%AD%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BB%8E%E5%8D%95%E4%B8%AA%20TeX%20%E7%9A%84%E4%B8%A4%E4%B8%AA%E7%8B%AC%E7%AB%8B%E7%BB%84%E4%BB%B6%E7%BC%96%E8%AF%91%E4%B8%A4%E4%B8%AA%20PDF%EF%BC%9F.png)
我是 LaTeX 的新手,在使用朋友给我的这个很棒的模板时遇到了一些麻烦。
该模板有 3 个 TeX 文件,并声明如果我编译主 TeX,我应该得到 3 个输出:
- 一个包含doc1的PDF;
- 一个由doc2组成的PDF;
- 一个由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.pdf
document2.pdf
在 IDE 中编译
makefile 会替您进行这些重复的编译。在 IDE 中,您可能需要手动添加和删除标志--jobname...
,首先在不使用标志的情况下进行编译(以便交叉引用正确),然后在使用标志的情况下进行编译(以生成单独的文档)。
在 TexShop 中,这是在引擎首选项的子菜单。您可以将--jobname...
标志添加到命令末尾pdflatex
。(可能,TexStudio 非常相似?)
建议的工作流程
如果使用 IDE,我建议的工作流程是在编写提案时在 IDE 中正常编译,并偶尔生成单独的文档以确保它们能够正确生成(使用 makefile 或通过pdflatex
在 IDE 首选项中手动添加和删除编译引擎的标志)。