將 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目錄中,無論原始影像檔案位於目前目錄還是其他位置。

相關內容