LATEX 実習
2016/11/25 第 1 版
2022/09/11 第 7.4 版
by NIDE, N. (nidxyz
e@ics.nara-wu.ac.jp)

1 LATEX の基本
LATEX (ラテフ、ラテックなどと読む) とは、組版 (文書清書) システムの 1 つである。文書を、出版物レベルの品質で印刷可能な形に仕上げることができる。特に、数式の仕上がりが高品質であることで知られており、数学や情報科学分野での論文類は LATEX で書くのが基本である。本文書はその使い方の実習用資料である*1 (一部に、奈良女子大学 G 棟教育用計算機
システム*2 (以下「G 棟計算機システム」と呼称する) の Linux 環境を前提とした部分がある)。

LATEX は、G 棟計算機システムの Linux にはインストールしてあり、直ちに利用できる。その他の Linux システムでも、大抵パッケージ*3 が用意されており、パッケージを利用してのインストールなら容易である。Windows や macOS の場合、インストールは Linux よりは多少手間取るかもしれない (本資料ではインストール方法については取り上げない)。

1.1 ソースファイルの定型と LATEX の基本的使い方
ここでは、LATEX の文章を作成して、それを PDF にしたりプリンタに出力したりするまでの基本的手順を示す。
まず、エディタ (Emacs など) で「×××.tex」という名前のファイルを編集開始し (LATEX のソースファイルは「×××.

tex」というファイル名にする決まりである)、以下のように書き込む。
\documentclass[a4j]{jsarticle}\begin{document}· · · 文書に書き込みたい本文の内容 · · ·\end{document}
これが、LATEX のソースファイル (以下「ソース」と略記する場合や、「TEX ファイル」と呼称*4 する場合がある) の内容の基本形である。具体例はこのすぐ後、1.1.1 節を参照。ソースの 1 行が長くなりすぎないよう注意 (1.2.1 節)。
“本文の内容” には、# $ % & _ { } < > \ ^ | ~ の 13 文字 (特殊文字) はそのままでは書けない。後述する (1.2.5 節)。

このファイルを印刷するまでの流れは以下のようになる*5 (注:「␣」は空白を表す。コマンド行あるいはソースファイル中での空白の有無を特に明示したい場合にこの記号を使うことがある)。

1. まず、$ platex␣×××.tex  として*6 、TEX ファイルを特別な形式「DVI ファイル」*7 に変換する。この過程が正常に終了すれば、×××.dvi というファイルができる。これが DVI ファイル。

2. できた DVI ファイルは、プレビュー可能。それには $ xdvi␣×××.dvi  とする*8 (xdvi を終了するには q キー)。
3. DVI ファイルを PDF ファイルに変換することができる。それには $ dvipdfmx␣×××.dvi  とする。×××.pdfというファイルができる。PDF ファイルは通常の方法 (Adobe Reader などを使う) で閲覧したり印刷したりできる。
が、印刷だけするなら次項 4. の方法を使うのが標準。

4. PDF を経ずに、DVI ファイルから直接印刷するには $ dvips␣-f␣×××.dvi | lpr␣-Pプリンタ名  とする*9 。
*1 正確には、本資料で取り上げるのは日本語対応の L
AT X である pL
AT X と呼ばれるものだが、以後単に L
AT X と呼称する。

E

E

E

*2 同学科 G401/301/102 室の計算機システムと、リモートログインサーバ remote01、および臨時リモートログインサーバ remote02 を指す。
*3 1.2.7 節の意味での「(LAT X の) パッケージ」のことではなく、OS にソフトウェアをインストールするためのパッケージのことである。

E*4 L
AT X のもとになった文書生成システムに T X というものがあり、それと共通の呼称である。

E

E
E
E
E
ムにより TEX ファイルから直接 PDF を生成する方法が主流へと変わりつつある。しかし pdfLATEX はまだ日本語のサポートが充分でないため、*5 近年、L
AT X 関連は変化が速く、T X ファイルからここに述べた DVI ファイルを経て PDF 化や印刷をするのではなく、pdfL
AT X というシステ

ここでは従来の方法を解説する。

platex -kanji=utf8 ×××.tex のように、漢字コードを明示的に指定 (あるいEは事前に nkf などで漢字コードを変換) しなければならないことがある。なお、一度誤った漢字コードで platex コマンドを実行してしまった場
合、生成される ×××.aux というファイル (10.2.1 節) を削除しないと次回以降正常に実行できないことがある (普段は削除の必要はない)。
*7 出力先の装置が何であるかに依存しないファイル形式という意味で、DeVice Independent の略で DVI である。パソコンのディスプレイ接続の規格の DVI とは関係ない。
*8 システムによっては、日本語を含む文書の場合、プレビューは xdvi ではなく pxdvi コマンドで行う必要がある。使い方は xdvi と同じ。
*9 システムによっては、日本語を含む文書の場合、印刷には dvips でなく pdvips コマンドを使う必要がある。使い方は dvips と同じ。なお、xdvi*6 どこか他からコピーしてきた T X ファイルなどの場合は、$

1

ここで「プリンタ名」は (G 棟計算機システムの Linux の場合) 表 1.1 のように指定する。例えば G 棟計算機システ
ムの G401 のモノクロプリンタに出すなら $ dvips␣-f␣×××.dvi | lpr␣-Pmprt401  とする。また、「-Pプリンタ名」を略すればデフォルトのプリンタ (G 棟計算機システムではその部屋のモノクロプリンタ) に出る。

表 1.1 G 棟計算機システムの Linux の場合のプリンタ名

プリンタ

プリンタ名の指定

プリンタ

プリンタ名の指定

プリンタ

プリンタ名の指定

G401 モノクロ

mprt401

G301 モノクロ

mprt301

G102 モノクロ

mprt102

G401 カラー

cprt401

G301 カラー

cprt301

G102 カラー

cprt102

dvips とは DVI ファイルを PostScript 形式 (プリンタに送るための形式) に変換するコマンド*10 、lpr はデータをプリンタに送るコマンド。この 2 つの組み合わせで、「DVI ファイルをプリンタに送るための形式に変換した上でプリンタに送る」ということを行っている。なお、PDF から PostScript 形式に変換する pdftops というコマンドを使うと、PDF から $ pdftops␣×××.pdf␣- | lpr␣-Pプリンタ名 としても印刷可能。

1.1.1 具体例
例えば私の名前は中野です。Hello!

という内容の文書を生成するには、Emacs などで次のような LATEX ソースを作成する*11 (以後、基本的に 1 重線枠はソー
スを、2 重線枠は出力結果を表す)。ソース作成時には、以下の点には特に注意。

