LaTeX + dvipdfmx で graphicx パッケージを用いて(EPS 形式以外の)画像を読み込むには,画像のサイズ(バウンディングボックス)を取得するために extractbb という外部コマンドを実行する必要があります. 画像ファイルごとに都度 extractbb を起動するのは面倒なので,現在では「LaTeX の実行中に内部で自動で extractbb を呼び出す」方式が推奨されています.
最近の TeX 環境(TeX Live 2015 以降,MacTeX-2015 以降)*1では extractbb の自動実行は既定で許可されていますが,古い環境では許可を与える設定をユーザが事前に行う必要があります.*2ここではその手順を解説します.
※2010 年以降の TeX 環境を対象にします.
※外部コマンドとの連携処理および自動実行許可の設定に関する詳細については,「外部コマンドの実行」を参照してください.
extractbb の自動実行は必須ではありません. 手動での実行を面倒に思わない,あるいは別の手段で自動化が実現できているのであれば,それでかまいません.
ただし,以下に挙げる方法は間違いであることに注意してください.
また,「LaTeX 起動時のコマンドラインに -shell-escape をつける」という方法は有効ですが,これだと LaTeX 文書中で指定された任意のプログラムの実行が許可されてしまうため,この方法を常用するのはセキュリティの観点から推奨されません.
dvipdfmx での画像を挿入がうまくいかなくて自動実行許可を試そうとしている場合は,まずは「失敗の原因がその点にあるのか」を調べるため,以下の手順を実行しましょう.
\documentclass[dvipdfmx]{article} \usepackage{graphicx} \begin{document} \includegraphics[width=5cm]{someimg.png} \end{document}
latex testこの時に,
LaTeX Error: File `someimg.xbb' not found. ...または
LaTeX Error: Cannot run pipe command. ...のエラーが発生することを確認します.
latex -shell-escape testこの時にエラーが出ずに処理が終了することを確認します.
dvipdfmx test
もしこの手順がどこかで失敗するようなら,extractbb の自動実行以外の箇所で問題が起きていますので,まずはその問題を解決してください.
TeX Live 2015 以降と MacTeX-2015 以降 では extractbb の自動実行が既定で許可されているので,何もする必要がありません.
TeX Live 2014 以前と MacTeX-2014 以前では,以下の手順を行います. TeX Live は tlmgr が使える本家の TeX Live が対象です.
kpsewhich -var-value=shell_escape_commands例えば次のような結果が出力されます.
bibtex,kpsewhich,makeindex,mpost,repstopdf
tlmgr conf texmf shell_escape_commands extractbb,bibtex,...ここで「exractbb,」以降の部分は先ほど調べた shell_escape_commands の値を書き写します.
tlmgr conf texmf shell_escape_commands `kpsewhich -var-value shell_escape_commands`
※この手順に従った場合,設定内容は “.../texlive/20XX/texmf.cnf” に書き込まれます. texmf.cnf ファイルも参照してください.
Unix 系で管理者権限のないアカウントをお使いの場合は,以下の記事を参照してください.