GROFF_MDOC(7) | Miscellaneous Information Manual | GROFF_MDOC(7) |
groff_mdoc
— groff
mdoc
の実装に関するリファレンス
groff
-m
doc
file
...
GNU troff(1) 用の
コンテントベース
でかつ
領域ベース
な整形用パッケージである
-mdoc
マクロパッケージを使って
UNIX
マニュアルページを書くための完全なリファレンスです。
前身である -man(7)
パッケージは、フォントの操作や他の写植方法の詳細は個々の作者に任せ、
ページのレイアウトを取り扱ってきました。
-mdoc
では、ページレイアウトマクロは
タイトル、セクションのヘッダ、ディスプレイ、リストのマクロからなる
ページ構造領域
を形成しています。本質的にこれらの要素は整形されたページにおける
テキストの物理的位置に影響を与えます。
ページ構造領域に加え、さらに
マニュアル
領域および 一般
テキスト領域の 2
つの領域があります。
一般テキスト領域は、テキストの一部をクォートしたり強調したりと
いったような作業を実行するマクロとして定義されています。
マニュアル領域はコマンドやルーチン、それに
UNIX
の関連ファイルを記述するための日常使用されるインフォーマルな言葉の
サブセットであるマクロとして定義されています。
マニュアル領域のマクロはコマンド名、コマンド行の引数とオプション、
関数名、関数のパラメータ、パス名、変数名、他のマニュアルページへの
クロスリファレンスなどを扱います。
これらの領域の項目は作者とマニュアルページの将来のユーザの両者に
とって価値のあるものです。
マニュアル間で一貫性を高めることによって将来のドキュメントツールへの
移行が容易になることが期待されます。
UNIX マニュアルページ全体を通して、マニュアルのエントリは単純に マニュアルページ (a man page) とみなされます。 これは実際のページ数と関係ありませんし、性差別をする意図もありません。
このドキュメントの残りの部分で説明されている題材は以下のような構成に なっています。
-mdoc
パッケージは、マニュアルページを記述するプロセスを簡単にすることを
目的としています。
-mdoc
を使うために GNU
troff(1)
のゴタゴタした詳細を学ぶ必要がないのが理想ですが、
いくつか片付けるべき避けられない制限事項があります。
また、このパッケージは高速で
ない
ということも予め警告しておきます。
GNU troff(1)
のように、マクロは
‘.
’ (ドット)
を行頭に置き、それに続けて
2 文字 (または 3 文字)
からなる
マクロの名称を指定することによって呼び出されます。
ドットとマクロの間にはスペースを置くことができます
(ただし、タブを置くことは
できません )。
引数はマクロの後にスペースで区切って指定することができます
(やはり、タブは使用できません)。
行頭にドットを指定することによって
GNU troff(1)
にそれに続く 2 文字
(あるいはそれより多い文字)
を
マクロ名として解釈するよう指示しています。
最初にドット 1
文字をとり、その後ろに何も来ない場合は
無視されます。
マクロを起動させたくないような文脈で、入力行の先頭に
‘.
’ (ドット)
を置くためには、
‘.
’ (ドット)
の前にエスケープシーケンス
‘\&
’
を指定します。
‘\&
’
は文字通りスペース幅が
0
として解釈され、出力には現れません。
一般的に GNU troff(1) マクロは取り得る引数の数に制限はありません (9 つ以上の 引数を扱うことのできない他のバージョンの troff とは違います)。 限られた場合ではありますが、引数を次の行に続けたり、拡張したり することができます (後述の 拡張引数 のセクションを参照)。 ほとんどすべてのマクロで引用符に囲まれた引数を扱うことができます (後述の 引数に空白文字を指定する のセクションを参照)。
-mdoc
での一般テキスト領域とマニュアル領域のほとんどのマクロは、
呼び出し可能なマクロ名を決定するためにその引数のリストが
構文解析
されるという点で特別なものです。
これはつまり、一般テキスト領域またはマニュアル領域のマクロ名に一致し、
かつ、呼び出し可能であると判断された引数リスト中の引数は、
処理される時に実行されるか、もしくは呼び出されるということです。
この場合、引数がマクロの名前であっても
‘.
’ (ドット)
で前置されません。
このようにしてたくさんのマクロを入れ子にすることができます。
例えばオプションマクロ
‘.Op
’
はフラグマクロおよび引数マクロ
‘Fl
’ と
‘Ar
’ を
呼び出し
て、オプションのフラグを引数とともに指定することができます:
-s
bytes].Op Fl s Ar bytes
’
で生成されます。文字列がマクロ名と解釈されないようにするには、
その文字列の前にエスケープシーケンス
‘\&
’
を指定します。
.Op \&Fl s \&Ar
bytes
’
で生成されます。ここで文字列
‘Fl
’ と
‘Ar
’
はマクロとして解釈されていません。
このドキュメントを通じて、
呼び出し可能な引数を調べるために引数リストが構文解析されるマクロは
構文解析される
マクロとして参照し、
引数リストから呼び出されることができるマクロは
呼び出し可能
なマクロとして参照します。
-mdoc
のマクロはほとんどすべてが構文解析されるのですから、これは技術的には
適当でない
表現ですが、常にマクロを「呼び出し可能である」とか「他のマクロを
呼び出すことができる」と表現するのは面倒なことであるため、
「構文解析される」という用語を使います。
1
つ以上の空白文字を含む文字列を引数として指定したい
場合があります。
引数リスト中の要素が特定の並びをしていることを
期待しているマクロに引数を指定する時に必要になることがあります。
さらに、こうすると
-mdoc
が速く実行されるようになるのです。
例えば、関数マクロ
‘.Fn
’ では第 1
引数は関数名であり、残りの引数が関数のパラメータであると
想定されています。
ANSI C
では、関数のパラメータ宣言を括弧で囲まれたパラメータリスト中に
明示することを規定しているので、
各パラメータは最低でも
2
語の文字列となります。
例えば、 int foo
のようになります。
空白を含む引数を指定するには
2
通りの方法があります。
1
つは、空白を含む文字列を渡すのに、固定の空白、
つまりパディングされない空白文字
‘\
’
を使う方法です。すなわち、空白の前にエスケープ文字
‘\
’
を指定します。
この方法はどのマクロでも使うことができますが、1
行が長くなり過ぎた
テキストを調整するときの邪魔になるという副作用があります。
troff
では、固定の空白は他の印刷可能な文字と同様に扱われ、通常期待されるように
その箇所で文字列を空白や改行で分けることは行われなくなります。
この方法は文字列が行の境界にまたがることが好ましくない場合に有用です。
代替案としては、
パディング可能
(すなわち伸長可能)
で分割不可能な空白
‘\~
’
を使うことがあります
(これは、 GNU troff(1)
拡張です)。 2
つ目の方法は、文字列をダブルクォートで括ることです。
例えば、次のようにします:
fetch
(char *str).Fn fetch char\ *str
’
で生成されます。fetch
(char *str).Fn fetch "char
*str"
’
で生成することができます。もし、空白およびダブルクォートの前の
‘\
’
が省略されていた場合には
‘.Fn
’ は引数が
3
つであるとみなし、その結果は
fetch
(char,
*str)
となります。
Troff
は行末に空白文字があると混乱してしまうことがあります。
⟨空白⟩⟨行末⟩
の文字の並びからすべての空白文字を取り除くのは良い予防策です。
どうしても行末に空白文字をおく必要性が出てきた場合は、
パディングされない空白とエスケープ文字
‘\&
’
を使用することによって対応できます。
例えば、
‘string\ \&
’
のようにします。
改行 ‘\n
’
のような特殊文字は、バックスラッシュを保存するために
‘\
’ を
‘\e
’
で置き換え (たとえば
‘\en
’ とする)
て扱います。
表示領域外で空の入力行が見つかった場合には警告が発生します
(後述)。 代わりに
‘.sp
’
を使用してください (
-mdoc
マクロを使用して、低レベルコマンドを使用しないようにすると
ずっと良いです)。
先頭に空白を置くと行分割が生じ、そのまま出力されてしまいます。 可能ならばこうなることを避けてください。 同様に、通常のテキスト行において単語間に 2 つ以上の空白文字を 使用しないでください。これは、他のテキストフォーマッタとは 対照的です。空白文字を 2 つ以上置いても 1 つの空白文字に 置き換わりません 。
引数として
‘"
’
を直接渡すことはできません。
代わりに
‘\*[q]
’
(あるいは
‘\*q
’)
を使用してください。
デフォルトでは、
troff(1)
は文を終了させる句読点の後に空白文字を
2 つ挿入します。
つまり、 ‘)
’
あるいは ‘'
’
などの文字はそのまま扱われ、文の終了には影響を与えません。
この動作を変更するには、
ドットの前あるいは後に
‘\&
’
を挿入してください。
The .Ql . character. .Pp The .Ql \&. character. .Pp .No test . test .Pp .No test. test
は、
’.
character.
The ‘.
’ character.
test. test
test. test
となります。
1 行目および 3
行目にみられるように、
-mdoc
はマクロ引数の中では句読点を特別に扱います。
これについては、後述の
一般的な構文
の節で述べます。
同様の方法で、幅 0
の空白を続けることで、
省略形の後に続いたピリオドを保護しなくてはなりません。
例えば ‘e.g.\&
’
のようにします。
マニュアルページのソースファイル中のコメントは、
独立した行では
‘.\"
’
、何らかの入力があった後では
‘\"
’
を、あるいはどのような場所でも使いたい場合は
‘\#
’
を使うことができます
(後者は GNU troff(1)
拡張です)。このような行の残りの部分は無視されます。
マニュアルページの中身は次のような基本的なテンプレートから 簡単に作成できます。
.\" 以下の項目はすべてのマニュアルページで必要な項目です。 .Dd 月 日, 年 .Os [オペレーティングシステム] [バージョン/リリース] .Dt ドキュメントタイトル [セクション番号] [アーキテクチャ/ボリューム] .Sh NAME .Nm 名称 .Nd 名称についての 1 行での説明 .\" 次の項目はセクション 2, 3 でのみ必要なものです。 .\" .Sh LIBRARY .Sh SYNOPSIS .Sh DESCRIPTION .\" 以下の項目については、必要に応じてコメントをはずして使用してく .\" ださい。 .\" .Sh IMPLEMENTATION NOTES .\" この次の項目はセクション 2, 3, 9 でのみ必要な、関数の .\" 戻り値です。 .\" .Sh RETURN VALUES .\" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。 .\" .Sh ENVIRONMENT .\" .Sh FILES .\" .Sh EXAMPLES .\" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。 .\" ((シェルへの)コマンドの戻り値と .\" fprintf/stderr タイプの診断です) .\" .Sh DIAGNOSTICS .\" .Sh COMPATIBILITY .\" 次の項目はセクション 2, 3, 9 でのみ必要な、 .\" エラーハンドリングとシグナルハンドリングです。 .\" .Sh ERRORS .\" .Sh SEE ALSO .\" .Sh STANDARDS .\" .Sh HISTORY .\" .Sh AUTHORS .\" .Sh BUGS
このテンプレートにおける最初の項目はマクロ
‘.Dd
’,
‘.Os
’, および
‘.Dt
’
であり、それぞれドキュメントの日付、
マニュアルページもしくは題材となっているソースの開発や変更の
対象となったオペレーティングシステム、そして
マニュアルページのタイトルを属するマニュアルのセクション番号と
ともに (
大文字で )
指定したもの、となっています。
これらのマクロはそのページを識別するものであり、後述の
タイトルマクロ
で解説されます。
テンプレート中の残りの項目はセクションのヘッダ
(.Sh
)
であり、それらのうち
NAME,
SYNOPSIS, および
DESCRIPTION
は必須項目です。
これらのヘッダについては
マニュアル領域
を説明した後、
ページ構造領域
で解説されます。
いくつかのコンテントマクロはページレイアウトマクロの説明に
使用されていますので、ページレイアウトマクロの前にコンテントマクロに
ついて読むことを推奨します。
次に説明するマクロはすべて、オプションの引数は
角括弧 ([])
で括られます。
省略符号 (‘...’)
はさらに 0
個以上の引数があることを表しています。
パラメータの代替値は
‘|
’
で区切って示します。
必須パラメータに代替値がある場合は、
( ‘|
’
と一緒に) 中括弧 ({})
を用い、値の組を括ります。
メタ変数は山括弧 (<>)
の中で指定されます。
例:
.Xx
⟨foo⟩ {bar1 | bar2} [-test1 [-test2 | -test3]]
...とくに明示しない限り、すべてのマクロは 構文解析され、呼び出し可能なものです。
大部分のマクロはデフォルトの幅の値を持っており、これを
‘.Bl
’ および
‘.Bd
’
マクロ用にラベル width
(-width
) あるいは offset
(-offset
)
を指定するのに使用することができます。
-mdoc
パッケージのローカルな変更に依存することのないように、
このとても曖昧な機能は使わないことを推奨します。
タイトルマクロはページ構造領域の一部ですが、 マニュアルページを昨日書き始めようと思ったという人のために、 最初に、他のとは別に記述されています。 3 つのヘッダマクロでドキュメントまたはマニュアルページのタイトル、 オペレーティングシステム、および原著の日付を指定します。 これらのマクロはドキュメントの最初で一度だけ呼び出されるもので、 ヘッダとフッタを構成するためだけに使用されます。
.Dt
[⟨ドキュメントタイトル⟩]
[⟨セクション番号⟩]
[⟨ボリューム⟩]unass
’,
‘draft
’,
‘paper
’
のいずれかを取ることができます。
セクション番号が指定されており、ボリューム名が与えられていない
場合には、デフォルトのボリューム名が使用されます。
では、次のセクションが定義されています:
1 |
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
ボリューム名は任意であるか、もしくは次のものを 取ることができます:
USD |
|
PS1 |
|
AMD |
|
SMM |
|
URM |
|
PRM |
|
KM |
|
IND |
|
LOCAL |
|
CON |
互換性を保つため、
‘IND
’
の代わりに
‘MMI
’
を使用することができ、
‘LOCAL
’
の代わりに
‘LOC
’
を使用できます。
先の表の値は、新しいボリューム名を指定します。
第 3
パラメータがコンピュータアーキテクチャを表すキーワードで
ある場合、その値は第
2
パラメータで指定したようにボリューム名に
追加されます。デフォルトでは次のアーキテクチャに関するキーワードが
定義されています:
次の例では、マニュアルページのヘッダの左側 (これは右側と同じものです) と 中央に書かれる文字列を示しています。
ローカルな追加項目や
OS
に特化した追加項目が、ファイル
mdoc.local
にあるかもしれません。このファイル中で
‘volume-ds-XXX
’
(前者のタイプについて)
および
‘volume-as-XXX
’
(後者のタイプについて)
という名前の文字列を検索してください。ここで
‘XXX
’ は
‘.Dt
’
マクロで使用されるキーワードを表しています。
このマクロは呼び出し不可能であり、構文解析もされません。
.Os
[⟨オペレーティングシステム⟩]
[⟨リリース番号⟩].Dt
’
と同じように、ローカルな追加項目が
mdoc.local
に定義されているかもしれません。このファイル中で
‘operating-system-XXX-YYY
’
という名前の文字列を検索してください。ここで
‘XXX
’
はオペレーティングシステムの頭字語
(略称) そして
‘YYY
’
がリリース ID です。
ATT に関しては、判別できない第 2 パラメータがある時には それを文字列 UNIX に置き換えます。事前に定義されているその他の頭字語 (略称) に ついては、そのようなパラメータは無視され、警告メッセージが 出力されます。 認識できない引数は、ページフッタ中に記述された通りに 表示されます。例えば、典型的なフッタは次のようになるでしょう:
.Os BSD 4.3
は ‘4.3 Berkeley
Distribution
’
となります。また、ローカルで作られたセットの例では、
.Os CS Department
は
‘CS Department
’
となります。
‘.Os
’
マクロがない場合、ページの左下隅は見苦しくなってしまうでしょう。
このマクロは呼び出し不可能であり、構文解析もされません。
.Dd
[⟨月⟩ ⟨日⟩,
⟨年⟩]Dd
’
に引数がない場合は、日付には
‘基準時点
(協定世界時 1970年1月1日
00:00:00)
’
が使用されます。
ちょうど 3
つ引数がある場合には、それらは連結され、
分割できない空白で分けられたものになります。
.Dd January 25, 2001
それ以外の場合は現在の日付が使用され、パラメータは無視されます。
このマクロは呼び出し不可能であり、構文解析もされません。
マニュアル領域のマクロ名はコマンドやサブルーチン、それに関連ファイルを
説明するために使われている日常のインフォーマルな言葉から取られています。
この言葉と少し違うバリエーションのものがマニュアルページを書く上での
3
つの異なった側面を記述するのに使われます。
最初のものは、
-mdoc
マクロ使用方法の説明です。2
番目は -mdoc
マクロを 用いた
UNIX
コマンドの記述です。
3
番目はコマンドを通常の言葉の感覚でユーザに示したものです。
これはすなわち、マニュアルページのテキスト中でのコマンドの
説明となります。
最初のケースでは、 troff(1) マクロはそれ自身、一種のコマンドとなっています。 troff コマンドは一般的に以下のような形式をとります。
.Xx argument1 argument2
...
‘.Xx
’
はマクロコマンドもしくは要求を示しており、それに続くものは
すべて処理されるべき引数として処理されます。
2
番目のケースでは、コンテントマクロを使用する
UNIX
コマンドの記述がもう少し含まれます。
典型的な SYNOPSIS
コマンド行はこのように表示されます。
filter
[-flag
] ⟨infile⟩
⟨outfile⟩ここで filter
はコマンド名であり、角括弧で囲まれた文字列
-flag
は
フラグ
引数で、これは角括弧で囲むことによってオプションであることを
示しています。
-mdoc
の用語では、
⟨infile⟩ および
⟨outfile⟩ は
メタ引数
と称されています。
この例では、ユーザは山括弧
(<>)
の中で与えられたメタ引数を
実際のファイル名に置き換えなくてはなりません。
このドキュメントでは、メタ引数は
-mdoc
コマンドを記述するのに使用していることに注意してください。
多くのマニュアルページでは、メタ変数はわざわざ山括弧を使って
書かれていません。
上の例を整形したマクロは以下のものです。
.Nm filter .Op Fl flag .Ao Ar infile Ac Ao Ar outfile Ac
3 番目のケースでは、コマンドの説明や構文に上記の例の両方が使われ、 さらに細かい記述が追加されるでしょう。 上の例での引数 ⟨infile⟩ および ⟨outfile⟩ は オペランド もしくは ファイル引数 として参照されます。 コマンド行の引数のリストはかなり長くなる場合もあります。
make
-eiknqrstv
] [-D
variable] [-d
flags] [-f
makefile] [-I
directory] [-j
max_jobs]
[variable=value]
[target ...]ここではコマンド
make
について記述しており、
makefile をフラグ
-f
の引数としています。
またオプションのファイルオペランドである
target
についても言及しています。
言葉での説明では、こういった詳細な記述が混乱を防いでくれますが、
-mdoc
パッケージにはフラグ
への
引数のためのマクロがありません。
その代わりに
target
のようなオペランドやファイル引数に使われる引数マクロ
‘Ar
’ が
variable
のようなフラグへの引数と同様に使われます。
この make
コマンド行は次の指定により生成されています。
.Nm make .Op Fl eiknqrstv .Op Fl D Ar variable .Op Fl d Ar flags .Op Fl f Ar makefile .Op Fl I Ar directory .Op Fl j Ar max_jobs .Op Ar variable Ns = Ns Ar value .Bk .Op Ar target ... .Ek
マクロ
‘.Bk
’ および
‘.Ek
’ は
キープ
セクションにおいて解説されています。
マニュアル領域のマクロと一般テキスト領域のマクロとはいくつか
小さな違いがあるものの、同様な構文を使用しています。とりわけ、
‘.Ar
’,
‘.Fl
’,
‘.Nm
’, および
‘.Pa
’
は引数なしで呼び出された時の違いしかありません。また、
‘.Fn
’ および
‘.Xr
’
は引数のリストの順番が異なります。
すべてのコンテントマクロが句読点を認識し、それを正しく扱うには、
各々の句読点文字が先行する空白で分離されている必要があります。
次のように指定されている場合、
.Ar sptr, ptr),
その結果は以下のようになります。
sptr,
ptr),
ここでは句読点は認識されず、すべての出力は
‘.Ar
’
で使用されるフォントで行われています。
句読点が空白文字で区切られている場合、
.Ar sptr , ptr ) ,
結果は以下のようになります。
sptr,
ptr
今度は句読点が認識され、出力はデフォルトのフォントで行われ
引数文字列とは区別されています。
句読点文字の特別な意味を取り除くには、
‘\&
’
でエスケープしてください。
troff はマクロ言語としての限界から、以下のような、数学、論理学、引用符の 集合のメンバを含んだ文字列を表現するのは困難です。
{+,-,/,*,%,<,>,<=,>=,=,==,&,`,',"}
問題なのは、文字によって示唆されている操作もしくは評価が、
実行されるべきであると
troff
が仮定する場合があることです。
これらの文字が予期しない形で評価されないようにするには、
‘\&
’
でこれらをエスケープしてください。
最初のコンテントマクロは、以下の
‘.Ad
’
において、その典型的な構文が示されています。
アドレスマクロはアドレスの構成を識別します。
使い方: .Ad
⟨アドレス⟩ ...
.Ad
addr1
.Ad addr1
.
.Ad addr1 ,
file2
.Ad f1 , f2
, f3 :
.Ad addr )
) ,
デフォルトの文字幅は 12n です。
‘.An
’
マクロは文書化されている項目の作者の名前、もしくは実際の
マニュアルページの作者の名前を指定するために使われます。
使い方: .An
⟨作者名⟩ ...
.An "Joe
Author"
.An
"Joe Author" ,
.An
"Joe Author" Aq nobody@FreeBSD.org
.An
"Joe Author" ) ) ,
デフォルトの文字幅は 12n です。
AUTHORS
セクションでは、
‘.An
’
リクエストは改行を引き起こし、新しい名前がそれぞれの行に表示されます。
この動作が望ましくない場合、
.An -nosplit
を呼び出すことで無効にできます。 それぞれの行に表示させる動作に戻したい場合は、
.An -split
と記述します。
引数マクロ
.Ar
はコマンド行の引数を参照する際にはいつでも使用することができます。
引数なしで呼ばれた場合、
‘file ...’
が出力になります。
使い方: .Ar
[⟨引数⟩] ...
.Ar
.Ar file1
.Ar file1 .
.Ar file1 file2
.Ar f1 f2 f3 :
.Ar file ) ) ,
デフォルト幅は 12n です。
‘.Cd
’
マクロはセクション 4
のマニュアルにおいて、デバイスインタフェースの
config(8)
による宣言の説明に使われます。
使い方: .Cd
⟨引数⟩ ...
.Cd
"device le0 at scode?"
device le0 at scode?
SYNOPSIS
セクションでは
‘.Cd
’
リクエストはその引数が表示される前後で改行を入れます。
デフォルト幅は 12n です。
コマンド修飾子は
‘.Cm
’
マクロがすべての引数の前にダッシュ文字を付けないことを除いて、
‘.Fl
’ (フラグ)
コマンドと同じです。
伝統的にフラグはダッシュ文字に引き続いて指定されますが、
この方法を使わないコマンドやコマンドのサブセットもあります。
コマンド修飾子はエディタコマンドのような対話的なコマンドでも
指定されることがあります。
フラグ
セクションを参照してください。
デフォルト幅は 10n です。
インクルードファイルにおいて定義されている変数
(もしくは定数) は
マクロ ‘.Dv
’
によって指定します。
使い方: .Dv
⟨定義済みの変数⟩
...
デフォルト幅は 12n です。
‘.Er
’ errno
マクロは、セクション
2, 3, 9
のライブラリルーチンにおける
エラーの戻り値を指定します。
下記の 2 番目の例では
‘.Er
’
は一般テキスト領域マクロである
‘.Bq
’
(これはセクション 2
のマニュアルページで使われています)
と共に
使われています。
使い方: .Er
⟨errno のタイプ⟩ ...
.Er
ENOENT
ENOENT
.Er ENOENT
) ;
ENOENT
);.Bq Er ENOTDIR
ENOTDIR
]デフォルト幅は 17n です。
‘.Ev
’
マクロは環境変数を指定します。
使い方: .Ev
⟨引数⟩ ...
デフォルト幅は 15n です。
‘.Fl
’
マクロはコマンド行のフラグを扱います。
フラグの前にはダッシュ
‘-
’
が挿入されます。
ダッシュがつかない対話的なコマンドのために
‘.Cm
’
(コマンド修飾子)
マクロが用意されています。
これはダッシュを付けないことを除いて同じ働きをします。
使い方: .Fl
⟨引数⟩ ...
引数なしで
‘.Fl
’
マクロを指定すると、標準入力/標準出力を意味するダッシュとなります。
‘.Fl
’
マクロにダッシュを 1
つ与えると、2
つのダッシュとなることに
注意して下さい。
デフォルト幅は 12n です。
‘.Fd
’
マクロは SYNOPSIS
セクションにおいて、セクション
2 または 3
の関数の説明で使われます。
このマクロは呼び出し不可能であり、構文解析もされせん。
使い方: .Fd
⟨引数⟩ ...
.Fd
"#include <sys/types.h>"
#include <sys/types.h>
SYNOPSIS
セクションでは、
関数がすでに示されており、改行がまだされていない場合には
‘.Fd
’
リクエストは改行を入れます。
これによって前の関数呼び出しと次の関数の宣言の間に
最適な行間が設定されます。
‘.In
’
(#include
文)
マクロは、以上の例を短く記述したものです。
このマクロは C
プログラム中でインクルードされる
C
ヘッダファイルを指定します。
このマクロも改行を挿入し、
呼び出し不可能であり、構文解析されることもありません。
使い方: .In
⟨ヘッダファイル⟩
このマクロは SYNOPSIS セクションで使うものです。 マニュアルページ中の他の場所でも問題なく使うことができますが、 セクション 2 と 3 の SYNOPSIS セクションにおいてカーネルの通常の形式で関数の型を示すことが このマクロの目的です (このマクロは関数名が次の行に置かれるように改行を挿入します)。
使い方: .Ft
⟨型⟩ ...
.Ft struct
stat
‘.Fn
’
マクロは ANSI C
の記法を規範としています。
使い方: .Fn
⟨関数⟩
[⟨パラメータ⟩] ...
.Fn
getchar
getchar
().Fn strlen
) ,
strlen
()),.Fn align
"char *ptr" ,
align
(char
*ptr),他のマクロを呼び出すと
‘.Fn
’
呼び出しの終了を意味することに注意してください
(閉じ括弧がその箇所に挿入されます)。
多くのパラメータをとる関数
(これは滅多にないことですが)
では、 ‘.Fo
’
マクロ
(関数マクロの開始) と
‘.Fc
’ マクロ
(関数マクロの終了) を
‘.Fa
’
(関数の引数)
と共に使って、この制限を回避することができます。
使用例:
.Ft int .Fo res_mkquery .Fa "int op" .Fa "char *dname" .Fa "int class" .Fa "int type" .Fa "char *data" .Fa "int datalen" .Fa "struct rrec *newrr" .Fa "char *buf" .Fa "int buflen" .Fc
生成結果:
res_mkquery
(int
op, char *dname, int class,
int type, char *data,
int datalen, struct rrec *newrr,
char *buf, int buflen);SYNOPSIS セクションでは、関数は常に行の先頭から開始されます。 SYNOPSIS セクションにおいて複数の関数が示されており、関数の型が 示されない場合、改行が挿入され、現在の関数名とその前の 関数名の間に最適な改行量が設定されます。
‘.Fn
’
および ‘.Fo
’
のデフォルト幅の値はそれぞれ
12n と 16n です。
‘.Fa
’
マクロは関数の引数
(パラメータ) を
マニュアルの
SYNOPSIS
のセクション外で参照する場合、あるいは
‘.Fn
’
の代わりに
‘.Fo
’ および
‘.Fc
’
囲いマクロを使用した場合には
SYNOPSIS
のセクション内で参照する場合にも使われます。
‘.Fa
’
は構造体のメンバを参照する場合にも使われます。
使い方: .Fa
⟨関数の引数⟩ ...
.Fa d_namlen )
) ,
.Fa
iov_len
デフォルト幅は 12n です。
‘.Rv
’
マクロは RETURN
VALUES
のセクションで使うテキストを生成します。
使い方: .Rv [-std]
[⟨関数⟩ ...]
例えば、 ‘.Rv -std
atexit
’
は次のテキストを生成します。
atexit
() function
returns the value 0 if successful; otherwise the value -1 is
returned and the global variable errno is set to
indicate the error.-std
オプションはセクション
2 と 3
のマニュアルページでのみ有効です。
現在のところ、このマクロは
-std
フラグなしで使用しても何も起こりません。
‘.Ex
’
マクロは
DIAGNOSTICS
のセクションで使うテキストを生成します。
使い方: .Ex [-std]
[⟨ユーティリティ⟩
...]
例えば ‘.Ex -std
cat
’
は次のテキストを生成します。
cat
utility
exits 0 on success, and >0 if an error occurs.-std
オプションはセクション
1 と 6 と 8
のマニュアルページでのみ有効です。
現在のところ、このマクロは
-std
フラグなしで使用しても何も起こりません。
‘.Ic
’
マクロは対話的なコマンド、もしくは内部コマンドを指定します。
使い方: .Ic
⟨引数⟩ ...
デフォルト幅は 12n です。
‘.Lb
’
マクロは、関数がどのライブラリに組み込まれるかを指定します。
使い方: .Lb
⟨引数⟩ ...
‘.Lb
’
マクロに対して使用可能な引数と結果は次の通りです:
libarm32
libc
libcompat
libcrypt
libcurses
libedit
libi386
libipsec
libkvm
libm
libossaudio
libposix
libresolv
libtermcap
libutil
libz
ローカルな追加項目や
OS
特有の追加項目が、ファイル
mdoc.local
にあるかもしれません。
‘str-Lb-XXX
’
という名前の文字列を検索してください。ここで
‘XXX
’ は
‘.Lb
’
マクロとともに使用されるキーワードを示しています。
リテラルマクロ
‘.Li
’
は特殊文字や変数定数、その他タイプされた通りに表示する必要があるものに
使用することができます。
使い方: .Li
⟨引数⟩ ...
デフォルト幅は 16n です。
‘.Nm
’
マクロは文書のタイトルやサブジェクト名を指定するために使われます。
このマクロは呼び出された時の第
1
引数を覚えておくという
変わった特性を持っており、
それは常にそのページのサブジェクト名であるべきです。
引数なしで呼び出されると
‘.Nm
’
は作者のために最低限の仕事をするという意味で、
この初期化された名称を出力します。
注: セクション 2
または 3
のドキュメントの関数名は
NAME
セクションにおいて
‘.Nm
’
で指定され、
SYNOPSIS
セクションや残りのセクションでは
‘.Fn
’
で指定されます。
csh(1) での
‘while
’
コマンドのキーワードのような対話的なコマンドでは
‘.Ic
’
マクロを使う必要があります。
‘.Ic
’
はほとんど
‘.Nm
’
と同一ですが、
それが使われたときの第
1
引数を記憶することはできません。
使い方: .Nm
[⟨引数⟩] ...
.Nm
groff_mdoc
groff_mdoc
.Nm
\-mdoc
-mdoc
.Nm foo ) )
,
foo
)),.Nm
:
groff_mdoc
:デフォルト幅は 10n です。
‘.Op
’
マクロはコマンド行の残りのすべての引数を
オプションであることを示す角括弧で囲み、
末尾の句読点は角括弧の外に置きます。
‘.Oo
’ マクロと
‘.Oc
’ マクロ
(それぞれ開き角括弧と閉じ角括弧を生成します)
は
複数行に渡って使うことができ、また閉じ括弧の正確な位置を
指定するのに使うことができます。
使い方: .Op
[⟨オプション⟩] ...
.Op
.Op Fl k
-k
].Op Fl k ) .
-k
])..Op Fl k Ar kookfile
-k
kookfile].Op Fl k Ar kookfile ,
-k
kookfile],.Op Ar objfil Op Ar corfil
.Op Fl c Ar objfil Op Ar corfil ,
-c
objfil
[corfil]],.Op word1 word2
.Li .Op Oo
Ao option Ac Oc ...
.Op
[⟨options⟩] ...これは、
‘.Oo
’ マクロと
‘.Oc
’
マクロを使った典型的な例です:
.Oo .Op Fl k Ar kilobytes .Op Fl i Ar interval .Op Fl c Ar count .Oc
出力結果:
-k
kilobytes] [-i
interval] [-c
count]]‘.Op
’
マクロおよび
‘.Oo
’
マクロのデフォルト幅はそれぞれ
14n と 10n です。
‘.Pa
’
マクロはパス名もしくはファイル名を整形します。
引数なしで呼ばれた場合、
‘~’
文字列が出力となり、これは現在のユーザのホームディレクトリを
表しています。
使い方: .Pa
[⟨パス名⟩] ...
.Pa
.Pa /usr/share
.Pa /tmp/fooXXXXX ) .
デフォルト幅は 32n です。
‘.St
’
マクロは、規格の短縮名称を正式名称に置換します。
使い方: .St
⟨短縮名称⟩ ...
使用可能な “短縮名称/正式名称” の組は次の通りです:
ANSI/ISO C
POSIX パート 1: System API
-iso9945-1-90
-iso9945-1-96
-p1003.1
-p1003.1-88
-p1003.1-90
-p1003.1-96
-p1003.1b-93
-p1003.1c-95
-p1003.1g-2000
-p1003.1i-95
POSIX パート 2: シェルとユーティリティ
-iso9945-2-93
-p1003.2
-p1003.2-92
-p1003.2a-92
X/Open
-susv2
-svid4
-xbd5
-xcu5
-xcurses4.2
-xns5
-xns5.2
-xpg3
-xpg4
-xpg4.2
-xsh5
その他
-ieee754
-iso8802-3
‘.Vt
’
マクロは型を参照するときにはいつでも使用することができます。
SYNOPSIS
セクションでは改行が挿入されます
(古いスタイルの変数宣言では便利です)。
使い方: .Vt
⟨型⟩ ...
.Vt extern char
*optarg ;
.Vt FILE
*
一般的な変数への参照です。
使い方: .Va
⟨変数⟩ ...
.Va
count
.Va
settimer ,
.Va
"int *prt" ) :
.Va
"char s" ] ) ) ,
デフォルト幅は 12n です。
‘.Xr
’
マクロは最初の引数にマニュアルページの名称をとります。
オプションである第 2
引数は、文字列
(マニュアルセクションを定義します)
であれば
括弧で囲われます。
使い方: .Xr
⟨マニュアルページの名称⟩
[⟨セクション⟩] ...
デフォルト幅は 10n です。
使い方: .At
[⟨バージョン⟩] ...
.At
.At v6 .
⟨バージョン⟩ には次の値をとることができます:
32v, v1, v2, v3, v4, v5, v6, v7, V,
V.1, V.2, V.3, V.4
使い方: .Bx {-alpha
| -beta | -devel} ...
.Bx
[⟨バージョン⟩
[⟨リリース⟩]] ...
.Bx
.Bx 4.3 .
.Bx -devel
⟨バージョン⟩ が文字列 ‘BSD’ の前につきます。 ⟨リリース⟩ には次の値をとることができます:
Reno, reno, Tahoe, tahoe, Lite, lite,
Lite2, lite2
使い方: .Nx
[⟨バージョン⟩] ...
.Nx
.Nx 1.4 .
⟨バージョン⟩
にとり得る値については前述の
タイトルマクロ
セクションの
‘.Os
’
リクエストの説明を参照してください。
使い方: .Fx
[⟨バージョン⟩] ...
.Fx
.Fx 2.2 .
⟨バージョン⟩
にとり得る値については前述の
タイトルマクロ
セクションの
‘.Os
’
リクエストの説明を参照してください。
使い方: .Ox
[⟨バージョン⟩] ...
.Ox
1.0
使い方: .Bsx
[⟨バージョン⟩] ...
.Bsx
1.0
使い方: .Ux
...
.Ux
テキストは
‘.Em
’
マクロを用いて強調することができます。
通常強調に用いられるフォントはイタリック体です。
使い方: .Em
⟨引数⟩ ...
デフォルト幅は 10n です。
‘.Bf
’
フォントモードは
‘.Ef
’
マクロで終了しなくてはなりません
(後者のマクロは引数をとりません)。
フォントモードは別のフォントモード内に入れ子にできます。
‘.Bf
’
は次の文法をもっています:
.Bf
⟨フォントモード⟩
⟨フォントモード⟩ は次の 3 種類のうちのいずれかでなくてはなりません。
いずれのマクロも呼び出し不可能であり、構文解析もされません。
囲いの概念はクォートと似たものです。
1
つ以上の文字列が引用符や括弧のような文字のペアで囲まれている
オブジェクトを指します。
クォートと囲いという用語はこの文書を通して同じ意味で使われます。
ほとんどの 1
行の囲いマクロはクォートであることをほのめかすために、
小文字の ‘q
’
で終了しますが、例外もいくつかあります。
各々の囲いマクロに対し、開始マクロと終了マクロのペアもあり、
それぞれ小文字の
‘o
’ と
‘c
’
で終了します。
クォート | 開始 | 終了 | 機能 | 結果 |
.Aq | .Ao | .Ac | 山括弧による囲い | ⟨string⟩ |
.Bq | .Bo | .Bc | 角括弧による囲い | [string] |
.Brq | .Bro | .Brc | 中括弧による囲い | {string} |
.Dq | .Do | .Dc | 2 重引用符 | “string” |
.Eq | .Eo | .Ec | 囲い文字列 (XX による) | XXstringXX |
.Pq | .Po | .Pc | 括弧による囲い | (string) |
.Ql | クォートされたリテラル | ‘string’ もしくは
string |
||
.Qo | .Qc | まっすぐな 2 重引用符 | "string" | |
.Sq | .So | .Sc | 1 重引用符 | ‘string’ |
‘q’ および ‘o’ で終わるマクロはすべてデフォルト幅が 12n です。
.Eo
,
.Ec
.Es
,
.En
.Es
’ は第 1
引数と第 2
引数に左囲い文字列および右囲い文字列を
とります。この文字列は、
‘.En
’
の引数を囲うのに使用されます。
デフォルト幅は、どちらのマクロも
12n です。.Eq
.Ql
デフォルト幅は 16n です。
.Pf
.Pf ( Fa name2
デフォルト幅は 12n です。
‘.Ns
’
マクロ (後述参照)
は同じようにサフィックスに働きます。
.Ap
.Ap
’
マクロはアポストロフィを追加し、特別なテキストモードから
抜けます。そして
‘.No
’
モードで続けます。クォートの例:
囲いマクロの入れ子についての良い例については、
オプションマクロ
‘.Op
’
を参照してください。
このマクロは上でリストされているような囲いマクロと同じベースの上に
作られています。
‘.Xo
’ と
‘.Xc
’
拡張引数リストマクロについては後で述べます。
‘.No
’
マクロは、マクロコマンド行において整形されては
ならない
パラメータ用に使用できます。
この英単語
(マクロでなく)
をパラメータとして
本当に使いたい場合は、この単語
‘No
’ に
‘\&
’
を足すように注意してください。
使い方: .No
⟨引数⟩ ...
.No test Ta
with Ta tabs
デフォルト幅は 12n です。
‘.Ns
’
マクロは、現在の位置とマクロの第
1 パラメータとの間に
空白を挿入するのを抑止します。
例えば、フラグと引数の間に空白を含まない古いスタイルの
引数リストを使う場合に便利です:
使い方: ...
⟨引数⟩ Ns [⟨引数⟩]
...
.Ns ⟨引数⟩
...
.Op Fl I Ns Ar directory
-I
directory]注: ‘.Ns
’
マクロは他のマクロ名が続かなければ、スペースを除去したあとに
‘.No
’
マクロを常に起動します。
リクエストとして使用される場合
(つまり、 ‘使い方’
の行での 2
番目の形式です)、
‘.Ns
’ マクロは
‘.No
’
と同一です。
‘.Sx
’
マクロは同一文書内でのセクションのヘッダへの参照を指定します。
使い方: .Sx
⟨セクションの参照⟩
...
デフォルト幅は 16n です。
記号体強調マクロは、記号の意味でも伝統的な英語の 使い方においても通常はボールド体マクロとなっています。
使い方: .Sy
⟨記号⟩ ...
デフォルト幅は 6n です。
数学記号やそれに似たものについては、このマクロを使用して ください。
使い方: .Ms
⟨数学記号⟩ ...
デフォルト幅は 6n です。
次のマクロは多少なりとも参考文献を扱えるようにと意図したものです。 これらのマクロは、せいぜい refer(1) スタイルの参考文献のサブセットを手動で 作成しやすくする程度です。
.Rs
.Re
.%A
.%B
.%C
.%D
.%I
.%J
.%N
.%O
.%P
.%Q
.%R
.%T
.%V
‘%
’
で始まるマクロは呼び出し不可能ですが、
通常の方法で複数の引数をとることができます。
パラメータとしては
‘.Tn
’
マクロのみ扱います。その他のマクロを使うと
奇妙な出力が得られてしまいます。
‘.%B
’ および
‘.%T
’ を
‘.Rs/.Re
’
環境の外側では使用することができます。
使用例:
.Rs .%A "Matthew Bar" .%A "John Foo" .%T "Implementation Notes on foobar(1)" .%R "Technical Report ABC-DE-12-345" .%Q "Drofnats College, Nowhere" .%D "April 1991" .Re
出力結果
商標名マクロは、引数をより小さなフォントで出力します。 意図される使い方は、大文字の頭字語用に小さな大文字フォントを 似せて作ることです。
使い方: .Tn
⟨シンボル⟩ ...
デフォルト幅は 10n です。
.Xo
と .Xc
マクロによって、
‘.It
’ マクロ
(後述)
についてマクロ境界での引数リストを
拡張することができます。
.Xo
と .Xc
マクロは囲いを開いたり閉じたりする他のすべてのマクロに
対して同じように実装されている
(もちろん文字は挿入しません)
ということに注意してください。
つまり、次の例もこれらのマクロには当てはまります。
次は、スペーシングをオフにするために
空白モードマクロを使った
‘.Xo
’
の使用例です。
.Sm off .It Xo Sy I Ar operation .No \en Ar count No \en .Xc .Sm on
これは以下のような結果になります。
例をもうひとつ:
.Sm off .It Cm S No / Ar old_pattern Xo .No / Ar new_pattern .No / Op Cm g .Xc .Sm on
これは以下のような結果になります。
S
/old_pattern/new_pattern/[g
]囲いマクロを使った
‘.Xo
’
の他の例:
変数の値をテストして下さい。
.It Xo .Ic .ifndef .Oo \&! Oc Ns Ar variable Oo .Ar operator variable ... .Oc Xc
結果は以下の通りです。
.ifndef
[!]variable [operator variable
...]次の ‘.Sh
’
セクションヘッダマクロは、すべてのマニュアルページで必須のものです。
残りのセクションヘッダはマニュアルページの作者の裁量において、
推奨されているものです。
‘.Sh
’
マクロは構文解析されますが、一般的には呼び出し不可能です。
‘.Sh
’
を呼び出すときだけは、このマクロは引数として使用することができます。
この場合、
‘.Sh
’
用のデフォルトフォントを再度有効にします。
デフォルト幅は 8n です。
.Sh
NAME
.Sh NAME
’
マクロは必須です。
これが指定されていないと、ヘッダとフッタ、それにデフォルトの
ページレイアウトが設定されず、結果はかなり好ましくないものに
なるでしょう。
NAME
セクションは最低 3
つの項目からなります。
最初のものは名称マクロ
‘.Nm
’
であり、マニュアルページのサブジェクトとなります。
2
番目のものは名称説明マクロ
‘.Nd
’
であり、サブジェクト名を
3 つめの項目、
すなわちその名称の説明と分離します。
説明に割り当てられるスペースは小さいものですので、
できるだけ簡潔で分かりやすいものでなければなりません。
‘.Nd
’
は全ての引数の頭に
‘-
’,
を印字します。
.Sh
LIBRARY
.Lb
’
マクロ呼び出し 1
つのみが含まれている必要があります。
ライブラリ名
を参照してください。.Sh
SYNOPSIS
.Nm
’,
‘.Cd
’,
あるいは
‘.Fn
’ です
(他には ‘.Fo
’,
‘.Fc
’,
‘.Fd
’,
‘.Ft
’
のマクロも必要な場合があります)。
関数名マクロ
‘.Fn
’
はセクション 2 と 3
のマニュアルページにおいて必須のもので、
コマンドと一般名称マクロ
‘.Nm
’
はセクション 1, 5, 6, 7, 8
で必須の項目です。
セクション 4
のマニュアルでは
‘.Nm
’ か
‘.Fd
’
、もしくは設定デバイス使用法マクロ
‘.Cd
’
が必要です。
その他のいくつかのマクロが次に示すような書式行を生成するために
必要なことがあります:
cat
[-benstuv
] [-
]
file ...次のマクロが使われています:
.Nm cat
.Op Fl benstuv
.Op Fl
.Ar
.Sh
DESCRIPTION
.Bl
’
(リスト開始マクロ)、
‘.It
’
(リスト項目マクロ)、
‘.El
’
(リスト終了マクロ)
を使用します (後述の
リストとカラム
セクションを参照)。.Sh
IMPLEMENTATION NOTES
.Sh RETURN
VALUES
.Rv
’
を使用して、セクション
2 および 3
のライブラリ関数の
RETURN VALUES
セクションを生成することができます。
戻り値
の項を参照してください。次の ‘.Sh
’
セクションヘッダはマニュアルページの好ましいレイアウトの一部であり、
一貫性を保つために適切に使われなければなりません。
これらは使われる順番にリストされています。
.Sh
ENVIRONMENT
.Sh
FILES
.Pa
’
によってリストする必要があります。.Sh
EXAMPLES
.Sh
DIAGNOSTICS
.Sh
COMPATIBILITY
.Sh
ERRORS
.Er
’
マクロはエラー (errno)
を指定するのに使用されます。.Sh SEE
ALSO
.Xr
’
マクロによって指定されます。
現在、 refer(1)
スタイルのリファレンスには適合していません。
クロスリファレンスはセクション番号順、同一セクションにあるものは アルファベット順に並べ、カンマで区切ることを推奨します。 以下に例を示します:
.Sh
STANDARDS
.Sh
HISTORY
.Sh
AUTHORS
.An
’
マクロを使用する必要があります。.Sh
BUGS
ユーザ指定の
‘.Sh
’
セクションを追加することができます。
例えば、このセクションは以下のように設定されています。
.Sh "ページ構造領域"
サブセクションヘッダはセクションヘッダとまったく同じ文法を
しています。
‘.Ss
’
は構文解析されますが、一般的に呼び出し不可能です。
このマクロは、
‘.Ss
’
の呼び出し時にのみ引数として使用できます。このとき、
‘.Ss
’
のデフォルトフォントが再度有効になります。
デフォルト幅は 8n です。
.Pp
.Pp
’
段落コマンドは必要な場合に行スペースを指定するために使われます。
このマクロは
‘.Sh
’
マクロや
‘.Ss
’
マクロの後、ならびに
‘.Bl
’
マクロや
‘.Bd
’
マクロの前では必要ありません
(いずれのマクロも
-compact
フラグが指定されていなければ垂直方向の距離を宣言します)。
このマクロは呼び出し不可能であり、構文解析もされません。そして
引数をとりません。別名は
‘.Lp
’ です。
現在実装されているキープは単語に対するものだけです。
マクロは ‘.Bk
’
(キープ開始) と
‘.Ek
’
(キープ終了) です。
現在 ‘.Bk
’
が受け付けるオプションは
-words
のみで
(オプションを何も与えていなければこれがデフォルトでもあります)
オプションの途中で改行が入らないようにするのに便利です。
make
コマンド行の引数を生成する例
(
この名前には何が
の項を参照)
において、キープは
nroff
がフラグと引数を別の行に分けないように使われています。
いずれのマクロも呼び出し不可能であり、構文解析もされません。
キープマクロについてはもっと作業をする必要があります。
特に -line
オプションは追加する必要があるでしょう。
ディスプレイには 7 つのタイプがあります。
.D1
-ldghfstru
これは次の指定で生成されたものです:
.D1 Fl ldghfstru
.Dl
.Dl
’
マクロの例は本ファイル中にわたって使われています。
これによって 1
行のテキストのインデント
(表示)
が可能になります。
デフォルトフォントは固定幅
(リテラル)
に設定されます。
‘.Dl
’
は構文解析されますが、呼び出し不可能です。
% ls -ldg
/usr/local/bin
これは、次の指定で生成されたものです:
.Dl % ls -ldg /usr/local/bin
.Bd
.Bd
’
ディスプレイは
‘.Ed
’
マクロで終了しなければなりません。
これは、次の書式をとります:
.Bd
{-literal | -filled | -unfilled | -ragged | -centered} [-offset
⟨文字列⟩] [-file
⟨ファイル名⟩]
[-compact]-ragged
-centered
-unfilled
-filled
-literal
-file
⟨ファイル名⟩-file
フラグに続いた名前を持ったファイルが読み込まれ、
指定されたディスプレイタイプで
‘.Bd
’ と
‘.Ed
’
マクロで囲まれたデータよりも前に表示されます。
ファイル中の
troff/-mdoc
コマンドはどんなものでも処理されます。-offset
⟨文字列⟩-offset
が以下の文字列のいずれかとともに指定されていると、
その文字列は次のテキストのブロックのインデントのレベルを示すものとして
解釈されます。
.Bd
’
のデフォルトのモードです。.D1
’
および
‘.Dl
’
マクロでも使われていますので、この
2
つのディスプレイと
行が揃うことが保証されています。
インデント値は通常
6n つまり約 2/3 インチ
(固定幅文字 6 つ分)
です。⟨文字列⟩
がそれ以外で正しい数値表現をしている場合
(‘u’
以外のスケール指示子を伴う)、
インデント用にその値を使用します。
スケール指示子のなかで最も役に立つものは
‘m’ および ‘n’
です。これらはいわゆる
Em と En square
を指定します。
これは、現在のフォントでの文字
‘m’ および文字
‘n’
の幅とほぼ同じです
( nroff
の出力については、
どちらのスケール指示子でも同じ値が得られます
)。 ⟨文字列⟩
が数値表現をしていない場合、文字列は
-mdoc
マクロ名であるかどうか検査され、このマクロに関連する
デフォルトのオフセット値が使われます。
最終的にすべてのテストが失敗した場合
the width of ⟨文字列⟩
の幅
(固定幅フォントでのタイプセット)
がオフセットと見なされます。
-compact
.Ed
リスト開始マクロ
‘.Bl
’
で開始できるリストには何種類かあります。
リスト中の項目は項目マクロ
‘.It
’
で指定され、各リストは
‘.El
’
マクロで終了しなければなりません。
リストはリスト自身やディスプレイの中で入れ子にすることができます。
リスト中でカラムを使ったり、カラムの中でリストを使ったりすることに
ついては検証されていません。
さらに、タグ幅、リストのオフセット、コンパクトの度合
(項目間の空白行が許されているかどうか)
のような
リストの属性をいくつか指定することができます。
本ドキュメントのほとんどはタグ
(-tag
)
スタイルリストで整形されています。
このマクロは次の文法規則を持っています:
次に、このリストタイプの詳細な解説を行います。
-bullet
.Bl -bullet -offset indent -compact .It 1 つ目のビュレットはここにきます。 .It 2 つ目のビュレットはここにきます。 .El
生成結果は次の通りです:
-dash
(または
-hyphen
).Bl -dash -offset indent -compact .It 1 つ目のダッシュはここにきます。 .It 2 つ目のダッシュはここにきます。 .El
生成結果は次の通りです:
-enum
.Bl -enum -offset indent -compact .It 1 つ目の項目はここにきます。 .It 2 つ目の項目はここにきます。 .El
生成結果は次の通りです:
箇条書きリストを入れ子にしたい場合、
-nested
フラグを使用してください
(第 2
レベルのリストが開始されます):
.Bl -enum -offset indent -compact .It 1 つ目の項目はここにきます。 .Bl -enum -nested -compact .It 2 つ目の項目はここにきます。 .It 3 つ目の項目はここにきます。 .It .El .It 4 つ目の項目はここにきます。 .El
生成結果は次の通りです:
-item
-item
タイプのリストです。
.Bl -item -offset indent .It 1 つ目の項目はここにきます。 1 つ目の項目はここにきます。 1 つ目の項目はここにきます。 .It 2 つ目の項目はここにきます。 2 つ目の項目はここにきます。 2 つ目の項目はここにきます。 .El
生成結果は次の通りです:
-tag
-width
を使用してください。
元のテキストは次の通りです:
.Bl -tag -width "PPID" -compact -offset indent .It SL プロセスが sleep している時間 (ブロックされた秒数) .It PAGEIN そのプロセスによって、まだメモリにロードされていないページへの参照が 起こることにより生じたディスク .Tn I/O の回数 .It UID 数値表記によるプロセス所有者のユーザ ID .It PPID 数値表記による親プロセスの ID、プロセスの優先度 (割り込み不可の待機状態のときには、正でない値になる) .El
-diag
-width
は、この文脈では意味がありません。
使用例:
.Bl -diag .It ここで Sy を使うことはできません。 このメッセージはすべて出力されます。 .El
生成結果
-hang
以上の文章を生成した、整形前のテキストは 次の通りです:
.Bl -hang -offset indent .It Em Hanged ラベル幅よりもラベルが小さい場合には ぶら下げられたラベルはタグつきリストと同じようにみえます。 .It Em Longer Hanged list labels ラベル幅より長いぶら下がりリストのラベルは、 タグつき段落ラベルとは違い、段落に溶け込みます。 .El
-ohang
元のテキストは次の通りです:
.Bl -ohang -offset indent .It Sy SL プロセスが sleep している時間 (ブロックされた秒数) .It Sy PAGEIN そのプロセスによって、まだメモリにロードされていないページへの参照が 起こることで生じたディスク .Tn I/O の回数 .It Sy UID 数値表記によるプロセス所有者のユーザ ID .It Sy PPID 数値表記による親プロセスの ID、プロセスの優先度 (割り込み不可の待機状態のときには、正でない値になる) .El
-inset
-width
属性を使用してください。-mdoc
マニュアルを別のフォーマットに変換するのに有用です。上の例を生成したソーステキストはこうなっています:
.Bl -inset -offset indent .It Em tag タグリスト (タグ段落とも呼びます) は バークレーのマニュアルで使われている最も一般的な 種類のリストです。 後で述べるように、 .Fl width 属性を使用してください。 .It Em diag 診断リストはセクション 4 の診断リストを生成し、 呼び出し可能なマクロを無視するという点を除けば inset リストと似ています。 .It Em hang ぶら下がりラベルは気分の問題です。 .It Em ohang オーバハングラベルは空白に制限がある場合には良いです。 .It Em inset inset ラベルは段落ブロックを制御するのに便利で、 .Nm -mdoc マニュアルを別のフォーマットに変換するのに有用です。 .El
-column
-column
リストへの引数、
⟨string1⟩,
⟨string2⟩
等によって決定されます。
⟨stringN⟩ が
‘.
’ (ドット)
で開始し直後に有効な
-mdoc
マクロ名が続く場合、
⟨stringN⟩
を解釈して結果の幅を使用します。
そうでない場合、
⟨stringN⟩
(固定幅フォントでのタイプセット)
は N
番目の桁の幅になります。
‘.It
’
引数はそれぞれ構文解析され行を生成します。
行中の各列はタブや
‘.Ta
’
マクロで分けられた引数です。
次の表、
文字列 | nroff | troff |
<= |
<= | ≤ |
>= |
>= | ≥ |
は次のようにして生成されています:
.Bl -column -offset indent ".Sy 文字列" ".Sy nroff" ".Sy troff" .It Sy 文字列 Ta Sy nroff Ta Sy troff .It Li <= Ta <= Ta \*(<= .It Li >= Ta >= Ta \*(>= .El
その他のキーワード:
-width
⟨文字列⟩.
’ (ドット)
で開始し直後に有効な
-mdoc
マクロ名が続く場合、
⟨文字列⟩
を解釈し、その結果の幅を使います。
本ドキュメントのほとんどすべてのリストは
このオプションを使用しています。
使用例:
.Bl -tag -width ".Fl test Ao Ar 文字列 Ac" .It Fl test Ao Ar 文字列 Ac これは、 .Fl width フラグをタグリストと一緒に使うとどのように 働くかを見るためのもっと長い文です。 .El
生成結果:
-test
⟨文字列⟩-width
フラグをタグリストと一緒に使うとどのように
働くかを見るためのもっと長い文です。⟨文字列⟩
が解釈される前に現在の
-mdoc
の状態が保存されることに注意してください。
文字列が解釈された後ですべての変数が再度復元されます。
しかし、ボックス
(囲いに使用される)
は GNU troff(1)
では保存されません。結果としては、醜いエラーを防ぐためには
引数は常に
平衡がとれて
いなくてはなりません。
例えば、本当に開き山括弧だけが必要である場合には
‘.Ao Ar 文字列
’
と書いてはだめで、代わりに
‘.Ao Ar 文字列
Xc
’
と書かなくてはなりません。
そうでない場合、
⟨文字列⟩
が正当な数値表現である場合
(‘u’
以外のスケール指示子を伴う)、
インデント用にその値を使用します。
最も有用なスケール指示子は
‘m’ と ‘n’
です。これらはいわゆる
Em および En
square を指定します。
これは、現在のフォントでの文字
‘m’ および文字
‘n’
の幅とほぼ同じです
(nroff
の出力については、
どちらのスケール指示子でも同じ値が得られます)。
⟨文字列⟩
が数値表現をしていない場合、文字列は
-mdoc
マクロ名であるかどうか検査され、このマクロに関連する
デフォルトのオフセット値が使われます。
最終的にすべてのテストが失敗した場合
⟨文字列⟩
の幅
(固定幅フォントでのタイプセット)
がオフセットと見なされます。
タグリストタイプ用に幅が指定されていない場合、
‘.It
’
が起動される度に適切な幅を決定しようと試みます。
‘.It
’ の第 1
引数が呼び出し可能なマクロである場合、
そのマクロのデフォルト幅が使われます。
そうでなければ、
‘.No
’
のデフォルト幅が使われます。
-offset
⟨文字列⟩.Dl
’ または
‘.Bd
’
で使われる値と似ています)
が使われます。
⟨文字列⟩
が正当な数値表現である場合
(‘u’
以外のスケール指示子を伴う
)、
その値をインデントに使用します。
最も有用なスケール指示子は
‘m’ と ‘n’
であり、これらはいわゆる
Em および En square
です。
これは、それぞれ現在のフォントでの
‘m’ と ‘n’
の幅とほぼ同じです
(nroff
の出力については、
どちらのスケール指示子も同じ値をとります)。
⟨文字列⟩
が数値表現でない場合、その文字列が
-mdoc
のマクロ名であるかどうか検査され、このマクロに関連する
デフォルトのオフセット値が使われます。
最終的にすべてのテストが失敗した場合、
⟨文字列⟩
の幅
(固定幅フォントでのタイプセット)
がオフセットとして
とられます。-compact
ここには、いままでのセクションにはうまく当てはまらなかった
残りのマクロのリストがあります。
次のマクロに対しては本物の使用例を見つけられませんでした。
それは ‘.Me
’
と ‘.Ot
’
です。この 2
つについても完璧を期するためにここに
文書化はしています。もしこの
2 つのマクロの
適切な使い方をご存知であれば
bug-groff@gnu.org
までメールを送ってください
(例つきで)。
.Bt
を表示します。
このマクロは呼び出し不可能であり、構文解析もされません。 また引数もとりません。
.Fr
使い方: .Fr
⟨関数の戻り値⟩
...
このマクロは使わないでください。
このマクロは戻り値
(通常は数字 1 個)
の直前での
改行を許してしまいます。
印刷時の振る舞いとしては悪いことです。
直前の単語と戻り値とを結合させるには
‘\~
’
を使用してください。
.Hf
File:
’
とファイル名を表示し、その後で
⟨ファイル⟩
の内容を表示します。
使い方: .Hf
⟨ファイル⟩
このマクロは呼び出し不可能であり、構文解析もされません。
.Lk
.Me
-mdoc
ソースファイル中の記述では
“メニューエントリ”
となっています。
デフォルト幅は 6n です。
.Mt
.Ot
-mdoc
ソースファイル中の記述では
“古い関数タイプ
(fortran)”
となっています。.Sm
使い方: .Sm [on
| off] ...
空白モードが off
の場合、マクロ引数の間に空白は
挿入されません。引数なしで呼ばれた場合
(あるいは
次の引数が
‘on
’ でも
‘off
’
でもない場合)
‘.Sm
’
マクロは空白モードに入ります。
.Ud
を表示します。
このマクロは呼び出し不可能であり、構文解析もされません。 また引数もとりません。
次の文字列が定義済みです:
文字列 | nroff | troff | 意味 |
<= |
<= | ≤ | 以下 |
>= |
>= | ≥ | 以上 |
Rq |
'' | ” | 右側のダブルクォート |
Lq |
`` | “ | 左側のダブルクォート |
ua |
^ | ↑ | 上向き矢印 |
aa |
´ | ´ | アキュートアクセント |
ga |
` | ` | グレーブアクセント |
q |
" | " | まっすぐなダブルクォート |
Pi |
pi | pi | ギリシャ語のパイ |
Ne |
!= | ≠ | 不等号 |
Le |
<= | ≤ | 以下 |
Ge |
>= | ≥ | 以上 |
Lt |
< | < | 小なり |
Gt |
> | > | 大なり |
Pm |
+- | ± | プラスマイナス |
If |
infinity | infinity | 無限 |
Na |
NaN | NaN | 非数値 |
Ba |
| | | | 垂直線 |
カラムの名前 nroff と troff は少々誤解を招くものです。 nroff は ASCII 文字を表示しますが、 troff では利用可能なもののうち一番良いグリフ形式を 表示します。 例えば、Unicode を使用可能にした TTY デバイスはすべての文字列に対して適切なグリフ表現を 持っていますが、それに対して Latin1 に対して機能を強化した TTY デバイスはプラスマイナス記号しか持っていません。
文字を 2
つ含んだ文字列名は
‘\*(xx
’
として表記できます。
文字を 1
文字だけ含んだ文字列名は
‘\*x
’
と表記できます。
どのような長さの文字列名に対しても、一般的な文法は
‘\*[xxx]
’
となります ( これは GNU
troff(1) 拡張です)。
以前のバージョンの
-mdoc
パッケージでは利用可能だったデバッグ用マクロ
‘.Db
’
は取り除かれました。なぜなら、
GNU troff(1)
ではパラメータをチェックするのにもっと良いファシリティを
提供しているからです。さらに、このマクロパッケージには
エラーや警告メッセージが多数追加されており、よりロバストで
饒舌なものになっています。
唯一残ったデバッグ用マクロは
‘.Rd
’
であり、これはすべてのグローバルレジスタならびに文字列の
レジスタダンプを出力するものです。
通常のユーザが使う必要は決してないでしょう。
デフォルトでは、このパッケージでは ‘latin1’ や ‘unicode’ のような TTY デバイスで表示する場合には改ページやヘッダ、フッタは 禁止されており、マニュアルをオンラインで効率良く 見ることができるようになっています。 この振る舞いは、 groff を呼んでいるときにレジスタ に 0 を指定することで変更することができます (例えば、 TTY 出力のハードコピーを作成したいときなど)。
groff -Tlatin1 -rcR=0 -mdoc foo.man
> foo.txt
両面印刷用には、レジスタ
‘D
’ を 1
に設定してください:
groff -Tps -rD1 -mdoc foo.man >
foo.ps
ドキュメントのフォントサイズを
11pt や 12pt に変更したい
場合は、レジスタ
‘S
’
をそれに合わせて設定してください:
groff -Tdvi -rS11 -mdoc foo.man >
foo.dvi
レジスタ
‘S
’ は TTY
デバイスに対しては無視されます。
-mdoc
パッケージと
-man
パッケージのどちらを使用すべきかをチェックします。セクション 3f はヘッダルーチンには追加されていません。
‘.Nm
’
NAME
セクションにおいては、フォントを変更するべきです。
行の長さが短すぎる場合に行が分割されるのを防ぐために
‘.Fn
’
がチェックを行う必要があります。
ときどき、最後の括弧が分割されることがあり、
行詰めモードであるときにおかしな結果になることがあります。
リストマクロおよびディスプレイマクロは何のキープも 行いませんが、これはキープを行うべきです。
July 20, 2001 | Debian |