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出力されます。 教科書によってはソースコードが図になっているものもあるので、 そちらに合わせたい場合は、このようにするとできます。

参考サイト

qiita.com

対応言語一覧

LaTeX の Listing 対応言語一覧