先を越されてしまった
grffile の一解法が示されたので別解法を...
** 処理環境依存**の開放です。
python の処理系を有するか unix 系の OS であればという条件付きです。
また TeXLive 20xx に付属している DTL dviware package を利用してい
ますのでご注意ください。
*対策と最初の問題点*
空白を含むファイル名をダブルクォートでくくりますが
latex は通るけど dvipdfmx はうまく処理してくれない。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
%\includegraphics{M M SPACE.eps} %こちらエラーになる
\includegraphics{"M M SPACE.eps"}%ダブルクォートでくくる
\end{document}
上記をコンパイルして dvipdfmx で処理すると以下のように
警告メッセージが表示され、画像ファイルが pdf には反映
されません。
dvipdfmx:warning: No filename specified for PSfile special.
dvipdfmx:warning: Interpreting special command PSfile (ps:) failed.
dvipdfmx:warning: >> at page="1" position="(148.712, 480.088)" (in PDF)
dvipdfmx:warning: >> xxx "PSfile=""include SPACE in filename.eps"" ..snip.."
dvipdfmx:warning: >> Reading special command stopped around >>""include SPACE in filename.eps"" ..snip.. <<
*原因*
ファイル名に余分な「" ダブルクォート」があるようで処理ができない
ようです。
*解法を求めて*
インターネットを調べると以下の URL に一つの解決作がありました。
http://wiki.lyx.org/LaTeX/FilesWithSpecialChars
ここに以下のスクリプトの URL があるので私は shell スクリプト
の方をダウンロードしました。
A python script, clean_dvi.py (12 April 2005, 3.5kB).
http://wiki.lyx.org/uploads/LaTeX/FilesWithSpecialChars/clean_dvi.py
A shell script, clean_dvi.sh (12 April 2005, 2.7kB).
http://wiki.lyx.org/uploads/LaTeX/FilesWithSpecialChars/clean_dvi.sh
これをみると以下のように DTL dviware package を使い
dvi ファイルを可視化させ余分な「" ダブルクォート」を
sed で取り除いたあと、再度 dvi ファイル化するようです。
dv2dt "$INFILE" | sed "$SEDCOMMANDS" | dt2dv -si "$OUTFILE"
なので
sh clean_dvi.sh 変換前.dvi 変換後.dvi
とするとファイル名に関して補正できますので
dvipdfmx 変換後.dvi
とすれば、変換後.pdf に目的の画像ファイルが取り込まれます。
*別解 perl や ruby でできないか ...
sed で処理する部分を見ると「sed の高度なテクニックコマンド」
を使ってるけど以下のことをやってるだけだった。
dv2dt 変換前.dvi | sed '/PSfile=/s/""/"/g' | dt2dv 変換後.dvi
なので perl や ruby でもすぐに対応できそうですね。