fig
膨大な量の他の図がいっぱい入ったフォルダーから大量の図を埋め込んだ TeX ドキュメントがあります。
ドキュメントをその中の図と一緒に移動したいのですが、フォルダー全体ではなくfig
、ドキュメントに埋め込まれている図だけを移動したいのです。
たとえば、ドキュメントに埋め込まれたすべての図のファイル名を印刷できるパッケージ (または他の方法) はありますか? たとえば、次のようなものです:
fig/figurename1.eps
fig/figurename2.eps
...
etc
次に、そのリストをコピーして貼り付け、cp
プレーンテキスト ファイルにいくつかの 's を追加し、シェルでファイルを実行して、それらのファイルのコピーを目的の場所に自動化します。
$ cp fig/figurename1.eps wherever/fig/
$ cp fig/figurename2.eps wherever/fig/
...
etc
もちろんこれは単なるアイデアです。誰かが「シェル ファイルでのファイル リストとコピー アンド ペースト」に代わる方法をお持ちであれば、喜んでお聞きします =)
答え1
\includegraphcs
マクロを変更してリストに追加し、そのリストをドキュメントの最後に印刷することができます。以下の MWE では、次の出力が生成されます。
Figures included were
images/figA.jpg
images/figB.png
ノート:
この場合
\let
もうまくいくでしょう(egregのコメントによるとLatex内のすべての画像のサイズをパーセンテージ幅に変更する\LetLtxMacro
)ですが、私はそのletltxmacro
包みオプションパラメータを持つマクロの場合。の詳細な説明は、\LetLtxMacro
この質問で確認できます。閉じた平方根記号。この
[demo]
オプションは、デモの目的で図が配置される場所にブラック ボックスを配置するために使用されます。実際の使用では (実際に図が利用できる場合)、このオプションを削除する必要があります。必要に応じて、ループ内でシェル コマンドを使用し
\immediate\write18
て実行し、タイプセットの最後に含まれた画像を含むディレクトリを作成することもできます。それ以上の処理は必要ありません。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
またはを使用して、適切性を示し、最後のケースでは、それらをフォーマットされ-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
パス内の共通文字列 (この場合は「plots」) を含む行を選択します。sed
引用符内の内容を選択します。最後のリダイレクトにより、結果がファイルにダンプされます。
この方法ではファイル名が重複する可能性がありますが、目的によってはこれで十分かもしれません。
答え4
perl
CTANにはスクリプトがあります。テックス依存これらすべてとそれ以上のことを実行します。あらゆる種類の内部および外部の依存関係を処理し、 、または 1 行に 1 つの形式で情報を生成できMakefile
ますperl
。
>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