私は論文/学位論文を書いていますが、それは進行中の作業であるため、ドキュメントに挿入する図の実際の画像が常に用意されているわけではありませんが、さまざまな理由から、代わりにダミーの図を自動的に配置したいと考えています。含まれているグラフィックファイルが存在しない場合。たとえば、次のようなことができます\includegraphics[width=8cm]{\chapdir/figures/fluxcapacitor}
(where\chapdir
は「現在の」チャプター ディレクトリのマクロです。たとえば\def\chapdir{./ch_timetravel}
、存在しない場合は代わりに./ch_timetravel/figures/fluxcapacitor.jpg
挿入されます。./commands/dummy.jpg
私は自分のマクロを (単純に?) マクロ ( ) を持つように構成しました。マクロ ( ) は、マクロ ( \figFileOrDummy
) に提供された引数が存在するかどうかをチェックして、含める適切なファイルを決定し、 を呼び出すことができます\includegraphics[properties]{\figFileOrDummy{\chapdir/figures/fluxcapacitor}}
。これをどのように呼び出そうとするかに応じてさまざまなエラーが発生することを除いて、「優れたLaTeXプログラミング」に関する限り、根本的に欠陥のある方法で問題に取り組んでいることを示唆しているようです。
ファイルが存在するかどうかを確認するマクロを次に示します (そして、ファイル名またはダミー ファイル名のいずれかを「返します」)。
\newcommand{\figFileOrDummy}[1]{%
% Figure base name (no extension) to be used if the file exists
\def\fodname{#1}%
\def\dummyfig{commands/dummy}%
% Check if output is PS (.EPS) or PDF (.JPG/.PDF/.PNG/...) figures
\ifx\pdfoutput\undefined%
% EPS figures only
\IfFileExists{\fodname.eps}{}{\def\fodname{\dummyfig}}%
\else%
% Check existence of various extensions: PDF, TIF, TIFF, JPG, JPEG, PNG, MPS
\def\figtest{0}% flag below compared to this value
\IfFileExists{\fodname.pdf}{\def\figfilenamefound{1}}{\def\figfilenamefound{0}}%
\IfFileExists{\fodname.jpg}{\def\figfilenamefound{1}}{}%
\IfFileExists{\fodname.png}{\def\figfilenamefound{1}}{}%
% and so on...
% If no files found matching the filename (flag is 0) then use the dummy figure
\ifx\figfilenamefound\figtest%
\def\fodname{\dummyfig}%
\fi%
\fi%
% 'return' the filename
\fodname%
}%
または、同様の問題があると思われる、より単純なバージョンを次に示します。
\newcommand{\figFileOrDummy}[1]{%
\def\dummyfig{commands/dummy}%
\dummyfig%
}
\def
コマンドは、定義しようとしているマクロの展開後に処理されるように見えるため、最終的に\def {commands/dummy}...
( の後のスペースに注意してください\def
) になり、明らかに不平を言います。
\includegraphics
また、マクロのリテラルの内容を最初に解決/展開するのではなく、ファイル名として扱うように見えるため、ファイル'\def {commands/dummy}... .png'
が存在しないと不平を言います..
完全なマクロではなく値だけを保持する\edef\figfilename{\figFileOrDummy{\chapdir/figures/fluxcapacitor}}
ように強制しようとするようなことも
試みましたが、マクロでしようとしている変数が未定義であるというエラーが表示されます。\figfilename
Undefined control sequence
\def
\figFileOrDummy
だから私の質問はどちらかです
- このマクロを適切に展開するにはどうすればよいですか?; また
- これがマクロの構造化の間違った方法である場合、ダミー/実数値を自動的に挿入できるようにするには、実際にそのようなマクロをどのように構造化すればよいですか?; また
- 私が見落としていたこの種のことをうまく処理するパッケージはありますか?
ここでかなり基本的な何かが欠けているように感じます...