工作好きな情報系の雑記

[LaTeX]\includegraphicsをカスタマイズする

LaTeXでは、画像を挿入するときは\includegraphicsというものを使う。
論文で使うときは、大抵中央揃えでlabelとcaptionをつけて使うので、記述自体は以下のようになる。

でも、これにはいくつか不満点がある。

  • これをいちいち書くのはめんどくさい。
  • コピペするにしても、画像が大量にあるといちいちコピペすんのがめんどくさい。
  • 画像一枚貼るだけでこれだけの記述が必要になるので、TeXファイルが見づらくなる。
  • 画像のリサイズが一括でできない。

ということで、\renewcommandを使って\includegraphicsをカスタマイズすることにした。

画像のサイズ、配置、画像ファイル名、キャプション、ラベル名を指定すれば上と同じものを生成してくれるようになればいい。
画像のサイズに関しては、ある程度同じ大きさの画像を扱うので、デフォルトの値を設定しておき、場合によっては画像ごとにサイズを指定する、という方針をとることにした。


とりあえずリサイズができるか確かめようと最初に作ってみたコマンドがこちら。

1行目では、\includegraphicsをrenewすることを示し、renewしたコマンドでは引数を2つとり、1つめの引数のデフォルトは0.2であることを示している。
2行目で実際のコマンドの中身を定義していて、元々の\includegraphicsを呼び出している。1番目の引数を使ってscaleオプションを設定し、2番目の引数で画像ファイル名を渡している。

しかし、このコマンドは残念ながら動かなった。

ということで、次に作ったのがこちら。
このStackExchangeの質問への回答にある方法を使ったらうまくいくようになった。
\LetLtxMacroというコマンドを使って、元々の\includegraphicsに対するマクロを作っておく方法らしい。

いやー不思議。実質的には初めに作ったコマンドと同じはずなんだけどなぁ。
プログラムでいえば、「a = a + 1」ができないから、「b = a」でaをbに保存しておいて「a = b + 1」とする、みたいなものなのかなぁ。
いや分からん。
実際さっきのサイト内でも、LetLtxMacro使わなくても大丈夫的なコメントがある。
相性的なのがあるのかな。とにかく僕の環境では動かなかった。

何はともあれリサイズができるようになったので、最終的なコマンドは以下のようになった。

実際使うときは以下のような感じ。

これで使いやすくなったし見やすくなったし、全部の画像を一括でリサイズできるようになったぞ。

I am auto-generating multiple tex files using pandoc (one tex file for each of my chapters). Pandoc generates this tex code for each image.\begin{figure}\centering\includegraphics{images/
Resize all images in Latex to a percentage width - TeX - LaTeX Stack Exchange
モバイルバージョンを終了