1 .\" Copyright (c) 1990, 1993
2 .\" The Regents of the University of California. All rights reserved.
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\" notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\" notice, this list of conditions and the following disclaimer in the
11 .\" documentation and/or other materials provided with the distribution.
12 .\" 3. All advertising materials mentioning features or use of this software
13 .\" must display the following acknowledgement:
14 .\" This product includes software developed by the University of
15 .\" California, Berkeley and its contributors.
16 .\" 4. Neither the name of the University nor the names of its contributors
17 .\" may be used to endorse or promote products derived from this software
18 .\" without specific prior written permission.
20 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
21 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23 .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
24 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
26 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
27 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
28 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
29 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
32 .\" @(#)mdoc.samples.7 8.2 (Berkeley) 12/30/93
33 .\" %FreeBSD: src/share/man/man7/mdoc.samples.7,v 1.28.2.9 2001/03/13 17:54:18 ru Exp %
35 .\" This tutorial sampler invokes every macro in the package several
36 .\" times and is guaranteed to give a worst case performance
37 .\" for an already extremely slow package.
39 .\" jpman %Id: mdoc.samples.7,v 1.4 1999/01/21 17:52:58 kuma Stab %
41 .\" WORD: display 表示内容
42 .\" WORD: angle bracket カギ括弧 <>
44 .\" WORD: display ディスプレイ
45 .\" WORD: literal リテラル
46 .\" WORD: content macro コンテントマクロ
47 .\" WORD: command modifier コマンド修飾子
48 .\" WORD: enclosure 囲い
49 .\" WORD: quoting クォート
51 .\" WORD: block ragged 凹凸ブロック
52 .\" WORD: constant width character 定幅文字
63 マニュアルを書くためのチュートリアルサンプル
76 マニュアルを書くためのチュートリアルサンプルです。
79 パッケージはフォントの操作や他の写植方法の詳細は個々の作者に任せた
83 タイトル、セクションのヘッダ、ディスプレイ、リストのマクロからなる
87 さらにマニュアル領域および一般テキスト領域の 2 つの領域があります。
88 一般テキスト領域はテキストの一部をクォートしたり、強調するといったような作業を
92 の関連ファイルを記述するための日常使用されるインフォーマルな言葉の
93 サブセットであるマクロとして定義されています。
94 マニュアル領域のマクロはコマンド名、コマンド行の引数とオプション、
95 関数名、関数のパラメータ、パス名、変数名、他のマニュアルページへの
97 これらの領域の項目は作者とマニュアルページの将来のユーザの両者に
99 マニュアル間で一貫性を高めることによって将来のドキュメントツールへの
102 マニュアルのエントリは、実際の長さに関わらず、
105 のマニュアルページを通して、単純に man ページとして参照されています。
107 通常チュートリアルドキュメントは、そこに示された題材をすぐに使いたい時
108 に読むものですので、このドキュメントのユーザはせっかちな人だと
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 "ヘッダファイル (ソースコードを含む)"
162 .Bl -tag -width flag -compact -offset indent
165 .It "FreeBSD/NetBSD/OpenBSD マクロ"
168 .Bl -tag -width flag -compact -offset indent
169 .It "カギ括弧 <> によるクォート/囲い"
170 .It "角括弧 [] によるクォート/囲い"
172 .It "括弧 () によるクォート/囲い"
173 .It "一重引用符によるクォート/囲い"
176 .It "no\-op もしくは通常テキストマクロ"
178 .It "セクションのクロスリファレンス"
180 .It "戻り値 (セクション 2 および 3 のみ)"
186 .Bl -tag -width flag -compact -offset indent
191 .It "フォントモード (強調、リテラル、およびシンボリック)"
199 .Tn "GROFF、TROFF、および NROFF を使用したフォーマッティング"
205 パッケージは man ページを記述するプロセスを簡単にすることを
210 のゴタゴタした詳細を学ぶ必要がないのが理想ですが、
211 いくつか片付けるべき避けられない制限事項があります。
220 を行頭に置き、それに続けて 2 文字からなるマクロの名称を指定することによって
222 引数はマクロの後にスペースで区切って指定することができます。
225 にそれに続く 2 文字をマクロ名として解釈するよう指示しています。
235 は文字通りスペース幅が 0 として解釈され、出力には現れません。
239 マクロは引数を 9 つまで取ることができ、それ以上指定された引数は無視されます。
241 でのほとんどのマクロは 9 つの引数を取ることができ、
242 限られた場合にのみ引数は次の行に続けて指定することができます (
245 いくつかのマクロは引用符に囲まれた引数を扱うことができます (下の
250 での一般テキスト領域とマニュアル領域のほとんどのマクロは特別であり、
251 その引数のリストは呼び出し可能なマクロ名として
254 これは一般テキスト領域またはマニュアル領域のマクロ名に一致し、
255 呼び出し可能であると判断された引数リストの中の引数は、
256 実行されるか、それが処理される時に呼び出されることを意味しています。
261 このようにしてたくさんのマクロを入れ子にすることができます。
270 、オプションのフラグを引数とともに指定することができます。
271 .Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
274 .Li \&.Op \&Fl s \&Ar bytes
278 2 文字からなる文字列をマクロ名として解釈されないようにするには、
282 .Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
283 .It Op \&Fl s \&Ar bytes
285 .Li \&.Op \e&Fl s \e&Ar bytes
294 本ドキュメントと関連のクイックリファレンスマニュアル
297 引数リストが呼び出し可能な引数として解析されるマクロは「解析される」、
298 引数リストから呼び出されることができるマクロは「呼び出し可能」
301 のほとんどすべてのマクロは解析されるのですから、これは技術的には
303 ことですが、常にマクロを「呼び出し可能である」とか「他のマクロを
304 呼び出すことができる」と表現するのは面倒なことであるため、
305 「解析される」という用語が使われています。
307 ひとつ以上の空白文字を含む文字列をひとつの引数として指定したい場合が
309 これは 9 個を越える引数を指定できないという制限に対処したり、
310 引数のリストにある特有な配置をおこなうことが必要なマクロに引数を指定するような
314 では最初の引数は関数名であり、残りの引数が関数のパラメータであることが
317 の括弧で囲まれたパラメータリストにおける関数のパラメータの宣言の規定に
318 より、各パラメータは最低でも 2 語の文字列となります。
323 空白を含む引数を指定するには 2 通りの方法があります。
325 解析の前に個々の引数を再割り当てすることによって、
326 引用符の間に空白を含めて渡すのが最も便利な方法なのですが、
330 のすべてのマクロを実装するには処理速度およびメモリ使用量の点で
333 では高価な処理にはなりませんが、移植性のため、この方法は
334 空白を含めることが最も必要である以下のマクロだけに限っています。
336 .Bl -tag -width 4n -offset indent -compact
338 コンフィギュレーション宣言 (セクション 4 の
361 書籍もしくは定期刊行物の中の記事のタイトル
364 空白を含む文字列を渡すのに、固定空白、すなわち詰め込まれない空白文字
366 を使う方法があります。すなわち、空白の前にエスケープ文字
369 この方法はどのマクロでも使うことができますが、1 行を越える長さのテキストの
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"
393 .Dl Fn fetch char *str
397 パラメータのリストが改行の境界をまたぐ場合に何がおこるかについては、
402 は行末に空白文字があると混乱してしまうことがあります。
403 <空白><行末>の文字シーケンスからすべての空白文字を取り除くのは良い予防策です。
404 どうしても行末に空白文字をおく必要性が出てきた場合は、
421 とする) ことによって、バックスラッシュを残して扱うことができます。
424 .Pa /usr/share/misc/mdoc.template
425 の基本テンプレートを使って容易に作り上げることができます。
426 .Pa /usr/share/examples/mdoc
427 にはいくつかのサンプルの man ページが収められています。
430 .Bd -literal -offset indent
431 \&.\e" 以下の項目はすべての man ページで必要な項目です。
433 \&.Os オペレーティングシステム [バージョン/リリース]
434 \&.Dt ドキュメントタイトル [セクション番号] [ボリューム]
440 \&.\e" 以下の項目については、必要に応じてコメントをはずして使用してく
442 \&.\e" .Sh IMPLEMENTATION NOTES
443 \&.\e" この次の項目はセクション 2, 3, 9 でのみ必要な、関数の
445 \&.\e" .Sh RETURN VALUE
446 \&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
447 \&.\e" .Sh ENVIRONMENT
450 \&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
451 \&.\e" ((シェルへの)コマンドの戻り値と fprintf/stderr の型の診断
453 \&.\e" .Sh DIAGNOSTICS
454 \&.\e" .Sh COMPATIBILITY
455 \&.\e" 次の項目はセクション 2, 3, 9 でのみ必要な、エラーハンドリングと
465 このテンプレートにおける最初の項目はマクロ
466 .Pq Li \&.Dd , \&.Os , \&.Dt
468 man ページもしくは題材となっているソースの開発や変更のベースとなった
471 man ページタイトルをそのページが属するマニュアルのセクション番号とともに
473 これらのマクロはそのページを識別するものであり、後述の
477 テンプレート中の残りの項目はセクションのヘッダ
491 いくつかのコンテントマクロはページレイアウトマクロの説明に
492 使われていますので、ページレイアウトマクロの前にコンテントマクロについて
495 タイトルマクロはページ構造領域の最初の部分ですが、man ページを
496 前日に書き始めたいという人のために、最初に分けて記述されます。
497 3 つのヘッダマクロでドキュメントか man ページのタイトル、
498 オペレーティングシステム、および原著の日付を指定します。
499 これらのマクロはドキュメントの最初に一度だけ呼び出されるもので、
500 ヘッダとフッタを構成するためだけに使用されます。
502 .It Li \&.Dt ドキュメントタイトル セクション番号 [ボリューム]
503 ドキュメントタイトルは man ページの主題であり、troff の制限により
506 セクション番号は 1,\ ...,\ 9 となり、これが指定されると
507 ボリュームタイトルを省略してもかまいません。
510 では、次のセクション番号と解説について後述します:
512 .Bl -column SMM -offset indent -compact
513 .It Li 1 FreeBSD General Commands Manual
514 .It Li 2 FreeBSD System Calls Manaul
515 .It Li 3 FreeBSD Library Calls Manual
516 .It Li 4 FreeBSD Kernel Interfaces Manual
517 .It Li 5 FreeBSD File Formats Manual
518 .It Li 6 FreeBSD Games Manual
519 .It Li 7 FreeBSD Miscellaneous Information Manual
520 .It Li 8 FreeBSD System Manager's Manual
521 .It Li 9 FreeBSD Kernel Developers Guide
524 ボリュームタイトルは任意のものか、以下のうちいずれかになります。
526 .\" USD UNIX User's Supplementary Documents
528 .\" PS1 UNIX Programmer's Supplementary Documents
530 .Bl -column SMM -offset indent -compact
531 .It Li AMD UNIX Ancestral Manual Documents
532 .It Li SMM UNIX System Manager's Manual
533 .It Li URM UNIX Reference Manual
534 .It Li PRM UNIX Programmer's Manual
546 .\" MMI UNIX Manual Master Index
548 .\" CON UNIX Contributed Software Manual
550 .\" LOC UNIX Local Manual
551 .It Li \&.Os オペレーティングシステム リリース番号
552 オペレーティングシステムの名称には一般的な頭字語 (略称)
561 リリース番号は、例えば4.3, 4.3+Tahoe, V.3, V.4 というような各システム
563 認識されない引数はページのフッタ中に記述された通りに表示されます。
569 .Dl \&.Os FreeBSD 2.2
573 .Dl \&.Os CS Department
575 Berkeley でのデフォルトである、引数なしの
578 .Pa /usr/share/tmac/mdoc/doc-common
586 マクロがない場合は、ページの左下角はみにくくなるであろうことに
589 日付は次のようにフォーマルな形式で記述しなければなりません。
593 .Sh マニュアル領域および一般テキスト領域の紹介
595 マニュアル領域のマクロ名はコマンドやサブルーチン、それに関連ファイルを
596 説明するために使われている日常のインフォーマルな言葉から取られています。
597 この言葉と少し違うバリエーションのものが man ページを書く上での
598 3 つの異なった面を記述するのに使われます。
607 3 番目はコマンドを通常の言葉の感覚でユーザに示したものです。
608 これはすなわち、man ページのテキスト中でのコマンドの議論となります。
612 マクロはそれ自身、一種のコマンドとなっています。
613 troff コマンドは一般的に以下のような形式をとります。
614 .Bd -filled -offset indent
615 \&.Va argument1 argument2 ... argument9
619 はマクロコマンドもしくは要求を示しており、それに続くものは
621 2 番目のケースでは、コンテントマクロを使用する
627 .Bd -filled -offset indent
635 はコマンド名であり、角括弧で囲まれた文字列
639 引数で、これは角括弧で囲むことによってオプションであることを示しています。
648 上の例のフォーマットを行なったマクロは以下のものです。
649 .Bd -literal -offset indent
655 3 番目のケースでは、コマンドの説明や構文に上記の例の両方が使われ、
666 コマンド行の引数のリストはかなり長くなる場合もあります。
667 .Bl -tag -width make -offset indent
674 .Op Fl I Ar directory
677 .Op Ar variable=value
693 言葉での説明では、こういった詳細な記述が混乱を防いでくれますが、
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 でエスケープすることによって句読点文字の特別な意味を取り除くことができます。
769 はマクロ言語としての限界から、数学、論理学、もしくは以下の引用符の
770 集合のメンバを含んだ文字列を表現するのは困難です。
771 .Bd -literal -offset indent-two
772 \&{+,\-,/,*,\&%,<,>,<=,>=,=,==,&,`,',"}
776 が文字によって示唆されている操作もしくは評価を実際に行なっていることが、
779 でこれらをエスケープすることによって、これらの文字が予期せずに
783 において、その典型的な構文が示されています。
786 アドレスマクロは addr1[,addr2[,addr3]] の形式からなるアドレスを識別します。
788 .Dl 使い方: .Ad address ... \*(Pu
789 .Bl -tag -width ".Ad f1 , f2 , f3 :" -compact -offset 14n
792 .It Li \&.Ad addr1\ .
794 .It Li \&.Ad addr1\ , file2
796 .It Li \&.Ad f1\ , f2\ , f3\ :
798 .It Li \&.Ad addr\ )\ )\ ,
805 は他のマクロから呼び出し可能で解析されます。
808 マクロは文書化されている項目の作者の名前、もしくは実際の
809 マニュアルページの作者の名前を指定するために使われます。
810 名前の情報の後のすべての引数は句読点として扱われます。
812 .Dl 使い方: .An author_name \*(Pu
813 .Bl -tag -width ".An Joe Author ) ) ," -compact -offset 14n
814 .It Li \&.An Joe\ Author
816 .It Li \&.An Joe\ Author\ ,
818 .It Li \&.An Joe\ Author\ \&Aq\ nobody@FreeBSD.ORG
819 .An Joe Author Aq nobody@FreeBSD.ORG
820 .It Li \&.An Joe\ Author\ )\ )\ ,
832 要求は改行を引き起こし、各新規の名前がそれぞれの行に表示されます。
834 .Bd -literal -offset indent
839 それぞれの行に表示させる動作に戻したい場合は、
840 .Bd -literal -offset indent
847 はコマンド行の引数を参照する際に使用することができます。
849 .Dl 使い方: .Ar argument ... \*(Pu
850 .Bl -tag -width ".Ar file1 file2" -compact -offset 15n
855 .It Li \&.Ar file1\ .
857 .It Li \&.Ar file1 file2
859 .It Li \&.Ar f1 f2 f3\ :
861 .It Li \&.Ar file\ )\ )\ ,
871 .Ss コンフィギュレーション宣言 (セクション 4 のみ)
873 マクロはセクション 4 のマニュアルにおいて、デバイスインタフェースの
876 このマクロは引用符 (2 重引用符のみ) で囲まれた引数を取ることができます。
878 .Bl -tag -width "device le0 at scode?" -offset indent
879 .It Cd "device le0 at scode?"
881 .Ql ".Cd device le0 at scode?"
887 マクロがすべての引数の前にダッシュ文字を付けないことを除いて、
890 伝統的にフラグはダッシュ文字に引き続いて指定されますが、
891 いくつかのコマンドやコマンドのサブセットはこの方法を使っていません。
892 コマンド修飾子はエディタコマンドのような対話的なコマンドでも
897 インクルードファイルにおいて定義されている変数は
901 .Dl 使い方: .Dv defined_variable ... \*(Pu
902 .Bl -tag -width ".Dv MAXHOSTNAMELEN" -compact -offset 14n
903 .It Li ".Dv MAXHOSTNAMELEN"
905 .It Li ".Dv TIOCGPGRP )"
913 .Ss errno (セクション 2 のみ)
916 はセクション 2 のライブラリルーチンにおけるエラーの戻り値を指定します。
921 (これはセクション 2 のマニュアルページで使われています) と共に使われています。
923 .Dl 使い方: .Er ERRNOTYPE ... \*(Pu
924 .Bl -tag -width ".Bq Er ENOTDIR" -compact -offset 14n
927 .It Li \&.Er ENOENT\ )\ ;
929 .It Li \&.Bq \&Er ENOTDIR
941 .Dl 使い方: .Ev argument ... \*(Pu
942 .Bl -tag -width ".Ev PRINTER ) ) ," -compact -offset 14n
947 .It Li \&.Ev PRINTER\ )\ )\ ,
962 のセクション内で参照する場合に使われます。
972 は構造体のメンバを参照する場合にも使われます。
974 .Dl 使い方: .Fa function_argument ... \*(Pu
975 .Bl -tag -width ".Fa d_namlen\ )\ )\ ," -compact -offset 14n
976 .It Li \&.Fa d_namlen\ )\ )\ ,
990 セクションにおいて、セクション 2 または 3 の関数の説明で使われます。
992 マクロから他のマクロを呼び出すことはなく、他のマクロから呼び出すことも
995 .Dl 使い方: .Fd include_file (or defined variable)
998 セクションにおいて、関数がすでに示されていて改行が入っていない場合、
1001 これによって前の関数呼び出しと次の関数の宣言の間に最適な行間が設定されます。
1008 対話的なコマンドのフラグでは、ダッシュがフラグの前には挿入されませんが、
1010 (コマンド修飾子) マクロは、ダッシュを付けないことを除き、同じ働きをします。
1012 .Dl 使い方: .Fl argument ... \*(Pu
1013 .Bl -tag -width ".Fl \-s \-t \-v" -compact -offset 14n
1024 .It Li \&.Fl xyz\ )\ ,
1030 マクロを指定すると、標準入力/標準出力を意味するダッシュとなります。
1033 マクロを使用すると、2 つダッシュとなることに注意して下さい。
1038 マクロは ANSI C の記法を規範としています。
1040 使い方: .Fn [type] function [[type] parameters ... \*(Pu]
1042 .Bl -tag -width ".Fn _int align_ _const * char *sptrsxx" -compact
1043 .It Li "\&.Fn getchar"
1045 .It Li "\&.Fn strlen ) ,"
1047 .It Li \&.Fn "\\*qint align\\*q" "\\*qconst * char *sptrs\\*q" ,
1048 .Fn "int align" "const * char *sptrs" ,
1052 を引数を指定せずに呼び出すのはエラーです。
1054 マクロは解析され、呼び出し可能です。他のマクロの呼び出しは
1056 の呼び出しの終了を意味することに注意して下さい
1059 9 個以上のパラメータをとる関数 (これは滅多にないことですが) では、
1065 (関数引数) と共に使って、この制限を回避することができます。
1067 .Bd -literal -offset indent
1076 \&.Fa "struct rrec *newrr"
1083 .Bd -filled -offset indent
1092 .Fa "struct rrec *newrr"
1103 セクションでは、関数は常に行の先頭から開始されます。
1105 セクションにおいて、複数の関数が示されており、関数の型が示されない場合、
1106 改行が挿入され、現在の関数名とその前の関数名の間に最適な改行量が設定されます。
1109 は troff の行の長さに対して、語の境界をチェックしておらず、予期しない
1110 場所で改行が挿入されてしまうことがあります。
1116 man ページ中の他の場所でも問題なく使うことができますが、
1119 セクションでカーネルの通常の形式で関数の型を示すことがこのマクロの目的です
1120 (このマクロは関数名が次の行に置かれるように改行を挿入します)。
1122 .Dl 使い方: .Ft type ... \*(Pu
1123 .Bl -tag -width "\&.Ft struct stat" -offset 14n -compact
1124 .It Li \&.Ft struct stat
1132 マクロは対話的なコマンド、もしくは内部コマンドを指定します。
1134 .Dl 使い方: .Ic argument ... \*(Pu
1135 .Bl -tag -width ".Ic setenv , unsetenvxx" -compact -offset 14n
1138 .It Li \&.Ic do while {...}
1140 .It Li \&.Ic setenv\ , unsetenv
1141 .Ic setenv , unsetenv
1150 マクロは、関数がどのライブラリに組み込まれるかを指定します。
1152 .Dl 使い方: .Lb argument ... \*(Pu
1155 マクロに対して使用可能な引数と結果は次の通りです:
1157 .Bl -tag -width "libnetgraph" -compact -offset indent
1162 .It Li "libcalendar"
1188 .It Li "libnetgraph"
1203 マクロは文書のタイトルやサブジェクト名を指定するために使われます。
1204 このマクロは最初に呼び出された時の引数を覚えておくという特性を持っており、
1205 それは常にそのページのサブジェクト名であるべきです。
1208 は作者の作業を少なくするためだけの目的で、最初の名称を出力します。
1210 セクション 2 または 3 のドキュメントの関数名は
1222 コマンドのキーワードのような対話的なコマンドでは
1229 それが最初に使われたときの引数を記憶することはできません。
1231 .Dl 使い方: .Nm argument ... \*(Pu
1232 .Bl -tag -width ".Nm mdoc.sample" -compact -offset 14n
1233 .It Li \&.Nm mdoc.sample
1235 .It Li \&.Nm \e-mdoc
1237 .It Li \&.Nm foo\ )\ )\ ,
1247 マクロはコマンド行の残りのすべての引数を
1248 オプションであることを示す角括弧で囲み、
1253 マクロは複数行に渡って使うことができます。
1255 .Dl 使い方: .Op options ... \*(Pu
1256 .Bl -tag -width ".Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent
1261 .It Li ".Op Fl k ) ."
1263 .It Li ".Op Fl k Ar kookfile"
1264 .Op Fl k Ar kookfile
1265 .It Li ".Op Fl k Ar kookfile ,"
1266 .Op Fl k Ar kookfile ,
1267 .It Li ".Op Ar objfil Op Ar corfil"
1268 .Op Ar objfil Op Ar corfil
1269 .It Li ".Op Fl c Ar objfil Op Ar corfil ,"
1270 .Op Fl c Ar objfil Op Ar corfil ,
1271 .It Li \&.Op word1 word2
1279 .Bd -literal -offset indent
1281 \&.Op \&Fl k \&Ar kilobytes
1282 \&.Op \&Fl i \&Ar interval
1283 \&.Op \&Fl c \&Ar count
1289 .Op Fl k Ar kilobytes
1290 .Op Fl i Ar interval
1302 マクロはパス名もしくはファイル名をフォーマットします。
1304 .Dl 使い方: .Pa pathname \*(Pu
1305 .Bl -tag -width ".Pa /tmp/fooXXXXX ) ." -compact -offset 14n
1306 .It Li \&.Pa /usr/share
1308 .It Li \&.Pa /tmp/fooXXXXX\ )\ .
1309 .Pa /tmp/fooXXXXX ) .
1316 マクロは、規格の短縮名称を正式名称に置換します。
1318 .Dl 使い方: .St abbreviature
1323 .Bl -tag -width "-p1003.2-92XX." -compact -offset indent
1338 .It Li "-p1003.1-88"
1340 .It Li "-p1003.1-90"
1342 .It Li "-p1003.1-96"
1344 .It Li "-p1003.1b-93"
1346 .It Li "-p1003.1g-2000"
1350 .It Li "-p1003.2-92"
1364 .Dl 使い方: .Va variable ... \*(Pu
1365 .Bl -tag -width ".Va char s ] ) ) ," -compact -offset 14n
1368 .It Li \&.Va settimer ,
1370 .It Li \&.Va int\ *prt\ )\ :
1372 .It Li \&.Va char\ s\ ]\ )\ )\ ,
1380 .Ss マニュアルページのクロスリファレンス
1382 マクロは最初の引数にマニュアルページの名称を取り、もしあれば次の引数に
1383 セクションのページ数か句読点を取ります。
1384 すべての残りの引数は句読点と見なされます。
1386 .Dl 使い方: .Xr man_page [1,...,9] \*(Pu
1387 .Bl -tag -width ".Xr mdoc 7 ) ) ," -compact -offset 14n
1390 .It Li \&.Xr mdoc\ ,
1394 .It Li \&.Xr mdoc 7\ )\ )\ ,
1404 .Bd -literal -offset indent -compact
1405 使い方: .At [v6 | v7 | 32v | V.1 | V.4] ... \*(Pu
1407 .Bl -tag -width ".At v6 ) ," -compact -offset 14n
1420 最大 2 つまでの引数を取ることができます。
1422 .Dl 使い方: .Bx [Version/release] ... \*(Pu
1423 .Bl -tag -width ".Bx 4.3 ) ," -compact -offset 14n
1432 .Ss FreeBSD/NetBSD/OpenBSD マクロ
1433 .Bd -literal -offset indent -compact
1434 使い方: .Fx [ Version.release ] ... \*(Pu
1436 .Bl -tag -width ".Fx 2.2 ) ," -compact -offset 14n
1441 .Bd -literal -offset indent -compact
1442 使い方: .Nx [ Version.release ] ... \*(Pu
1444 .Bl -tag -width ".Nx 1.4 ) ," -compact -offset 14n
1449 .Bd -literal -offset indent -compact
1450 使い方: .Ox [ Version.release ] ... \*(Pu
1452 .Bl -tag -width ".Ox 2.5 ) ," -compact -offset 14n
1461 最大 2 つまでの引数を取ることができます。
1463 .Dl 使い方: .Ux ... \*(Pu
1464 .Bl -tag -width ".Ux 4.3 ) ," -compact -offset 14n
1473 1 つ以上の文字列が引用符や括弧のような文字のペアで囲まれている
1475 クォートと囲いという用語はこの文書を通して同じ意味で使われます。
1476 ほとんどの 1 行の囲いマクロはクォート (quote) のヒントとするために、小文字の
1478 で終了しますが、いくつかの例外があります。
1479 各々の囲いマクロに対し、開始マクロと終了マクロのペアもあり、それぞれ小文字の
1484 これらは 1 行以上のテキストに渡って使うことができますが、
1486 その中では 1 行形式のクォートマクロのみ使用することができます。
1488 .Bd -filled -offset indent
1489 .Bl -column "クォート " "終了 " "開始 " "クォートされたリテラル " XX文字列XX
1490 .Em " クォート 終了 開始 機能 結果"
1491 \&.Aq .Ac .Ao カギ括弧による囲い <文字列>
1492 \&.Bq .Bc .Bo 角括弧による囲い [文字列]
1493 \&.Dq .Dc .Do 2 重引用符 ``文字列''
1494 .Ec .Eo 囲い文字列 (XXによる) XX文字列XX
1495 \&.Pq .Pc .Po 括弧による囲い (文字列)
1496 \&.Ql クォートされたリテラル `st' または文字列
1497 \&.Qq .Qc .Qo まっすぐな 2 重引用符 "文字列"
1498 \&.Sq .Sc .So 1 重引用符 `文字列'
1502 下記の不正なマクロを除き、すべてのクォートマクロは解析され、呼び出し可能です。
1503 句読点がひとつずつ置かれていて、スペースで区切られていれば、
1504 すべてのクォートマクロは句読点を適切に扱います。
1505 クォートマクロは開く句読点、閉じる句読点
1506 (訳注: 句読点には括弧なども含みます) を調べ、
1507 それが囲む文字列より前か後かを決めます。
1508 これによって、ある程度の入れ子が可能になっています。
1509 .Bl -tag -width xxx,xxxx
1510 .It Li \&.Ec , \&.Eo
1511 これらのマクロは各々開始および終了の文字列を最初の引数に取ります。
1519 でフォーマットされた場合、クォート指定されたリテラルは常にクォートされます。
1521 でフォーマットされた場合は、アイテムの幅が固定幅文字 3 つ分より
1523 これはリテラル (固定幅) のフォントの変更があまり気づかれないものであるため、
1524 短い文字列を良く見えるようにするためです。
1526 プレフィックスマクロは呼び出し可能ではありませんが、解析されます。
1527 .Bl -tag -width "(namexx" -offset indent
1528 .It Li ".Pf ( Fa name2"
1535 (空白なし) マクロはサフィックス機能と同様の作用があります。
1539 .Bl -tag -width ".Aq Pa ctype.h ) ,xxxxxxxx" -compact -offset indent
1542 .It Li \&.Aq \&Ar ctype.h\ )\ ,
1546 .It Li \&.Bq \&Em Greek \&, French \&.
1547 .Bq Em Greek , French .
1550 .It Li ".Dq string abc ."
1552 .It Li ".Dq \'^[A-Z]\'"
1554 .It Li "\&.Ql man mdoc"
1558 .It Li "\&.Qq string ) ,"
1560 .It Li "\&.Qq string Ns ),"
1564 .It Li "\&.Sq string
1568 囲いマクロの入れ子についての良い例については、
1572 このマクロは上でリストされているような囲いマクロと同じベースの上に
1578 もまた同じルーチンをベースに作られており、
1580 マクロの使い方の非常に良い例となっています。
1581 .Ss no\-op もしくは通常テキストマクロ
1583 マクロはマクロコマンド行において、コンテントマクロの構文形式に従うが、
1589 マクロはマクロ間での不要な空白を除去します。
1590 これはフラグと引数の間に空白を含まない古いスタイルの引数リストを使う場合に
1592 .Bl -tag -width ".Op Fl I Ns Ar directoryxx" -offset indent
1593 .It Li ".Op Fl I Ns Ar directory"
1595 .Op Fl I Ns Ar directory
1600 マクロは他のマクロ名が続かなければ、スペースを除去したあとに
1607 マクロは同一文書内でのセクションのヘッダへの参照を指定します。
1610 .Bl -tag -width "Li \&.Sx FILES" -offset 14n
1615 以下のマクロは多少なりとも参考文献を扱えるようにと意図したものです。
1616 これらのマクロは、せいぜい参照スタイルの参考文献のサブセットを手動で
1619 .Bl -tag -width 6n -offset indent -compact
1622 改行を挿入してから、参考文献の終了マクロが読み込まれるまで
1628 参考文献の作者名。1 回の呼び出しにつき、作者名をひとつ指定する。
1653 呼び出し側に戻る商標名マクロだけは解析されます。
1656 .Xr troff Ns / Ns Xr ditroff
1662 のセクションで使うテキストを生成します。
1664 .Dl 使い方: .Rv [-std function]
1666 .Ql \&.Rv -std atexit
1672 オプションはセクション 2 と 3 のマニュアルページでのみ有効です。
1674 商標名マクロは一般的に長さが 2 文字を越えるすべてが大文字の単語用
1677 .Dl 使い方: .Tn symbol ... \*(Pu
1678 .Bl -tag -width ".Tn ASCII" -compact -offset 14n
1686 マクロは解析され、他のマクロから呼び出し可能です。
1691 マクロでマクロの境界における引数リストを拡張することができます。
1694 のようなすべての引数が 1 行中に指定されていることを前提としている
1695 マクロの中では行に渡って拡張することができません。
1697 以下に空白モードマクロをスペーシングをオフにするために使った
1700 .Bd -literal -offset indent
1702 \&.It Xo Sy I Ar operation
1703 \&.No \een Ar count No \een
1709 .Bd -filled -offset indent
1710 .Bl -tag -width flag -compact
1712 .It Xo Sy I Ar operation
1713 .No \en Ar count No \en
1720 .Bd -literal -offset indent
1722 \&.It Cm S No \&/ Ar old_pattern Xo
1723 \&.No \&/ Ar new_pattern
1730 .Bd -filled -offset indent
1731 .Bl -tag -width flag -compact
1733 .It Cm S No \&/ Ar old_pattern Xo
1734 .No \&/ Ar new_pattern
1745 .Bd -literal -offset indent
1748 \&.Oo \e&! Oc Ns Ar variable
1749 \&.Op Ar operator variable ...
1754 .Bd -filled -offset indent
1755 .Bl -tag -width flag -compact
1758 .Oo \&! Oc Ns Ar variable
1759 .Op Ar operator variable ...
1769 拡張マクロが使われることはあまりありません。
1770 使われるとすれば、リスト項目の引数リストを拡張する場合です。
1771 残念なことに、これが拡張マクロが最も懲り性であるところでもあります。
1772 最初の 2 つの例では、スペーシングはオフになっています。
1773 3 番目では、ある箇所にはスペーシングを入れることが望ましいのですが、
1775 そのような状況でこれらのマクロが適切に動作するためには、
1779 マクロが 3 番目の例にあるように指定されていることを確認してください。
1783 の引数リストに他のものが置かれると、スペーシングがどうなるかは予測不可能です。
1787 は行中の最初もしくは最後のマクロに指定してはいけません。
1790 でリリースされている 900 のマニュアルページ (実際のページでは約 1500
1791 ページ) のうち 15 のマニュアルページでのみしか
1796 以下にリストされている、最初の 3 つのセクションヘッダマクロ
1798 はすべての man ページで必須のものです。
1799 残りのセクションヘッダはマニュアルページの作者の裁量において、
1802 マクロは 9 つまでの引数を取ることができます。
1803 これは解析されますが、呼び出し不可能です。
1804 .Bl -tag -width ".Sh SYNOPSIS"
1806 .Ql \&.Sh NAME (訳注: 名称)
1808 これが指定されていないと、ヘッダとフッタ、それにデフォルトの
1809 ページレイアウトが設定されず、結果はかなり好ましくないものになるでしょう。
1811 セクションは最低 3 つの項目からなります。
1814 であり、man ページのサブジェクトとなります。
1817 であり、サブジェクト名を 3 つめの項目、
1819 説明に割り当てられるスペースは小さいものですので、
1820 できるだけ簡潔で分かりやすいものでなければなりません。
1822 .Sx SYNOPSIS (訳注: 書式)
1823 セクションはその man ページのサブジェクトとなっている項目の
1838 はセクション 2 と 3 のマニュアルページにおいて必須のもので、
1841 はセクション 1, 5, 6, 7, 8 で必須の項目です。
1846 、もしくはコンフィギュレーションデバイス使用法マクロ
1849 その他のいくつかのマクロが下に示すような書式行を生成するために必要なこと
1852 .Bd -filled -offset indent
1862 .Dl \&.Op \&Fl benstuv
1875 .Dl ".Op Fl a | Fl b"
1879 は通常 \*(Ba を特別のオペレータとして解釈します。
1880 この他で \*(Ba が使える場合については
1883 .It \&.Sh DESCRIPTION
1884 .Sx DESCRIPTION (訳注: 解説)
1885 セクションでの最初のテキストは、ほとんどの場合ではそのコマンド、
1886 関数もしくはファイルについての短い段落で、オプションの構文リストと
1902 のセクションヘッダはマニュアルページの好ましいレイアウトの一部であり、
1903 一貫性を保つために適切に使われなければなりません。
1904 これらは使われる順番にリストされています。
1906 .It \&.Sh ENVIRONMENT (訳注: 環境変数)
1908 セクションは関連する環境変数を明らかにし、
1910 .It \&.Sh EXAMPLES (訳注: 使用例、実行例)
1911 使用例、実行例を作成するには様々な方法があります。
1915 .It \&.Sh FILES (訳注: 関連ファイル)
1916 man ページのサブジェクトによって使用されるか生成されるファイルで、
1921 .It \&.Sh SEE ALSO (訳注: 関連項目)
1923 セクションには、その man ページの題材に関する資料への参照と
1924 他の関連する man ページへのクロスリファレンスが記載されます。
1929 セクションでのクロスリファレンスはセクション番号順に並べ、
1930 セクション中ではカンマで区切ってアルファベット順に並べなければなりません。
1941 .It \&.Sh STANDARDS (訳注: 規格)
1946 のような特定の実装によるものであれば、ここで記述します。
1947 もしコマンドがどの規格にも基づいていなければ、その歴史は
1949 のセクションで説明されなければなりません。
1950 .It \&.Sh HISTORY (訳注: 歴史)
1952 このセクションでその歴史の概要が説明されるべきです。
1953 .It \&.Sh AUTHORS (訳注: 作者)
1954 クレジットが必要であれば、ここで入れます。
1958 .It \&.Sh DIAGNOSTICS (訳注: 診断)
1959 コマンドからの診断はこのセクションに入れます。
1960 .It \&.Sh ERRORS (訳注: エラー)
1961 特定のエラーハンドリング、特にライブラリ関数
1962 (man ページのセクション 2, 3, 9) でのエラーハンドリングは、ここで説明します。
1964 マクロが errno を記述するために使われます。
1965 .It \&.Sh BUGS (訳注: バグ)
1972 たとえば、このセクションは以下のように設定されています。
1973 .Bd -literal -offset 14n
1981 は必要な場合に行スペースを指定するために使われます。
1991 マクロは -compact フラグが指定されていなければ、縦方向の距離を宣言します
1994 .\" This worked with version one, need to redo for version three
1997 .\" .Cw (ax+bx+c) \ is\ produced\ by\ \&
1998 .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
2015 .\" .Em is produced by
2031 .\" This example shows the same equation in a different format.
2035 .\" signs were forced with
2039 .\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
2040 .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
2051 .\" .Li \&.Cx \e\ +\e\ \e&
2062 .\" .Em is produced by
2070 .\" .Li \&.Cx \e\ +\e\ \e&
2081 .\" The incantation below was
2087 .\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
2089 .\" .Li \&.Cx Op Sy ?/
2099 .\" .Em is produced by
2101 .\" .Li \&.Ar \e\ b1 e1 f1
2113 現在実装されているキープは単語に対するものだけです。
2122 のみであり、これはオプションの途中で改行が入らないようにするのに便利です。
2127 がフラグと引数を別の行に分けないように使われています。
2128 (実際には、オプションマクロがこの目的で使われていましたが、
2129 オプションが行中にわたって散らばってしまうと
2130 一般的に見栄えが悪くなるという理由により
2132 で右揃えのマージンを強制的に行なう (宗教的な) 決定がなされてから、
2133 オプションマクロをこの目的で使わないようになりました。
2134 キープマクロについてはもっと機能を向上する作業が必要であり、
2136 オプションを追加していく必要があります。)
2138 ディスプレイには 5 つのタイプがあります。
2148 を使用するリテラルブロック、フィルブロックおよび凸凹ブロックです。
2150 .Bl -tag -width \&.Dlxx
2152 (D-いち) インデントされたテキストを 1 行表示します。
2153 このマクロは解析されますが、呼び出し不可能です。
2158 .Li \&.D1 \&Fl ldghfstru
2165 マクロの例は本ファイルの中に渡って使われています。
2166 これによって 1 行のテキストのインデント (表示) が可能になります。
2167 このマクロは解析され、他のマクロを認識することができますが、
2168 デフォルトのフォントは固定幅 (リテラル) にセットされています。
2171 .Dl % ls -ldg /usr/local/bin
2174 .Li \&.Dl % ls -ldg /usr/local/bin
2181 マクロによって終了しなければなりません。
2182 ディスプレイはディスプレイ内およびリスト内で入れ子にすることができます。
2186 .Dl ".Bd ディスプレイタイプ [-offset オフセット値] [-compact]"
2188 ディスプレイタイプは以下の 4 つのタイプの内の 1 つでなければならず、
2191 のオフセット値を指定することができます。
2193 .Bl -tag -width "file ファイル名 " -compact
2195 テキストのブロックをタイプされた通りに表示します。
2196 右マージン (と左マージン) のエッジは左に不揃いに寄せられます。
2198 フィル (フォーマット) されたブロックを表示します。
2199 テキストのブロックがフォーマットされます
2200 (エッジは左非揃えではなく、フィルされます)。
2203 ソースコードや、単純にタブもしくはスペースで整えられたテキストで便利です。
2204 .It Fl file Ar ファイル名
2206 フラグに続く名称のファイルが読み込まれ、表示されます。
2207 表示はリテラルなモードで行われ、タブは定幅文字 8 つ分に固定されますが、
2209 .Xr troff/ Ns Nm \-mdoc
2211 .It Fl offset Ar 文字列
2213 が以下の文字列のいずれかとともに指定されていると、
2214 その文字列は次のテキストのブロックのインデントのレベルを示すものとして
2217 .Bl -tag -width "indent-two" -compact
2226 単にブロックの左側を仮想的な中央マージンに揃えるだけです。
2228 デフォルトのインデント値もしくはタブの分だけインデントします。
2231 でも使われ、これら 2 つのタイプのディスプレイを使った場合、
2233 このインデントは通常 6n か約 2/3 インチ (定幅文字 6 つ分) です。
2235 デフォルトのインデント値の 2 倍分インデントします。
2237 これはブロックをページの右端から約 2 インチ離して
2240 このマクロはちゃんと動作する必要があるのですが、
2242 ではまったくちゃんと動作してくれていません。
2249 マニュアルページのテキストの見栄えを変更するマクロは 5 つあります。
2250 .Bl -tag -width \&.Emxx
2255 強調の場合、通常イタリック体のフォントが使われます。
2257 .Dl 使い方: .Em argument ... \*(Pu
2258 .Bl -tag -width ".Em vide infra ) ) ," -compact -offset 14n
2259 .It Li ".Em does not"
2261 .It Li ".Em exceed 1024 ."
2263 .It Li ".Em vide infra ) ) ,"
2264 .Em vide infra ) ) ,
2274 は特殊文字や変数定数、その他タイプされた通りに表示する必要があるものに
2277 .Dl 使い方: .Li argument ... \*(Pu
2278 .Bl -tag -width ".Li cntrl-D ) ," -compact -offset 14n
2281 .It Li \&.Li M1 M2 M3\ ;
2283 .It Li \&.Li cntrl-D\ )\ ,
2285 .It Li \&.Li 1024\ ...
2292 シンボリック体強調マクロはシンボリックの意味でも
2296 .Dl 使い方: .Sy symbol ... \*(Pu
2297 .Bl -tag -width ".Sy Important Noticex" -compact -offset 14n
2298 .It Li \&.Sy Important Notice
2299 .Sy Important Notice
2313 フォントモードは他のフォントモードと入れ子にすることができます。
2319 フォントモードは以下の 3 つのタイプのうちのいずれかでなければなりません。
2321 .Bl -tag -width "file file_name " -compact
2322 .It Sy \&Em | Fl emphasis
2325 マクロがテキストブロック全体に使われているのと同様です。
2326 .It Sy \&Li | Fl literal
2329 マクロがテキストブロック全体に使われているのと同様です。
2330 .It Sy \&Sy | Fl symbolic
2333 マクロがテキストブロック全体に使われているのと同様です。
2341 で開始されるリストにはいくつかのタイプがあります。
2347 リストはリスト自身やディスプレイの中で入れ子にすることができます。
2349 リストが列の中で使えるかどうかは検証されていません。
2351 さらに、タグの幅、リストのオフセット、コンパクトさ
2352 (項目間の空白行が許されているかどうか) のような、
2353 いくつかのリストの属性を指定することができます。
2356 スタイルリストでフォーマットされています。
2357 各種リストタイプは、調子を変えるためにオーバーハング
2362 のユーザに非常に人気のあるものですが、tag リストで構成されたページを
2363 何ページも読んだ後には幾分変に見えるでしょう。
2372 これら 3 つは最も単純なリストのタイプです。
2375 マクロが与えられると、リスト中の項目は単に
2377 マクロによってのみ構成される行で指定されます。
2378 例として、簡単な列挙リストのソーステキストは、このようになります。
2379 .Bd -literal -offset indent-two
2380 \&.Bl -enum -compact
2392 .Bl -enum -offset indent-two -compact
2401 簡単な bullet リスト構成の例を示します。
2402 .Bd -literal -offset indent-two
2403 \&.Bl -bullet -compact
2412 .Bl -bullet -offset indent-two -compact
2426 マクロによって指定されている引数からラベルを生成します。
2429 では、次のテキストへそのラベルを挿入します。
2431 では、次のテキストをラベルの位置へインデントします。
2433 (オーバーハング) では、次のテキストをラベルの位置にぶら下げ、インデントしません。
2440 マクロは inset, hang, tag のリストタイプでのみ解析され、
2442 以下に inset ラベルの例を示します。
2443 .Bl -inset -offset indent
2445 tag リスト (tag 段落とも呼ばれる) は、
2446 Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
2448 診断リストはセクション 4 の診断リストを生成するもので、
2449 呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
2453 ohang ラベルはスペースに制限がある時に便利です。
2455 inset ラベルは段落のブロックを制御するのに便利で、
2457 マニュアルを他の形式に変換する時に役立ちます。
2460 上の例を生成したソーステキストはこうなっています。
2461 .Bd -literal -offset indent
2462 \&.Bl -inset -offset indent
2464 \&tag リスト (tag 段落とも呼ばれる) は、
2465 \&Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
2467 \&診断リストはセクション 4 の診断リストを生成するもので、
2468 \&呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
2472 \&ohang ラベルはスペースに制限がある時に便利です。
2474 \&inset ラベルは段落のブロックを制御するのに便利で、
2476 \&マニュアルを他の形式に変換する時に役立ちます。
2480 以下は 2 つの項目を持つ hang リストです。
2481 .Bl -hang -offset indent
2484 ラベルは tag リストと同じようになります。
2485 .It Em 長い hang リストラベル
2490 これを生成している元のテキストは以下の通りです。
2491 .Bd -literal -offset indent
2492 \&.Bl -hang -offset indent
2494 \&ラベルがラベルの幅より小さいときには、
2495 \&ラベルは tag リストと同じようになります。
2496 \&.It Em 長い hang リストラベル
2497 \&は、tag 段落のラベルとは異なり、
2502 タグ幅を制御するためのオプションの幅指定を使ったタグつきリストは
2505 .Bl -tag -width "PAGEIN" -compact -offset indent
2507 プロセスが sleep している時間 (ブロックされた秒数)
2509 そのプロセスによるコアにロードされていないページへの参照によるディスク
2513 プロセスの所有者の数字表記によるユーザID
2515 親プロセスの数字表記によるID、プロセスの優先度
2516 (割り込み不可のウエイトであるときには非正値)
2520 .Bd -literal -offset indent
2521 \&.Bl -tag -width "PAGEIN" -compact -offset indent
2523 \&プロセスが sleep している時間 (ブロックされた秒数)
2525 \&そのプロセスによるコアにロードされていないページへの参照によるディスク
2529 \&プロセスの所有者の数字表記によるユーザID
2531 \&親プロセスの数字表記によるID、プロセスの優先度
2532 \&(割り込み不可のウエイトであるときには非正値)
2536 幅指定として以下のものを使うことができます。
2537 .Bl -tag -width Ar -offset indent
2538 .It Fl width Ar "\&Fl"
2539 そのフラグでのデフォルトの幅を指定します。
2540 すべての呼び出し可能なマクロは各々デフォルトの幅の値を持っています。
2543 の値は定幅文字 10 個分、もしくは約 5/6 インチとなっています。
2544 .It Fl width Ar "24n"
2545 定幅文字 24 個分の幅、もしくは約 2 インチの幅をセットします。
2549 .It Fl width Ar "ENAMETOOLONG"
2550 指定された文字列の固定長に幅をセットします。
2551 .It Fl width Ar "\\*qint mkfifo\\*q"
2552 これも、指定された文字列の固定長に幅をセットします。
2556 タグつきリストタイプで幅が指定されていないと、
2558 が最初に起動された時に適した幅を決定することが試みられます。
2560 の最初の引数が呼び出し可能なマクロであれば、そのマクロのデフォルトの幅が
2561 そのマクロ名が幅として指定されたように使用されます。
2562 しかしながら、そのリスト中に他の項目が別の呼び出し可能なマクロ名で
2563 与えられていると、新しく入れ子となったリストとして処理されます。
2565 以下の文字列はあらかじめ定義されているものであり、
2576 解釈シーケンスはテキストのどこでも使うことができます。
2578 .Bl -column "文字列 " "Nroff " "Troff " -offset indent
2579 .It Sy "文字列 Nroff Troff"
2580 .It Li "<=" Ta \&<\&= Ta \*(<=
2581 .It Li ">=" Ta \&>\&= Ta \*(>=
2582 .It Li "Rq" Ta "''" Ta \*(Rq
2583 .It Li "Lq" Ta "``" Ta \*(Lq
2584 .It Li "ua" Ta ^ Ta \*(ua
2585 .It Li "aa" Ta ' Ta \*(aa
2586 .It Li "ga" Ta \` Ta \*(ga
2587 .\" .It Li "sL" Ta ` Ta \*(sL
2588 .\" .It Li "sR" Ta ' Ta \*(sR
2589 .It Li "q" Ta \&" Ta \*q
2590 .It Li "Pi" Ta pi Ta \*(Pi
2591 .It Li "Ne" Ta != Ta \*(Ne
2592 .It Li "Le" Ta <= Ta \*(Le
2593 .It Li "Ge" Ta >= Ta \*(Ge
2594 .It Li "Lt" Ta < Ta \*(Gt
2595 .It Li "Gt" Ta > Ta \*(Lt
2596 .It Li "Pm" Ta +- Ta \*(Pm
2597 .It Li "If" Ta infinity Ta \*(If
2598 .It Li "Na" Ta \fINaN\fP Ta \*(Na
2599 .It Li "Ba" Ta \fR\&|\fP Ta \*(Ba
2604 の名称がつけられている文字列は、1 文字であるため
2609 は限られたデバッグ機能しか持っていませんが、
2610 引数名と内部レジスタやマクロ名との衝突のような
2611 潜在的なエラーを検出するのに役立ちます。
2615 での演算用記憶クラスであり、1 文字か 2 文字の名称がついています。
2623 のように2 文字からなる <大文字><小文字> の形式か、
2625 のように <小文字><大文字> の形式か、
2627 のように <大文字もしくは小文字><数字> の形式を取ります。
2631 それらすべては小文字 2 文字か、ドットに文字もしくはメタ文字が続く形式を取ります。
2635 でマクロ名を解釈させない方法がありました。
2638 .\" Every callable macro name has a corresponding register
2639 .\" of the same name (<upper_case><lower_case>).
2640 .\" There are also specific registers which have
2641 .\" been used for stacks and arrays and are listed in the
2643 .\" .Bd -ragged -offset 4n
2644 .\" [A-Z][a-z] registers corresponding to macro names (example ``Ar'')
2645 .\" [a-z][A-Z] registers corresponding to macro names (example ``aR'')
2646 .\" C[0-9] argument types (example C1)
2647 .\" O[0-9] offset stack (displays)
2648 .\" h[0-9] horizontal spacing stack (lists)
2649 .\" o[0-9] offset (stack) (lists)
2650 .\" t[0-9] tag stack (lists)
2651 .\" v[0-9] vertical spacing stack (lists)
2652 .\" w[0-9] width tag/label stack
2655 エスケープされていないレジスタ名が引数リストに指定されると、
2657 一般的には、テキストのかなり大きな部分が出力されるべきところに
2658 出力されないとか、リストのタグのような小さな文字列が消えてしまうとか、
2659 引数リストの中の引数のタイプが間違って解釈されるとかいうことが、起こり得ます。
2660 きっとあなたのお母さんは、あなたにこんな面倒なことを覚えるようにとは
2662 そこで、与えられた引数が有効か無効かを判断する方法があります。
2665 (デバッグ) マクロによってほとんどのマクロの引数リストがどう解釈されるか
2668 (段落) マクロのようなマクロはデバッグ情報を含んでいません。
2669 呼び出し可能なマクロはすべてデバッグ情報を含んでおり、
2672 マクロをオンにすることを強くお勧めします。
2674 .Dl 使い方: \&.Db [on | off]
2677 問題が故意に発生するようにされた部分の上と下で
2684 .Bd -literal -offset indent
2686 \&.Op Fl aC Ar file )
2691 .Bd -literal -offset indent
2693 DEBUG(argv) MACRO: `.Op' Line #: 2
2694 Argc: 1 Argv: `Fl' Length: 2
2695 Space: `' Class: Executable
2696 Argc: 2 Argv: `aC' Length: 2
2697 Space: `' Class: Executable
2698 Argc: 3 Argv: `Ar' Length: 2
2699 Space: `' Class: Executable
2700 Argc: 4 Argv: `file' Length: 4
2701 Space: ` ' Class: String
2702 Argc: 5 Argv: `)' Length: 1
2703 Space: ` ' Class: Closing Punctuation or suffix
2704 MACRO REQUEST: .Op Fl aC Ar file )
2708 この情報の最初の行では呼び出されているマクロの名称が出力されています。
2711 とそれが現れた行番号が表示されています。
2713 (特にテキストが他のファイルからインクルードされている場合)、
2715 ファイルが 1 つだけの場合には正しい行番号が出力されます。
2721 (ゼロでない値を含むすべてのレジスタは実行可能なように見えます)
2723 3 番目の行ではそのクラスで指定されているスペースとクラスタイプが
2725 ここでの問題は引数 aC が実行不可能でなければならないことです。
2726 クラスの 4 つのタイプは文字列、実行可能、閉じる句読点、開く句読点です。
2727 最後の行では引数リスト全体が読み込まれた通りに表示されています。
2731 .Bd -literal -offset indent
2733 \&.Em An escaped \e&aC
2736 .Bd -literal -offset indent
2738 DEBUG(fargv) MACRO: `.Em' Line #: 2
2739 Argc: 1 Argv: `An' Length: 2
2740 Space: ` ' Class: String
2741 Argc: 2 Argv: `escaped' Length: 7
2742 Space: ` ' Class: String
2743 Argc: 3 Argv: `aC' Length: 2
2744 Space: ` ' Class: String
2745 MACRO REQUEST: .Em An escaped &aC
2753 は先の例と同様に長さ 2 と表示されています。
2756 という名称のレジスタが見つからず、タイプは文字列と判断されています。
2758 この他の診断は使用方法を報告するものであり、
2760 .Sh GROFF, TROFF, NROFF
2768 で改ページ時に通常挿入されるヘッダとフッタは禁止されており、
2769 マニュアルをオンラインで効率良く見ることができるようになっています。
2774 はページ内容の無いファイル末の残りの部分まで出力します。
2777 による出力はハードコピーには適さないものとなっています。
2779 .Pa /usr/src/share/tmac/doc-nroff
2782 の名称を持つレジスタが古いスタイルの振る舞いを実現するために用意されています。
2784 .Bl -tag -width /usr/share/man0/template.doc -compact
2785 .It Pa /usr/share/tmac/doc.tmac
2787 .It Pa /usr/share/misc/mdoc.template
2789 .It Pa /usr/share/examples/mdoc/*
2793 あらかじめ定義されている文字列は文書において宣言されていません。
2795 セクション 3f はヘッダルーチンには追加されていません。
2804 行の長さが短すぎないかどうかをチェックする必要があります。
2805 ときどき、最後の括弧が分割されることがあり、
2806 行がフィルモードであるときには全くおかしな結果になることがあります。
2808 リストマクロとディスプレイマクロはキープを行いませんが、
2810 .\" Note what happens if the parameter list overlaps a newline
2812 .\" to make sure a line boundary is crossed:
2814 .\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[]
2817 .\" produces, nudge nudge,
2818 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
2819 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
2821 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] .
2823 .\" If double quotes are used, for example:
2825 .\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q
2828 .\" produces, nudge nudge,
2829 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
2831 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
2833 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" .
2835 .\" Not a pretty sight...
2836 .\" In a paragraph, a long parameter containing unpaddable spaces as
2837 .\" in the former example will cause
2839 .\" to break the line and spread
2840 .\" the remaining words out.
2841 .\" The latter example will adjust nicely to
2842 .\" justified margins, but may break in between an argument and its
2846 .\" the right margin adjustment is normally ragged and the problem is