OpenNH

日常のひとこま(自分用のメモとかあれこれ)

LaTexにソースコードを貼る方法

はじめに

LaTexで論文を書く中でプレグラムのソースコードを載せる必要があったので、そのメモです。ソースコードをそのままLaTexに張り付けちゃうと記号とかインデントとかぐちゃぐちゃになってしまうので、コピペで簡単にきれいに貼れる方法を調べました。


ソースコードを貼る方法

まず、LaTexソース内でパッケージ定義をしている部分(\documentclassから\begin{document}の間)に以下の一行を追加します。

<英語フォントのみの場合>
\usepackage{listings}

<日本語フォントを含む場合>
\usepackage{listings, jlisting}

<色を使う場合は以下も追加>
\usepackage{color}

私の場合はlisting.styはデフォで入っていましたが,jlisting.styはなかったので,ダウンロードして追加しました.texliveを利用している場合は、スタイルファイル(.sty)が格納されるディレクトリは以下のところです。

/usr/local/texlive/2017/texmf-dist/tex/latex/listings/

そして、格納したカレントディレクトリ上でGitBashなどで以下のコマンドを打てば使えるようになります。

$ mktexlsr

f:id:FounderLeis:20181212013524p:plain
 
次にLaTexソースの本文中に以下のようにプログラムのソースコードを貼り付けます。これでLatexソースコードを貼れたはずです。

\begin{lstlisting}[basicstyle=\ttfamily\footnotesize, frame=single]
(ここにプログラムソース)
\end{lstlisting}



スタイルファイルのダウンロード

listingsのスタイルファイル >> こちら
jlistingのスタイルファイル >> こちら
 
 

個人的な初期設定

% ソースコードを挿入するための設定
\usepackage{jlisting}
\usepackage{listings}
\usepackage{color}
\definecolor{OliveGreen}{rgb}{0.0,0.6,0.0}
\definecolor{Magenta}{cmyk}{0, 1, 0, 0}
\definecolor{colFunc}{rgb}{1,0.07,0.54}
\definecolor{CadetBlue}{cmyk}{0.62,0.57,0.23,0}
\definecolor{Brown}{cmyk}{0,0.81,1,0.60}
\definecolor{colID}{rgb}{0.63,0.44,0}
\lstset{
language={Matlab},                   %言語の指定
basicstyle={\ttfamily\small},        %書体の指定
backgroundcolor={\color[gray]{.95}}, %背景色と透過度
keywordstyle={\color{blue}},         %キーワード(int, ifなど)の書体指定
commentstyle={\color{OliveGreen}},   %注釈の書体 
stringstyle=\color{Magenta},         %文字列
frame=single,                        %枠縁(leftline,topline,bottomline,lines,trBL,shadowbox, single)
numbers=left,                        %行番号表示
numberstyle={\ttfamily\small},       %行番号の書体指定
breaklines=true,                     %折り返し(自動改行)
breakindent = 10pt,                  %自動改行後のインデント量(デフォルトでは20[pt])	
tabsize=2,                           %タブの大きさ
captionpos=t                         %キャプションの場所(t,b : "tb"ならば上下両方に記載)
}
\renewcommand{\lstlistingname}{Code} % キャプション名の指定

 

MATLABのコード(.m)をきれいに貼る方法

こちらの方のサイトが参考になります。私の環境ではエラーが出てしまったので使わなかったですが…
http://castanophilia.hatenadiary.com/entry/2014/11/24/091708castanophilia.hatenadiary.com