文書をフォーマットする
-a
-b
-i
-v
-w name
name
で指定した分類の警告を行います。指定できる
name
は、後述の警告のサブセクションを参照してください。
-w
オプションは複数指定できます。
-W name
name で指定した分類の警告を行いません。
-W
オプションは複数指定することが
できます。
-E
-z
-C
-d cs
c
または
name
を文字列
s
と定義します。
c
は 1 文字のマクロ名です。
-f fam
fam
をデフォルトのフォントファミリとして使用します。
-m name
-U
-R
-n num
num
とします。
-o list
list
で指定したページのみを出力します。
list
は、コンマで区切られ
たページ範囲の列です。ページ範囲の指定方法は以下のとおりです:
n
は
n
ペー
ジの出力、
m - n
は
m
ページから
n
ページまでの出力、
-n
は
n
ページまでの
出力、
IB n -
は
n
ページ以降の出力を意味します。
troff
はリストの最後のページを印刷し終えると終了します。
-r cn
c
または
name
の値を
n
とします。
c
は 1 文字の名前です。
n
は troff で扱える数式です。
-T name
name
用の出力を生成します。デフォルトは ps です。
-F dir
dir
以下の
dev name
( name
は出力デバイス名) を探します。
他のすべてのフォントディレクトリより前に
dir
を調べます。
-M dir
dir
からマクロファイルを検索します。
他のすべてのマクロディレクトリより前に調べます。
\[ xxx ]
\f[ xxx ]
\*[ xxx ]
\n[ xxx ]
e1 >? e2
e1
と
e2
とで小さくない方。
e1 <? e2
e1
と
e2
とで大きくない方。
( c ; e )
c
をデフォルトのスケールインジケータとして
e
を評価します。
c
が指定されない場合は
e
の評価においてスケールインジケータは無視されます。
\A' anything '
anything
が文字列、マクロ、展開、数値レジスタ、環境、フォントのいずれかとして
受理可能か否かに依存します。
anything
が空の場合には
0
が返されます。
連想表のようなものからユーザの入力を取り出すような場合に有効です。
\B' anything '
anything
が正当か否かに応じて
1
または
0
に展開されます。
anything
が空の場合は
0
を返します。
\C' xxx '
\E
\N' n '
n
の文字を現在のフォントでタイプセットします。
n
は任意の整数値です。
ほとんどのデバイスは文字コードが 0 から 255 までしかありません。
現在のフォントが対応するコードの文字を持たない場合、
スペシャルフォントは探されません。
\N
エスケープシーケンスは
char
リクエストとの組み合わせにより便利に使えます:
.char \[phone] \f(ZD\N'37'
各文字のコードは、フォント記述ファイルで、
charset
コマンドの後の 4 番目のカラムに書かれています。
文字の名前として
---
を使うことで、名前の無い文字をフォント記述ファイルに組み込むことが可能です。
これらの文字を使用するには、
\N
エスケープシーケンスを使う方法しかありません。
\R' name +-n '
\s( nn
nn
ポイントに設定します;
nn
は正確に 2 桁の 10 進数である必要があります。
\s[+- n ]
n
スケールドポイントにします;
n
は数値式であり、デフォルトスケールインジケータは
z
です。
\V x
xxx
の内容を挿入します。
\V
はコピーモードで解釈されます。
\Y x
xxx
は解釈されません;
また
xxx
がマクロととして定義されることが許されており、改行文字を含んでも良いです
(
\X
の引数は改行文字を含んではなりません)。
改行文字を含む場合には UNIX troff 出力フォーマットが
拡張されている必要があります。
また、この拡張を知らないドライバーを混乱させてしまいます。
\Z' anything '
anything
はタブやリーダーを含んではなりません。
\$0
\$*
\$@
\$( nn
\? anything \?
anything
を転換中に透過的に埋め込みます。
anything
はコピーモードで読まれます。
転換の内容が後で読み込まれる時、
anything
は解釈されます。
anything
は改行文字を含んではなりません;
転換中に改行文字を埋め込みたい場合には
\!
を使用して下さい。
エスケープシーケンス
\?
はコピーモードにおいて認識され、単一の内部コードに変換されます;
anything
の終了を表すのがこのコードです。
それゆえ、
B
15 .nr x 1 .nf .di d \?\\?\\\\?\\\\\\\\nx\\\\?\\?\? .di .nr x 2 .di e .d .di .nr x 3 .di f .e .di .nr x 4 .fは 4 を表示します。
\/
\,
\)
\~
\:
\#
xx
を作成します。
新しい名前と古い名前は完全に等価になります。
もし
yy
が未定義の場合、タイプ
reg
の警告が生成され、リクエストは無視されます。
xx
を作成します。
新しい名前と古い名前は完全に等価になります
(ソフトリンクに対するハードリンクのようなものです)。
yy
が未定義なら、タイプ
mac
の警告が生成され、リクエストは無視されます。
マクロ/転換/文字列転換が現在未定義である場合、
もしくはリクエストとして定義されている場合には、
de ,
am ,
di ,
da ,
ds ,
as
リクエストは新しいオブジェクトを生成するだけです;
これらは通常は既に存在するオブジェクトの値を変更します。
xx
を以下のように `アンフォーマット' します。
すなわちフォーマットされ
xx
に転換格納された
ASCII
と空白文字 (そしていくつかのエスケープシーケンス) が、
xx
が再度読み込まれる時に、普通に入力された文字として扱われます。
リクエストと組み合わせた転換で有用です。
また大々的なハックにも利用できます。
例えば、
7v+\n(.Vu
B
.tr @. .di x @nr n 1 .br .di .tr @@ .asciify x .xはレジスタ n を 1 に設定します。 グリフ情報 (フォント、フォントサイズ等々) は保存されません。 代わりに を使ってください。
n
で定義されるプロパティを持ちます。
ここで
n
は以下のものを OR したものです。
1
2
4
8
16
32
c
を
string
と定義します。
文字
c
が表示される必要がある時はいつでも、
一時的な環境で
string
が処理され、結果が単一のオブジェクトして生成されます。
string
の処理中は、
互換モードはオフにされ
エスケープ文字は
\
に設定されます。
太字化/定空白化/カーニングは、
string
の各文字ではなくこのオブジェクトに対して適用されます。
このリクエストによって定義された文字は、
出力デバイスによって提供される通常の文字のように使用できます。
特に、他の文字はこの文字に
tr
リクエストによって変換可能です;
この文字は
lc
リクエストによってリーダ文字とすることが可能です;
\l ,
\L
エスケープシーケンスによって、この文字を繰り返しパタンで
使用することが可能です;
hcode
リクエストによってこの文字がハイフネーションコードを持てば、
この文字を含む語は正確にハイフネーション可能です。
また特殊な非再帰機能があります:
文字の定義中にいて使用される文字は、
通常の文字として扱われ、
char
では定義されたものではありません。
文字の定義は
rchar
リクエストにて除去可能です。
stream
という名前のストリームをクローズします;
stream
は
write
リクエストの引数とはなりえなくなります。
open
リクエストを見て下さい。
n
が非ゼロか存在しない場合、
互換モードを有効にします。
そうでない場合は互換モードを無効にします。
互換モードでは、長い名前は理解されず、
長い名前に起因する非互換性の問題は発生しません。
.ds xx aa .ds yy bb .dei xx yy以下と等価です。 .de aa bb
xxx
で使用するファイルを解釈する前に互換モードは元に戻されることに注意して
下さい。
xx
の内容を、現在の環境へコピーします。
環境のプッショおよびポップは行いません。
xx
が無い場合は以前のフォントファミリに戻ります。
フォントファミリに関するさらなる情報は、
sty
リクエストの解説を見て下さい。
f
を
g
に変換します。
\f
エスケープシーケンス中、
ft ,
ul ,
bd ,
cs ,
tkf ,
special ,
fspecial ,
fp ,
sty
リクエスト中で、
名前
f
で参照されるフォントに関して、フォント
g
が使用されます。
g
が指定されない場合および
f
と等しい場合は、
フォント
f
は変換されません。
c1
に対し
code1
、文字
c2
に対し
code2
というふうに行います。
ハイフネーションコードは、
数字もしくは空白以外の単一入力文字 (非スペシャルな文字) である必要があります。
初期状態では、
各小文字はハイフネーションコードをそれ自体の文字として持ち、
各大文字はハイフネーションコードを各小文字として持ちます。
hpf
リクエストも見て下さい。
n
が負の場合、最大値はありません。
デフォルト値は -1 です。
この値は現在の環境と関連づけられています。
行数のカウントは、一つの環境の中でその環境での最大値まで行われます。
\%
の結果のハイフンはカウントされます; 明示的なハイフンはカウントされません。
ハイフネーションマージン
を
n
に設定します:
現在の修正モードが
b
ではない時、
行が
n
より短い場合には行はハイフネーションされません。
デフォルトのハイフネーションマージンは 0 です。
このリクエストに対するデフォルトのスケーリングインジケータは
m
です。
ハイフネーションマージンは現在の環境と関連づけられています。
現在のハイフネーションマージンは
\n[.hym]
レジスタを介して利用可能です。
ハイフネーション空白を
n
に設定します:
現在の修正モードが
b
の場合、
各単語の間の間隔に追加する間隔の幅を
n
以下で行調整が済ませられる場合、その
行はハイフネーションされません。
デフォルトのハイフネーション空白は 0 です。
このリクエストに対するデフォルトのスケーリングインジケータは
m
です。
ハイフネーション空白は現在の環境と関連づけられています。
現在のハイフネーション空白は
\n[.hys]
レジスタを介して利用可能です。
n
が非 0 か指定されない場合、文字ペア間カーニングを有効にします。
そうでない場合は文字ペア間のカーニングを無効にします。
string
の長さを計算し、これを数値レジスタ
xx
(前もって定義する必要はありません) に入れて返します。
n
が 0 でないか省略されるとライン-タブモードが有効になり、
そうでない場合は無効にします (デフォルトは無効です)。
ライン-タブモードではタブの幅が (現在の) 出力行に応じて
計算されます。そうでない場合は入力行に応じて計算されます。
例えば次のソース
6v+\n(.Vu
B
.ds x a\t\c .ds y b\t\c .ds z c .ta 1i 3i \*x \*y \*zは以下を生成します。 a b c ライン-タブモードでは同じコードが以下のようになります。 a b c ライン-タブモードは現在の環境に関連づけられます。ライン-タブモードでは 読み出し専用の数値レジスタ \\n[.linetabs] が \~1 にセットされ、そうでなければ 0 にセットされます。
file
を検索する点を除いて
so
リクエストと同じです。
インクルードするファイル名が
name .tmac
の形式で、見つからない場合は、代わりに
mso
は
tmac. name
をインクルードしようとします。
逆もまた同様です。
filename
を書き込みのためにオープンし、
stream
という名前のストリームと関連づけます。
close ,
write
リクエストも見て下さい。
filename
が存在する場合、縮小することはせずに、アペンドします。
n
入力行を右揃えします。
引数が無い場合、次の行を右揃えします。
右揃えされる行の数は
\n[.rj]
レジスタを介して利用可能です。
本リクエストにより暗黙的に
となります。
ce
リクエストは暗黙的に
します。
xx
を
yy
にリネームします。
c
が省略された場合、
ソフトハイフン文字はデフォルトの
hy
になります。
ソフトハイフン文字は、語がラインブレイクによってハイフネーションされる時に
挿入される文字です。
ブレイクすべき位置の直前の文字のフォントにソフトハイフン文字が存在しない場合、
そのような位置ではブレイクしません。
ソフトハイフン文字を見付ける時には、
定義 (
char
リクエストで指定) も変換 (
tr
リクエストで指定) も解釈されません。
n
ポジションだけシフトします:
引数
i
は引数
i - n
となります;
引数 1 から
n
は使用不能となります。
n
が指定されない場合、
引数は 1 シフトされます。
負のシフトは現在未定義です。
f
をフォント位置
n
と関連づけます。
フォント位置はフォントもしくはスタイルと関連づけ可能です。
現在のフォントはフォント位置のインデックスであり、
つまり、フォントもしくはスタイルです。
現在のフォントがスタイルである場合、
実際に使用されるフォントは、
現在のファミリ名と現在のスタイル名とを結合した名前をもつものとなります。
例えば現在のフォントが 1 であり、フォント位置 1 がスタイル
R
と関連づけられており、
現在のフォントファミリが
T
である場合、
フォント
TR
が使用されます。
現在のフォントがスタイルではない場合、
現在のファミリは無視されます。
リクエスト
cs ,
bd ,
tkf ,
uf ,
fspecial
がスタイルに適用される場合、
実際は当該スタイルに対応する現在のファミリのメンバに対して適用されます。
デフォルトファミリは
-f
オプションで設定できます。
DESC
ファイル中のスタイルコマンドが、
(もし存在すれば) どのフォント位置が初期状態において
フォントではなくスタイルに関連づけられているのかを制御します。
xx
中の文字列を、インデックス
n1
と
n2
で指定されるサブ文字列で置き換えます。
文字列の最初の文字はインデックス 1 です。
n2
が省略されると、文字列の長さとみなされます。
インデックス値
n1
または
n2
が負または 0 である場合、文字列の末尾から後ろ向きに数えます。
すなわち、最後の文字がインデックス 0 であり、
最後の文字の前の文字が -1 などとなります。
f
である場合、
全ての文字の幅が
n1
から
n2
の範囲で増加します;
現在のポイントサイズが
s1
以下の場合、幅は
n1
増えます;
現在のポイントサイズが
s2
以上の場合、幅は
n2
増えます;
ポイントサイズが
s1
以上かつ
s2
以下の場合は、
増加する幅はポイントサイズの線形関数となります。
string
がコピーモードで読み込まれて標準エラーに書き出されます。
ただし先頭に空白を置けるようにするために、
string
の最初のダブルクォートは取り除かれます。
x
を定義するには、
とします。
cf
リクエストとは異なり、
ファイル中には
NUL
といった troff 入力文字として不正なものを含むことはできません。
B .tr ab .di x \!.tm a .di .xは b を表示します; trnt が tr のかわりに使われた場合、 a を表示します。
n
が非 0 の場合
垂直位置トラップを有効にします。
そうでない場合、垂直位置トラップを無効にします。
垂直位置トラップは
wh ,
dt
リクエストにより設定されるトラップです。
it
リクエストにより設定されるトラップは垂直位置トラップではありません。
垂直位置トラップが発生するか否かを制御するこのパラメータは大域的です。
初期状態では垂直位置トラップは有効です。
n
は有効とされるべき警告と関連づけられた数の和です;
その他の警告は無効となります。
警告と関連づけられる数のリストは`警告'の章に記載します。
例えば
は全ての警告を無効にします。
また、
は存在しない文字に関する警告のみを有効にします。
n
が与えられない場合、
全ての警告が有効になります。
c
が真の間、
anything
を入力として受け付けます;
c
は
if
リクエストとして受理可能な任意の条件です;
最初の行が
\{
で開始され最後の行が
\}
で終了する場合、
anything
は複数行となり得ます。
break ,
continue
リクエストも見て下さい。
anything
を
stream
という名前のストリームに書き込みます。
stream
はすでに
open
リクエストの対象であったはずです。
anything
がコピーモードで読まれます;
先行する
ts
は取り除かれます。
xx
の内容を
stream
で指定されたストリームへ書き出します。
stream
は事前に
open
リクエストでオープンされていなければなりません。
xx
はコピーモードで読まれます。
filename
の内容が透過的に出力にコピーされるようなオブジェクトを
その転換の中に埋め込みます。
UNIX troff では、
現在、転換の中かどうかにかかわらず
filename
の内容はすぐに出力にコピーされます;
この動作は変則的でありバグに違いありません。
xx
が数でない場合、
xx
で呼ばれる名前付き環境に切り替えます。
引数なしの
ev
リクエストに対しては、番号付き環境の場合と同様に、
対応する環境がポップされます。
名前のある環境の数には制限はありません;
最初に参照される時に生成されます。
nn
とし、その後タブ位置を
nn + r1 ,
nn + r2 ,....,
nn + rn
とし、その後タブ位置を
nn + rn + r1 ,
nn + rn + r2 ,...,
nn + rn + rn ,
とし…ということを繰り返します。
例えば、
.ta T .5i
は 1/2 インチ毎にタブ位置とします。
\n[.C]
\n[.cdp]
\n[.ce]
\n[.cht]
\n[.csk]
スキュー
は、その文字の上に付くアクセントが
その文字の中央からどれだけ右によって配置されるかを表します。
\n[.ev]
\n[.fam]
\n[.fp]
\n[.g]
\n[.hla]
\n[.hlc]
\n[.hlm]
\n[.hy]
\n[.hym]
\n[.hys]
\n[.in]
\n[.int]
\n[.kern]
\n[.lg]
\n[.linetabs]
\n[.ll]
\n[.lt]
\n[.ne]
\n[.ns]
\n[.pn]
\n[.ps]
\n[.psr]
\n[.rj]
\n[.sr]
\n[.tabs]
\n[.trunc]
\n[.ss]
\n[.vpt]
\n[.warn]
\n[.x]
\n[.y]
\n[.Y]
\n[llx]
\n[rst]
\n[ssc]
\n[skw]
\n[c.]
\n[hp]
\n[systat]
\n[slimit]
\n[year]
latin1
や
ascii
)。
これは、(読み込み専用の) 数値レジスタ
\n[.T]
が、
troff
が
-T
コマンドラインオプション付で呼び出されたときに 1 に定義され、
そうでないときに 0 に定義されるのとは同じではありません。
この動作は、UNIX troff とは異なります。
DESC
ファイルに記述されていないフォントは、
参照された時点で自動的に次の利用可能なフォント位置にマウントされます。
フォントを明示的に
fp
リクエストにて未使用のフォント位置にマウントする場合、
最初の未使用のフォント位置にマウントしなければなりません。
この位置は
\n[.fp]
レジスタにて参照できます;
しかしながら、
troff
はこれを厳密には強いません。
現在使用されている位置よりも
多大に大きくずれる位置にマウントされることは許されません。
文字列の挿入は既に存在するマクロ引数を隠しはしません。
それゆえマクロ中で
をより効率良く行うためには、
\\*[ xx ]\\
とします。
フォント記述ファイルに文字ペア間カーニング情報が含まれる場合、
このフォントから出力される文字はカーニングされます。
を 2 つの文字間に置くことで、その文字間のカーニングを禁止できます。
条件において文字列を比較する場合、
最初のデリミタと異なる入力レベルにおいて出現する文字は
2 番目 3 番目のデリミタとして認識されません。
これは
tl
リクエストにも当てはまります。
\w
エスケープシーケンスにおいて、
最初のデリミタ文字とは異なる入力レベルにある閉じる方のデリミタ文字は、
認識されません。
マクロ引数をデコードする時に、
マクロ引数がダブルクォートで区切られる場合、
最初のデリミタ文字とは異なる入力レベルにある文字は、
閉じる方のデリミタ文字とは認識されません。
\$@
の実装では、引数を括るダブルクォートは同じレベルとなることが保証されています。
このレベルは引数の入力レベルとは異なります。
長いエスケープ名中では
]
は
開く方の
]
の入力レベルと同じである場合を除き、
閉じる方のデリミタとは認識されません。
互換モードでは入力レベルに対する注意は払われません。
条件が増えました:
ch
は
ASCII
文字でもスペシャル文字
xx ,
\[ xxx ]
でもかまいません;
ch
が
char
リクエストにて定義された場合にも真になります。
tr
リクエストは文字を
\~
にマップできるようになりました。
char \t1
number \t2
break \t4
delim \t8
el \t16
scale \t32
range \t64
syntax \t128
di \t256
mac \t512
reg \t1024
tab \t2048
right-brace \t4096
missing \t8192
input \t16384
escape \t32768
space \t65536
font \t131072
ig \t262144
all
w
互換モード
では
GNU troff はこれらを伝統的な方法で解釈します。
また長い名前は認識されません。
互換モードは
-C
コマンドラインオプションにて有効に出来、
cp
リクエストにて有効無効の切替えが出来ます。
互換モードが有効の場合には数値レジスタ
\n[.C]
が 1 となり、そうでない場合は 0 となります。
GNU troff は文字列/マクロ/展開/数値レジスタ/フォント/環境の名前において、
エスケープシーケンス
\\\}\{ (space) \'\`-\_\!\%\c
を使用することを許しません; 一方 UNIX troff では出来ます。
名前中でのこれらのエスケープシーケンスの使用を避けるには、
\A
エスケープシーケンスが役に立つかもしれません。
分数のポイントサイズは顕著な非互換性を引き起こします。
UNIX troff では
ps
リクエストはスケールインジケータを無視するため
はポイントサイズを 10 ポイントに設定しますが、
GNU troff ではポイントサイズを 10 スケールドポイントに設定します。
GNU torff では、
フォーマットされていない入力文字と
フォーマットされた出力文字との間に基本的な違いがあります。
出力文字がどのように出力されるのかに影響することがらは全て、
その文字に記録されています。
一度出力文字が構成されたならば、
その出力文字はその後に実行されるリクエストの影響を受けません。
このリクエストには
bd ,
cs ,
tkf ,
tr ,
fp
リクエストが含まれます。
通常、
出力文字が入力文字から構成されるのは、
出力文字が現在の出力行に追加される直前です。
マクロ/転換/文字列は実際同じタイプのオブジェクトです;
すなわち入力文字のリストと出力の文字の任意の組み合わせのリストを保持しています。
マクロ処理においては出力文字は入力文字のようには振舞いません;
出力文字は、その元の入力文字が持っていた特殊なプロパティを
一切継承しません。
例えば、
B .di x \\\\ .br .di .xは GNU groff では \\ を表示します; 各 \ のペアは単一の出力 \ になり、出力結果の複数の \ は、再読み込みの時にはエスケープ文字としては解釈されません。 UNIX troff では再読み込みの時にはエスケープ文字として解釈されるため、 最終的な結果は単一の \ となります。 表示可能な \ を得る正しい方法は、 \e エスケープシーケンスを使用することです: このエスケープシーケンスは、 転換の中であるか否にかかわらず、 常に現在のエスケープ文字実体を一つ表示します; これは GNU troff でも UNIX troff でも動作します。 転換中に、 転換が再読み込みされた時に解釈されるような エスケープシーケンスを埋め込みたい場合、 伝統的な \! 透過出力機構を使用するか、これが適当でないなら新しい \? エスケープシーケンスを使用して下さい。
/usr/share/tmac/troffrc
/usr/share/tmac/troffrc-end
/usr/share/tmac/ name .tmac
/usr/share/groff_font/dev name /DESC
name
のデバイス記述ファイル
/usr/share/groff_font/dev name / F
name
におけるフォント
F
のフォント記述ファイル
troffrc
と
troffrc-end
は、セキュリティのためデフォルトで現在のディレクトリと
ホームディレクトリのいずれでも検索されない事に注意してください (
-U
オプションが指定されていても)。
必要な場合は
-M
コマンドラインオプションか
GROFF_TMAC_PATH
環境変数を使ってそれらのディレクトリを検索パスに加えられます。