•「/」ではなく「\」である•「{」「[」「\」などの記号文字はいわゆる “全角” (日本語文字セットの記号文字) であってはならない\documentclass[a4j]{jsarticle}\begin{document}
私 の 名 前 は 中 野 で す 。 Hello!
\end{document}
作成したソースファイルの名前が hahaha.tex だとすると、まず$ platex hahaha.texと操作する (先頭の「$」は「シェルのプロンプトが表示されていること」を表しており、「$」を実際に入力してはならな
い*12 )。すると、正常に処理が行われた場合は以下のようなメッセージ (細部は異なる場合がある) が表示され、This is pTeXk, Version 3.141592-p3.1.10 (euc) (Web2C 7.5.4)%&-line parsing enabled.
(./hahaha.tex
pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2005/12/01> patch level 0)(/usr/share/texmf/ptex/platex/misc/jsarticle.cls
Document Class: jsarticle 2007/10/24 okumura)
No file hahaha.aux.
[1] (./hahaha.aux) )Output written on hahaha.dvi (1 page, 292 bytes).
Transcript written on hahaha.log.

から印刷する方法もあるが、本資料では省略する。
*10 dvips の代わりに dvi2ps というものが用意されているシステムもあり、使い方が若干異なるが、本資料では触れない。
*11 システムによっては (Windows など)、「\」の代わりに「Y=」を使う必要がある場合がある (「\」と「Y=」は同じ意味である)。
*12 実際に表示されるシェルのプロンプトは、システムによって異なることに注意。G 棟計算機システムの場合は、シェルのプロンプトは「[ユーザ名@

マシン名␣ディレクトリ名]$␣」という形で、例えば「[u21490991@gpc1x01␣~]$␣」のようになる。

2

そして DVI ファイル hahaha.dvi が作られて*13 、再びシェルのプロンプトが出る (シェルのプロンプトが出ない場合は、ソースのどこかにエラーがある。1.1.2 節参照)。ls コマンドで、hahaha.dvi が作られたことを確認してみるとよい。
その DVI ファイルを$ xdvi hahaha.dvi
によってプレビューでき (文書の下方にページ数が自動的に出力されていることに注意)、$ dvips -f hahaha.dvi | lpr -Pmprt401
で (G 棟計算機システムであれば) G401 のモノクロプリンタに印刷できる。「-Pプリンタ名」を省いて $ dvips -f

hahaha.dvi | lpr とすると、デフォルトのプリンタ (G 棟計算機システムであればその部屋のモノクロプリンタ) に出る。
また$ dvipdfmx hahaha.dviとすれば、PDF ファイル hahaha.pdf が作られる。

1.1.2 エラーが起きた場合
platex コマンドの実行後にシェルのプロンプトが出てこない場合、それは、platex コマンドが、人間の入力を待って停止したままになっていて、終了していない状態である。この状況は、LATEX ソースに何らかのエラーがある場合に起こる。
その場合、Ctrl-D (Ctrl キーを押しながら D キー) を押せば platex コマンドが終了し、シェルのプロンプトが出てくる。
ただし、エラーが起きた場合に本当に重要なことは、「エラーが起きた」とだけ認識するのではなく、エラーメッセージを読み、「どのようなエラーが起きたのか」を突き止めようとすることである。それについては後に 1.4 節で述べる。ここで述べているのはあくまで、エラーが起きた場合の終了のさせ方のみである。
なお、大抵の場合は、Ctrl-D でなく x (Ctrl なし) でも platex コマンドを終了させることができる。実はこちらが正当な終了のさせ方である。しかし、エラーの種類によっては x キーでは終了しないこともあるので、とりあえず Ctrl-D
で終了させられることを覚えておけば簡単である*14 。
例えば 1.1.1 節の例で、ソースの \begin のところを間違えて \bigin と打ち込んでしまい\documentclass[a4j]{jsarticle}\bigin{document}
私 の 名 前 は 中 野 で す 。 Hello!
\end{document}としたとする。$ platex hahaha.tex  とするとThis is pTeXk, Version 3.141592-p3.1.10 (euc) (Web2C 7.5.4)%&-line parsing enabled.
(./hahaha.tex
pLaTeX2e <2006/11/10>+0 (based on LaTeX2e <2005/12/01> patch level 0)(/usr/share/texmf/ptex/platex/misc/jsarticle.cls
Document Class: jsarticle 2007/10/24 okumura)! Undefined control sequence.
<recently read> \bigin
l.2 \bigin{document}?
と出て、シェルのプロンプトが出てこない。すなわち、platex コマンドが終了していない状態である。こうなった場合は、*13 この時、他に hahaha.log と hahaha.aux という 2 つのファイルも作られる。hahaha.log の方は要らなければ消してもよい。hahaha.aux の方

は、今のところ要らないが、必要となる場合が後で登場する (10.2.1 節) ので、むやみに消さない方がよい。
*14 ただし、Windows では Ctrl-D では終了しないので、x キーの方を使う必要がある。

3

Ctrl-D を押せば! Emergency stop.
<recently read> \bigin
l.2 \bigin{document}
No pages of output.
Transcript written on hahaha.log.
と出てきて platex コマンドが終了し、シェルのプロンプトが出る。このあと、1.4 節に述べるようにエラーメッセージを参照しながら、間違っていた場所を探して LATEX ソースを修正し、再度 platex コマンドを実行する。
なお、Ctrl-D の代わりに Ctrl-Z で終了させようとするのは誤り (Ctrl-Z は実は終了ではなく、一時停止である。従って、本当に一時停止させたい場合は Ctrl-Z でよいのだが、終了のつもりで Ctrl-Z を使うと、実際には終了していない platex
コマンドがメモリ内に残り続け、それを何度もやると次第にメモリを圧迫する)。

1.2 本文の書き方
LATEX ソースの先頭に「\documentclass[a4j]{jsarticle}」と「\begin{document}」、末尾に「\end{document}」
を書くのは、特に断らなくてもお約束であるので、以後はいちいち示さない。補って読むこと。
ソースのうち「\begin{document}」より前の部分を「プリアンブル」という。
プリアンブルより後 (\begin{document} から \end{document} までの間)、つまり本文の部分を書くための、基本的な約束には以下のようなものがある。

1.2.1 行分け · 段落分け
紙の幅に美しく収まるように LATEX が行を切り直すため、ソースファイル中の改行は無視される (ただし行末が日本語文字でないときは、改行は空白と同じと見なされる)。例えばソースが
私の名前は中野です。私の名前は中野です。
私の名前は中野です。

This␣is␣a␣pen.␣That␣is␣an␣apple.
This␣is␣a␣pencil.
となっている場合、1 行目の改行と 2 行目の改行は無視され (行末が「。
」で日本語文字のため)、3 行目の改行と 4 行目の改行は空白と同じと見なされる (行末が「.」で日本語文字でないため)。そこで出力は
私の名前は中野です。私の名前は中野です。私の名前は中野です。This is a pen. That is anapple. This is a pencil.
となる。紙の幅に収まるように行が切り直されていること (実際の組版結果で行がどこで切られるかは、紙幅に依存するので、必ずしも上の通りにはならない)、および、ソースでの「apple.」の次の改行が空白と見なされるため、出力の「apple.」の次に空白があることに注意。さらに、段落の先頭は自動的に日本語文字 1 字分ほど字下げされている。
また、行数がもっと増えて
私の名前は中野です。私の名前は中野です。
私の名前は中野です。

This␣is␣a␣pen.␣That␣is␣an␣apple.
This␣is␣a␣pencil.
私の名前は中野です。私の名前は中野です。
私の名前は中野です。

This␣is␣a␣pen.␣That␣is␣an␣apple.
This␣is␣a␣pencil.
のようなソースで試すと、出力は4

私の名前は中野です。私の名前は中野です。私の名前は中野です。This is a pen. That is anapple. This is a pencil. 私の名前は中野です。私の名前は中野です。私の名前は中野です。This
is a pen. That is an apple. This is a pencil.
のようになる。やはり行が切り直されて、行の左右が紙幅に合わせて揃えられていることがわかる。
このように、出力でどこで行が切られるかは、ソースでの改行とは関係ない。従って、ソースファイルの各行があまり長くなり過ぎないよう、ソースファイルは適宜改行で切る方がよい (横幅が英字 80 字分の端末やエディタで、画面上の 1 行に入り切る程度)。ソースファイルにあまりに長過ぎる行があると、LATEX が処理しきれずエラーを起こすことがある。
ただし、改行が 2 つ (以上) 続いていると (つまり空行があると)、そこが段落の区切り (改段落) と見なされる (空行がい
くつあっても段落を 1 回だけ区切る)。また、各段落の先頭は自動的に字下げされる。例えば、ソース
私の名前は中野です。私の名前は中野です。
私の名前は中野です。

This␣is␣a␣pencil.␣That␣is␣an␣apple.
This␣is␣a␣pen.
私の名前は中野です。私の名前は中野です。
私の名前は中野です。
に対する出力は
私の名前は中野です。私の名前は中野です。私の名前は中野です。This is a pencil. That is anapple. This is a pen.
私の名前は中野です。私の名前は中野です。私の名前は中野です。
のように、「pen.」の次で段落が改まり、そこで自動的に字下げが起きている。たとえソースで私の名前は中野です。私の名前は中野です。
私の名前は中野です。

This␣is␣a␣pencil.␣That␣is␣an␣apple.
This␣is␣a␣pen.

私の名前は中野です。私の名前は中野です。
私の名前は中野です。
のように多数の空行を空けても、出力では私の名前は中野です。私の名前は中野です。私の名前は中野です。This is a pencil. That is anapple. This is a pen.
私の名前は中野です。私の名前は中野です。私の名前は中野です。
のように 1 回段落が改まるだけで、段落間に空行は入らない。
「\\」で段落を区切ろうとするのは誤りなので (p. 26 参照)、行わないこと。
どうしても出力の段落間に空行を入れたいなら、15.1 節に出てくる \vspace や \medskip などのコマンドを使う手がある。しかし実際には、直接それらのコマンドで文中に空行を空けることはあまりしないし、その必要もほとんどないはずである。その理由は、4 節で詳しく述べるが、LATEX では文書の整形に関する指示を直接行わずに、文書の論理的構造のみ示すという考え方があるためである。

1.2.2 空白
ソース中の空白文字は、いくつ連続していても 1 つと同じと見なされる。例えば、ソースがThis␣is␣a␣␣␣␣␣pen.
となっていても、出力は以下のように空白は 1 つしか空かない。

5

This is a pen.
どうしても複数空けたければ、「\␣」というコマンドを使う (コマンドについては 1.2.4 節参照)。以下は、5 つ分の空白を空けた例である。

This␣is␣a␣\␣\␣\␣\␣pen.
This is apen.

ただし、「\␣」コマンドや後述の「~」をいくつも連続して使って、長い空白を空けるということは、あまりしないし、

LAT X を正しく使っていればその必要もないはずである。特に、いくつも空白を空けたいのは、実際には縦の列を揃えてE表を作りたい場合であることが多いが、その場合はこれらのコマンドで位置を揃えるのではなく、8 節に述べる「tabular
環境」や、この資料では述べないが「tabbing 環境」を使う。

なお、ソース中のタブ文字は、空白文字と同じと見なされる。また、日本語文字の空白 (通称「全角の空白」) を LATEX
ソース内で用いてはならない (禁止ではないが、それが必要な場合はまずないはずである)。

LATEX が行を切り直した結果、空白が行の境目に来てしまった場合は、その空白は消滅する。例えばThe licenses for most software are designed to take away your freedom
to share and change it.
By contrast, the GNU General Public License is intended to guarantee
your freedom to share and change free software …
というソースがThe licenses for most software are designed to take away your freedom to share and change
it. By contrast, the GNU General Public License is intended to guarantee your freedom toshare and change free software…
のように組版されるとき、出力の行の境目を見てみると、ソースでそこに空白があっても、出力では空白は消えている (出力での行の終わりは右端に、その次の行の始まりは左端にぴったり揃っていて、空白は空いていない) ことがわかる。「\␣」を使ってたくさん空けようとした空白でも、同じことである。
また、ソースの行頭 · 行末の空白は、ないものと同一視される。例えばソースが␣␣␣ 私 の 名 前 は 中 野 で す 。 私 の 名 前 は 中 野 で す 。 ␣␣␣␣␣
␣␣␣ 私 の 名 前 は 中 野 で す 。 ␣␣␣␣␣
␣␣␣This␣is␣a␣pen.␣That␣is␣an␣apple.␣␣␣␣␣
␣␣␣This␣is␣a␣pencil.␣␣␣␣␣
となっていても、行頭や行末に空白がない
私の名前は中野です。私の名前は中野です。
私の名前は中野です。

This␣is␣a␣pen.␣That␣is␣an␣apple.
This␣is␣a␣pencil.
というソースと同じと扱われ、出力はどちらも
私の名前は中野です。私の名前は中野です。私の名前は中野です。This is a pen. That is anapple. This is a pencil.
となる (出力の先頭が空いているのは、段落の先頭が自動的に字下げされたからであって、ソースの先頭の空白によるもの
ではない)。
時には、出力に空白は入れたいが、そこのところで改行されるのは困る、という場合がある。例えば「D. E. Knuth」のような人名の途中の空白は、そこで改行されないことが望まれる。そのような「改行されたくない空白」を入れたいときは、ソースに「~」を使う。

6

D.~E.~Knuth
This␣is␣a~~~~~~~~pineapple.␣This␣is␣a~~~~~~~~pineapple.
This␣is␣a~~~~~~~~pineapple.␣This␣is␣a~~~~~~~~pineapple.
This␣is␣a~~~~~~~~pineapple.␣This␣is␣a~~~~~~~~pineapple.
D. E. Knuth
This is aapineapple. This is apineapple. This is apineapple. This is apineapple. This is apineapple. This ispineapple.

このように、「~」のところで改行されないような行切りが行われる。また、「~」が複数連続すると、その数だけ空白が入る(が、あまりそういう使い方はしない)。
「 ∼ 」と出力するつもりで、LATEX ソースの本文中にうっかり「~」と書いてしまって、出力ではそれが空白になってしまうというミスは、案外多い。

1.2.3 注釈「%」から、行末の改行までは、注釈として無視される。例えば
私の%ふ ひ ょ
名 前 は ␣% け け け
中 野%ふ ぉ ふ ぉ ふ ぉですというソースは
私の名前は 中野ですと出力する。出力で「名前は」と「中野」の間が空いてしまっていることに注意。これは、「%」のある行の行末の改行まで(改行も含めて) が無視されることにより、上のソースは
私の名 前 は␣中 野 で すというソースと同じとして扱われるためである。なお、プリアンブル部であっても同様に「%」から改行までは注釈。
この他に、ソース中の \end{document} より後ろも無視される。
ちなみに、LATEX では行末の改行を無視させる目的で「%」を使うことがしばしばある。

This%
is a
pen.
Thisis a pen.
この例では、「a」の直後の改行は (行末が日本語文字でないため) 空白と同じ扱い (1.2.1 節参照) になるが、「This」の直後
は改行を含めて無視されるため、そこに空白が入らない。

1.2.4 コマンド
LATEX にはいろいろなコマンド*15 があり、文書の作成においては、ソース内でそれらのコマンドを活用することになる。
この先いろいろなコマンドが出てくるが、その前にここでは、ソース中でコマンドを使うにあたっての重要な注意について述べる。

*15 ここでいう「コマンド」とは、L
AT X ソース内に現れ、L
AT X のいろいろな機能を呼び出すためのものである。シェルコマンド (端末エミュレー

EE

タ上でキーボードから打ち込むことによって実行するプログラム。platex, xdvi や ls, cat など) と混同しないこと。

7

■コマンドの形 LATEX のコマンドは以下のどちらかの形をしている*16 。

a.「\」+ 記号文字1字
b.「\」+ 英字1字以上
a. の例としては、「$」という文字を出力する「\$」コマンドがあり*17 、b. の例には、「LATEX」と出力する「\LaTeX」コマン
ドがある (コマンド名は大文字小文字の区別があるので、「\LaTeX」の代わりに「\latex」や「\LATEX」ではだめ)。例えば\$␣\LaTeXというソースの出力は以下のようになる。

$ LATEX■コマンドとその直後の空白 ソース中でコマンドの直後に来る空白については、次の決まりがある。

1. ソース中で、b. の形のコマンドの直後に空白が来た場合、この空白は無視され、出力には入らない。
2. ソース中で、b. の形のコマンドに続いて英字、または (一部を除く) 日本語文字が来る場合は、コマンドと後続の文字を区別するために、コマンドの直後に空白を 1 つ以上空けなければならない。また、この空白は上記 1. の決まりによって無視され、出力には入らない。

3. a. の形のコマンドの直後の空白については後述。
例えばI like LATEX very much.
という出力を得ようとして、ソースにI␣like␣\LaTeX␣very␣much.
と書くと、ソースでの \LaTeX コマンドの直後の空白が上記 1. により無視されて、出力はI like LATEXvery much.
のように LATEX と very がくっついてしまう。また、ソースでI␣like␣\LaTeX␣␣␣␣␣very␣much.
のように \LaTeX コマンドの直後に空白をたくさん空けても、1.2.2 節に述べた通り、ソース中の連続する空白文字は 1 つと同じと見なされるので、結局出力は同じく

I like LATEXvery much.
になる。出力で LATEX と very の間を空けたければ、1.2.2 節に出た「\␣」コマンドを使って、ソースはI␣like␣\LaTeX\␣very␣much.
としなければならない (後の 6.1 節でもう 1 つの方法を示す)。この場合「\LaTeX」の直後に空白はいらない (あってもよ
く、あっても無視される)。ソース中で「\LaTeX」の次に来る文字が、英字でも日本語文字でもない「\」であるためである。
一方、例えば \LaTeX コマンドの直後に空白を空け忘れてI␣like␣\LaTeXvery␣much.
としたソースを組版しようとすると*16 厳密にはこの他に、『「\」なし記号文字 1 字だけ』というコマンドがある (1.2.2 節の「~」が該当) が、ここでは考慮しない。
*17 $ は「特殊文字」(1.2.5 節) なので、ソースにそのまま「$」と書いたのでは出力できない。

8

! Undefined control sequence.
l.3 I like \LaTeXvery much.
のようにエラーになってしまう。これは、「\LaTeXvery」というコマンドと見なされてしまったためで、「そんなコマンドはない」というエラーになったのである (エラーになったときの措置は 1.1.2 節参照)。しかし、I␣like␣\LaTeX,␣too.
というソースは、\LaTeX コマンドの直後に空白がないにも関わらず、エラーにならずにI like LATEX, too.となる。これは、ソース中で「\LaTeX」の次に来る文字が、英字でも日本語文字でもない「,」であるためである。なお、この場合にソース中の「\LaTeX」の次に空白があってもよい (あっても無視され、同じ出力になる)。
特にうっかりしやすいのが、コマンドの直後が日本語の場合。
只 今 \LaTeX の テ ス ト 中というソースではだめで (「\LaTeXのテスト中」というコマンドと見なされる*18 )、只 今 \LaTeX␣ の テ ス ト 中としなければならない。

これに対し、a. の形のコマンドの後には空白は不要で、空白を入れるとその空白は無視されずに出力される。例えば

A\$B␣A\$␣B␣A\$␣␣Bというソースの出力は以下のようになる。

A$B A$ B A$ B
左から 2 番目の「$」と「B」の間は、空白 1 字分空く (ソースでの「\$」の直後の空白が無視されないため)。左から 3 番目の「$」と「B」の間も、同じく空白 1 字分しか空かない (ソースでの連続する空白は 1 つと同じと見なされるからである)。
■コマンドの引数先に述べた a. の形のコマンドと b. の形のコマンドのいずれも、さらに引数を取る場合と引数を取らない場合に分かれる。先述の「\$」や「\LaTeX」は引数を取らないコマンドの例であった。
引数を取るコマンドでは、原則的に、引数はコマンドの後ろに「{ }」で囲んで書く (引数が複数ある場合は「{引数1}{引数2}」のようにそれぞれを「{ }」で囲む)。

a. の形で引数を取るコマンドの例には「\’」があり、これは引数の文字にアキュートアクセント「´」を付けるもの*19 。
例えばソースに「\’{o}」と書けば「ó」と出力する*20 。

b. の形で引数を取るコマンドの例には「\textbf」がある。これは字体を変更するコマンド (6.2 節) の 1 つで、引数の文字列を太字 (正確には、英字は太字、日本語文字はゴシック体) で出力するものである。例えば以下のようになる*21 。

A\textbf{AA}A あ \textbf{ あ あ } あAAAA ああああ
引数付きのコマンドで、引数が「{ }」に囲まれている場合は、b. の形のコマンドであってもコマンドの直後に空白は不要。例えば「\textbf␣{BC}」でなく「\textbf{BC}」でよい。なぜなら、コマンドの直後が英字でも日本語文字でもなく「{」だからである。一方、引数を囲む { } の後の空白は無視されない。例えば*18 実は日本語文字も (一部を除き) コマンド名に使えるのである (p. 75 脚注*87)。しかし、お勧めはしない。

*19 他の種類のアクセントを付けるコマンドもある。表 7.1 参照。
*20 引数が 1 文字だけの場合は「{}」で囲まなくてもいいので、この場合「\’o」でも出力は同じである。しかし、いつでも「{ }」で囲むようにする方が、覚えることが少なくて間違いにくい。
*21 この例の出力の「ああああ」の真ん中 2 文字の「ああ」は本来はゴシックなのだが、Linux の Adobe Reader (PDF 閲覧ソフト) では、インストールのし方によっては、日本語のゴシックであるはずの文字が明朝体 (通常の日本語の字体) に見えてしまうことがあり、そのようなシステムでは、この例の「ああああ」が全て同じ字体 (明朝体) に見えるかもしれない (G 棟計算機システムの Linux ではそうはならない。ゴシックはちゃんとゴシックに見える)。また、他のソフトでは (設定によっては) 逆に日本語が全てゴシックに見えることもあるようである。以後の例でも同様。

9

A\textbf{AA} A
AAA Aのように、引数 AA を囲む { } の後に空白があると、それは無視されずに出力中に空白が空く。

1.2.5 特殊文字
以下の文字は、特別な意味を持っているので、そのままでは本文中に書けない (特殊文字)。

#$%&_{}<>\^|~
これらの文字を出力するには表 1.2 のようなコマンドを使う (このうち \$ は 1.2.4 節に登場した)。
文字

コマンド

#

\#

$

\$

%

\%

&

\&

表 1.2 特殊文字を出力するコマンド

文字

コマンド

文字

\_

<

{

\{

}

\}

コマンド

文字

コマンド

\textlessˆ\textasciicircum>\textgreater|\textbar\\textbackslash˜\textasciitilde

例えば\textbar␣ は 縦 線 、 \% は パ ー セ ン ト 記 号 。
というソースは| は縦線、% はパーセント記号。
と出力する。1.2.4 節に述べた理由で、ソースの \textbar の直後には空白が必要であり、逆に \% の直後には空白は不要。
もし \textbar の直後の空白を忘れて\textbar は 縦 線 、 \% は パ ー セ ン ト 記 号 。
とするとエラーになってしまう。逆に、\% の直後に空白を入れると、(微妙にではあるが) 空きすぎになってしまう。次のよ
うにして比較すると、「%」と「は」の間の空きにわずかに違いがあることがわかる。

\textbar␣ は 縦 線 、 \% は パ ー セ ン ト 記 号 。
\textbar␣ は 縦 線 、 \%␣ は パ ー セ ン ト 記 号 。
| は縦線、% はパーセント記号。
| は縦線、% はパーセント記号。
特殊文字ではないが、一部の文字は、組み合わせて入力すると意味が変わってしまうことがある。
ソース

出力

ソース

出力

ソース

出力

ソース

出力

--

– (短いダッシュ)---— (長いダッシュ)

?‘

¿

!‘

¡

ちなみに、これらは実は合字 (1.3.7 節) の 1 種として実現されている。なお、マイナスを続けてダッシュになるのは 3 連続まで。4 連続のマイナス (----) は「3 連続プラス 1 つ」と見なされ、「—-」のように不格好な出力になる。
円記号 (U) については 1.2.7 節参照。

1.2.6 環境LATEX において環境とは、特別なコマンド \begin{××} と \end{××} で囲んだ間 (「××環境」と呼ぶ) が、通常と違う出力になる機能を指す。この先、いろいろな環境が登場する。

10

例えば quote 環境 (4.3 節に出てくる) は、 \begin{quote} と \end{quote} で囲むことによって「環境内が字下げされる」という機能を提供する。

quote 環 境 は 、 字 下 げ を 行 う た め の 環 境 で あ る 。 こ の 環 境 は 、引用を行う目的などによく用いられる。ここに、その例を示す。
\begin{quote}こ れ は quote 環 境 の 例 で あ る 。
\end{quote}
こ の よ う に 、 通 常 の 文 章 の 中 で quote 環 境 を 使 う と 、 当 該 部 分 が 字 下 げ さ れ る 。

quote 環境は、字下げを行うための環境である。この環境は、引用を行う目的などによく用いられる。ここに、その例を示す。
これは quote 環境の例である。
このように、通常の文章の中で quote 環境を使うと、当該部分が字下げされる。
環境は入れ子にすることもでき、4.2 節に登場する箇条書き用環境の入れ子など、有用な使い方が多数ある。

1.2.7 パッケージ
パッケージ*22 とは、“素の” LATEX に用意されていない様々なコマンドや環境 (1.2.6 節) を提供するためのもので、パッケージを読み込むことでそれらのコマンドや環境が利用できるようになる。標準でいろいろなパッケージが用意されている
ほか、標準ではないが別途入手すれば使えるパッケージも存在する。
パッケージを読み込むには、プリアンブル (1.2 節) に

\usepackage{パッケージ名1 , パッケージ名2 ,· · · , パッケージ名n }のように、読み込みたいパッケージ名を指定する。例えば、amssymb というパッケージ (標準で用意されている) を読み込
むには、プリアンブルに \usepackage{amssymb} と書く。このパッケージを読み込んでおくと、通常は使えない、円記号(U) を出力するための \yen というコマンドが使えるようになる*23 *24 。以下は例である。
\documentclass[a4j]{jsarticle}\usepackage{amssymb}\begin{document}
円 記 号 (\yen) が 使 え る 。
\end{document}
円記号 (U) が使える。

1.3 高品質な出力を得るために注意したい点
1.3.1 四分空き
日本語の印刷物では通常、日本語文字と英字の境目には「四分空き」といって、全角幅の 1/4 の空白を入れるのが伝統である。(日本語版の) LATEX には、この四分空きを自動的に入れる機能があるので、ユーザは四分空きを入れるための操作をする必要は特にない。例えばソースに
私 は Linux を 利 用 し て い ま す*22 Linux などの OS でソフトウェアを容易にインストールするために用意されている「パッケージ」とは違うものである。
*23 しかし amssymb はもともと、主に数式記号のコマンドを多数提供する目的のパッケージであり、円記号はついでに含まれているだけである。

amssymb パッケージの主な使い方は、数式の書き方について述べる 9 節中 (9.2.2 節や 9.3.5 節など) で改めて登場する。
*24 ascmac という別なパッケージにも \yen コマンドが含まれる。また、L
AT X の参考書籍には、Y と = を重ね合わせて自前の \yen コマンドを作っEて使う方法が示されていることも多い。しかし、それらより amssymb パッケージのものの方が若干かっこいい。ただし、ascmac のものや自前のものは \texttt (6.2 節) などで字体を変更できるが、amssymb のものだとそれができず、一長一短がある。なお、amssymb と ascmac の両方を読み込むと ascmac の \yen コマンドの方が優先されてしまうので注意。ちなみにユーロ記号は、eurosym パッケージを読み込んで \euro で出る。

11

と書いた時の出力は、
私は Linux を利用していますのように「Linux」の前後に「四分空き」が自動的に入る。
私はLinuxを利用していますのように「Linux」の前後がぴったりくっついた出力にはならない。
従って、ソースファイルで
私 は ␣Linux␣ を 利 用 し て い ま すのように「Linux」の前後をわざわざ空ける必要はない。空けると、「Linux」の前後の空きが「四分空き」でなく、英文の単語間に入る空白と同じ量の空きになるので、ちょっとだが空き過ぎになる。
私 は Linux を 利 用 し て い ま す
私 は ␣Linux␣ を 利 用 し て い ま すというソースで比べてみよう。
私は Linux を利用しています
私は Linux を利用していますのように微妙に空きが異なる (上が伝統通りで、下はそれよりわずかに空きが多い)。
ちなみに、インライン数式 (本文の中に入る数式のこと。9.1 節) と日本語文字の間にも自動的に四分空きが入る。

AB\(x\)CD␣ あ い \(x\) う え
ABxCD あい x うえ
詳細は 9.1 節に出てくるが、\( と \) で囲まれた間が「インライン数式」である (「インライン数式」内の「x」は、数式外の x と違って、数式用の字体になっている)。インライン数式の前や後が日本語文字である場合は、そうでない場合に比べ、わずかな空きが自動で入っていることがわかる。手動で数式と日本語文字の間に空白を入れる必要はない。

1.3.2 ハイフンとマイナス
印刷物中では本来、マイナスとハイフンは異なる (ついでに、長短のダッシュ (1.2.5 節) や日本語の長音「ー」も全部異なるものである)。
通常の文中では、「-」はハイフンとして出力される。文中でマイナス記号を出力したければ、インライン数式モード (9.1
節で述べる。\( \) で囲んで書く) の中で「-」を使う。
ソース

出力

(参考)

ソース

出力

ハイフンの例

well-known

well-known

短いダッシュの例○○町二丁目5--3○○町二丁目 5–3

マイナスの例\(5-3=2\)

5−3=2

長いダッシュの例

文書の題---副題---

文書の題—副題—

長音の例

コンピュータコンピュータマイナス記号をハイフンで代用すると、見栄えが良くないのでやめよう。下記は、左が良くない例、右が良い例である。

( 誤 ) 今 日 の 気 温 は -2 度 だ 。 ( 正 ) 今 日 の 気 温 は \(-2\) 度 だ 。
(誤) 今日の気温は-2 度だ。(正) 今日の気温は −2 度だ。
通常の文中の使用と数式モードでの使用を意識して分けた方がよい文字には、他に「*」がある。通常の文中では他の文字の肩に近い位置に出るが、数式モードでは真ん中近くに出る。

Un*x␣Un\(*\)x
Un*x Un∗x12

1.3.3 クォート文字
クォートには「’ ’」とか「” ”」ではなく、「‘ ’」や「“ ”」のようなペアを使う。
入力

出力

備考

‘quoted’‘quoted’

両方を「’」にしない‘‘quoted’’“quoted”

入力に「"」(ダブルクォートの文字) は使わない‘\,‘‘quoted’’\,’‘ “quoted” ’クォートが連続する場合「\,」(表 9.1) で区切る

1.3.4 コンマ · ピリオド直後の空き英文を書く場合、本文中の単語の後のコンマや文章の最後のピリオドの直後には、ソース中で必ず空白を空けよう。そうしないと見栄えが悪い他、出力中でその場所で改行ができなくなる支障も生じる。

( 誤 ) This is a pen.This is an apple.
( 正 ) This is a pen. This is an apple.
(誤) This is a pen.This is an apple.
(正) This is a pen. This is an apple.
もちろん、略語の途中 (最後以外) の「.」や、小数点などは別である。例えば「3.14」を「3. 14」とは書かない。
普通の文章中でコンマやピリオドの直後の空白を忘れる (上の例のように) ことはあまり起きにくいが、問題になりやすいのは参考文献リストの中などである。例えば

N. Nide, S. Takata, and M. Fujita. BDI logic with probabilistic transition and ﬁxed-point operator. In
Proc. of CLIMA ’09, pp. 71–86, 2009.
などのように書く場合の、著者名のピリオドやコンマの直後の空白が特に忘れやすく (ただし 12.2 節の BIBTEX を使えばかなり防げる)、その結果、論文中の参考文献欄の見栄えを損ないやすいので注意したい。

1.3.5 ピリオド直後の空きの違い
次の例 (ピリオドは縦に揃えてある) で、2 つのピリオドの直後の空きが微妙に異なることにお気づきだろうか?

· · · written by N. Nide
This is a pen. Now look at · · ·LATEX は、文の終わりのピリオドに続く空白 (下段) を、普通の単語間の空白よりちょっと長くとる。一方、略語の終わりのピリオドに続く空白 (上段) は、文中の空白なので、普通の単語間の空白と同じに取る。LATEX がそれらをどう見分けるかというと、「英大文字に続くピリオドは略語の終わりのピリオド、そうでないピリオドは文末のピリオド」と判定している。
しかし、この判断は外れることもある。例えば「He is taller than I. However, he· · · 」のピリオドは文末のそれだが、そのままでは LATEX はこれを略語の終わりのピリオドと見なしてしまう。また、「Mr. Nakano says that· · · 」のピリオドは略
語の終わりなのだが、LATEX はこれを文末のピリオドと見なす。その結果、ピリオドの直後の空きが不適切になる。
そこで、前者のように大文字の後に文末のピリオドが続く場合は、「\@」をピリオドの直前に置いて「· · · taller thanI\@. However· · · 」とソースに書けば、文末のピリオドとしての空白を空けてくれる。
また、後者のように大文字以外の後に略語の終わりのピリオドが続く場合は、「\@」をピリオドの直後 (空白との間) に置
いて「Mr.\@␣Nakano· · · 」のようにすれば、単語間と同じ空白が入る。あるいはこの場合、「Mr.\␣Nakano· · · 」や「Mr.~Nakano· · · 」のように空白を入れるコマンドを明示的に使っても、単語間と同じ空白が入る。
1.3.6 日本語文字セットの英字
LATEX で、日本語文字セットの英数文字 (いわゆる “全角” 英数字のこと) を使うと、見栄えがよくない。例えば次のような例で比べると、左のものはよいが、右の方は英字がプロポーショナルになっていないし、間延びした感じになってしまう。

13

私 は Linux を 利 用 し て い ま す 。 私 は Ｌ ｉ ｎ ｕ ｘ を 利 用 し て い ま す 。
私は Linux を利用しています。私はＬｉｎｕｘを利用しています。
また、LATEX には英単語を自動ハイフネーションする機能があるが、日本語文字セットの英文字にはこの機能が働かない
欠点もある。以上のようなことから、LATEX で日本語文字セットの英数文字を使うのはやめよう。
記号文字に関しても、ASCII に同じ文字 (いわゆる “半角” 文字) があるものについては、日本語文字セットの文字 (「＋」
「 」「！」「？」等々) は使わない方がよいだろう*25 。

1.3.7 合字LATEX では、英字部分の ff, fi, fl, ffi, ffl は自動的に合字として組版される (例えば f‌f ではなく ff のように)。通常はそのままでよいが、何らかの理由で合字にしたくない箇所がある場合、その場所に \textcompwordmark コマンドを入れる。例えば、ソース中で shelf\textcompwordmark␣ful とすれば組版結果では shelf‌ful となり、ff のところが合字にならない。

1.4 エラーメッセージLATEX に限らず、エラーが出た場合は「エラーが起きた」という事実だけではなく、「どのようなエラーが出たか」(エラーメッセージ) を見て原因を考えることが重要。

1.4.1 エラーが起きた場所の特定
大抵は、1.2.4 節に出てきた! Undefined control sequence.
l.3 I like \LaTeXvery much.
のように、何行目に (この場合は 3 行目) どういうエラーが出てきたかを教えてくれる。

Emacs なら、 ESC x goto-line (あるいは画面上部のメニューの「Edit」→「Go To」→「Goto line...」でも可)の後に行番号を入れてリターン (Enter) キーを押せば、その行に飛べる (5 節で述べる AUCTEX では、エラーが起きた場
合、Ctrl-C ‘ という操作で自動的に該当行に飛べる)。

1.4.2 よくあるエラーメッセージ
ここに挙げたものがエラーメッセージの全てではない。

• No file ××.aux.
これはエラーではないので気にしなくていい (10.2.1 節参照)。

• ! Undefined control sequence.
存在しないコマンドを使おうとした。よくあるのは、コマンドの後ろに空白を忘れた場合 (1.2.4 節参照)。

• ! Missing $ inserted.
数式モード (9 節) 内でしか使えないコマンドを数式モード外で使おうとした。

• LaTeX Font Warning: Font shape ‘JY1/mc/m/sl’ undefined
これもエラーではない。あるフォントを使おうとしたが、なかったので他のもので代用したという意味。例えば、斜体の日本語 を使おうとすると、それはないので普通の字体で代用され、このメッセージが出る。

• Overfull \hbox (xpt too wide) in paragraph at lines n1 --n2
エラーではないが、LATEX が行をうまく切れる位置を見つけられず、ある行が右にはみ出てしまったという意味。文章を手直しするのが手っ取り早い。はみ出た量が少なければ、気にしないという対処もある。

• Runaway argument?
コマンドの引数を閉じる「}」を忘れた場合に起こる。「\section{タイトル」のような場合。

• ! LaTeX Error: Environment ××× undefined.
*25 ただし括弧については、(筆者は賛同しないが) 日本語の文を囲む場合は日本語文字セットの括弧「（ 」「 ）」の方がよいとする意見もある。

14

存在しない環境 (1.2.6 節) を使おうとした。

• ! LaTeX Error: \begin{×××} on input line n ended by \end{444}.
環境 (1.2.6 節) の \begin と \end の対応が取れていない。

• (\end occurred inside a group at level n)
グルーピング (6.1 節参照) の「{」と「}」の対応が取れていない。あるいは、環境 (1.2.6 節) の \begin を閉
じる \end がない。

• LaTeX Warning: Reference ‘×××’ on page p undefined on input line n.
相互参照 (10 節) の \ref あるいは \pageref と、\label との対応が取れていない。つまり、存在しないラベルを参照している。

• ! TeX capacity exceeded, sorry
この LATEX の処理能力を超えた、ということだが、実際には LATEX の処理能力には余裕があり、通常の文章で処理能力を超えることはない。このメッセージが出るのは大抵、コマンドの引数の「}」を忘れたとか、マクロ
定義 (自作のコマンド定義、14.1 節) が間違っているなどの場合。

2 ちょっと細かいが知っておくと便利な話
2.1 拡張子の省略
platex コマンドではファイル名の末尾の .tex は省略可、xdvi · dvips · dvipdfmx コマンドではファイル名の末尾の.dvi は省略可である。よって、1.1.1 節の手順は以下のようにしても OK。タイピングが少し短くなる*26 。
$ platex hahaha$ xdvi hahaha$ dvips -f hahaha | lpr$ dvipdfmx hahaha

2.2 バックグラウンド起動
xdvi コマンドを端末から起動するときは、バックグラウンドで起動する方がお勧め。そうするには、起動時にコマンドラ
インの最後に「&」を付け、例えば「$ xdvi hahaha.dvi &  」のようにする。こうすると、xdvi の終了を待たずにシェルのプロンプトに戻り、次のコマンドが実行できる利点がある。
うっかり「&」を付けずに xdvi を起動した場合でも、次の方法で xdvi をバックグラウンドに回せる。まず、Ctrl-Z を(xdvi のウィンドウにではなく、xdvi を起動した端末のウィンドウに) 入力すると、xdvi が一時停止する (1.1.2 節でも述べた通り、Ctrl-Z は一時停止であって終了ではない)。続いて端末のウィンドウに「$ bg  」と入力すれば、xdvi がバックグラウンド実行に移り、同時に xdvi の一時停止が解除されて xdvi が再開する。
これらの方法によるバックグラウンド起動は、シェルの機能なので、xdvi だけでなく他のどのコマンドにも共通。例えばEmacs も、この方法でバックグラウンドに回せる。

2.3 xdvi の画面再表示機能
xdvi の実行中に、閲覧している DVI ファイルの内容が変わった場合、xdvi に対して何か操作すれば、その DVI ファイ
ルが新しい内容で再表示される。例えば、$ platex hahaha.tex  で hahaha.dvi を生成して$ xdvi hahaha.dvi &で xdvi を起動した後、エディタで hahaha.tex を編集し、再度 $ platex hahaha.tex  とすると、hahaha.dvi の内容が変わるが、ここで xdvi の画面を左クリックするか何かすれば、hahaha.dvi が新しい内容で再表示される。ファイルを修*26 ただし、コマンドライン入力の際にファイル名補完機能を使っていれば、.tex や.dvi を省略しなくても、タイピングの手間は増えずにすむ (むしろその方が、タイピングの手間を減らせるかも知れない)。

15

正するたびにいちいち xdvi を起動し直す必要がないので便利である。

2.4 何らかの加工をしてからのプリンタ出力
dvips で DVI ファイルを PostScript に変換してから、lpr でプリンタに送るまでの間に、特定の加工をすることによって、「2 ページ 1 枚」「両面印刷*27 」などの形で印刷することもできる。例えば、psnup コマンドがインストールされていれば$ dvips -f hahaha.dvi | psnup -2 | lprとすることで、2 ページ 1 枚の形でプリンタに出せる (組版結果が 2 ページ以上になるくらい長いソースで試してみよう)。
psnup -2 が、PostScript ファイルを 2 ページ 1 枚の形に変換するコマンドである。従ってこの例は、「dvips コマンドが DVI を PostScript に変換し、psnup -2 コマンドがそれを 2 ページ 1 枚の形に変換し、lpr コマンドがそれをプリンタに送る」という 3 つの機能の組み合わせでの出力になっている。

また、以下のコマンドによって、両面印刷もできる (これも、組版結果が 2 ページ以上になるようなソースで試そう)。

$ dvips -f hahaha.dvi | lpr -o Duplex=DuplexNoTumble
lpr の代わりに lpr -o Duplex=DuplexNoTumble とすることで、紙の長辺で折り返す両面印刷になる。なお、G 棟計
算機システムでは、「lpr -o Duplex=DuplexNoTumble」の代わりに省略形「lprd」でもよい。

2 ページ 1 枚かつ両面印刷 (紙 1 枚あたり 4 ページになる) にするには、$ dvips -f hahaha.dvi | psnup -2 | lpr -o Duplex=DuplexTumbleとする。
lpr -o Duplex=DuplexTumble とすると、紙の短辺で折り返す両面印刷になる。psnup -2 で 2 ページ 1 枚にしたもの
を両面印刷にするには、紙の短辺で折り返す方が適しているので、こうしている。なお、G 棟計算機システムでは、「lpr-o Duplex=DuplexTumble」の代わりに省略形「lprdt」でもよい。

このように、DVI を PostScript に変換するコマンドとプリンタに送るコマンドが分かれていることによって、その間にいろいろな加工を行うことができるようになっている。xdvi やあるいは (dvipdfmx で PDF 化して) PDF ビューアからメニューでの印刷も可能であるのに、1.1 節で dvips を用いた印刷方法を説明した理由はここにある。なお、1.1 節で述べた

pdftops を使うと、PDF を PostScript に変換してから同様の方法でいろいろな加工をしての印刷もできる。
実は、dvips と lpr をわざわざ併用しなくても、$ dvips hahaha.dvi のように -f を省くと、dvips だけで直接プリン
タに送ることができる。しかし、その方法をわざと説明しなかったのも、同じ理由による。

3 クラスとオプション
LATEX ソースの先頭に書く「\documentclass[a4j]{jsarticle}」のうち「jsarticle」のところを、文書のクラスと呼ぶ。これは、文書をどんなスタイルで整形するかを大まかに決めるものである。また、「a4j」のところをクラスのオプションといい*28 、より細かく整形のしかたを制御できる。

3.1 クラス
代表的なクラスとしては表 3.1 のようなものがあり (この他にもある)、クラスによって文書の仕上がりが違ってくる (特に、4 節に出てくる章 · 節や箇条書きなどの出力が違ってくる。それらのコマンドを使った例で、例えばクラスを jsarticleから jarticle などに変更して試してみるとよい)。また、クラスによって、どのオプションが使えるかが異なる (3.2 節)。
本資料では jarticle, jsarticle, article をまとめて「article 型」クラス、jreport, report をまとめて「report 型」クラス、

jbook, jsbook, book を「book 型」クラスと呼称し、また、jsarticle と jsbook を「js 系」クラスと呼称する*29 。
jarticle と article のように、用途が同じで和文向けと英文向けのクラスがある場合、両者では行間の空きなどの設定が和*27 当然ながら、プリンタが両面印刷に対応したものである場合に限る。G 棟計算機システムのプリンタは両面印刷対応である。
*28 パッケージ (1.2.7 節) に対しても「オプション」と呼ばれるものがある (実例は 11.3.1 節) が、それとは異なる。
*29 これらの呼称は本資料独自のもので、一般的ではない。なお、js 系には jsreport というクラスがない (2017 年 2 月以降の新しいものにはある)。ない場合には、\documentclass[report]{jsbook} でそれに相当するものが得られる。

16

表 3.1

代表的なクラス

クラス

説明

クラス

jarticle

通常の文書向けの標準クラス (和文用)

jbook

説明
書籍向けのクラス (和文用)

jsarticle

〃

(和文用)

jsbook〃(和文用)

article

〃

(英文用)

book

〃

(英文用)

やや長めの文書向けのクラス (和文用)

letter

手紙用のクラス(英文用)

slides

プレゼンテーション向けクラス

jreportreport〃

文向けと英文向けに異なっている (英文の方が行間が狭いなど)。また、js 系の jsarticle, jsbook は jarticle, jbook と役割は同じでどちらも和文向けだが、js 系の方がより新しく作られたものであり、やはり設定が若干異なっている。

report 型 · book 型クラスは、article 型クラスとは文書の構造が異なる (4.1 節で述べるが、article 型クラスの文書には「章」がない)。また、book 型クラスは、書籍の体裁に合わせで奇数ページと偶数ページの体裁が変えてあるなどの点が、

article 型や report 型などとは異なる。
slides はプレゼンテーション (スライド) 向けに、字を非常に大きくする設定になっている。ただしスライドの作成には、より新しく作成された beamer, powerdot, foils (FoilTEX) などの専用クラスを使うことが近年では多い。
jsarticle クラスに slide オプションを指定することによっても、簡易なスライド向け設定になる。この場合、landscape(表 3.2) および papersize (3.2.1 節参照) の両オプションも事実上指定必須となろう。

表 3.1 以外に、tarticle, tbook, treport など、日本語の縦書き用のクラスもある。以下のような例で試してみよう。

\documentclass[a4j]{tarticle}\begin{document}
私の名前は中野です。

\end{document}
なお、学会の予稿や論文誌などに投稿する場合は、それ専用のクラス (「スタイル」と呼ばれることも) が、学会によって用意されていることが多い。

3.2 クラスのオプション
多くのクラスで利用できる代表的なオプションには、表 3.2 のようなものがある (これ以外にもある)。
表 3.2 代表的なオプション

オプション

a4j

用途

11pt

文字サイズを 11pt にする (標準では 10pt)

〃

12pt

文字サイズを 12pt にする (用紙サイズを B5 にする

titlepage

タイトル (4.5.1 節) を独立したページにする〃

notitlepage

上記の逆

用紙サイズを B4 にする

twoside奇数ページと偶数ページで体裁を変える〃

oneside

上記の逆

b5paperb4j

用途

用紙サイズを A4 にする

a4paperb5j

オプション

b4paper〃)landscape

用紙を横長に使う

fleqn

ディスプレイ数式 (9.1 節) を左揃えにする

twocolumn

二段組みにする

leqno

数式番号を左側に出力 (9.5 節)

以下は例である (このように、「,」で区切って複数のオプションを指定できる)。

\documentclass[a4j,12pt,twocolumn]{jsarticle}\begin{document}
私の名前は中野です。私の名前は中野です。私の名前は中野です。
· · · 以下、1 ページくらいの長い長い内容 · · ·\end{document}
先述のように、どのオプションが利用できるかはクラスによって異なる。例えば、用紙サイズを A4 に指定するオプション

17

は a4j, a4paper の 2 種類あるが、英文向けのクラス (article, book など) では a4j は使えない。和文向けのクラス (jarticle,

jsarticle など) では a4j と a4paper のどちらも使えるが、a4j を使う方が、用紙の中で文書が使う範囲の縦横サイズが広く、紙を無駄なく使える (ただし js 系クラスでは a4j と a4paper のどちらを使っても同じ)。b4j と b4paper などについても同様である (なお、A4 以外の用紙サイズや landscape オプションを指定した場合は、3.2.1 節も参照のこと)。表 3.2 中で紙サ
イズ指定以外のオプションは、おおむねどのクラスでも使えることが多い。
残念ながら、標準の文字の大きさや用紙サイズは任意に指定できるわけではない。例えば 13pt とか 9pt とか a3j とかのオプションはない (ただし、js 系クラスには a3paper や 9pt, 14pt, 17pt, 20pt などのオプションがある)。

titlepage などのオプションの効果は以下のようになる。
• titlepage オプションを指定すると、\maketitle コマンド (4.5.1 節) で作成した文書のタイトルが、それだけで 1
ページを占めるようになる (概要 (4.5.2 節) や目次 (12.1 節) もそれぞれ独立したページになる)。notitlepage オプ
ションを指定すると、タイトル (や概要や目次) が独立したページにならず、本文の最初の方と同じページに入る• 上 2 つのオプションのどちらも指定しない場合、article 型、report 型のクラスでは notitlepage を指定したのと同じになり、book 型のクラスでは titlepage を指定したのと同じになる• twoside オプションを指定すると、出力を両面印刷して綴じることを想定して、出力の体裁が奇数ページと偶数ページで変わる。oneside オプションを指定するとそうならない• 上 2 つのオプションのどちらも指定しない場合、article 型、report 型のクラスでは oneside を指定したのと同じになり、book 型のクラスでは twoside を指定したのと同じになる

3.2.1 紙の大きさを指定した場合の注意
b4j などの紙サイズ指定オプションや、landscape オプションを指定したとき、xdvi や dvips や dvipdfmx はそのままでは A4 の縦長として処理するので、紙サイズからはみ出てしまう。その場合、以下のように用紙サイズを指定してこれらのコマンドを起動する。LATEX と xdvi と dvips と dvipdfmx で、紙サイズの指定のし方がそれぞれ全くバラバラなので注意。

xdvi

dvips

B4 縦長の場合$ xdvi -paper b4 ××.dvi$ dvips -f -t b4 ××.dvi

A4 横長の場合$ xdvi -paper a4r ××.dvi$ dvips -f -t landscape ××.dvi

B4 横長の場合$ xdvi -paper b4r ××.dvi$ dvips -f -t b4 -t landscape ××.dvi
xdvi で横長の場合の a4r や b4r の「r」は rotated のdvipdfmx
B4 縦長の場合$ dvipdfmx -p b4 ××.dvi

意味。dvips で B4 横長の場合は上表のように -t を 2

A4 横長の場合$ dvipdfmx -l ××.dvi

回指定する。dvipdfmx では用紙サイズは「-p␣サイズ」

B4 横長の場合$ dvipdfmx -p b4 -l ××.dvi

で、横長は「-l」(マイナス小文字のエル) で指定する。

ただし、js 系クラスを使っている場合は、クラスに papersize オプションを併せて指定しておけば、xdvi や dvips や

dvipdfmx で紙サイズを指定する必要がなくなり、1.1 節と同じ起動方法でよくなる。

3.3 ページスタイル
これは「クラスとオプション」の話とは別な話だが、文書のスタイルの調整に関する話なのでここにまとめて紹介する。
何も指定しなければ、文書のページ番号はページ下部中央に「18」のように数字だけで表示される。これを変更するにはプリアンブルで \pagestyle というコマンドを使う。例えば \pagestyle{empty} でページ番号を全く出力しなくなる。
ページ番号のスタイルを任意に指定できる \pagestyle{myheadings} や、特定ページだけページ番号のスタイルを変える\thispagestyle (プリアンプル外で使う) などもあるが、これらについては本資料では省く。

4 文書の論理構造を示すためのコマンド
LATEX は基本的に、「人間は文書の論理的構造を指定するだけ。それに基づいて整形を行うのは LATEX に任せる」という思想でできている。

18

例えば 4.1 節の例のような出力を得るには、文字の大きさや字体、行間の空きなどを直接指定して『まず文字の大きさを14pt に、字体を太字にして「1. 路面電車のある都市」と出力して、縦に 7.5pt 空け、次いで文字サイズを 10pt、字体を細字に戻して「1970 年前後に · · · 」と書き · · · 』などとはしない。
節や副節という単位を使って『「路面電車のある都市」というタイトルの節を開始し、本文には「1970 年前後に · · · 」と書く。次に「民営の路面電車」というタイトルの副節を開始し · · · 』という考え方で書く。節のタイトルの字体や文字サイ
ズをどうするか、節のタイトルと後続の本文との間をどれくらい空けるか、などは LATEX にまかせる。

4.1 章 · 節 · 副節
LATEX での文書の典型的な形態は、次の例のようなものである。
\section{ 路 面 電 車 の あ る 都 市 }1970 年 前 後 に 日 本 の 各 都 市 の 路 面 電 車 は 次 々 廃 止 さ れ 、
現在も路面電車が残っている都市は少ない。

\subsection{ 民 営 の 路 面 電 車 }広島、長崎などの路面電車は、民間企業の運営である。
広島では広島電鉄、長崎では長崎電気軌道が運営を担っている。…
\subsection{ 公 営 の 路 面 電 車 }札幌、函館、鹿児島などには、市営の路面電車が走っている。…

1 路面電車のある都市
1970 年前後に日本の各都市の路面電車は次々廃止され、現在も路面電車が残っている都市は少ない。

1.1 民営の路面電車
広島、長崎などの路面電車は、民間企業の運営である。広島では広島電鉄、長崎では長崎電気軌
道が運営を担っている。…

1.2 公営の路面電車
札幌、函館、鹿児島などには、市営の路面電車が走っている。…
このように、(LATEX で作ったものに限らないが) ある程度以上の規模の文書には、節や副節*30 といった構造があり、さらにそれらにタイトルが付くのが通常である。

LATEX の場合、そうした文書の構造を指定するには、表 4.1 のようなコマンドを用いる。これらのコマンドは引数を 1 つ
とり、それが章や節のタイトルとなる。例えば \section コマンドは「\section{節のタイトル}」のように使う。
表 4.1

文書構造
部

コマンド

\part

文書構造

コマンド

文書の構造を指定するコマンド

文書構造

コマンド

文書構造

コマンド

\paragraph\subparagraph章\chapter

副節\subsection

パラグラフ*31節\section

副々節\subsubsection

副パラグラフこれらの構造は上位から下位へと至る階層的なものであり、表 4.1 で右に行くほど、また同じ列では下へ行くほど下位の構造である (すなわち、部が最上位で、章 · 節 · 副節 · · · の順に下位になる)。ただし上記の例では、使っているのは「節」と「副節」だけである (article 型クラスの文書の場合、よほど大規模な文書でない限り「節」以下だけを使うことが多い。また、それ以外のクラスでも、よほど大規模な文書でない限り「部」は使わないことが多い)。
先の例でわかるように、これらのコマンドを使うと、節や副節のタイトルは自動的に大きな字、かつ太字 (日本語文字は*30 subsection を「小節」と訳している資料が多いが、音楽用語と紛らわしいので、本資料では sub-section の直訳で「副節」と呼称する。
*31 paragraph は一般用語としては「段落」と訳されるが、L
AT X の \paragraph コマンドで表されるものは、「章」や「節」などと同様、文書中の、Eタイトルを伴った一まとまりの文章のことであり、「段落」とは別の概念であるため、本資料では「段落」ではなく「パラグラフ」と表現する。

19

ゴシック) となり、その上下も自動的にやや空く。番号も自動的に振られる。
クラス (3.1 節) によっては、表 4.1 の構造のうち一部がないこともある。例えば article 型クラスの文書には「章」という構造が存在しない (従って \chapter コマンドは使えない。部のすぐ下が節ということになる)。
また、上位の構造 (部 · 章 · 節など) にはタイトルの前に自動的に番号が付くが、下位の方の構造にはタイトルの前に番号が付かない。番号の付かない構造がどこ以下かはクラスによって異なり、例えば article 型クラスではパラグラフ以下、book
型や report 型では副々節以下には番号が付かない*32 。次の例は、jsarticle の場合である。

\subsubsection{ 副 々 節 の タ イ ト ル }このように、副々節のタイトルには番号が付く。

\paragraph{ パ ラ グ ラ フ の タ イ ト ル }このように、パラグラフのタイトルには番号が付かない。
なお、パラグラフの場合は副々節以上と異なり、タイトルの行の続きに本文が来ていることにも注意。

1.1.1

副々節のタイトル

このように、副々節のタイトルには番号が付く。
■パラグラフのタイトル

このように、パラグラフのタイトルには番号が付かない。なお、パラグ

ラフの場合は副々節以上と異なり、タイトルの行の続きに本文が来ていることにも注意。
さらに、番号の付き方もクラスによって異なる。article 型では、第 1 節の第 2 副節のタイトルには番号「1.2」が付く、というように、タイトルに付く番号は節番号から始まるが、book 型では、第 1 章第 1 節の第 2 副節のタイトルには番号「1.1.2」が付く、というように、タイトルに付く番号は章番号から始まる。
節などに番号を振りたくない場合は \section*{節のタイトル} などのようにする。

\subsubsection{ 副 々 節 の タ イ ト ル }この副々節のタイトルには番号が付く。

\subsubsection*{ 副 々 節 の タ イ ト ル 、 番 号 な し }この副々節のタイトルには番号が付かない。

1.1.1

副々節のタイトル

この副々節のタイトルには番号が付く。
副々節のタイトル、番号なし
この副々節のタイトルには番号が付かない。

4.2 箇条書き
書 · 節など文書全体の構造の他に、よく用いられる文書の論理構造としては、「箇条書き」がある。LATEX が用意している
箇条書き機能には、番号なし箇条書き、番号付き箇条書き、説明用箇条書きの 3 種がある。

4.2.1 番号なし箇条書き (itemize 環境)
番号なし箇条書きは、itemize 環境 (環境については 1.2.6 節参照) を使って

\begin{itemize}\item 項目その1\item 項目その2···\end{itemize}のように書く。以下は例である。
*32 変更も可能だが、本資料では省く。

20

JR 西 日 本 の 一 部 ロ ー カ ル 線 で は 、 か つ て 、 月 に 1 回 程 度 、
保守のために昼間の数時間、全列車を運休していた。
近畿地方およびその近隣で運休対象となっていた路線には、
例えば以下のようなものがある。

\begin{itemize}\item 関 西 本 線 ・ 加 茂 --- 亀 山\item 加 古 川 線 ・ 厄 神 --- 谷 川\item 小 浜 線\end{itemize}
代行バスなどはなく、長時間全く列車を利用できなくなるため、批判も多かった。現在では運休措置は行われていない。

JR 西日本の一部ローカル線では、かつて、月に 1 回程度、保守のために昼間の数時間、全列車を運休していた。近畿地方およびその近隣で運休対象となっていた路線には、例えば以下のようなものがある。

• 関西本線・加茂—亀山• 加古川線・厄神—谷川• 小浜線
代行バスなどはなく、長時間全く列車を利用できなくなるため、批判も多かった。現在では運休措置は行われていない。
この例で、itemize 環境が終わった直後の「代行バス · · · 」が字下げされていないのは、ソースの「\end{itemize}」の直後に空行がないため、そこで段落が改まらないからである。これに対し

JR 西 日 本 の 一 部 ロ ー カ ル 線 で は 、 か つ て 、 月 に 1 回 程 度 、
保守のために昼間の数時間、全列車を運休していた。
近畿地方およびその近隣で運休対象となっていた路線には、
例えば以下のようなものがある。

\begin{itemize}\item 関 西 本 線 ・ 加 茂 --- 亀 山\item 加 古 川 線 ・ 厄 神 --- 谷 川\item 小 浜 線\end{itemize}
代行バスなどはなく、長時間全く列車を利用できなくなるため、批判も多かった。現在では運休措置は行われていない。
のようにすると、itemize 環境の直後の空行によって段落が改まるので、

JR 西日本の一部ローカル線では、かつて、月に 1 回程度、保守のために昼間の数時間、全列車を運休していた。近畿地方およびその近隣で運休対象となっていた路線には、例えば以下のようなものがある。

• 関西本線・加茂—亀山• 加古川線・厄神—谷川• 小浜線
代行バスなどはなく、長時間全く列車を利用できなくなるため、批判も多かった。現在では運休
措置は行われていない。
のように、「代行バス · · · 」の部分が新たな段落の始まりとなって字下げが起きる。

itemize 環境は入れ子にできる (4 重まで)。外側と内側の itemize 環境では自動的に先頭のマークが変わる。

21

\begin{itemize}\item 1 つ 目 の 項 目\item 2 つ 目 の 項 目\begin{itemize}\item 2 つ 目 の 項 目 の サ ブ 項 目 1\item 2 つ 目 の 項 目 の サ ブ 項 目 2\end{itemize}\item 3 つ 目 の 項 目 。 こ の 項 目 は と っ て も と っ て も と っ て も と っ て も と っ て もとってもとってもとってもとってもとってもとってもとっても長い。

\end{itemize}• 1 つ目の項目• 2 つ目の項目– 2 つ目の項目のサブ項目 1– 2 つ目の項目のサブ項目 2• 3 つ目の項目。この項目はとってもとってもとってもとってもとってもとってもとってもとってもとってもとってもとってもとっても長い。
このように、1 つの項目が 1 行より長くなっても構わない。
各項目の先頭の「•」の記号は変更できる。1 項目だけ臨時に変更したいなら \item[先頭に付けたい記号] とする。例えば\begin{itemize}\item 1 つ 目 の 項 目\item[\(\star\)] 2 つ 目 の 項 目\item 3 つ 目 の 項 目\end{itemize}• 1 つ目の項目⋆ 2 つ目の項目• 3 つ目の項目
ここで、\star は星印を出すコマンド (表 9.5) だが、9 節で述べる「数式モード」の中でしか使えない。
「\(」と「\)」で囲
んだ中は「インライン数式モード」(9.1 節) になるので、その中で \star を使っている。
ある itemize 環境の全項目の先頭の記号を変えたいなら、以下のようにする。

\begin{itemize}\renewcommand{\labelitemi}{\(\star\)}\item 1 つ 目 の 項 目\item 2 つ 目 の 項 目\item 3 つ 目 の 項 目\end{itemize}⋆ 1 つ目の項目⋆ 2 つ目の項目⋆ 3 つ目の項目\renewcommand は、あるマクロ (コマンド) の定義を変更するコマンド (詳しくは 14.1 節参照) で、ここでは \labelitemiというマクロを「\(\star\)」と再定義している。一番外側の itemize 環境の先頭のマークには \labelitemi が使われるので、これを再定義することによって先頭のマークが変わるのである (普段は \labelitemi というマクロは「\textbullet」と定義されており、これは小さな黒丸「•」を出力するコマンド (表 7.2) なので、一番外側の itemize 環境の先頭のマークは
普段は「•」になる)。外側から 2 番目の itemize 環境の先頭のマークは \labelitemii (外側から 3 番目は \labelitemiii、

4 番目は \labelitemiv。末尾にローマ数字の i, ii, iii, iv がつく)。
なお、環境の中で定義したマクロは環境内でのみ有効なので、上の例の \labelitemi の定義は itemize 環境を抜けると無効になり、よって次の itemize 環境の先頭の記号は元に戻る。これに対し

22

\renewcommand{\labelitemi}{\(\star\)}\begin{itemize}\item 1 つ 目 の 項 目\item 2 つ 目 の 項 目\item 3 つ 目 の 項 目\end{itemize}のように環境外部で定義すると、以後全ての itemize 環境に影響を及ぼす。

4.2.2 番号付き箇条書き (enumerate 環境)
番号付き箇条書きは\begin{enumerate}\item 項目その1\item 項目その2···\end{enumerate}のように書く。これを enumerate 環境と呼ぶ。
東 京 --- 大 阪 間 の 交 通 路 は 、 鉄 道 、 道 路 交 通 、 航 空 な ど 、
多様な選択肢がある。以下はその一部である。

\begin{enumerate}\item 鉄 道 (JR)\begin{enumerate}\item 新 幹 線\begin{itemize}\item の ぞ み\item ひ か り\end{itemize}\item 在 来 線\begin{itemize}\item サ ン ラ イ ズ 瀬 戸 ・ 出 雲 ( 寝 台 特 急 、 上 り の み 利 用 可 )\item 普 通 ・ 快 速 乗 り 継 ぎ\end{itemize}\end{enumerate}\item 高 速 バ ス\item 飛 行 機\end{enumerate}
東京—大阪間の交通路は、鉄道、道路交通、航空など、多様な選択肢がある。以下はその一部である。

1. 鉄道 (JR)（a）新幹線• のぞみ• ひかり（b）在来線• サンライズ瀬戸・出雲 (寝台特急、上りのみ利用可)• 普通・快速乗り継ぎ
2. 高速バス
3. 飛行機
番号は自動的に振られるので、途中に項目を加除しても、番号を手で付け直す必要はなく、便利。また、enumerate 環境
も入れ子にでき (4 重まで)、外側と内側の enumerate 環境では番号の振り方が異なる。itemize 環境と互いに入れ子にする23

ことも可能 (計 6 重まで)。
番号の振り方の変更もできる。1 項目だけ臨時に変更するなら、itemize 環境と同様。全項目を変更したいなら、例えば\begin{enumerate}\renewcommand{\theenumi}{\Alph{enumi}}\renewcommand{\labelenumi}{\theenumi)}\item 最 初 の 項 目\item そ の 次 の 項 目\item そ の ま た 次 の 項 目\end{enumerate}A) 最初の項目
B) その次の項目
C) そのまた次の項目のように、\theenumi と \labelenumi の 2 つのマクロを再定義する。これは番号を「A)」「B)」· · · のように、アルファ
ベット大文字 +「)」で振ってみた例。\theenumi の定義の \Alph を \alph, \Roman, \roman, \arabic に変えるとそれぞれ、振り方がアルファベット小文字 · ローマ数字大文字 · 同小文字 · 普通の数字に変わる (また、入れ子の enumerate 環境の場合は、外側から 2 番目の enumerate 環境に対しては \theenumii と \labelenumii の 2 つを同様に再定義。外側から 3番目以降の場合は末尾がローマ数字の iii, iv に変わる)。やや込み入ってくるので、詳しくは LATEX の参考書を参照*33 。

