LaTex プログラムコードを載せる時のプラグインListingsのインストール

概要


論文の中でプログラムコードを載せたい。けど既存のパッケージ`verbatim`じゃ綺麗にコードを載せられない。シンタックスハイライトで載せられたらな〜と思っていたらListingsというパッケージで可能だということを知り、インストール・設定したのでメモ。

既存のエントリーとあまり相違はないと思いますが、自分のために。または誰かの参考になれば幸いであります。



エントリーの流れ

  • ダウンロード
  • インストール
  • 設定〜記述方法〜例



環境


texのインストール環境は以前に書いたエントリー d:id:Kshi_Kshi:20110111 の通り。
各自読み替えていただければと思います。

OS Windows 7 Professional
System 32 ビット オペレーションシステム
texインストール場所 C:\tex



ダウンロード

Listings本体


jlisting


Listingsはそのままでは日本語に対応していないとのこと、吉永徹美氏が作成されたマクロ jlisting を用います。ありがたやありがたや。



インストール作業

準備


さきほどダウンロードした2つのファイルを解凍。

    • listings.zip -> listingsディレクト
    • jlisting.sty.bz2 -> jlisting.styファイル

解凍した jlisting.styを listingsディレクトリにいれる。
listingsディレクトリの中身はこんな感じ。

C:.
    jlisting.sty
    listings.dtx
    listings.ind
    listings.ins
    listings.pdf
    lstdrvrs.dtx
    Makefile
    README

このディレクトリを以下の場所に配置。

C:\tex\share\texmf\tex\latex\listings

これでインストール準備終了。

※ 補足
プラグインを置く場所は各自の環境によって異なると思われる。
参考サイトは以下のディレクトリに配置していたが、私の環境では上手くいかなかった。

C:\tex\share\texmf\ptex\listings


インストール


cmdを起動し、tex本体をインストールした時に入れたインストーラ(platex)をを用いてプラグインをインストール。

> cd C:\tex\share\texmf\tex\latex\listings
C:\tex\share\texmf\tex\latex\listings> platex *.ins
C:\tex\share\texmf\tex\latex\listings>mktexlsr

※ (パスが通っていない場合はフルパスで指定)

C:\tex\share\texmf\tex\latex\listings> C:\tex\bin\platex *.ins
C:\Users\kenji> C:\tex\bin\mktexlsr

以上でインストール作業は終了。

  • インストールログ
C:\tex\share\texmf\tex\latex\listings> platex *.ins
This is pTeXk, Version 3.1415926-p3.1.11 (sjis) (Web2C 2010)
 restricted \write18 enabled.
(./listings.ins
pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2009/09/24> patch level 0)
Babel <v3.8l> and hyphenation patterns for afrikaans, ancientgreek, arabic, arm
enian, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danish, dut
ch, ukenglish, usenglishmax, esperanto, estonian, farsi, finnish, french, galic
ian, german, ngerman, swissgerman, monogreek, greek, hungarian, icelandic, assa
mese, bengali, gujarati, hindi, kannada, malayalam, marathi, oriya, panjabi, ta
mil, telugu, indonesian, interlingua, irish, italian, kurmanji, lao, latin, lat
vian, lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, polish, portuguese,
 romanian, russian, sanskrit, serbian, slovak, slovenian, spanish, swedish, tur
kish, turkmen, ukrainian, uppersorbian, welsh, loaded.
(c:/tex/share/texmf/tex/latex/base/docstrip.tex
Utility: `docstrip' 2.5d <2005/07/29>
English documentation    <1999/03/31>

**********************************************************
* This program converts documented macro-files into fast *
* loadable files by stripping off (nearly) all comments! *
**********************************************************

********************************************************
* No Configuration file found, using default settings. *
********************************************************

)

Generating file(s) ./listings.sty ./lstmisc.sty ./lstdoc.sty ./lstdrvrs.ins ./l
istings.cfg

Processing file listings.dtx (kernel) -> listings.sty
                             (misc,0.21) -> lstmisc.sty
                             (doc) -> lstdoc.sty
File listings.dtx ended by \endinput.
Lines  processed: 16515
Comments removed: 11670
Comments  passed: 11
Codelines passed: 4737


Processing file lstdrvrs.dtx (install) -> lstdrvrs.ins
                             (config) -> listings.cfg
File lstdrvrs.dtx ended by \endinput.
Lines  processed: 6377
Comments removed: 1553
Comments  passed: 271
Codelines passed: 4371

(./lstdrvrs.ins

Generating file(s) ./lstlang1.sty ./lstlang2.sty ./lstlang3.sty

Processing file lstdrvrs.dtx (lang1) -> lstlang1.sty
                             (lang2) -> lstlang2.sty
                             (lang3) -> lstlang3.sty
File lstdrvrs.dtx ended by \endinput.
Lines  processed: 6377
Comments removed: 1553
Comments  passed: 271
Codelines passed: 4371

)
*
* You probably need to move all created `.sty' and `.cfg'
* files into a directory searched by TeX.
*
* And don't forget to refresh your filename database
* if your TeX distribution uses such a database.
*
Overall statistics:
Files  processed: 3
Lines  processed: 29269
Comments removed: 14776
Comments  passed: 553
Codelines passed: 13479
 )
No pages of output.
Transcript written on listings.log.

C:\tex\share\texmf\tex\latex\listings>mktexlsr
mktexlsr: Updating C:/tex/share/texmf-local/ls-R...
mktexlsr: Updated C:/tex/share/texmf-local/ls-R.
mktexlsr: Updating C:/tex/share/texmf/ls-R...
mktexlsr: Updated C:/tex/share/texmf/ls-R.
mktexlsr: Done.


Listingsの設定,記述方法,例〜出力結果

設定例


以下私の設定例。

% Listingsの設定
\usepackage{ascmac,here,txfonts,txfonts}
\usepackage{listings,jlisting}
\usepackage{color}

\lstset{
  breaklines = true,
  language=Python,
  basicstyle=\ttfamily\scriptsize,
  commentstyle={\itshape \color[cmyk]{1,0.4,1,0}},
  classoffset=1,
  keywordstyle={\bfseries \color[cmyk]{0,1,0,0}},
  stringstyle={\ttfamily \color[rgb]{0,0,1}},
  frame=tRBl,
  framesep=5pt,
  showstringspaces=false,
  numbers=left,
  stepnumber=1,
  numberstyle=\tiny,
  tabsize=2,
}


記述方法

    • 直接載せる場合
\begin{lstlisting}[caption=キャプション,label=ラベル]
   〜〜〜プログラム〜〜〜
\end{lstlisting}
    • 別ファイルを読み込む場合
\lstinputlisting[caption=キャプション,label=ラベル]
{プログラムまでのパス}


記述例と出力結果

  • 読み込む場合の記述例
\lstinputlisting[language=Python,caption=python\_script/library/model/ClusteringElement.py]
{appendix/appendix_script/python_script/library/model/ClusteringElement.py}
  • 出力結果


うつくしい〜。



まとめ


シンタックスハイライトって素晴らしいですね。私の書いた芳しくない論文でも綺麗にコードが載っているだけでなんとなくグレードが上がった気になります。