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 .\" $Id: mdoc.samples.7,v 1.17 1998/12/03 03:38:45 jkoshy 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 .\"*******************************************************************
41 .\" This file was generated with po4a. Translate the source file.
43 .\"*******************************************************************
53 マニュアルを書くためのチュートリアルサンプル
66 マニュアルを書くためのチュートリアルサンプルです。
70 詳細は個々の作者に任せたページレイアウトベースのものでした。
73 タイトル、セクションのヘッダ、ディスプレイ、リストのマクロからなる
76 ページでのテキストの物理的な位置に影響を持ちます。
77 ページ構造領域に加え、さらにマニュアル領域および一般テキスト領域
79 一般テキスト領域はテキストの一部をクォートしたり、
80 強調するといったような作業を実行するマクロとして定義されています。
83 の関連ファイルを記述するための日常使用されるインフォーマルな言葉の
84 サブセットであるマクロとして定義されています。
85 マニュアル領域のマクロはコマンド名、コマンド行の引数とオプション、
86 関数名、関数のパラメータ、パス名、変数名、他のマニュアルページへの
88 これらの領域の項目は作者とマニュアルページの将来のユーザの両者に
90 マニュアル間で一貫性を高めることによって将来のドキュメントツールへの
93 マニュアルのエントリは、実際の長さに関わらず、
97 単純に man ページとして参照されています。
99 通常チュートリアルドキュメントは、そこに示された題材をすぐに使いたい時
100 に読むものですので、このドキュメントのユーザはせっかちな人だと仮定して
101 います。このドキュメントの残りの部分で説明されている題材は以下のような
103 .Bl -enum -offset indent
106 .Bl -tag -width flag -compact -offset indent
114 .Bl -tag -width flag -compact -offset indent
115 .It "マニュアルページのテンプレート"
120 .Tn "マニュアルと一般テキスト領域の紹介"
121 .Bl -tag -width flag -compact -offset indent
127 .Bl -tag -width flag -compact -offset indent
131 .It "コンフィギュレーション宣言 (セクション 4 のみ)"
134 .It "errno (セクション 2 のみ)"
141 .\" .It "Header File (including source code)" .
151 .Bl -tag -width flag -compact -offset indent
157 .Bl -tag -width flag -compact -offset indent
158 .It "カギ括弧 <> によるクォート/囲い"
159 .It "角括弧 [] によるクォート/囲い"
161 .It "括弧 () によるクォート/囲い"
162 .It "一重引用符によるクォート/囲い"
165 .It "no\-op もしくは通常テキストマクロ"
169 .It "返り値 (セクション 2, 3 のみ)"
175 .Bl -tag -width flag -compact -offset indent
180 .It "フォントモード (強調、リテラル、およびシンボリック)"
188 .Tn "GROFF、TROFF、NROFF を使用したフォーマッティング"
195 パッケージは man ページを記述するプロセスを簡単にすること
201 ゴタゴタした詳細を学ぶ必要がないのが理想ですが、いくつか片付けるべき
202 避けられない制限事項があります。また、このパッケージは高速で
210 それに続けて 2 文字からなるマクロの名称を指定することによって呼び出され
211 ます。引数はマクロの後にスペースで区切って指定することができます。
215 字をマクロ名として解釈するよう指示しています。マクロを起動せずに、ある
224 は文字通りスペース幅が 0 として解釈され、出力には現れません。
228 マクロは引数を 9 つまで取ることができ、
231 でのほとんどのマクロは 9 つの引数を取ることができ、
232 限られた場合にのみ引数は次の行に続けて指定することができます
236 いくつかのマクロは引用符に囲まれた引数を扱うことができます
242 での一般テキスト領域とマニュアル領域のほとんどのマクロは特別であり、
243 その引数のリストは呼び出し可能なマクロ名として
246 これは一般テキスト領域またはマニュアル領域のマクロ名に一致し、
247 呼び出し可能であると判断された引数リストの中の引数は、
248 実行されるか、それが処理される時に呼び出されることを意味しています。
252 このようにしてたくさんのマクロを入れ子にすることができます。
263 オプションのフラグを引数とともに指定することができます。
264 .Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
267 .Li \&.Op \&Fl s \&Ar bytes
271 2 文字からなる文字列をマクロ名として解釈されないようにするには、
275 .Bl -tag -width "\&.Op \&Fl s \&Ar bytes" -offset indent
276 .It Op \&Fl s \&Ar bytes
278 .Li \&.Op \e&Fl s \e&Ar bytes
287 ん。本ドキュメントと関連のクイックリファレンスマニュアル
289 を通して、引数リストが呼び出し可能な引数として解析されるマクロは「解析
290 される」、引数リストから呼び出されることができるマクロは「呼び出し可能」
293 のほとんどすべてのマクロは解析されるのです
297 し可能である」とか「他のマクロを呼び出すことができる」と表現するのは面
298 倒なことであるため、「解析される」という用語が使われています。
300 ひとつ以上の空白文字を含む文字列をひとつの引数として指定したい場合がよ
301 くあります。これは 9 個を越える引数を指定できないという制限に対処したり、
302 引数のリストにある特有な配置をおこなうことが必要なマクロに引数を指定す
307 引数が関数のパラメータであることが必要です。
310 囲まれたパラメータリストにおける関数のパラメータの宣言の規定により、
311 各パラメータは最低でも 2 語の文字列となります。
316 空白を含む引数を指定するには 2 通りの方法があります。
318 解析の前に個々の引数を再割り当てすることによって、
319 引用符の間に空白を含めて渡すのが最も便利な方法なのですが、
323 のすべてのマクロを実装するには処理速度およ
324 びメモリ使用量の点でかなり高価な方法となります。
326 では高価な処理にはなりませんが、移植性のため、この方法は
327 空白を含めることが最も必要である以下のマクロだけに限っています。
329 .Bl -tag -width 4n -offset indent -compact
331 コンフィギュレーション宣言 (セクション 4 の
357 空白を含む文字列を渡すのに、固定空白、すなわち詰め込まれない
364 この方法はどのマクロでも使うことができますが、1 行を越える長さの
365 テキストの調整の邪魔になるという副作用があります。
368 固定空白は他の印刷可能文字と同様に扱われ、通常期待されるように、
369 そこで文字列を空白や改行で分けることを行なわなくなります。
370 この方法は文字列が行の境界をまたがないであろう場合に有用です。
372 .Bl -tag -width "fetch(char *str)" -offset indent
373 .It Fn fetch char\ *str
375 .Ql \&.Fn fetch char\e *str
377 .It Fn fetch "char *str"
379 .Ql \&.Fn fetch "\*qchar *str\*q"
390 .Dl Fn fetch char *str
392 パラメータのリストが改行の境界をまたぐ場合に何がおこるかについては、
397 は行末に空白文字があると混乱してしまうことがあります。
398 <空白> <行末> の文字シーケンスからすべての
400 どうしても行末に空白文字をおく必要性が出てきた場合は、
419 バックスラッシュを残して扱うことができます。
422 .Pa /usr/share/misc/mdoc.template
423 の基本テンプレートを使って容易に作り上げることができます。
424 .Pa /usr/share/examples/mdoc
425 にはいくつかのサンプルの man ページが収められています。
428 .Bd -literal -offset indent
429 \&.\e" 以下の項目はすべての man ページで必要な項目です。
431 \&.Os オペレーティングシステム [バージョン/リリース]
432 \&.Dt ドキュメントタイトル [セクション番号] [ボリューム]
438 \&.\e" 以下の項目については、必要に応じてコメントをはずして
440 \&.\e" この次の項目はセクション 2, 3, 9 でのみ必要な、関数の
442 \&.\e" .Sh RETURN VALUE
443 \&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
444 \&.\e" .Sh ENVIRONMENT
447 \&.\e" 次の項目はセクション 1, 6, 7, 8, 9 でのみ必要なものです。
448 \&.\e" ((シェルへの) コマンドの戻り値と
449 \&.\e" fprintf/stderr の型の診断です。)
450 \&.\e" .Sh DIAGNOSTICS
451 \&.\e" 次の項目はセクション 2, 3, 9 でのみ必要な、
452 \&.\e" エラーハンドリングとシグナルハンドリングです。
455 \&.\e" .Sh CONFORMING TO
461 このテンプレートにおける最初の項目はマクロ
462 .Pq Li \&.Dd , \&.Os , \&.Dt
464 man ページもしくは題材となっているソースの開発や変更のベースとなった
467 man ページタイトルをそのページが属するマニュアルの
468 セクション番号とともに指定したもの、となっています。
469 これらのマクロはそのページを識別するものであり、
474 テンプレート中の残りの項目はセクションのヘッダ
489 いくつかのコンテントマクロはページレイアウトマクロの説明に
490 使われていますので、ページレイアウトマクロの前にコンテントマクロについて
493 タイトルマクロはページ構造領域の最初の部分ですが、man ページを
494 前日に書き始めたいという人のために、最初に分けて記述されます。
495 3 つのヘッダマクロでドキュメントか man ページのタイトル、
496 オペレーティングシステム、および原著の日付を指定します。
497 これらのマクロはドキュメントの最初に一度だけ呼び出されるもので、
498 ヘッダとフッタを構成するためだけに使用されます。
500 .It Li \&.Dt ドキュメントタイトル セクション番号 [ボリューム]
502 .\" USD UNIX User's Supplementary Documents
504 .\" PS1 UNIX Programmer's Supplementary Documents
505 ドキュメントタイトルは man ページの主題であり、troff の制限により
508 セクション番号は 1,\ ...,\ 8 となり、これが指定されると
509 ボリュームタイトルを省略してもかまいません。
510 では、次のセクション番号と解説について後述します:
511 ボリュームタイトルには任意のものか次のいずれかを指定します。
513 .Bl -column SMM -offset indent -compact
514 .It Li "AMD UNIX" Ancestral Manual Documents
515 .It Li "SMM UNIX" System Manager's Manual
516 .It Li "URM UNIX" Reference Manual
517 .It Li "PRM UNIX" Programmer's Manual
521 .\" MMI UNIX Manual Master Index
523 .\" CON UNIX Contributed Software Manual
525 .\" LOC UNIX Local Manual
536 .It Li \&.Os オペレーティングシステム リリース番号
537 オペレーティングシステムの名称には一般的な頭字語 (略称)
546 リリース番号は、例えば4.3, 4.3+Tahoe, V.3, V.4 というような各システム
548 認識されない引数はページのフッタ中に記述された通りに表示されます。
554 .Dl \&.Os FreeBSD 2.2
558 .Dl \&.Os CS Department
560 Berkeley でのデフォルトである、引数なしの
564 .Pa /usr/share/tmac/mdoc/doc-common
572 マクロがない場合は、ページの左下角は見にくくなるであろうことに
575 日付は次のようにフォーマルな形式で記述しなければなりません。
580 .Sh マニュアルと一般テキスト領域の紹介
582 マニュアル領域のマクロ名はコマンドやサブルーチン、それに関連ファイルを
583 説明するために使われている日常のインフォーマルな言葉から取られています。
584 この言葉と少し違うバリエーションのものが man ページを書く上での
585 3 つの異なった面を記述するのに使われます。
594 3 番目はコマンドを通常の言葉の感覚でユーザに示したものです。
595 これはすなわち、man ページのテキスト中でのコマンドの議論となります。
601 troff コマンドは一般的に以下のような形式をとります。
602 .Bd -filled -offset indent
603 \&.Va argument1 argument2 ... argument9
607 はマクロコマンドもしくは要求を示しており、
608 それに続くものはすべて引数として処理されます。
609 2 番目のケースでは、コンテントマクロを使用する
615 .Bd -filled -offset indent
629 これは角括弧で囲むことによってオプションであることを示しています。
638 上の例のフォーマットを行なったマクロは以下のものです。
639 .Bd -literal -offset indent
645 3 番目のケースでは、コマンドの説明や構文に上記の例の両方が使われ、
656 コマンド行の引数のリストはかなり長くなる場合もあります。
657 .Bl -tag -width make -offset indent
664 .Op Fl I Ar directory
667 .Op Ar variable=value
683 言葉での説明では、こういった詳細な記述が混乱を防いでくれますが、
691 オペランドやファイル引数に使われる引数マクロ
696 この make コマンド行は以下の指定により生成されています。
697 .Bd -literal -offset indent
700 \&.Op Fl D Ar variable
702 \&.Op Fl f Ar makefile
703 \&.Op Fl I Ar directory
704 \&.Op Fl j Ar max_jobs
705 \&.Op Ar variable=value
719 マニュアル領域と一般テキスト領域のマクロはいくつかの小さな違い
720 があるものの、同様な構文を使用しています。
725 は引数なしで呼び出された時のみ異なります。
735 すべてのコンテントマクロが句読点を認識し、正しく扱うには、
736 各々の句読点文字が先行する空白で分離されている必要があります。
739 .Dl \&.Li sptr, ptr),
745 ここでは句読点は認識されずすべての出力はリテラルなフォントで行なわれて
746 います。句読点が空白文字で区切られている場合、
748 .Dl \&.Li "sptr , ptr ) ,"
752 .Dl Li sptr , ptr ) ,
754 今度は句読点が認識され、出力はデフォルトのフォントで行なわれ
755 リテラルフォントの文字列と区別されています。
758 でエスケープすることによって句読点文字の特別な意味を
762 数学、論理学、もしくは以下の引用符の集合のメンバを含んだ文字列を
764 .Bd -literal -offset indent-two
765 \&{+,\-,/,*,\&%,<,>,<=,>=,=,==,&,`,',"}
769 が文字によって示唆されている操作もしくは評価を実際に
770 行なっていることが、その問題の原因となっています。
773 これらの文字が予期せずに評価されることを防止することができます。
780 アドレスマクロは addr1[,addr2[,addr3]] の形式からなる
783 .Dl 使い方: .Ad address ... \*(Pu
784 .Bl -tag -width ".Ad f1 , f2 , f3 :" -compact -offset 14n
787 .It Li \&.Ad addr1\ .
789 .It Li \&.Ad addr1\ , file2
791 .It Li \&.Ad f1\ , f2\ , f3\ :
793 .It Li \&.Ad addr\ )\ )\ ,
800 は他のマクロから呼び出し可能で解析されます。
803 マクロは文書化されている項目の作者の名前、もしくは実際の
804 マニュアルページの作者の名前を指定するために使われます。
805 名前の情報の後のすべての引数は句読点として扱われます。
807 .Dl 使い方: .An author_name \*(Pu
808 .Bl -tag -width ".An Joe Author ) ) ," -compact -offset 14n
809 .It Li \&.An Joe\ Author
811 .It Li \&.An Joe\ Author\ ,
813 .It Li \&.An Joe\ Author\ \&Aq\ nobody@FreeBSD.ORG
814 .An Joe Author Aq nobody@FreeBSD.ORG
815 .It Li \&.An Joe\ Author\ )\ )\ ,
829 .Dl 使い方: .Ar argument ... \*(Pu
830 .Bl -tag -width ".Ar file1 file2" -compact -offset 15n
835 .It Li \&.Ar file1\ .
837 .It Li \&.Ar file1 file2
839 .It Li \&.Ar f1 f2 f3\ :
841 .It Li \&.Ar file\ )\ )\ ,
851 .Ss コンフィギュレーション宣言 (セクション 4 のみ)
853 マクロはセクション 4 のマニュアルにおいて、
857 このマクロは引用符 (二重引用符のみ) で囲まれた引数を取ることができます。
859 .Bl -tag -width "device le0 at scode?" -offset indent
860 .It Cd "device le0 at scode?"
862 .Ql ".Cd device le0 at scode?"
872 伝統的にフラグはダッシュ文字に引き続いて指定されますが、
873 いくつかのコマンドやコマンドのサブセットはこの方法を使っていません。
874 コマンド修飾子はエディタコマンドのような対話的なコマンドでも
879 インクルードファイルにおいて定義されている変数は
883 .Dl 使い方: .Dv defined_variable ... \*(Pu
884 .Bl -tag -width ".Dv MAXHOSTNAMELEN" -compact -offset 14n
885 .It Li ".Dv MAXHOSTNAMELEN"
887 .It Li ".Dv TIOCGPGRP )"
895 .Ss errno (セクション 2 のみ)
898 はセクション 2 のライブラリルーチンにおける
904 (これはセクション 2 のマニュアルページで使われています)
907 .Dl 使い方: .Er ERRNOTYPE ... \*(Pu
908 .Bl -tag -width ".Bq Er ENOTDIR" -compact -offset 14n
911 .It Li \&.Er ENOENT\ )\ ;
913 .It Li \&.Bq \&Er ENOTDIR
925 .Dl 使い方: .Ev argument ... \*(Pu
926 .Bl -tag -width ".Ev PRINTER ) ) ," -compact -offset 14n
931 .It Li \&.Ev PRINTER\ )\ )\ ,
947 のセクション内で参照する場合に使われます。
957 は構造体のメンバを参照する場合にも使われます。
959 .Dl 使い方: .Fa function_argument ... \*(Pu
960 .Bl -tag -width ".Fa d_namlen\ )\ )\ ," -compact -offset 14n
961 .It Li \&.Fa d_namlen\ )\ )\ ,
976 セクション 2 または 3 の関数の説明で使われます。
978 マクロから他のマクロを呼び出すことはなく、
981 .Dl 使い方: .Fd include_file (or defined variable)
984 セクションにおいて、関数がすでに示されていて改行が
988 前の関数呼び出しと次の関数の宣言の間に最適な行間が設定されます。
995 対話的なコマンドのフラグでは、ダッシュがフラグの前には挿入されませんが、
997 (コマンド修飾子) マクロは、ダッシュを付けないことを除き、
1000 .Dl 使い方: .Fl argument ... \*(Pu
1001 .Bl -tag -width ".Fl \-s \-t \-v" -compact -offset 14n
1012 .It Li \&.Fl xyz\ )\ ,
1019 標準入力/標準出力を意味するダッシュとなります。
1023 2 つダッシュとなることに注意して下さい。
1028 マクロは ANSI C の記法を規範としています。
1030 使い方: .Fn [type] function [[type] parameters ... \*(Pu]
1032 .Bl -tag -width ".Fn _int align_ _const * char *sptrsxx" -compact
1033 .It Li "\&.Fn getchar"
1035 .It Li "\&.Fn strlen ) ,"
1037 .It Li \&.Fn "\*qint align\*q" "\*qconst * char *sptrs\*q" ,
1038 .Fn "int align" "const * char *sptrs" ,
1042 を引数を指定せずに呼び出すのはエラーです。
1048 注意して下さい (閉じ括弧がその点で挿入されます)。
1050 9 個以上のパラメータをとる関数 (これは滅多にないことですが) では、
1060 .Bd -literal -offset indent
1061 \&.Fo "int res_mkquery"
1068 \&.Fa "struct rrec *newrr"
1075 .Bd -filled -offset indent
1076 .Fo "int res_mkquery"
1083 .Fa "struct rrec *newrr"
1094 セクションでは、関数は常に行の先頭から開始されます。
1096 セクションにおいて、複数の関数が示されており、
1097 関数の型が示されない場合、改行が挿入され、現在の関数名とその前の関数名
1098 の間に最適な改行量が設定されます。現在、
1101 に対して、語の境界をチェックしておらず、予期しない場所で改行が挿入され
1102 てしまうことがあります。これは近い将来修正されるでしょう。
1107 man ページ中の他の場所でも問題なく使うことができますが、
1111 関数の型を示すことがこのマクロの目的です (このマクロは関数名が次の行に
1114 .Dl 使い方: .Ft type ... \*(Pu
1115 .Bl -tag -width "\&.Ft struct stat" -offset 14n -compact
1116 .It Li \&.Ft struct stat
1124 マクロは対話的なコマンド、もしくは内部コマンドを指定します。
1126 .Dl 使い方: .Ic argument ... \*(Pu
1127 .Bl -tag -width ".Ic setenv , unsetenvxx" -compact -offset 14n
1130 .It Li \&.Ic do while {...}
1132 .It Li \&.Ic setenv\ , unsetenv
1133 .Ic setenv , unsetenv
1142 マクロは文書のタイトルやサブジェクト名を指定するために
1143 使われます。このマクロは最初に呼び出された時の引数を覚えておくという
1144 特性を持っており、それは常にそのページのサブジェクト名であるべきです。
1148 目的で、最初の名称を出力します。注意: セクション 2 または 3 のドキュメント
1170 と同一ですが、それが最初に使われたときの引数を
1173 .Dl 使い方: .Nm argument ... \*(Pu
1174 .Bl -tag -width ".Nm mdoc.sample" -compact -offset 14n
1175 .It Li \&.Nm mdoc.sample
1177 .It Li \&.Nm \e-mdoc
1179 .It Li \&.Nm foo\ )\ )\ ,
1189 マクロはコマンド行の残りのすべての引数をオプションである
1190 ことを示す角括弧で囲み、末尾の句読点は角括弧の外に置きます。
1197 .Dl 使い方: .Op options ... \*(Pu
1198 .Bl -tag -width ".Op Fl c Ar objfil Op Ar corfil ," -compact -offset indent
1203 .It Li ".Op Fl k ) ."
1205 .It Li ".Op Fl k Ar kookfile"
1206 .Op Fl k Ar kookfile
1207 .It Li ".Op Fl k Ar kookfile ,"
1208 .Op Fl k Ar kookfile ,
1209 .It Li ".Op Ar objfil Op Ar corfil"
1210 .Op Ar objfil Op Ar corfil
1211 .It Li ".Op Fl c Ar objfil Op Ar corfil ,"
1212 .Op Fl c Ar objfil Op Ar corfil ,
1213 .It Li \&.Op word1 word2
1221 .Bd -literal -offset indent
1223 \&.Op \&Fl k \&Ar kilobytes
1224 \&.Op \&Fl i \&Ar interval
1225 \&.Op \&Fl c \&Ar count
1231 .Op Fl k Ar kilobytes
1232 .Op Fl i Ar interval
1245 マクロはパス名もしくはファイル名をフォーマットします。
1247 .Dl 使い方: .Pa pathname \*(Pu
1248 .Bl -tag -width ".Pa /tmp/fooXXXXX ) ." -compact -offset 14n
1249 .It Li \&.Pa /usr/share
1251 .It Li \&.Pa /tmp/fooXXXXX\ )\ .
1252 .Pa /tmp/fooXXXXX ) .
1260 .Dl 使い方: .Va variable ... \*(Pu
1261 .Bl -tag -width ".Va char s ] ) ) ," -compact -offset 14n
1264 .It Li \&.Va settimer ,
1266 .It Li \&.Va int\ *prt\ )\ :
1268 .It Li \&.Va char\ s\ ]\ )\ )\ ,
1278 マクロは最初の引数にマニュアルページの名称を取り、
1279 もしあれば次の引数にセクションのページ数か句読点を取ります。
1280 すべての残りの引数は句読点と見なされます。
1282 .Dl 使い方: .Xr man_page [1,...,8] \*(Pu
1283 .Bl -tag -width ".Xr mdoc 7 ) ) ," -compact -offset 14n
1286 .It Li \&.Xr mdoc\ ,
1290 .It Li \&.Xr mdoc 7\ )\ )\ ,
1300 .Bd -literal -offset indent -compact
1301 使い方: .At [v6 | v7 | 32v | V.1 | V.4] ... \*(Pu
1303 .Bl -tag -width ".At v6 ) ," -compact -offset 14n
1316 最大 2 つまでの引数を取ることができます。
1318 .Dl 使い方: .Bx [Version/release] ... \*(Pu
1319 .Bl -tag -width ".Bx 4.3 ) ," -compact -offset 14n
1329 .Bd -literal -offset indent -compact
1330 使い方: .Fx Version.release ... \*(Pu
1332 .Bl -tag -width ".Fx 2.2 ) ," -compact -offset 14n
1343 最大 2 つまでの引数を取ることができます。
1345 .Dl 使い方: .Ux ... \*(Pu
1346 .Bl -tag -width ".Ux 4.3 ) ," -compact -offset 14n
1355 1 つ以上の文字列が引用符や括弧のような文字のペアで囲まれている
1357 クォートと囲いという用語はこの文書を通して同じ意味で使われます。
1358 ほとんどの 1 行の囲いマクロはクォート (quote) のヒントとするために、
1361 で終了しますが、いくつかの例外があります。
1362 各々の囲いマクロに対し、開始マクロと終了マクロのペアもあり、
1368 これらは 1 行以上のテキストに渡って使うことができますが、
1370 その中では 1 行形式のクォートマクロのみ使用することができます。
1373 .Bd -filled -offset indent
1374 .Bl -column "quote " "close " "open " "Enclose Stringx(in XX) " XXstringXX
1375 .Em "クォート 終了 開始 機能 結果"
1376 \&.Aq .Ac .Ao カギ括弧による囲い <文字列>
1377 \&.Bq .Bc .Bo 角括弧による囲い [文字列]
1378 \&.Dq .Dc .Do 二重引用符 ``文字列''
1379 .Ec .Eo 囲い文字列 (XXによる) XX文字列XX
1380 \&.Pq .Pc .Po 括弧による囲い (文字列)
1381 \&.Ql クォートされたリテラル `st' or 文字列
1382 \&.Qq .Qc .Qo まっすぐな二重引用符 "文字列"
1383 \&.Sq .Sc .So 一重引用符 `文字列'
1387 下記の不正なマクロを除き、すべてのクォートマクロは解析され、呼び出し
1388 可能です。句読点がひとつずつ置かれていて、スペースで区切られていれば、
1389 すべてのクォートマクロは句読点を適切に扱います。クォートマクロは開く
1390 句読点、閉じる句読点(訳注: 句読点には括弧なども含みます) を調べ、
1391 それが囲む文字列より前か後かを決めます。これによって、ある程度の入れ子
1393 .Bl -tag -width xxx,xxxx
1394 .It Li \&.Ec , \&.Eo
1395 これらのマクロは各々開始および終了の文字列を最初の引数に取ります。
1408 場合は、アイテムの幅が固定幅文字 3 つ分より狭い場合にのみクォートされま
1409 す。これはリテラル (固定幅) のフォントの変更があまり気づかれないもので
1410 あるため、短い文字列を良く見えるようにするためです。
1412 プレフィックスマクロは呼び出し可能ではありませんが、解析されます。
1413 .Bl -tag -width (namexx -offset indent
1414 .It Li ".Pf ( Fa name2"
1421 (空白なし) マクロはサフィックス機能と同様の作用があります。
1426 .Bl -tag -width ".Aq Pa ctype.h ) ,xxxxxxxx" -compact -offset indent
1429 .It Li \&.Aq \&Ar ctype.h\ )\ ,
1433 .It Li \&.Bq \&Em Greek \&, French \&.
1434 .Bq Em Greek , French .
1437 .It Li ".Dq string abc ."
1439 .It Li ".Dq \'^[A-Z]\'"
1441 .It Li "\&.Ql man mdoc"
1445 .It Li "\&.Qq string ) ,"
1447 .It Li "\&.Qq string Ns ),"
1451 .It Li "\&.Sq string"
1455 囲いマクロの入れ子についての良い例については、
1459 このマクロは上でリストされているような囲いマクロと同じベースの上に
1470 .Ss no\-op もしくは通常テキストマクロ
1472 マクロはマクロコマンド行において、コンテントマクロの構文
1479 マクロはマクロ間での不要な空白を除去します。
1480 これはフラグと引数の間に空白を含まない古いスタイルの引数リストを使う
1482 .Bl -tag -width ".Op Fl I Ns Ar directoryxx" -offset indent
1483 .It Li ".Op Fl I Ns Ar directory"
1485 .Op Fl I Ns Ar directory
1499 マクロは同一文書内でのセクションのヘッダへの参照を
1500 指定します。これは解析され、呼び出し可能です。
1502 .Bl -tag -width "Li \&.Sx FILES" -offset 14n
1507 以下のマクロは多少なりとも参考文献を扱えるようにと意図したものです。
1508 これらのマクロは、せいぜい参照スタイルの参考文献のサブセットを手動で
1511 .Bl -tag -width 6n -offset indent -compact
1514 改行を挿入してから、参考文献の終了マクロが読み込まれるまで
1519 参考文献の作者名。1 回の呼び出しにつき、作者名をひとつ指定する。
1544 呼び出し側に戻る商標名マクロだけは解析されます。
1547 .Xr troff Ns / Ns Xr ditroff
1557 .Dl 使い方: .Rv [-std function]
1559 .Ql \&.Rv -std atexit
1562 .\" fake chapter 3 to avoid error message from Rv
1564 .\" and back to 7 again
1569 オプションはセクション 2 と 3 のマニュアルページでのみ有効です。
1571 商標名マクロは一般的に長さが 2 文字を越えるすべてが大文字の単語用に
1574 .Dl 使い方: .Tn symbol ... \*(Pu
1575 .Bl -tag -width ".Tn ASCII" -compact -offset 14n
1583 マクロは解析され、他のマクロから呼び出し可能です。
1588 マクロでマクロの境界における引数リストを
1592 が 1 行中に指定されていることを前提としているマクロの中では行に渡って
1595 以下に空白モードマクロをスペーシングをオフにするために
1599 .Bd -literal -offset indent
1601 \&.It Xo Sy I Ar operation
1602 \&.No \een Ar count No \een
1608 .Bd -filled -offset indent
1609 .Bl -tag -width flag -compact
1611 .It Xo Sy I Ar operation
1612 .No \en Ar count No \en
1619 .Bd -literal -offset indent
1621 \&.It Cm S No \&/ Ar old_pattern Xo
1622 \&.No \&/ Ar new_pattern
1629 .Bd -filled -offset indent
1630 .Bl -tag -width flag -compact
1632 .It Cm S No \&/ Ar old_pattern Xo
1633 .No \&/ Ar new_pattern
1644 .Bd -literal -offset indent
1647 \&.Oo \e&! Oc Ns Ar variable
1648 \&.Op Ar operator variable ...
1653 .Bd -filled -offset indent
1654 .Bl -tag -width flag -compact
1657 .Oo \&! Oc Ns Ar variable
1658 .Op Ar operator variable ...
1669 拡張マクロが使われることはあまりありません。使われるとすれば、リスト
1670 項目の引数リストを拡張する場合です。残念なことに、これが拡張マクロが
1671 最も懲り性であるところでもあります。最初の 2 つの例では、スペーシングは
1672 オフになっています。3 番目では、ある箇所にはスペーシングを入れることが
1673 望ましいのですが、出力全体に入れたいわけではありません。そのような状況
1674 でこれらのマクロが適切に動作するためには、
1678 マクロが 3 番目の例にあるように指定されていることを確認してください。
1683 置かれると、スペーシングがどうなるかは予測不可能です。
1686 (空白なしマクロ) は行中の最初もしくは最後の
1690 マニュアルページ (実際のページでは約 1500 ページ) のうち 15 の
1696 以下にリストされている、最初の 3 つのセクションヘッダマクロ
1698 はすべての man ページで必須のものです。
1699 残りのセクションヘッダはマニュアルページの作者の裁量において、
1702 マクロは 9 つまでの引数を取ることができます。
1703 これは解析されますが、呼び出し不可能です。
1704 .Bl -tag -width ".Sh SYNOPSIS"
1708 これが指定されていないと、ヘッダとフッタ、それにデフォルトの
1709 ページレイアウトが設定されず、結果はかなり好ましくないものになるでしょう。
1711 セクションは最低 3 つの項目からなります。
1715 なります。2 番目のものは名称説明マクロ
1718 サブジェクト名を 3 つめの項目、すなわちその名称の説明と分離します。
1719 説明に割り当てられるスペースは小さいものですので、
1720 できるだけ簡潔で分かりやすいものでなければなりません。
1723 (SYNOPSIS) セクションはその man ページのサブジェクト
1724 となっている項目の典型的な使用法を説明します。
1739 はセクション 2 と 3 のマニュアルページに
1740 おいて必須のもので、コマンドと一般名称マクロ
1743 セクション 1, 5, 6, 7, 8 で必須の項目です。
1749 コンフィギュレーションデバイス使用法マクロ
1752 その他のいくつかのマクロが下に示すような書式行を生成するために必要な
1755 .Bd -filled -offset indent
1765 .Dl \&.Op \&Fl benstuv
1779 .Dl ".Op Fl a | Fl b"
1783 は通常 \*(Ba を特別のオペレータとして
1784 解釈します。この他で \*(Ba が使える場合については
1789 (DESCRIPTION) セクションでの最初のテキストは、
1790 ほとんどの場合ではそのコマンド、関数もしくはファイルについての短い
1791 段落で、オプションの構文リストとそれぞれの説明がそれに続きます。
1808 のセクションヘッダはマニュアルページの好ましい
1809 レイアウトの一部であり、一貫性を保つために適切に使われなければ
1810 なりません。これらは使われる順番にリストされています。
1811 .Bl -tag -width SYNOPSIS
1814 (ENVIRONMENT) セクションは関連する環境変数を明らかにし、
1817 使用例、実行例を作成するには様々な方法があります。
1822 man ページのサブジェクトによって使用されるか生成されるファイルで、
1830 (SEE ALSO) セクションには、その man ページの題材に
1831 関する資料への参照と他の関連する man ページへのクロスリファレンスが
1838 セクション番号順に並べ、セクション中ではカンマで区切って
1839 アルファベット順に並べなければなりません。以下に例を示します。
1854 のような特定の実装によるものであれば、ここで記述します。
1855 コマンドがどの規格にも基づいていなければ、その歴史は
1857 (HISTORY)のセクションで説明されなければなりません。
1860 このセクションでその歴史の概要が説明されるべきです。
1862 クレジットが必要であれば、ここで入れます。
1864 コマンドからの診断はこのセクションに入れます。
1866 特定のエラーハンドリング、特にライブラリ関数
1867 (man ページのセクション 2, 3, 9) でのエラーハンドリングは、ここで説明します。
1869 マクロが errno を記述するために使われます。
1877 たとえば、このセクションは以下のように設定されています。
1878 .Bd -literal -offset 14n
1885 段落コマンドは必要な場合に行スペースを指定するために使われます。
1895 マクロは -compact フラグが指定されていなければ、
1898 .\" This worked with version one, need to redo for version three
1901 .\" .Cw (ax+bx+c) \ is\ produced\ by\ \&
1902 .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
1919 .\" .Em is produced by
1935 .\" This example shows the same equation in a different format.
1939 .\" signs were forced with
1943 .\" .Cw (ax\ +\ bx\ +\ c) \ is\ produced\ by\ \&
1944 .\" .\".Cw (ax+bx+c) \&.Va_by_) \&_and_\& \&[?/]m_b1_e1_f1[?/]\&
1955 .\" .Li \&.Cx \e\ +\e\ \e&
1966 .\" .Em is produced by
1974 .\" .Li \&.Cx \e\ +\e\ \e&
1985 .\" The incantation below was
1991 .\" .Cw \&[?/]m_b1_e1_f1[?/]\& is\ produced\ by
1993 .\" .Li \&.Cx Op Sy ?/
2003 .\" .Em is produced by
2005 .\" .Li \&.Ar \e\ b1 e1 f1
2017 現在実装されているキープは単語に対するものだけです。
2028 あり、これはオプションの途中で改行が入らないようにするのに便利です。
2035 ように使われています。 (実際には、オプションマクロがこの目的で使われて
2036 いましたが、オプションが行中にわたって散らばってしまうと一般的に見栄え
2040 行なう (宗教的な) 決定がなされてから、オプションマクロをこの目的で
2041 使わないようになりました。キープマクロについてはもっと機能を向上する
2044 オプションを追加していく必要があります。)
2046 ディスプレイには 5 つのタイプがあります。
2059 リテラルブロック、フィルブロックおよび凸凹ブロックです。
2061 .Bl -tag -width \&.Dlxx
2063 (D-いち) インデントされたテキストを 1 行表示します。
2064 このマクロは解析されますが、呼び出し不可能です。
2069 .Li \&.Dl Fl ldghfstru
2075 マクロの例は本ファイルの中に渡って使われています。
2076 これによって 1 行のテキストのインデント (表示) が可能になります。
2077 このマクロは解析され、他のマクロを認識することができますが、
2078 デフォルトのフォントは固定幅 (リテラル) にセットされています。
2081 .Dl % ls -ldg /usr/local/bin
2084 .Li \&.Dl % ls -ldg /usr/local/bin .
2092 ディスプレイはディスプレイ内およびリスト内で入れ子にすることができます。
2096 .Dl ".Bd ディスプレイタイプ [-offset オフセット値] [-compact]"
2098 ディスプレイタイプは以下の 4 つのタイプの内の 1 つでなければならず、
2101 のオフセット値を指定することができます。
2103 .Bl -tag -width "file file_name " -compact
2105 テキストのブロックをタイプされた通りに表示します。
2106 右マージン (と左マージン) のエッジは左に不揃いに寄せられます。
2108 フィル (フォーマット) されたブロックを表示します。
2109 テキストのブロックがフォーマットされます
2110 (エッジは左非揃えではなく、フィルされます)。
2112 リテラルなブロックを表示します。ソースコードや、単純にタブもしくは
2113 スペースで整えられたテキストで便利です。
2114 .It Fl file Ar ファイル名
2116 フラグに続く名称のファイルが読み込まれ、表示されます。表示
2117 はリテラルなモードで行われ、タブは定幅文字 8 つ分に固定されますが、
2119 .Xr troff/ Ns Nm \-mdoc
2121 .It Fl offset Ar string
2123 が以下の文字列のいずれかとともに指定されていると、
2124 その文字列は次のテキストのブロックのインデントのレベルを示すものとして
2127 .Bl -tag -width indent-two -compact
2134 ブロックを中央揃えにします。残念ながら現時点では、
2135 単にブロックの左側を仮想的な中央マージンに揃えるだけです。
2137 デフォルトのインデント値もしくはタブの分だけインデントします。
2141 これら 2 つのタイプのディスプレイを使った場合、
2143 このインデントは通常 6n か約 2/3 インチ (定幅文字 6 つ分) です。
2145 デフォルトのインデント値の 2 倍分インデントします。
2147 これはブロックをページの右端から約 2 インチ離して
2149 揃えします。このマクロはちゃんと動作する必要があるのですが、
2151 ではまったくちゃんと動作してくれていません。
2158 マニュアルページのテキストの見栄えを変更するマクロは 5 つあります。
2159 .Bl -tag -width \&.Emxx
2164 強調の場合、通常イタリック体のフォントが使われます。
2166 .Dl 使い方: .Em argument ... \*(Pu
2167 .Bl -tag -width ".Em vide infra ) ) ," -compact -offset 14n
2168 .It Li ".Em does not"
2170 .It Li ".Em exceed 1024 ."
2172 .It Li ".Em vide infra ) ) ,"
2183 は特殊文字や変数定数、その他タイプされた
2184 通りに表示する必要があるものに使用することができます。
2186 .Dl 使い方: .Li argument ... \*(Pu
2187 .Bl -tag -width ".Li cntrl-D ) ," -compact -offset 14n
2190 .It Li \&.Li M1 M2 M3\ ;
2192 .It Li \&.Li cntrl-D\ )\ ,
2194 .It Li \&.Li 1024\ ...
2201 シンボリック体強調マクロはシンボリックの意味でも
2205 .Dl 使い方: .Sy symbol ... \*(Pu
2206 .Bl -tag -width ".Sy Important Noticex" -compact -offset 14n
2207 .It Li \&.Sy Important Notice
2208 .Sy Important Notice
2223 フォントモードは他のフォントモードと入れ子にすることができます。
2229 font-mode は以下の 3 つのタイプのうちのいずれかでなければなりません。
2231 .Bl -tag -width "file file_name " -compact
2232 .It Sy \&Em | Fl emphasis
2235 マクロがテキストブロック全体に使われているのと同様です。
2236 .It Sy \&Li | Fl literal
2239 マクロがテキストブロック全体に使われているのと同様です。
2240 .It Sy \&Sy | Fl symbolic
2243 マクロがテキストブロック全体に使われているのと同様です。
2251 で開始されるリストにはいくつかのタイプが
2257 マクロで終了しなければなりません。リストはリスト自身や
2258 ディスプレイの中で入れ子にすることができます。列はリストの中で使うこと
2259 ができますが、リストが列の中で使えるかどうかは検証されていません。
2261 さらに、タグの幅、リストのオフセット、コンパクトさ(項目間の空白行が
2262 許されているかどうか) のような、いくつかのリストの属性を指定することが
2263 できます。本ドキュメントのほとんどはタグ
2266 フォーマットされています。各種リストタイプは、調子を変えるために
2273 tag リストで構成されたページを何ページも読んだ後には幾分変に見える
2282 これら 3 つは最も単純なリストのタイプです。
2288 マクロによってのみ構成される行で指定されます。
2289 例として、簡単な列挙リストのソーステキストは、このようになります。
2290 .Bd -literal -offset indent-two
2291 \&.Bl -enum -compact
2303 .Bl -enum -offset indent-two -compact
2312 簡単な bullet リスト構成の例を示します。
2313 .Bd -literal -offset indent-two
2314 \&.Bl -bullet -compact
2323 .Bl -bullet -offset indent-two -compact
2341 では、次のテキストへそのラベルを挿入します。
2343 では、次のテキストをラベルの位置へインデントします。
2345 (オーバーハング) では、次のテキストをラベルの位置に
2348 では、タグつきテキストの形式にします。ちなみに上のリストは
2352 マクロは inset, hang, tag のリストタイプでのみ解析され、
2353 呼び出し不可能です。以下に inset ラベルの例を示します。
2354 .Bl -inset -offset indent
2356 tag リスト (tag 段落とも呼ばれる) は、
2357 Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
2359 診断リストはセクション 4 の診断リストを生成するもので、
2360 呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
2364 ohang ラベルはスペースに制限がある時に便利です。
2366 inset ラベルは段落のブロックを制御するのに便利で、
2368 マニュアルを他の形式に変換する時に役立ちます。
2371 上の例を生成したソーステキストはこうなっています。
2372 .Bd -literal -offset indent
2373 \&.Bl -inset -offset indent
2375 \&tag リスト (tag 段落とも呼ばれる) は、
2376 \&Berkely マニュアルで使われているリストのうち最も一般的なタイプです。
2378 \&診断リストはセクション 4 の診断リストを生成するもので、
2379 \&呼び出し可能なマクロが無視されることを除き、inset リストと似ています。
2383 \&ohang ラベルはスペースに制限がある時に便利です。
2385 \&inset ラベルは段落のブロックを制御するのに便利で、
2387 \&マニュアルを他の形式に変換する時に役立ちます。
2391 以下は 2 つの項目を持つ hang リストです。
2392 .Bl -hang -offset indent
2395 ラベルは tag リストと同じようになります。
2396 .It Em 長い hang リストラベル
2401 これを生成している元のテキストは以下の通りです。
2402 .Bd -literal -offset indent
2403 \&.Bl -hang -offset indent
2405 \&ラベルがラベルの幅より小さいときには、
2406 \&ラベルは tag リストと同じようになります。
2407 \&.It Em 長い hang リストラベル
2408 \&は、tag 段落のラベルとは異なり、
2413 タグ幅を制御するためのオプションの幅指定を使ったタグつきリストは
2416 .Bl -tag -width PAGEIN -compact -offset indent
2418 プロセスが sleep している時間 (ブロックされた秒数)
2420 そのプロセスによるコアにロードされていないページへの参照による
2425 プロセスの所有者の数字表記によるユーザID
2427 親プロセスの数字表記によるID、プロセスの優先度
2428 (割り込み不可のウエイトであるときには非正値)
2432 .Bd -literal -offset indent
2433 \&.Bl -tag -width "PAGEIN" -compact -offset indent
2435 \&プロセスが sleep している時間 (ブロックされた秒数)
2437 \&そのプロセスによるコアにロードされていないページへの参照によるディスク
2441 \&プロセスの所有者の数字表記によるユーザID
2443 \&親プロセスの数字表記によるID、プロセスの優先度
2444 \&(割り込み不可のウエイトであるときには非正値)
2448 幅指定として以下のものを使うことができます。
2449 .Bl -tag -width Ar -offset indent
2450 .It Fl width Ar \&Fl
2451 そのフラグでのデフォルトの幅を指定します。すべての呼び出し可能なマクロ
2452 は各々デフォルトの幅の値を持っています。現在、
2455 文字 10 個分、もしくは約 5/6 インチとなっています。
2457 定幅文字 24 個分の幅、もしくは約 2 インチの幅をセットします。
2461 .It Fl width Ar ENAMETOOLONG
2462 指定された文字列の固定長に幅をセットします。
2463 .It Fl width Ar "\*qint mkfifo\*q"
2464 これも、指定された文字列の固定長に幅をセットします。
2468 タグつきリストタイプで幅が指定されていないと、
2471 起動された時に適した幅を決定することが試みられます。
2474 最初の引数が呼び出し可能なマクロであれば、そのマクロのデフォルトの幅が
2475 そのマクロ名が幅として指定されたように使用されます。しかしながら、その
2476 リスト中に他の項目が別の呼び出し可能なマクロ名で与えられていると、
2477 新しく入れ子となったリストとして処理されます。
2479 以下の文字列はあらかじめ定義されているものであり、troff の文字列解釈
2490 解釈シーケンスはテキストのどこでも使うことができます。
2492 .Bl -column "String " "Nroff " "Troff " -offset indent
2493 .It Sy "文字列 Nroff Troff"
2494 .It Li <= Ta \&<\&= Ta \*(<=
2495 .It Li >= Ta \&>\&= Ta \*(>=
2496 .It Li Rq Ta '' Ta \*(Rq
2497 .It Li Lq Ta `` Ta \*(Lq
2498 .It Li ua Ta ^ Ta \*(ua
2499 .It Li aa Ta ' Ta \*(aa
2500 .It Li ga Ta \` Ta \*(ga
2501 .\" .It Li "sL" Ta ` Ta \*(sL
2502 .\" .It Li "sR" Ta ' Ta \*(sR
2503 .It Li q Ta \(dq Ta \*q
2504 .It Li Pi Ta pi Ta \*(Pi
2505 .It Li Ne Ta != Ta \*(Ne
2506 .It Li Le Ta <= Ta \*(Le
2507 .It Li Ge Ta >= Ta \*(Ge
2508 .It Li Lt Ta < Ta \*(Gt
2509 .It Li Gt Ta > Ta \*(Lt
2510 .It Li Pm Ta +- Ta \*(Pm
2511 .It Li If Ta infinity Ta \*(If
2512 .It Li Na Ta \fINaN\fP Ta \*(Na
2513 .It Li Ba Ta \&| Ta \*(Ba
2524 は限られたデバッグ機能しか持っていませんが、
2525 引数名と内部レジスタやマクロ名との衝突のような
2526 潜在的なエラーを検出するのに役立ちます。 (A って何?)
2530 1 文字か 2 文字の名称がついています。
2538 のように2 文字からなる <大文字><小文字> の形式か、
2540 のように <小文字><大文字> の形式か、
2542 のように <大文字もしくは小文字><数字>
2547 それらすべては小文字 2 文字か、ドットに文字もしくはメタ文字が続く形式を取ります。
2548 紹介例の 1 つに、エスケープシーケンス
2551 解釈させない方法がありました。これは内部レジスタ名にも有効です。
2553 .\" Every callable macro name has a corresponding register
2554 .\" of the same name (<upper_case><lower_case>).
2555 .\" There are also specific registers which have
2556 .\" been used for stacks and arrays and are listed in the
2558 .\" .Bd -ragged -offset 4n
2559 .\" [A-Z][a-z] registers corresponding to macro names (example ``Ar'')
2560 .\" [a-z][A-Z] registers corresponding to macro names (example ``aR'')
2561 .\" C[0-9] argument types (example C1)
2562 .\" O[0-9] offset stack (displays)
2563 .\" h[0-9] horizontal spacing stack (lists)
2564 .\" o[0-9] offset (stack) (lists)
2565 .\" t[0-9] tag stack (lists)
2566 .\" v[0-9] vertical spacing stack (lists)
2567 .\" w[0-9] width tag/label stack
2570 エスケープされていないレジスタ名が引数リストに指定されると、
2572 一般的には、テキストのかなり大きな部分が出力されるべきところに
2573 出力されないとか、リストのタグのような小さな文字列が消えてしまうとか、
2574 引数リストの中の引数のタイプが間違って解釈されるとかいうことが、起こり得ます。
2575 きっとあなたのお母さんは、あなたにこんな面倒なことを覚えるようにとは
2577 そこで、与えられた引数が有効か無効かを判断する方法があります。
2581 (デバッグ) マクロによってほとんどのマクロ
2582 の引数リストがどう解釈されるかを表示することができます。
2584 (段落) マクロのようなマクロはデバッグ情報を含んでいません。呼び出し可能
2585 なマクロはすべてデバッグ情報を含んでおり、疑いがある場合はいつでも
2587 マクロをオンにすることを強くお勧めします。
2589 .Dl 使い方: \&.Db [on | off]
2591 以下の例では、問題が故意に発生するようにされた部分の上と下で
2598 .Bd -literal -offset indent
2600 \&.Op Fl aC Ar file )
2605 .Bd -literal -offset indent
2607 DEBUG(argv) MACRO: `.Op' Line #: 2
2608 Argc: 1 Argv: `Fl' Length: 2
2609 Space: `' Class: Executable
2610 Argc: 2 Argv: `aC' Length: 2
2611 Space: `' Class: Executable
2612 Argc: 3 Argv: `Ar' Length: 2
2613 Space: `' Class: Executable
2614 Argc: 4 Argv: `file' Length: 4
2615 Space: ` ' Class: String
2616 Argc: 5 Argv: `)' Length: 1
2617 Space: ` ' Class: Closing Punctuation or suffix
2618 MACRO REQUEST: .Op Fl aC Ar file )
2622 この情報の最初の行では呼び出されているマクロの名称が出力されています。
2625 とそれが現れた行番号が表示されています。
2627 (特にテキストが他のファイルからインクルードされている場合)、
2629 ファイルが 1 つだけの場合には正しい行番号が出力されます。
2633 出力されています。引数の長さが 2 文字であれば、
2635 (ゼロでない値を含むすべてのレジスタは実行可能なように見えます)
2637 3 番目の行ではそのクラスで指定されているスペースとクラスタイプが
2639 ここでの問題は引数 aC が実行不可能でなければならないことです。
2640 クラスの 4 つのタイプは文字列、実行可能、閉じる句読点、開く句読点です。
2641 最後の行では引数リスト全体が読み込まれた通りに表示されています。
2645 .Bd -literal -offset indent
2647 \&.Em An escaped \e&aC
2650 .Bd -literal -offset indent
2652 DEBUG(fargv) MACRO: `.Em' Line #: 2
2653 Argc: 1 Argv: `An' Length: 2
2654 Space: ` ' Class: String
2655 Argc: 2 Argv: `escaped' Length: 7
2656 Space: ` ' Class: String
2657 Argc: 3 Argv: `aC' Length: 2
2658 Space: ` ' Class: String
2659 MACRO REQUEST: .Em An escaped &aC
2667 は先の例と同様に長さ 2 と表示されています。
2673 この他の診断は使用方法を報告するものであり、
2675 .Sh GROFF, TROFF, NROFF
2685 されるヘッダとフッタは禁止されており、マニュアルをオンラインで効率良く
2686 見ることができるようになっています。現在の所、
2691 はページ内容の無いファイル末の残りの部分まで
2692 出力します。改ページを禁止することによって
2695 ハードコピーには適さないものとなっています。サイト依存のスタイル
2697 .Pa /usr/src/share/tmac/doc-nroff
2701 の名称を持つレジスタが古いスタイルの振る舞い
2704 .Bl -tag -width /usr/share/man0/template.doc -compact
2705 .It Pa /usr/share/tmac/doc.tmac
2707 .It Pa /usr/share/misc/mdoc.template
2709 .It Pa /usr/share/examples/mdoc/*
2713 フラグ引き数のダッシュが意図せずハイフンにより折り返しになるバグは
2717 意図しない動作 (ハイフンでの改行) が起こることがある。
2719 あらかじめ定義されている文字列は文書において宣言されていません。
2721 セクション 3f はヘッダルーチンには追加されていません。
2730 は分割されるのを防止するために、行の長さが短すぎないか
2731 どうかをチェックする必要があります。ときどき、最後の括弧が分割される
2732 ことがあり、行がフィルモードであるときには全くおかしな結果になること
2735 nroff 使用時に、(最初のヘッダとフッタ以外の) 改ページ時のヘッダと
2736 フッタの挿入を行わないようにするのに使用される命令によって、
2737 ときどき見るに耐えない部分的な行詰め (や空行) がページの末尾に
2740 .\" Note what happens if the parameter list overlaps a newline
2742 .\" to make sure a line boundary is crossed:
2744 .\" \&.Fn struct\e\ dictionarytable\e\ *dictionarylookup struct\e\ dictionarytable\e\ *tab[]
2747 .\" produces, nudge nudge,
2748 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
2749 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] ,
2751 .\" .Fn struct\ dictionarytable\ *dictionarylookup char\ *h struct\ dictionarytable\ *tab[] .
2753 .\" If double quotes are used, for example:
2755 .\" \&.Fn \*qstruct dictionarytable *dictionarylookup\*q \*qchar *h\*q \*qstruct dictionarytable *tab[]\*q
2758 .\" produces, nudge nudge,
2759 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
2761 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" ,
2763 .\" .Fn "struct dictionarytable *dictionarylookup" "char *h" "struct dictionarytable *tab[]" .
2765 .\" Not a pretty sight...
2766 .\" In a paragraph, a long parameter containing unpaddable spaces as
2767 .\" in the former example will cause
2769 .\" to break the line and spread
2770 .\" the remaining words out.
2771 .\" The latter example will adjust nicely to
2772 .\" justified margins, but may break in between an argument and its
2776 .\" the right margin adjustment is normally ragged and the problem is
2778 リストマクロとディスプレイマクロはキープを行いませんが、
2789 一部である。プロジェクトの説明とバグ報告に関する情報は
2790 http://www.kernel.org/doc/man-pages/ に書かれている。