找出使用了哪些包

找出使用了哪些包

我编写了一个 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)
 ***********

你可以看到正在加载仅有的 arrayhyperref(比如说),实际上也加载了大量其他包。

答案2

TL;DR:使用快照包

CTAN 标签档案列出针对此类或类似用例制作的工具。例如,恩贝达尔可用于将所有必需的文件嵌入到生成的 PDF 中。请参阅有没有办法将 LaTeX 源代码嵌入 PDF 文件?进行讨论。

下面,我评估mkjobtexmfsnapshot。我假设主 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,因为它列出了所有外部文件并对其进行了分类。

相关内容