これをスタイルファイル(style file)という. 自分でスタイルファイルを書くにはTeXおよびLaTeXに関する高度な知識を要求するが, 公開されているスタイルファイルを活用すれば,誰でも簡単にLaTeXの表現力を飛躍的に向上させることができる.
コンピュータファイルについての文書を書く際,左の図のような図が必要になることが少なくない.
このような階層構造を表す関係を木構造(tree structure)という.
木構造はコンピュータ科学における最も基本的な概念の1つである.
LaTeX文書にこのような木を描くためのスタイルファイルとしてeclclass.styが公開されている.
以降,このeclclass.styを使って木構造を描く方法を紹介する.
\documentstyle{jarticle}
においては,実はjarticle.styという文書体裁を定めるスタイルファイルを指定している(これを文書スタイルという).
ここで言うスタイルファイルとは,文書の体裁を定めるjarticle.styやjbook.styなどの文書スタイルとは別の,オプションスタイルと呼ぶものである.
オプションスタイルファイルoption.styを文書スタイルmain.styのLaTeX文書で利用するには,次のように書き始めねばならない.
\documentstyle[option]{main}
オプションスタイルの具体的使用例を以下に述べる.
\documentstyle[eclclass]{jarticle}
たとえば,次のLaTeX文書をコンパイル・表示してみよう.
このとき得られる木構造は右図のようである.
\documentstyle[eclclass]{jarticle}
\begin{document}
\begin{classify}{親}
\class{子どもa}
\class{子どもb}
\class{子どもc}
\end{classify}
\end{document}
演習1: 実際にコンパイル・プレビューしてみよ.
ここにある"\class{...}"の中に,下のように"\begin{classify}....\end{classify}"を書いてみる(つまり入れ子にする).
このときの木構造が左図である.
\documentstyle[eclclass]{jarticle}
\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}
中カッコ『{』と『}』の対応関係に十分注意する.
演習2: 実際にコンパイル・プレビューしてみよ.
このように,入れ子にしながら木構造を書くことができる. ただし,入れ子レベルの深さには制限がある. このようにして,先頭の図を得るには次のように書けばよいことを理解してほしい.
\documentstyle[eclclass]{jarticle}
\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}
演習3: 実際にコンパイル・プレビューしてみよ.
上の文書は,HTML文書において,改段落タグ<P>の使った実例を説明したものです.
LaTeX文書では次のように,オプションスタイルファイルeclbkbox.styを指定して,囲みたい文書の前後を
\begin{breakbox}
と
\end{breakbox}
で挟むことによって文章を囲むことができます.
\documentstyle[eclbkbox]{jarticle}
\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の優れている点は,囲んだ文書がページをまたぐ場合にも,ちゃんと囲みがはいります. たとえば,次のようになるのです.

ここでページが変わります.

というように,囲みがページの切れ目でブレークして表されるのです.
\documentstyle[eclclass,eclbkbox]{jarticle}
\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}
このときには,次のように木構造をeclclass.styによって,囲みをeclbreakbox.styによって書いたことになります.
スタイルファイルに『ecl...sty』という名前が付いているのは,NTT電気通信研究所(NTT Electric Communication Laboratory)から来ています.
{\tt home/}と,コンピュータにおけるディレクトリ名およびファイル名をタイプライタ体で表し,ディレクトリであることを明示するために『/』を名前の後に付けるとする.eclclass.styを使って報告せよ.ただし,
\begin{figure}[htbp]
\begin{center}
\begin{classify}{\tt home/}
\class{\tt Mail/}
....
....
\class{\tt tmp/}
\end{classify}
\end{center}
\caption{ホームディレクトリ以下ににあるディレクトリ構造}
\end{figure}
のように,figure環境を使え.
\begin{breakbox}
\begin{quote}
....
引用文書
....
\end{quote}
\end{breakbox}
とくに,プログラムのソースコードやLaTeX文書の生原稿などを文中に引用する時には,次のように,さらにverbatim環境を使う(従って,英数字記号がタイプライタ体で表される).
\begin{breakbox}
\begin{quote}
\begin{verbatim}
....
プログラムソースコードなど
....
\end{verbatim}
\end{quote}
\end{breakbox}
簡単なJAVAプログラムをbreakbox環境を使って囲み,そのプログラムの働きを解説せよ.
に格納されている(さらに,いくつかのファイルを付け加えている). (/usr/local/lib/TeX/macros と /usr/local/lib/TeX/inputs
lsで確認してみよ!)
ここにないスタイルファイルを使うためには,自分で入手する必要がある.
自分のホームディレクトリに,たとえばディレクトリ
myinputs/を作成して,それらのスタイルファイルを格納しておき,LaTeX文書でスタイルファイルを指定し,コンパイル時に自動的に読み込んでくれるためには,環境設定ファイル.cshrc(先頭にピリオドが付いている!)に,次のようにLaTeXの環境変数TEXINPUTSを指定しておく.
setenv TEXINPUTS ".:$HOME/myinputs:/usr/local/TeX/inputs:/usr/local/TeX/jmacros:/usr/local/TeX/macros"
情報処理概論目次
mizutani@edu.tuis.ac.jp