4.2.3 説明用箇条書き (description 環境)
項目を挙げてそれぞれの説明を書くのに適した環境である。項目の名前は \item の後ろに [ ] で囲んで書く。
文書を作成・清書するためのソフトウェアとして広く使われているものには、
以下のようなものがある。

\begin{description}\item[\LaTeX] 仕 上 が り の 美 し さ が 特 徴 で 、
数学・情報科学関係の論文を書く手段としては標準の地位を占めている。
フリーソフトウェアとして配布されている。
\item[Word] Microsoft 社 の 商 用 ソ フ ト ウ ェ ア 。 操 作 が 難 し い 。
特に、バージョンが変わると操作ががらりと変わったりするのが悩みの種。
お値段が張る点も、予算の限られた部署では厳しい。
\item[LibreOffice] Word と 互 換 性 の あ る フ リ ー ソ フ ト ウ ェ ア 。
Word で 作 っ た 文 書 を LibreOffice で 修 正 し た り 、 そ の 逆 が 可 能 。
た だ し 互 換 性 は 完 璧 と い う わ け に は い か な い 。 Linux で も 使 え る 。

\end{description}
文書を作成・清書するためのソフトウェアとして広く使われているものには、以下のようなものがある。

LATEX 仕上がりの美しさが特徴で、数学・情報科学関係の論文を書く手段としては標準の地位を占めている。フリーソフトウェアとして配布されている。

Word Microsoft 社の商用ソフトウェア。操作が難しい。特に、バージョンが変わると操作ががらりと変わったりするのが悩みの種。お値段が張る点も、予算の限られた部署では厳しい。

LibreOﬃce Word と互換性のあるフリーソフトウェア。Word で作った文書を LibreOffice で修正
したり、その逆が可能。ただし互換性は完璧というわけにはいかない。Linux でも使える。

4.3 引用「引用」も、(どの部分が引用であるかを明確にしなければならないので) 文書の構造の 1 つと見なせる。
*33 ただし、enumerate パッケージや enumitem パッケージを使えば、もっと容易に番号の振り方を変更することができる (本資料では略)。

24

LATEX には、「この部分が引用である」ことを示す目的の環境として、quote 環境 (1.2.6 節に登場) と quotation 環境の 2
種類がある。どちらも、引用の部分を字下げすることによって引用の範囲を示す。以下は、その 2 種類を使った例である。

2003 年 11 月 1 日 付 の 京 都 新 聞 で\begin{quote}
希少種「ヤマネ」を発見 国の天然記念物、志明院で冬眠中\end{quote}というニュースが報じられた。それによると、\begin{quotation}
鴨川の源流に位置する京都市北区雲ケ畑の志明院で、国の天然記念物で希少種のヤマネが冬眠しているのが見つかった。
紅葉が色づき始めた北山で、冬じたくを終えた小さな生命を住職たちが温かく見守っている。
ヤ マ ネ は リ ス の 仲 間 で 、 体 長 約7セ ン チ 。
晩秋から冬にかけて、樹洞で体温を下げて仮死状態になって冬眠する。
日本最古のほ乳類とされ、太古のままの体のつくりから「生きた化石」と呼ばれる。京都府内で、姿を見ることは極めて珍しい。…

\end{quotation}という。また、同記事には、球状に体を丸めて眠る、
かわいらしいヤマネの姿の写真も掲載されていた。

2003 年 11 月 1 日付の京都新聞で希少種「ヤマネ」を発見 国の天然記念物、志明院で冬眠中というニュースが報じられた。それによると、
鴨川の源流に位置する京都市北区雲ケ畑の志明院で、国の天然記念物で希少種のヤマネが冬眠しているのが見つかった。紅葉が色づき始めた北山で、冬じたくを終えた小さな生命を住職たちが温かく見守っている。
ヤマネはリスの仲間で、体長約 7 センチ。晩秋から冬にかけて、樹洞で体温を下げて仮死状態になって冬眠する。日本最古のほ乳類とされ、太古のままの体のつくりから「生きた化石」と呼ばれる。京都府内で、姿を見ることは極めて珍しい。…
という。また、同記事には、球状に体を丸めて眠る、かわいらしいヤマネの姿の写真も掲載されていた。

quote 環境と quotation 環境のどちらも、左側が通常よりやや字下げされる*34 。両者の違いは、(上の例に見られるように)
quote 環境は段落の先頭行の頭を下げないが、quotation 環境は下げる点である。従って、前者は短めの文 (あるいは文章以外で、先頭行をそれ以降よりも多く字下げする必要のないもの) の引用、後者は長めの文の引用に向く。

quote 環境の中で、強制改行のコマンド「\\」を使うと、詩や歌詞のようなものも書ける*35 。
水戸黄門の主題歌のメロディーで歌ってみよう。

\begin{quote}
ど ん ぐ り こ ろ こ ろ ど ん ぶ り こ \\お 池 に は ま っ て さ あ 大 変 \\ど じ ょ う が 出 て き て こ ん に ち は \\坊ちゃん一緒に遊びましょう\end{quote}ぴ っ た り は ま る の で 驚 く が 、 こ れ は 単 に 両 者 と も 歌 詞 が7・5音 の 繰 り 返 し でできているからである。
*34 これらの環境では、js 系クラスでは左だけ字下げされるが、それ以外のクラスでは一般に、右側も左側と同じだけ字下げされる。
*35 詩を書くには本来 verse 環境というものがあるのだが、本資料では省いた。

25

水戸黄門の主題歌のメロディーで歌ってみよう。
どんぐりころころどんぶりこ
お池にはまってさあ大変
どじょうが出てきてこんにちは
坊ちゃん一緒に遊びましょう
ぴったりはまるので驚くが、これは単に両者とも歌詞が 7・5 音の繰り返しでできているからである。

quote 環境内の最後の行には「\\」を書かないことに注意。
\\ による強制改行は、(quote 環境や 8.3.1 節に出てくる center 環境など、もともとその中で \\ を使うことを想定している一部の環境の中を除いて) 本文中では滅多に使われない (特に、\\ は改段落ではない。本文中に \\ を多用しているよ
うなら、おそらく LATEX の使い方が不適切)。また、\\ を 2 回続けて空行を空けようとするのも誤りで、どうしてもやりたければ「\\[4mm]」のように、空く高さを指定して改行するコマンドを使うか、あるいは段落の境目で \vspace コマン
ド (表 15.1) を使うことになる。しかし根本的には、行間を開けたい場合の大部分は、節のタイトルの前後とか、箇条書きとその前後との間などを開けようとする場合であろうから、そのためには空きの高さを \\ や \vspace などで手動で指定したりせず、\section や itemize 環境などを使って、縦の空きの調整は LATEX に任せるのが正しい。4 節冒頭で述べた
ように、LATEX では文書の整形に関する指示を直接出さずに、文書の論理的構造のみ示すという考え方があるためである。

4.3.1 プログラムソースの引用プログラムソースを引用することもよくあるが、プログラムソースには LATEX にとっての特殊文字が大量に含まれることが多い。いちいち 1.2.5 節に説明したようなコマンドで特殊文字を出力するのは大変である。
こんな場合には verbatim 環境が便利。この環境の中では、「\end{verbatim}」という文字列を除いて、特殊文字も全てそのまま出力される。行の切り直しも起こらないし、連続した空白も 1 つと見なされない (ただしタブ文字は、行頭のものは全く無視され、それ以外のものは空白 1 つと同じと見なされるので注意*36 )。また、字体は自動的に、プログラムソースの引用に適した「タイプライタ体」(6.2 節) という等幅の字体になってくれる。例えば下 記 はC言 語 の プ ロ グ ラ ム の 例 で あ る 。
\begin{verbatim}#include␣<stdio.h>
int␣main(void){␣␣␣␣printf("Hello,␣World\n");␣␣␣␣return␣0;}\end{verbatim}
これをコンパイルして実行してみよう。
というソースの出力は、verbatim 環境の中身が全てそのまま出力されて以下のようになる。
下記は C 言語のプログラムの例である。

#include <stdio.h>
int main(void){
printf("Hello, World\n");return 0;}
これをコンパイルして実行してみよう。

*36 すなわち、タブ文字の使われているプログラムソースなどを verbatim 環境の中に取り込もうとすると、タブ文字を空白に変換しなければならない

ことになる。なお、moreverb パッケージにはタブ文字を無視しない verbatimtab という環境が用意されている (本資料では略)。

26

verbatim 環境だけでは字下げが起きないので、プログラムソースの引用のために使うには、quote 環境の中に入れ子にして使うのがよい。また、引用するものがプログラムソースである場合は英字主体のことが多いが、その場合、日本語の標準の行送り 16pt*37 では行間が空き過ぎて見える。下の例では、quote 環境の内部は、「\baselineskip=12pt」(表 15.2, 15.3
参照) によって、行送りを欧文の標準である 12pt にしている (環境内での長さの変更は環境外には影響を及ぼさないので、

quote 環境の外まで行送りが狭くなってしまうことはない)。
初 心 者 向 け のC言 語 の 参 考 書 の 最 初 の 例 題 は 、な ぜ か 判 で 押 し た よ う に 、 「 Hello, World 」 を 出 力 す る プ ロ グ ラ ム になっていることが多い。下記がそのプログラムである。

\begin{quote}\baselineskip=12pt\begin{verbatim}#include <stdio.h>
int main(void){
printf("Hello, World\n");return 0;}\end{verbatim}\end{quote}本 に よ っ て は main 関 数 の 型 を int で な く void と し て い る も の も あ る が 、それは誤りであるので注意されたい。
初心者向けの C 言語の参考書の最初の例題は、なぜか判で押したように、「Hello, World」を出力するプログラムになっていることが多い。下記がそのプログラムである。

#include <stdio.h>
int main(void){
printf("Hello, World\n");return 0;}
本によっては main 関数の型を int でなく void としているものもあるが、それは誤りであるので注意されたい。
この他に、\verb というコマンドもある*38 。これは、文中の短い部分をタイプライタ体にするとともに、特殊文字をそのまま出力するためのものである。以下の例のように、対象にしたい部分を同じ文字 (この場合は「|」) ではさんで使う (この部分は \verb コマンドの「引数」(1.2.4 節) ではないので「{ }」では囲まない)。
ソ ー ス 中 の 「 \verb|\LaTeX| 」 は 、 「 \LaTeX␣ 」 と 出 力 さ れ る 。
このソースの出力は以下のようになる。「\verb| |」に囲まれた部分は、特殊文字「\」も含めてそのまま、しかもタイプラ
イタ体で出力されている。
ソース中の「\LaTeX」は、「LATEX」と出力される。

\verb コマンドの場合、対象にしたい部分をはさむ文字は同じ文字でさえあればよい (ただし「*」だけは使えない)。例
えば、以下のようなソースでも上と同じ出力を得る。
ソ ー ス 中 の 「 \verb+\LaTeX+ 」 は 、 「 \LaTeX␣ 」 と 出 力 さ れ る 。
注意すべきなのは、verbatim 環境や \verb コマンドは、他のコマンドの引数内では使えない点である (他の環境の中は大丈夫)。例えば \verb コマンドを \section コマンドの引数の中で使って*37 jsarticle の場合。jarticle だと 15pt。
*38 \verb によく似た \verb* というコマンドもある。違いは、\verb* では空白が「␣」と出力される点である。同様の点で verbatim と異なる、

verbatim∗ という環境もある。

27

\section{ 特 殊 文 字 「 \verb|$| 」 に つ い て }のようにしてもうまくいかない*39 。

4.4 脚注
脚注を書くには \footnote コマンドを使う。これは環境ではなくコマンドで、引数に、脚注にしたい中身を書く。

UNIX ・ Linux 上 の 、 フ リ ー ソ フ ト ウ ェ ア と し て 提 供 さ れ て い る
日 本 語 入 力 シ ス テ ム の1つ と し て 、
京 大 ・ オ ム ロ ン ・ ア ス テ ッ ク が 開 発 し た Wnn\footnote{Wnn と い う 名 称 は「 私 の 名 前 は 中 野 で す 」 に 由 来 す る 。}が か つ て よ く 使 わ れ て い た 。
UNIX・Linux 上の、フリーソフトウェアとして提供されている日本語入力システムの 1 つとして、京大・オムロン・アステックが開発した Wnn*1 がかつてよく使われていた。
*1 Wnn という名称は「私の名前は中野です」に由来する。

4.5 タイトルと概要
文書の先頭に、文書のタイトルや概要を出力したい場合がある。

4.5.1 タイトル
文書先頭にタイトルを表示するには以下の例のようにする*40 。タイトルを指定するコマンド \title, 著者名を指定する
コマンド \author, 日付を指定するコマンド \date を書き (この 3 つの順番は任意だが、出力は必ずタイトル · 著者 · 日付の順になる)、その後にタイトルを出力するコマンド \maketitle を書く。これらを「\begin{document}」の直後、本文を書くより前に置く (\maketitle 以外の 3 つはプリアンブルに置いてもよい)。

\documentclass[a4j]{jsarticle}\begin{document}\title{ お い し い カ レ ー の 作 り 方 }\date{2016 年 9 月 30 日 }\author{ 山 田 花 子 }\maketitle
この先に本文を書く…

おいしいカレーの作り方
山田花子

2016 年 9 月 30 日
この先に本文を書く…

\date と \author は省略してもいい。省略した場合、著者のところには何も書かれず、日付のところは自動的に今日の日付 (ただし、印刷や PDF ファイル化をした日ではなく、platex コマンドを実行した日になるので注意) になる。
日付を省略した場合に出力される「今日の日付」は、jarticle, jbook, jreport クラスの場合、デフォルトでは元号になっ*39 ただし、js 系クラスでは \footnote コマンドの中でだけは \verb コマンドが使える (ように特別な工夫がしてある)。
*40 クラスによって若干やり方が変わる場合がある (特に、学会誌投稿用などに用意された専用のクラスの場合)。

28

てしまうので注意。ただし、\maketitle コマンドより前に「\西暦」というコマンドを書いておけば西暦になる。js 系クラスの場合は「\西暦」コマンドを書かなくても西暦になる。

著者が複数いる場合や、著者の所属も書きたい場合は\documentclass[a4j]{jsarticle}\begin{document}\title{ お い し い カ レ ー の 作 り 方 }\author{ 山 田 花 子 \\ 奈 良 女 子 大 学 \and␣ 中 村 三 太 郎 \\ 京 都 大 学 }\maketitle
この先に本文を書く…
のように、複数の著者を \and で区切り、著者と所属を \\ で区切る。この例では、\date コマンドも省略してみた。その場合、日付のところには platex コマンドを実行した日付が入る。

おいしいカレーの作り方
山田花子

中村三太郎

奈良女子大学

京都大学

2016 年 10 月 1 日
この先に本文を書く…

4.5.2 概要
論文などでは文書の先頭 (タイトルの次) に概要を表示することが多い。それには abstract 環境を以下のように使う*41 。

\begin{abstract}
本稿では、数学や情報科学の分野では欠かせない文書清書
シ ス テ ム で あ る \LaTeX の 使 い 方 に つ い て 述 べ る 。

\end{abstract}
概要
本稿では、数学や情報科学の分野では欠かせない文書清書システムである LATEX の使い方について述べる。

article のような欧文用のクラスで abstract 環境を使うと、「概要」ではなく「Abstract」と出る。
なお、book 型のクラスでは abstract 環境は使えない (book 型は書籍の全体を想定したクラスであり、書籍の先頭には概要は付けないからである)。
jsarticle クラスでかつ二段組み (twocolumn オプション、表 3.2) を指定している場合は、abstract 環境の使用について以下の注意点がある。

• 文書のタイトルを付けないと (\maketitle コマンドを使わないと)、abstract 環境があっても概要が出力されない。
• \maketitle コマンド (通常は abstract 環境より前) を abstract 環境より後に置くと、2 段組みであっても概要の部
分だけ 1 段組みにすることができる。jarticle などのクラスではそうはならない。

4.5.3 付録
また、やはり論文などでは、証明の詳細などをまとめて後ろに「付録」として付ける場合がある。本文中に \appendix と書くと、以降で \section などを使った場合の節番号 (book 型や report 型のクラスの場合は章番号) が A, B, C, · · · とな

*41 これも、特に学会誌投稿用などのクラスの場合、若干やり方が変わることがある。

29

るので、その部分が付録という格好になる。

\section{ 最 初 の 節 }かくかくしかじか\section{ 次 の 節 }ほえほえふひょひょ\appendix\section{ 付 録 }ここに付録を書く…

\subsection{ ち な み に }副 節 番 号 の 頭 に も A, B, … が 使 わ れ る\section{ 続 ・ 付 録 }ここに付録の続きを書く…

1 最初の節かくかくしかじか

2 次の節
ほえほえふひょひょ

付録 A

付録

ここに付録を書く…

A.1 ちなみに
副節番号の頭にも A, B, …が使われる

付録 B

続・付録

ここに付録の続きを書く…

5 AUCTEXAUCTEX とは、Emacs で利用できる、LATEX ソースの入力支援機構の 1 つである。
LATEX のソースファイルをエディタで打ち込むときに、毎度毎度「\documentclass· · · 」とか「\begin{何とか}· · · \end{何とか}」などと打ち込むのは結構わずらわしい。AUCTEX を使えば、簡単なキー操作でそれらの決まり文句を素早く入力できる。また、その後に platex コマンドで DVI ファイルを生成 (コンパイル) したり、印刷や xdvi によるプレビューを行ったりする過程も、簡単なキー操作でできる。

Emacs 上の LATEX ソースの入力支援機構としては、他にも「野鳥」(YaTeX) や、あるいは Emacs に最初から付属の「TEX モード」などもあるが、ここでは、G 棟計算機システムに既にインストールされていてすぐ利用でき、かつ便利な

AUCTEX を取り上げる。

5.1 準備G 棟計算機システムの場合は、AUCTEX をすぐ利用できる準備が整っている。
G 棟計算機システム以外の Linux の場合は、AUCTEX を利用するには準備がいる。AUCTEX を (Linux のパッケージなどで) インストールしておき、その上で、ホームディレクトリの .emacs ファイルに以下の内容を書き加えよう。以後起動する Emacs では、AUCTEX が使えるようになる (既に起動されている Emacs には効かない)。

30(require ’tex-site "" t)(setq TeX-default-mode ’japanese-latex-mode)(setq japanese-TeX-command-default "pTeX")(setq japanese-LaTeX-command-default "pLaTeX")(setq japanese-LaTeX-default-style "jsarticle")(setq LaTeX-default-options "a4j")(setq kinsoku-limit 10)(setq LaTeX-top-caption-list ’("table"))このうち「(setq kinsoku-limit 10)」の部分は、禁則処理によって行長が何文字延びてもいいかの設定である。デフォルトは 4 だが、少し長くしておかないと編集中に単語の途中で切れてしまうことがあるため、ここでは 10 としている。
また、「(setq LaTeX-top-caption-list ’("table"))」の部分は、表のキャプション (10.4 節) が表の上に置かれるようにするためのものである。表のキャプションは表の上に置くのが慣習だが、AUCTEX ではこの設定をしておかないと表の下に出てしまい、手作業で表の上に動かさねばならなくなる。
「’」(シングルクォート) が釣り合っていないのは誤りではない (Lisp 言語の表記法である)。

5.2 キー操作
AUCTEX が利用できる状態になっている場合は、×××.tex というファイル名のファイルを編集しようとすると、自動的に AUCTEX の LATEX モードに入る。LATEX モードに入ると、
モ ー ド ラ イ ン (Emacs の 画 面 の 下 か ら 2 行 目 に あ る 灰 色 の 行) の 真 ん 中 少 し 右 あ た り に「(LaTeX)」(ま た は「(LaTeX/P)」) の表示が現れ、かつそれより左に「Ln」(ここで n は数) という表示が出る(∗)

はずである。もしそのような表示にならない場合は、 ESC x japanese-latex-mode  で LATEX モードに入る。あるいは、×××.tex ファイルの先頭にあらかじめ% -*- japanese-latex -*という 1 行を書いておけば、そのファイルを Emacs で編集開始したときに、強制的に LATEX モードになる。いずれにしても、上の (∗) のような表示になるはずである。そうならない場合、AUCTEX がインストールできていないか、あるいは 5.1
節の準備ができていないことが考えられる。

LATEX モードに入ると、表 5.1 のキー操作が利用できるようになる (抜粋)。(RET は  キーを表す。Ctrl-C とは、Ctrl
キーを押しながら C を押すことを表す)
表 5.1 AUCTEX のキー操作

キー

機能

Ctrl-C Ctrl-E

環境 (1.2.6 節) の入力。特に、編集開始時は \documentclass や \begin{document} ∼\end{document} の入力
Ctrl-C Ctrl-S

節などのタイトル (\section など。4.1 節) の入力

Ctrl-C RET

コマンドの入力

Ctrl-C Ctrl-C

コンパイル (platex を自動起動して DVI ファイルの生成) やプレビュー、印刷など

5.2.1 編集開始
例えば Emacs で fofofo.tex という新規ファイルを編集開始し、Ctrl-C Ctrl-E と押すと、ミニバッファ (Emacs 画面の一番下にある、Emacs とのやりとりのための 1 行) で

Environment type: (default document)と聞いてくる*42 ので、そのままリターン (Enter) キーを押せばまず*42 ミニバッファに表示されるものは、AUCT X のバージョンなどによって微妙に異なることもある。以後も同様。

E

31

\documentclassがバッファ (編集画面) に入る。次いでミニバッファでDocument class: (default jsarticle)と聞いてくるので、クラスが jsarticle で良ければそのままリターンを押す。さらに、クラスのオプションを

Options: a4jと聞いてくるので*43 、そのままで良ければリターンキーを押す*44 。するとバッファに\documentclass[a4j]{jsarticle}\begin{document}\end{document}が入って、カーソルが \begin{document} の次の空行へ行くので、ここに本文を入力していけばよい。
クラスを jsbook にしたいときは、ミニバッファでDocument class: (default jsarticle)と聞いてきた時に、「jbook」と答えてリターンキーを押す (「(default jsarticle)」のところを書き直すのではなく、その右に新たに「jsbook」と打ち込む)。「jsbook」と全て打ち込まなくても、「jsb」まで打ち込んで TAB キーを押せば補完が効く。また、クラスのオプションを変更したい場合は、Options: a4jと聞いてきた時に、「a4j」を消して好きなオプションを入力する。残念ながらオプションの箇所には補完が効かない。

