C# のソースコードを TeX に挿入する
はてなのタグのつけ方ってこれでいいのかな?
提出する卒論に、作成した C# のプログラムのソースコードを貼り付けろ的な命令が出たので(7000 行以上あるのに…)、
今まで簡易的に使ってきた moreverb パッケージの verbatimtabinput から listings パッケージを使うことにしました。
listings は最初から入っているわけではないのと、日本語を表示するために jlisting というスタイルファイルが必要なので、
両方とも入れました。
listings はここからダウンロードできます。
CTAN: directory: /tex-archive/macros/latex/contrib/listings
ここにあるファイルを全てダウンロードして、TeX をインストールしたディレクトリに入れます。
コマンドプロンプトかなんかでこのディレクトリに移動して make します。あ、Cygwin かなんか入れて make 使える環境が必要です。
/share/texmf-local/tex/latex/listings
…/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 に全ての設定が書いてあります。そんなに難しくない英語で書かれてるので超参考になります)。
タイプライターを書体として設定しています。basicstyle で全体のフォントを設定し、numberstyle で左側に表示される行番号の書体を設定しています。いっぱいいっぱいつめるためにサイズが \tiny ですw
\lstset{%
basicstyle = {\tiny\ttfamily},%
frame = {trBL},%
columns = [l]{fullflexible},%
numbers = left,%
numberstyle = {\tiny\ttfamily},%
lineskip = -0.5ex%
}
numbers を消すと行番号が表示されません。
ファイルを読み込むときは以下のようにします。
tabsize にはタブの文字数を、caption にはソースコードのキャプション(タイトル)を、label にはソースに設定するラベルを指定します。
\lstinputlisting[tabsize=4, caption={caption name}, label={label name}]{filepath}
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 パッケージが紹介されていてとても面白いです。)