创建主 LaTeX 文档使用的所有外部文件的列表?

创建主 LaTeX 文档使用的所有外部文件的列表?

有没有一种简单的方法可以创建一个 LaTeX 文档(及其“子文档”)使用的所有外部文件(完整路径)的列表

  • \input
  • \include
  • \includegraphics

(我可能忘记了一些输入源?)

答案1

快照包为您提供了 LaTeX 文档的外部依赖项列表。使用它的方式如下:

\RequirePackage{snapshot}

\documentclass命令之前(将信息写入文件.dep),或者说

\RequirePackage[log]{snapshot}

在命令之前\documentclass(将信息写入文件.log)。

答案2

mkjobtexmf使用每个 TeX 发行版中提供的perl 脚本并像这样运行它

mkjobtexmf --jobname <latex file> --cmd-tex pdflatex 

它创建一个显示所有使用过的文件的文件<latex file>.fls,例如名为 latex6 的测试文件:

PWD /home/voss/Documents
INPUT /usr/local/texlive/2011/texmf.cnf
INPUT /usr/local/texlive/2011/texmf/web2c/texmf.cnf
INPUT /usr/local/texlive/2011/texmf-var/web2c/pdftex/latex.fmt
INPUT latex6.tex
OUTPUT latex6.log
INPUT /usr/local/texlive/2011/texmf-dist/tex/latex/base/article.cls
INPUT /usr/local/texlive/2011/texmf-dist/tex/latex/base/article.cls
INPUT /usr/local/texlive/2011/texmf-dist/tex/latex/base/size10.clo
INPUT /usr/local/texlive/2011/texmf-dist/tex/latex/base/size10.clo
[ ... ]

答案3

这是@Gonzales 答案的修改版本,其中附加了python将图形复制到新文件夹的代码。

使用snapshot包生成文件后.dep

\RequirePackage{snapshot}
\documentclass{article} 

使用以下python代码(例如copy_figs.py)将图形复制到单独的文件夹(例如figs_used):

"""Copy figures used by document."""
import os
import shutil


DEP_FILE = 'main.dep'
TARGET_DIR = 'other_img/'
EXTENSIONS = ['pdf', 'pdf_tex', 'png']


def copy_image_files():
    with open(DEP_FILE, 'r') as f:
        for line in f:
            if '*{file}' not in line:
                continue
            value = line.split('{')[2].split('}')
            source = value[0]
            _, e = os.path.splitext(source)
            e = e.lower()[1:]
            if e not in EXTENSIONS:
                continue
            print(source)
            shutil.copy(source, TARGET_DIR)


if __name__ == '__main__':
    copy_image_files()

运行python代码:

c:\Python27\python.exe copy_figs.py

在放置 Latex 文件的文件夹中。假设原始图形在figs子文件夹中,并将 Latex 文件中使用的图形复制到figs_used子文件夹中。代码复制.png图形.pdf文件。

答案4

latexmk做得很好:

latexmk -deps main.tex

它可以打印所有内容:其他.tex文件、.bib文件、.sty文件、图形。

相关内容