5.2.2 本文入力から印刷まで
最初は、環境もコマンドも使わない簡単な本文だけ入力してみよう。5.2.1 節の操作が済むと、カーソルが \begin{document} の後ろへ来ているはずなので、それに続けて、本文に、例えば「私の名前は中野です」と入力する。するとバッファはこのようになる。

\documentclass[a4j]{jsarticle}\begin{document}
私の名前は中野です\end{document}■コンパイル ここで Ctrl-C Ctrl-C と打ち込むと、ミニバッファでまずSave file fofofo.tex? (y or n)と聞いてくる (これに先立って Ctrl-X Ctrl-S などでセーブを行っている場合は聞いてこない) ので、 y と答える。すると
ファイルがセーブされる。続いてミニバッファでCommand: (default pLaTeX)(pLaTeX でなく LaTeX の場合もある)と聞いてくるので、そのままリターンを押す。これで platex が自動起動され、DVI ファイルが作られる。
■プレビュー 無事 DVI ファイルができた後、プレビューするには、再度 Ctrl-C Ctrl-C と打ち込む。すると、今度はミニ*43 AUCT X のバージョンによっては「a4j」と入らない場合がある。その場合は手で「a4j」と入れる必要がある。

E
E*44 AUCT X のバージョンによっては、この次に「Packages:」と聞いてくることがある。その場合、再度そのままリターンキーを押せばよい。ただし、ここでパッケージ名 (1.2.7 節) を入力することもできる。

32

バッファでCommand: (default View)と聞いてくる (同じ Ctrl-C Ctrl-C でも、DVI ファイルとソースファイルのどちらが新しいかによって、default を pLaTeXと View のどちらにするかを自動判断しているのである)。そのままリターンを押すと、次に、プレビューのための実際のコ
マンドを、ミニバッファで(xdvi の次に -unique が入る場合もある)

View command: xdvi fofofo.dviと聞いてくるので、再度そのままリターンを押せば、xdvi が自動起動されてプレビューできる。
何らかの理由で、プレビューのコマンドを変更したい場合は、書き換えてからリターンを押せばよい。例えばソースが\documentclass[a4j,landscape]{jsarticle}\begin{document}
私の名前は中野です\end{document}になっている場合にプレビューするには、ミニバッファを以下のように書き換えてからリターンキーでよい。

View command: xdvi -paper a4r fofofo.dvi■印刷 印刷するには、また Ctrl-C Ctrl-C と打ち込む。ミニバッファでCommand: (default View)と聞いてくるが、今度は「Print」と打ち込んで (全部打ち込まなくても「Pr」まで打って TAB キーで補完すればよい)、リ
ターンを押す。すると、次にはミニバッファでPrinter: (default Local)(Local でなく Default の場合もある)と聞いてくる。デフォルトのプリンタ (G 棟計算機システムで G401 のマシンを使っている場合は G401 のモノクロプリン
タ、G301 や G102 のマシンを使っている場合はそれぞれの部屋のモノクロプリンタ) に出す場合はそのままリターンを押す。するとミニバッファに

Print command: dvips -f fofofo.dvi | lprと出る (G 棟計算機システム以外の場合は異なる) ので、そのままリターンを押せば「dvips -f fofofo.dvi | lpr」というコマンドが自動実行されてプリンタに出る。印刷のコマンドを書き換えることも可能。例えばソースが\documentclass[a4j,landscape]{jsarticle}\begin{document}
私の名前は中野です\end{document}になっている場合に印刷するには、ミニバッファを

Print command: dvips -f -t landscape fofofo.dvi | lprに書き換えてからリターンを押す。
デフォルトのプリンタ以外のプリンタに出すなら、ミニバッファでPrinter: (default Local)と聞いてきた時に、プリンタ名を入力する。例えば (G 棟計算機システムで)G401 のカラープリンタに出すなら cprt401 と
入力 (補完も効く)。リターンを押すとミニバッファに33

Print command: dvips -f fofofo.dvi | lpr -Pcprt401と出るので、そのまま、あるいは必要に応じてコマンドを書き換えてからリターンを押す。

5.2.3 ソースに誤りがある場合
ソースに誤りがある場合にどうなるか見てみよう。バッファに\documentclass[a4j]{jsarticle}\begin{document}
只 今 \LaTeX の 試 験 中\end{document}と書かれている (「\LaTeX」の後ろに空白を空けるべきなのに空いていない) 状態で Ctrl-C Ctrl-C とし、次いでリターンキーを押す。するとミニバッファに

pLaTeX errors in ‘*~/fofofo output*’. Use C-c ‘ to display.
と出て、エラーが起きたことを知らせてくれる。Ctrl-C ‘ と操作 (Ctrl-C ’ ではないので注意!) してみよう。Emacs の画面が 2 つに分かれ、下半分で、エラーのあった行と原因を

ERROR: Undefined control sequence.
--- TeX said --l.4 只 今 \LaTeX の 試 験 中--- HELP --TeX が 未 定 義 の 命 令 名 を 発 見 し ま し た ． お そ ら く 入 力 の 誤 り で し ょ う ． も し この エ ラ ー が LaTeX 命 令 の 処 理 中 に 生 じ た 場 合 は ， そ の 命 令 は 間 違 っ た 位 置 に 置 か
れ て い ま す ． 例 え ば ， リ ス ト 環 境 の 中 で な い の に \item 命 令 が 使 わ れ た 場 合 な ど
で す ． ま た ， \documentclass 命 令 が な い 場 合 に も こ の エ ラ ー が 生 じ ま す ．
のように (普通に platex コマンドを起動した時より若干詳しく) 教えてくれ、カーソルが該当行に飛ぶ。
このメッセージを消すには、Ctrl-X 1 (コントロールエックスの次はエルではなく、いち) としよう。AUCTEX に限らず
一般に、Emacs で画面が 2 つに分かれた時は、Ctrl-X 1 とすると、カーソルのあるところが残って、画面が再び 1 つに戻る。

5.2.4 本文入力の詳細■節関係コマンドの入力\section, \subsection のような章 · 節関係のコマンドは、Ctrl-C Ctrl-S で入力する。

例えばソースに「\section{はじめに}」と打ち込みたいときは、Ctrl-C Ctrl-S と打ち込むとミニバッファにSelect level: (default section)と聞いてくるので、section で良ければそのままリターンを押す。次いでWhat title:と聞いてくるので、節のタイトル「はじめに」を入力する。
次にWhat label: sec:と聞いてくるが、これは相互参照 (10 節) のためのラベルを何にするかと聞いてきているので、相互参照を特に使わないな
らそのままリターン。これで\section{ は じ め に }34

の打ち込みが完成する。

subsection にしたい場合は、Ctrl-C Ctrl-S と打ち込んでミニバッファにSelect level: (default section)と聞いてきたところで、subsection と入力する。もちろん全部入力する必要はなく、subse まで入力して TAB で補完すればよい。なおこの場合、次回の Ctrl-C Ctrl-S のデフォルトは、書き換え後のもの (subsection) になる。
■環境の入力 環境の入力は Ctrl-C Ctrl-E で行う。例えばソースに\begin{enumerate}\item 初 め の 項 目\item 次 の 項 目\end{enumerate}と打ち込みたいときは、Ctrl-C Ctrl-E と打ち込むとミニバッファに

Environment type: (default itemize)と聞いてくるので、enumerate と入力 (en まで入力して TAB で補完でよい) してリターン。するとバッファに\begin{enumerate}\item\end{enumerate}が入って、カーソルが \item の直後へ行くので、ここに「初めの項目」と入力。次いで ESC RET (ESC キーを押して離してからリターン)*45 で次の「\item」が挿入されるので、「次の項目」と入力。これで以下が完成する。

\begin{enumerate}\item 初 め の 項 目\item 次 の 項 目\end{enumerate}
入力する環境の種類によっては、さらに引数を聞いてくることもある。例えば 8 節で扱う tabular 環境 (表を書くための環境) を入力しようとして、Ctrl-C Ctrl-E に続いて tabular と入力すると、次にミニバッファでPosition:と聞いてくる。これはそのままリターンでよい (指定するなら t か c か b。表を前後の文章と同じ行に入れる場合に、表の上端 · 中央 · 下端のうちどこを前後の文章と揃えるかの指定である)。続いてミニバッファでFormat:と聞いてくるので、ここで列の配置の指定を例えば「lcr」のように入力する。すると、やっと\begin{tabular}{lcr}\end{tabular}のように tabular 環境がバッファに入ってその真ん中にカーソルが来るので、表の中身を記述していく。
実際には、「Format:」と聞いてきた時に単にリターンで答え (すると「\begin{tabular}」の後ろには「{}」だけ入る)、
後で列の配置の指定を手動で補ってもよいだろう。
何らかの理由で、手動で環境を入力した場合、「\begin」と「\end」の対応が一時的についていないことがある。現在、カーソルがある位置の環境を閉じる「\end{何とか}」を入力するには、Ctrl-C ] という手段がある。
範囲を指定して、その範囲を環境で囲むという操作も用意されていると便利な気がするが、なぜか AUCTEX にはその機能がない。Ctrl-C Ctrl-E で中身が空の環境を入力し、「\begin」と「\end」の一方をカットアンドペーストで動かして、目的の範囲を囲むのが簡単。

*45 ALT キーを押しながらリターンでも OK。

35

■その他のコマンドの入力

節関係や環境以外の、一般コマンドの入力は Ctrl-C RET で行う。例えばソースに

バ ッ ク ス ラ ッ シ ュ は \textbackslash␣ だ 。
と打ち込むには、まず「バックスラッシュは」まで打ち込んで、次に Ctrl-C RET とするとミニバッファにMacro (default ref): \と聞いてくるので、textbackslash と入力する。te まで入力してひとまず TAB キーで補完すると「text」までしか確定しないので、続けて bac まで入力して再度 TAB で補完すれば完了する。ここでリターンを押すとバ ッ ク ス ラ ッ シ ュ は \textbackslash{}になって「}」のところにカーソルが行くが、この「{}」は引数を取るコマンドのためのもの。\textbackslash は引数を取らないコマンドなので、単に「{}」を消す。続いて忘れずに空白を入力し、続きの「だ。」を打ち込めば以下が完成する。
バ ッ ク ス ラ ッ シ ュ は \textbackslash␣ だ 。
なおこの場合、「{}」を削除せず、カーソルを「}」の後ろに動かしてそのまま続けて「だ。
」を打ち込んで「バックスラッ
シュは\textbackslash{}だ。」とする手もある。6.1 節 p. 37 の、空のグループの特別な使われ方を参照。

また、AUCTEX では、 ” のキーを入力しても、状況に応じて「‘‘」か「’’」のどちらかにされてしまう。これは、1.3.3
節に述べるような理由で、クォートには直接「"」を使わないためである。何らかの理由でどうしても「"」をソースに打ち込む必要がある場合は、Ctrl-Q ” で「"」がソースに入る。
以上で AUCTEX の説明を一応終わる。LATEX での文書作成が格段に楽になるので、できるだけ使いこなそう。

6 字体 · 字のサイズ
LATEX で、字のサイズを変えたり、字体を太字や斜体に変えたりしたい場合、以下のようなコマンドを使う。

6.1 字のサイズの変更
字のサイズを変えるコマンドには、表 6.1 のようなものがある。
表 6.1

コマンド

字の大きさ

\Huge

超巨大
巨大

\huge

超特大

\LARGE

字の大きさを指定するコマンド

コマンド

字の大きさ

\Large特大\large大\normalsize

通常の大きさコマンド\small字の大きさ
小\footnotesize

脚注サイズ\scriptsize

添字サイズ

\tiny

極小

これらのコマンドは、引数をとらず、それ以後 (次に字のサイズを変えるコマンドが現れるまで) の全ての字の大きさを変えるコマンドである。
字 を \LARGE 大 き く す る と 、 ず っ と 大 き い ま ま 。

大きくすると、ずっと大きいまま。

字を

しかしそれでは不都合な場合が多いので、通常は、字のサイズの変更の影響が限定されるような使い方をする。

LATEX では、「{ }」で囲まれた部分 (コマンドの引数を囲む「{ }」は除く) はグループと呼ばれ、グループの中で行った字のサイズの変更や、グループの中で行ったコマンド定義 (コマンド定義については 14.1 節) などは、グループの外に影響を及ぼさない、という性質がある (グループを囲む「{ }」は出力には現れない)。なお、「{ }」で囲むことをグルーピン
グと呼ぶ。

36

この性質を用いて、グループの中で字のサイズの変更を行うことで、サイズの変更の影響がグループの外に及ばないようにする。これが、字のサイズ変更コマンドの通常の使い方である。
字 を {\LARGE 大 き く } し た り {\tiny 小 さ く } し た り す る 。

大きくしたり字を小さくしたりする。

この例で、「{\LARGE 大きく}」や「{\tiny 小さく}」を囲んでいる「{ }」はグルーピングの「{ }」であり、コマンドの引数を表すものではないことに注意。
話が少し外れるが、「空のグループ」は特別な使われ方をすることがある。例えはソースで「I like \LaTeX{} verymuch.」とすると、\LaTeX が引数をとらないコマンドのため、その後ろの {} は (引数ではなく) 空のグループとなり、その直後の空白が無視されない。従って出力は「I like LATEX very much.」となり、コマンドの後ろに空白を空けるもう 1
つの方法として使える (1.2.4 節では「\␣」コマンドを使う方法を示した)。

なお、字の大きさを変更するコマンドを直接使うことはあまり多くない。字の大きさを変更するのは、節のタイトルなど
特別な意味を持たせている場合が多く、その場合は専用のコマンドを使えば自動的に字の大きさは調整されるので、自分で字の大きさを変更する必要がないからである。

6.2 字体の変更
字体*46 を変更するコマンドには、大きく分けて 2 種類ある。引数をとってその引数の部分だけ字体を変えるコマンドと、(字の大きさを変更するコマンドと同様に) 引数をとらず、それ以降の全ての字の字体を変えるコマンドである。表 6.2 にそれらを示す (これらの他にもあるが、本資料では省く)。このうち \textbf は 1.2.4 節にも登場した。
表 6.2 字体を指定するコマンド (— は変化なし。ただし * は本文中に注あり)

字体

コマンド

コマンド

(引数あり)(引数なし)

英字日本語\textbf\bfseries

Bold\textsl\slshape\textit\itshape字体(引数あり)(引数なし)

英字

日本語

ゴシック

\textsf\sffamily

Sans Serif—*

Slanted—\texttt\ttfamily

Typewriter—*

Italic—\textnormal\normalfont

Roman

明朝

\emph

\em

Emphasis

強調

引数を取らないタイプのコマンドは、字の大きさを変えるコマンドと同様、影響する範囲をグルーピングで限定して使う。
字 を {\bfseries 太 字 に } す る 。 字 を \textbf{ 太 字 に } す る 。
字を太字にする。字を太字にする。

\textnormal, \normalfont は、英字をローマン体に、日本語文字を明朝体にする (これが通常の字体である)。また、\textbf, \bfseries は、英字をボールド (太字) に、日本語文字をゴシック体にする。それ以外のコマンドでは英字の字体だけが変わり、日本語文字の字体は変わらない (注: ただし js 系クラスの場合、英字をサンセリフ (Sans Serif) · タイプライ
タ体 (後述) のいずれかにするコマンドは、日本語文字をゴシック体にする)。ということは、日本語文字の字体は明朝とゴシックしか使えないことになる (日本語文字の斜体 などは、標準の方法では出力できない)。

\emph と \em はやや特殊で、これらは文中 (特に英文中) のある箇所を強調したい場合に使う。字体としては、英字はイタリックに (英文では強調したい箇所をイタリックで書くのが伝統であるため)、日本語文字はゴシックになる。ただし、これらのコマンドで強調している箇所の中でさらに \emph や \em を使うと、ローマン体と明朝に戻る (イタリックで書かれている箇所の中で、逆にローマンにすることによりその部分を目立たせるためである)。

Look! {\em This is a pen, but {\em that} is a pencil.} Right?
*46 より正確には、L
AT X ではエンコード · ファミリ · シリーズ · シェイプの 4 つのフォント属性の組み合わせで字体を指定する。やや込み入った話なEので、詳しくは LATEX の参考書を参照。

37

Look! This is a pen, but that is a pencil. Right?
Slanted (斜体) と Italic (イタリック) とは異なることに注意。前者は標準の字体と比べて、字の形はそのままで傾けただ
けであるが、後者は字の形も変わる (例: a の斜体は a、イタリックは a)*47 。

Typewriter (タイプライタ体) とは、文字幅をわざと一定にした字体*48 。コンピュータのプログラムリストや、コン
ピュータに打ち込むコマンド行などの説明を書くためによく使われる。4.3.1 節の verbatim 環境や \verb コマンドは、字体をタイプライタ体に切り替えるのに加えて、特殊文字をそのまま出力する働きも持つが、\texttt や \ttfamily*49 は字体をタイプライタ体にするだけである。
字体を変更するコマンドには、複数組み合わせて使えるものもある。例えば、太字とイタリックのコマンドを組み合わせて、太字のイタリックを実現できる。しかし、全ての組み合わせが使えるわけではない。

Roman, {\bfseries Bold, {\itshape Bold Italic,} Bold again}
Roman, Bold, Bold Italic, Bold again
環境の中での字体や字のサイズなどの変更は、環境の外には影響を及ぼさない。その理由は、環境は暗黙にグルーピングされるからである。
4.2.1 節に出てきた「環境内で定義したマクロは環境内のみ有効」という性質や、4.3.1 節に出てきた「環境内での長さの変更は環境外に影響を及ぼさない」という性質も、理由はこれと同じ (環境が暗黙にグルーピングされるから) である。グループ内での字体や字の大きさの変更、マクロの定義、長さの変更などは、グループ内でのみ有効であるため、暗黙にグルーピングされている環境内での変更は、環境外には影響しないのである。

ここは環境の外。

\begin{quote}こ こ は quote 環 境 の 中 。
こ こ で \bfseries 太 字 に 変 え た り \Large 字 を 大 き く し た り し て も 、\end{quote}
環境の外では元に戻る。
ここは環境の外。
ここは quote 環境の中。ここで太字に変えたり字を大きくしたりしても、環境の外では元に戻る。
字体を変えるコマンド (引数なしのもの) や、字の大きさを変えるコマンドは、実は同名の環境としても使える。変えたい
範囲が広い場合は、この方が範囲の初めと終わりの対応を取りやすい。
環境の外は普通の大きさの字だが\begin{Large}%
こ の 通 り 、 Large 環 境 の 中 で は 大 き い 字 に な る 。 で も\end{Large}%
環境の外では元通り。
環境の外は普通の大きさの字だがこの通り、Large 環境の中では大きい字になる。でも環境の外では元通り。
細かい話だが、\begin{Large} と \end{Large} の後に「%」がある。これは、その行の行末の改行を無視させる (1.2.3
節) ためである。行末の改行を無視させないと、それが空白として扱われ、出力でそこがやや余分に空いてしまうのである。今後も同様の例が出てくることがある。

*47 そもそもイタリックという字体にとって「傾く」ことは本質ではなく、傾かない (直立) イタリックという代物 (例: a の直立イタリックは a) も存在する。ただし、LATEX ではこの字体に切り替える標準のコマンドは用意されていない (フォント自体は用意されている)。
*48 通常、英字の文字幅は文字ごとに違う (例えば w の方が l よりずっと幅が広い)。しかしタイプライタ体では、w も l も同じ幅である。
*49 表 1.2 の特殊文字の一部は、これらではうまくタイプライタ体にならない。とりあえずは \verb で対処できる。

38

■イタリック補正

英字のイタリック体と普通の字体を混ぜて使うと、イタリック体が右に傾いているため、直後の普通の字体の部分と近付き過ぎて見えることがある。この場合は、イタリックの部分の最後に、\/ というコマンドで「イタリック
補正」と呼ばれる補正を入れて対処する。
ただし、イタリック補正が必要なのは、\itshape コマンドでイタリックにした場合だけである。\textit コマンドを使った場合は、イタリック補正が自動的に入るので、自分で入れる必要はない (し、入れても無視される)。
次の例では、上が \itshape コマンドによるイタリックにイタリック補正を入れなかった例、中が入れた例、下が \textit
コマンドによるイタリックの例である (差を目立たせるため、字を大きくしてある)。上のものは、「pencil 」が右に傾いている分、続きの「and」との間がやや狭く感じられるが、中と下はそれが補正されている。

\LargeThis is a {\itshape pencil} and not a pen.
This is a {\itshape pencil\/} and not a pen.
This is a \textit{pencil} and not a pen.

This is a pencil and not a pen.
This is a pencil and not a pen.
This is a pencil and not a pen.
7 いろいろな文字
キーボードから直接打ち込めない文字は、コマンドで出力することになる。

7.1 アクセント付き文字
ヨーロッパ圏の言語で使われる、アクセント付きの文字については、表 7.1 のコマンドを使う*50 。コマンドの引数は、ア
クセントを付ける文字にする (例えば \’{a} で á と出力する)。なお、上に付けるアクセントの一部は、i や j に付けると、iや j の上の点を取ったものにアクセントが付くようになっている (例えば \‘{i} で ı̀ を出力する)。
表 7.1

アクセント付き文字を出力するコマンド

コマンド

出力

コマンド

出力

コマンド

出力

コマンド

出力

コマンド

出力

\‘{o}

ò

\.{o}

ȯ

\^{o}

ô

\={o}

ō

\t{oo}


oo

\’{o}

ó

\d{o}

\v{o}

ǒ

\b{o}

ŏ

ő

\"{o}

\c{o}

o̧

\~{o}

o
¯
õ

\u{o}

\H{o}

o.
ö

\r{o}

o̊

7.2 その他の文字 · 記号
同じくヨーロッパ圏の言語で使われる英字以外の文字 (æ や œ など) は、表 7.2 のようなコマンドで出力する。その他、一部の記号文字を出力するコマンドもある (これらのうち !‘, ?‘ は 1.2.5 節に登場した。これらは実はコマンドではない)。

a を出力すこのうち \textcircled は丸囲みの文字を出力するコマンドで、引数をとり、例えば \textcircled{a}で○7 のように、丸からはみ出たる。ただし、あまり幅が広かったり背が高かったりする文字は、例えば \textcircled{7} で○りバランスが悪くなったりする。そういう場合は、例えば \textcircled{{\footnotesize 7}} のように*51 、中の文字を*50 これらのコマンドを使う機会はあまりないように思えるかもしれないが、論文を書く際に、参考文献の著者が外国人の場合、著者名を書くためにこれらのコマンドを使うことがある。また \= や \^ は、ローマ字の長音を表すのにも使える。なお、数式中の場合は 9.4.4 節参照。
}} のうち外側のものはコマンドの引数を囲むもの、内側のものは \footnotesize の効果が他に及ばないようグルーピング(6.1 節) するためのものである。ただし \textcircled コマンドの場合、引数の中で文字サイズを変えても、その効果が外部に及ばないようコマンドの側で工夫されているので、実は \textcircled{\footnotesize 7} でも大丈夫 (それ以後の文字が小さくなったりはしない) である。

