Akita National College of Technology Yamamoto's Laboratory
ホーム研究内容コンピューター講義ノート学内限定
 
ソースリスト
 
 
 
 
 
 
 
コンピューターLaTeX文書作成 → ソースリスト

ソースリスト

仕事柄、プログラムのソースリスト(プログラムリスト)を書くことが多い。リストをLaTeXで記述する方法を示します。今は、listings がお気に入りです。

目次

  1. lgrind
  2. listings
  3. CASL IIのためのlistingsの設定

lgrind

インストール

日本語を含まない場合は lgrind で良いが、そうでない場合は古川さんの jlgrind を使っている。windowsの人は jlgrind を使うのが良いでしょう。インストールの方法は、以下の通りです。

  1. 必要なファイルを以下からダウンロードする。
    • lgindはネットを調べるとあちこちにあるので、適当なものをつかう。
    • jlgrind は、ここから
  2. ファイルを解凍して、インストールすれば良い。インストールの詳細は忘れてしまったが、解凍したファイルの中にそれが書かれたものがあったかもしれない。

使い方

C言語のソースをLaTeXのファイルへ変換

C言語のソースファイル(hogehoge.c)をLaTeXのファイル(hogehoge.tex)への変換は、


	$ lgrind -i -lc -o hogehoge.tex hogehoge.c
	

とする。

日本語を含む場合

lgrindを使ってソースコードを整形した場合、latex2htmlで日本語が文字化けす ることがある。windowsの jlgrind は、日本語を問題なく扱える。これで整形し、late2htmlを通すと日本語の問題 は無くなる。以下のようにすればよい。

  1. ソースプログラムのコードをshift-jisに変換する。
  2. $ nkf -s source.c >  source_s.c
  3. windowsにファイル(source_s.c)を移動
  4. windowsのjlgrindで、TeXの入力に整形
  5. $ jlgrind -i -lc source.c >  source_s.tex
  6. Linuxにファイル(source_s.tex)を移動
  7. 日本語コードをeucに変換
  8. $ nkf -e -d source_s.tex >  source.tex

このでき上がった source.texを使えば、日本語もきちんと処理される。

プリアンブル


\usepackage{lgrind}

本文

リストをファイル(./program/source_c.tex)から取り込む場合、以下のように記述する。


\LGnuminterval=1  % 行番号は各行に
\LGleftnumtrue    % 行番号は左端
\lgrindfile{program/source_c.tex}

LaTeX2HTML

LaTeX2HTMLについて説明している部分の「プログラムソースの記述のlgrind」を見てください。

listings

listingsは機能が豊富でマニュアルもしっかりしているので、今のお気に入りです。ただ、latex2htmlを通すとき、工夫が必要です。

インストール

listings.sty

  1. 必要なファイルをダウンロードする。
  2. ダウンロードしたファイルを解凍する。
  3. $ unzip listings-1.3.zip

    次のようなファイルができる。

    README    listings-1.3.ind    listings-1.3.pdf    lstdrvrs-1.3.dtx    listings-1.3.dtx    listings-1.3.ins    lstpatch.sty

  4. lisgings パッケージに必要なファイルの作成
  5. $ platex listings-1.3.ins

    次のようなファイルができる。

    lstmisc.sty    listings.cfg    lstlang1.sty    listings-1.3.ins    listings.sty    lstlang2.sty    listings-1.3.log    lstdoc.sty   lstlang3.sty

  6. *.sty と *.cfg をパスの通ったディレクトリーへコピー ( スタイルファイルの追加)
  7. # cp *.sty /usr/share/texmf/ptex/listings
    # cp *.cfg /usr/share/texmf/ptex/listings
  8. ファイル名データベースのリフレッシュ
  9. # mktexlsr

jlisting.sty

ソースリストに日本語が含まれる場合、lisgings は問題がある。日本語とアルファベットの順序が入れ替わって役に立たなくなる。それを防ぐためには、jlisting.sty を使う必要がある。ここに、ファイルがありインストール方法も書かれている。それに従いインストールすれば良い。

使い方

プリアンブル

スタイルファイルと設定に関する記述を行う。私の例を、以下に示す。

\usepackage{listings, jlisting}
\renewcommand{\lstlistingname}{リスト}
\lstset{language=C,%
        basicstyle=\footnotesize,%
        commentstyle=\textit,%
        classoffset=1,%
        keywordstyle=\bfseries,%
	frame=tRBl,framesep=5pt,%
	showstringspaces=false,%
        numbers=left,stepnumber=1,numberstyle=\footnotesize%
	}%

本文

ファイルから取り込む場合、以下のように記述する。


\lstinputlisting[caption=ここにキャプションを書く,label=参照するときのラベル名]
{パスとファイル名}

本文中に、リストを書く場合は、次のようにする。


\begin{lstlisting}[caption=ここにキャプションを書く,label=参照するときのラベル名]

   ここにソースリストを書く

\end{lstlisting}

LaTeX2HTML

LaTeX2HTMLについて説明している部分の「プログラムソースの記述のlistings」を見てください。

CASL IIのためのlistingsの設定

3年生に基本情報処理技術者試験のためのアセンブラ言語CASL IIを教えている.講義ノートをLaTeXで作成しているので,ソースリストをlistingsで処理したくなった.そのために,プリアンブルにCASL IIの言語の定義を以下のように書く.

\lstdefinelanguage{CASL2}{
morekeywords={START,END,DS,DC,OUT,RPUSH,RPOP,LD,ST,LAD,%
ADDA,SUBA,SUBL,AND,OR,XOR,CPA,CPL,SLA,SRA,SLL,SRL,%
JPL,JMI,JNZ,JZE,JOV,JUMP,PUSH,POP,CALL,RET,SVC,NOP,%
GR0,GR1,GR2,GR3,GR4,GR5,GR6,GR7},%
morecomment=[l]{;},%
morestring=[b]",%" 
}

C言語同様に,処理の仕方のパラメーターを以下のように書けばよい.ただし,CASL IIは全て大文字で書くため,デフォルトの文字間隔だと詰まりすぎて見苦しい.basewidthを少し広くしている.

\renewcommand{\lstlistingname}{リスト}
\lstset{language=CASL2,%
        basicstyle=\footnotesize,%
        commentstyle=\textit,%
        classoffset=1,%
        keywordstyle=\bfseries,%
	basewidth={0.8em,0.55em},%
	frame=tRBl,framesep=5pt,%
	showstringspaces=false,%
        numbers=left,stepnumber=1,numberstyle=\footnotesize%
	}%

last update:2009/03/03 16:04:30