我想要一种简单(自动)的方法将所有由 latex 调用的图像文件复制到单个目录中。这里解决了类似的问题:创建主 LaTeX 文档使用的所有外部文件的列表? 我喜欢 @imriss 提出的解决方案,但它要求所有文件都与 tex 文件位于同一目录中才能工作。我的一些图像文件位于其他地方,并通过 TEXINPUTS 访问,但无法通过此技术找到,因为快照生成的 dep 文件仅包含文件的名称,而不包含其路径。
答案1
构建@muzimuzhi Z 的评论和@imriss 对问题的回答创建主 LaTeX 文档使用的所有外部文件的列表?img
,这里是根据文件扩展名的选择,将 latex 文档使用的所有外部文件复制到目录的方法。
从 Latex 文件file.tex
类型开始
pdflatex -recover file
这将创建file.fls
。创建一个文件,例如copy_fig_fls.py
,其中包含以下 Python 代码:
"""Copy figures used by document."""
import os
import shutil
FLS_FILE = 'file.fls'
TARGET_DIR = 'img/'
EXTENSIONS = ['pdf', 'png', 'jpg']
def copy_image_files():
with open(FLS_FILE, 'r') as f:
for line in f:
if 'INPUT' not in line:
continue
source = line.split(' ')[1].rstrip()
_, e = os.path.splitext(source)
e = e.lower()[1:]
if e in EXTENSIONS:
shutil.copy(source, TARGET_DIR)
if __name__ == '__main__':
copy_image_files()
通过输入来运行它
python3 copy_fig_fls.py
file.tex
它将把变量中列出的扩展名所使用的所有文件复制EXTENSIONS
到img
目录中,而不管原始图像文件位于何处,在当前目录还是其他地方。