すでにいろいろな例の中で使われていますが(たとえば第4節) \hruleで横線を引くことができます。 もう少し詳しくいうと、\hruleコマンドにより、 現在の段落は終了し、新しい段落が作られ、 現在の \hsizeの幅をもつ横線が引かれます。 さらに詳しくいうと、 高さ(height)が 0.4pt、深さ(depth)が0pt、幅(width)が \hsizeの 黒い長方形が描かれます。 必要に応じてこの3つの数値を指定して長方形を塗りつぶすことができます:
問:「氏名: 」を TeX で書きなさい。 ただし横線の長さがちょうど8cmになるようにしなさい。\hrule width 8cm \vrule width 2cm height 0.4pt depth 0pt $\int_0^1 x^2 dx$ の高さと深さは? \vrule width 6pt \hrule width 8cm(どれが hrule で、どれが vrule かわかりますか?)
※ 厚さ(height+depth)が0の hrule や 幅(width)が0の vrule は印刷されません。 しかし、あとで重要な働きをもつことがわかります。
TeX で表を書くのは実際のところかなり苦痛です。 詳しいことは他の参考書を見てもらうことにしてごく簡単なものだけに話題を限定します。 ぼく自身も表を書くことは滅多になく、 いざと言う時には大抵書き方を忘れてしまっているので、 ひな型を作っておいてそれを用途にあわせて修正しています。
表の書き方には \settabsを利用するものと/halignを使うものの 2通りがあります。ここでは後者を説明します。 基本的な書式は次のようなものです:
\halign{ テンプレート \cr 第1行 \cr ........... 最終行 \cr } |
\matrix や \eqalign・\eqalignno と同様に テンプレート行や表の各行における成分(セル)の区切りを示すのに &を用います。 テンプレート行は各列のセルでの成分の記述の仕方(右詰めにするか、 左詰めにするか、センタリングするか、どんなフォントを使うか、…)を 定義します。 各行のセルデータはテンプレート行の対応する位置の # に代入され、 それがその行の出力となります。
例: tex008a.tex(S-JIS) -- tex008a.dvi
\halign{\gt#\hfill\quad & \hfill #cm \quad & \hfill #kg \cr %% テンプレート %%%%%%% ← 第1列 → ← 第2列 → ←第3列→ 鈴木 一太郎 & 168 & 74 \cr 山田 太郎 & 170 & 72 \cr 渡辺 次郎 & 192 & 103 \cr} \bye |
第1列はゴシック体で左詰め、他の2列は普通のフォントで右詰めです。 各列はその列のセルの最大幅にあわせた幅をとります。 となりあうセルが密着するのを防ぐため \quad によりスペースをとっています。 テンプレート行の存在以外は行列と同じですね。
今の表は左につめて出力されました。 表をセンタリングするには、表を\vbox{ ... }の中に入れ、 さらにそれを数式のディスプレイ・モードを用いてセンタリングします:
例: tex008b.tex(S-JIS) -- tex008b.dvi
$$\vbox{\halign{\gt#\hfill\quad & \hfill #cm \quad & \hfill #kg \cr 鈴木 一太郎 & 168 & 74 \cr 山田 太郎 & 170 & 72 \cr 渡辺 次郎 & 192 & 103 \cr}}$$ \bye |
次にこの表にたて横の罫線を入れてみましょう。 たての線は \vrule、横の線は \hruleを使います。 これらを複数使えば、線を太くすることもできます。 このような表の作成手順は Gentle Introduction to TeX の p.54 に説明されています。
例: tex008c.tex(S-JIS) -- tex008c.dvi
$$\vbox{\offinterlineskip \halign{\strut \vrule\vrule\quad\gt#\hfill\quad & \vrule\quad\hfill #cm \quad & \vrule\quad\hfill #kg \quad\vrule\vrule\cr \noalign{\hrule\hrule} 鈴木 一太郎 & 168 & 74 \cr \noalign{\hrule} 山田 太郎 & 170 & 72 \cr \noalign{\hrule} 渡辺 次郎 & 192 & 103 \cr \noalign{\hrule\hrule} }}$$ \bye |
\offinterlineskip は縦の罫線が途切れないように、行間の間隔をなくす命令です。
テンプレートの変更点は次の3つです。
そして横罫線を引く行(これもひとつの行とみなす)はテンプレートを
使わないので、\noalign コマンドを用い、かわりに \hrule を出力するようにします。
さらに複雑な表を作成するには、区切りの vrule だけでひとつの成分であるような テンプレートを書いたり、特定のセルだけテンプレートの情報を無視する 命令 \omit などをうまく使う必要があります。これについてはここでは 説明しませんので、進んだ参考書で勉強して下さい。