我有一個 TeX 文檔,其中嵌入了一個文件夾中的大量數字,而fig
該文件夾中還充滿了大量其他數字。
我想移動文件及其圖形,但我不想移動整個fig
資料夾,而只想移動文件中嵌入的圖形。
例如,是否有一個套件(或任何其他方式)允許我列印出文件嵌入的所有圖形的檔案名稱?就像是:
fig/figurename1.eps
fig/figurename2.eps
...
etc
然後,我可以複製貼上該列表並cp
在純文字檔案中添加一些 ,並通過在 shell 中運行該文件來自動將這些文件複製到我想要的位置:
$ cp fig/figurename1.eps wherever/fig/
$ cp fig/figurename2.eps wherever/fig/
...
etc
當然,這只是一個想法,如果有人有「在 shell 檔案中列出檔案並複製貼上」的替代方案,我很樂意傾聽 =)
答案1
您可以修改\includegraphcs
巨集以新增至清單並在文件末尾列印清單。下面的 MWE 產生以下輸出:
Figures included were
images/figA.jpg
images/figB.png
筆記:
在這種情況下
\let
也可以工作(根據egreg的評論將 Latex 中的所有影像調整為百分比寬度),但我已經習慣使用\LetLtxMacro
fromletltxmacro
包裹對於具有可選參數的巨集。詳細的描述\LetLtxMacro
可以在這個關於a的問題中找到閉平方根符號。使用該
[demo]
選項是為了在圖形所在的位置放置一個黑框以用於演示目的,在您的實際使用中(當您實際有可用的圖形時),您需要刪除此選項。如果您願意,可以在循環中使用
\immediate\write18
和執行shell 命令,並在排版結束時有一個目錄,其中包含包含的圖像。不需要進一步處理。cp
\foreach
代碼:
\documentclass{article}
\usepackage[demo]{graphicx}% Remove [demo] option in real usage.
\usepackage{letltxmacro}
\usepackage{pgffor}
%% https://tex.stackexchange.com/questions/14393/how-keep-a-running-list-of-strings-and-then-process-them-one-at-a-time
\newcommand\FigList{}
\newcommand\AddFigToList[1]{\edef\FigList{\FigList#1,}}
\LetLtxMacro{\OldIncludegraphics}{\includegraphics}
\renewcommand{\includegraphics}[2][]{%
\AddFigToList{#2}%
\OldIncludegraphics[#1]{#2}%
}
\newcommand*{\ShowListOfFigures}{%
\typeout{Figures included were}%
\foreach \x in \FigList {%
%\par\x% <-- uncomment if you want the list in the PDF as well
\typeout{ \x}
}%
}
\AtEndDocument{\ShowListOfFigures}
\begin{document}
\includegraphics{images/figA.jpg}
\includegraphics{images/figB.png}
\end{document}
答案2
pdflatex
-recorder
提供寫入文件的標誌.fls
。那裡標記的所有內容INPUT
都是在處理過程中開啟的文件。
latexmk
使用標誌-deps
or-deps-out=FILENAME
來顯示禮儀,在最後一種情況下還將它們儲存在make
格式化的FILENAME
.
答案3
在 Linux 上,類似這樣的事情就可以完成,而無需修改原始碼:
strace -fe open make 2>&1 1>/dev/null | grep plots | sed 's/.*\"\(.*\)\".*/\1/' > plots.list
在哪裡 :
make
是您用來建構輸出的命令(可能是 的某種變體pdflatex file.tex
)。strace
顯示系統調用。使用我們提供的選項,我們僅保留「開啟」系統呼叫(-e
選項),以便取得插入的數字(以及現在的其他開啟的檔案)。這些-f
選項用於顯示子程序的系統調用,重定向用於僅保留 strace 輸出。grep plots
選擇路徑中包含公共字串的行(在本例中為「繪圖」)。sed
選擇引號內的內容。最終重定向將結果轉儲到檔案中。
您可能會以這種方式獲得重複的檔案名,但根據您的需求可能已經足夠了。
答案4
CTAN上有一個perl
腳本,依賴文本這一切以及更多。它處理各種內部和外部依賴關係,並可以產生Makefile
,perl
或每行 1 格式的資訊。
>texdepend
Find LaTex dependencies, Version: 0.96, Michael Friendly ([email protected])
Usage: C:\batchfiles\texdepend.pl <options> texfile[.tex]
where <options> may be abbreviated to unique truncations, and are:
-help print this measly help
-expand expand package/include file to full path names
-format = make print dependencies in Makefile format
perl print in the form of perl assignments (LatexMk)
1 print one per line (with # separators)
-ignore = list list of file types to be ignored in .log [default: fd]
-out = filename send output to filename
-print = Any one or more of i (includes) p (packages)
f (figs) b (bibfiles) s (styles) d (all dependencies)
-styles = list list of file types for from .log [default: sty]
-verbose