閑話休題

ブログの効能と言わば何ぞ其れ日々の由なし事の記帳に限らんや

TeXでMATLABのコードをきれいに表示する方法(mcode.sty)

要するにこの記事は……

¥begin{lstlisting}
MATLAB CODE
¥end{lstlisting}

という形で記述.

  • ほかには
\lstinputlisting{/Users/username/documents/.../hoge.m}

でも可.

MATLABコードがきれいに表示したい

MATLABのコードを公開した論文や資料等を見ていると,恐らくTeXを使っているだろうと思われるものがほとんど.例えば,
Fabrice Collardとか,[webuser.bus.umich.edu/handleyk:title]とか.
ただ単にコードを並べるだけではなく,for や while などは色を変えて表示している.

どうやったらこういう風にできるんだろうと思って探してみると,

How to include MATLAB code in LaTeX documents | howtoTeX.com - Your LaTeX resource siteというサイトを発見.このサイト自体かなりneatなサイトで,いろいろとTeX周りの面白い情報を提供してくれるのだが,取りあえずは,MATLABコードの貼付け方をまとめてみる.

mcode.styを使用

要はmathwork社がスタイルファイルを配っているということらしい.
ここからダウンロード

プリアンブルの記述方法

TeXメインフォルダにmcode.styを移動し,MATLABコードを表示したい****.texファイルのプリアンブルに以下のように書く

\usepackage[]{mcode}

[]内部のオプションは
bw:白黒2色表示
numbered:行番号を表示
framed:外枠を付ける
final: documentclassでdraftオプションが有効になっている場合のみ使用可能.mcodeのオプションにfinalが入っていないときには,何もコードを吐き出さない.

source内での記述方法

mcodeはlistingパッケージに準拠しているので,記述する方法は,

 \begin{lstlisting} 
a = 1; 
% MATLAB comment 
b = 2;
 c = a^2 + b^2;
 \end{lstlisting} 

(ん,シンタックスハイライトの出来が悪いぞ?なんでbeginに色がつかないの?まあいいや...)こんな感じ.要するに

 ¥begin{lstlisting} 
hogehogeman
hogetarou
hogeko
hogeemon
 ¥end{lstlisting} 

という形.ただこれだと長いmatlabコードを記述した場合にはTeXソースコード冗長化してしまうので,オルタナティブなやり方としては,

\lstinputlisting{/Users/username/documents/.../hoge.m}

みたくpathを記述してやれば,一行で同じことが出来る.当然これが出来るならこれの方が良いのだが,僕のコードはなんだかエラーを吐きまくってコンパイルできなかった.まあ多分どっかが悪いんでしょう(単純にpathを正しく記述できていないとか)

以上が概要です!