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 .\"*******************************************************************
49 .\" Japanese Version Copyright (c) 1999 FreeBSD jpman project
50 .\" all rights reserved.
51 .\" Contributed to Linux JM Project.
62 マニュアルを書くためのチュートリアルサンプル
75 マニュアルを書くためのチュートリアルサンプルです。
79 詳細は個々の作者に任せたページレイアウトベースのものでした。
82 タイトル、セクションのヘッダ、ディスプレイ、リストのマクロからなる
85 ページでのテキストの物理的な位置に影響を持ちます。
86 ページ構造領域に加え、さらにマニュアル領域および一般テキスト領域
88 一般テキスト領域はテキストの一部をクォートしたり、
89 強調するといったような作業を実行するマクロとして定義されています。
92 の関連ファイルを記述するための日常使用されるインフォーマルな言葉の
93 サブセットであるマクロとして定義されています。
94 マニュアル領域のマクロはコマンド名、コマンド行の引数とオプション、
95 関数名、関数のパラメータ、パス名、変数名、他のマニュアルページへの
97 これらの領域の項目は作者とマニュアルページの将来のユーザの両者に
99 マニュアル間で一貫性を高めることによって将来のドキュメントツールへの
102 マニュアルのエントリは、実際の長さに関わらず、
106 単純に man ページとして参照されています。
108 通常チュートリアルドキュメントは、そこに示された題材をすぐに使いたい時
109 に読むものですので、このドキュメントのユーザはせっかちな人だと仮定して
110 います。このドキュメントの残りの部分で説明されている題材は以下のような
112 .Bl -enum -offset indent
115 .Bl -tag -width flag -compact -offset indent
123 .Bl -tag -width flag -compact -offset indent
124 .It "マニュアルページのテンプレート"
129 .Tn "マニュアルと一般テキスト領域の紹介"
130 .Bl -tag -width flag -compact -offset indent
136 .Bl -tag -width flag -compact -offset indent
140 .It "コンフィギュレーション宣言 (セクション 4 のみ)"
143 .It "errno (セクション 2 のみ)"
150 .\" .It "Header File (including source code)" .
160 .Bl -tag -width flag -compact -offset indent
166 .Bl -tag -width flag -compact -offset indent
167 .It "カギ括弧 <> によるクォート/囲い"
168 .It "角括弧 [] によるクォート/囲い"
170 .It "括弧 () によるクォート/囲い"
171 .It "一重引用符によるクォート/囲い"
174 .It "no\-op もしくは通常テキストマクロ"
178 .It "返り値 (セクション 2, 3 のみ)"
184 .Bl -tag -width flag -compact -offset indent
189 .It "フォントモード (強調、リテラル、およびシンボリック)"
197 .Tn "GROFF、TROFF、NROFF を使用したフォーマッティング"
204 パッケージは man ページを記述するプロセスを簡単にすること
210 ゴタゴタした詳細を学ぶ必要がないのが理想ですが、いくつか片付けるべき
211 避けられない制限事項があります。また、このパッケージは高速で
219 それに続けて 2 文字からなるマクロの名称を指定することによって呼び出され
220 ます。引数はマクロの後にスペースで区切って指定することができます。
224 字をマクロ名として解釈するよう指示しています。マクロを起動せずに、ある
233 は文字通りスペース幅が 0 として解釈され、出力には現れません。
237 マクロは引数を 9 つまで取ることができ、
240 でのほとんどのマクロは 9 つの引数を取ることができ、
241 限られた場合にのみ引数は次の行に続けて指定することができます
245 いくつかのマクロは引用符に囲まれた引数を扱うことができます
251 での一般テキスト領域とマニュアル領域のほとんどのマクロは特別であり、
252 その引数のリストは呼び出し可能なマクロ名として
255 これは一般テキスト領域またはマニュアル領域のマクロ名に一致し、
256 呼び出し可能であると判断された引数リストの中の引数は、
257 実行されるか、それが処理される時に呼び出されることを意味しています。
261 このようにしてたくさんのマクロを入れ子にすることができます。
272 オプションのフラグを引数とともに指定することができます。
273 .Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
276 .Li \&.Op \&Fl s \&Ar bytes
280 2 文字からなる文字列をマクロ名として解釈されないようにするには、
284 .Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
285 .It Op \&Fl s \&Ar bytes
287 .Li \&.Op \e&Fl s \e&Ar bytes
296 ん。本ドキュメントと関連のクイックリファレンスマニュアル
298 を通して、引数リストが呼び出し可能な引数として解析されるマクロは「解析
299 される」、引数リストから呼び出されることができるマクロは「呼び出し可能」
302 のほとんどすべてのマクロは解析されるのです
306 し可能である」とか「他のマクロを呼び出すことができる」と表現するのは面
307 倒なことであるため、「解析される」という用語が使われています。
309 ひとつ以上の空白文字を含む文字列をひとつの引数として指定したい場合がよ
310 くあります。これは 9 個を越える引数を指定できないという制限に対処したり、
311 引数のリストにある特有な配置をおこなうことが必要なマクロに引数を指定す
316 引数が関数のパラメータであることが必要です。
319 囲まれたパラメータリストにおける関数のパラメータの宣言の規定により、
320 各パラメータは最低でも 2 語の文字列となります。
325 空白を含む引数を指定するには 2 通りの方法があります。
327 解析の前に個々の引数を再割り当てすることによって、
328 引用符の間に空白を含めて渡すのが最も便利な方法なのですが、
332 のすべてのマクロを実装するには処理速度およ
333 びメモリ使用量の点でかなり高価な方法となります。
335 では高価な処理にはなりませんが、移植性のため、この方法は
336 空白を含めることが最も必要である以下のマクロだけに限っています。
338 .Bl -tag -width 4n -offset indent -compact
340 コンフィギュレーション宣言 (セクション 4 の
366 空白を含む文字列を渡すのに、固定空白、すなわち詰め込まれない
373 この方法はどのマクロでも使うことができますが、1 行を越える長さの
374 テキストの調整の邪魔になるという副作用があります。
377 固定空白は他の印刷可能文字と同様に扱われ、通常期待されるように、
378 そこで文字列を空白や改行で分けることを行なわなくなります。
379 この方法は文字列が行の境界をまたがないであろう場合に有用です。
381 .Bl -tag -width "fetch(char *str)" -offset indent
382 .It Fn fetch char\ *str
384 .Ql \&.Fn fetch char\e *str
386 .It Fn fetch "char *str"
388 .Ql \&.Fn fetch "\*qchar *str\*q"
399 .Dl Fn fetch char *str
401 パラメータのリストが改行の境界をまたぐ場合に何がおこるかについては、
406 は行末に空白文字があると混乱してしまうことがあります。
407 <空白> <行末> の文字シーケンスからすべての
409 どうしても行末に空白文字をおく必要性が出てきた場合は、
428 バックスラッシュを残して扱うことができます。
431 .Pa /usr/share/misc/mdoc.template
432 の基本テンプレートを使って容易に作り上げることができます。
433 .Pa /usr/share/examples/mdoc
434 にはいくつかのサンプルの man ページが収められています。
437 .Bd -literal -offset indent
438 \&.\e" 以下の項目はすべての man ページで必要な項目です。
440 \&.Os オペレーティングシステム [バージョン/リリース]
441 \&.Dt ドキュメントタイトル [セクション番号] [ボリューム]
447 \&.\e" 以下の項目については、必要に応じてコメントをはずして
449 \&.\e" この次の項目はセクション 2, 3, 9 でのみ必要な、関数の
451 \&.\e" .Sh RETURN VALUE
452 \&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
453 \&.\e" .Sh ENVIRONMENT
456 \&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
457 \&.\e" ((シェルへの) コマンドの戻り値と
458 \&.\e" fprintf/stderr の型の診断です。)
459 \&.\e" .Sh DIAGNOSTICS
460 \&.\e" 次の項目はセクション 2, 3, 9 でのみ必要な、
461 \&.\e" エラーハンドリングとシグナルハンドリングです。
464 \&.\e" .Sh CONFORMING TO
470 このテンプレートにおける最初の項目はマクロ
471 .Pq Li \&.Dd , \&.Os , \&.Dt
473 man ページもしくは題材となっているソースの開発や変更のベースとなった
476 man ページタイトルをそのページが属するマニュアルの
477 セクション番号とともに指定したもの、となっています。
478 これらのマクロはそのページを識別するものであり、
483 テンプレート中の残りの項目はセクションのヘッダ
498 いくつかのコンテントマクロはページレイアウトマクロの説明に
499 使われていますので、ページレイアウトマクロの前にコンテントマクロについて
502 タイトルマクロはページ構造領域の最初の部分ですが、man ページを
503 前日に書き始めたいという人のために、最初に分けて記述されます。
504 3 つのヘッダマクロでドキュメントか man ページのタイトル、
505 オペレーティングシステム、および原著の日付を指定します。
506 これらのマクロはドキュメントの最初に一度だけ呼び出されるもので、
507 ヘッダとフッタを構成するためだけに使用されます。
509 .It Li \&.Dt ドキュメントタイトル セクション番号 [ボリューム]
511 .\" USD UNIX User's Supplementary Documents
513 .\" PS1 UNIX Programmer's Supplementary Documents
514 ドキュメントタイトルは man ページの主題であり、troff の制限により
517 セクション番号は 1,\ ...,\ 8 となり、これが指定されると
518 ボリュームタイトルを省略してもかまいません。
519 では、次のセクション番号と解説について後述します:
520 ボリュームタイトルには任意のものか次のいずれかを指定します。
522 .Bl -column SMM -offset indent -compact
523 .It Li "AMD UNIX Ancestral Manual Documents"
524 .It Li "SMM UNIX System Manager's Manual"
525 .It Li "URM UNIX Reference Manual"
526 .It Li "PRM UNIX Programmer's Manual"
530 .\" MMI UNIX Manual Master Index
532 .\" CON UNIX Contributed Software Manual
534 .\" LOC UNIX Local Manual
545 .It Li \&.Os オペレーティングシステム リリース番号
546 オペレーティングシステムの名称には一般的な頭字語 (略称)
555 リリース番号は、例えば4.3, 4.3+Tahoe, V.3, V.4 というような各システム
557 認識されない引数はページのフッタ中に記述された通りに表示されます。
563 .Dl \&.Os FreeBSD 2.2
567 .Dl \&.Os CS Department
569 Berkeley でのデフォルトである、引数なしの
573 .Pa /usr/share/tmac/mdoc/doc-common
581 マクロがない場合は、ページの左下角は見にくくなるであろうことに
584 日付は次のようにフォーマルな形式で記述しなければなりません。
589 .Sh マニュアルと一般テキスト領域の紹介
591 マニュアル領域のマクロ名はコマンドやサブルーチン、それに関連ファイルを
592 説明するために使われている日常のインフォーマルな言葉から取られています。
593 この言葉と少し違うバリエーションのものが man ページを書く上での
594 3 つの異なった面を記述するのに使われます。
603 3 番目はコマンドを通常の言葉の感覚でユーザに示したものです。
604 これはすなわち、man ページのテキスト中でのコマンドの議論となります。
610 troff コマンドは一般的に以下のような形式をとります。
611 .Bd -filled -offset indent
612 \&.Va argument1 argument2 ... argument9
616 はマクロコマンドもしくは要求を示しており、
617 それに続くものはすべて引数として処理されます。
618 2 番目のケースでは、コンテントマクロを使用する
624 .Bd -filled -offset indent
638 これは角括弧で囲むことによってオプションであることを示しています。
647 上の例のフォーマットを行なったマクロは以下のものです。
648 .Bd -literal -offset indent
654 3 番目のケースでは、コマンドの説明や構文に上記の例の両方が使われ、
665 コマンド行の引数のリストはかなり長くなる場合もあります。
666 .Bl -tag -width make -offset indent
673 .Op Fl I Ar directory
676 .Op Ar variable=value
692 言葉での説明では、こういった詳細な記述が混乱を防いでくれますが、
700 オペランドやファイル引数に使われる引数マクロ
705 この make コマンド行は以下の指定により生成されています。
706 .Bd -literal -offset indent
709 \&.Op Fl D Ar variable
711 \&.Op Fl f Ar makefile
712 \&.Op Fl I Ar directory
713 \&.Op Fl j Ar max_jobs
714 \&.Op Ar variable=value
728 マニュアル領域と一般テキスト領域のマクロはいくつかの小さな違い
729 があるものの、同様な構文を使用しています。
734 は引数なしで呼び出された時のみ異なります。
744 すべてのコンテントマクロが句読点を認識し、正しく扱うには、
745 各々の句読点文字が先行する空白で分離されている必要があります。
748 .Dl \&.Li sptr, ptr),
754 ここでは句読点は認識されずすべての出力はリテラルなフォントで行なわれて
755 います。句読点が空白文字で区切られている場合、
757 .Dl \&.Li "sptr , ptr ) ,"
761 .Dl Li sptr , ptr ) ,
763 今度は句読点が認識され、出力はデフォルトのフォントで行なわれ
764 リテラルフォントの文字列と区別されています。
767 でエスケープすることによって句読点文字の特別な意味を
771 数学、論理学、もしくは以下の引用符の集合のメンバを含んだ文字列を
773 .Bd -literal -offset indent-two
774 \&{+,\-,/,*,\&%,<,>,<=,>=,=,==,&,`,',"}
778 が文字によって示唆されている操作もしくは評価を実際に
779 行なっていることが、その問題の原因となっています。
782 これらの文字が予期せずに評価されることを防止することができます。
789 アドレスマクロは addr1[,addr2[,addr3]] の形式からなる
792 .Dl 使い方: .Ad address ... \*(Pu
793 .Bl -tag -width "\&.Ad f1 , f2 , f3 :" -compact -offset 14n
796 .It Li \&.Ad addr1\ .
798 .It Li \&.Ad addr1\ , file2
800 .It Li \&.Ad f1\ , f2\ , f3\ :
802 .It Li \&.Ad addr\ )\ )\ ,
809 は他のマクロから呼び出し可能で解析されます。
812 マクロは文書化されている項目の作者の名前、もしくは実際の
813 マニュアルページの作者の名前を指定するために使われます。
814 名前の情報の後のすべての引数は句読点として扱われます。
816 .Dl 使い方: .An author_name \*(Pu
817 .Bl -tag -width "\&.An Joe Author ) ) ," -compact -offset 14n
818 .It Li \&.An Joe\ Author
820 .It Li \&.An Joe\ Author\ ,
822 .It Li \&.An Joe\ Author\ \&Aq\ nobody@FreeBSD.ORG
823 .An Joe Author Aq nobody@FreeBSD.ORG
824 .It Li \&.An Joe\ Author\ )\ )\ ,
838 .Dl 使い方: .Ar argument ... \*(Pu
839 .Bl -tag -width "\&.Ar file1 file2" -compact -offset 15n
844 .It Li \&.Ar file1\ .
846 .It Li \&.Ar file1 file2
848 .It Li \&.Ar f1 f2 f3\ :
850 .It Li \&.Ar file\ )\ )\ ,
860 .Ss コンフィギュレーション宣言 (セクション 4 のみ)
862 マクロはセクション 4 のマニュアルにおいて、
866 このマクロは引用符 (二重引用符のみ) で囲まれた引数を取ることができます。
868 .Bl -tag -width "device le0 at scode?" -offset indent
869 .It Cd "device le0 at scode?"
871 .Ql ".Cd device le0 at scode?"
881 伝統的にフラグはダッシュ文字に引き続いて指定されますが、
882 いくつかのコマンドやコマンドのサブセットはこの方法を使っていません。
883 コマンド修飾子はエディタコマンドのような対話的なコマンドでも
888 インクルードファイルにおいて定義されている変数は
892 .Dl 使い方: .Dv defined_variable ... \*(Pu
893 .Bl -tag -width "\&.Dv MAXHOSTNAMELEN" -compact -offset 14n
894 .It Li ".Dv MAXHOSTNAMELEN"
896 .It Li ".Dv TIOCGPGRP )"
904 .Ss errno (セクション 2 のみ)
907 はセクション 2 のライブラリルーチンにおける
913 (これはセクション 2 のマニュアルページで使われています)
916 .Dl 使い方: .Er ERRNOTYPE ... \*(Pu
917 .Bl -tag -width "\&.Bq Er ENOTDIR" -compact -offset 14n
920 .It Li \&.Er ENOENT\ )\ ;
922 .It Li \&.Bq \&Er ENOTDIR
934 .Dl 使い方: .Ev argument ... \*(Pu
935 .Bl -tag -width "\&.Ev PRINTER ) ) ," -compact -offset 14n
940 .It Li \&.Ev PRINTER\ )\ )\ ,
956 のセクション内で参照する場合に使われます。
966 は構造体のメンバを参照する場合にも使われます。
968 .Dl 使い方: .Fa function_argument ... \*(Pu
969 .Bl -tag -width "\&.Fa d_namlen\ )\ )\ ," -compact -offset 14n
970 .It Li \&.Fa d_namlen\ )\ )\ ,
985 セクション 2 または 3 の関数の説明で使われます。
987 マクロから他のマクロを呼び出すことはなく、
990 .Dl 使い方: .Fd include_file (or defined variable)
993 セクションにおいて、関数がすでに示されていて改行が
997 前の関数呼び出しと次の関数の宣言の間に最適な行間が設定されます。
1004 対話的なコマンドのフラグでは、ダッシュがフラグの前には挿入されませんが、
1006 (コマンド修飾子) マクロは、ダッシュを付けないことを除き、
1009 .Dl 使い方: .Fl argument ... \*(Pu
1010 .Bl -tag -width "\&.Fl \-s \-t \-v" -compact -offset 14n
1021 .It Li \&.Fl xyz\ )\ ,
1028 標準入力/標準出力を意味するダッシュとなります。
1032 2 つダッシュとなることに注意して下さい。
1037 マクロは ANSI C の記法を規範としています。
1039 使い方: .Fn [type] function [[type] parameters ... \*(Pu]
1041 .Bl -tag -width "\&.Fn _int align_ _const * char *sptrsxx" -compact
1042 .It Li "\&.Fn getchar"
1044 .It Li "\&.Fn strlen ) ,"
1046 .It Li \&.Fn "\*qint align\*q" "\*qconst * char *sptrs\*q" ,
1047 .Fn "int align" "const * char *sptrs" ,
1051 を引数を指定せずに呼び出すのはエラーです。
1057 注意して下さい (閉じ括弧がその点で挿入されます)。
1059 9 個以上のパラメータをとる関数 (これは滅多にないことですが) では、
1069 .Bd -literal -offset indent
1070 \&.Fo "int res_mkquery"
1077 \&.Fa "struct rrec *newrr"
1084 .Bd -filled -offset indent
1085 .Fo "int res_mkquery"
1092 .Fa "struct rrec *newrr"
1103 セクションでは、関数は常に行の先頭から開始されます。
1105 セクションにおいて、複数の関数が示されており、
1106 関数の型が示されない場合、改行が挿入され、現在の関数名とその前の関数名
1107 の間に最適な改行量が設定されます。現在、
1110 に対して、語の境界をチェックしておらず、予期しない場所で改行が挿入され
1111 てしまうことがあります。これは近い将来修正されるでしょう。
1116 man ページ中の他の場所でも問題なく使うことができますが、
1120 関数の型を示すことがこのマクロの目的です (このマクロは関数名が次の行に
1123 .Dl 使い方: .Ft type ... \*(Pu
1124 .Bl -tag -width "\&.Ft struct stat" -offset 14n -compact
1125 .It Li \&.Ft struct stat
1133 マクロは対話的なコマンド、もしくは内部コマンドを指定します。
1135 .Dl 使い方: .Ic argument ... \*(Pu
1136 .Bl -tag -width "\&.Ic setenv , unsetenvxx" -compact -offset 14n
1139 .It Li \&.Ic do while {...}
1141 .It Li \&.Ic setenv\ , unsetenv
1142 .Ic setenv , unsetenv
1151 マクロは文書のタイトルやサブジェクト名を指定するために
1152 使われます。このマクロは最初に呼び出された時の引数を覚えておくという
1153 特性を持っており、それは常にそのページのサブジェクト名であるべきです。
1157 目的で、最初の名称を出力します。注意: セクション 2 または 3 のドキュメント
1179 と同一ですが、それが最初に使われたときの引数を
1182 .Dl 使い方: .Nm argument ... \*(Pu
1183 .Bl -tag -width "\&.Nm mdoc.sample" -compact -offset 14n
1184 .It Li \&.Nm mdoc.sample
1186 .It Li \&.Nm \e-mdoc
1188 .It Li \&.Nm foo\ )\ )\ ,
1198 マクロはコマンド行の残りのすべての引数をオプションである
1199 ことを示す角括弧で囲み、末尾の句読点は角括弧の外に置きます。
1206 .Dl 使い方: .Op options ... \*(Pu
1207 .Bl -tag -width "\&.Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent
1212 .It Li ".Op Fl k ) ."
1214 .It Li ".Op Fl k Ar kookfile"
1215 .Op Fl k Ar kookfile
1216 .It Li ".Op Fl k Ar kookfile ,"
1217 .Op Fl k Ar kookfile ,
1218 .It Li ".Op Ar objfil Op Ar corfil"
1219 .Op Ar objfil Op Ar corfil
1220 .It Li ".Op Fl c Ar objfil Op Ar corfil ,"
1221 .Op Fl c Ar objfil Op Ar corfil ,
1222 .It Li \&.Op word1 word2
1230 .Bd -literal -offset indent
1232 \&.Op \&Fl k \&Ar kilobytes
1233 \&.Op \&Fl i \&Ar interval
1234 \&.Op \&Fl c \&Ar count
1240 .Op Fl k Ar kilobytes
1241 .Op Fl i Ar interval
1254 マクロはパス名もしくはファイル名をフォーマットします。
1256 .Dl 使い方: .Pa pathname \*(Pu
1257 .Bl -tag -width "\&.Pa /tmp/fooXXXXX ) ." -compact -offset 14n
1258 .It Li \&.Pa /usr/share
1260 .It Li \&.Pa /tmp/fooXXXXX\ )\ .
1261 .Pa /tmp/fooXXXXX ) .
1269 .Dl 使い方: .Va variable ... \*(Pu
1270 .Bl -tag -width "\&.Va char s ] ) ) ," -compact -offset 14n
1273 .It Li \&.Va settimer ,
1275 .It Li \&.Va int\ *prt\ )\ :
1277 .It Li \&.Va char\ s\ ]\ )\ )\ ,
1287 マクロは最初の引数にマニュアルページの名称を取り、
1288 もしあれば次の引数にセクションのページ数か句読点を取ります。
1289 すべての残りの引数は句読点と見なされます。
1291 .Dl 使い方: .Xr man_page [1,...,8] \*(Pu
1292 .Bl -tag -width "\&.Xr mdoc 7 ) ) ," -compact -offset 14n
1295 .It Li \&.Xr mdoc\ ,
1299 .It Li \&.Xr mdoc 7\ )\ )\ ,
1309 .Bd -literal -offset indent -compact
1310 使い方: .At [v6 | v7 | 32v | V.1 | V.4] ... \*(Pu
1312 .Bl -tag -width "\&.At v6 ) ," -compact -offset 14n
1325 最大 2 つまでの引数を取ることができます。
1327 .Dl 使い方: .Bx [Version/release] ... \*(Pu
1328 .Bl -tag -width "\&.Bx 4.3 ) ," -compact -offset 14n
1338 .Bd -literal -offset indent -compact
1339 使い方: .Fx Version.release ... \*(Pu
1341 .Bl -tag -width "\&.Fx 2.2 ) ," -compact -offset 14n
1352 最大 2 つまでの引数を取ることができます。
1354 .Dl 使い方: .Ux ... \*(Pu
1355 .Bl -tag -width "\&.Ux 4.3 ) ," -compact -offset 14n
1364 1 つ以上の文字列が引用符や括弧のような文字のペアで囲まれている
1366 クォートと囲いという用語はこの文書を通して同じ意味で使われます。
1367 ほとんどの 1 行の囲いマクロはクォート (quote) のヒントとするために、
1370 で終了しますが、いくつかの例外があります。
1371 各々の囲いマクロに対し、開始マクロと終了マクロのペアもあり、
1377 これらは 1 行以上のテキストに渡って使うことができますが、
1379 その中では 1 行形式のクォートマクロのみ使用することができます。
1382 .Bd -filled -offset indent
1383 .Bl -column "quote " "close " "open " "Enclose Stringx(in XX) " XXstringXX
1384 .Em "クォート 終了 開始 機能 結果"
1385 \&.Aq .Ac .Ao カギ括弧による囲い <文字列>
1386 \&.Bq .Bc .Bo 角括弧による囲い [文字列]
1387 \&.Dq .Dc .Do 二重引用符 ``文字列''
1388 .Ec .Eo 囲い文字列 (XXによる) XX文字列XX
1389 \&.Pq .Pc .Po 括弧による囲い (文字列)
1390 \&.Ql クォートされたリテラル `st' or 文字列
1391 \&.Qq .Qc .Qo まっすぐな二重引用符 "文字列"
1392 \&.Sq .Sc .So 一重引用符 `文字列'
1396 下記の不正なマクロを除き、すべてのクォートマクロは解析され、呼び出し
1397 可能です。句読点がひとつずつ置かれていて、スペースで区切られていれば、
1398 すべてのクォートマクロは句読点を適切に扱います。クォートマクロは開く
1399 句読点、閉じる句読点(訳注: 句読点には括弧なども含みます) を調べ、
1400 それが囲む文字列より前か後かを決めます。これによって、ある程度の入れ子
1402 .Bl -tag -width xxx,xxxx
1403 .It Li \&.Ec , \&.Eo
1404 これらのマクロは各々開始および終了の文字列を最初の引数に取ります。
1417 場合は、アイテムの幅が固定幅文字 3 つ分より狭い場合にのみクォートされま
1418 す。これはリテラル (固定幅) のフォントの変更があまり気づかれないもので
1419 あるため、短い文字列を良く見えるようにするためです。
1421 プレフィックスマクロは呼び出し可能ではありませんが、解析されます。
1422 .Bl -tag -width (namexx -offset indent
1423 .It Li ".Pf ( Fa name2"
1430 (空白なし) マクロはサフィックス機能と同様の作用があります。
1435 .Bl -tag -width "\&.Aq Pa ctype.h ) ,xxxxxxxx" -compact -offset indent
1438 .It Li \&.Aq \&Ar ctype.h\ )\ ,
1442 .It Li \&.Bq \&Em Greek \&, French \&.
1443 .Bq Em Greek , French .
1446 .It Li ".Dq string abc ."
1448 .It Li ".Dq \'^[A-Z]\'"
1450 .It Li "\&.Ql man mdoc"
1454 .It Li "\&.Qq string ) ,"
1456 .It Li "\&.Qq string Ns ),"
1460 .It Li "\&.Sq string"
1464 囲いマクロの入れ子についての良い例については、
1468 このマクロは上でリストされているような囲いマクロと同じベースの上に
1479 .Ss no\-op もしくは通常テキストマクロ
1481 マクロはマクロコマンド行において、コンテントマクロの構文
1488 マクロはマクロ間での不要な空白を除去します。
1489 これはフラグと引数の間に空白を含まない古いスタイルの引数リストを使う
1491 .Bl -tag -width "\&.Op Fl I Ns Ar directoryxx" -offset indent
1492 .It Li ".Op Fl I Ns Ar directory"
1494 .Op Fl I Ns Ar directory
1508 マクロは同一文書内でのセクションのヘッダへの参照を
1509 指定します。これは解析され、呼び出し可能です。
1511 .Bl -tag -width "Li \&.Sx FILES" -offset 14n
1516 以下のマクロは多少なりとも参考文献を扱えるようにと意図したものです。
1517 これらのマクロは、せいぜい参照スタイルの参考文献のサブセットを手動で
1520 .Bl -tag -width 6n -offset indent -compact
1523 改行を挿入してから、参考文献の終了マクロが読み込まれるまで
1528 参考文献の作者名。1 回の呼び出しにつき、作者名をひとつ指定する。
1553 呼び出し側に戻る商標名マクロだけは解析されます。
1556 .Xr troff Ns / Ns Xr ditroff
1566 .Dl 使い方: .Rv [-std function]
1568 .Ql \&.Rv -std atexit
1571 .\" fake section 3 to avoid error message from Rv
1574 .\" and back to 7 again
1580 オプションはセクション 2 と 3 のマニュアルページでのみ有効です。
1582 商標名マクロは一般的に長さが 2 文字を越えるすべてが大文字の単語用に
1585 .Dl 使い方: .Tn symbol ... \*(Pu
1586 .Bl -tag -width "\&.Tn ASCII" -compact -offset 14n
1594 マクロは解析され、他のマクロから呼び出し可能です。
1599 マクロでマクロの境界における引数リストを
1603 が 1 行中に指定されていることを前提としているマクロの中では行に渡って
1606 以下に空白モードマクロをスペーシングをオフにするために
1610 .Bd -literal -offset indent
1612 \&.It Xo Sy I Ar operation
1613 \&.No \een Ar count No \een
1619 .Bd -filled -offset indent
1620 .Bl -tag -width flag -compact
1622 .It Xo Sy I Ar operation
1623 .No \en Ar count No \en
1630 .Bd -literal -offset indent
1632 \&.It Cm S No \&/ Ar old_pattern Xo
1633 \&.No \&/ Ar new_pattern
1640 .Bd -filled -offset indent
1641 .Bl -tag -width flag -compact
1643 .It Cm S No \&/ Ar old_pattern Xo
1644 .No \&/ Ar new_pattern
1655 .Bd -literal -offset indent
1658 \&.Oo \e&! Oc Ns Ar variable
1659 \&.Op Ar operator variable ...
1664 .Bd -filled -offset indent
1665 .Bl -tag -width flag -compact
1668 .Oo \&! Oc Ns Ar variable
1669 .Op Ar operator variable ...
1680 拡張マクロが使われることはあまりありません。使われるとすれば、リスト
1681 項目の引数リストを拡張する場合です。残念なことに、これが拡張マクロが
1682 最も懲り性であるところでもあります。最初の 2 つの例では、スペーシングは
1683 オフになっています。3 番目では、ある箇所にはスペーシングを入れることが
1684 望ましいのですが、出力全体に入れたいわけではありません。そのような状況
1685 でこれらのマクロが適切に動作するためには、
1689 マクロが 3 番目の例にあるように指定されていることを確認してください。
1694 置かれると、スペーシングがどうなるかは予測不可能です。
1697 (空白なしマクロ) は行中の最初もしくは最後の
1701 マニュアルページ (実際のページでは約 1500 ページ) のうち 15 の
1707 以下にリストされている、最初の 3 つのセクションヘッダマクロ
1709 はすべての man ページで必須のものです。
1710 残りのセクションヘッダはマニュアルページの作者の裁量において、
1713 マクロは 9 つまでの引数を取ることができます。
1714 これは解析されますが、呼び出し不可能です。
1715 .Bl -tag -width "\&.Sh SYNOPSIS"
1719 これが指定されていないと、ヘッダとフッタ、それにデフォルトの
1720 ページレイアウトが設定されず、結果はかなり好ましくないものになるでしょう。
1722 セクションは最低 3 つの項目からなります。
1726 なります。2 番目のものは名称説明マクロ
1729 サブジェクト名を 3 つめの項目、すなわちその名称の説明と分離します。
1730 説明に割り当てられるスペースは小さいものですので、
1731 できるだけ簡潔で分かりやすいものでなければなりません。
1734 (SYNOPSIS) セクションはその man ページのサブジェクト
1735 となっている項目の典型的な使用法を説明します。
1750 はセクション 2 と 3 のマニュアルページに
1751 おいて必須のもので、コマンドと一般名称マクロ
1754 セクション 1, 5, 6, 7, 8 で必須の項目です。
1760 コンフィギュレーションデバイス使用法マクロ
1763 その他のいくつかのマクロが下に示すような書式行を生成するために必要な
1767 .Bd -filled -offset indent
1777 .Dl \&.Op \&Fl benstuv
1791 .Dl ".Op Fl a | Fl b"
1795 は通常 \*(Ba を特別のオペレータとして
1796 解釈します。この他で \*(Ba が使える場合については
1802 (DESCRIPTION) セクションでの最初のテキストは、
1803 ほとんどの場合ではそのコマンド、関数もしくはファイルについての短い
1804 段落で、オプションの構文リストとそれぞれの説明がそれに続きます。
1821 のセクションヘッダはマニュアルページの好ましい
1822 レイアウトの一部であり、一貫性を保つために適切に使われなければ
1823 なりません。これらは使われる順番にリストされています。
1824 .Bl -tag -width SYNOPSIS
1827 (ENVIRONMENT) セクションは関連する環境変数を明らかにし、
1830 使用例、実行例を作成するには様々な方法があります。
1835 man ページのサブジェクトによって使用されるか生成されるファイルで、
1843 (SEE ALSO) セクションには、その man ページの題材に
1844 関する資料への参照と他の関連する man ページへのクロスリファレンスが
1851 セクション番号順に並べ、セクション中ではカンマで区切って
1852 アルファベット順に並べなければなりません。以下に例を示します。
1867 のような特定の実装によるものであれば、ここで記述します。
1868 コマンドがどの規格にも基づいていなければ、その歴史は
1870 (HISTORY)のセクションで説明されなければなりません。
1873 このセクションでその歴史の概要が説明されるべきです。
1875 クレジットが必要であれば、ここで入れます。
1877 コマンドからの診断はこのセクションに入れます。
1879 特定のエラーハンドリング、特にライブラリ関数
1880 (man ページのセクション 2, 3, 9) でのエラーハンドリングは、ここで説明します。
1882 マクロが errno を記述するために使われます。
1890 たとえば、このセクションは以下のように設定されています。
1891 .Bd -literal -offset 14n
1898 段落コマンドは必要な場合に行スペースを指定するために使われます。
1908 マクロは -compact フラグが指定されていなければ、
1911 .\" This worked with version one, need to redo for version three
1914 .\" .Cw (ax+bx+c) \ is\ produced\ by\ \&
1915 .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
1932 .\" .Em is produced by
1948 .\" This example shows the same equation in a different format.
1952 .\" signs were forced with
1956 .\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
1957 .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
1968 .\" .Li \&.Cx \e\ +\e\ \e&
1979 .\" .Em is produced by
1987 .\" .Li \&.Cx \e\ +\e\ \e&
1998 .\" The incantation below was
2004 .\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
2006 .\" .Li \&.Cx Op Sy ?/
2016 .\" .Em is produced by
2018 .\" .Li \&.Ar \e\ b1 e1 f1
2030 現在実装されているキープは単語に対するものだけです。
2041 あり、これはオプションの途中で改行が入らないようにするのに便利です。
2048 ように使われています。 (実際には、オプションマクロがこの目的で使われて
2049 いましたが、オプションが行中にわたって散らばってしまうと一般的に見栄え
2053 行なう (宗教的な) 決定がなされてから、オプションマクロをこの目的で
2054 使わないようになりました。キープマクロについてはもっと機能を向上する
2057 オプションを追加していく必要があります。)
2059 ディスプレイには 5 つのタイプがあります。
2072 リテラルブロック、フィルブロックおよび凸凹ブロックです。
2074 .Bl -tag -width \&.Dlxx
2076 (D-いち) インデントされたテキストを 1 行表示します。
2077 このマクロは解析されますが、呼び出し不可能です。
2082 .Li \&.Dl Fl ldghfstru
2088 マクロの例は本ファイルの中に渡って使われています。
2089 これによって 1 行のテキストのインデント (表示) が可能になります。
2090 このマクロは解析され、他のマクロを認識することができますが、
2091 デフォルトのフォントは固定幅 (リテラル) にセットされています。
2094 .Dl % ls -ldg /usr/local/bin
2097 .Li \&.Dl % ls -ldg /usr/local/bin .
2105 ディスプレイはディスプレイ内およびリスト内で入れ子にすることができます。
2109 .Dl ".Bd ディスプレイタイプ [-offset オフセット値] [-compact]"
2111 ディスプレイタイプは以下の 4 つのタイプの内の 1 つでなければならず、
2114 のオフセット値を指定することができます。
2117 .Bl -tag -width "file file_name " -compact
2119 テキストのブロックをタイプされた通りに表示します。
2120 右マージン (と左マージン) のエッジは左に不揃いに寄せられます。
2122 フィル (フォーマット) されたブロックを表示します。
2123 テキストのブロックがフォーマットされます
2124 (エッジは左非揃えではなく、フィルされます)。
2126 リテラルなブロックを表示します。ソースコードや、単純にタブもしくは
2127 スペースで整えられたテキストで便利です。
2128 .It Fl file Ar ファイル名
2130 フラグに続く名称のファイルが読み込まれ、表示されます。表示
2131 はリテラルなモードで行われ、タブは定幅文字 8 つ分に固定されますが、
2133 .Xr troff/ Ns Nm \-mdoc
2135 .It Fl offset Ar string
2137 が以下の文字列のいずれかとともに指定されていると、
2138 その文字列は次のテキストのブロックのインデントのレベルを示すものとして
2141 .Bl -tag -width indent-two -compact
2148 ブロックを中央揃えにします。残念ながら現時点では、
2149 単にブロックの左側を仮想的な中央マージンに揃えるだけです。
2151 デフォルトのインデント値もしくはタブの分だけインデントします。
2155 これら 2 つのタイプのディスプレイを使った場合、
2157 このインデントは通常 6n か約 2/3 インチ (定幅文字 6 つ分) です。
2159 デフォルトのインデント値の 2 倍分インデントします。
2161 これはブロックをページの右端から約 2 インチ離して
2163 揃えします。このマクロはちゃんと動作する必要があるのですが、
2165 ではまったくちゃんと動作してくれていません。
2171 マニュアルページのテキストの見栄えを変更するマクロは 5 つあります。
2172 .Bl -tag -width \&.Emxx
2177 強調の場合、通常イタリック体のフォントが使われます。
2179 .Dl 使い方: .Em argument ... \*(Pu
2180 .Bl -tag -width "\&.Em vide infra ) ) ," -compact -offset 14n
2181 .It Li ".Em does not"
2183 .It Li ".Em exceed 1024 ."
2185 .It Li ".Em vide infra ) ) ,"
2196 は特殊文字や変数定数、その他タイプされた
2197 通りに表示する必要があるものに使用することができます。
2199 .Dl 使い方: .Li argument ... \*(Pu
2200 .Bl -tag -width "\&.Li cntrl-D ) ," -compact -offset 14n
2203 .It Li \&.Li M1 M2 M3\ ;
2205 .It Li \&.Li cntrl-D\ )\ ,
2207 .It Li \&.Li 1024\ ...
2214 シンボリック体強調マクロはシンボリックの意味でも
2218 .Dl 使い方: .Sy symbol ... \*(Pu
2219 .Bl -tag -width "\&.Sy Important Noticex" -compact -offset 14n
2220 .It Li \&.Sy Important Notice
2221 .Sy Important Notice
2236 フォントモードは他のフォントモードと入れ子にすることができます。
2242 font-mode は以下の 3 つのタイプのうちのいずれかでなければなりません。
2244 .Bl -tag -width "file file_name " -compact
2245 .It Sy \&Em | Fl emphasis
2248 マクロがテキストブロック全体に使われているのと同様です。
2249 .It Sy \&Li | Fl literal
2252 マクロがテキストブロック全体に使われているのと同様です。
2253 .It Sy \&Sy | Fl symbolic
2256 マクロがテキストブロック全体に使われているのと同様です。
2264 で開始されるリストにはいくつかのタイプが
2270 マクロで終了しなければなりません。リストはリスト自身や
2271 ディスプレイの中で入れ子にすることができます。列はリストの中で使うこと
2272 ができますが、リストが列の中で使えるかどうかは検証されていません。
2274 さらに、タグの幅、リストのオフセット、コンパクトさ(項目間の空白行が
2275 許されているかどうか) のような、いくつかのリストの属性を指定することが
2276 できます。本ドキュメントのほとんどはタグ
2279 フォーマットされています。各種リストタイプは、調子を変えるために
2286 tag リストで構成されたページを何ページも読んだ後には幾分変に見える
2295 これら 3 つは最も単純なリストのタイプです。
2301 マクロによってのみ構成される行で指定されます。
2302 例として、簡単な列挙リストのソーステキストは、このようになります。
2303 .Bd -literal -offset indent-two
2304 \&.Bl -enum -compact
2317 .Bl -enum -offset indent-two -compact
2326 簡単な bullet リスト構成の例を示します。
2327 .Bd -literal -offset indent-two
2328 \&.Bl -bullet -compact
2337 .Bl -bullet -offset indent-two -compact
2356 では、次のテキストへそのラベルを挿入します。
2358 では、次のテキストをラベルの位置へインデントします。
2360 (オーバーハング) では、次のテキストをラベルの位置に
2363 では、タグつきテキストの形式にします。ちなみに上のリストは
2367 マクロは inset, hang, tag のリストタイプでのみ解析され、
2368 呼び出し不可能です。以下に inset ラベルの例を示します。
2370 .Bl -inset -offset indent
2372 tag リスト (tag 段落とも呼ばれる) は、
2373 Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
2375 診断リストはセクション 4 の診断リストを生成するもので、
2376 呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
2380 ohang ラベルはスペースに制限がある時に便利です。
2382 inset ラベルは段落のブロックを制御するのに便利で、
2384 マニュアルを他の形式に変換する時に役立ちます。
2387 上の例を生成したソーステキストはこうなっています。
2388 .Bd -literal -offset indent
2389 \&.Bl -inset -offset indent
2391 \&tag リスト (tag 段落とも呼ばれる) は、
2392 \&Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
2394 \&診断リストはセクション 4 の診断リストを生成するもので、
2395 \&呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
2399 \&ohang ラベルはスペースに制限がある時に便利です。
2401 \&inset ラベルは段落のブロックを制御するのに便利で、
2403 \&マニュアルを他の形式に変換する時に役立ちます。
2407 以下は 2 つの項目を持つ hang リストです。
2408 .Bl -hang -offset indent
2411 ラベルは tag リストと同じようになります。
2412 .It Em 長い hang リストラベル
2417 これを生成している元のテキストは以下の通りです。
2418 .Bd -literal -offset indent
2419 \&.Bl -hang -offset indent
2421 \&ラベルがラベルの幅より小さいときには、
2422 \&ラベルは tag リストと同じようになります。
2423 \&.It Em 長い hang リストラベル
2424 \&は、tag 段落のラベルとは異なり、
2429 タグ幅を制御するためのオプションの幅指定を使ったタグつきリストは
2432 .Bl -tag -width PAGEIN -compact -offset indent
2434 プロセスが sleep している時間 (ブロックされた秒数)
2436 そのプロセスによるコアにロードされていないページへの参照による
2441 プロセスの所有者の数字表記によるユーザID
2443 親プロセスの数字表記によるID、プロセスの優先度
2444 (割り込み不可のウエイトであるときには非正値)
2448 .Bd -literal -offset indent
2449 \&.Bl -tag -width "PAGEIN" -compact -offset indent
2451 \&プロセスが sleep している時間 (ブロックされた秒数)
2453 \&そのプロセスによるコアにロードされていないページへの参照によるディスク
2457 \&プロセスの所有者の数字表記によるユーザID
2459 \&親プロセスの数字表記によるID、プロセスの優先度
2460 \&(割り込み不可のウエイトであるときには非正値)
2464 幅指定として以下のものを使うことができます。
2465 .Bl -tag -width Ar -offset indent
2466 .It Fl width Ar \&Fl
2467 そのフラグでのデフォルトの幅を指定します。すべての呼び出し可能なマクロ
2468 は各々デフォルトの幅の値を持っています。現在、
2471 文字 10 個分、もしくは約 5/6 インチとなっています。
2473 定幅文字 24 個分の幅、もしくは約 2 インチの幅をセットします。
2477 .It Fl width Ar ENAMETOOLONG
2478 指定された文字列の固定長に幅をセットします。
2479 .It Fl width Ar "\*qint mkfifo\*q"
2480 これも、指定された文字列の固定長に幅をセットします。
2483 タグつきリストタイプで幅が指定されていないと、
2486 起動された時に適した幅を決定することが試みられます。
2489 最初の引数が呼び出し可能なマクロであれば、そのマクロのデフォルトの幅が
2490 そのマクロ名が幅として指定されたように使用されます。しかしながら、その
2491 リスト中に他の項目が別の呼び出し可能なマクロ名で与えられていると、
2492 新しく入れ子となったリストとして処理されます。
2494 以下の文字列はあらかじめ定義されているものであり、troff の文字列解釈
2505 解釈シーケンスはテキストのどこでも使うことができます。
2507 .Bl -column "String " "Nroff " "Troff " -offset indent
2508 .It Sy "文字列 Nroff Troff"
2509 .It Li <= Ta \&<\&= Ta \*(<=
2510 .It Li >= Ta \&>\&= Ta \*(>=
2511 .It Li Rq Ta '' Ta \*(Rq
2512 .It Li Lq Ta `` Ta \*(Lq
2513 .It Li ua Ta ^ Ta \*(ua
2514 .It Li aa Ta ' Ta \*(aa
2515 .It Li ga Ta \` Ta \*(ga
2516 .\" .It Li "sL" Ta ` Ta \*(sL
2517 .\" .It Li "sR" Ta ' Ta \*(sR
2518 .It Li q Ta \(dq Ta \*q
2519 .It Li Pi Ta pi Ta \*(Pi
2520 .It Li Ne Ta != Ta \*(Ne
2521 .It Li Le Ta <= Ta \*(Le
2522 .It Li Ge Ta >= Ta \*(Ge
2523 .It Li Lt Ta < Ta \*(Gt
2524 .It Li Gt Ta > Ta \*(Lt
2525 .It Li Pm Ta +- Ta \*(Pm
2526 .It Li If Ta infinity Ta \*(If
2527 .It Li Na Ta \fINaN\fP Ta \*(Na
2528 .It Li Ba Ta \&| Ta \*(Ba
2539 は限られたデバッグ機能しか持っていませんが、
2540 引数名と内部レジスタやマクロ名との衝突のような
2541 潜在的なエラーを検出するのに役立ちます。 (A って何?)
2545 1 文字か 2 文字の名称がついています。
2553 のように2 文字からなる <大文字><小文字> の形式か、
2555 のように <小文字><大文字> の形式か、
2557 のように <大文字もしくは小文字><数字>
2562 それらすべては小文字 2 文字か、ドットに文字もしくはメタ文字が続く形式を取ります。
2563 紹介例の 1 つに、エスケープシーケンス
2566 解釈させない方法がありました。これは内部レジスタ名にも有効です。
2568 .\" Every callable macro name has a corresponding register
2569 .\" of the same name (<upper_case><lower_case>).
2570 .\" There are also specific registers which have
2571 .\" been used for stacks and arrays and are listed in the
2573 .\" .Bd -ragged -offset 4n
2574 .\" [A-Z][a-z] registers corresponding to macro names (example ``Ar'')
2575 .\" [a-z][A-Z] registers corresponding to macro names (example ``aR'')
2576 .\" C[0-9] argument types (example C1)
2577 .\" O[0-9] offset stack (displays)
2578 .\" h[0-9] horizontal spacing stack (lists)
2579 .\" o[0-9] offset (stack) (lists)
2580 .\" t[0-9] tag stack (lists)
2581 .\" v[0-9] vertical spacing stack (lists)
2582 .\" w[0-9] width tag/label stack
2585 エスケープされていないレジスタ名が引数リストに指定されると、
2587 一般的には、テキストのかなり大きな部分が出力されるべきところに
2588 出力されないとか、リストのタグのような小さな文字列が消えてしまうとか、
2589 引数リストの中の引数のタイプが間違って解釈されるとかいうことが、起こり得ます。
2590 きっとあなたのお母さんは、あなたにこんな面倒なことを覚えるようにとは
2592 そこで、与えられた引数が有効か無効かを判断する方法があります。
2596 (デバッグ) マクロによってほとんどのマクロ
2597 の引数リストがどう解釈されるかを表示することができます。
2599 (段落) マクロのようなマクロはデバッグ情報を含んでいません。呼び出し可能
2600 なマクロはすべてデバッグ情報を含んでおり、疑いがある場合はいつでも
2602 マクロをオンにすることを強くお勧めします。
2604 .Dl 使い方: \&.Db [on | off]
2606 以下の例では、問題が故意に発生するようにされた部分の上と下で
2613 .Bd -literal -offset indent
2615 \&.Op Fl aC Ar file )
2620 .Bd -literal -offset indent
2622 DEBUG(argv) MACRO: `.Op' Line #: 2
2623 Argc: 1 Argv: `Fl' Length: 2
2624 Space: `' Class: Executable
2625 Argc: 2 Argv: `aC' Length: 2
2626 Space: `' Class: Executable
2627 Argc: 3 Argv: `Ar' Length: 2
2628 Space: `' Class: Executable
2629 Argc: 4 Argv: `file' Length: 4
2630 Space: ` ' Class: String
2631 Argc: 5 Argv: `)' Length: 1
2632 Space: ` ' Class: Closing Punctuation or suffix
2633 MACRO REQUEST: .Op Fl aC Ar file )
2637 この情報の最初の行では呼び出されているマクロの名称が出力されています。
2640 とそれが現れた行番号が表示されています。
2642 (特にテキストが他のファイルからインクルードされている場合)、
2644 ファイルが 1 つだけの場合には正しい行番号が出力されます。
2648 出力されています。引数の長さが 2 文字であれば、
2650 (ゼロでない値を含むすべてのレジスタは実行可能なように見えます)
2652 3 番目の行ではそのクラスで指定されているスペースとクラスタイプが
2654 ここでの問題は引数 aC が実行不可能でなければならないことです。
2655 クラスの 4 つのタイプは文字列、実行可能、閉じる句読点、開く句読点です。
2656 最後の行では引数リスト全体が読み込まれた通りに表示されています。
2660 .Bd -literal -offset indent
2662 \&.Em An escaped \e&aC
2665 .Bd -literal -offset indent
2667 DEBUG(fargv) MACRO: `.Em' Line #: 2
2668 Argc: 1 Argv: `An' Length: 2
2669 Space: ` ' Class: String
2670 Argc: 2 Argv: `escaped' Length: 7
2671 Space: ` ' Class: String
2672 Argc: 3 Argv: `aC' Length: 2
2673 Space: ` ' Class: String
2674 MACRO REQUEST: .Em An escaped &aC
2682 は先の例と同様に長さ 2 と表示されています。
2688 この他の診断は使用方法を報告するものであり、
2690 .Sh GROFF, TROFF, NROFF
2700 されるヘッダとフッタは禁止されており、マニュアルをオンラインで効率良く
2701 見ることができるようになっています。現在の所、
2706 はページ内容の無いファイル末の残りの部分まで
2707 出力します。改ページを禁止することによって
2710 ハードコピーには適さないものとなっています。サイト依存のスタイル
2712 .Pa /usr/src/share/tmac/doc-nroff
2716 の名称を持つレジスタが古いスタイルの振る舞い
2719 .Bl -tag -width /usr/share/man0/template.doc -compact
2720 .It Pa /usr/share/tmac/doc.tmac
2722 .It Pa /usr/share/misc/mdoc.template
2724 .It Pa /usr/share/examples/mdoc/*
2728 フラグ引き数のダッシュが意図せずハイフンにより折り返しになるバグは
2732 意図しない動作 (ハイフンでの改行) が起こることがある。
2734 あらかじめ定義されている文字列は文書において宣言されていません。
2736 セクション 3f はヘッダルーチンには追加されていません。
2745 は分割されるのを防止するために、行の長さが短すぎないか
2746 どうかをチェックする必要があります。ときどき、最後の括弧が分割される
2747 ことがあり、行がフィルモードであるときには全くおかしな結果になること
2750 nroff 使用時に、(最初のヘッダとフッタ以外の) 改ページ時のヘッダと
2751 フッタの挿入を行わないようにするのに使用される命令によって、
2752 ときどき見るに耐えない部分的な行詰め (や空行) がページの末尾に
2755 .\" Note what happens if the parameter list overlaps a newline
2757 .\" to make sure a line boundary is crossed:
2759 .\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[]
2762 .\" produces, nudge nudge,
2763 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
2764 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
2766 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] .
2768 .\" If double quotes are used, for example:
2770 .\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q
2773 .\" produces, nudge nudge,
2774 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
2776 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
2778 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" .
2780 .\" Not a pretty sight...
2781 .\" In a paragraph, a long parameter containing unpaddable spaces as
2782 .\" in the former example will cause
2784 .\" to break the line and spread
2785 .\" the remaining words out.
2786 .\" The latter example will adjust nicely to
2787 .\" justified margins, but may break in between an argument and its
2791 .\" the right margin adjustment is normally ragged and the problem is
2793 リストマクロとディスプレイマクロはキープを行いませんが、
2804 の一部である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。