C# のソースコードを TeX に挿入する

はてなのタグのつけ方ってこれでいいのかな?

提出する卒論に、作成した C# のプログラムのソースコードを貼り付けろ的な命令が出たので(7000 行以上あるのに…)、
今まで簡易的に使ってきた moreverb パッケージの verbatimtabinput から listings パッケージを使うことにしました。
listings は最初から入っているわけではないのと、日本語を表示するために jlisting というスタイルファイルが必要なので、
両方とも入れました。

listings はここからダウンロードできます。
CTAN: directory: /tex-archive/macros/latex/contrib/listings

ここにあるファイルを全てダウンロードして、TeX をインストールしたディレクトリに入れます。


/share/texmf-local/tex/latex/listings
コマンドプロンプトかなんかでこのディレクトリに移動して make します。あ、Cygwin かなんか入れて make 使える環境が必要です。

…/share/texmf-local/tex/latex/listings> make

日本語を表示するための jlisting をダウンロードします。こちらから。
Listings - MyTeXpert

jlisting.sty.bz2 を展開して出てくる jlisting.sty を、先ほどの listings と同じディレクトリに入れます。
最後に mktexlsr を忘れずに実行します。こいつで TeX に新しく追加したファイルの存在を教えます。


…/share/texmf-local/tex/latex/listings> mktexlsr
こんな意見もありますので参考にしてみてください。

これで listings, jlisting のインストールは完了です。

肝心の TeX への貼り付け方です。まぁ正直ここを見てそれの焼き直しなんですが、必要な部分だけ抽出してみます。

まず Listings の設定をします。
設定項目多いので、ここではすぱっと説明無しでいきます 笑 (listings.pdf に全ての設定が書いてあります。そんなに難しくない英語で書かれてるので超参考になります)。


\lstset{%
basicstyle = {\tiny\ttfamily},%
frame = {trBL},%
columns = [l]{fullflexible},%
numbers = left,%
numberstyle = {\tiny\ttfamily},%
lineskip = -0.5ex%
}
タイプライターを書体として設定しています。basicstyle で全体のフォントを設定し、numberstyle で左側に表示される行番号の書体を設定しています。いっぱいいっぱいつめるためにサイズが \tiny ですw
numbers を消すと行番号が表示されません。

ファイルを読み込むときは以下のようにします。


\lstinputlisting[tabsize=4, caption={caption name}, label={label name}]{filepath}
tabsize にはタブの文字数を、caption にはソースコードのキャプション(タイトル)を、label にはソースに設定するラベルを指定します。
filepath は相対パスでも絶対パスでもいけます。
C# では、次のように新たにコマンドを定義すると今後使い回しがききます。

\newcommand\inputCSharpCode[3]{%
\lstinputlisting[{language=[sharp]C}, tabsize=4, caption={#2}, label{#3}]{#1}%
}
使い方。ソースコードを挿入したいところで
\inputCSharpCode{filepath}{caption}{label}

こんな感じ。
以下のページの記述を大いに参考にしました。
Listings - MyTeXpert
listings.sty: Tex パッケージ(滋賀大学経済学部の熊澤さんが作るこのサイトは、膨大な量の TeX パッケージが紹介されていてとても面白いです。)