*51 この場合、二重の {{

39

コマンド

表 7.2

出力

その他の文字の出力用コマンド

コマンド

出力

\textcircled{1}1○§\copyright

©

\P

¶

\textregistered

®

æ

\dag

†

\textbullet

•

\AE

Æ

\ddag

‡

\textperiodcentered

·

ø

\oe

œ

\LaTeX

LATEX\texttrademark

™

Ø

\OE

Œ

\TeX

TEX

\pounds

£

?‘

¿

コマンド

!‘

¡

\aa

å

\S

\ss

ß

\AA

Å

\l

l

\ae

\L

L

\o
\O

出力

コマンド

出力

7 のようになる)。
小さくする手がある (この場合○

これらの他に、ギリシャ文字 (α, β ほか) や数式用の記号類 (≥, ⊃ ほかいろいろ) など、数式モード (9 節) の中でしか使えない文字がある。それらについては 9.3 節を参照。

8 表
LATEX で表を記述するには tabular 環境を使う。tabular 環境は基本的には以下のように書く。「列の配置の指定」のとこ
ろには、各列を左寄せにするか (l)、中央寄せにするか (c)、右寄せにするか (r) の区別を、列の数だけ書く。具体例は 8.1
節を見よ。

\begin{tabular}{列の配置の指定}
1行1列目& 1行2列目& · · · & 1行最終列 \\2行1列目& 2行2列目& · · · & 2行最終列 \\· · · \\
最終行1列目 & 最終行2列目 & · · · & 最終行最終列 \\\end{tabular}
tabular 環境内では、表の各行の終わりを表すために \\ というコマンドを置く。これは、4.3 節に出てきた (基本的に使うことのない) 強制改行のコマンド \\ とは違う意味なので注意。なお、最終行の終わりだけは「\\」を省いてもよい (省かなくてもよい。ただし場合によっては省いてはならないこともあり、そのような例が 8.1 節に出てくる)。

8.1 作表の基本
次の例は、上の説明の通りの一番単純な例。こうすると、縦方向にも横方向にも全く線を入れない表になる。
「列の配置の指定」のところに lcr とあるため、1 列目は左寄せ、2 列目は中央寄せ、3 列目は右寄せになっている。また、最終行の終わりの「\\」は省いてある。

\begin{tabular}{lcr}
鉄道会社 & 中心駅& 主 要 種 別 \\JR
& 奈良
& 快 速 、 区 間 快 速 \\近鉄
& 近鉄奈良 & 快速急行、急行、準急\end{tabular}
鉄道会社

中心駅

主要種別

JR

奈良

快速、区間快速近鉄

近鉄奈良

快速急行、急行、準急

なお、これだけでは基本的に表は紙面のほぼ左端に配置される。紙面の中ほどに配置する方法は 8.3.1 節で述べる。
「||」とすれば線が 2 本
表の縦方向に線を入れるには「\begin{tabular}」の次の l · c · r の並びの中に「|」を入れる。
入る。
表の横方向に線を入れるには、「{列の配置の指定}」の直後、あるいは行を区切る「\\」の次に「\hline」を入れる (入れ40たところにだけ横線が入る)。「\hline」を 2 つ書けば 2 本線が入る。最後の行の次に横線を入れる場合は、最終行の終わりの「\\」を省いてはならない (それに続けて「\hline」を入れる)。以下は、先ほどと同じ表に縦横線を入れてみた例。

\begin{tabular}{|l||cr|}\hline
鉄道会社 & 中心駅& 主 要 種 別 \\ \hline\hline
JR& 奈良& 快 速 、 区 間 快 速 \\近鉄
& 近 鉄 奈 良 & 快 速 急 行 、 急 行 、 準 急 \\ \hline\end{tabular}
鉄道会社

中心駅

主要種別

JR

奈良

快速、区間快速近鉄

近鉄奈良

快速急行、急行、準急

8.2 よりきめ細かい作表
8.2.1 部分的な横線 · 縦線と横方向ぶち抜き欄
部分的な横線は、\hline の代わりに \cline で入れる。

\begin{tabular}{|c|c|c|c|c|}
A & B & C & D & E\\ \cline{1-1}\cline{3-5}
P & Q & R & S & T\\ \cline{1-2}\cline{4-4}% \\ は 省 け な い\end{tabular}
A

B

C

D

E

P

Q

R

S

T

横方向に数欄ぶち抜きの大きな欄を作るには、\multicolumn{欄数}{lかcかr}{内容} を使う。

\begin{tabular}{|c|c|c|c|c|}
A & B & C & D & E\\ \hline
P & \multicolumn{3}{r}{QRS} & T\\\hline\multicolumn{2}{l}{J K}& L & M & N\end{tabular}
A

B

C

P
JK

L

D

E

QRS

T

M

N

上の例のように、\begin{tabular} の次の l · c · r の並びの中で「|」が入っているところでも、\multicolumn が使われるところの右 (一番左の欄では、その左も) では、そのままでは縦線は入らない (「QRS」の欄の右、「J K」の欄の左と右がそれにあたる)。縦線を入れるには次のようにする。

\begin{tabular}{|c|c|c|c|c|}
A & B & C & D & E\\ \hline
P & \multicolumn{3}{r|}{QRS} & T\\\hline\multicolumn{2}{|l|}{J K}& L & M & N\end{tabular}
A

B

C

P
JK

L

D

E

QRS

T

M

N

\multicolumn{1}· · · を使うと、縦線を部分的に引いたり (引かなかったり)、中央揃えの欄を 1 箇所だけ左寄せにしたり
41

もできる。

\begin{tabular}{ccc}
A & BBBBB & C\\ \hline
D & \multicolumn{1}{l}{EE} & F\\ \hline
G & \multicolumn{1}{c|}{HHHHHHH} & I\\\end{tabular}
A

BBBBB

C

D

EE

F

G

HHHHHHHI

8.2.2 欄の境目の調整\begin{tabular} の次の l · c · r の並びの中で、「|」に代えて「@{好きなもの}」を入れると、縦線の代わりにそれが列同士の境目に入る。

\begin{tabular}{cr@{:}l}A & B & C \\D & E & F\end{tabular}
A

B:C

D

E:F

「好きなもの」の中でインライン数式 (9.1 節) を使いたいときは、一部のバージョンの LATEX では、「\( \)」ではうまくいかず、代わりに「$ $」で囲む必要がある場合がある。例えば、本来\begin{tabular}{cr@{\(\star\)}l}
A & B & C \\D & E & F\end{tabular}というソースで

A
D

B⋆C
E⋆F

が得られるはずだが、うまくいかない場合は、ソースの「\(\star\)」のところを「$\star$」に変更しよう。

ここで、表の列同士の間に普段自動的に入る空きが、「@{ }」のある箇所では入らないことに気づいただろうか。これを利用すると、例えば下記のように、欄を小数点で揃えるような応用ができる。

\begin{tabular}{c|r@{}l}
項 目 & \multicolumn{2}{c}{ 値 }\\ \hline
A &1 & .234 \\B &56 & .78 \\C & 4321 &\end{tabular}
項目

値

A

1.234

B

56.78

C

4321

8.2.3 複数行の欄
1 欄の内容が長くなることがあり、欄内で自動改行してほしい場合は、l, c, r の代わりに「p{欄の幅}」と指定する。欄の42

幅を指定する際の長さの単位については cm, mm などが使えるが、詳しくは 15.2 節参照。

\begin{tabular}{|rp{6.5cm}l|}\hline\multicolumn{1}{|c}{ 科 目 名 }&\multicolumn{1}{c}{ 内 容 }&\multicolumn{1}{c|}{ 担 当 }\\\hline
情 報 処 理 技 術 1&
情報処理の基礎知識を修得するとともに、

C言 語 に よ る プ ロ グ ラ ミ ン グ の 基 礎 を 学 ぶ 。&
鴨 ・ 駒 谷 ほ か \\計 算 機 実 験 2&
Linux な ら び に Windows に 関 す る ハ ー ド ウ ェ ア 、 シ ス テ ム ソ フ ト ウ ェ ア
な ら び に ア プ リ ケ ー シ ョ ン に 関 す る 開 発 を 行 う 。&
新 出 ・ 松 本 ほ か \\ \hline\end{tabular}% こ の 例 は 実 際 の も の と は 異 な り ま す 。
科目名

内容

担当

情報処理技術 1

情報処理の基礎知識を修得するとともに、C鴨・駒谷ほか言語によるプログラミングの基礎を学ぶ。
計算機実験 2

Linux ならびに Windows に関するハード

新出・松本ほか

ウェア、システムソフトウェアならびにアプ
リケーションに関する開発を行う。

8.3 表の配置
8.3.1 表の中央寄せ
tabular 環境で作った表は、それ全体が 1 つの大きな文字のように扱われる。例えば次の例では、Q と R の間に表が 1 つの大きな文字扱いで入っているのがわかる。

PQ%\begin{tabular}{|c|c|}\hline
A & B \\ \hline
C & D \\ \hline\end{tabular}%
RS

PQ

A

B

C

D

RS

これまで、表が紙面のほぼ左端に配置されていたのもそのため (行頭に 1 つだけ文字がある行と見なされていた) である。
しかし実際には、表は紙面の中央に配置したいことが多いだろう。そうするには、tabular 環境を center 環境の中に入れ子にする。center 環境とは、その中身を紙面の中央に配置する環境。tabular 環境と組み合わせてしか使えないわけではなく、例えば以下のように、普通の文章を中寄せにできる (\\ は 4.3 節に出てきた強制改行のコマンド)。

\begin{center}
私 の 名 前 は \\中野です

\end{center}
私の名前は
中野です
center 環境の他に、右寄せにする ﬂushright 環境や、左寄せにする ﬂushleft 環境というものもある。使い方は center
環境と同様で、内部で行を改めるには \\ コマンドを使う。ﬂushright 環境は 9.3.2 節に登場する。

43

そこで、tabular 環境を center 環境の中に入れると、このように表を中寄せで出力できる。

\begin{center}\begin{tabular}{|c|c|}\hline
A & B \\ \hline
C & D \\ \hline\end{tabular}\end{center}
A

B

C

D

8.3.2 table 環境と相互参照
前述のように、tabular 環境は 1 つの大きな文字のように扱われる。ということは、tabular 環境の途中でページが変わる
ことはない。つまり、tabular 環境ではページをまたがる表は作れない*52 。従って、例えば本文の途中に、ページの高さの半分よりちょっと大きな tabular 環境を入れようとしたが、運悪くその始まりの位置がページの真ん中よりちょっと下の方になってしまった、という場合、その tabular 環境はそのページの残りに入り切らないため、丸ごと次のページに送られてしまい、ページの下の方には相当大きな空きが残ってしまう、ということがよくある。
このような問題を防ぐため、tabular 環境は「table 環境」*53 というものと組み合わせて使うことが多い。

table 環境は、その中身を、ソース中でそれが現れた位置にこだわらず、ページの上部や下部、またはそれ以降のページなどの都合良く空いた位置に移すことによって、本文中に大きな空きができないようにしてくれる環境である。例えば、図 8.1のように、table 環境を使わなければ「次の表を見よ。」の次の表がそのページに入りきらずに次のページに回ってしまい、

私の名前は中野です。私の名前は中野です。

次のページに回された表

私の名前は南野です。私の名前は、南野です。私の名前は、南野です。次の表

上の表にも見られるようを見よ。

に、私の名前は北野です。
私の名前は北野です。

ここに表が入りきらないので

図 8.1 table 環境を使わないとき

そのページに大きな空きができてしまう場合、table 環境を使えば、図 8.2 (表がそのページの上部に送られた場合) や図 8.3(表が次のページに送られた場合) のようになり、「次の表を見よ。」のすぐ次に続きの本文が来て、大きな空きができない。
表 1: ある表の名前は、南野です。私の私の名前は中野です。私名前は、南野です。 表 1を

表の名前は中野です。

見よ。

私の名前は南野です。私

表 1 にも見られるように、私の名前は中野です。私

表の名前は、南野です。私の私の名前は北野です。私の名前は、南野です。 表 1を

名前は北野です。

見よ。

名前は北野です。

表 1 にも見られるように、の名前は中野です。

私の名前は北野です。私の私の名前は南野です。私

図 8.2

表 1: ある表

table 環境を使ったとき(表がそのページの上部に送られた場合)

図 8.3

table 環境を使ったとき(表が次のページに送られた場合)

ただし、そのようにした場合、table 環境の中に置かれた表などは、ソースの中で現れる位置とは違う場所に持って行か*52 ページをまたがる表を作る方法もないわけではないが、本資料では省く (longtable パッケージまたは supertabular パッケージのうち好みの方を使う)。
*53 tabular 環境と table 環境は、名前は (やや) 似ているが全く違うものである。

44

れる可能性があることになる。従って、その表を本文中で参照するのに「次の表は」とか「上の表は」などと書けない。そこで、表を本文中で参照するためには 10 節に述べる「相互参照」という機能の利用が必須になる。
そのため、tabular 環境を table 環境と併せて使う方法については、相互参照と併せて 10.4 節で述べる。

9 数式
LATEX は特に数式の組版を得意とする。しかし、普通の文と数式では同じ文字でも組版のし方がかなり違う (例えばソース中に「y=2x-3」と書いても出力は「y=2x-3」となるだけだが、数式としては「y = 2x − 3」のような出力になるべきである)。従って、数式を出力するには特別な「数式モード」を使うことになる。
以降では、数式モードの説明に加え、数式中でよく使われるコマンドなどの説明を行う。

9.1 2 つの数式モード
LATEX の数式モードは大きく分けて 2 つある。「y = 2x − 3」のように本文中に数式を書くための「インライン (本文内の) 数式モード」と、

y = 2x − 3のように、独立した行に数式を書く場合に使う「ディスプレイ (別行立ての) 数式モード」*54 である。前者は「\( \)」または「$ $」あるいは math 環境で囲んで書き (どれでも出力は同じ。前 2 者は後 1 者の略記と考えればよい)、後者は「\[ \]」あるいは displaymath 環境で囲んで書く (これも、どちらでも出力は同じ。やはり前者は後者の略記と考えればよい)。
イ ン ラ イ ン 数 式 は \(y=2x-3\) ま た は $y=2x-3$ の よ う に 書 く 。

\begin{math}y=2x-3\end{math}%と書いても同じ結果が得られる。
ディスプレイ数式は\[
y=2x-3\]のように書く。

\begin{displaymath}y=2x-3\end{displaymath}と書いても同じ結果が得られる。
インライン数式は y = 2x − 3 または y = 2x − 3 のように書く。y = 2x − 3 と書いても同じ結果が得られる。
ディスプレイ数式は

y = 2x − 3のように書く。

y = 2x − 3と書いても同じ結果が得られる。
両者は、別行立てになるかどうか以外にも、記号の大きさなどにも違いがある。次はその例で、形の違いがわかりやすい
よう、9.4.1 節で説明する分数出力コマンド (\frac)、9.4.3 節に出る総和記号
形の違いが出やすいものを使っている*55

P(\sum) や積分記号

R(\int) など、両者で。

*54 9.5 節で述べる equation 環境 (番号付き数式) などの環境は、ディスプレイ数式モードの仲間である。
*55 ちなみに、ここで \quad (表 9.1) を使っているのは、単に式と式の間を離して、資料として見やすくするためだけであり、必須ではない。誤解のないよう。以後も同様の目的で \quad を使う場合がある。

45

インライン数式モードでは\( \frac{1}{1+x} \quad \sum_{i=1}^{n}i \quad \int_{0}^{1}x\,dx \) となるが、ディスプレイ数式モードでは\[ \frac{1}{1+x} \quad \sum_{i=1}^{n}i \quad \int_{0}^{1}x\,dx \] のようになる。
1
インライン数式モードでは 1+x

Pn

i=1 i

1
1+x

R1
0
n
X

x dx となるが、ディスプレイ数式モードでは
Z 1
i

i=1

x dx
0

のようになる。
ディスプレイ数式は標準では行の中央に出力されるが、文書クラスに fleqn オプション (表 3.2) を指定している場合は、行の左端に揃えられる。
■モードの変更

やや細かい話になるが、ディスプレイ数式モード中でも、分数の分母分子などは、インライン数式モードと同じ組み方がされる。例えば下のようになる。

\[ \frac{z}{2}+\frac{\frac{1}{x}+\frac{1}{y}}{2} \]
1
1
z
x + y
+
2
2

しかし、デフォルトではインライン数式モードと同じ組み方がされる箇所でも、ディスプレイ数式モードの組み方になって欲しいことはよくある。その場合は、該当箇所に \displaystyle というコマンドを使う。

\[ \frac{z}{2}+\frac{\displaystyle \frac{1}{x}+\frac{1}{y}}{2} \]
1
1
+
z
x y
+
2
2
逆に、インライン数式と同じ組み方にさせる \textstyle というコマンドもある。
ただし、本文中のインライン数式で、\displaystyle を使って分数などを書くと (例えば1のように)、上下幅をと1+yるために、その行の上下の行間隔が広げられて見栄えが崩れてしまうことがあるので勧められない。インライン数式で分数1の分母分子が 1+yのように小さくなるのを避けたいなら、1/(1 + y) のような書き方をすべきであろう。

9.2 数式モードでの字体や空白
9.2.1 連続する英字の扱い
数式モードでは、連続する英字は変数の積として扱われる。例えば「z = diﬀ (x, y) + 1」のような出力を期待*56 して\( z = diff(x,y) + 1 \)のようにソースに書くと、「diff」のところは「d と i と f と f の積」として扱われ、バラバラに組まれて

z = dif f (x, y) + 1とみっともない結果になる。diﬀ という 1 つの名前にしたければ、\mathit というコマンドを使い\( z = \mathit{diff}(x,y) + 1 \)*56 数学ではこのように式中で単語を 1 つの関数や変数の名前として使うことはあまりないが、情報科学分野ではプログラムの説明などにこのようなケースがよく現れる。

46

と書く。そうすれば

z = diﬀ (x, y) + 1になってくれる。

9.2.2 数式モード内での字体
これまでに見てきたように、数式モード中では、英字の標準の字体はイタリック体になる (数字はローマン体)。9.2.1 節
で用いた \mathit コマンドも、引数をイタリック体で出力する。これをローマン体にしたい場合は、\mathrm というコマ
ンドを使えばよい。下記の例では、diff の部分がローマン体になっている。

\( z= \mathrm{diff}(x,y) + 1\)
z = diff(x, y) + 1
他に、サンセリフやボールドにする \mathsf や \mathbf というコマンドもある。これらはいずれも数式モード中でのみ使えるコマンドで、引数を指定の字体にする。
この他、数式モードでは \mathcal コマンドで「カリグラフィ」と呼ばれる字体 (ABC のような) も使え、さらに、amssymb
パッケージ (パッケージについては 1.2.7 節参照) を読み込むと、 \mathbb コマンドで「黒板太字」と呼ばれる字体 (ABCのような) も使える (\mathcal は amssymb パッケージを読み込まなくても使える)。ただしこの 2 字体は、英大文字に対してしか使えない (英小文字に対して使うと変な記号に化ける)。
以下の例は、\mathbb コマンドを使っているため amssymb パッケージが必要である。
数 式 モ ー ド で は \(\mathcal{ABC}\) や \(\mathbb{ABC}\) の よ う な 字 体 も 使 え る 。
数式モードでは ABC や ABC のような字体も使える。

9.2.3 数式モード内の空白
数式モード内では、ソース中の空白は全く無視され、LATEX が自分で判断して数式として適切な空白を空けてくれる。

\(y=2x-3\) と 書 い て も \(␣␣␣y␣␣␣␣␣=␣␣␣2␣␣x␣␣␣-␣␣3␣\) と 書 い て も 出 力 は 全 く 同 じ 。
y = 2x − 3 と書いても y = 2x − 3 と書いても出力は全く同じ。
出力が y=2x−3 のようにぴったりくっついていないことに注意。
ただし、LATEX の判断が完璧でない場合もまれにはあるので、そういう場合は表 9.1 のコマンドで空白を調整する (そういう場合は多くないので、基本的には手動で空白を調整する必要はあまりないと考えてよい)。なおこのうち、「† 」の付いているものは数式モード外でも使える (他は数式モード内でしか使えない)。
表 9.1 空白の調整用コマンド

コマンド

\quad

†
†

\qquad\,†

空く空白の量コマンド

空く空白の量ほぼ全角 1 文字分\>

もう少し大きな空白 (\quad の 2/9 = 4/18)\quad の倍\;

大きめの空白 (\quad の 5/18)

小さな空白 (\quad の 1/6 = 3/18)\!

負の空白 (\quad の −1/6)

以下は、\, コマンドによって手動で空白を調節する方がよい例である。

\(f(x,y)dxdy\) よ り も 、 ち ょ っ と 空 白 を 調 整 し て\(f(x,y)dx\,dy\) の 方 が 若 干 読 み や す い 。
f (x, y)dxdy よりも、ちょっと空白を調整して f (x, y)dx dy の方が若干読みやすい。

47

■コンマの後の空き 細かい話だが、数式モード中での「,」の後の空きは、本文中のそれよりもやや詰まり気味になる。下の例のように、値の列挙などは数式モードの「,」を、複数の式の並列にあたるものは数式モード外の「,」を使う方が、空きが適切になる。また、数式モード内では「,」の直後で改行できないので、本文中に複数の数式を列挙する場合は、改行しやすさの意味でも数式モード外の「,」(ただし直後に必ず空白を開ける) を使う方がよい。

\(n=1,2,\ldots,k\) と す る 。
\(n=1\), \(m=2\) で あ る 。
n = 1, 2, . . . , k とする。
n = 1, m = 2 である。
■数式モード中の本文組み

再度細かい話になるが、時には、数式内で、一時的に本文と同じ組み方 (空白が無視されない、フォントがローマン体であるなど) をしたい場合がある。そんなときは、amsmath パッケージ*57 を読み込んでおいて、\text というコマンドを使うのがお勧め。
\text コマンドは、\mathrm コマンド (9.2.2 節) と異なり、フォントをローマン体にするだけでなく、引数の中を、数式モードでない通常の文中の状態にする働きも持つ*58 。例えば以下のようになる*59 。なお、ここで \mid は数式モード中で縦線を書くコマンド (表 9.3) である*60 。
集 合 \(S\) を \(S=\{2n \mid \text{\(n\) is a prime number}, n<100\}\) で定義する。
集合 S を S = {2n | n is a prime number, n < 100} で定義する。
同様のことを \text でなく \mathrm でやろうとすると、フォントはローマン体になるが、数式モードであることに変わりないので、ソース中の空白が無視されるなど、数式モード特有の組み方のままになり、以下のようになってうまくない。

( 誤 ) 集 合 \(S\) を \(S=\{2n \mid n \mathrm{is a prime number}, n<100\}\) で定義する。

(誤) 集合 S を S = {2n | nisaprimenumber, n < 100} で定義する。

■数式モード中の日本語 数式モード中に日本語文字を入れる場合も、amsmath パッケージの \text コマンドを使うこと。
集 合 \(S\) を \(S=\{2n \mid \text{\(n\) は 素 数 }, n<100\}\) で 定 義 す る 。
集合 S を S = {2n | n は素数, n < 100} で定義する。
数式モード中に直接日本語文字を書くこともできるが、あまり望ましくない。例えば上の例を( 誤 ) 集 合 \(S\) を \(S=\{2n \mid n は 素 数 , n<100\}\) で 定 義 す る 。
のように書くのは、可能ではあるが、よくない。

9.3 数式用の特殊文字
本節で示すのは、もっぱら数式用に使う特殊文字 · 記号類を出力するコマンドである。数式モードの中でのみ使える。

9.3.1 ギリシャ文字
α, β などギリシャ文字を出力するコマンドを表 9.2 に示す。表中で「—」となっている箇所は、英語のアルファベットと*57 L
AT X の数式機能をさらに強化するために、アメリカ数学会 (American Mathematical Society, AMS) が作成したパッケージなので、AMS

E
math からこの名がある。
*58 ただし、\text コマンドの引数内では改行が起こらないので、特にインライン数式モードで長い文章の中で使う場合には注意が必要である。
*59 この例では、 \text で通常モードになった中で、さらに n の部分だけ \( \) で再度数式モードにしている。
*60 関係演算子 (9.3.2 節) としての縦線なので、前後に若干の空白が入る。

48

同じ形であるため、その文字を出力するコマンドは特に用意されていない (大文字は \mathrm{A} などで、小文字は単なるo で代用する)。なお、大文字が直立体 (正立した書体) だが、\mathit でイタリックにできる。
表 9.2

文字

コマンド

文字

A

—

α

B

—

Γ

ギリシャ文字 (各列の左が大文字、右が小文字)

コマンド

文字

コマンド

文字

コマンド

\alpha

I

—

ι

\iota

β

\beta

K

—

κ

\kappa\Gammaγ\gammaΛ\Lambdaλ\lambda∆\Deltaδ\delta

M

—

µ

\mu

T

E

—

ϵ

\epsilon

N

—

ν

\nu

ε

\varepsilon

Ξ

ξ

\xi

Z

—

ζ

\zeta

O

H

—

η

\eta

Π

Θ

\Thetaθ\thetaϑ\vartheta

P

\Xi
—

o

\Pi
—

文字

文字

コマンド

ϱ

\varrhoσ\sigmaς\varsigma

—

τ

\tau

Υ

\Upsilonυ\upsilon

Φ

\Phi

ϕ

\phi

φ

\varphiΣ

コマンド\Sigma

—

π

\pi

X

—

χ

\chi

ϖ

\varpi

Ψ

\Psi

ψ

\psi

ρ

\rho

Ω

\Omegaω\omega以下はギリシャ文字を使う例である。

\(\alpha\) と \(\beta\) の 連 接 を \(\alpha\beta\) と 書 く 。
α と β の連接を αβ と書く。
ただし、総和や総積を表す記号 (は別なコマンドがある (9.4.3 節)。

n
∑

n
∏

kや

k=1

k のような) には表 9.2 の \Sigma, \Pi を使わないこと。これらのために

k=1

9.3.2 演算子
演算子とは、a ÷ b の ÷ や、sin x の sin のように、式と式の間や式の前に付いて、何らかの演算を表す記号である。

LATEX で「演算子」として扱われる記号の一部 (全てではない) を表 9.3 に示す。全容を知りたい場合は、検索エンジンで「latex 数式用記号」などで検索すれば参考となるサイトが多数出てくる。以後の節でも、数式用記号は数が多いため本資料では抜粋に留めるので、全容についてはそれらのサイトを参照すること。具体的には、2017 年 10 月現在では例えば http://hooktail.sub.jp/tex/symbol/mathsymbols.html がある。
表 9.3 LATEX で出力可能な演算子 (抜粋)

コマンド

記号

コマンド

記号

コマンド

記号

コマンド

記号

コマンド

記号

+

+

\setminus

\

\neq

6=

\not\in6∈\arcsinarcsin

-

−

\lor

∨

\ll



\sqsubset

<

\exp

exp

\times

×

\land

∧

\equiv

≡

\succ



\log

log

\div

÷

\oplus

⊕

\sim

∼

\mid

|

\ln

ln

\cdot

·

\bmod

mod

\approx≈\parallel

k

\gcd

gcd

\pm

±

=

=

\subset⊂\propto

∝

\max

max

\cap

∩

>

>

\supseteq

⊇

\sin

sin

\lim

lim

\sqcap

u

\geq

≥

\in

∈

\sinh

sinh

\liminf

lim inf

表には一部しか挙げていないので、例えば表に ≥ だけしかないからといって ≤ がないわけではないし、表に sin しかな
いからといって他の三角関数がないわけではない。他の記号でも (そして以後の節でも) 同様。

+, −, > のように、コマンドを使わずにその文字を直接入力すれば出力できるものもある*61 。
ただし、日本語文字セット (いわゆる “全角”) の記号文字 (「＋」「 」
「×」「÷」や「＜」「⊂」など) を数式用の記号として使わないこと。例えば「\(3 2\)」は (フォントにもよるが) 「3 2」のように、非常に不格好になる。
*61 > は、本文中にはそのままでは書けないが (表 1.2)、数式中ではそのまま書ける (表にはないが < や、あるいは表 9.4 の | も同様)。

49

9.2.1 節で述べたように、数式モードでは連続する英字は変数の積として扱われる (しかも数式モードではソース中の空白は無視される) ので、「log x」という出力を期待してソースに「\(log x\)」と書いたのでは、l と o と g と x の積と見なされて出力は「logx」になってしまう。演算子のコマンドを使って「\(\log x\)」とすれば「log x」が得られる。

LATEX で演算子として扱われる記号は、大きく 3 種類に分けられる。「2 項演算子」(a ÷ b の ÷ のように、2 つの式の間に付いて、それらの間の演算を表すもの)、「(2 項) 関係演算子」(a ≥ b の ≥ のように、2 つの式の間に付いて、それらの間の関係を表すもの)、「単項演算子」(sin x の sin のように、式の前に付くもの) の 3 種である*62 。表 9.3 のそれぞれの記号が
この 3 種類のどれに当たるかは概ね明らかであろう。
そして、2 項演算子 · 関係演算子の前後、単項演算子の後には、演算子の種類に応じた空白が自動的に空く。例えば\(3\times 6-20= -2\) で あ り 、 \(\sin\pi = 0\) で あ る 。
3 × 6 − 20 = −2 であり、sin π = 0 である。のような例を見ると、× や − や = の前後、sin の後には空白が空いている。しかも、それらの空きの幅はそれぞれ異なる。
ただし、単項演算子の直後の空白は「\(\sin(x+y)\)」のような場合は自動的に消えて「sin(x + y)」のようになる。
空きの量の違いは、下記のような例でよくわかる (b の左の空白の幅を比較するため、flushright 環境 (8.3.1 節) で右に揃えてある。また、違いを目立たせるため字を大きくしてある)。

\begin{flushright}\Large\(a = b\)\\\(a - b\)\\\(- b\)\end{flushright}

a=b
a−b
−b
2 項演算子の前後の空白は関係演算子のそれよりも微妙に狭く、単項演算子の後の空白よりは広いことが見てとれる。
なお、− や + のように 2 項演算子としても単項演算子としても使える記号があり、その場合、どちらとして使われているかで空きの量が異なる (先の例でわかる)。
演算子としての種別に注意すべき記号としては、他に mod がある。表 9.3 の \bmod は「14 mod 3 = 2」のように (「割り算の余り」の意味の) 2 項演算子として使う場合のコマンドである。
「14 ≡ 5 (mod 3)」のように「n を法として合同」の意味に使いたい場合にはこのコマンドではなく、 \pmod というコマンドを使う (これは演算子扱いではない)。こちらは引数を 1 つとる。次の例を参照 (出力中の「mod 17」を囲む括弧は自動的に付く)。

\(14\bmod 3 = 2\) で あ り 、 \(63\equiv 12 \pmod{17}\) で あ る 。
14 mod 3 = 2 であり、63 ≡ 12 (mod 17) である。
■否定の比較演算子 表 9.3 で、\in の否定 (6∈) を \not\in で出力していることに注意。このように、否定の比較演算子を作るには \not コマンドが使える。同表にある \neq (6=) も、\not= でも出力できる。
■自作の演算子*63 と書こうとしても、\cosec というコ時には演算子を自分で定義したいこともある。例えば「cosec x」

マンドはない。また、\( \mathrm{cosec} x \)*62 n! (n の階乗) の「!」のように式の後に付く演算子もあるが、L
AT X ではこれは単なる文字として扱われ、「式の後に付く演算子」という扱いは特にEない。
*63 cosec x とは sin x の逆数のことで、x の余割と呼ばれる。なお、csc x と書く場合もあり、こちらには \csc というコマンドがある。

50

入力

出力

入力

表 9.4 括弧類のコマンド (抜粋)

出力

入力

出力

入力

出力

出力

\langleh\rangle

i

(

(

)

)

[

[

]

]

|

|

\|

k

\lceild\rceil

e

\{

{

\}

}

\uparrow↑\downarrow↓\lfloorb\rfloor

c

入力

出力

入力

cosecxとしただけでは、LATEX は cosec を単項演算子と認識しないので、その次の x との間に、単項演算子としての空白が空かない。そこで、引数を単項演算子として LATEX に認識させるコマンド \mathop を使って\( \mathop{\mathrm{cosec}} x \)のようにすれば

cosec xを得る (場合によってはこれだけではうまくいかず、\nolimits というコマンドを必要とすることがある。9.4.3 節参照)。
cosec を何度も使うなら、そのたびに上のように書くのでは大変なので、自作の \cosec というコマンドを上記の内容で定義すればよい (やり方は 14.1 節)。

同様に、引数を 2 項演算子として認識させるコマンド \mathbin、引数を関係演算子として認識させるコマンド \mathrelがある。例えば以下のようにして、2 項演算子「%」を作れる。

\( 14 \mathbin{\%} 3 = 2 \)14 % 3 = 2
関係演算子を作る手段として、\mathrel の他にもう 1 つ、知っておくと便利かも知れないコマンドがある。それは\stackrel で、引数を 2 つ取ってそれを上下に組み合わせて関係演算子にしてくれる (下のものが主体になり、上のもの
はやや小さくなって添えられる)。
\( f(x) \stackrel{\mathrm{def}}{=} \log\sin x \)def

f (x) = log sin x

9.3.3 括弧類
括弧類として使える、表 9.4 のようなコマンドがある (「(」「[」のようにコマンドでないものも混じっているが)。
同表中の | や \| は、括弧類としての | や ∥ (例えば |x| の場合がそれにあたる) を出力する。一方、表 9.3 の \mid や\parallel は、比較演算子としての | や ∥ を出力するコマンドである。使い分けること。

これらのコマンドは、次の例\( x = \langle a, b\rangle \)x = ha, biのように単独でも使えるが、\left, \right というコマンドと併用することによって、括弧で囲むものの大きさに合わせて自動的に大きくすることもできる。9.4.5 節参照。

x = ha, bi のような山型括弧を出力するには、先の例のように \langle, \rangle コマンドを使うこと。<, > は不等号であって山型括弧ではなく、山型括弧のつもりで使うと以下の例のように不格好になる。

( 誤 ) \( x = <a, b> \)(誤) x =< a, b >51

9.3.4 その他の数式用記号
数式用の記号には、これまでに出てきた以外の種類のものも多数ある。その一部 (全てではない) を、表 9.5 に示す。同表中で「†† 」の付いているコマンドは、latexsym パッケージを読み込まないと使えないので注意*64 。
表 9.5 数式用の記号 (抜粋)

コマンド

記号

コマンド

記号

コマンド

記号

コマンド

記号

コマンド

記号

††

\rightarrow→\emptyset

∅

\top

>

\ldots

...

\Box

2

\Downarrow⇓\partial

∂

\bot

⊥

\cdots\triangle

4

††

3

\diamondsuit♦-\nabla∇\vdash`\vdots\longleftarrow

←−

\mho

††

0

\models|=\ddots

···
..
.
..
.

\rightharpoonup

⇀

\ell

ℓ

\forall

∀

\star

⋆

\spadesuit♠\mapsto

7→

\wp

℘

\exists

∃

\circ

◦

\sharp♯\infty∞\aleph

ℵ

\lnot

¬

\bigcirc\flat♭\nwarrow\Diamond

実は、表 9.5 のコマンドの中には、演算子 (9.3.2 節) として使えるものも混じっている。例えば矢印類は比較演算子、\star や \circ などは 2 項演算子、\lnot などは単項演算子としても使える。
少数ながら、別名の付いているコマンドもある。例えば \rightarrow には \to という別名が付いている。
空集合の記号には ∅ (\emptyset) を使おう。ϕ (\phi) は空集合の記号ではない。

\ldots と \cdots はどちらも横方向の点々だが、使い分けがある。1, 2, . . . , n のように低い位置にあるものと並ぶ場合
は \ldots、1 + 2 + · · · + n のように高い位置にあるものと並ぶ場合は \cdots を使う。ただし、amsmath パッケージを読み込んで \dots を使うと、自動的に \ldots と \cdots のうち適切な方を使ってくれる (amsmath パッケージを読み込
まないときの \dots はそのようにはならない)。

\ldots や \cdots などは、数式用の点々である。文章中の三点リーダには (コマンドでなく)「…」という日本語文字の1 文字を使おう (英文の場合は別)。なお、(これは LATEX を使わない普通の文書にも共通の注意だが) 三点リーダの代用に「.(ピリオド) が 3 つ」や「・・・」(中黒 3 つ)、「。。
。」(句点 3 つ)、「、、、」(読点 3 つ) などを絶対に使わないこと。

9.3.5 amssymb パッケージの記号
amssymb パッケージ*65 を読み込むと、さらに多くの数式用記号が使える。amssymb パッケージを読み込んだ場合に使える記号のごく一部 (全てではない) を、表 9.6 に示す。全容を知りたい場合は、検索エンジンで「amssymb」で検索すれば参考となるサイトが見つかる (2020 年 8 月現在では例えば https://xyoshiki.web.fc2.com/tex/amssymb.html がある)。なお、表 9.6 中にも、演算子として使えるコマンドも混じっている (矢印類や ;, =, j など)。
表 9.6 amssymb パッケージで使える数式用記号 (抜粋)

コマンド

出力

コマンド

\therefore∴\dashleftarrow\curlywedgef\rightsquigarrow

出力

コマンド

出力

コマンド

出力

L99

\fallingdotseq;\blacksquare



\geqq

=

\bigstarF†

U\measuredangle]\multimap(\subseteqq

j

\yen

\checkmarkX\downharpoonright\lesssim.

\varkappa

κ\dotplusu\curvearrowrighty\succnapprox



\eth

ð

特に、「ほぼ等しい」「大きいかまたは等しい」「含まれるかまたは等しい」の記号は、海外では ≈ (\approx), ≥ (\geq),⊆ (\subseteq) を使うのが主流なので、amssymb パッケージを使わない通常の LATEX にはそれらの記号しか用意されていないが、amssymb パッケージを読み込めば表の通り ;, =, j も使えるようになる。
また、表中で「† 」の付いているものだけは、amssymb パッケージが読み込んであれば数式モード外でも使える (\yen は

1.2.7 節にも登場した)。
*64 このうち \Diamond については、amssymb パッケージを読み込んでも使えるが、amssymb パッケージを読み込んでかつ latexsym パッケージを読み込まずにいると、形が変わって ♦ になってしまう。
*65 アメリカ数学会が用意した数学記号のパッケージなので、AMS symbols を略して amssymb という名。

52この他、amssymb にもないさらに多数の数式用記号を持つ stmaryrd というパッケージ (St. Mary’s Road symbolfont) もよく用いられる。特に、これには J(\llbracket), K(\rrbracket) などの記号が括弧類 (9.3.3 節) として含まれる。

9.4 数式用の構造
数式を記述するには、数式用記号だけではなく、分数や累乗や行列をはじめとするさまざまな数式用の構造が書ける必要がある。それらを本節で述べる。
込み入った数式を記述するコツは、目的の数式を構成する単純な部分から始めて、順次組み立てていくことにより、目的xeの数式を構成していくことである。例えば √という数式を記述するには、分子を 9.4.2 節の肩文字で e^{x}、分子を 9.4.1
x節の根号で \sqrt{x} と記述し、それらを同じく 9.4.1 節の分数で組み合わせて \frac{e^{x}}{\sqrt{x}} という構造を組み立てる。

9.4.1 分数 · 根号
分数は \frac{分子}{分母}、n 乗根は \sqrt[n]{中身} と書く。「[n]」の部分は \sqrt コマンドのオプション引数で、平方根の場合は省略できる。

\( \frac{a}{b} \quad \sqrt{x} \quad \sqrt[3]{x} \quad\frac{1}{\sqrt{x+1}-1} \)
a
b

√

x

√
3

x

√

1
x+1−1

amsmath パッケージ (9.2.3 節) を読み込むと、より一般的な分数コマンド \genfrac が使える。これは \genfrac{左側の括弧}{右側の括弧}{上下の間の線の太さ}{スタイル}{分子}{分母} のように使う。「スタイル」は基本的には空にしておけばよい。
「左側の括弧」「右側の括弧」は必要なければ空にしておく。線の太さを 0pt にすれば線は書かれない (省略すれば普通の太さの線が書かれる)。\genfrac{}{}{}{}{分子}{分母} とすれば \frac{分子}{分母} と同じ出力になる。
\( \genfrac{}{}{}{}{a}{b} \quad \genfrac{(}{)}{0pt}{}{n}{r} \)
a
b

√

b+

√

(n)
r

q のような場合、根号の位置が上下不揃いになってしまう。揃えたければ、\mathstrut というコマンドを使えばよい*66 。これは数式中で使うコマンドで、上下のサイズが「(」と同じで幅が 0 の (目に見えない) 柱を挿入する。そのため、b や q のように高さの違うものが根号内にあっても、根号内の高さが同じに保たれるので、根号の位置が揃う。
\( \sqrt{\mathstrut b}+\sqrt{\mathstrut q} \)
p
p
b+ q

9.4.2 肩文字 · 添字
肩文字は ^、添字は _ で出力する。例えば x^2 で x2 、a_1 で a1 を得る。しかし x^20 と書いたのでは x2 0 になってしまう。x20 を得るには x^{20} のように、肩文字になる部分をグルーピングしなければならない。添字の場合 (「a11 」のような) も同様。忘れやすいので、肩文字や添字がたとえ 1 文字でも「{ }」で囲む習慣を付けておいた方がよいだろう。

a^{i}_{j} で aij のように、肩文字と添字の両方を付けることはできるが、a^{i}^{j} のようにするとエラーになってしjまう。肩文字 (あるいは添字) を 2 重以上には付けられないのである。付けたければ a^{i^{j}} のようにする。これで aijが得られる。{a^i}^j では ai のように不格好になる。
*67 。小さい n を、空のグループに添字 n を付けて実現していることに注意。
n Cr と書くには、{}_{n}C_{r} のようにする\( x^{y}+1 \quad x^{y+1} \quad (x^{a})^{2} \quad x^{a^{2}} \quadx^{a^{b+2}}_{i_{1}} \quad {}_{n}C_{r} \quad x_{\mathrm{max}} \)*66 本文中 (数式モード外) で同じような目的で使われるコマンドに \strut がある。これは上下のサイズが本文の行送り幅と同じで、幅が 0 の柱。
( )*67 これは「n 個のものから r 個取り出す組み合わせの数」の記号だが、 n と書くことの方が多い (これは、9.4.1 節に出た \genfrac を使えば書けrる。また、\binom{n}{r} でも出力できる)。

53xy + 1xy+1(xa )2

2

b+2

xa

xai1

n Cr

xmax

9.4.3 範囲を示す式を伴う記号—総和 · 積分など
R
P(\sum) や (\int) などのように、範囲を示す式を上下に伴うような記号がある。表 9.7 はそれらの抜粋である。
表 9.7

コマンド

記号

P

\sum

T

\bigcap

範囲を示す式を伴う記号 (抜粋)

コマンド

記号

コマンド

Q

\prod

\int

S

\bigcup記号\bigvee

R

W

コマンド

\oint
\bigwedge

記号

H

V

これらの記号に対しては、「^」や「_」は範囲の記述として働く。

\( \sum_{i=0}^{n}2^{i} \quad \int_{0}^{\pi}\sin x\,dx \quad\bigcap_{i=1}^{k}A_{i} \quad \lim_{x\rightarrow\infty}\tan^{-1}x \)\[ \sum_{i=0}^{n}2^{i} \quad \int_{0}^{\pi}\sin x\,dx \quad\bigcap_{i=1}^{k}A_{i} \quad \lim_{x\rightarrow\infty}\tan^{-1}x \]
Pn

i=0 2

i

Rπ
0

sin x dx

Tklimx→∞ tan−1 x

i=1 Ai

n
X
i=0

Z π
2i

k
\

sin x dx0

lim tan−1 x

Ai

x→∞

i=1

範囲の記述は、通常、インライン数式モードでは、普通に「^」「_」を使った場合と同様、肩文字や添字の位置に付くが、ディスプレイ数式モードでは記号の上下に付く (なお、表 9.7 の記号以外に、一部の単項演算子も同様に扱われる。上の例の \lim がその例である)。
しかし、 \nolimits コマンドを使えば、ディスプレイ数式モードであっても、範囲の記述が記号の上下でなく、肩文字や添字の位置に付くようになる。\limits コマンドでは逆のことが起こる。

\( \sum\nolimits_{i=0}^{n}2^{i} \quad \sum\limits_{i=0}^{n}2^{i} \)\[ \sum\nolimits_{i=0}^{n}2^{i} \quad \sum\limits_{i=0}^{n}2^{i} \]
Pn

i=0 2

i

n
P

2i

i=0

Xn
i=0

n
X

2i

2i

i=0

9.3.2 節で述べた \mathop で作る単項演算子も、\sum や \int と同じ扱いになるので、肩文字や添字を付けようとすると、ディスプレイ環境ではそのままでは記号の上下に付いてしまう。\nolimits を付ければそれを回避できる。

\(\mathop{\mathrm{cosec}}^{2} x \quad\mathop{\mathrm{cosec}}\nolimits^{2} x\)\[\mathop{\mathrm{cosec}}^{2} x \quad\mathop{\mathrm{cosec}}\nolimits^{2} x\]cosec2 x

cosec2 x

2cosec xcosec2 x9.4.4 上 · 下線およびアクセント
式の上や下に線状のものを入れるコマンドには、表 9.8 (抜粋) のようなものがある。
これらのうち \underline だけは、数式モード中でなくてもこのように使うことができる。ただし、\underline コマン
ドの引数内では決して改行されないため、アンダーラインを引いた部分が紙面の右に飛び出しやすく、「本文中に下線を引く

54

表 9.8 上 · 下線のコマンド (抜粋)

入力

出力

入力

出力

\overline{x+y}

x+y

入力

出力

\overrightarrow{x+y}\underline{x+y}x+y\underbrace{x+y}\underrightarrow{x+y}\widehat{x+y}x[+y\overbrace{x+y}x+y| {z }z }| {
x+y\widetilde{x+y}

−−−→
x+y
x+y
−−−→
x]
+y

手段」としては使い勝手は良くない*68 。

\widehat, \widetilde はある程度までしか伸びない。
\overbrace, \underbrace に対して「^」や「_」を使うと、上や下に添字が付く (9.4.3 節の \sum などと違って、インラ
イン数式モードでも上や下に付く)。下記は例である ( \text (9.2.3 節) を使っているので、amsmath パッケージが必要)。

\( \overbrace{x_{1}+\cdots+x_{n}}^{\text{\(n\) 個 }} \)
n個

z
}|
{
x1 + · · · + xn
数式モード中でアクセントを付けるコマンドは、本文中の場合 (7.1 節) とは異なる。\acute{a} で á、\bar{a} で ā(\overline より線が短い)、\dot{a} で ȧ、\hat{a} で â、\tilde{a} で ã、\vec{a} で ⃗a など (他にもあり) が使える。
9.4.5 配列 · 行列 · 場合分けと巨大な括弧
array 環境というものがある。これは、数式中で使われるということを除いて、8 節に出た tabular 環境と同じ*69 。行列の要素を省略するという意味の点々を出すには、表 9.5 中の \cdots, \vdots など点々を出力するコマンドを使う。

\[\begin{array}{cccc}
a_{11} & a_{12} & \ldots & a_{1n} \\a_{21} & a_{22} & \ldots & a_{2n} \\\vdots & \vdots & \ddots & \vdots \\a_{m1} & a_{m2} & \ldots & a_{mn}\end{array}
\]
a11
a21
..
.

a12
a22
..
.

...
...
..
.

a1n
a2n
..
.

am1

am2

...

amn

両側を括弧類で囲んで行列などにするには、表 9.4 の括弧類コマンドを、\left や \right というコマンドと組み合わせて使う。それらは括弧類を自動的に中身の大きさに合わせて引き伸ばすコマンドで、括弧類の前に付けて例えば\[ (\frac{a}{b}) \quad \left( \frac{a}{b} \right) \]
a
( )
b

a
b

のように使う。単独の括弧に比べ、\left, \right の付いている方は中身に合わせて大きくなっていることがわかる。なお、\langle や \rangle のようにある一定の大きさ以上に大きくならないものもある。
*68 もともと英語圏では、本文中のある箇所を強調するには下線ではなくイタリックに変えることで行う伝統 (6.2 節) なので、L
AT X にも強調のため

Eに本文中に下線を引くという発想は本来ない。LATEX で本文中に下線を引くためのパッケージもいくつか作られているが (udline というパッケージが代表的。下線以外に打ち消し線などの機能も提供している。ただし標準の LATEX には含まれていないので別途インストールが必要。2018 年
11 月現在では http://minamo.my.coocan.jp/tex/udline.html から入手可)、どうしてもいろいろ制約があり、それよりできれば下線を引く
ことそのものを避ける方がよい。
*69 \begin{array} の次の lcr の並びの中で @{} を使った場合、tabular 環境と違って、@{} の中は数式モードになる。

55

\left, \right は括弧類にしか付けられない。また、必ず \left と \right がペアになっていなければならず、片方だけではエラーになる。ペアになってさえいれば、括弧の種類は左右で違っても構わない。

array 環境に \left, \right を伴う括弧を付ければ、行列などが書ける。次の例ではわざと左右で括弧の種類を変えて、左の括弧を「(」、右を「}」としている。右を「)」に変えれば、普通の (数学の) 行列になる。

\[\left(\begin{array}{cc}
A & B \\ C & D\end{array}\right\}
\]


A
C

B
D



左右どちらかの括弧類しか出したくない時は、もう一方の括弧類コマンドとして「.」を使えば、そちらの括弧は出ない。
次の例を見よう。

\[|x|= \left\{\begin{array}{ll}x & \text{if \(x \geq 0\),}\\-x & \text{otherwise.}\end{array}\right.
\]

|x| =

x
−x

if x ≥ 0,otherwise.

\right の後に括弧類コマンドとして「.」を指定しているため、右の括弧は出ない。このようにして、array 環境で場合分
けの式を記述できる。なおこの例も、\text を使っているため amsmath パッケージが必要である。

9.4.6 数式中の太字
数式中で、ベクトルなどを「x」のような太字で表現することがよくある。しかし数式モード内で \mathbf を使っても、あるいはそれと \mathit を組み合わせても、イタリックの太字にはなってくれない。

amsmath パッケージを読み込んでおけば、数式モード内で \boldsymbol コマンドで太字が使える*70 。このコマンドは引数をとり、引数を数式内の標準字体 (英字はイタリック体、数字はローマン体) の太字にする。英数字以外の記号も太字になることがある (ならないものもある) ので、太字にしたい箇所のみを引数にすること。

\(\boldsymbol{x} + \boldsymbol{y} = \boldsymbol{0}\)x+y =0
この例で、\boldsymbol{x + y = 0} のように全体を \boldsymbol の引数にすると、x + y = 0 のように + や = まで太くなってしまう。

9.5 番号付き · 複数行の数式
インライン数式は本文の一部なので、出力中でインライン数式が行の右端付近に寄った場合は、インライン数式の途中で改行される場合がある (改行されない箇所もある。例えば「,」の直後などでは改行されない)。これに対し、9.1 節で述べた*70 amsmath 不要の \boldmath というコマンド (無引数) もあるが、数式モード外でしか使えないため、数式中の一部だけ太字にするのが簡単でない。

56

ディスプレイ数式の中では決して改行されない。たとえ \\ で強制改行 (4.3 節) しようとしても無視される。
しかし、ディスプレイ数式中に数式を複数行書きたい場合は多い。また、ディスプレイ数式に番号を付けたい場合もある。
そこで本節では、複数行の数式を書いたり、数式に番号を付けたりできる環境 (の一部) を紹介する。なお、それらの環境に共通する以下の特徴がある。

• amsmath パッケージを読み込まないと使えない (equation 環境を除く)。
• 環境内は自動的にディスプレイ数式モードになるので、\[ \] で囲んだりしなくてよい (囲むとエラーになる)。
• 出力中の各行の終わりに \\ を書く (最終行の最後には書かない)。各行の右端に自動的に数式番号が付く。ただし、文書クラスにオプション leqno (表 3.2) が指定されている場合は数式番号は左端に付く。\\ の前 (最終行の場合は最後) に \nonumber コマンドを書けば、その行には番号が付かない。

• 環境名の最後に「∗」を付けると (例えば \begin{gather*} ∼ \end{gather*} のようにすると)、その中の数式には一切番号が付かない*71 。
■equation 環境

この環境は、1 つだけの数式に番号を付けるために使う。この環境内では改行はできない。従って、この環境に ∗ をつけた equation∗ 環境は、普通のディスプレイ数式モードと全く同じということになる。

\begin{equation}\sin(x+y) = \sin x\cos y+\cos x\sin y\end{equation}
この式から以下が得られる。

\begin{equation}\sin 2x = 2\sin x\cos x\end{equation}sin(x + y) = sin x cos y + cos x sin y(1)

sin 2x = 2 sin x cos x(2)

この式から以下が得られる。

このように、式の番号は自動的に連番で振られる (これは本節で述べる他の環境でも同じ)。
式に付けられた番号を本文中から参照する方法は、10.3 節で述べる。
■gather 環境

これは、1 つの環境内に複数行の数式を書き、その 1 つ 1 つに番号を付けられる環境である。

\begin{gather}
3! = 1\times 2\times 3 = 6 \\4! = 1\times 2\times 3\times 4= 24 \\
10! = 1\times 2\times \cdots\times 10 = 3628800\end{gather}
3! = 1 × 2 × 3 = 6(1)

4! = 1 × 2 × 3 × 4 = 24

(2)

10! = 1 × 2 × · · · × 10 = 3628800(3)

これと同じことを、複数の equation 環境でやろうとすると、数式同士の間が縦に空きすぎてしまう。
ソースで最終行の最後に「\\」がないことに注意。また、この例でわかるように、ソース上での行分けを出力での行分けに一致させる必要はない (出力での 1 行がソースで複数行にわたったり、出力での複数行をソースで 1 行にまとめたりしてもかまわない)。これは以後の環境でも同じ。

gather 環境は、長い数式を途中で折り曲げて出力する用途にも使えなくはない。
*71 本資料では述べないが、split 環境のように他の数式環境 (gather など) の中でのみ使える環境があり、それには「∗」付きの名前の環境 (split∗) は存在しない。

57

\begin{gather}\sum_{i=1}^{6} a_{i} = a_{1} + a_{2} + a_{3} \nonumber \\{} + a_{4} + a_{5} + a_{6}\end{gather}6X

ai = a1 + a2 + a3

i=1

+ a4 + a5 + a6

(1)

最初の行に \nonumber があるため、その行には番号が付いていない。
ここで、a_{4} の前の「+」の前に「{}」を付けていることに注意。これがないと、a_{4} の前の「+」が単項演算子と見なされ、a4 との間の空きが狭まって「+a4 + a5 + a6 」のように「+」の後の空きが不揃いになってしまう。そこで、前に空のグループ「{}」を入れることによって、この「+」を 2 項演算子と解釈させているのである。
ただ、このような場合は次の align 環境を使って、1 行目の「=」と 2 行目最初の「+」を揃える方が見やすい。

■align 環境

gather 環境に似るが、複数行の数式をある箇所で縦に揃えることができる。この環境は以下のように使う。

\begin{align}
1行目 \\
2行目 \\· · · \\
最終行

\end{align}

ただし各行は、その行に n 個数式を書くとすると「その行の1番目の式の左半分 & 同 · 右半分 & その行の2番目の式の左半分 & 同 · 右半分 &· · · & その行のn番目の式の左半分 & 同 · 右半分」の形 (従って「&」は 2n − 1 個)。
特に、その行に数式が 1 つしかなければ「式の左半分 & 式の右半分」の形

従って、各行には奇数個の「&」があることになる (ただし、偶数個あってもエラーにはならない)。そして出力は、各行の奇数番目の「&」のところで縦に揃う。なお、「&」の個数は各行で違ってもよい。
実際には次の例のように、各行に数式 1 つとする場合が多く、その場合各行は「その行の式の左半分 & 同 · 右半分」という形になる (すなわち、各行に「&」は 1 つとなる)。出力が「&」の箇所で縦に揃っていることがわかる。

\begin{align}
3! & = 1\times 2\times 3 = 6 \\4! & = 1\times 2\times 3\times 4 = 24 \\10! & = 1\times 2\times \cdots\times 10 = 3628800\end{align}
3! = 1 × 2 × 3 = 6(1)

4! = 1 × 2 × 3 × 4 = 24

(2)

10! = 1 × 2 × · · · × 10 = 3628800(3)align 環境と似たものに eqnarray 環境というものもあるが、これは古く、現在では非推奨とされている。演算子記号の前後の空きがやや広がりすぎるという問題点もあるため、eqnarray は使わず align を使うこと (ただし eqnarray と alignの使い方は同じではない)。

gather 環境の説明に用いた「長い数式を折り曲げる例」は、align 環境を用いると次のようにできる。
この場合、+ a_{4} の前の「{}」はなくても、「+」を 2 項演算子と見なしてくれるので、「+」の後の空きが揃う。

\begin{align}\sum_{i=1}^{6} a_{i} & = a_{1} + a_{2} + a_{3} \nonumber \\& + a_{4} + a_{5} + a_{6}\end{align}
6X

ai = a1 + a2 + a3

i=1

+ a4 + a5 + a6

(1)

1 行に複数の式を書く場合は次の例のようになる。これは各行に 2 つの式を書く例で、各行の 1 番目と 3 番目の「&」が縦58に揃った上で、列の間、および左右の端に均等に空白が入る。この例では環境名が align∗ なので、式に番号が付かない。

\begin{align*}\sin(x+y) & = \sin x\cos y+\cos x\sin y &\cos(x+y) & = \cos x\cos y-\sin x\sin y \\\sin 2x& = 2\sin x\cos x &\cos 2x& = \cos^2 x-\sin^2 x\end{align*}
cos(x + y) = cos x cos y − sin x sin ysin(x + y) = sin x cos y + cos x sin ycos 2x = cos2 x − sin2 x

sin 2x = 2 sin x cos x■alignat 環境align 環境と同様であるが、出力で列と列の間が空かない点が異なる。使い方も align 環境とほぼ同じだが、\begin{alignat} の次に {n} (ここで n は列の数、つまり 1 行あたりの式の数 (の最大)) を書く必要がある。次の例は、先の align∗ 環境の例と同じ式を alignat∗ 環境で出力してみたもので、列の数 (各行の式の数) が 2 なので \begin{alignat*}{2} と書いている。
\begin{alignat*}{2}\sin(x+y) & = \sin x\cos y+\cos x\sin y &\cos(x+y) & = \cos x\cos y-\sin x\sin y \\\sin 2x& = 2\sin x\cos x &\cos 2x& = \cos^2 x-\sin^2 x\end{alignat*}sin(x + y) = sin x cos y + cos x sin ycos(x + y) = cos x cos y − sin x sin ycos 2x = cos2 x − sin2 x

sin 2x = 2 sin x cos x

このように、2 つの列がくっついてしまっている。これを避けるには、\quad (表 9.1) など適当な空白コマンドを、第 1 の式の最後か第 2 の式の最初 (の適当な 1 ヶ所) に付ければよい。

\begin{alignat*}{2}\sin(x+y) & = \sin x\cos y+\cos x\sin y \quad &\cos(x+y) & = \cos x\cos y-\sin x\sin y \\\sin 2x& = 2\sin x\cos x &\cos 2x& = \cos^2 x-\sin^2 x\end{alignat*}sin(x + y) = sin x cos y + cos x sin ycos(x + y) = cos x cos y − sin x sin ycos 2x = cos2 x − sin2 x

sin 2x = 2 sin x cos xalignat 環境は次のように、(見かけ上) 1 つの数式を、複数の箇所で縦に揃えることにも使える。
\begin{alignat}{2}
3! & = 1\times 2\times 3&& = 6 \\4! & = 1\times 2\times 3\times 4&& = 24 \\10! & = 1\times 2\times \cdots\times 10 && = 3628800\end{alignat}
3! = 1 × 2 × 3

=6

(1)

4! = 1 × 2 × 3 × 4

= 24

(2)

10! = 1 × 2 × · · · × 10 = 3628800■multline 環境(3)

これも、長い 1 つの数式を途中で折り曲げる用途に使うが、折り曲げた最初の行が必ず左揃え、最後の行が右揃え、それ以外の行が中揃えになる。また、数式番号は multline 環境全体に対して 1 つだけ付く。

59

\begin{multline}a = \\ b \\ + c \\ = d\end{multline}a=b+c= d (1)

10 相互参照
これは、LATEX で文書を書くには (数式を使うか否かに関わらず) 非常に重要な機能である。
文中で他の節を参照して「本稿 3.2 節で述べた44では · · · 」とか書くことはよくあるが、その後に文章修正や節の加除などをしていると、節番号がずれて、そのたびに本文中の「3.2 節で云々」のところを直すのは大変だし、直し忘れも往々にして生ずる。44が 3.3 節に移ったからといって、エディタの一括置換機能で「3.2」を「3.3」にしてしまうと、たまたま数式に「3.2 + 4.5 = · · · 」と書いてあったところや、「××という資料の 3.2 節で · · · 」のような関係ないところまで「3.3」にしてしまいやすい。
文中で、table 環境 (8.3.2 節) による表や figure 環境 (11.4 節) による図を参照する場合も同様の問題が起こる。
また、「本稿 12 ページのにおいて · · · 」などと書きたいこともよくあるが、ページ番号は platex でコンパイルしてみるまでわからないのだから、手動で入れようとするとお手上げになる。
こうした、参照先番号の整合性を取る作業を自動化する機能 (相互参照と呼ぶ) が LATEX にはある。

10.1 ソースファイルの書き方
LATEX で相互参照を行うには、\label と \ref および \pageref というコマンドを使う。本節ではまず、他の節を参照
先とする場合の例を示す。

\section{ 音 声 フ ァ イ ル の 形 式 }\label{sound-format}
一般的な音声ファイルの形式には以下のような…
\subsection{MP3 形 式 }…
\subsection{MIDI 形 式 }\label{midi}…
\section{ 変 換 方 法 }\ref{sound-format} 節 で 述 べ た よ う に 、 音 声 フ ァ イ ル の 形 式 は 様 々 で あ る 。
ここでは音声ファイル相互間の変換方法について述べる…

\subsection{mml2mid}
MIDI 形 式 (\pageref{midi} ペ ー ジ \ref{midi} 節 参 照 ) のファイルを作成するには…
このように• 参照先に \label を使ってラベルを貼る• そして、参照元で \ref コマンドや \pageref コマンドを使ってそのラベルを参照するという過程を踏む。すると出力では、\ref コマンドのところには参照先の節番号、\pageref コマンドのところには参照先のページ番号が出る (\label コマンドの置かれた場所には特に何も出力されない)。ただしそのためには、10.2.1 節で述べるように、platex コマンドを複数回実行する必要がある。

\label, \ref, \pageref コマンドの引数はラベルの名前である。ラベルの名前には、英字ばかりでなく、数字や「:」「-」のような記号文字 (特殊文字 (1.2.5 節) を除く)、日本語文字なども使ってよい。
あるラベルの参照 (\ref, \pageref) は、そのラベルの貼られる場所 (\label) より先でも後でも構わないし、同じラベ
ルを複数回参照してもよい。また、\label の置き場所も、\section{· · · } や \subsection{· · · } の直後とは限らず、本文

60

中のどこに置いてもよい。ただし、同じ名前のラベル (\label) を複数作ってはならない。

10.2 相互参照の利用
10.2.1 複数回のコンパイル
相互参照を使う場合に注意すべきは、platex コマンドを 2 度 (以上) 実行しなければならない点である。

1 度目の platex の実行では、LATEX はまだどのラベルがどの節にあるかわからないので、\ref コマンドや \pageref コ
マンドのあるところにはとりあえず「??」を埋めつつ、各 \label コマンドがどの節やページにあるか記録していく。この記録は ××.aux というファイルへ書かれる (例えば TEX ファイルが hahaha.tex なら hahaha.aux)。
いま、10.1 節の例のソースファイルに対し、1 度目に platex を実行したならば、こんなメッセージが出る (抜粋)。

No file ××.aux.
LaTeX Warning: Reference ‘sound-format’ on page 1 undefined on input line 212.
LaTeX Warning: Reference ‘midi’ on page 1 undefined on input line 246.
LaTeX Warning: There were undefined references.
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
これによって、• 1 回目の実行ではまだ ××.aux ができていない (No file ××.aux.) こと• 従って、ラベルの節番号やページ番号が ××.aux に記録されていないため、まだ未解決のラベル参照がある (There
were undefined references.) こと• 今回の処理で新たにそれらのラベルの節番号が加わったので、出力が変わるから platex で再処理しなければならない(Rerun to get cross-references right.) ことなどがわかる。この段階で出力 (プレビューや印刷) を行うと、次のようになるだろう。参照 (\ref, \pageref) のところが「??」になっている。

3 音声ファイルの形式
一般的な音声ファイルの形式には以下のような…

3.1 MP3 形式…

3.2 MIDI 形式…

4 変換方法??節で述べたように、音声ファイルの形式は様々である。ここでは音声ファイル相互間の変換方法について述べる…

4.1 mml2mid
MIDI 形式 (??ページ??参照) のファイルを作成するには…
2 度目の platex の実行では、××.aux ファイルが既にできているので、LATEX はそれをソースファイルと突き合わせなが61

ら、\ref, \pageref コマンドのあるところに本当の参照先節番号やページ番号を埋め込んでいく。この時は、platex の 1
度目の実行で出た

No file ××.aux.
LaTeX Warning: Reference ‘44’ on page p undefined on input line n.
LaTeX Warning: There were undefined references.
LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
のようなメッセージは出ない。これによって、ラベル参照の未解決がないこと、再度 platex で処理しなくてもよいことがわかる。この段階で出力して初めて、以下を得る。\ref, \pageref のところに実際の参照先が埋め込まれている。

3 音声ファイルの形式
一般的な音声ファイルの形式には以下のような…

3.1 MP3 形式…

3.2 MIDI 形式…

4 変換方法3 節で述べたように、音声ファイルの形式は様々である。ここでは音声ファイル相互間の変換方法について述べる…

4.1 mml2mid
MIDI 形式 (12 ページ 3.2 節参照) のファイルを作成するには…
もし、2 度目の platex の実行でなお

LaTeX Warning: Reference ‘midi’ on page 1 undefined on input line 246.
LaTeX Warning: There were undefined references.
のようなメッセージが出るなら、ラベル参照の未解決がまだ残っている。この例では、\ref{midi} あるいは \pageref{midi} があるのに \label{midi} がないことを意味している。おそらくラベル名の書き間違いであろう。
まれに、2 回目の実行で、「LaTeX Warning: There were undefined references.」のメッセージが出ない (つまりラベル参照の未解決がない) にも関わらず、なお

LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
と出ることがある。1 度目の実行でラベルの参照先が「??」になっていたのが、2 度目の実行で実際の参照先に変わること
によって、文章の位置が動き、ラベルの参照先のページ数が変わってしまうことがありうるからである。
この場合は、再度 platex を実行しなければならない。それでもこのメッセージが出るなら、もう 1 度実行する。
というわけで、LATEX の書籍や参考資料などには「相互参照を使う場合は、platex コマンドを 2 回実行する」と書かれていることが多いが、正しくは『「Rerun to get cross-references right.」のメッセージが出なくなるまで繰り返し

platex コマンドを実行する』なのである。
なお、\ref は番号だけしか出力しない*72 ので、文章として通るように本文を書く必要がある。例えば 10.1 節の例中の*72 学会用に特別に作られたクラスなどでは、そうでないことがある。

62

「変換方法」の節で、ソースには「\ref{sound-format}節で述べたように · · · 」とあるが、「節」を抜いて「\ref{sound-format}で述べたように · · · 」と書くと、出力は「3 で述べたように · · · 」となって意味不明になる。
10.2.2 相互参照関連のエラーメッセージ
1.4.2 節に述べたエラーメッセージの他に、相互参照の機能を使う場合によくあるエラーメッセージには以下のものがある (10.2.1 節に出たものも再掲)。

• LaTeX Warning: There were multiply-defined labels.
同じ名前のラベルが複数ある。メッセージの上の方を見ると、「LaTeX Warning: Label ‘××’ multiply

defined.」のように、重複しているラベルの名前が具体的に出ているはず。
• LaTeX Warning: There were undefined references.
未解決のラベル参照がある。メッセージの上の方を見ると、「LaTeX Warning: Reference ‘××’ on pagen undefined on input line m.」のように、未解決のラベルの名前が具体的に出ているはず。対処は 10.2.1
節参照。platex の実行 1 回目でこれが出る場合は、必ずしもエラーではない。

• LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
エラーではないが、ラベル参照を正しくするために、platex コマンドをもう 1 度実行せねばならない。10.2.1
節参照。

platex を実行した時に出るエラーメッセージが多量にあって、1 画面に収まらないときも、慌てる必要はない。××.logというファイルを見れば、全てのメッセージは保存されている。

10.2.3 ソースを再編集した後
1 回 platex を実行した後に、ソースを再編集した場合でも、ラベルの増加 · 減少がなく、既存のラベルの節番号及びペー
ジ番号も全く変わらなければ、改めて platex を実行した時にLaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
のメッセージは出ないことがある。その場合、もう 1 度 platex を実行する必要はない。逆に、platex を実行した時にこのメッセージが出たなら、それはラベルに何らかの変更があったことになるので、再度 platex を実行する必要がある。

10.3 箇条書きの項目番号や式の番号の参照\label コマンドが enumerate 環境 (4.2.2 節) の最初の \item 以降に現れた場合、対応する \ref は、節番号ではなく、箇条書きの項目番号を参照する (この場合も、\pageref は他の場合と同じくページ番号である)。
次のうち正しい表記の組み合わせはどれか。

\begin{enumerate}\item 少 し づ つ / い づ れ\item 少 し づ つ / い ず れ\item 少 し ず つ / い づ れ\item 少 し ず つ / い ず れ \label{seikai}\end{enumerate}
正 解 は \ref{seikai} 番 。
次のうち正しい表記の組み合わせはどれか。

1. 少しづつ/いづれ
2. 少しづつ/いずれ
3. 少しずつ/いづれ
4. 少しずつ/いずれ
正解は 4 番。

63

また、9.5 節に出た equation, gather, align などの数式用環境の中に \label コマンドが現れた場合は、対応する \ref コ
マンドはその式の式番号を参照する。

\begin{equation}\sin(x+y) = \sin x\cos y+\cos x\sin y \label{sin-add}\end{equation}
式 (\ref{sin-add}) か ら 以 下 が 得 ら れ る 。
\begin{equation}\sin 2x = 2\sin x\cos x\end{equation}sin(x + y) = sin x cos y + cos x sin y(1)

sin 2x = 2 sin x cos x(2)

式 (1) から以下が得られる。

10.4 表の番号の参照 (table 環境)
8.3.2 節で述べたような理由で、tabular 環境による表は、table 環境を使って、別な場所へ置けるようにすることが多い。
table 環境は基本的に\begin{table}\caption{表のタイトル}\centering· · · tabular環境による表 · · ·\label{ラベル名}\end{table}のように記述する。
ただし、1 行目は \begin{table}[ht] のように書くこともでき ([ ] 内には h · t · b · p のうち 1 つ以上を続けて書く)、
その場合、table 環境内に置いたものを、その場以降で行が改まった直後 (h) · ページ上部 (t) · ページ下部 (b) · 図だけをまとめた独立ページ (p) のうちどこに置くことを許可するかの指定ができる (h · t · b · p は必ずこの順に優先され、[ ] 内に書く順序にはよらない)。例えば [ht] と指定すると、その場 · ページ上部のどちらかに置くことを許可する。
この [ ] の中を、table 環境のオプション引数という。なお、table 環境の場合、オプション引数を省略すると、デフォルトとして [tbp] と指定したのと同じと見なされる。また、[ の直後に「!」を書くと、LATEX が図を配置する際に考慮するいくつかの制約を緩和することによって、よりその位置に図を入りやすくする (例えば [hbp] より [!hbp] の方が、行の改まった直後 (h) やページ下部 (b) などに図がより入りやすくなる)。本資料の筆者は [!ht] を多用している。

例として、ソースに以下のように書いたとする (この場合、table 環境のオプション引数は省略している)。
京 都 --- 奈 良 間 の 鉄 道\begin{table}\caption{ 京 都 --- 奈 良 間 の 鉄 道 }\centering\begin{tabular}{c|ccc}
会社 & 利用列車& 所 要 & 座 席 \\\hline
近鉄 & 急行& 45 分 & ロ ン グ シ ー ト \\JR & み や こ 路 快 速 & 41 分 & 転 換 ク ロ ス シ ー ト\end{tabular}\label{kyoto-nara}\end{table}%
で は 、 近 鉄 と JR の 2 者 が 競 い 合 っ て い る 。 表 \ref{kyoto-nara} を 見 よ 。
すると、とりあえずその場には、table 環境の部分を無視して京都—奈良間の鉄道では、近鉄と JR の 2 者が競い合っている。表 1 を見よ。とだけ出力される (もちろん、\ref コマンドにきちんと表を参照させるためには、10.2.1 節で述べたように、platex コマン

64

ドを複数回実行せねばならない)。そして、その場では無視された table 環境の部分は、(デフォルトが tbp なので) ページの上部か下部、あるいはそのページに十分な余白がなければ次以降のページに
表1

京都—奈良間の鉄道

会社

利用列車

所要

座席

近鉄

急行

45 分

ロングシートJR

みやこ路快速41 分

転換クロスシートのように出力される。table 環境が他のページに回された場合、そのページの残りには後続の文章が回されてくるので、これによって、空きすぎのページができることを防げる (これが table 環境の利点である)。
このとき、本文に「上の表を見よ」あるいは「次の表を見よ」などとは書けない (table 環境の働きにより、表がどこへ回されるかはわからないからである)。それゆえ、本文中でその表を参照するには、この例のように相互参照を使わねばならないのである。
\centering とは、それ以後の文書を中寄せにするコマンド。これにより、tabular 環境の中身を中寄せにしている。ただし table 環境の中にあるので、table 環境外には影響を及ぼさない。center 環境との違いは、center 環境だとその上下に若干の空きが入るが、\centering ではそうならない点。table 環境で出力される部分はもともと上下に空きが入るので、table 環境内で中寄せする場合は、center 環境でさらに余分な空きが入らないように、\centering の方を使う (11.4 節のﬁgure 環境内でも同様)。

\caption コマンドは、table 環境あるいは後述する figure 環境 (11.4 節参照。table 環境に似ているが、表ではなく図を最適な場所に配置するために使う) の中でのみ使えるコマンドで、その table/figure 環境に表題 (キャプション) を付ける。

\caption は、表の番号を自動的に振ってくれる (表 1 の出力結果を見よ)。そして、table 環境内 (ただし \caption コマ
ンドより後) のどこかに \label コマンドを置けば、対応する \ref コマンドはその表の番号を参照することになる。
なお、表のキャプションは表の上に置くのが慣習である。これに対し、図のキャプション (11.4 節) は図の下に置くのが慣習である。

10.4.1 二段組みの場合の table 環境
二段組み (文書クラスに twocolumn オプションを指定した時。表 3.2) の場合に table 環境を使うと、二段のうち一段分のスペースのみを使う。二段ぶち抜きの表にしたい場合は、table∗ 環境を用いればよい (この場合、表はページの上部か独立したページにしか入らない)。なお、一段組みの場合は、table∗ 環境は table 環境と全く同じ働きである。

10.5 AUCTEX を使う場合
ここでは、相互参照を含む TEX ソースを AUCTEX (5 節) で編集する場合の留意点を述べる。

10.5.1 複数回のコンパイル
AUCTEX を使っている場合で、Ctrl-C Ctrl-C により自動的に platex コマンドを起動したときに、10.2.1 節に述べたよ
うな理由で再度 platex を起動しなければならない場合には、ミニバッファに
You should run LaTeX again to get references right, {n} pages.
と出る。そして、次回の Ctrl-C Ctrl-C でもCommand: (default pLaTeX)となって、起動されるコマンドのデフォルトが platex となるので、そのままリターンして platex を起動。ミニバッファに「You should run LaTeX again · · · 」と出なくなるまでこれを繰り返す。これが出なくなれば、次回の Ctrl-C Ctrl-C の起動コマンドのデフォルトは xdvi になる。

10.5.2 table · ﬁgure 環境の入力
AUCTEX で Ctrl-C Ctrl-E により table 環境 (10.4 節) を入力する場合、ミニバッファでいろいろ聞いてくる。その中に65

は、相互参照のラベルに関する質問も含まれている。
まずは

Float position:と聞いてくる。これは、table 環境のオプション引数 (10.4 節) の問い合わせで、何も入力しなければ (つまりリターンだけ押せば) オプション引数は付かない。
次いでキャプションを聞いてくる。その次に、中央寄せにするか聞いてくる。y と答えると、既に 10.4 節で述べたように、center 環境ではなく \centering というコマンドで中央寄せにされる。
その次に聞いてくるのが相互参照用のラベル名である。
「What label: tab:」と出てくるので、「tab:」の部分を消さずに答えれば「tab:」で始まるラベルが付くのだが、もちろんこれを消して別なラベル名を答えてもよい。

AUCTEX では、table 環境を入力すると自動的にその中の tabular 環境まで入力してくれるので、ここまで答えると、次に tabular 環境の入力時と同じ質問が始まる。つまり、「Position:」「Format:」の順に聞いてくる。詳細は 5.2.4 節参照。
figure 環境 (11.4 節) を入力する場合も、中身の tabular 環境の入力が行われない点を除いて、上記 table 環境の場合と同じことが起こる。

11 図の取り込みLATEX の文書に図を取り込むには、図を EPS 形式 (Encapsuled PostScript, PostScript 形式の特別な形態) のファイルで用意し、それを取り込む*73 という方法が、少なくとも従来は一般的であった*74 。近年は別な手法 (図を PDF 形式で用意するなど) も広まってきたが、ここでは従来実績が蓄積されている、EPS 形式による図の取り込み方法について述べる。

11.1 EPS で出力できるソフト
図を EPS 形式のファイルで用意するには、EPS 形式のファイルを出力する手段を要する。そのようなソフトは多数あるが、ここではそのうち、UNIX/Linux で利用可能な Tgif, GNUPLOT, ImageMagick の 3 つについて述べる。いずれも機能は多いので、本資料ではそれらの機能については詳しく述べず、それらで EPS ファイルを作成する方法に絞って述べる。

11.1.1 Tgif
Tgif は、今ではややレガシー (古い) なソフトとなりつつあるものの、UNIX/Linux 上で線画を書くための描画ツールとして、今なお定番の存在の 1 つである*75 。

Tgif は、独自形式のファイル (オブジェクトファイル*76 ) と、描画結果の画像ファイル (EPS の他 JPEG, PNG など各種
形式で出力可) を出力する。オブジェクトファイルは ××.obj というファイル名になる。
■起動と描画

Tgif を起動するには、オブジェクトファイルの名前を指定して 「$ tgif ××.obj  」とする (.obj は省略可)。指定したオブジェクトファイルが既存ならそのファイルを、そうでなければ新たなオブジェクトファイルを編集開始する。図 11.1 のようなウィンドウが現れる。& を付けてバックグラウンド起動 (2.2 節) するのがお勧め。
描画するものの種類 (直線、円など) はモードウィンドウ (画面左端) で選ぶ。描画後、オブジェクトファイルの保存は、メニューバー (画面上端) の「ファイル」→「保存」で行う。
Tgif のインストール方法によっては、メニューが英語になっている場合もある。

■EPS 形式ファイルの生成

EPS 形式の画像ファイルを生成するには、まずパネルウィンドウ (メニューバーのすぐ下、上*73 ただし、そうして作った L
AT X 文書は、PostScript に依存してしまう (PostScript を解釈できるメカニズムがないと出力できなくなる。特に、E
PostScript プリンタ以外のプリンタに出力できなくなる)。しかし、現在ではこのことが問題になることはほぼないであろう (ghostscript というソフトによって、PostScript 非対応プリンタの大半を PostScript プリンタに見せかけることができるため)。なお、xdvi や dvipdfmx はPostScript に依存した LATEX 文書でも処理できる。
*74 この他、picture 環境というもの (またはその改良) を使えば、L
AT X だけである程度の図を書くこともできなくはないが、本資料では解説を省く。
E*75 なお、Tgif で作成する図に日本語の文字を入力する場合、システムによっては、所定の設定が必要な場合がある (G 棟計算機システムではこの設定は済んでいる)。本資料ではそれについては述べない。

*76 コンパイラが出力する「オブジェクトファイル」とは無関係。

66

図 11.2

GNUPLOT の出力例
(gv によるプレビュー)

図 11.1 Tgif のウィンドウ

下 2 段にアイコンが並ぶ所) の左下の表示が「LATEX(EPS)」になっていることを確認し (図 11.1 ではそうなっている)、なっていなければ「LATEX(EPS)」にする (あるいはメニューバーの「ファイル」→「印刷/出力フォーマット」で「LATEX(EPS)」を選ぶのでもよい)。
その後、メニューバーの「ファイル」→「印刷」を選べば EPS ファイルが出力される。メッセージウィンドウ (パネルウィンドウの右隣) にメッセージが出てそのことを知らせてくれる。オブジェクトファイル名が ××.obj のとき、EPS ファ
イル名は ××.eps となる。
できた EPS ファイルを LATEX 文書に取り込む方法は、11.3 節を参照。

11.1.2 GNUPLOT
GNUPLOT は、UNIX/Linux 上でグラフを書いたりデータのプロットを行ったりするソフトの定番である。ここでは、
GNUPLOT でデータのプロットを行って EPS 形式のファイルに出力する例を取り上げる。
いま、以下のような内容のファイル fuhyohyo.txt があるとする。データは 1 行あたり 1 つの点を表しているとし、第 1
列が x 座標、第 2 列が y 座標とする。これを GNUPLOT でプロットして EPS ファイルにしてみよう (図 11.2 はプロット
結果の EPS ファイルを 11.2 節の gv でプレビューしたもの)。

1.2
2.5
3.7
4.8

2.1
2.9
4.3
6.6

端末エミュレータ (シェル) から gnuplot コマンドを起動すると、オープニングメッセージの後、「gnuplot>」と出る。これが GNUPLOT のプロンプト。GNUPLOT から抜けるには、Ctrl-D あるいは「exit  」とする。

GNUPLOT のプロンプトが出たところで、以下のように操作する (kekeke.eps というファイルに出力する場合)。
set term post eps 
set out "kekeke.eps" plot "fuhyohyo.txt" with linespoints 
最初の行は、出力を EPS 形式にする指示。これがないと、画面にグラフが書かれる。次の行は、出力先ファイルを

kekeke.eps ファイルにする指示で、これがないとファイルに出力されない (ちなみに、EPS 形式ファイルのファイル名末尾は通常「.eps」にする)。

3 行目で、ファイル fuhyohyo.txt のデータを、折れ線と点でプロットする (with linespoints がなければ点だけ、
with lines に変えると折れ線だけ)。結果は EPS 形式で kekeke.eps ファイルに書き出される。
ここまで来たら GNUPLOT を抜ける。抜けるには Ctrl-D とする。できた EPS ファイルをプレビューする方法は 11.2

67

節、LATEX 文書に取り込む方法は 11.3 節を参照。
本資料では説明は省くが、GNUPLOT は非対話形式で使うこともできる。

11.1.3 ImageMagick
ImageMagick は単一のコマンドではなく、画像ファイルの閲覧や変換などを行う多数のコマンドからなるソフトウェア
である。その中に convert というコマンドがあり、画像形式の変換 (例えば JPEG を EPS に) ができる。
従って、EPS 形式以外の画像ファイル (例えば JPEG 形式) を LATEX 文書に取り込みたければ、convert で EPS 形式に変換して取り込めばよい。例として、元のファイルが asdf.jpg なら$ convert asdf.jpg asdf.eps によって、EPS 形式のファイル asdf.eps が作られる*77 ので、これを 11.3 節の方法で LATEX 文書に取り込める。
なお、11.3.2 節で、JPEG など (EPS 形式以外) の画像ファイルを LATEX 文書に取り込む、別の方法を説明する。
convert は、画像ファイル以外に、PDF ファイルを EPS 形式に変換することもできる (従って、PDF ファイルを LATEX
文書に取り込むのにも使える)。しかし、そうすると PDF ファイル中の文字や線画がビットマップ化 (小さな点の集まりに変換) されてしまう。PDF の EPS 形式への変換には、pdftops コマンド (1.1 節) を使って以下のようにする方がよい。

$ pdftops␣-eps␣×××.pdf␣×××.eps 11.2 EPS ファイルのプレビュー
EPS 形式のファイルをプレビューするには、UNIX では gv というコマンドを使う。
gv は、内部で ghostscript というソフトを動かして、PostScript 形式を印字イメージに変換し、それを画面に表示する。
ちなみに ghostscript では、EPS でない通常の PostScript 形式や、PDF の多くも閲覧可能。従って、gv でもそれらのファイルが閲覧できることになる。

ここでは、11.1.2 節で作成した kekeke.eps が正常にできているかどうかを確認してみよう。シェルから$ gv kekeke.epsとすると、図 11.2 のようにグラフが表示されるはずである。gv を抜けるには、gv のウィンドウに q を入力すればいい。
むろん、他の方法で (例えば 11.1.1 節で Tgif から) 作った EPS ファイルもプレビューできる。

11.3 LATEX 文書への取り込み
LATEX 文書に EPS ファイルを取り込むには、graphicx パッケージを使う。このパッケージを読み込むと、\includegraphics{××.eps}
で EPS ファイルが取り込めるようになる (具体例は 11.3.3 節で述べる)。

11.3.1 図の取り込み時の注意点
大変残念なことに、(近年の LATEX では) graphicx パッケージと \includegraphics コマンドを使って図を取り込んだ

TEX ソースは、 1 xdvi および dvips で正常に処理可能

2 dvipdfmx で正常に処理可能 —の両方を同時に満たすようにはできない。
まず、graphicx パッケージの読み込み方には以下の 2 通りがある。

a. \usepackage{graphicx} とする。通常のパッケージの読み込み方通り。
b. \usepackage[dvipdfmx]{graphicx} とする。この中の [dvipdfmx] の部分は、graphicx パッケージのオプションである。パッケージのオプションは、クラスのオプションと同様、このように [ ] で囲んで書く (複数のオプションを指定する場合は [ ] の中に「,」で区切って書く)。

*77 ImageMagick のバージョンや設定によっては、セキュリティを理由にデフォルトでは EPS への変換ができない場合がある。その場合、Netpbmというコマンド群を用いた $ jpegtopnm asdf.jpg | pnmtops -noturn > asdf.eps という代替手段がある。

68ただし、(graphicx に限らず一般に) パッケージにオプションを指定する場合、同じオプションを指定しない他のパッケージとまとめて指定することはできない。例えば \usepackage[dvipdfmx]{graphicx,amsmath} とはできず (amsmath パッケージには dvipdfmx オプションを指定しないため)、その場合 graphicx と amsmath を別々に

\usepackage しなければならない。

a. の指定をした TEX ソースから作った DVI ファイルは、1 は満たすが、dvipdfmx で PDF 化すると、\includegraphics
で取り込んだ図が変な場所に動いてしまう (紙の外に移動して結果的に消えてしまう場合もある)。つまり 2 を満たさない。
逆に b. だと、 2 は満たすが、xdvi で見たり dvips で処理したりした時に図が変な場所へ飛び、 1 を満たさない。
従って、図を取り込む場合は、xdvi, dvips で処理する際は上記 a. を、dvipdfmx で処理する際は上記 b. を選ぶ必要がある*78 。特に、xdvi でプレビューしながら dvipdfmx で PDF も作成する場合は、文書編集の流れとしては

1. \usepackage{graphicx} としておき、文書を編集しつつ適宜 xdvi によるプレビューで組版結果を確認
2. PDF を作成する段階になれば、\usepackage[dvipdfmx]{graphicx} に変更し、platex コマンド (必要に応じて複数回。10.2.1 節) で DVI ファイルを作り直してから dvipdfmx コマンドで PDF を作成

3. その後文書を書き直す場合は、再度 \usepackage{graphicx} に戻し、xdvi でプレビューしながら編集する。PDF
化するときにまた \usepackage[dvipdfmx]{graphicx} に直す。この繰り返しということになってしまう。しかし、毎回いちいち \usepackage のところを書き直すのは面倒である。
この問題の緩和策としては、以下のようなものがある。
■xdvi · dvips を使わない

最も消極的な対応であるが、そもそも xdvi や dvips を使わず、上記 b. だけを使い、プレビュー

したければその都度 PDF に変換して PDF ビューアを使う。印刷も PDF ビューアから行う、という手である。
文書が長くなってくると PDF への変換もそれなりに時間がかかるようになるので、プレビューしようとするとその都度時間を要することになり、不便である。一方、EPS 以外の画像取り込み (11.3.2 節) を使う場合、もともと xdvi や dvips が使えないので、この方法を選択するしかなくなる。
■dvipdf コマンドの使用 PDF の作成に、dvipdfmx の代わりに dvipdf というコマンドを使えば、上記 a. の指定のままで正常に PDF が作成できる。dvipdf は内部で dvips を起動し、PS ファイルを経て PDF を作成しているためである。
ただし、以下のような理由で、dvipdfmx より dvipdf の方がおすすめできるというわけでは必ずしもない。

• dvips を経るため、dvipdf では 11.3.2 節で述べる EPS 以外の画像ファイルの直接取り込みが使えなくなる• かつて dvipdf コマンドは、日本語文字をビットマップ化してしまうことがあった (近年ではそういうことはなくなったようではあるが)■設定の違いによるファイルの切り分け

例えば、aaa.tex という LATEX ソースに文書を作成していて、この文書に画像を取り込みたい場合、aaa.tex のプリアンブルを\documentclass[a4j]{jsarticle}\ifx\dummy\undefined\usepackage{graphicx}\else\usepackage[dvipdfmx]{graphicx}\fiのようにする。また、それとは別に bbb.tex というファイルを作ってそれに\newcommand{\dummy}{}\input{aaa}の 2 行だけを書く (\documentclass などは書かない)。ここで、2 行目の \input{aaa} は 13 節で述べる、他のファイルを取り込むコマンドであり、ここでは aaa.tex を取り込んでいる。

*78 EPS ファイルの種類によっては、a. でも b. でも、⃝1 と⃝2 を両方満たす、つまりどちらでも正常に処理できてしまうものがある。しかし、それはたまたまであり、その動作に頼るべきではない。そのような場合であっても、処理する手段によって a., b. を正しく選ぶ方がよい。

69

すると、platex で aaa.tex をコンパイルしてできる aaa.dvi の方は xdvi, dvips で正常に処理でき、bbb.tex をコンパイルしてできる bbb.dvi の方は dvipdfmx で処理できる。よって、編集中の作業は aaa.tex の方で行い、PDF を作る段
階になれば bbb.tex を処理すればよい。また、そのたびに \usepackage を書き直す必要はない。
原理を説明しておく。まず、bbb.tex の \newcommand は、14.1 節で述べる「新たなコマンドを定義するコマンド」で、ここでは \dummy という「何もしないコマンド」を定義している。また、その次の \input によって、そこに aaa.tex が取り込まれる、すなわち、そこに aaa.tex の内容と同じことが書かれているように扱われる。
一方、aaa.tex の \ifx から \fi までは if 文 (の一種) であり、 \ifx\dummy\undefined は「\dummy というコマンドが定義されていなければ」という条件を表している (if 文については本資料では詳しく述べない)。
よって、aaa.tex を platex でコンパイルすると、\dummy が定義されていないので \usepackage{graphicx} の方が実行され、bbb.tex を platex でコンパイルすると、\dummy が定義されているため \usepackage[dvipdfmx]{graphicx}の方が実行されることになる。

11.3.2 EPS 以外の画像の直接取り込み11.1.3 節の方法では、EPS 形式以外の画像を取り込もうとする場合、EPS に変換して取り込んでいた。しかし、実は\includegraphics コマンドは、PNG, JPEG 形式の画像や PDF ファイルなどを、(EPS ファイルに変換せずに) 直接取り込むこともできる。
ただし、そうするには注意点が 2 つある。

• 11.3.1 節の a. は使えず、同節の b. の方しか使えない。すなわち、graphicx パッケージを読み込む際に \usepackage[dvipdfmx]{graphicx} とし、dvipdfmx で PDF 化する選択をとることになる。よって、xdvi や dvips は使えない。
• あらかじめ、取り込むファイルに対して extractbb というコマンドを実行しておく必要がある*79 。
例えば、asdf.jpg という JPEG ファイルを取り込むなら、まず$ extractbb asdf.jpg としておく。すると、asdf.xbb というファイルができる。そうした上で、ソースファイルに\usepackage[dvipdfmx]{graphicx}···\includegraphics{asdf.jpg}と書けば、11.3.1 節の b. のやり方で JPEG の画像を取り込むことができる。asdf.jpg を EPS に変換する必要もない。
これに対し、11.1.3 節の方法 (EPS に変換した上で \includegraphics で取り込む) であれば、11.3.1 節の a., b. ともに使える。すなわち、graphicx パッケージに dvipdfmx オプションを付けなければ xdvi や dvips が使え、付ければ dvipdfmx
で PDF も作成できる。extractbb コマンドも不要。ただし、PDF を作成する場合、でき上がる PDF ファイルのサイズは、
本節の方法の方が一般にコンパクトになる (JPEG などの圧縮した画像フォーマットのまま画像を取り込むため)。

11.3.3 図の配置や大きさの調整\includegraphics コマンドで取り込まれた画像ファイル (EPS 以外でも) は、1 つの大きな文字のように扱われる。図
を紙面の真ん中に配置したければ、以下のように center 環境と併用すればよい。

\begin{center}\includegraphics{××.eps}\end{center}
しかしこれだけでは、図の大きさを指定して取り込むことができないので、取り込む図の大きさによっては紙面をはみ出したり、小さすぎたりする。図を拡大 · 縮小して取り込むには、\resizebox または \scalebox というコマンドを表 11.1のように使う (これらのコマンドも、graphicx パッケージを読み込まないと使えない。なお、\resizebox コマンドの長さの単位については 15.2 節参照)。
\rotatebox, \reflectbox は拡大 · 縮小のコマンドではないが、同表で併せて紹介した。
*79 extractbb コマンドの実行を自動化する方法もあるが、本資料では述べない。なお、ebb コマンドを実行すると書かれている資料もあるが、ebb コ

マンドはもはや古い。

70

表 11.1 拡大縮小のコマンド

コマンド

効果

\resizebox{10cm}{!}{中身}

中身を横 10cm に拡大/縮小。縦横比は変わらない\resizebox{!}{7cm}{中身}

中身を縦 7cm に拡大/縮小。縦横比は変わらない\resizebox{10cm}{7cm}{中身}

中身を横 10cm、縦 7cm に拡大/縮小。縦横比が変わる\scalebox{2.5}{中身}

中身を横縦 2.5 倍に拡大

\scalebox{0.8}[0.6]{中身}

中身を横 0.8 倍、縦 0.6 倍に縮小 (縦横比が変わる)\rotatebox{22.5}{中身}

中身を反時計回りに 22.5 度回転\reflectbox{中身}

中身を左右に反転

11.1.2 節で作った kekeke.eps を横 10cm に調整 (縦横比を変えず) して取り込んでみよう*80 。
ここは普通の文章。ここにグラフを取り込んでみよう。

\begin{center}\resizebox{10cm}{!}{\includegraphics{kekeke.eps}}\end{center}
うまく取り込めたかな。
ここは普通の文章。ここにグラフを取り込んでみよう。
7"fuhyohyo.txt"

6.5
6
5.5
5
4.5
4
3.5
3
2.5
2
1

1.5

2

2.5

3

3.5

4

4.5

5

うまく取り込めたかな。
\resizebox や \scalebox を使う代わりに、\includegraphics コマンドだけで直接拡大 · 縮小もやってしまう方法もある。例えば上の例と同じことは以下のようにも書ける。[width=10cm] の部分は \includegraphics コマンドの「オプション引数」である。
ここは普通の文章。ここにグラフを取り込んでみよう。

\begin{center}\includegraphics[width=10cm]{kekeke.eps}\end{center}
うまく取り込めたかな。
しかし、\resizebox や \scalebox コマンドには、\includegraphics コマンドとは独立に使えるという利点がある。その例が 11.3.4 節に出てくる。

11.3.4 図以外の拡大 · 縮小
表 11.1 のコマンドで拡大/縮小/回転する中身は、\includegraphics{· · · } である必要はない*81 。例えば

*80 ちなみに、グラフの回りの数値なども含めた全体を横 10cm にするので、グラフの x 軸の −10 から 10 までの長さは 10cm に満たない。念のため。
*81 ただし、たとえ中身が \includegraphics でなくても、表 11.1 のコマンドを使うと PostScript 依存になる。

71

\begin{center}\resizebox{2cm}{!}{ あ }\end{center}あのようなこともできる*82 。ただし、巨大なサイズの文字を使う方法はちゃんとしたものが他にあり (本資料では略)、これ
は文字を拡大する方法としてはあくまで間に合わせである。この手法の別な用途としては、例えば表の横幅が紙面をほんの
ちょっとはみ出してしまうとき、表全体を \scalebox で 0.95 倍に縮小してごまかすような場合に使える。

11.4 ﬁgure 環境
figure 環境は、表でなく図に対して用いられる点を除いて、10.4 節に出た table 環境と同様の働きをする。すなわち、
figure 環境の中身の図を、適宜他の場所に動かすことによって、空きすぎのページができることを防ぐ。
ソースにデータのプロット結果\begin{figure}\centering\resizebox{10cm}{!}{\includegraphics{kekeke.eps}}\caption{ デ ー タ の プ ロ ッ ト 結 果 }\label{plot-result}\end{figure}%
を 、 図 \ref{plot-result} に 示 す 。
と書くと、その場には figure 環境の部分を無視してデータのプロット結果を、図 1 に示す。とだけ出力され、ページの上部 · 下部か次ページの空いたところに図 1 が独立に出てくる。なお、10.4 節でも述べたように、
図のキャプションは図の下に置くのが慣習である。
7"fuhyohyo.txt"

6.5
6
5.5
5
4.5
4
3.5
3
2.5
2
1

1.5

2

図1

2.5

3

3.5

4

4.5

5

データのプロット結果*82 この方法で字を大きくした場合、xdvi では (大きくすればするほど) ギザギザが目立って汚く見えるが、印刷あるいは PDF 化したものはちゃんとまともになる。

72もちろん、figure 環境の中身は \includegraphics による画像ファイルの取り込み以外のものであってもかまわない。極端な例としては\begin{figure}\vspace{7cm}\caption{ 採 取 し た サ ン プ ル の 体 長 と 体 重 の 相 関 }\end{figure}のように、図のスペースだけを \vspace (15.1 節) で確保し、図自体は (紙に印刷した後で) ハサミと糊で物理的に貼り込むことも可能である (現在ではそのようなことをする必要はまずないと思われるが)。

figure 環境でも、table 環境と同様、[!ht] などのオプション引数 (10.4 節) によって図の入る位置の制御ができる。また、10.4.1 節の table∗ 環境と同様に、二段組みの場合に二段ぶち抜きの図を作るための figure∗ 環境というものもある。

11.5 色付き文字
色付き文字は図の取り込みとは全く別の機能だが、\usepackage を使うにあたって、図の取り込みと共通の注意点があるので、ここでまとめて述べる。

11.5.1 色使用時の注意点
色付き文字*83 を使うには 11.5.2 節に述べるコマンドを使うが、それらのコマンドを使うには color パッケージを読み込む必要がある*84 。このパッケージは 11.3.1 節の graphicx パッケージと同様の使い方をする。すなわち

a. dvips, xdvi で処理する際は \usepackage{color} とする。
b. dvipdfmx で処理する際は dvipdfmx オプションをつけ、 \usepackage[dvipdfmx]{color} とする*85 。

11.5.2 色付き文字のためのコマンド
6.2 節の字体変更コマンドと同様に、引数をとってその引数の部分だけ色を変えるコマンド \textcolor{色指定}{引数}と、引数をとらずにそれ以降の全ての色を変えるコマンド \color{色指定} がある。
どちらも、「色指定」の部分には red, yellow, green, cyan, blue, magenta, black, white の 8 色が使える。
郵 便 ポ ス ト が \textcolor{red}{ 赤 い } の は な ぜ で し ょ う 。
郵便ポストが赤いのはなぜでしょう。
これらの他に、色つきの箱を作る \colorbox, \fcolorbox などのコマンドもあるが、使用頻度はあまり多くないと思われるので本資料では省く。

color パッケージに usenames オプションを指定 (\usepackage[usenames]{color} あるいは \usepackage[dvipdfmx,
usenames]{color} のように) すると、さらに Peach, Orange, Emerald, Purple, Brown, Gray など 60 色程度の色指定が使えるが、これで使える色指定は、基本 8 色と違って全て先頭が大文字なので注意。この時使える色の全容については、検索エンジンで「latex color usenames」で検索すればよい (2020 年 8 月現在では例えば https://xyoshiki.web.fc2.com/

tex/color.html がある)。
さらに、RGB カラー*86 による色指定もでき、\textcolor[rgb]{0.1,0.27,0.45}{ 藍 色 }(prussianblue) で す 。
藍色 (prussianblue) です。

*83 色付き文字を使った L
AT X 文書も、EPS ファイルを取り込んだ文書 (p. 66 脚注

E*73) と同様、PostScript 依存になる。

*84 現在はより機能の多い xcolor パッケージもある。
*85 ただし、現状では graphicx パッケージと一緒に使わない限り、a. のソースを dvipdfmx で処理しても支障はないようである。
*86 この資料では示さないが、CMYK カラー指定も使える。

73また、以下のようにして、自分で色を定義することもできる。

\definecolor{vermilion}{rgb}{0.89,0.26,0.2}…

\textcolor{vermilion}{ 朱 色 } を 定 義 し て み た 例 で す 。
朱色を定義してみた例です。

12 目次 · 参考文献
12.1 目次
目次を作成するには、目次を入れたい箇所 (多くの場合は文書の最初の方、\begin{document} の直後。ただしこの資料
では文書の最後であるが、これはあまり一般的ではない) に \tableofcontents と書くだけでよい。節や副節などの見出し(\section, \subsection などのコマンド。表 4.1) があるページの一覧が、\tableofcontents のある場所に出力される。
ただし、そのためには相互参照 (10 節) のときと同様、

LaTeX Warning: Label(s) may have changed. Rerun to get cross-references right.
のメッセージが出なくなるまで platex を実行しなければならない。
ところが、\tableofcontents があってかつ相互参照を全く使っていない (\label が 1 つもない) 場合は要注意である。
この場合、たとえ platex の再実行の必要があっても「LaTeX Warning: Label(s) may have changed. · · · 」のメッセージが出ないので、platex の再実行が必要であることに気付かない可能性がある。
そこで、そのような場合は \end{document} の直前あたりにダミーのラベルを (\label{適当なラベル名} のように)貼っておこう。\label がソース中 ( \tableofcontents 以後) に 1 つでもあれば、上記のような現象を防げる。

目次に現れるのは、jsarticle クラスの場合は副節以上、jsbook では節以上、jarticle では副々節以上など、クラスによって異なる (これを変更する方法はあるが、本資料では省く)。

12.2 参考文献
参考文献リストを書くには、BIBTEX というソフトウェアの利用が便利である。これについては、別文書 https://

blackknight.ics.nara-wu.ac.jp/pub/doc/bibtex.pdf にまとめたので、そちらを参照のこと。
論文などでは、末尾に参考文献リストを載せることは必須となるので、BIBTEX の使い方はぜひ押さえておきたい。

13 ファイルの分割\input{ファイル名} というコマンドを使うと、指定した名前のファイルの内容が、そこにあるかのように扱われる。つまり、ファイルの取り込みができる。ファイル名の末尾の「.tex」は省略できる。
使い方の例としては、例えば hahaha.tex の内容が\documentclass[a4j]{jsarticle}\begin{document}\input{section1}\input{section2}\end{document}
で、section1.tex の内容が\section{ 名 前 }私の名前は中野です。
であり、さらに section2.tex の内容が\section{ 職 業 }私の職業はソフトウェアエンジニアです。

74

のとき、hahaha.tex を platex で処理すると、以下のようなソースファイルと同じとして扱われる。

\documentclass[a4j]{jsarticle}\begin{document}\section{ 名 前 }私の名前は中野です。
\section{ 職 業 }私の職業はソフトウェアエンジニアです。

\end{document}
このようにして、入力ファイルを節ごとなどに分割することができる (もちろん、分割の単位は節ごとである必要はない)。
なお当然ながら、section1.tex や section2.tex が変更された場合は、(それらのファイルではなく) hahaha.tex を

platex コマンドでコンパイルし直す必要がある。
section1.tex や section2.tex の内容がそのまま hahaha.tex に取り込まれたように扱われるので、section1.tex
や section2.tex の中には \documentclass コマンドや \begin{document} 等々を書く必要はないことに注意。
\include というコマンドもあり、\input とよく似るが、\include はその前後で必ず改ページするという相違がある。

■AUCTEX の利用

AUCTEX を使っていると、上記のような場合で、例えば section1.tex を編集中に文書をコンパイル
しようとして Ctrl-C Ctrl-C とすると、section1.tex を platex コマンドでコンパイルしようとしてエラーになるという現象が起こる。これを防ぐには、section1.tex や section2.tex の末尾に以下のように書けばよい。

%%% Local Variables:%%% mode: japanese-latex%%% TeX-master: "hahaha"%%% End:「TeX-master」のところには、このファイルを \input しようとしているファイルの名前 (.tex は省略可) を書く。先頭の「%」は 3 個でなくても、1 個以上なら何個でもよいが、この 4 行で個数を同じにしておく。ここでは、他の注釈とまぜこ
ぜにならないようにとの意図で、「%」を 3 個にしている。
こうしておくと、このファイルを次回に Emacs で開いた時から、AUCTEX の Ctrl-C Ctrl-C は、「TeX-master」のところに書いたファイル (この場合 hahaha.tex) をコンパイルするようになる。プレビューする場合なども同様に、そのファイ
ルのコンパイル結果の DVI ファイルをプレビューする。
実は、この 4 行のうち「%%% mode: japanese-latex」は、5.2 節に出てきた「% -*- japanese-latex -*-」をファ
イル先頭部に書くのと同じ効果を持つ (ただし「%%% mode: japanese-latex」の 1 行だけでは効かない)。

14 自作のコマンド · 環境の定義
LATEX では、自作のコマンド (マクロ) や環境を定義して使うことができる。

14.1 コマンドの定義
新たなコマンドを定義する \newcommand コマンド、既存のコマンドの定義を変更する \renewcommand コマンドがある。

14.1.1 引数を取らないコマンド\newcommand{\××}{} とすれば、以後「\××」というコマンドが「」の代わりに使える。コマンド名の「××」は英字だけ*87 からなっていなくてはならない (コマンド名に数字や「_」などは使えない)。また、コマンド名の大文字小文
字は区別される。なお、自作のコマンドを使うのは、そのコマンドの定義より後でなければならない。以下は例である。

\newcommand{\myname}{ 中 野 }…
私 の 名 前 は \myname で す 。
*87 あるいは記号文字 1 字。しかし、記号文字 1 字のコマンド名は大抵既に使われているので、実質的にはコマンド名には英字列だけを使うことになる。なお、実は一部の日本語文字もコマンド名に使えるが、決してお勧めはしない。

75

私の名前は中野です。
また、次は 9.4.3 節の cosec (\nolimits 付きの) の例を、\cosec という単項演算子のコマンドとして使えるようにしたものである。

\newcommand{\cosec}{\mathop{\mathrm{cosec}}\nolimits}…

\( \cosec x = \frac{1}{\sin x}\), \(\cosec^2 x = \frac{1}{\sin^2 x} \)cosec x = sin1 x , cosec2 x = sin12 x
コマンドの定義は、入力を簡略化することと、ソースを見やすくすることの双方の意義を持つ。例えば次の例では、コマンドを定義して使うことで、該当個所が摂氏の記号*88 や平方キロメートルであることがソース上でわかりやすくなる。

\newcommand{\celsius}{\({}^{\circ}\)C}\newcommand{\squarekm}{km\({}^{2}\)}…
奈 良 駅 付 近 1\squarekm の 範 囲 で は 、 気 温 が 38\celsius ま で 上 昇 し た 。
奈良駅付近 1km2 の範囲では、気温が 38◦ C まで上昇した。
以下のようなケースには注意が必要である。

\newcommand{\boldnakano}{\bfseries 中 野 }…
私 の 名 前 は \boldnakano で す 。 よ ろ し く お 願 い 致 し ま す 。
私の名前は中野です。よろしくお願い致します。
これでは「中野」以後も太字になってしまう。
「\boldnakano」が「\bfseries␣中野」と同じ意味になり、「\bfseries␣中野」がグルーピングされていないため、\bfseries がその先全てに影響を及ぼしてしまうのである。

\newcommand{\boldnakano}{{\bfseries 中 野 }}…
私 の 名 前 は \boldnakano で す 。 よ ろ し く お 願 い 致 し ま す 。
私の名前は中野です。よろしくお願い致します。
のようにすれば、「\boldnakano」は「{\bfseries␣中野}」と同じ意味になるので、そんなことはなくなる。
既に定義済みのコマンドを \newcommand で再定義しようとすると、エラーになる。これに対し、 \renewcommand を使
うと (使い方は \newcommand と同じ)、既に定義済みのコマンドを再定義できる (\renewcommand は既存コマンドの再定義にのみ使える。新たなコマンドを定義しようとするとエラーになる)。
コマンド定義にはこんな使い方もある。自分が書いている文章の中で、ある概念に名前を付けようとして、名前を「」にするか「44」にするか迷っているときは、とりあえず「\newcommand{\notionA}{}」と書いて、文中では「\notionA」を使う。

\newcommand{\notionA}{}…
か く か く し か じ か の 性 質 を 満 た す も の を 「 \notionA 」 と 呼 ぶ 。
…
\notionA を 1 つ と る 。 こ の と き 以 下 の 性 質 が 成 り 立 つ 。
…
後で、やっぱり名前を「44」にしたくなったら、コマンド定義を 1 箇所変更するだけで済む。これに対し、文中に生で*88 摂氏の記号の「◦ 」のところは、空のグループ {} に肩文字で小さい丸 (\circ) を付けることで実現している。平方キロの「2 」も同様。

76

「」と書いておき、後でエディタの一括置換で「44」にしたりすると、文中にたまたま無関係の「」があった場合

も、それを「44」にしてしまうミスが起きやすい。

14.1.2 引数を取るコマンド
引数を取るコマンドを定義するには以下のようにする。

\newcommand{\××}[引数の個数]{
このコマンドの使用時には、}の中で「#n」と書かれている部分が、コマンドの第 n 引数で置き換えられる。

1 例挙げよう。8.2.3 節の例のように、表を作っているとき、左寄せや右寄せの列を 1 箇所だけ中央寄せにすることはしばしば起こる。\multicolumn コマンドは長くて打ち込むのが面倒。そこで、以下の例のように \newcommand を使うことによって、\onecol を「表の中のある 1 欄だけ配置を臨時に変えるコマンド」として使うことができる。こうすれば入力が簡単になるし、ソースファイルも簡潔になる。

\newcommand{\onecol}[2]{\multicolumn{1}{#1}{#2}}…

\begin{tabular}{|rp{6.5cm}l|}\hline\onecol{|c}{ 科 目 名 }&\onecol{c}{ 内 容 }&\onecol{c|}{ 担 当 }\\\hline
情 報 処 理 技 術 1&
情報処理の基礎知識を修得するとともに、
C言 語 に よ る プ ロ グ ラ ミ ン グ の 基 礎 を 学 ぶ 。&
鴨 ・ 駒 谷 ほ か \\計 算 機 実 験 2&
Linux な ら び に Windows に 関 す る ハ ー ド ウ ェ ア 、 シ ス テ ム ソ フ ト ウ ェ ア
な ら び に ア プ リ ケ ー シ ョ ン に 関 す る 開 発 を 行 う 。&
新 出 ・ 松 本 ほ か \\ \hline\end{tabular}% こ の 例 は 実 際 の も の と は 異 な り ま す 。
科目名

内容

担当

情報処理技術 1

情報処理の基礎知識を修得するとともに、C鴨・駒谷ほか言語によるプログラミングの基礎を学ぶ。
計算機実験 2

Linux ならびに Windows に関するハード

新出・松本ほか

ウェア、システムソフトウェアならびにアプ
リケーションに関する開発を行う。
もう 1 つ例を示す。例えば、n+1 Cr+1 = n Cr+1 + n Cr という式を書くとき、以下のようにすれば、\newcommand を使わずに書くよりも、\combi が組み合わせの数の記号であることが明確になり、ソースファイルが読みやすい。なおこの場合、\combi は数式モードの中でのみ使えるコマンドということになる (_ による添字 (9.4.2 節) を定義に使っているため)。
\newcommand{\combi}[2]{{}_{#1}C_{#2}}…

\( \combi{n+1}{r+1}=\combi{n}{r+1}+\combi{n}{r} \)n+1 Cr+1 = n Cr+1 + n Cr

14.2 自作の環境
自作の環境を定義するには\newenvironment{××}{}{44}とする。すると、以後「\begin{××} ∼ \end{××}」は、「{い環境の名前、∼ 44}」と同じ意味になる。つまり、×× には定義したには環境の入口で実行されるもの、44 には環境の出口で実行されるものを書く。環境内部は自動的

77

にグルーピングされる。また、\renewenvironment だと環境の再定義になる。
以下は、quotation 環境と \small コマンドを組み合わせて、余談用の環境「yodan 環境」を作ってみた例である(「\newenvironment{yodan}· · · 」であって「\newenvironment{\yodan}· · · 」ではないことに注意)。
\newenvironment{yodan}{\begin{quotation}\small}{\end{quotation}}…
ここは通常の本文である。ここにいろいろと長い解説を書く。
本文の部分はもちろん字の大きさも字下げも通常通りである。

\begin{yodan}
この環境は、本筋からちょっと外れた
余談を書き込むためのものである。
このように環境内は字下げされ、小さい字で書かれる。

\end{yodan}
ここは環境の外である。
ここは通常の本文である。ここにいろいろと長い解説を書く。本文の部分はもちろん字の大きさ
も字下げも通常通りである。
この環境は、本筋からちょっと外れた余談を書き込むためのものである。このように環境内は字下げされ、小さい字で書かれる。

ここは環境の外である。
このようにしておくと、余談の部分の体裁を文書全体で統一することが容易になる。また、余談の部分の体裁を変えたくなったら、1 箇所の定義変更だけで済む。
この他に、数学の定義や定理を記述するための環境を作ることに特化したコマンド、\newtheorem がある。これについては本資料では省く。

15 レイアウトの調整
4 節に述べたように、LATEX では文書の論理的構造のみを指示し、レイアウトは LATEX に任せるという考え方があるため、通常の文書を書いている限り、ユーザがレイアウトを指定することはあまりない。
しかし特別な場合には、ユーザが文書の内容の一部について通常と異なる配置をしたいこともあり得る。本節ではそのような場合に用いることのできるコマンド (の一部) について、参考のため述べる。

15.1 空白や箱に関するコマンド
空白や「箱」に関するコマンドとして、表 15.1 のようなものがある。なお、長さを指定するときの単位は 15.2 節参照。
■空白コマンド

LATEX には縦及び横方向に任意の長さの空白を空けるコマンドとして、微妙に働きの違う数種類のものがあるが、表 15.1 にはそのうち \hspace, \vspace のみを示した。

\hspace は空白を空ける用途の他、そこに本来空く空白をなくす用途にも使える。例えば以下の例では、「A」と「あ」の間に本来入る「四分空き」(1.3.1 節) が、\hspace{0cm} のあるところには入らなくなる。

A あ A\hspace{0cm} あA あ Aあまた、\hspace のあるところは改行が許可される (強制はされない) ので、本来自動的には改行が行われないところ (例えば*89 「中身」の中に基準線 (文字の下端が揃う線) より下に出る文字 (y など) があった場合に、箱がその分持ち上げられて箱の下端が基準線に揃うという点でも、\fbox とは異なる。

78

表 15.1 レイアウトの調整に使えるコマンド · 環境

コマンド

効果

\hspace{長さ}

指定した長さだけ横方向に空白を空ける\vspace{長さ}

指定した長さだけ縦方向に空白を空ける\smallskip, \medskip, \bigskip

一定の長さだけ縦方向に空白を空ける (左のものほど短い)\makebox[長さ][lかcかr]{中身}

指定された長さ (横方向に) の、見えない箱を作り、その中に「中身」を置く。
「中身」は、l を指定すると箱の左端に、c だと中央に、r だと右端に置かれる。「中身」の長さが指定された長さより長くても、\makebox の内部では決して改行が起こらず、中身は箱からはみ出すことに注意。[長さ] と [lかcかr] の両方を省略すると、中身と同じ長さの箱ができる。[lかcかr] だけを省略すると、[c] と書いてあるのと同じことになる\framebox[長さ][lかcかr]{中身}\makebox と同様だが、箱の回りに枠を書く。箱と枠の間は少し空くので、枠の横幅は [長さ] の指定より若干長くなる\mbox{中身}, \fbox{中身}[長さ][lかcかr] を省略した \makebox, \framebox と同じ。\mbox は、中身の途中で改行させない用途にも使える\frame{中身}\fbox と同様だが、中身と枠の間が空かない*89\shortstack[lかcかr]{中身}\makebox に似るが、長さが指定できないかわり、中身の中で「\\」による改行ができる。いくつかのものを縦に重ねたい場合に使える\raisebox{長さ}{中身}「中身」の入った見えない箱を作り、それを「長さ」だけ持ち上げる。
「長さ」
は負でもよい\smash{中身}「中身」と同じ長さで高さ 0 の見えない箱を作り、その中に「中身」を入れる(従って高さ方向にはみ出す)。高さを無視させる用途に使う\phantom{中身}「中身」と同じ長さで同じ高さの、見えない空の箱を作る\begin{minipage}[tかcかb]{長さ} ∼指定した長さを横幅とする小さなページを作り (minipage 環境)、環境の内部\end{minipage}

をそのページの中に配置する。作られたページは 1 つの大きな文字のように扱われる (枠などは付かない)。ページは、t を指定するとその上端、c を指定
すると中央、b を指定すると下端が、同じ行の前後の文章の高さと揃えられる。[tかcかb] を省略すると、[c] と書いてあるのと同じことになる\newpage, \clearpage

そこで改頁する。\clearpage はそれまでの図や表を全て出力してから改頁

2 つの \makebox の間) で改行を許可する目的で \hspace{0cm} を使うこともある。
なお、\hspace で空けようとした空白がちょうど出力での行の境目に位置した場合は、その空白は消失する。\vspace で空けようとした空白がちょうどページの境に位置した場合も同様。
また、\vspace による空白は、\vspace コマンドを入れたところにすぐに入るのではなく、出力での行の右端に達したところで空きが入ることに注意。例えば以下のようになる。
ここに垂直方向の空きを入れてみます。よいしょっと。

\vspace{3mm}%
さてさて、出力ではどこに空きが入るでしょうか。
ここに垂直方向の空きを入れてみます。よいしょっと。さてさて、出力ではどこに空きが入るでしょうか。

\smallskip, \medskip, \bigskip は長さが固定の \vspace に相当するので、これらにも上記と同様の注意が必要である。
横方向に空白を空けるコマンドとしては、この他に表 9.1 のものもある。
■箱を作るコマンド \makebox に指定する長さは中身の横幅より小さくても (0cm や負でも) よいため、\makebox は 2 つ79

のものを重ねる用途に使うことがある。
私の名前は\makebox[0pt][l]{\raisebox{.333zh}{\rule{2zw}{.4pt}}}\mbox{ 中 野 }%中埜です。
私の名前は中野中埜です。
この例では打ち消し線を実現している*90 。まず、\rule{横幅}{縦幅} とはベタ塗りの長方形を出力するコマンドで、ここでは長方形の縦幅を 0.4pt(これは LATEX で描かれる線*91 の標準の太さである) とすることにより横線を描く。線の長さ 2zw
は、日本語文字 1 字分の幅を表す zw (15.2 節) を単位としてその 2 倍 (つまり日本語文字 2 字分) であり、それを \raisebox
で約 31 zh (zh についても 15.2 節参照) ほど持ち上げることで、字の高さの中央付近に線を引く*92 。
その線を \makebox で長さ 0 の箱の左に寄せることで、後続の「中野」と重ねる。この時、出力の「中」と「野」の間で改行が起きると、線と重ならないので、\mbox で箱の中に入れることでその中での改行を防ぐ (「箱」の中では改行が起こらないため)。また、\makebox と \mbox の間は改行が起こらないので、線と「中野」の間で改行されることも防げる。
このように、箱に関するコマンドを使うことで、かなりいろいろなレイアウトを手動で実現できる。
■箱の操作 実用的に使うことはないと思われるが、箱を動かしたり箱の大きさを無視させたりすることでできる例を示す。
こ れ は 普 通 の 文 章 で す 。 こ こ \makebox[0pt][l]{%\hspace{2cm}\smash{%\raisebox{-.7cm}{%\begin{minipage}[t]{6zw}\baselineskip=12pt\parindent=1zw
あら、こんなところにテキストが\end{minipage}%}%}%}に 別 な も の を 入 れ 込 ん で み ま す 。
これは普通の文章です。ここに別なものを入れ込んでみます。
あら、こんなところにテキストが
この例での minipage 環境は、幅 6zw にテキスト 3 行分の小さなページを作り出している。ちなみに、この部分を通常の本文と同じ行間にするとちょっと空きすぎに感じるため、ここでは minipage 環境の内部で \baselineskip を縮めている (4.3.1 節と同様)。また、minipage 環境内部はそのままでは段落先頭の字下げが起こらないので、段落先頭の字下げ量\parindent を明示的に 1zw にすることも行っている。
その minipage 環境全体を \raisebox の第 2 引数として、それを本文より少し沈めている。しかしそのままでは、本文の行幅が下に拡大したと見なされるので、そうならないよう \smash で \raisebox の中身の高さを無視させている。これにより、本文は通常の行幅を持つと見なされている。
さらにそれを \hspace で本文の「ここ」のところより 2cm 右へ持っていき、\makebox[0pt][l] によりその部分全体を
幅 0 の箱の左端へ寄せる。これにより、本文自体は「ここに別な · · · 」と全く余分なものが入っていないかのように組まれているが、実は「ここ」の右 2cm から下 0.7cm のところに minipage 環境による余分なテキストが出現している。minipage
環境に [t] を指定しているため、minipage 環境の一番上の行が本文の「ここ」の下 0.7cm に合わせられており、よって仮に minipage 環境の中身を増やしても、minipage 環境は下に伸びていくので「ここに別な · · · 」の部分とぶつかることはな
い (大きさを無視させているので、他の部分の文章などとぶつかることはあり得る)。
*90 ただし打ち消し線を引く用途には、udline パッケージ (p. 55 脚注*68) の方が便利である。本節の方法だと、打ち消し線の長さを手動で指定しなけ
ればならないなどの制約がある。本節の方法はあくまで、\makebox や \raisebox などのコマンドの使い方のサンプルとして示したものである。
*91 表の罫線や、\underline コマンド、 \framebox コマンドなどで描かれる線。
*92 なぜ 1 zh かというと、日本語文字は基準線 (脚注 89 参照) より下に約 1 zh ほど沈められているため、字の高さ 1zh の真ん中は基準線より ( 1 −
*
3
6
2
1
=) 13 zh ほど上になるからである。
680

この例では、行末の改行による余分な空白が入ることを防ぐために % を多用している (1.2.3 節参照) ことにも注意。また
この例では、minipage 環境が他のコマンドの引数の中に入っているため、minipage 環境内で \verb や verbatim 環境などを使うことができない (4.3.1 節参照)。

15.2 長さの単位
表 15.1 の各コマンドでの長さの指定をはじめ、4.3.1 節の \baselineskip の指定、8.2.3 節での表の欄の幅や、表 11.1の \resizebox コマンドの引数など、LATEX では長さを指定する箇所がいくつかある。その場合の長さの単位としては cm,. . 0.35mm)*93 。
mm, in (インチ), pt (ポイント) などが使える (1in = 2.54cm, 1pt = 1/72.27in =また、em, ex, zw, zh といった単位も使える。それぞれ、その時のフォントの英字の M の幅、英字の x の高さ、日本語文
字 1 字分の幅、日本語文字 1 字分の高さを表す。そのため、これらの長さはその時のフォントの指定やサイズなどによって変動する。
js 系クラス (3.1 節) で、オプションとして 9pt や 11pt など、10pt 以外の文字サイズを指定している場合、内部では一旦 10pt で組版した上で拡大 · 縮小することで実現しているため、長さを「3cm」と指定しても実際の長さは 3cm より長く、あるいは短くなることに注意。
「3truecm」のように、true のつく単位で長さを指定すれば、その場合でも正しく 3cmになる。なお、jarticle や jbook などのクラスではこのようなことは起こらない。

■長さ変数 表 15.2 に示す “長さ変数” (同表以外にも多数ある。正式には「dimen レジスタ」と「skip レジスタ」の 2 種類に分かれるが、本資料では詳述しない) も、長さの単位として使える (コマンドと同じ形をしているが、コマンドではない)。
例えば \begin{minipage}{0.5\columnwidth} ∼ \end{minipage} で、文書の本文の半分の幅の小さなページを作れる。
また、これらの変数には代入や値の変更もできる (表 15.3)。ただし、\baselineskip のような見栄えに直結する値をやたらに変更すべきではないし、また、\textwidth や \textheight のように文書全体のレイアウトを制御する変数は、変更するならプリアンブル (1.2 節) で変更しないと、LATEX の動作がおかしくなる可能性がある。また \columnwidth は、\textwidth の値を使って \begin{document} の時点で自動的に設定されるので、勝手に変えてはならない。
例えばプリアンブルに次のように書くと、印字範囲を縦横に 2cm ずつ広げ、左右と上の余白を 1cm ずつ縮めることによって、紙の中での文書の印字幅を増やすことができる (4 節に述べた「文書の論理的構造のみを示す」という方針に反するので、お勧めするわけではない*94 )。なお、ページ下部にページ数が表示される関係上、\topmargin はさらにもう少し縮めた方がバランスがよいかも知れない。

\advance\textwidth by 2cm\advance\oddsidemargin by -1cm \advance\evensidemargin by -1cm
\advance\textheight by 2cm \advance\topmargin by -1cm

表 15.2 LATEX で使われる “長さ変数” (抜粋)

長さ変数

長さ変数

説明

説明

\baselineskip

1 行の標準の縦幅\oddsidemargin

奇数ページ目の紙の左の余白の幅\parindent

段落の初めの字下げ幅\evensidemargin

偶数ページ目の紙の左の余白の幅。book\textwidth

文書の印字範囲の横幅型クラス、あるいは (文書クラスに対す\columnwidth

二段組みの場合は 1 段の横幅。一段る) twoside オプション指定時のみ使わ組みの場合は \textwidth と同じれ、それ以外の場合は \oddsidemargin\textheight

文書の印字範囲の縦幅が全ページに対して使われる\topmargin

紙の上端の余白の幅\columnsep

二段組みの場合の段間の空きの幅

16 他ソフトとの連携
何も全ての作業を LATEX だけで完結せねばならないわけではない。例えば、図の描画を Tgif などに任せる例は既に 11 節
*93 L
AT X 以外では 1pt = 1/72in としていることがほとんどである。

E*94 そのような必要がある場合は、印字範囲をあらかじめ広げた (あるいは広げることのできる) クラスを用意するのが筋である。

81

表 15.3 “長さ変数” への変更

記述

効果

記述

効果

\baselineskip=12pt\baselineskip を\advance\baselineskip by -4pt

\baselineskip を 4pt 減らす

12pt にする\baselineskip=1.5\baselineskip\baselineskip を 1.5 倍にするに出た。ここではもう 1 つ、表形式のデータファイルが与えられている時に、それを縦横に集計して、ついでに LATEX のtabular 環境の形式にして LATEX に取り込む例を取り上げる。
以下の内容のファイル eherahera.dat があるとする。ただし各行とも要素の個数は一定で、空行はないと仮定する。

23.8 29.1 84.6 15.2 58.6
19.3 81.1 17.4 48.5 15.2
36.7 49.2 91.0 26.5 89.3
これから、下のような表を作って LATEX の文書 (ファイル名が kufufu.tex とする) に取り込みたい。むろん平均は自動的に計算させる。
列1

列2

列3

列4

列5

平均

行1

23.8

29.1

84.6

15.2

58.6

42.3

行2

19.3

81.1

17.4

48.5

15.2

36.3

行3

36.7

49.2

91.0

26.5

89.3

58.5

平均

26.6

53.1

64.3

30.1

54.4

45.7

こうした集計作業は、スクリプト言語を使うとやりやすい。ここでは AWK 言語 (GNU AWK) を使う*95 (AWK 言語に関する詳細は参考書籍類に譲る)。下記のようなファイル shuukei.awk を作り、{ # 各行の処理
printf " 行 " NR "&"; total = 0
for(i = 1; i <= NF; i++){# その行の各欄について…
printf $i "&"; total += $i; row[i] += $i; gtotal += $i# total は そ の 行 の 合 計 、 row[i] は 第 i 列 の 合 計 、 gtotal は 全 合 計}
printf "%.1f\\\\\n", total / NF}
END{ # 最 後 の 処 理 と し て 、 最 下 行 の 出 力
print "\\hline"; printf " 平 均 &"for(i = 1; i <= NF; i++) printf "%.1f&", row[i] / NR
printf "%.1f\\\\\n", gtotal / (NF*NR)}
そして$ awk -f shuukei.awk eherahera.dat > result.tex とする。書き込み先のファイル名 result.tex は、目的とする文書ファイル kufufu.tex とは別に選ぶ。
これで、result.tex ファイルにはひとまず tabular 環境の一部が下記のように生成されて入る。
行 1&23.8&29.1&84.6&15.2&58.6&42.3\\
行 2&19.3&81.1&17.4&48.5&15.2&36.3\\
行 3&36.7&49.2&91.0&26.5&89.3&58.5\\\hline平 均 &26.6&53.1&64.3&30.1&54.4&45.7\\
この上下に、手動で以下の内容を加えれば、完全な tabular 環境が出来上がる。
*95 特に、この例のような表形式テキストデータの集計は、AWK 言語が一番短く簡潔に書ける。

82

\begin{tabular}{l|rrrrr|r}& 列 1& 列 2& 列 3& 列 4& 列 5& 平 均 \\ \hline…この間に上記の内容…

\end{tabular}
むろん、最初からこの内容をまるごと生成するように shuukei.awk を作ってもよいだろう。
あとは result.tex を、目的とする文書のファイル kufufu.tex に 13 節の \input コマンドで取り込めば完了である。
あるいは、result.tex を kufufu.tex にエディタで直接挿入するのでもよい。ただしそうすると、データが変わってresult.tex が変更された際に、kufufu.tex に挿入し直さねばならなくなる。

17 おわりにLATEX の機能は多く、この資料では省いた内容もかなりあるので、もっとよく知るには書籍などを参考にするのがよい。
LATEX の参考書は数多く出ているが、お勧めできる 1 冊を挙げるとするならば以下のものがよいだろう。
• 奥村晴彦, 黒木裕介 [改訂第 8 版] LATEX 2ε 美文書作成入門, 技術評論社, 2020 年
日本の LATEX の第一人者であり LATEX ユーザコミュニティの中心となる人が書いたもので、評判の良い本。
初心者向けの解説から最新の情報まで揃う。
「改訂第 8 版」は 2023 年 8 月現在の最新版。サポートページが以下の URL にある: https://okumuralab.org/bibun8/

目次
LATEX の基本

1

ソースファイルの定型と LAT X の基本的使い方

1

1.2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
E
本文の書き方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1.3

高品質な出力を得るために注意したい点 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.4

エラーメッセージ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

14

ちょっと細かいが知っておくと便利な話

15

2.1

拡張子の省略 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.2

バックグラウンド起動 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.3

xdvi の画面再表示機能. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.4

何らかの加工をしてからのプリンタ出力 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

クラスとオプション

16

3.1

クラス . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16

3.2

クラスのオプション . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17

3.3

ページスタイル. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

1
1.1

2

3

4

文書の論理構造を示すためのコマンド

18

4.1

章 · 節 · 副節

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19

4.2

箇条書き . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

20

4.3

引用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

24

4.4

脚注 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28

4.5

タイトルと概要. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

28
30

5.1

AUCTEX
準備 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

5.2

キー操作 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

4

5

83

30

字体 · 字のサイズ

36

6.1

字のサイズの変更 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

36

6.2

字体の変更 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

いろいろな文字39

7.1

アクセント付き文字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

7.2

その他の文字 · 記号

39

6

7

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

表

40

8.1

作表の基本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40

8.2

よりきめ細かい作表 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

8.3

表の配置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

43

数式

45

9.1

2 つの数式モード . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

9.2

数式モードでの字体や空白. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

9.3

数式用の特殊文字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

9.4

数式用の構造 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

9.5

番号付き · 複数行の数式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

相互参照

60

8

9

10

10.1 ソースファイルの書き方 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

10.2 相互参照の利用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

10.3 箇条書きの項目番号や式の番号の参照 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

10.4 表の番号の参照 (table 環境) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

64

10.5 AUCTEX を使う場合 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

11

図の取り込み66

11.1 EPS で出力できるソフト . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

11.2 EPS ファイルのプレビュー . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

11.3 LATEX 文書への取り込み . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11.4 figure 環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

68

11.5 色付き文字 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

12

目次 · 参考文献

72

74

12.1 目次 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

12.2 参考文献 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

13

ファイルの分割74

14

自作のコマンド · 環境の定義

75

14.1 コマンドの定義 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

75

14.2 自作の環境 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

15

レイアウトの調整

15.1 空白や箱に関するコマンド

78. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

15.2 長さの単位 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

81

16

他ソフトとの連携

81

17

おわりに

83
84