我正在撰写一篇文章,将在另一台机器(其他人的机器)上编译。我不想依赖其他人来安装缺少的软件包。有没有办法将它们包含在我要发送给他的文件夹中?
答案1
我之前回答过类似的问题(见这里),但也许你只想给他们一个文件,而不是包含所有文件的整个档案。如果是这样,这是一种可能性,假设这个“projectfile.tex”:
% projectfile.tex
\RequirePackage{snapshot}% <-- this *must* be used!
\documentclass{article}
\usepackage{parskip}% <-- pretend this is a file your partner doesn't have
\begin{document}
Some words.
\end{document}
现在,您在 上运行latex
(或pdflatex
等)projectfile.tex
。创建的文件包括projectfile.dep
(通过包)。现在,我们希望结合和snapshot
的功能,通过包创建一个具有的文件arlatex
bundledoc
filecontents
全部成功处理所需的文件projecttile.tex
(即从article.cls
到parskip.sty
)。如果包含许多软件包,此文件将变得非常大,这就是为什么将其输出到存档文件可能更有意义。但是,也许大小不是问题……
接下来我们需要一个.cfg
for bundledoc
。对于 Windows,变量会略有不同,但这是我使用的(我们称之为arlatex+bundledoc.cfg
):
# config file 'arlatex+bundledoc.cfg'
bundle: (arlatex --document=$BDBASE.tex $BDINPUTS > $BDBASE-all.tex)
sink: > /dev/null 2>&1
find: kpsewhich -progname=latex $BDINPUTS
现在我们运行bundledoc
命令(--verbose
这可能是一个好主意,至少在你刚开始时):
bundledoc --config=arlatex+bundledoc.cfg --verbose projectfile.dep
这应该会创建一个名为 的文件。通过在其上projectfile-all.tex
运行(等)并将结果输出与 的输出进行 -ing 来测试它。latex
diff
projectfile.tex
正如我所说,这个过程可能会创建怪物文件,因此输出到某种压缩文件(参见其他答案)可能更有意义,或者简单地用来arlatex
包含具体的可移植性所需的文件。
编辑:
换句话说,基本程序包括以下步骤:
- 按照通常方式创建文件(例如通过
pdflatex
); - 当您准备使用时,在文件顶部或附近
bundledoc
添加该行(必须位于该行上方);\RequirePackage{snapshot}
.tex
\documentclass
.tex
再次编译main函数,创建该.dep
文件;- 确保您有一个可行的配置(
.cfg
)文件bundledoc
(最简单的方法是将其保存在工作目录中); bundledoc
使用文件.cfg
上的文件运行.dep
如果一切顺利,并且您使用与本例中类似的文件名,那么您最终会得到一个名为 的文件-all.tex
。