有没有一种简单的方法可以创建一个 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
文件、图形。