オンラインテキストに戻る
LaTeX入門目次に戻る

スタイルファイルでLaTeXの表現力を高める

mizutani@rsch.tuis.ac.jp
参考書『インターネット時代のコンピュータリテラシー』(水谷正大,共立出版)
LaTeXを使っていて表現力に不満を感じたときには,パッケージ(package)またはスタイルファイル(Style file)ファイルの利用を考えるとよい. LaTeXの達人たちは,さまざまな用途のために利用できるマクロパッケージを(自分のために書き,それを)公開している.
LaTeX2eからパッケージの概念が導入された.一般的にパッケージはそれを構成するスタイルファイル(拡張子『.sty』や『.cls』がつく)からなっている.

自分でスタイルファイルやパッケージを書くにはTeXおよびLaTeXに関する高度な知識を要求するが, 公開されているスタイルファイルを活用すれば,誰でも簡単にLaTeXの表現力を飛躍的に向上させることができる. LaTeXのスタイルファイルに関する紹介とその利用法については,

の連載記事が非常に役に立つ. LaTeXを使って文書を書くときには必携の資料である.

スタイルファイルの利用例1:木構造

たとえばコンピュータのファイル構成についての文書を書く際,左の図のような図が必要になることが少なくない. このような階層構造を表す関係を木構造(tree structure)という. 木構造はコンピュータ科学における最も基本的な概念の1つである.

左の図では『自然言語』は『言語』のであり,『英語』や『日本語』のの関係にある.『言語』の子は『自然言語』,『コンピュータ言語』と『音楽』の親である.『言語』には親がなく,すべての祖先になっている.そこで『言語』のような立場にあるものをルート(根:route)と呼ぶ.
こうした階層関係はルートを頂点とした親子関係で表わすことができる.

LaTeX文書にこのような木を描くためのスタイルファイルとしてeclclass.styが公開されている.

以降,このeclclass.styを使って木構造を描く方法を紹介する.

パッケージ・スタイルファイルを指定する

スタイルファイルは,ここで説明するeclclass.styのように,拡張子『.sty』の付いたテキストファイルとして提供されている. 実際,LaTeX文書の先頭で実はjarticle.clsという論文の文書体裁を定めているスタイルファイルを指定している(これを文書スタイルという).
\documentclass{jarticle}

ここで扱うスタイルファイルは,文書の体裁を定めるjarticle.clsやjbook.clsなどの文書スタイルとは別のものである. 特別な機能を有するLaTeXのマクロコマンドを集めたパッケージ(またはスタイルファイル)を文書スタイル jarticle で利用するには,LaTeX文書を次のように書き始めねばならない.

\documentclass{jarticle} \usepackage{パッケージ名}
パッケージ(またはスタイルファイル)の具体的使用例を以下に説明する.

スタイルファイルのための環境設定

システムが用意している以外の入手したパッケージやスタイルファイルは,自分のホームディレクトリ直下にパッケージやスタイルファイル専用のディレクトリを作成してまとめて収めておく.

% cd
% mkdir myinputs

