1 .\" Copyright (c) 1990, 1993
2 .\" The Regents of the University of California. All rights reserved.
4 .\" %%%LICENSE_START(BSD_4_CLAUSE_UCB)
5 .\" Redistribution and use in source and binary forms, with or without
6 .\" modification, are permitted provided that the following conditions
8 .\" 1. Redistributions of source code must retain the above copyright
9 .\" notice, this list of conditions and the following disclaimer.
10 .\" 2. Redistributions in binary form must reproduce the above copyright
11 .\" notice, this list of conditions and the following disclaimer in the
12 .\" documentation and/or other materials provided with the distribution.
13 .\" 3. All advertising materials mentioning features or use of this software
14 .\" must display the following acknowledgement:
15 .\" This product includes software developed by the University of
16 .\" California, Berkeley and its contributors.
17 .\" 4. Neither the name of the University nor the names of its contributors
18 .\" may be used to endorse or promote products derived from this software
19 .\" without specific prior written permission.
21 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
22 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
25 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 .\" @(#)mdoc.samples.7 8.2 (Berkeley) 12/30/93
35 .\" $Id: mdoc.samples.7,v 1.17 1998/12/03 03:38:45 jkoshy Exp $
37 .\" This tutorial sampler invokes every macro in the package several
38 .\" times and is guaranteed to give a worst case performance
39 .\" for an already extremely slow package.
41 .\" String \*(Pu was not defined, probably means punctuation
43 .\"*******************************************************************
45 .\" This file was generated with po4a. Translate the source file.
47 .\"*******************************************************************
57 マニュアルを書くためのチュートリアルサンプル
70 マニュアルを書くためのチュートリアルサンプルです。
74 詳細は個々の作者に任せたページレイアウトベースのものでした。
77 タイトル、セクションのヘッダ、ディスプレイ、リストのマクロからなる
80 ページでのテキストの物理的な位置に影響を持ちます。
81 ページ構造領域に加え、さらにマニュアル領域および一般テキスト領域
83 一般テキスト領域はテキストの一部をクォートしたり、
84 強調するといったような作業を実行するマクロとして定義されています。
87 の関連ファイルを記述するための日常使用されるインフォーマルな言葉の
88 サブセットであるマクロとして定義されています。
89 マニュアル領域のマクロはコマンド名、コマンド行の引数とオプション、
90 関数名、関数のパラメータ、パス名、変数名、他のマニュアルページへの
92 これらの領域の項目は作者とマニュアルページの将来のユーザの両者に
94 マニュアル間で一貫性を高めることによって将来のドキュメントツールへの
97 マニュアルのエントリは、実際の長さに関わらず、
101 単純に man ページとして参照されています。
103 通常チュートリアルドキュメントは、そこに示された題材をすぐに使いたい時
104 に読むものですので、このドキュメントのユーザはせっかちな人だと仮定して
105 います。このドキュメントの残りの部分で説明されている題材は以下のような
107 .Bl -enum -offset indent
110 .Bl -tag -width flag -compact -offset indent
118 .Bl -tag -width flag -compact -offset indent
119 .It "マニュアルページのテンプレート"
124 .Tn "マニュアルと一般テキスト領域の紹介"
125 .Bl -tag -width flag -compact -offset indent
131 .Bl -tag -width flag -compact -offset indent
135 .It "コンフィギュレーション宣言 (セクション 4 のみ)"
138 .It "errno (セクション 2 のみ)"
145 .\" .It "Header File (including source code)" .
155 .Bl -tag -width flag -compact -offset indent
161 .Bl -tag -width flag -compact -offset indent
162 .It "カギ括弧 <> によるクォート/囲い"
163 .It "角括弧 [] によるクォート/囲い"
165 .It "括弧 () によるクォート/囲い"
166 .It "一重引用符によるクォート/囲い"
169 .It "no\-op もしくは通常テキストマクロ"
173 .It "返り値 (セクション 2, 3 のみ)"
179 .Bl -tag -width flag -compact -offset indent
184 .It "フォントモード (強調、リテラル、およびシンボリック)"
192 .Tn "GROFF、TROFF、NROFF を使用したフォーマッティング"
199 パッケージは man ページを記述するプロセスを簡単にすること
205 ゴタゴタした詳細を学ぶ必要がないのが理想ですが、いくつか片付けるべき
206 避けられない制限事項があります。また、このパッケージは高速で
214 それに続けて 2 文字からなるマクロの名称を指定することによって呼び出され
215 ます。引数はマクロの後にスペースで区切って指定することができます。
219 字をマクロ名として解釈するよう指示しています。マクロを起動せずに、ある
228 は文字通りスペース幅が 0 として解釈され、出力には現れません。
232 マクロは引数を 9 つまで取ることができ、
235 でのほとんどのマクロは 9 つの引数を取ることができ、
236 限られた場合にのみ引数は次の行に続けて指定することができます
240 いくつかのマクロは引用符に囲まれた引数を扱うことができます
246 での一般テキスト領域とマニュアル領域のほとんどのマクロは特別であり、
247 その引数のリストは呼び出し可能なマクロ名として
250 これは一般テキスト領域またはマニュアル領域のマクロ名に一致し、
251 呼び出し可能であると判断された引数リストの中の引数は、
252 実行されるか、それが処理される時に呼び出されることを意味しています。
256 このようにしてたくさんのマクロを入れ子にすることができます。
267 オプションのフラグを引数とともに指定することができます。
268 .Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
271 .Li \&.Op \&Fl s \&Ar bytes
275 2 文字からなる文字列をマクロ名として解釈されないようにするには、
279 .Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
280 .It Op \&Fl s \&Ar bytes
282 .Li \&.Op \e&Fl s \e&Ar bytes
291 ん。本ドキュメントと関連のクイックリファレンスマニュアル
293 を通して、引数リストが呼び出し可能な引数として解析されるマクロは「解析
294 される」、引数リストから呼び出されることができるマクロは「呼び出し可能」
297 のほとんどすべてのマクロは解析されるのです
301 し可能である」とか「他のマクロを呼び出すことができる」と表現するのは面
302 倒なことであるため、「解析される」という用語が使われています。
304 ひとつ以上の空白文字を含む文字列をひとつの引数として指定したい場合がよ
305 くあります。これは 9 個を越える引数を指定できないという制限に対処したり、
306 引数のリストにある特有な配置をおこなうことが必要なマクロに引数を指定す
311 引数が関数のパラメータであることが必要です。
314 囲まれたパラメータリストにおける関数のパラメータの宣言の規定により、
315 各パラメータは最低でも 2 語の文字列となります。
320 空白を含む引数を指定するには 2 通りの方法があります。
322 解析の前に個々の引数を再割り当てすることによって、
323 引用符の間に空白を含めて渡すのが最も便利な方法なのですが、
327 のすべてのマクロを実装するには処理速度およ
328 びメモリ使用量の点でかなり高価な方法となります。
330 では高価な処理にはなりませんが、移植性のため、この方法は
331 空白を含めることが最も必要である以下のマクロだけに限っています。
333 .Bl -tag -width 4n -offset indent -compact
335 コンフィギュレーション宣言 (セクション 4 の
361 空白を含む文字列を渡すのに、固定空白、すなわち詰め込まれない
368 この方法はどのマクロでも使うことができますが、1 行を越える長さの
369 テキストの調整の邪魔になるという副作用があります。
372 固定空白は他の印刷可能文字と同様に扱われ、通常期待されるように、
373 そこで文字列を空白や改行で分けることを行なわなくなります。
374 この方法は文字列が行の境界をまたがないであろう場合に有用です。
376 .Bl -tag -width "fetch(char *str)" -offset indent
377 .It Fn fetch char\ *str
379 .Ql \&.Fn fetch char\e *str
381 .It Fn fetch "char *str"
383 .Ql \&.Fn fetch "\*qchar *str\*q"
394 .Dl Fn fetch char *str
396 パラメータのリストが改行の境界をまたぐ場合に何がおこるかについては、
401 は行末に空白文字があると混乱してしまうことがあります。
402 <空白> <行末> の文字シーケンスからすべての
404 どうしても行末に空白文字をおく必要性が出てきた場合は、
423 バックスラッシュを残して扱うことができます。
426 .Pa /usr/share/misc/mdoc.template
427 の基本テンプレートを使って容易に作り上げることができます。
428 .Pa /usr/share/examples/mdoc
429 にはいくつかのサンプルの man ページが収められています。
432 .Bd -literal -offset indent
433 \&.\e" 以下の項目はすべての man ページで必要な項目です。
435 \&.Os オペレーティングシステム [バージョン/リリース]
436 \&.Dt ドキュメントタイトル [セクション番号] [ボリューム]
442 \&.\e" 以下の項目については、必要に応じてコメントをはずして
444 \&.\e" この次の項目はセクション 2, 3, 9 でのみ必要な、関数の
446 \&.\e" .Sh RETURN VALUE
447 \&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
448 \&.\e" .Sh ENVIRONMENT
451 \&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
452 \&.\e" ((シェルへの) コマンドの戻り値と
453 \&.\e" fprintf/stderr の型の診断です。)
454 \&.\e" .Sh DIAGNOSTICS
455 \&.\e" 次の項目はセクション 2, 3, 9 でのみ必要な、
456 \&.\e" エラーハンドリングとシグナルハンドリングです。
459 \&.\e" .Sh CONFORMING TO
465 このテンプレートにおける最初の項目はマクロ
466 .Pq Li \&.Dd , \&.Os , \&.Dt
468 man ページもしくは題材となっているソースの開発や変更のベースとなった
471 man ページタイトルをそのページが属するマニュアルの
472 セクション番号とともに指定したもの、となっています。
473 これらのマクロはそのページを識別するものであり、
478 テンプレート中の残りの項目はセクションのヘッダ
493 いくつかのコンテントマクロはページレイアウトマクロの説明に
494 使われていますので、ページレイアウトマクロの前にコンテントマクロについて
497 タイトルマクロはページ構造領域の最初の部分ですが、man ページを
498 前日に書き始めたいという人のために、最初に分けて記述されます。
499 3 つのヘッダマクロでドキュメントか man ページのタイトル、
500 オペレーティングシステム、および原著の日付を指定します。
501 これらのマクロはドキュメントの最初に一度だけ呼び出されるもので、
502 ヘッダとフッタを構成するためだけに使用されます。
504 .It Li \&.Dt ドキュメントタイトル セクション番号 [ボリューム]
506 .\" USD UNIX User's Supplementary Documents
508 .\" PS1 UNIX Programmer's Supplementary Documents
509 ドキュメントタイトルは man ページの主題であり、troff の制限により
512 セクション番号は 1,\ ...,\ 8 となり、これが指定されると
513 ボリュームタイトルを省略してもかまいません。
514 では、次のセクション番号と解説について後述します:
515 ボリュームタイトルには任意のものか次のいずれかを指定します。
517 .Bl -column SMM -offset indent -compact
518 .It Li "AMD UNIX Ancestral Manual Documents"
519 .It Li "SMM UNIX System Manager's Manual"
520 .It Li "URM UNIX Reference Manual"
521 .It Li "PRM UNIX Programmer's Manual"
525 .\" MMI UNIX Manual Master Index
527 .\" CON UNIX Contributed Software Manual
529 .\" LOC UNIX Local Manual
540 .It Li \&.Os オペレーティングシステム リリース番号
541 オペレーティングシステムの名称には一般的な頭字語 (略称)
550 リリース番号は、例えば4.3, 4.3+Tahoe, V.3, V.4 というような各システム
552 認識されない引数はページのフッタ中に記述された通りに表示されます。
558 .Dl \&.Os FreeBSD 2.2
562 .Dl \&.Os CS Department
564 Berkeley でのデフォルトである、引数なしの
568 .Pa /usr/share/tmac/mdoc/doc-common
576 マクロがない場合は、ページの左下角は見にくくなるであろうことに
579 日付は次のようにフォーマルな形式で記述しなければなりません。
584 .Sh マニュアルと一般テキスト領域の紹介
586 マニュアル領域のマクロ名はコマンドやサブルーチン、それに関連ファイルを
587 説明するために使われている日常のインフォーマルな言葉から取られています。
588 この言葉と少し違うバリエーションのものが man ページを書く上での
589 3 つの異なった面を記述するのに使われます。
598 3 番目はコマンドを通常の言葉の感覚でユーザに示したものです。
599 これはすなわち、man ページのテキスト中でのコマンドの議論となります。
605 troff コマンドは一般的に以下のような形式をとります。
606 .Bd -filled -offset indent
607 \&.Va argument1 argument2 ... argument9
611 はマクロコマンドもしくは要求を示しており、
612 それに続くものはすべて引数として処理されます。
613 2 番目のケースでは、コンテントマクロを使用する
619 .Bd -filled -offset indent
633 これは角括弧で囲むことによってオプションであることを示しています。
642 上の例のフォーマットを行なったマクロは以下のものです。
643 .Bd -literal -offset indent
649 3 番目のケースでは、コマンドの説明や構文に上記の例の両方が使われ、
660 コマンド行の引数のリストはかなり長くなる場合もあります。
661 .Bl -tag -width make -offset indent
668 .Op Fl I Ar directory
671 .Op Ar variable=value
687 言葉での説明では、こういった詳細な記述が混乱を防いでくれますが、
695 オペランドやファイル引数に使われる引数マクロ
700 この make コマンド行は以下の指定により生成されています。
701 .Bd -literal -offset indent
704 \&.Op Fl D Ar variable
706 \&.Op Fl f Ar makefile
707 \&.Op Fl I Ar directory
708 \&.Op Fl j Ar max_jobs
709 \&.Op Ar variable=value
723 マニュアル領域と一般テキスト領域のマクロはいくつかの小さな違い
724 があるものの、同様な構文を使用しています。
729 は引数なしで呼び出された時のみ異なります。
739 すべてのコンテントマクロが句読点を認識し、正しく扱うには、
740 各々の句読点文字が先行する空白で分離されている必要があります。
743 .Dl \&.Li sptr, ptr),
749 ここでは句読点は認識されずすべての出力はリテラルなフォントで行なわれて
750 います。句読点が空白文字で区切られている場合、
752 .Dl \&.Li "sptr , ptr ) ,"
756 .Dl Li sptr , ptr ) ,
758 今度は句読点が認識され、出力はデフォルトのフォントで行なわれ
759 リテラルフォントの文字列と区別されています。
762 でエスケープすることによって句読点文字の特別な意味を
766 数学、論理学、もしくは以下の引用符の集合のメンバを含んだ文字列を
768 .Bd -literal -offset indent-two
769 \&{+,\-,/,*,\&%,<,>,<=,>=,=,==,&,`,',"}
773 が文字によって示唆されている操作もしくは評価を実際に
774 行なっていることが、その問題の原因となっています。
777 これらの文字が予期せずに評価されることを防止することができます。
784 アドレスマクロは addr1[,addr2[,addr3]] の形式からなる
787 .Dl 使い方: .Ad address ... \*(Pu
788 .Bl -tag -width "\&.Ad f1 , f2 , f3 :" -compact -offset 14n
791 .It Li \&.Ad addr1\ .
793 .It Li \&.Ad addr1\ , file2
795 .It Li \&.Ad f1\ , f2\ , f3\ :
797 .It Li \&.Ad addr\ )\ )\ ,
804 は他のマクロから呼び出し可能で解析されます。
807 マクロは文書化されている項目の作者の名前、もしくは実際の
808 マニュアルページの作者の名前を指定するために使われます。
809 名前の情報の後のすべての引数は句読点として扱われます。
811 .Dl 使い方: .An author_name \*(Pu
812 .Bl -tag -width "\&.An Joe Author ) ) ," -compact -offset 14n
813 .It Li \&.An Joe\ Author
815 .It Li \&.An Joe\ Author\ ,
817 .It Li \&.An Joe\ Author\ \&Aq\ nobody@FreeBSD.ORG
818 .An Joe Author Aq nobody@FreeBSD.ORG
819 .It Li \&.An Joe\ Author\ )\ )\ ,
833 .Dl 使い方: .Ar argument ... \*(Pu
834 .Bl -tag -width "\&.Ar file1 file2" -compact -offset 15n
839 .It Li \&.Ar file1\ .
841 .It Li \&.Ar file1 file2
843 .It Li \&.Ar f1 f2 f3\ :
845 .It Li \&.Ar file\ )\ )\ ,
855 .Ss コンフィギュレーション宣言 (セクション 4 のみ)
857 マクロはセクション 4 のマニュアルにおいて、
861 このマクロは引用符 (二重引用符のみ) で囲まれた引数を取ることができます。
863 .Bl -tag -width "device le0 at scode?" -offset indent
864 .It Cd "device le0 at scode?"
866 .Ql ".Cd device le0 at scode?"
876 伝統的にフラグはダッシュ文字に引き続いて指定されますが、
877 いくつかのコマンドやコマンドのサブセットはこの方法を使っていません。
878 コマンド修飾子はエディタコマンドのような対話的なコマンドでも
883 インクルードファイルにおいて定義されている変数は
887 .Dl 使い方: .Dv defined_variable ... \*(Pu
888 .Bl -tag -width "\&.Dv MAXHOSTNAMELEN" -compact -offset 14n
889 .It Li ".Dv MAXHOSTNAMELEN"
891 .It Li ".Dv TIOCGPGRP )"
899 .Ss errno (セクション 2 のみ)
902 はセクション 2 のライブラリルーチンにおける
908 (これはセクション 2 のマニュアルページで使われています)
911 .Dl 使い方: .Er ERRNOTYPE ... \*(Pu
912 .Bl -tag -width "\&.Bq Er ENOTDIR" -compact -offset 14n
915 .It Li \&.Er ENOENT\ )\ ;
917 .It Li \&.Bq \&Er ENOTDIR
929 .Dl 使い方: .Ev argument ... \*(Pu
930 .Bl -tag -width "\&.Ev PRINTER ) ) ," -compact -offset 14n
935 .It Li \&.Ev PRINTER\ )\ )\ ,
951 のセクション内で参照する場合に使われます。
961 は構造体のメンバを参照する場合にも使われます。
963 .Dl 使い方: .Fa function_argument ... \*(Pu
964 .Bl -tag -width "\&.Fa d_namlen\ )\ )\ ," -compact -offset 14n
965 .It Li \&.Fa d_namlen\ )\ )\ ,
980 セクション 2 または 3 の関数の説明で使われます。
982 マクロから他のマクロを呼び出すことはなく、
985 .Dl 使い方: .Fd include_file (or defined variable)
988 セクションにおいて、関数がすでに示されていて改行が
992 前の関数呼び出しと次の関数の宣言の間に最適な行間が設定されます。
999 対話的なコマンドのフラグでは、ダッシュがフラグの前には挿入されませんが、
1001 (コマンド修飾子) マクロは、ダッシュを付けないことを除き、
1004 .Dl 使い方: .Fl argument ... \*(Pu
1005 .Bl -tag -width "\&.Fl \-s \-t \-v" -compact -offset 14n
1016 .It Li \&.Fl xyz\ )\ ,
1023 標準入力/標準出力を意味するダッシュとなります。
1027 2 つダッシュとなることに注意して下さい。
1032 マクロは ANSI C の記法を規範としています。
1034 使い方: .Fn [type] function [[type] parameters ... \*(Pu]
1036 .Bl -tag -width "\&.Fn _int align_ _const * char *sptrsxx" -compact
1037 .It Li "\&.Fn getchar"
1039 .It Li "\&.Fn strlen ) ,"
1041 .It Li \&.Fn "\*qint align\*q" "\*qconst * char *sptrs\*q" ,
1042 .Fn "int align" "const * char *sptrs" ,
1046 を引数を指定せずに呼び出すのはエラーです。
1052 注意して下さい (閉じ括弧がその点で挿入されます)。
1054 9 個以上のパラメータをとる関数 (これは滅多にないことですが) では、
1064 .Bd -literal -offset indent
1065 \&.Fo "int res_mkquery"
1072 \&.Fa "struct rrec *newrr"
1079 .Bd -filled -offset indent
1080 .Fo "int res_mkquery"
1087 .Fa "struct rrec *newrr"
1098 セクションでは、関数は常に行の先頭から開始されます。
1100 セクションにおいて、複数の関数が示されており、
1101 関数の型が示されない場合、改行が挿入され、現在の関数名とその前の関数名
1102 の間に最適な改行量が設定されます。現在、
1105 に対して、語の境界をチェックしておらず、予期しない場所で改行が挿入され
1106 てしまうことがあります。これは近い将来修正されるでしょう。
1111 man ページ中の他の場所でも問題なく使うことができますが、
1115 関数の型を示すことがこのマクロの目的です (このマクロは関数名が次の行に
1118 .Dl 使い方: .Ft type ... \*(Pu
1119 .Bl -tag -width "\&.Ft struct stat" -offset 14n -compact
1120 .It Li \&.Ft struct stat
1128 マクロは対話的なコマンド、もしくは内部コマンドを指定します。
1130 .Dl 使い方: .Ic argument ... \*(Pu
1131 .Bl -tag -width "\&.Ic setenv , unsetenvxx" -compact -offset 14n
1134 .It Li \&.Ic do while {...}
1136 .It Li \&.Ic setenv\ , unsetenv
1137 .Ic setenv , unsetenv
1146 マクロは文書のタイトルやサブジェクト名を指定するために
1147 使われます。このマクロは最初に呼び出された時の引数を覚えておくという
1148 特性を持っており、それは常にそのページのサブジェクト名であるべきです。
1152 目的で、最初の名称を出力します。注意: セクション 2 または 3 のドキュメント
1174 と同一ですが、それが最初に使われたときの引数を
1177 .Dl 使い方: .Nm argument ... \*(Pu
1178 .Bl -tag -width "\&.Nm mdoc.sample" -compact -offset 14n
1179 .It Li \&.Nm mdoc.sample
1181 .It Li \&.Nm \e-mdoc
1183 .It Li \&.Nm foo\ )\ )\ ,
1193 マクロはコマンド行の残りのすべての引数をオプションである
1194 ことを示す角括弧で囲み、末尾の句読点は角括弧の外に置きます。
1201 .Dl 使い方: .Op options ... \*(Pu
1202 .Bl -tag -width "\&.Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent
1207 .It Li ".Op Fl k ) ."
1209 .It Li ".Op Fl k Ar kookfile"
1210 .Op Fl k Ar kookfile
1211 .It Li ".Op Fl k Ar kookfile ,"
1212 .Op Fl k Ar kookfile ,
1213 .It Li ".Op Ar objfil Op Ar corfil"
1214 .Op Ar objfil Op Ar corfil
1215 .It Li ".Op Fl c Ar objfil Op Ar corfil ,"
1216 .Op Fl c Ar objfil Op Ar corfil ,
1217 .It Li \&.Op word1 word2
1225 .Bd -literal -offset indent
1227 \&.Op \&Fl k \&Ar kilobytes
1228 \&.Op \&Fl i \&Ar interval
1229 \&.Op \&Fl c \&Ar count
1235 .Op Fl k Ar kilobytes
1236 .Op Fl i Ar interval
1249 マクロはパス名もしくはファイル名をフォーマットします。
1251 .Dl 使い方: .Pa pathname \*(Pu
1252 .Bl -tag -width "\&.Pa /tmp/fooXXXXX ) ." -compact -offset 14n
1253 .It Li \&.Pa /usr/share
1255 .It Li \&.Pa /tmp/fooXXXXX\ )\ .
1256 .Pa /tmp/fooXXXXX ) .
1264 .Dl 使い方: .Va variable ... \*(Pu
1265 .Bl -tag -width "\&.Va char s ] ) ) ," -compact -offset 14n
1268 .It Li \&.Va settimer ,
1270 .It Li \&.Va int\ *prt\ )\ :
1272 .It Li \&.Va char\ s\ ]\ )\ )\ ,
1282 マクロは最初の引数にマニュアルページの名称を取り、
1283 もしあれば次の引数にセクションのページ数か句読点を取ります。
1284 すべての残りの引数は句読点と見なされます。
1286 .Dl 使い方: .Xr man_page [1,...,8] \*(Pu
1287 .Bl -tag -width "\&.Xr mdoc 7 ) ) ," -compact -offset 14n
1290 .It Li \&.Xr mdoc\ ,
1294 .It Li \&.Xr mdoc 7\ )\ )\ ,
1304 .Bd -literal -offset indent -compact
1305 使い方: .At [v6 | v7 | 32v | V.1 | V.4] ... \*(Pu
1307 .Bl -tag -width "\&.At v6 ) ," -compact -offset 14n
1320 最大 2 つまでの引数を取ることができます。
1322 .Dl 使い方: .Bx [Version/release] ... \*(Pu
1323 .Bl -tag -width "\&.Bx 4.3 ) ," -compact -offset 14n
1333 .Bd -literal -offset indent -compact
1334 使い方: .Fx Version.release ... \*(Pu
1336 .Bl -tag -width "\&.Fx 2.2 ) ," -compact -offset 14n
1347 最大 2 つまでの引数を取ることができます。
1349 .Dl 使い方: .Ux ... \*(Pu
1350 .Bl -tag -width "\&.Ux 4.3 ) ," -compact -offset 14n
1359 1 つ以上の文字列が引用符や括弧のような文字のペアで囲まれている
1361 クォートと囲いという用語はこの文書を通して同じ意味で使われます。
1362 ほとんどの 1 行の囲いマクロはクォート (quote) のヒントとするために、
1365 で終了しますが、いくつかの例外があります。
1366 各々の囲いマクロに対し、開始マクロと終了マクロのペアもあり、
1372 これらは 1 行以上のテキストに渡って使うことができますが、
1374 その中では 1 行形式のクォートマクロのみ使用することができます。
1377 .Bd -filled -offset indent
1378 .Bl -column "quote " "close " "open " "Enclose Stringx(in XX) " XXstringXX
1379 .Em "クォート 終了 開始 機能 結果"
1380 \&.Aq .Ac .Ao カギ括弧による囲い <文字列>
1381 \&.Bq .Bc .Bo 角括弧による囲い [文字列]
1382 \&.Dq .Dc .Do 二重引用符 ``文字列''
1383 .Ec .Eo 囲い文字列 (XXによる) XX文字列XX
1384 \&.Pq .Pc .Po 括弧による囲い (文字列)
1385 \&.Ql クォートされたリテラル `st' or 文字列
1386 \&.Qq .Qc .Qo まっすぐな二重引用符 "文字列"
1387 \&.Sq .Sc .So 一重引用符 `文字列'
1391 下記の不正なマクロを除き、すべてのクォートマクロは解析され、呼び出し
1392 可能です。句読点がひとつずつ置かれていて、スペースで区切られていれば、
1393 すべてのクォートマクロは句読点を適切に扱います。クォートマクロは開く
1394 句読点、閉じる句読点(訳注: 句読点には括弧なども含みます) を調べ、
1395 それが囲む文字列より前か後かを決めます。これによって、ある程度の入れ子
1397 .Bl -tag -width xxx,xxxx
1398 .It Li \&.Ec , \&.Eo
1399 これらのマクロは各々開始および終了の文字列を最初の引数に取ります。
1412 場合は、アイテムの幅が固定幅文字 3 つ分より狭い場合にのみクォートされま
1413 す。これはリテラル (固定幅) のフォントの変更があまり気づかれないもので
1414 あるため、短い文字列を良く見えるようにするためです。
1416 プレフィックスマクロは呼び出し可能ではありませんが、解析されます。
1417 .Bl -tag -width (namexx -offset indent
1418 .It Li ".Pf ( Fa name2"
1425 (空白なし) マクロはサフィックス機能と同様の作用があります。
1430 .Bl -tag -width "\&.Aq Pa ctype.h ) ,xxxxxxxx" -compact -offset indent
1433 .It Li \&.Aq \&Ar ctype.h\ )\ ,
1437 .It Li \&.Bq \&Em Greek \&, French \&.
1438 .Bq Em Greek , French .
1441 .It Li ".Dq string abc ."
1443 .It Li ".Dq \'^[A-Z]\'"
1445 .It Li "\&.Ql man mdoc"
1449 .It Li "\&.Qq string ) ,"
1451 .It Li "\&.Qq string Ns ),"
1455 .It Li "\&.Sq string"
1459 囲いマクロの入れ子についての良い例については、
1463 このマクロは上でリストされているような囲いマクロと同じベースの上に
1474 .Ss no\-op もしくは通常テキストマクロ
1476 マクロはマクロコマンド行において、コンテントマクロの構文
1483 マクロはマクロ間での不要な空白を除去します。
1484 これはフラグと引数の間に空白を含まない古いスタイルの引数リストを使う
1486 .Bl -tag -width "\&.Op Fl I Ns Ar directoryxx" -offset indent
1487 .It Li ".Op Fl I Ns Ar directory"
1489 .Op Fl I Ns Ar directory
1503 マクロは同一文書内でのセクションのヘッダへの参照を
1504 指定します。これは解析され、呼び出し可能です。
1506 .Bl -tag -width "Li \&.Sx FILES" -offset 14n
1511 以下のマクロは多少なりとも参考文献を扱えるようにと意図したものです。
1512 これらのマクロは、せいぜい参照スタイルの参考文献のサブセットを手動で
1515 .Bl -tag -width 6n -offset indent -compact
1518 改行を挿入してから、参考文献の終了マクロが読み込まれるまで
1523 参考文献の作者名。1 回の呼び出しにつき、作者名をひとつ指定する。
1548 呼び出し側に戻る商標名マクロだけは解析されます。
1551 .Xr troff Ns / Ns Xr ditroff
1561 .Dl 使い方: .Rv [-std function]
1563 .Ql \&.Rv -std atexit
1566 .\" fake section 3 to avoid error message from Rv
1569 .\" and back to 7 again
1575 オプションはセクション 2 と 3 のマニュアルページでのみ有効です。
1577 商標名マクロは一般的に長さが 2 文字を越えるすべてが大文字の単語用に
1580 .Dl 使い方: .Tn symbol ... \*(Pu
1581 .Bl -tag -width "\&.Tn ASCII" -compact -offset 14n
1589 マクロは解析され、他のマクロから呼び出し可能です。
1594 マクロでマクロの境界における引数リストを
1598 が 1 行中に指定されていることを前提としているマクロの中では行に渡って
1601 以下に空白モードマクロをスペーシングをオフにするために
1605 .Bd -literal -offset indent
1607 \&.It Xo Sy I Ar operation
1608 \&.No \een Ar count No \een
1614 .Bd -filled -offset indent
1615 .Bl -tag -width flag -compact
1617 .It Xo Sy I Ar operation
1618 .No \en Ar count No \en
1625 .Bd -literal -offset indent
1627 \&.It Cm S No \&/ Ar old_pattern Xo
1628 \&.No \&/ Ar new_pattern
1635 .Bd -filled -offset indent
1636 .Bl -tag -width flag -compact
1638 .It Cm S No \&/ Ar old_pattern Xo
1639 .No \&/ Ar new_pattern
1650 .Bd -literal -offset indent
1653 \&.Oo \e&! Oc Ns Ar variable
1654 \&.Op Ar operator variable ...
1659 .Bd -filled -offset indent
1660 .Bl -tag -width flag -compact
1663 .Oo \&! Oc Ns Ar variable
1664 .Op Ar operator variable ...
1675 拡張マクロが使われることはあまりありません。使われるとすれば、リスト
1676 項目の引数リストを拡張する場合です。残念なことに、これが拡張マクロが
1677 最も懲り性であるところでもあります。最初の 2 つの例では、スペーシングは
1678 オフになっています。3 番目では、ある箇所にはスペーシングを入れることが
1679 望ましいのですが、出力全体に入れたいわけではありません。そのような状況
1680 でこれらのマクロが適切に動作するためには、
1684 マクロが 3 番目の例にあるように指定されていることを確認してください。
1689 置かれると、スペーシングがどうなるかは予測不可能です。
1692 (空白なしマクロ) は行中の最初もしくは最後の
1696 マニュアルページ (実際のページでは約 1500 ページ) のうち 15 の
1702 以下にリストされている、最初の 3 つのセクションヘッダマクロ
1704 はすべての man ページで必須のものです。
1705 残りのセクションヘッダはマニュアルページの作者の裁量において、
1708 マクロは 9 つまでの引数を取ることができます。
1709 これは解析されますが、呼び出し不可能です。
1710 .Bl -tag -width "\&.Sh SYNOPSIS"
1714 これが指定されていないと、ヘッダとフッタ、それにデフォルトの
1715 ページレイアウトが設定されず、結果はかなり好ましくないものになるでしょう。
1717 セクションは最低 3 つの項目からなります。
1721 なります。2 番目のものは名称説明マクロ
1724 サブジェクト名を 3 つめの項目、すなわちその名称の説明と分離します。
1725 説明に割り当てられるスペースは小さいものですので、
1726 できるだけ簡潔で分かりやすいものでなければなりません。
1729 (SYNOPSIS) セクションはその man ページのサブジェクト
1730 となっている項目の典型的な使用法を説明します。
1745 はセクション 2 と 3 のマニュアルページに
1746 おいて必須のもので、コマンドと一般名称マクロ
1749 セクション 1, 5, 6, 7, 8 で必須の項目です。
1755 コンフィギュレーションデバイス使用法マクロ
1758 その他のいくつかのマクロが下に示すような書式行を生成するために必要な
1762 .Bd -filled -offset indent
1772 .Dl \&.Op \&Fl benstuv
1786 .Dl ".Op Fl a | Fl b"
1790 は通常 \*(Ba を特別のオペレータとして
1791 解釈します。この他で \*(Ba が使える場合については
1797 (DESCRIPTION) セクションでの最初のテキストは、
1798 ほとんどの場合ではそのコマンド、関数もしくはファイルについての短い
1799 段落で、オプションの構文リストとそれぞれの説明がそれに続きます。
1816 のセクションヘッダはマニュアルページの好ましい
1817 レイアウトの一部であり、一貫性を保つために適切に使われなければ
1818 なりません。これらは使われる順番にリストされています。
1819 .Bl -tag -width SYNOPSIS
1822 (ENVIRONMENT) セクションは関連する環境変数を明らかにし、
1825 使用例、実行例を作成するには様々な方法があります。
1830 man ページのサブジェクトによって使用されるか生成されるファイルで、
1838 (SEE ALSO) セクションには、その man ページの題材に
1839 関する資料への参照と他の関連する man ページへのクロスリファレンスが
1846 セクション番号順に並べ、セクション中ではカンマで区切って
1847 アルファベット順に並べなければなりません。以下に例を示します。
1862 のような特定の実装によるものであれば、ここで記述します。
1863 コマンドがどの規格にも基づいていなければ、その歴史は
1865 (HISTORY)のセクションで説明されなければなりません。
1868 このセクションでその歴史の概要が説明されるべきです。
1870 クレジットが必要であれば、ここで入れます。
1872 コマンドからの診断はこのセクションに入れます。
1874 特定のエラーハンドリング、特にライブラリ関数
1875 (man ページのセクション 2, 3, 9) でのエラーハンドリングは、ここで説明します。
1877 マクロが errno を記述するために使われます。
1885 たとえば、このセクションは以下のように設定されています。
1886 .Bd -literal -offset 14n
1893 段落コマンドは必要な場合に行スペースを指定するために使われます。
1903 マクロは -compact フラグが指定されていなければ、
1906 .\" This worked with version one, need to redo for version three
1909 .\" .Cw (ax+bx+c) \ is\ produced\ by\ \&
1910 .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
1927 .\" .Em is produced by
1943 .\" This example shows the same equation in a different format.
1947 .\" signs were forced with
1951 .\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
1952 .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
1963 .\" .Li \&.Cx \e\ +\e\ \e&
1974 .\" .Em is produced by
1982 .\" .Li \&.Cx \e\ +\e\ \e&
1993 .\" The incantation below was
1999 .\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
2001 .\" .Li \&.Cx Op Sy ?/
2011 .\" .Em is produced by
2013 .\" .Li \&.Ar \e\ b1 e1 f1
2025 現在実装されているキープは単語に対するものだけです。
2036 あり、これはオプションの途中で改行が入らないようにするのに便利です。
2043 ように使われています。 (実際には、オプションマクロがこの目的で使われて
2044 いましたが、オプションが行中にわたって散らばってしまうと一般的に見栄え
2048 行なう (宗教的な) 決定がなされてから、オプションマクロをこの目的で
2049 使わないようになりました。キープマクロについてはもっと機能を向上する
2052 オプションを追加していく必要があります。)
2054 ディスプレイには 5 つのタイプがあります。
2067 リテラルブロック、フィルブロックおよび凸凹ブロックです。
2069 .Bl -tag -width \&.Dlxx
2071 (D-いち) インデントされたテキストを 1 行表示します。
2072 このマクロは解析されますが、呼び出し不可能です。
2077 .Li \&.Dl Fl ldghfstru
2083 マクロの例は本ファイルの中に渡って使われています。
2084 これによって 1 行のテキストのインデント (表示) が可能になります。
2085 このマクロは解析され、他のマクロを認識することができますが、
2086 デフォルトのフォントは固定幅 (リテラル) にセットされています。
2089 .Dl % ls -ldg /usr/local/bin
2092 .Li \&.Dl % ls -ldg /usr/local/bin .
2100 ディスプレイはディスプレイ内およびリスト内で入れ子にすることができます。
2104 .Dl ".Bd ディスプレイタイプ [-offset オフセット値] [-compact]"
2106 ディスプレイタイプは以下の 4 つのタイプの内の 1 つでなければならず、
2109 のオフセット値を指定することができます。
2112 .Bl -tag -width "file file_name " -compact
2114 テキストのブロックをタイプされた通りに表示します。
2115 右マージン (と左マージン) のエッジは左に不揃いに寄せられます。
2117 フィル (フォーマット) されたブロックを表示します。
2118 テキストのブロックがフォーマットされます
2119 (エッジは左非揃えではなく、フィルされます)。
2121 リテラルなブロックを表示します。ソースコードや、単純にタブもしくは
2122 スペースで整えられたテキストで便利です。
2123 .It Fl file Ar ファイル名
2125 フラグに続く名称のファイルが読み込まれ、表示されます。表示
2126 はリテラルなモードで行われ、タブは定幅文字 8 つ分に固定されますが、
2128 .Xr troff/ Ns Nm \-mdoc
2130 .It Fl offset Ar string
2132 が以下の文字列のいずれかとともに指定されていると、
2133 その文字列は次のテキストのブロックのインデントのレベルを示すものとして
2136 .Bl -tag -width indent-two -compact
2143 ブロックを中央揃えにします。残念ながら現時点では、
2144 単にブロックの左側を仮想的な中央マージンに揃えるだけです。
2146 デフォルトのインデント値もしくはタブの分だけインデントします。
2150 これら 2 つのタイプのディスプレイを使った場合、
2152 このインデントは通常 6n か約 2/3 インチ (定幅文字 6 つ分) です。
2154 デフォルトのインデント値の 2 倍分インデントします。
2156 これはブロックをページの右端から約 2 インチ離して
2158 揃えします。このマクロはちゃんと動作する必要があるのですが、
2160 ではまったくちゃんと動作してくれていません。
2166 マニュアルページのテキストの見栄えを変更するマクロは 5 つあります。
2167 .Bl -tag -width \&.Emxx
2172 強調の場合、通常イタリック体のフォントが使われます。
2174 .Dl 使い方: .Em argument ... \*(Pu
2175 .Bl -tag -width "\&.Em vide infra ) ) ," -compact -offset 14n
2176 .It Li ".Em does not"
2178 .It Li ".Em exceed 1024 ."
2180 .It Li ".Em vide infra ) ) ,"
2191 は特殊文字や変数定数、その他タイプされた
2192 通りに表示する必要があるものに使用することができます。
2194 .Dl 使い方: .Li argument ... \*(Pu
2195 .Bl -tag -width "\&.Li cntrl-D ) ," -compact -offset 14n
2198 .It Li \&.Li M1 M2 M3\ ;
2200 .It Li \&.Li cntrl-D\ )\ ,
2202 .It Li \&.Li 1024\ ...
2209 シンボリック体強調マクロはシンボリックの意味でも
2213 .Dl 使い方: .Sy symbol ... \*(Pu
2214 .Bl -tag -width "\&.Sy Important Noticex" -compact -offset 14n
2215 .It Li \&.Sy Important Notice
2216 .Sy Important Notice
2231 フォントモードは他のフォントモードと入れ子にすることができます。
2237 font-mode は以下の 3 つのタイプのうちのいずれかでなければなりません。
2239 .Bl -tag -width "file file_name " -compact
2240 .It Sy \&Em | Fl emphasis
2243 マクロがテキストブロック全体に使われているのと同様です。
2244 .It Sy \&Li | Fl literal
2247 マクロがテキストブロック全体に使われているのと同様です。
2248 .It Sy \&Sy | Fl symbolic
2251 マクロがテキストブロック全体に使われているのと同様です。
2259 で開始されるリストにはいくつかのタイプが
2265 マクロで終了しなければなりません。リストはリスト自身や
2266 ディスプレイの中で入れ子にすることができます。列はリストの中で使うこと
2267 ができますが、リストが列の中で使えるかどうかは検証されていません。
2269 さらに、タグの幅、リストのオフセット、コンパクトさ(項目間の空白行が
2270 許されているかどうか) のような、いくつかのリストの属性を指定することが
2271 できます。本ドキュメントのほとんどはタグ
2274 フォーマットされています。各種リストタイプは、調子を変えるために
2281 tag リストで構成されたページを何ページも読んだ後には幾分変に見える
2290 これら 3 つは最も単純なリストのタイプです。
2296 マクロによってのみ構成される行で指定されます。
2297 例として、簡単な列挙リストのソーステキストは、このようになります。
2298 .Bd -literal -offset indent-two
2299 \&.Bl -enum -compact
2312 .Bl -enum -offset indent-two -compact
2321 簡単な bullet リスト構成の例を示します。
2322 .Bd -literal -offset indent-two
2323 \&.Bl -bullet -compact
2332 .Bl -bullet -offset indent-two -compact
2351 では、次のテキストへそのラベルを挿入します。
2353 では、次のテキストをラベルの位置へインデントします。
2355 (オーバーハング) では、次のテキストをラベルの位置に
2358 では、タグつきテキストの形式にします。ちなみに上のリストは
2362 マクロは inset, hang, tag のリストタイプでのみ解析され、
2363 呼び出し不可能です。以下に inset ラベルの例を示します。
2365 .Bl -inset -offset indent
2367 tag リスト (tag 段落とも呼ばれる) は、
2368 Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
2370 診断リストはセクション 4 の診断リストを生成するもので、
2371 呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
2375 ohang ラベルはスペースに制限がある時に便利です。
2377 inset ラベルは段落のブロックを制御するのに便利で、
2379 マニュアルを他の形式に変換する時に役立ちます。
2382 上の例を生成したソーステキストはこうなっています。
2383 .Bd -literal -offset indent
2384 \&.Bl -inset -offset indent
2386 \&tag リスト (tag 段落とも呼ばれる) は、
2387 \&Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
2389 \&診断リストはセクション 4 の診断リストを生成するもので、
2390 \&呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
2394 \&ohang ラベルはスペースに制限がある時に便利です。
2396 \&inset ラベルは段落のブロックを制御するのに便利で、
2398 \&マニュアルを他の形式に変換する時に役立ちます。
2402 以下は 2 つの項目を持つ hang リストです。
2403 .Bl -hang -offset indent
2406 ラベルは tag リストと同じようになります。
2407 .It Em 長い hang リストラベル
2412 これを生成している元のテキストは以下の通りです。
2413 .Bd -literal -offset indent
2414 \&.Bl -hang -offset indent
2416 \&ラベルがラベルの幅より小さいときには、
2417 \&ラベルは tag リストと同じようになります。
2418 \&.It Em 長い hang リストラベル
2419 \&は、tag 段落のラベルとは異なり、
2424 タグ幅を制御するためのオプションの幅指定を使ったタグつきリストは
2427 .Bl -tag -width PAGEIN -compact -offset indent
2429 プロセスが sleep している時間 (ブロックされた秒数)
2431 そのプロセスによるコアにロードされていないページへの参照による
2436 プロセスの所有者の数字表記によるユーザID
2438 親プロセスの数字表記によるID、プロセスの優先度
2439 (割り込み不可のウエイトであるときには非正値)
2443 .Bd -literal -offset indent
2444 \&.Bl -tag -width "PAGEIN" -compact -offset indent
2446 \&プロセスが sleep している時間 (ブロックされた秒数)
2448 \&そのプロセスによるコアにロードされていないページへの参照によるディスク
2452 \&プロセスの所有者の数字表記によるユーザID
2454 \&親プロセスの数字表記によるID、プロセスの優先度
2455 \&(割り込み不可のウエイトであるときには非正値)
2459 幅指定として以下のものを使うことができます。
2460 .Bl -tag -width Ar -offset indent
2461 .It Fl width Ar \&Fl
2462 そのフラグでのデフォルトの幅を指定します。すべての呼び出し可能なマクロ
2463 は各々デフォルトの幅の値を持っています。現在、
2466 文字 10 個分、もしくは約 5/6 インチとなっています。
2468 定幅文字 24 個分の幅、もしくは約 2 インチの幅をセットします。
2472 .It Fl width Ar ENAMETOOLONG
2473 指定された文字列の固定長に幅をセットします。
2474 .It Fl width Ar "\*qint mkfifo\*q"
2475 これも、指定された文字列の固定長に幅をセットします。
2478 タグつきリストタイプで幅が指定されていないと、
2481 起動された時に適した幅を決定することが試みられます。
2484 最初の引数が呼び出し可能なマクロであれば、そのマクロのデフォルトの幅が
2485 そのマクロ名が幅として指定されたように使用されます。しかしながら、その
2486 リスト中に他の項目が別の呼び出し可能なマクロ名で与えられていると、
2487 新しく入れ子となったリストとして処理されます。
2489 以下の文字列はあらかじめ定義されているものであり、troff の文字列解釈
2500 解釈シーケンスはテキストのどこでも使うことができます。
2502 .Bl -column "String " "Nroff " "Troff " -offset indent
2503 .It Sy "文字列 Nroff Troff"
2504 .It Li <= Ta \&<\&= Ta \*(<=
2505 .It Li >= Ta \&>\&= Ta \*(>=
2506 .It Li Rq Ta '' Ta \*(Rq
2507 .It Li Lq Ta `` Ta \*(Lq
2508 .It Li ua Ta ^ Ta \*(ua
2509 .It Li aa Ta ' Ta \*(aa
2510 .It Li ga Ta \` Ta \*(ga
2511 .\" .It Li "sL" Ta ` Ta \*(sL
2512 .\" .It Li "sR" Ta ' Ta \*(sR
2513 .It Li q Ta \(dq Ta \*q
2514 .It Li Pi Ta pi Ta \*(Pi
2515 .It Li Ne Ta != Ta \*(Ne
2516 .It Li Le Ta <= Ta \*(Le
2517 .It Li Ge Ta >= Ta \*(Ge
2518 .It Li Lt Ta < Ta \*(Gt
2519 .It Li Gt Ta > Ta \*(Lt
2520 .It Li Pm Ta +- Ta \*(Pm
2521 .It Li If Ta infinity Ta \*(If
2522 .It Li Na Ta \fINaN\fP Ta \*(Na
2523 .It Li Ba Ta \&| Ta \*(Ba
2534 は限られたデバッグ機能しか持っていませんが、
2535 引数名と内部レジスタやマクロ名との衝突のような
2536 潜在的なエラーを検出するのに役立ちます。 (A って何?)
2540 1 文字か 2 文字の名称がついています。
2548 のように2 文字からなる <大文字><小文字> の形式か、
2550 のように <小文字><大文字> の形式か、
2552 のように <大文字もしくは小文字><数字>
2557 それらすべては小文字 2 文字か、ドットに文字もしくはメタ文字が続く形式を取ります。
2558 紹介例の 1 つに、エスケープシーケンス
2561 解釈させない方法がありました。これは内部レジスタ名にも有効です。
2563 .\" Every callable macro name has a corresponding register
2564 .\" of the same name (<upper_case><lower_case>).
2565 .\" There are also specific registers which have
2566 .\" been used for stacks and arrays and are listed in the
2568 .\" .Bd -ragged -offset 4n
2569 .\" [A-Z][a-z] registers corresponding to macro names (example ``Ar'')
2570 .\" [a-z][A-Z] registers corresponding to macro names (example ``aR'')
2571 .\" C[0-9] argument types (example C1)
2572 .\" O[0-9] offset stack (displays)
2573 .\" h[0-9] horizontal spacing stack (lists)
2574 .\" o[0-9] offset (stack) (lists)
2575 .\" t[0-9] tag stack (lists)
2576 .\" v[0-9] vertical spacing stack (lists)
2577 .\" w[0-9] width tag/label stack
2580 エスケープされていないレジスタ名が引数リストに指定されると、
2582 一般的には、テキストのかなり大きな部分が出力されるべきところに
2583 出力されないとか、リストのタグのような小さな文字列が消えてしまうとか、
2584 引数リストの中の引数のタイプが間違って解釈されるとかいうことが、起こり得ます。
2585 きっとあなたのお母さんは、あなたにこんな面倒なことを覚えるようにとは
2587 そこで、与えられた引数が有効か無効かを判断する方法があります。
2591 (デバッグ) マクロによってほとんどのマクロ
2592 の引数リストがどう解釈されるかを表示することができます。
2594 (段落) マクロのようなマクロはデバッグ情報を含んでいません。呼び出し可能
2595 なマクロはすべてデバッグ情報を含んでおり、疑いがある場合はいつでも
2597 マクロをオンにすることを強くお勧めします。
2599 .Dl 使い方: \&.Db [on | off]
2601 以下の例では、問題が故意に発生するようにされた部分の上と下で
2608 .Bd -literal -offset indent
2610 \&.Op Fl aC Ar file )
2615 .Bd -literal -offset indent
2617 DEBUG(argv) MACRO: `.Op' Line #: 2
2618 Argc: 1 Argv: `Fl' Length: 2
2619 Space: `' Class: Executable
2620 Argc: 2 Argv: `aC' Length: 2
2621 Space: `' Class: Executable
2622 Argc: 3 Argv: `Ar' Length: 2
2623 Space: `' Class: Executable
2624 Argc: 4 Argv: `file' Length: 4
2625 Space: ` ' Class: String
2626 Argc: 5 Argv: `)' Length: 1
2627 Space: ` ' Class: Closing Punctuation or suffix
2628 MACRO REQUEST: .Op Fl aC Ar file )
2632 この情報の最初の行では呼び出されているマクロの名称が出力されています。
2635 とそれが現れた行番号が表示されています。
2637 (特にテキストが他のファイルからインクルードされている場合)、
2639 ファイルが 1 つだけの場合には正しい行番号が出力されます。
2643 出力されています。引数の長さが 2 文字であれば、
2645 (ゼロでない値を含むすべてのレジスタは実行可能なように見えます)
2647 3 番目の行ではそのクラスで指定されているスペースとクラスタイプが
2649 ここでの問題は引数 aC が実行不可能でなければならないことです。
2650 クラスの 4 つのタイプは文字列、実行可能、閉じる句読点、開く句読点です。
2651 最後の行では引数リスト全体が読み込まれた通りに表示されています。
2655 .Bd -literal -offset indent
2657 \&.Em An escaped \e&aC
2660 .Bd -literal -offset indent
2662 DEBUG(fargv) MACRO: `.Em' Line #: 2
2663 Argc: 1 Argv: `An' Length: 2
2664 Space: ` ' Class: String
2665 Argc: 2 Argv: `escaped' Length: 7
2666 Space: ` ' Class: String
2667 Argc: 3 Argv: `aC' Length: 2
2668 Space: ` ' Class: String
2669 MACRO REQUEST: .Em An escaped &aC
2677 は先の例と同様に長さ 2 と表示されています。
2683 この他の診断は使用方法を報告するものであり、
2685 .Sh GROFF, TROFF, NROFF
2695 されるヘッダとフッタは禁止されており、マニュアルをオンラインで効率良く
2696 見ることができるようになっています。現在の所、
2701 はページ内容の無いファイル末の残りの部分まで
2702 出力します。改ページを禁止することによって
2705 ハードコピーには適さないものとなっています。サイト依存のスタイル
2707 .Pa /usr/src/share/tmac/doc-nroff
2711 の名称を持つレジスタが古いスタイルの振る舞い
2714 .Bl -tag -width /usr/share/man0/template.doc -compact
2715 .It Pa /usr/share/tmac/doc.tmac
2717 .It Pa /usr/share/misc/mdoc.template
2719 .It Pa /usr/share/examples/mdoc/*
2723 フラグ引き数のダッシュが意図せずハイフンにより折り返しになるバグは
2727 意図しない動作 (ハイフンでの改行) が起こることがある。
2729 あらかじめ定義されている文字列は文書において宣言されていません。
2731 セクション 3f はヘッダルーチンには追加されていません。
2740 は分割されるのを防止するために、行の長さが短すぎないか
2741 どうかをチェックする必要があります。ときどき、最後の括弧が分割される
2742 ことがあり、行がフィルモードであるときには全くおかしな結果になること
2745 nroff 使用時に、(最初のヘッダとフッタ以外の) 改ページ時のヘッダと
2746 フッタの挿入を行わないようにするのに使用される命令によって、
2747 ときどき見るに耐えない部分的な行詰め (や空行) がページの末尾に
2750 .\" Note what happens if the parameter list overlaps a newline
2752 .\" to make sure a line boundary is crossed:
2754 .\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[]
2757 .\" produces, nudge nudge,
2758 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
2759 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
2761 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] .
2763 .\" If double quotes are used, for example:
2765 .\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q
2768 .\" produces, nudge nudge,
2769 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
2771 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
2773 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" .
2775 .\" Not a pretty sight...
2776 .\" In a paragraph, a long parameter containing unpaddable spaces as
2777 .\" in the former example will cause
2779 .\" to break the line and spread
2780 .\" the remaining words out.
2781 .\" The latter example will adjust nicely to
2782 .\" justified margins, but may break in between an argument and its
2786 .\" the right margin adjustment is normally ragged and the problem is
2788 リストマクロとディスプレイマクロはキープを行いませんが、
2799 一部である。プロジェクトの説明とバグ報告に関する情報は
2800 http://www.kernel.org/doc/man-pages/ に書かれている。