[LaTeX]\includegraphicsをカスタマイズする
LaTeXでは、画像を挿入するときは\includegraphicsというものを使う。
論文で使うときは、大抵中央揃えでlabelとcaptionをつけて使うので、記述自体は以下のようになる。
1 2 3 4 5 6 7 | \begin{figure}[tbp] \begin{center} \includegraphics[scale=0.2]{img.png} \end{center} \caption{Example Image} \label{fig:exp_img} \end{figure} |
でも、これにはいくつか不満点がある。
- これをいちいち書くのはめんどくさい。
- コピペするにしても、画像が大量にあるといちいちコピペすんのがめんどくさい。
- 画像一枚貼るだけでこれだけの記述が必要になるので、TeXファイルが見づらくなる。
- 画像のリサイズが一括でできない。
ということで、\renewcommandを使って\includegraphicsをカスタマイズすることにした。
画像のサイズ、配置、画像ファイル名、キャプション、ラベル名を指定すれば上と同じものを生成してくれるようになればいい。
画像のサイズに関しては、ある程度同じ大きさの画像を扱うので、デフォルトの値を設定しておき、場合によっては画像ごとにサイズを指定する、という方針をとることにした。
とりあえずリサイズができるか確かめようと最初に作ってみたコマンドがこちら。
1 2 3 | \renewcommand{\includegraphics}[2][0.2]{ \includegraphics[scale=#1]{#2} } |
1行目では、\includegraphicsをrenewすることを示し、renewしたコマンドでは引数を2つとり、1つめの引数のデフォルトは0.2であることを示している。
2行目で実際のコマンドの中身を定義していて、元々の\includegraphicsを呼び出している。1番目の引数を使ってscaleオプションを設定し、2番目の引数で画像ファイル名を渡している。
しかし、このコマンドは残念ながら動かなった。
ということで、次に作ったのがこちら。
このStackExchangeの質問への回答にある方法を使ったらうまくいくようになった。
\LetLtxMacroというコマンドを使って、元々の\includegraphicsに対するマクロを作っておく方法らしい。
1 2 3 | \usepackage{letltxmacro} \LetLtxMacro{\OldIncludegraphics}{\includegraphics} \renewcommand{\includegraphics}[2][0.2]{\OldIncludegraphics[scale=#1]{#2}} |
いやー不思議。実質的には初めに作ったコマンドと同じはずなんだけどなぁ。
プログラムでいえば、「a = a + 1」ができないから、「b = a」でaをbに保存しておいて「a = b + 1」とする、みたいなものなのかなぁ。
いや分からん。
実際さっきのサイト内でも、LetLtxMacro使わなくても大丈夫的なコメントがある。
相性的なのがあるのかな。とにかく僕の環境では動かなかった。
何はともあれリサイズができるようになったので、最終的なコマンドは以下のようになった。
1 2 3 4 5 6 7 8 9 10 | \LetLtxMacro{\OldIncludegraphics}{\includegraphics} \renewcommand{\includegraphics}[5][0.2]{ \begin{figure}[#2] \begin{center} \OldIncludegraphics[scale=#1]{#3} \end{center} \caption{#4} \label{fig:#5} \end{figure} } |
実際使うときは以下のような感じ。
1 2 3 4 | サイズはデフォルトでいいとき \includegraphics{tbp}{img.png}{Example Image}{exp_img} サイズを調節するとき \includegraphics[0.6]{tbp}{img.png}{Example Image}{exp_img} |
これで使いやすくなったし見やすくなったし、全部の画像を一括でリサイズできるようになったぞ。
この記事へのコメントはこちら