TBL(1)

名称
tbl - troff のための表フォーマッタ

書式
tbl [ -Cv ] [ files... ]

解説
本マニュアルでは、groff ドキュメントフォーマットシステムの一部である GNU バージョンの tbl について記述します。 tbl は、 troff ドキュメントに埋め込まれた表の記述を troff が解釈できるコマンドに変換します。通常、 tbl は groff に -t オプションを指定することにより起動されます。 tbl は Unix tbl と高い互換性を持ちますが、GNU tbl の出力は Unix troff で処理することはできません。それは GNU troff で処理する必要があります。 コマンドラインにファイル名が指定されなかった場合、 標準入力から読み込みます。 ファイル名として - を指定した場合も標準入力から読み込みます。

オプション

-C  .TS や .TE のあとに空白や改行以外の文字がきても、それを .TS や .TE であると解釈します。

-v  バージョン番号を表示します。

使用法
tbl は表の記述子を .TS (表開始) と .TE (表終了) のマクロで括られているものと期待しています。 .TS マクロの直後の行は次のグローバルオプションを含むことが可能です (文字の大文字小文字は無視します -- Unix tbl は、すべて小文字かすべて大 文字のオプションのみを受け付けます):

center
    表を中央寄せします (デフォルトは左寄せです)。 別のキーワード centre も認識されます (これは GNU tbl 拡張です)。

delim(xy)
    x と y を eqn(1) の開始および終端のデリミタとして使用します。

expand
    表を現在の行の長さと同じ幅にします。

box 表を箱で囲みます。

doublebox
    表を二重箱で囲みます。

allbox
    表の各項目を箱で囲みます。

frame
    box と同じです (GNU tbl のみ)。

doubleframe
    doublebox と同じです (GNU tbl のみ)。

tab(x)
    入力データ行の各項目を、タブの代りに文字 x で分離します。

linesize(n)
    線または罫線 (例 box によるもの) を n ポイントタイプにします。

nokeep
    ページブレイクを抑止するために転換 (diversion) を使用しません (GNU tbl のみ)。 通常 tbl は転換を使用し、表内で望ましくないブレイクを抑止しようとします。 これは、独自に転換を使用しているマクロパッケージ、例えばフットノートが 使用された場合などに、干渉する場合があります。

decimalpoint(c)
    指定した文字を数値列の小数点として認識させます (GNU tbl のみ)。

nospaces
    データ項目の先頭および末尾の空白を無視させます (GNU tbl のみ)。

グローバルオプションはセミコロンで終端される必要があります。 オプションの後には空白があっても良く、引数は括弧で括られます。

グローバルオプションの後には、表の各行の書式を記述する行が来ます。 それぞれの書式行は表の 1 行それ自身を記述しますが、 例外は最後の書式行 (ピリオドで終端する必要があります) であり、 これは表の残りの行の書式を記述します。 単一のキー文字が、表の各行の各列を記述します。 数行分の書式指定を、単一行にコンマで区切って指定可能です。

各キー文字の後に指定子を続けることができます。 指定子は、対応する項目のフォントやポイントサイズを決定し、 列の幅や列の間の間隔等を決定します。

最長の書式行が、表に含まれる列数を指定します。 書式行の末尾で欠けている書式記述子は `L' であると仮定されます。 データ中の余分な列 (対応する書式項目が無いもの) は無視されます。

使用可能なキー文字は次の通りです:

c,C 項目を列の中で中央寄せします。

r,R 項目を列の中で右寄せします。

l,L 項目を列の中で左寄せします。

n,N 項目を数値的に揃えます。 数値の単位位置が垂直に揃います。

s,S 左の直前の項目が、この列にも続きます。

a,A この列の最長の行を中央寄せし、 中央寄せされた行に従って他のすべての行を左寄せします。

^   直前の行の項目が、この列にも続きます。

_,- この項目を水平行と置換します。

=   この項目を二重水平行と置換します。

|   対応する列は垂直罫線となります (2 個連続した場合には二重垂直罫線となります)。

最初のキー文字の左または最後のキー文字の右にある垂直バーは、 表の端の線を生成します。

以下の指定子は、列キー文字のサフィックスとして使用可能です:

b,B fB の短縮形 (対象の項目をボールドにします)。

i,I fI の短縮形 (対象の項目をイタリックにします)。

t,T 垂直に複数行の範囲となる項目を、垂直位置で中央から開始するのではなく、 頂上部から開始します。

d,D 垂直に複数行の範囲となる項目を、垂直位置で中央から開始するのではなく、 基底部から開始します (GNU tbl のみ)。

v,V 後に数値が続き、複数行の表の項目における、垂直行間隔を指定します。 符号付きの場合、現在の垂直行間隔が増加または減少されます (符号付きの 1 桁数ではなく符号付きの数値が使えるのは GNU tbl 拡張です)。 垂直行間隔指定子の後に列間隔数を続けるには、1 個以上の空白で区切ります。 対応する表の項目がテキストブロックではない場合、効果無しです。

f,F これらの指定子は、フォント名 (1 または 2 文字)、フォント番号 (1 桁)、 括弧で括られた長い形式の名前が続きます (最後の形式は GNU tbl 拡張です)。 1 文字のフォント名の後には、後に続くものとの間に 1 個以上の空白が続く 必要があります。

p,P 後に数値が続き、対象の欄のポイントサイズを変更します。 符号付きの場合、現在のポイントサイズが増加または減少されます (符号付きの 1 桁数ではなく符号付きの数値が使えるのは GNU tbl 拡張です)。 ポイントサイズ指定子の後に列間隔数を続けるには、1 個以上の空白で区切ります。

w,W 列の最小幅です。 この後に、 troff(1) の幅の表現を括弧で括ったものか、単位無しの整数が続く必要があります。 単位を指定しないと、en 単位が使用されます。 インクルードされるテキストブロックのデフォルト行長としても使用されます。 特定の列の幅の指定が複数回使用されると、最後の項目が使用されます。

e,E 同じ間隔の列を作成します。

u,U 対応する列を半行分上に移動します。

z,Z 対応する列を、幅計算の対象から除外します。

キー文字に対する数値サフィックスは、en 単位での列セパレータと解釈され ます ( expand オプションがオンの場合、これに比例します)。 デフォルトの間隔は 3n です。

書式行の後には、表の実際のデータを含む行が続きます。 最後に .TE が来ます。 各データ行中では、データは通常、タブ文字 (または tab オプションで指定された文字) で区切られます 。 長い入力行は、行の最後の文字を `\' とすることで、複数行に分割可能です (この文字は結合後に消えます)。

