复制子目录中 LaTeX 文档调用的所有图形文件,而不管其原始路径如何?

复制子目录中 LaTeX 文档调用的所有图形文件,而不管其原始路径如何?

我想要一种简单(自动)的方法将所有由 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它将把变量中列出的扩展名所使用的所有文件复制EXTENSIONSimg目录中,而不管原始图像文件位于何处,在当前目录还是其他地方。

相关内容