texでソースコードを載せる
こんにちは。 今日はtexの話です〜!
ソフトウェアなどに関する論文を書く人はおそらくソースコードを載せる機会もあるのではないか、と思います。今回は僕がソースコードを載せる機会があり、その時に使ったパッケージの紹介です。 「tex ソースコード」などで検索するとたくさん引っかかるとは思うのですが、 自分用のメモということでここに残しておきます。
texでソースコードを載せる
texでソースコードを載せるには、「jlistings」というパッケージを導入します。 ダウンロードはこちらから→https://osdn.net/projects/mytexpert/downloads/26068/jlisting.sty.bz2/
今回僕の実行環境はMacです。 ダウンロードできたら、
/usr/local/texlive/2017/texmf-dist/tex/latex/listing/
へ移動し、先ほどダウンロードしたjlisting.sty
をこのディレクトリ内に置きます。
しかし、このままでは使えないので、
sudo mktexlsr
を実行します。 これで自分のtex環境下で使えるようになるはずです。
実際使うときは、プリアンブルで次のように定義します。
\usepackage{listings, jlisting} \lstset{ language={Ruby}, basicstyle={\small}, identifierstyle={\small}, commentstyle={\small\ttfamily \color[rgb]{0,0.5,0}}, keywordstyle={\small\bfseries \color[rgb]{1,0,0}}, ndkeywordstyle={\small}, stringstyle={\small\ttfamily \color[rgb]{0,0,1}}, frame={tb}, breaklines=true, columns=[l]{fullflexible}, numbers=left, xrightmargin=0zw, xleftmargin=3zw, numberstyle={\scriptsize}, stepnumber=1, numbersep=1zw, morecomment=[l]{//} }
言語の設定などは、lstset内のlanguageを変えます。
僕が今回対象としている言語がRubyだったので、
language={Ruby}
としています。
あとは、本文中にソースコードを貼りたいところに
\lstinputlisting[caption=hogehoge, label=hoge]{file_name}
参照するファイルは、同じディレクトリ内に入れておくことで参照できます。 ファイル分割するまでもないような分量の場合は、 そのまま入力することもできます。
\begin{lstlisting}[caption=hogehoge,label=hoge] def hoge puts 'hogehoge' end \end{lstlisting}
参照する際は、いつも通り\ref{hoge}
とすればOKです。
ここはおまけ
ソースコードを貼る時に、自動的に設定されるキャプションが
Listing 1.1: hogehoge
みたいな感じになるんですが、
これを図にしたい、と思った時は次のようにします。
\begin{figure}[h] \begin{lstlisting} def hoge puts 'hogehoge' end \end{lstlisting} \caption{hogehoge} \label{hoge} \end{figure}
これで、 図1.1: hogehoge出力されます。 教科書によってはソースコードが図になっているものもあるので、 そちらに合わせたい場合は、このようにするとできます。
参考サイト
対応言語一覧