pLaTeX2e

●注意● このページを表示する環境によっては、 \という文字が¥(円マーク)と表示されることがある。 またどういうわけか両者が混在することもある。 区別はないので同じものだと思って読んでください。
見出し

はじめに

TeX (てふ、てっく)は、Donald E. Knuth が作成した 組版システムである。 もっとわかりやすい表現で言えばDTP(DeskTop Publishing)のためのシステムである。 LaTeX は、構造的に文章を記述できるようにするためのTeX の マクロパッケージであり、もともとはLeslie Lamportによって作成された。 pLaTeX2e はLaTeXの新しいバージョンである。

ワープロでは、画面上で実際に印刷イメージを直接編集する 方式が一般的である。 一方、TeXでは、原稿となる文書に、 文書の構造やレイアウトを指定する命令を マークアップ方式で埋め込んだソースファイルを作成し、 それをTeXシステムで処理することで初めてレイアウトが行なわれる。

この手順は、ワープロに比べると面倒であるが、

などの利点がある。

特に品質の差は歴然としており、 TeXベースの編集支援システムは出版社 (例:共立出版) において利用されているのに対し、 ワープロの出力がそのまま出版の現場で使われることはまずない。 また、数式記述能力が高いことから科学技術論文の記述に広く用いられる。 (例:電子情報通信学会 投稿論文スタイル。 ワープロファイルでも学会に投稿できるのだが、 そのままでは品質が低いため、改めてレイアウト処理を行うための費用が請求される。 ) 卒業論文や学術論文を作成する場合にも、利用する機会があろう。

TeX の一連の流れ

LaTeX を用いた文書作成の一連の流れを図1に示す。

ソースファイルをTeX の処理系で処理すると、 dviファイル (device independent file) が作成される。 このファイルは、出力デバイスに依存しない形式のレイアウト情報が記述されている。 この dviファイルから、それぞれの出力デバイス(画面、プリンタ、出版用 写植機など)に変換することで、最終的な出力イメージが生成される。


図1:pLaTeX2e での処理の流れ

このように非常に複雑なシステムであるが、 情報工学科の端末室で使用するコマンドは、 実のところ platexxdvi だけである。

サンプル

実際に簡単な例で実行してみよう。まずエディタを使って次の内容 のファイル renshu1.tex を作成する。

\documentclass[a4j]{jarticle}
\begin{document}

ソースファイル中の改行は
空白文字
として処理されるので、
編集しやすいようにどんどん改行してよい。

この上のところのように空行をあけると、
そこが段落の区切りになる。ちなみに
% パーセントがあると、行末までコメント扱いになる。ひゃっほう!
\end{document}
パーセントの後ろは改行まで無視される。メモに使える。

このファイルをTeX で処理するにはplatexコマンドを使う。 プログラミング言語の処理系と似ているので、 この作業を「コンパイルする」などと表現することもある。

% platex renshu1.tex
エラーがなければrenshu1.dvi というファイルができる。 X window上でレイアウトを確認するにはxdviコマンドを用いる。
% xdvi renshu1.dvi

最終的にプリンタに出力するためには、xdvi のprint機能を使えばよい。

基本的なTeX コマンド

TeX のコマンドのすべてはとても紹介し切れないので、 詳細は pLaTeX2e の書籍を参照して欲しい。 ここでは 主なものと、注意点のみを説明する。

最低限の構造

基本的にTeX のコマンドは\(バックスラッシュ)で始まる。

pLaTeX2eのソースファイルに必ず含まれていなければならない 最低限の構造は次のようになる。

\documentclass[a4j]{jarticle}

\begin{document}

\end{document}
\documentclassは、作成している文書のスタイルを指定しており、 ここではjarticleを指定している。他には tarticle(縦書き),jreport(報告書)などが標準で用意されている。 a4jの部分はスタイルに応じたオプション引数である。
\begin{document}\end{document}の間に原稿の文章を書く。 \end{document}以降は、文書にはまったく反映されない。
なお、\documentclass\begin{document}の間をプリアンブルと言う。

特殊な文字/そのままでは出ない文字

サンプルのところでも見たように、 TeXではソース中の空白と改行は保存されない。 連続した空白は空白一つと同じだと解釈され、 改行も(空行を構成する時以外は)空白と同じに解釈される。

これ以外にも、 コマンド名の開始やコメントの開始など、 ソース中に書かれた通りには処理されない文字がたくさん ある。

以下の1行目の文字を表示したい時には、2行目のように書かなければならない。 \^{}\~{}{}は重要である。

 #  $  %  ^    &  _  {  }  ~ 
 \# \$ \% \^{} \& \_ \{ \} \~{}

\の表示は、 \\とすると改行コマンドになってしまうので、 一筋縄ではいかない。 \verb=\=$\backslash$などとする必要がある。

