TeXでプログラムのソースを印刷する

CTANに登録されている listings (http://www.atscire.de/index.php?nav=products/listings ) 環境を使うことで、プログラムをTeXで印刷可能。配布パッケージ(listings-1.3.zip)の中にあるpdfのマニュアルが充実している(CTANにあるlistingのマニュアル http://www.ctan.org/tex-archive/macros/latex/contrib/listings/listings-1.3.pdf )。
インストールは、listings-1.3.zipをダウンロードして、展開。展開した中のinsファイルに大して、

% platex listings-1.3.ins

でstyleや、cfgファイルが出来上がるので、TeXのパスの通ったところに入れるか、作っているTeXファイルと同じディレクトリにコピーする。
また、listingsでは、英単語と日本語の位置を勝手に入れ替えてくれることがあるので、http://tex.dante.jp/typo/index.php?Listings からjlisting.styも、同じディレクトリにコピーする。1.3でも、現在は問題なく動いている。

利用は、

\usepackage{listings,jlisting}

でパッケージを読み込み、

\lstset{
language=Java, % javaを利用
columns=[l]{fullflexible}, % 文字をつめる
tabsize={2}, % タブの空白数の変更
texcl={true}, % コメントの中でTeXのコマンドを許可。$a_{ij}$などはTeXで変換される。
...%いろいろオプションを書いておく
}

でソースの言語、フォント、枠の囲み方、マージンなどを設定。

\begin{lstlisting}[caption=図のキャプションを書く,label=参照用のラベルを書く]
ソースを貼付ける
\end{lstlistings}

で、varbatim環境同様に利用できる。
さらに、

lstinputlisting[caption=キャプション,label=ラベル]{filename}

で、ファイルから印刷するプログラムを読み込むことができる。
これで、プログラムをイチイチTeXのソースに貼付ける手間が減る。

  • (2005/11/22追記) texcl=true にすると、コメントで、日本語と英語混合で使えなくなるようだ。