我编写了一个 LaTeX 文档,在我的计算机上编译得很好,但现在我想将源代码提供给其他人。有没有一种快速的方法可以列出所有用于编译的软件包?
答案1
是的。在文档前言的某处添加\listfiles
。输出应发布在您的.log
文件中。以下是来自测试文档的示例,该文档的前言中包含 2 个包,并使用 TeX Live 2009 进行编译:
\documentclass{article}
\listfiles
\usepackage{array}% http://ctan.org/pkg/array
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\begin{document}
test
\end{document}
该.log
文件现在包括
*File List*
article.cls 2007/10/19 v1.4h Standard LaTeX document class
size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
array.sty 2008/09/09 v2.4c Tabular extension package (FMi)
hyperref.sty 2010/05/04 v6.81a Hypertext links for LaTeX
ltxcmds.sty 2010/04/26 v1.7 LaTeX kernel commands for general use (HO)
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
kvsetkeys.sty 2010/03/01 v1.9 Key value parser (HO)
infwarerr.sty 2010/04/08 v1.3 Providing info/warning/message (HO)
etexcmds.sty 2010/01/28 v1.3 Prefix for e-TeX command names (HO)
pdfescape.sty 2010/03/01 v1.9 Provides hex, PDF name and string conversions
(HO)
pdftexcmds.sty 2010/04/01 v0.9 Utility functions of pdfTeX for LuaTeX (HO)
ifluatex.sty 2010/03/01 v1.3 Provides the ifluatex switch (HO)
ifpdf.sty 2010/01/28 v2.1 Provides the ifpdf switch (HO)
ifvtex.sty 2010/03/01 v1.5 Switches for detecting VTeX and its modes (HO)
ifxetex.sty 2009/01/23 v0.5 Provides ifxetex conditional
hycolor.sty 2009/12/12 v1.6 Color options of hyperref/bookmark (HO)
xcolor-patch.sty 2009/12/12 xcolor patch
letltxmacro.sty 2008/06/24 v1.3 Let assignment for LaTeX macros (HO)
pd1enc.def 2010/05/04 v6.81a Hyperref: PDFDocEncoding definition (HO)
intcalc.sty 2007/09/27 v1.1 Expandable integer calculations (HO)
hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
kvoptions.sty 2010/02/22 v3.7 Keyval support for LaTeX options (HO)
url.sty 2006/04/12 ver 3.3 Verb mode for urls, etc.
bitset.sty 2007/09/28 v1.0 Data type bit set (HO)
bigintcalc.sty 2007/11/11 v1.1 Expandable big integer calculations (HO)
atbegshi.sty 2010/03/25 v1.12 At begin shipout hook (HO)
hpdftex.def 2010/05/04 v6.81a Hyperref driver for pdfTeX
atveryend.sty 2010/03/24 v1.5 Hooks at very end of document (HO)
rerunfilecheck.sty 2010/03/16 v1.6 Rerun checks for auxiliary files (HO)
uniquecounter.sty 2009/12/18 v1.1 Provides unlimited unique counter (HO)
nameref.sty 2010/04/30 v2.40 Cross-referencing by name of section
refcount.sty 2008/08/11 v3.1 Data extraction from references (HO)
gettitlestring.sty 2009/12/18 v1.3 Cleanup title references (HO)
***********
答案2
TL;DR:使用快照包。
CTAN 标签档案列出针对此类或类似用例制作的工具。例如,恩贝达尔可用于将所有必需的文件嵌入到生成的 PDF 中。请参阅有没有办法将 LaTeX 源代码嵌入 PDF 文件?进行讨论。
下面,我评估mkjobtexmf
和snapshot
。我假设主 tex 文件是main.tex
。
mkjobtexmf
准备:无需特殊修改main.tex
执行:mkjobtexmf --jobname main
结果:目录main.mjt
。它包含一个子目录texmf
,而子目录又包含一个目录tex
,可以在其中找到包。
tree
显示以下输出:
└───texmf
├───fonts
│ └───type1
│ └───public
│ └───amsfonts
│ └───cm
├───miktex
│ └───data
│ └───le
│ └───pdftex
├───pdftex
│ └───config
└───tex
├───generic
│ ├───atbegshi
│ ├───bigintcalc
│ ├───bitset
│ ├───etexcmds
│ ├───gettitlestring
│ ├───iftex
│ ├───infwarerr
│ ├───intcalc
│ ├───kvdefinekeys
│ ├───kvsetkeys
│ ├───ltxcmds
│ ├───pdfescape
│ ├───pdftexcmds
│ └───uniquecounter
└───latex
├───atveryend
├───auxhook
├───base
├───graphics
├───hycolor
├───hyperref
├───kvoptions
├───l3backend
├───letltxmacro
├───refcount
├───rerunfilecheck
├───tools
└───url
快照
准备:\RequirePackage{snapshot}
在第一行添加main.tex
执行:pdflatex main
输出:main.dep
\RequireVersions{
*{application}{pdfTeX} {0000/00/00 v1.40.23}
*{format} {LaTeX2e} {2021-11-15 v2.e}
*{package}{snapshot} {2020/06/17 v2.14}
*{class} {article} {2021/10/04 v1.4n}
*{file} {size10.clo} {2021/10/04 v1.4n}
*{package}{array} {2021/10/04 v2.5f}
*{package}{hyperref} {2021-06-07 v7.00m}
*{package}{ltxcmds} {2020-05-10 v1.25}
*{package}{iftex} {2020/03/06 v1.0d}
*{package}{pdftexcmds} {2020-06-27 v0.33}
*{package}{infwarerr} {2019/12/03 v1.5}
*{package}{keyval} {2014/10/28 v1.15}
*{package}{kvsetkeys} {2019/12/15 v1.18}
*{package}{kvdefinekeys}{2019-12-19 v1.6}
*{package}{pdfescape} {2019/12/09 v1.15}
*{package}{hycolor} {2020-01-27 v1.10}
*{package}{letltxmacro} {2019/12/03 v1.6}
*{package}{auxhook} {2019-12-17 v1.6}
*{package}{kvoptions} {2020-10-07 v3.14}
*{file} {pd1enc.def} {2021-06-07 v7.00m}
*{file} {hyperref-langpatches.def}{2021-06-07 v7.00m}
*{package}{intcalc} {2019/12/15 v1.3}
*{package}{etexcmds} {2019/12/15 v1.7}
*{file} {puenc.def} {2021-06-07 v7.00m}
*{package}{url} {2013/09/16 v3.4}
*{package}{bitset} {2019/12/09 v1.3}
*{package}{bigintcalc} {2019/12/15 v1.5}
*{package}{atbegshi-ltx}{2021/01/10 v1.0c}
*{file} {hpdftex.def} {2021-06-07 v7.00m}
*{package}{atveryend-ltx}{2020/08/19 v1.0a}
*{package}{rerunfilecheck}{2019/12/05 v1.9}
*{package}{uniquecounter}{2019/12/15 v1.4}
*{file} {l3backend-pdftex.def}{2021-10-18 v3}
*{-------}{Document-specific files:}{----}
*{package}{nameref} {2021-04-02 v2.47}
*{package}{refcount} {2019/12/15 v3.6}
*{package}{gettitlestring}{2019/12/15 v1.6}
*{file} {main.out} {0000/00/00 v0.0}
*{file} {main.out} {0000/00/00 v0.0}
}
texdeps
这是 1999 年推出的工具,适用于 MWE。对于实际文档,我在运行 5 分钟后中止了它。
准备工作:无需特殊修改main.tex
。需要安装 perl
执行:perl "c:\Users\kopppor\Downloads\texdeps.pl" main.tex
结果:
! kpse couldn't find \[email protected] (in C:/MiKTeX/tex/latex/hyperref/hyperref.sty)
main.tex
C:/MiKTeX/tex/latex/tools/array.sty
C:/MiKTeX/tex/latex/hyperref/hyperref.sty
C:/MiKTeX/tex/latex/hyperref/pd1enc.def
C:/MiKTeX/tex/latex/hyperref/puenc.def
C:/MiKTeX/tex/latex/hyperref/puenc-greekbasic.def
C:/MiKTeX/tex/latex/hyperref/psdextra.def
C:/MiKTeX/tex/latex/hyperref/hyperref-langpatches.def
C:/MiKTeX/tex/latex/hyperref/puvnenc.def
C:/MiKTeX/tex/latex/hyperref/puvnenc.def
C:/MiKTeX/tex/latex/hyperref/puarenc.def
C:/MiKTeX/tex/latex/hyperref/puenc-greekbasic.def
总结与建议
texdeps
找不到 MWE 的所有依赖项。因此,我完全不推荐它。对于 MWE 来说,它的“输出”mkjobtexmf
很好处理。只需打开文件资源管理器并浏览即可。
尽管必须修改其主 tex 文档,但我还是喜欢它的输出snapshot
,因为它列出了所有外部文件并对其进行了分类。