また引用符の使い方にも注意が必要である。 TeX では、ダブルクォート(")を書く時に、開く方と閉じる方を 区別して出力するために、 ``このよう''にシングルクォートなどを使って書く。

< > は、馴染みがないがフランス語の引用符として 解釈されるので、思いもかけない表示になる。 これは、$>$とするか \verb=>=とする。バックスラッシュを付けた \>は数式用の位置合わせコマンドになってしまう。

先ほどから時々出てきているが、小量の文字列を そのまま出力したい時には\verbコマンドが利用できる。 これは次の例のように\verbコマンドの直後の文字で表示したい文字列を挟んで使う。

\verb|\ $ { }|
\verb=\ $ { }=

なお、あるまとまった分量をそのまま出力して欲しい場合には、 \begin{verbatim}\end{verbatim}で囲む方法がある。 このように、 \begin{なんちゃら}\end{なんちゃら} で構成される部分を 「なんちゃら環境」と呼ぶことが多い。

\begin{verbatim}
ここに
書かれたものは、
書かれたとおりに100%出
力される(と
よくいわれる。)
\end{verbatim}

章・節など

見出しのためのコマンドとしては、
\section{大見出し}
\subsection{中見出し}
\subsubsection{小見出し}
\paragraph{段落見出し}
などがある。 章番号や節番号は組版時に自動的に付けられるので、 自分で番号をつける必要はない。

箇条書

連番付の箇条書
\begin{enumerate}
\item 箇条書き1
\item 箇条書き2
\item 箇条書き3
\end{enumerate}
連番なしの箇条書
\begin{itemize}
\item 箇条書き1
\item 箇条書き2
\item 箇条書き3
\end{itemize}
見出し+説明形式の箇条書
\begin{description}
\item [見出し1:] 文章1
\item [見出し2:] 文章2
\item [見出し3:] 文章3
\end{description}

数式

数式の記述は、TeXが最も得意とするものであるが、 レイアウト結果を見ないとそのありがたみが わからない。 ここはきちんと書かれた書籍を見たほうがよい。 以下では一例を示すにとどめる。

独立した行に 
$$y=\sum_{i=1}^{n}\sin(i/\pi)$$ 
のように書くものと、文中に 
$y=\sum_{i=1}^{n}\sin(i/\pi)$ 
のように書くものとがある。

上記で使われているのは、 $$$による数式モード、 ^{}による上つき文字、 _{}による下つき文字、 \sum\sin\piといった数学記号 である。

表組み

表はtabular環境で作成するが、 実際に利用するときには、 次のように さらにtable環境に はめ込む。 出版では、表(や図)は本文の流れとは 独立にページ上に配置される(この性質をフロートという)ことが多い。 table環境は、そのための処理を行い、表番号、表題などが付けられる。 table環境にすると、フロートとして扱われ、 ソース中の記述箇所ではない位置に配置されるようになる。

\begin{table}[htbp]
  \begin{center}
    \caption{- の使い方}
    \label{table:sample}

    \begin{tabular}{|l||c|p{5cm}|}
    \hline 名前 & TeX のソース & 使用例 \\ 
    \hline\hline 
    hyphen & \verb=-= & X-rated \\ 
    \hline 
    en-dash & \verb=--= & pages 8--13 \\ 
    \hline 
    em-dash & \verb=---= & Yes---or No? \\ 
    \hline
    \end{tabular}

  \end{center}
\end{table}

相互参照

LaTeX 中の相互参照は、\label{ラベル名}でラベルを付け、 それを\ref{ラベル名}で参照することによって行なう。

例えば先ほどの表でも\label{table:sample}というラベルをつけている。 これを文章中で参照するには、

-の数によって出力がどのように変化するのかを
\pageref{table:sample}ページの表\ref{table:sample}に示す。
のように使用する。 \labelを付けると、その場所の環境に応じて通し番号が振られ、 \refのところにはその番号が埋めこまれる。 \pagerefとするとページ番号が入る。

ラベル名と番号の対応関係は aux ファイルに記述される。 TeX は auxファイルを読み込んでから dviファイル を作成し、 dvi の生成と並行して aux ファイルを作成する。 したがって、TeXのソースに変更を加えた場合には、TeX の処理系を 少なくとも2回通さないと、参照情報が正しく埋め込まれない。 なお、はじめて TeX の処理系を実行した時には、 aux ファイルが存在しないので、\refの場所には 「??」と出力される。


図2: 相互参照を正しく更新するには2度以上の処理が必要

なお、参考文献の参照にはまったく別のコマンド(bibliography環境、bibitem, cite)を用いる。頭の片隅に入れておこう。

図のはめ込み

図表の図は figure環境を用いる。

figure 環境のなかに置くイメージの作り方は、 TeXのようにコマンドを並べて書く方法、 他のツールで作成したイメージを取り込む方法などさまざまである。

グラフィックスは出力デバイスに強く依存するので、 pLaTeX2e ではグラフィクス機能をパッケージとして分離している。

latexでは、出力デバイスに応じた最高の解像度で出力したいので、 図形も解像度に依存しないvector形式が好まれる。 ここでは、EPS(Encapsulated PostScript)形式の グラフィックイメージをpLaTeX2e で取り込む方法を説明する。 なお、EPS形式のグラフィックイメージは、 端末室では tgifコマンドや GnuPlotなどを使って作成できる。

まず dvips 対応のグラフィクスパッケージを読み込むように、LaTeX のソースのプリアンブルに、 \usepackageコマンドを書く。

\documentclass[a4j]{jarticle}
\usepackage[dvips]{graphics} %←ここ
\begin{document}
...

図を取り込む部分は次のように書く。

\begin{figure}[htbp]
\begin{center}
\includegraphics{systemoverview.eps}
\caption{システムの概略}
\label{fig:overview}
\end{center}
\end{figure}

イメージの大きさを調整したいときには\resizeboxなどを 使って調節する。以下の例では、 横4cm (縦は比例縮尺)になるように調整している。

\resizebox{4cm}{!}{\includegraphics{systemoverview.eps}}

なお、 dvi ファイルには グラフィックイメージをどのように配置するのか、という情報だけが含まれており、 グラフィックスのイメージ自身は含まれていない。 デバイスへの出力時に、 dviファイルとグラフィックスのファイルをそれぞれ参照して、 実際の出力が行われる。


図3: 図を取り込む処理

プログラムのソースリストを取り込む

CのプログラムをTeX中に書くには、 verbatim環境を使えばよいように思えるが、 意外と思ったように動かない。 そこで、verbatim環境をより高機能にした moreverbパッケージを利用するのがお薦めである。

Cのソースを直接TeXソースにかく場合

この方法はわかりやすいが、プログラムに変更をくわえたときに、 TeXの ソースにも同じ変更を加えないと、不整合が生じるので、 避けたほうがよい。
\documentclass{jarticle}
\usepackage{moreverb}

\begin{document}

ソースリストを以下にしめす。
デフォルトではTABはスペース8個ごとに設定される。

\begin{verbatimtab}
#include <stdio.h>
main()
{
   printf("guhehe\n");
}
\end{verbatimtab}

TABをスペース4個ごとに設定する場合。

\begin{verbatimtab}[4]
#include <stdio.h>
main()
{
   printf("guhehe\n");
}
\end{verbatimtab}
\end{document}

外部のソースファイルを取り込む場合(お薦め)

この方法は、プログラムなどのファイルをlatexが 処理するときに取り込む。
\documentclass{jarticle}
\usepackage{moreverb}

\begin{document}
ソースリストのファイルを指定して取り込む。

\verbatimtabinput{main.c}

TABをスペース4つ毎にする場合。

\verbatimtabinput[4]{main.c}

\end{document}

外部のソースファイルを取り込む場合(行番号付き)

\documentclass{jarticle}
\usepackage{moreverb}
\begin{document}
引数は、最初の行の行番号。

\listinginput{1}{main.c}

\end{document}

うまく動かない時

TeX のコマンドの使い方が適切でない場合には、処理系がエラー で停止してしまい、コマンドプロンプトに戻らない。

TeX の処理系の抜け方

「?」と表示されて停止した場合:
x [enter]とするとコマンドプロンプトに戻ることが 多い。まれに[enter]だけで処理を先に進めることができるこ ともある。
「*」と表示されて停止した場合:
\end [enter]と何度か入力するとコマンドプロンプトに戻ること が多い。

エラーメッセージで着目すべきところ

TeX は、膨大な量のメッセージを画面に出力しながら処理を行なう。 エラーで停止した時には数行上に「!」で始まる行があるはずなので、 その行のメッセージをヒントに間違いを見付ける。

参考までに、よく はまる間違いとして次のようなものがある。

実行状況の詳細なログは、「.log」で終わるファイルに保存されて いる。「Overfull」と「Underfull」のメッセージは、「収まり切 らずにはみ出してしまった/窮屈である」と「ちょうど収まるもの がなくスカスカになった」というメッセージである。Overfull が 出た時にはレイアウト結果をよく確認しよう。

マクロ定義

新しいコマンドを利用者が定義して使うことができる。 ここではごく簡単なパターンだけを紹介する。
\documentclass{jarticle}
\begin{document}
\newcommand{\a}{ああああ!}
\newcommand{\sad}{\texttt{\LARGE (T.T)}}

\a がーん。\sad\sad\sad\sad
\end{document}
引数が必要な場合にはこのようになる。
\documentclass{jarticle}
\begin{document}
\newcommand{\attack}[2]{#1が#2で攻撃した。}

\attack{ゴブリン}{棍棒}
\attack{おじさん}{糸こんにゃく}

\end{document}