LaTeXでLaTeXのコードを埋め込む方法

なぜ

Wordではシンタックスが聞かないので、プログラム系のものを書くときはLaTeXの方が断然有利です。 長いコードでも外部ファイルにして、コンパイル時に読み込むようにすれば長いコードの挿入でも一行で済むのでコードの前後が見れます。

コードの挿入にはListingパッケージを使うのが楽です。 日本語を扱うときにplistingsパッケージかjlistingパッケージを追加で入れる必要があるので、デフォルトで入っているmintedを使うべきという人もいますが、その場合pygmentsを導入する必要があるのでどちらもあまり手間は変わらない気がします。 デフォルトで入っていて日本語が使えないことを頭に入れておけば非常に簡単に使えます。 今回はplistingパッケージを使います。

いい感じにシンタックスをつける設定は他のサイトでだいぶ書いてくれているのでここでは書きません。気が向いたら書くかもしれませんが...

ここではタイトルにあるようにLaTeXのコードを埋め込む方法について書きます。

ファイルを読み込んで表示する分にはLaTeXのコードでも勝手にエスケープしてくれているようなので良いのですが、lstlisting環境を使って直に埋め込もうとすると、埋め込んだLaTeXコードが解釈されてしまいコンパイルができません。

このような場合にLaTeXコードをエスケープするにはtexclオプションをfalseにする必要があります。

\begin{lstlisting}[texcl=false]
\end{lstlisting}

のようにすると中のコードをそのまま表示できるようになります。 また、この中でもLaTeXコードとして解釈させたいときはescapechar=#というようにして#で囲むと#で挟まれた範囲がLaTeXとして解釈されるようになります。 LaTeX特殊文字とされている場合はバックスラッシュによるエスケープ処理をして指定します。 また、mathescape=trueやescapebegin, escapeendを設定してあげると$$での数式や指定した環境を使うことができます。 これを使うとコード中に画像や表の挿入ができます。