pLaTeXシステムを使うとき,これらのパッケージやスタイルファイルがコンパイル時に自動的に読み込まれるめには,あらかじめ環境設定ファイル.cshrc(先頭にピリオドが付いている!)に, 次のようにpLaTeXの環境変数TEXINPUTS_platexを指定しておかねばならない(二重引用符『"』で囲まれているのは,ピリオド『.』,コロン『:』,ドル記号『$』で始まり,最後にスラッシュ『/』が2つでコロン『:』で終わっている文字列であることに注意).

setenv TEXINPUTS ".:$HOME/myinputs//:"

パッケージ・スタイルファイルの入手

多くの人がスタイルファイルを作成し,それをネットワーク上で公開している.システムで用意していないスタイルファイルやパッケージを使うためには,FTPなどを通じて自分で入手する必要がある.
ここで,紹介したスタイルファイル eclsclass.styやeclbkbox.styもシステム標準ではない.

ftp.edu.tuis.ac.jpからこれら2つのスタイルファイルを入手し,上のような専用ディレクトリに格納して,環境変数を設定しておく.

eclclass.styを使った木構造の描画

スタイルファイルeclclass.styを使って下図のような木構造を描くには,文書スタイルがjarticleであるLaTeX文書では,次のように指定する.
\documentclass{jarticle}
\usepackage{eclclass}
\begin{document}
\begin{classify}{親}
\class{子どもa}
\class{子どもb}
\class{子どもc}
\end{classify}

\end{document}

さらに,\class{...}の中に,次のように『\begin{classify}....\end{classify}』を書いてみる(つまり入れ子にする). このときの木構造が左図である.

\documentclass{jarticle}
\usepackage{eclclass}

\begin{document}
\begin{classify}{親} 
\class{\begin{classify}{子どもa}
       \class{孫a1} \class{孫a2}
       \end{classify}}
\class{子どもb}
\class{\begin{classify}{子どもc}
       \class{孫c1}
       \class{孫c2}
       \class{孫c3}
       \end{classify}}
\end{classify}

\end{document}
中カッコ{}の対応関係に十分注意する.

このように入れ子にしながら木構造を書くことができる. ただし,入れ子レベルの深さには制限がある. こうして,下図のような先頭の図を得るには次のように書けばよいことがわかる.
\documentclass{jarticle}
\usepackage{eclclass}

\begin{document}
\begin{classify}{言語}
\class{\begin{classify}{自然言語}
       \class{英語}
       \class{\begin{classify}{日本語}
              \class{ですます言葉}
              \class{べらんめい言葉}
              \class{チョベリバ言葉}
              \end{classify}}
       \end{classify}}
\class{\begin{classify}{コンピュータ言語}
       \class{C++}
       \class{JAVA}
       \class{LISP}
       \end{classify}}
\class{\begin{classify}{音楽}
       \class{古典音楽}
       \class{現代音楽}
       \class{Jazz}
       \class{Rock}
       \end{classify}}
\end{classify}
\end{document}

スタイルファイルの利用例2:文を囲む

次のように,文章を囲みたくなるときがある.

上の文書は,HTML文書において,改段落タグ<P>の使った実例を説明したものである. LaTeX文書では次のように,スタイルファイルeclbkbox.styを指定し,囲みたい文書の前後を

\begin{breakbox}
囲みたい文書
\end{breakbox}
のように挟むことによって文章を囲むことができる.

上の図の例では次のようなLaTeX文書を書いている.

\documentclass{jarticle}
\usepackage{eclbkbox}
\begin{document}
....
HTML2.0以降では段落の指定方法が変わり,タグの組{\tt <P>}と{\tt </P>}で文を挟んで,次のように段落を指定するのです.
\bigskip
\begin{breakbox}
\begin{quote}
\begin{verbatim}
.....
<P>
Webブラウザはワードラップ機能を持っており,Webブラウザのウィンドウサイズを調節したとき,自動的に行を折り返してくれる機能です.
</P> 
<P>
HTMLでは,わざわざ特別なタグで指定しない限り改行は行われませんから,こうした機能は欠かせないのです.
</P>
......
\end{verbatim}
\end{quote}
\end{breakbox}
\bigskip
ただしHTML 1.0との整合性のために,終了タグ{\tt </P>}は省略可能になっています.
....
\end{document}

このスタイルファイルeclbkbox.styの優れている点は,囲んだ文書がページをまたぐ場合にもちゃんと囲みが入ることである.

たとえば,次のようになるのです.

ここでページが変わる.

というように,囲みがページの切れ目でブレークして表されるのです.

複数のスタイルファイルを使う

スタイルファイルを複数使うときには,次のようにカンマで区切って(必要な数の)スタイルファイル名を並べます. このときには,次のように木構造をeclclass.styによって,囲みをeclbreakbox.styによって書いたことになります.
\documentclass{jarticle}
\usepackage{eclclass, eclbkbox}
\begin{document}
\begin{breakbox}
\begin{classify}{親}
\class{\begin{classify}{子どもa}
       \class{孫a1}
       \class{孫a2}
       \end{classify}}
\class{子どもb}
\class{\begin{classify}{子どもc}
       \class{孫c1}
       \class{孫c2}
       \class{孫c3}
       \end{classify}}
\end{classify}
\end{breakbox}
\end{document}
スタイルファイルに『ecl...sty』という名前が付いているのは,NTT電気通信研究所(NTT Electric Communication Laboratory)から来ている.

目次
LaTeX入門目次に戻る.
オンラインテキストに戻る


mizutani@edu.tuis.ac.jp