行を開始するドットに数値以外のものが続く場合、troff コマンドとして 扱われ、無変更で渡されます。 この場合、表の位置は変わりません。

データ行が `_' または `=' だけから成る場合、 その場所でそれぞれ、表全体に渡る線または二重線が引かれます。 データ行中の単一項目が `_' または `=' だけから成る場合、 この項目がそれぞれ、線または二重線に置換され、隣りの項目を繋ぎます。 データ行中の単一項目が `\_' または `\=' だけから成る場合、 この項目がそれぞれ、線または二重線に置換されますが、隣りの項目を繋ぎません。

`\Rx' (`x' は任意の文字) のみから成るデータ項目は、 列の幅だけ続く文字 `x' の繰り返しで置き換えられます (隣りの項目を繋ぎません)。

`\^' のみから成るデータ項目は、すぐ上の欄がこの行を通って 下向きに続くことを意味します。

テキストブロックを使用することで、単にタブ間に置くには長過ぎるかもしれ ないデータを単一項目として入力できます。 これは `T{' で開始し `T}' で終端します。 前者は行末にあることが必要で、 後者は行頭にあることが必要で、 この後に (タブで区切られて) 他のデータが続くでしょう。

表中のデータの書式を変えるには、 .T& コマンドを使用します (行頭で使用します)。 この後に、 .TS リクエストと同様に、書式とデータの行が続きます (グローバルオプションは駄目です)。

EQN との相互作用
tbl(1) は常に eqn(1) の前に呼ぶ必要があります (groff(1) は自動的にプリプロセッサの正しい順序の面倒を見ます)。

GNU TBL 拡張
列数には限界がありませんし、テキストボックス数にも限界がありません。 表のすべての行が、列の幅の決定に使用されます。 最初の 200 行ではありません。 表の継続 (.T&) 行は最初の 200 行に制限されません。

数字と英字の項目を同じカラムに印字することもできます。

数字と英字の項目を水平方向にまたがらせることもできます。

tbl は 3 で始まる名前のレジスタ、文字列、マクロ、転換名を使用します。 tbl を使う際には 3 で始まる名前の使用は避けるべきです。

バグ
複数ページにまたがる枠付き表を表示する場合、それをサポートしている マクロパッケージと .TS H/.TH を併用しなければなりません。 表の各ページの上部に表示されるべきヘッダが出ない場合、 そのフォーマットセクションの直後に .TH を置いて下さい。 複数ページの表を keep/release マクロで囲んだり、その他の方法で 迂回させないでください。

表中のテキストブロックは 1 ページに収まらなければなりません。

bp リクエストは複数ページの表でページブレイクを強制するために 使用することはできません。 bp のかわりに BP を以下のように定義して使用して下さい。

    .de BP
    .ie '\\n(.z'' .bp \\$1
    .el \!.BP \\$1
    ..

表中で直接 \a を使用しても、リーダはうまく得られません。 これは正しい動作です: \a は 解釈されない リーダです。 リーダを得るためには、本物のリーダを使います。 それには control A か以下を使用する必要があります:

    .ds a \a
    .TS
    tab(;);
    lw(1i) l.
    A\*a;B
    .TE

関連項目
groff(1), troff(1)