EN JA
GROFF_MS(7)
GROFF_MS(7) FreeBSD Miscellaneous Information Manual GROFF_MS(7)

名称

groff_ms - groff ms マクロ

書式

groff -ms [ options... ] [ files... ]
 
groff -m ms [ options... ] [ files... ]

解説

このマニュアルページは、GNU バージョンの ms マクロの解説をします。このマクロは、 groff 写植システムの一部分です。この ms マクロは、4.3 BSD Unix ms マクロの文書化された機能と互換であるように設計されています (詳細は後述の troff ms との違い を参照してください)。 ms マクロは、報告書、手紙、書籍、技術文書に適しています。

使用法

ms マクロパッケージは、ファイルにある程度の構造があることを期待しています。最も単純な文書は、段落マクロで開始し、段落マクロか単なる空行で区切られたテキストからなります。長い文書は、次の構造を持ちます:
文書タイプ
文書の先頭に RP (報告書) マクロを置くと、 groff は表紙の情報をそのページに印字します。そうでない場合は、この情報は最初のページに印字され、直後に文書のテキストが続きます。 AT&T troff の他の文書書式は、AT&T か Berkeley 固有であり、 groff ms ではサポートされていません。
書式とレイアウト
数値レジスタを設定することで、文書の活字 (フォントと大きさ)、マージン、間隔、ヘッダ、フッタ、脚注を変えられます。詳細は後述の 文書制御レジスタ を参照してください。
表紙
表紙ページは、タイトル、省略可能な著者名と組織名、アブストラクト、日付からなります。さらなる詳細は後述の 表紙ページマクロ を参照してください。
本文
表紙ページに、あなたの文書が続きます。これは、段落、見出し、リストからなります。
目次
長い文書は、通常、目次を含みます。これは、文書の最後に TC マクロを置くことで可能となります。

文書制御レジスタ

次の表は、文書制御レジスタを列挙しています。一貫性のために、マージンに関するレジスタは、文書の先頭で、もしくは RP マクロの直後で設定してください。

マージン設定

テキスト設定

段落設定

脚注設定

他の設定

表紙ページマクロ

次のマクロを次の順序で使用することで、文書の表紙ページを作成してください。
.RP [no]
文書の報告書書式を指定します。報告書書式は、独立した表紙ページを作成します。 RP マクロを指定しないと、 groff は、表紙のサブセットを文書のページ 1 に印字します。
省略可能な no 引数を使用すると、 groff は表紙ページを印字しますが、表紙ページ情報 (タイトル、著者、アブストラクト等) を文書のページ 1 に続けません。
.P1
(P に数字の 1) ページ 1 にヘッダを印字します。デフォルトは、ヘッダを抑制します。
.DA [ xxx ]
(省略可能) 現在の日付かマクロに引数があればそれを、表紙ページ (指定されていれば) とフッタに印字します。これは nroff のデフォルトです。
.ND [ xxx ]
(省略可能) 現在の日付かマクロに引数があればそれを、表紙ページ (指定されていれば) に印字しますが、フッタには印字しません。これは troff のデフォルトです。
.TL
文書のタイトルを指定します。 groffTL マクロから著者かアブストラクトまでのテキストを集め、タイトルとします。
.AU
著者名を指定します。複数の著者を指定するには、各著者に対して AU マクロを使用します。
.AI
著者の組織を指定します。複数の組織を指定可能です。
.AB [no]
アブストラクトを開始します。デフォルトでは、語 ABSTRACT を中央寄せイタリックにて、アブストラクトのテキストの上に印字します。オプションの no は、この見出しを抑制します。
.AE
アブストラクトの終了です。

段落

インデント付きの段落を作成するには PP マクロを使用し、初期インデント無しの段落を作成するには LP マクロを使用します。

QP マクロは、すべてのテキストを、左および右のマージンに対してインデントします。効果は、HTML の <BLOCKQUOTE> 要素と同じです。次段落や見出しは、マージンを通常に戻します。

XP マクロは、拡張段落を生成します。段落の最初の行は左マージンから開始し、続く行がインデントされます ( PP の逆です)。

上記の段落タイプのそれぞれについて、また、 IP マクロ (後述) によって導入された任意のリストエントリについては、文書制御レジスタ PORPHANS は、段落の始まりの後で改ページが起こる前に、印字しなければならない行の 最小 値を設定します。この行数に収納するための現在のページに空白行が残っていないなら、段落の最初の行が印字される 前に 強制的に改ページします。

同様に、セクション見出し (下記のサブセクション 見出し を参照) が、これらの段落タイプのいずれかに先行するとき、 HORPHANS 文書制御レジスタは、見出しと同じページに保持しなければならない段落の行の 最小 値を指定します。見出しとこの段落テキストの行数を収納するための現在のページに空白行が残っていないなら、見出しが印字される 前に 強制的に改ページされます。

見出し

文書に階層構造を作成するには、見出しを使用します。デフォルトでは ms マクロは、本文と同じフォントファミリで同じポイントサイズの ボールド にて、見出しを印字します。スケーラブルフォントをサポートする出力デバイスについて、文書管理レジスタ GROWPSPSINCR を定義することによって、この振る舞いは変更することができます。

次の見出しマクロが使用可能です:

.NH  xx
数字付き見出し。引数 xx は、見出しのレベルを示す数値引数であるか、 S xx xx "..."という形式の明示的なセクション番号です。順番からは外れた見出しレベル、例えば .NH 1 の後に .NH 3 を指定すると、 groff は標準エラーに警告を表示します。
GROWPS レジスタが見出しのレベルより大きい値に設定されているなら、見出しのポイントサイズは、見出しレベルが GROWPS の値未満である各レベルのために、 PS レジスタによって指定されたテキストサイズを超えて PSINCR 単位で増加されます。例えば、次のシーケンス:
.nr PS 10
.nr GROWPS 3
.nr PSINCR 1.5p
.
.NH 1
Top Level Heading
.
.NH 2
Second Level Heading
.
.NH 3
Third Level Heading
1. Top Level Heading”は、13pt (ポイント) の ボールド テキストで印字され、続く“ 1.1. Second Level Heading”は、11.5pt (ポイント) の ボールド テキストで印字され、一方“ 1.1.1. Third Level Heading”, とすべてのより深い入れ子の見出しレベルは PS レジスタで指定された 10pt (ポイント) の ボールド テキストで印字されます。
PSINCR に格納された値は groff の基本単位で解釈されることに注意してください。ポイントで指定された値を割り当てるとき、 p スケーリング因子が使用されるべきです。
.NH を呼び出した後に、割り当てられた見出し番号は、文字列 SN-DOT (ぴったりフォーマットされた見出しに現れるように) と SN-NO-DOT (最後のピリオドは省略される) で利用可能です。また、文字列 SNSN-DOT のアイリアス (別名) として定義されています。望むなら、ユーザは、初期化部分に次を含めることによって SN-NO-DOT のためのアイリアスとして再定義することができます:
最初に .NH を使用する なら、
.ds SN-NO-DOT
.als SN SN-NO-DOT
最初に .NH を使用した なら、単に:
.als SN SN-NO-DOT
とします。
.SH [ xx ]
数字無しの副見出しです。省略可能な xx 引数の使用は、GNU の拡張で、 xx と同じ値で .NH  xx を使用して導入された数字付きの見出しと適合する数字無しの副見出しのポイントサイズを調整します。例えば、前の .NH の例で使用したように、 PS, GROWPSPSINCR のためと同じ設定を与えます、次のシーケンス:
.SH 2
An Unnumbered Subheading
は、11.5pt (ポイント) の ボールド テキストで“ An Unnumbered Subheading”を印字します。

強調印字

ms マクロには、テキストを強調するための様々な方法があります:
.B [ txt [ post [ pre]]]
最初の引数を ボールドタイプ にします。第 2 引数を指定すると、 groff は、それを以前のフォントにて、空白を挟まずに印字します (強調テキストの後に、句読点を強調せずに置けます)。同様に、(存在すれば) 第 3 引数を以前のフォントにて、最初の引数の に印字します。例えば
.B foo ) (
は次のように印字されます: ( foo)
このマクロに引数を指定しないと、次の強調・段落・見出しマクロまでの後続するすべてのテキストを、 groff はボールドで印字します。
.R [ txt [ post [ pre]]]
最初の引数をローマン (通常) タイプにします。他は B マクロと同様に動作します。
.I [ txt [ post [ pre]]]
最初の引数を イタリックタイプ にします。他は、 B マクロと同様に動作します。
.CW [ txt [ post [ pre]]]
最初の引数を等幅フェースにします。他は B マクロと同様に動作します。
.BI [ txt [ post [ pre]]]
最初の引数をボールドイタリックタイプにします。他は B マクロと同様に動作します。
.BX [ txt ]
引数を印字し、その周りに箱 (ポックス) を描きます。空白を含む文字列を箱で囲みたい場合、数値幅の空白 (\0) を使用してください。
.UL [ txt [ post ]]
最初の引数を下線付きで印字します。第 2 引数を指定すると、 groff は、それを以前のフォントにて、空白を挟まずに下線付きテキストの後に印字します。
.LG
次のフォントサイズ・強調・段落・見出しマクロまでの後続するすべてのテキストを、大きなタイプ (現在のポイントサイズより 2 ポイント大) で印字します。このマクロを複数回指定することで、必要な大きさになるまでポイントサイズを大きくすることができます。
.SM
次のフォントサイズ・強調・段落・見出しマクロまでの後続するすべてのテキストを、小さなタイプ (現在のポイントサイズより 2 ポイント小) で印字します。このマクロを複数回指定することで、必要な小ささになるまでポイントサイズを小さくすることができます。
.NL
後続するすべてのテキストを通常のポイントサイズ ( PS レジスタの値) で印字します。
\*{ text \*}
括られた テキスト を上付き文字として印字します。

インデント

テキストの一部をインデントする必要があるかもしれません。典型的なインデントの使用法は、入れ子のリストやサブリストを作成することです。

インデントされたテキスト部分の開始と終了には、それぞれ RS および RE のマクロを使用します。 PI レジスタは、インデント量を制御します。

RS および RE の組を入れ子で使用することで、インデントされた部分を必要なだけ深く入れ子にすることができます。

リスト

IP マクロは、すべてのリストの仕事を操作します。この構文は次の通りです:
.IP [ marker [ width ]]
marker は、通常、順番無しリストでは中黒文字 \(bu、番号付きリストでは番号 (または自動的に増加する数値レジスタ)、インデント付き (用語解説スタイル) リストでは語や句です。
width は、各リスト項目の本文用のインデントを指定します。ひとたび指定すると、次に指定されるまで、文書中のすべてのリスト項目に対してインデントは同じままです。
 

タブストップ

必要に応じてタブストップを設定するには ta リクエストを使用します。タブストップをデフォルト (5n 毎) に戻すには TA マクロを使用します。別のデフォルトタブストップ集合を作りたい場合には、 TA マクロを再定義します。

ディスプレイとキープ

テキストベースの例や図 (コードリスト等) を印字するには、ディスプレイを使用します。ディスプレイはフィルをオフにしますので、各行の間に br リクエストを挿入せずにコードがそのまま印字されます。ディスプレイは、単一ページ上に キープ することもできますし、ページをまたがった分割を許すこともできます。

ディスプレイタイプを終了するには DE マクロを使用します。マクロ DsDe は、以前に、それぞれ DSDE のアイリアスとして提供されましたが、それらは削除されており、もう使用するべきではありません。実際に DsDe を使用する X11 文書では、2 つのマクロのための適切な定義を提供する X11 配布から特定のマクロファイル (macros.t) を常にロードするとしています。

直後に続く表 (やリストや他の項目) を参照する段落等、テキストを同じページに キープ するには、 KS および KE のマクロを使用します。 KS マクロは、単一ページにキープされるべきテキストブロックを開始し、 KE マクロはそのブロックを終了します。

フローティングキープ は、 KF および KE のマクロで指定可能です。このキープが現在のページに入り切らない場合、 groff はキープの内容を保持し、(ソースファイル中で) キープに続くテキストで現在のページの残りを埋めます。改ページ時、すなわち明示的な bp リクエスト時もしくはページの終了時に、 groff は新規ページの先頭にフローティングキープを印字します。指定したその場所に現れる必要が無い大きなグラフィックや表を印字するときに有用です。

箱の中にテキストを入れるために、マクロ B1B2 を使用することができます。 .B1 で箱を開始し、 .B2 でそれを終了します。箱の中のテキストは自動的に転用 (diversion) (キープ) に入れられます。

表、図、式、参照

-ms マクロは標準の groff プリプロセッサ tbl, pic, eqn, refer をサポートします。プリプロセッサ用のテキストは、次のタグの組で括ってください:
.TS [H].TE
tbl プリプロセッサで処理されるべき表を表現します。オプションの H 引数は、 TH マクロまでの情報を使用して、ランニングヘッダを作成すべきことを groff に指示します。 groff は表の先頭にヘッダを印字し、表が別のページにまたがるときには次ページにも groff はヘッダを印字します。
.PS.PE
pic プリプロセッサで処理されるべきグラフィックを表現します。 pic ファイルは、ウェブから入手可能な AT&T pic マニュアルを参考にして手動で作成できますし、 xfig のようなグラフィックプログラムを使用して作成することも可能です。
.EQ [ ,align/].EN
eqn プリプロセッサで処理されるべき式を表現します。オプションの align 引数は、 C, L, I のいずれかであり、式をそれぞれ中央寄せ (デフォルト)、左寄せ、インデントします。
.[.]
refer プリプロセッサで処理されるべき参照を表現します。 GNU refer(1) マニュアルページは、プリプロセッサの分かり易い参照と、参考文献データベースの書式を解説しています。

脚注

ms マクロは、柔軟な脚注システムを提供します。数字付き脚注は、 \** エスケープに、 FS および FE のマクロに括られた脚注テキストを続けることで、指定可能です。

シンボルの脚注は、印の文字 (例えば \(dg はダガー文字) を本文に置き、これに続けて FS \(dg および FE のマクロで括られた脚注テキストを続けることで、指定可能です。

groff が脚注番号を印字する方法は、 FF レジスタを次のように変えることで、制御可能です:

0
脚注番号を上付き文字として印字し、脚注をインデントします (デフォルト)。
1
番号に続けてピリオドを印字し (例えば 1.)、脚注をインデントします。
2
1 に似ていますが、インデントしません。
3
1 に似ていますが、脚注番号をぶら下がり段落として印字します。

脚注は、キープおよびディスプレイ中で安全に使用可能ですが、フローティングキープ中では、番号付き脚注の使用は避けてください。第 2 の \** を、 \** とこれに対応する .FS の間に置けます。ただし、各 .FS は対応する \** に置かれ、 .FS の登場順序は対応する \** の登場順序と同じであることが必要です。

ヘッダとフッタ

ヘッダとフッタを定義する方法が 2 通りあります:
文字列 LH, CH, RH を使用して、左・中央・右のヘッダを設定します。 LF, CF, RF を使用して、左・中央・右のフッタを設定します。奇数ページと偶数ページを区別しない文書で、もっとも良く動作します。
OHEH のマクロで、偶数ページと奇数ページのヘッダを定義します。 OFEF のマクロで、偶数ページと奇数ページのフッタを定義します。これは、個別の文字列を定義するより柔軟な方法です。これらのマクロの構文は次の通りです:
.OH ' left' center' right'
クォート (') は、ヘッダやフッタのテキストに登場しない任意の文字に置き換え可能です。

マージン

マージンの制御は、数値レジスタを設定することで行います。次の表は、レジスタ名とデフォルトを列挙します:

右マージン設定が無いことに注意してください。ページオフセットと行長の組み合わせが、右マージンを算出する情報を提供します。

複数カラム

ms マクロは、ページにうまく納めるように、テキストを複数カラムに植字可能です。次のマクロが使用可能です。複数カラムモードが既に設定済みの場合、これらは改ページを強制します。しかしながら、現在のモードが単一カラムであり、複数カラムを開始する場合には、改ページを強制 しません
.1C
単一カラムモード。
.2C
2 カラムモード。
.MC [ width [ gutter ]]
複数カラムモード。引数を指定しない場合には、 2C マクロと等価です。そうでない場合、 width は、各カラムの幅であり、 gutter はカラム間の空間です。 MINGW 数値レジスタが、デフォルトのガター幅です。

目次の作成

目次に登場させたいテキストを XS および XE のマクロで包んでください。 TC マクロは、目次を文書の最後に印字し、ページ番号を i (ローマ数字の 1) にリセットします。

XS の最初の引数としてページ番号を指定することで、目次を手動で作成可能です。続くエントリを XA マクロを使用して追加してください。例えば:


.XS 1
Introduction
.XA 2
A Brief History of the Universe
.XA 729
Details of Galactic Formation
...
.XE

ページ番号をリセットせずに、手動で生成された目次を印字するには、 PX マクロを使用してください。

PX もしくは TC に引数 no を指定すると、 groff\*[TOC] 文字列で指定されたタイトルの印字を抑制します。

小数のポイントサイズ

伝統的に、 ms マクロは、文書のフォントサイズと垂直行送りのための整数値のみをサポートしています。この制限を打開するために、1000 以上の値は、1000 を掛けられた小数点値とみなされます。例えば、`.nr PS 10250' はフォントサイズを 10.25 ポイントに設定します。

次の 4 つのレジスタは小数のポイントサイズを受け付けます: PS, VS, FPSFVS

後方互換性のために、 VS の値は、40000 (これは、40.0 ポイントです) より小さくなければなりません。

troff ms との違い

groff ms マクロは、完全な再実装であり、元々の AT&T のコードは使用されていません。 groff の拡張機能を使用していますので、これらは、AT&T の troff では使用できません。他の違いは次の通りです:
groff ms の内部は、Unix ms の内部とは同じではありません。したがって、 Unix ms の実装の細部に依存する書式については、 groff ms で機能しないとしてももっともでしょう。
エラー処理の方針については、 groff ms は、沈黙したままエラーを無視したりせず、エラーを検出してレポートします。
Bell Labs 方言は実装されていません。
Berkeley 方言、特に、 TMCT マクロは、実装されていません。
groff ms は、互換モードでは機能しません (例えば、 -C オプションなど)。
タイプライタ様のデバイスには、サポートはありません。
groff ms では、カットマークは提供しません。
重複した行送りは許されません (代わりに、大きな垂直行送りを使用して下さい)。
ある Unix ms の文書には、数値レジスタの CWGW とが、それぞれカラム幅とガター幅を制御する為に使用できると述べられています。これらの数値レジスタは、 groff ms では使用されません。
リセットを引き起こすマクロ (段落や見出し等) はインデントを設定します。インデントを変更するマクロはインデントを増減するのではなく、むしろインデントを絶対的に設定します。このことによって、独自のマクロを追加定義している文書に問題が生じるかも知れません。これを解決するには、 in リクエストを用いずに、代わりに RSRE マクロを用いて下さい。
数値レジスタの GS は、 groff ms マクロによって 1 に設定されます。しかし、この数値レジスタは、Unix ms マクロでは使用されていません。このレジスタの目的は、 Unix msgroff ms かのどちらによってフォーマットされているのかを判定する必要のある文書によって利用されることです。
groff ms をデフォルトのページオフセット (左のマージンも指定します) で使用するためには、 PO 数値レジスタは、最初の ms マクロが評価されるまで、未定義の状態のままでなければなりません。それが変更されない場合も、 PO は文書の早期で使用されるべきでないことを意味します: 未定義のレジスタにアクセスすることは自動的にそれが定義されることを思い出してください。
 

文字列

次の文字列は、 groff ms マクロを英語以外の言語に適合させるために再定義することができます:

\*- 文字列は、em ダッシュを印字します—こんな感じです。

\*Q\*U を使用して、 troff (と nroff の明白なクォート) で、それぞれ左右の活版技術上のクォートを取得します。

 

テキスト設定

FAM 文字列は、デフォルトのフォントファミリを設定します。この文字列が初期化時に未定義の場合、Times に設定されます。

脚注のポイントサイズ、垂直行送り幅、そして段落間の行送り幅は、数値レジスタの FPS, FVSFPD で制御されます。初期化時に、これらは、それぞれ \n(PS-2, \n[FPS]+2, と \n(PD/2 に設定されます。しかし、これらのレジスタのいずれかでも初期化前に定義されていれば、初期化マクロはこれらを変更しません。

( hy リクエストによって設定される) ハイフネーションフラグは、 HY レジスタから取られて設定されます。デフォルトは、14 です。

(元々 Berkeley の ms バージョンで定義された) 進歩したアクセント記号は、文書の先頭で AM マクロを定義することで使用可能です。対象となる文字の直後に、アクセントを定義する文字列を指定することで、ほとんどの文字にアクセントを置けます。例えば n\*~ は、n の上にチルダを置いたものを生成します。

命名規則

次のような命名規則が、マクロ、文字列そして数値レジスタに適用されています。 groff ms マクロを使用する文書に利用出来る外部名は、大文字と数字だけからなります。

内部的には、マクロはモジュールに分割されます。命名規則は次の通りです:

ある一つのモジュールの中だけで使用される名前は、 module * name という形をしています。
定義されているモジュールの外部で使用される名前は、 module @ name という形をしています。
ある特別の環境に関わる名前は、 environment : name という形をしています。これらの名前は、 par モジュールの中でのみ使われます。
name には、モジュールは接頭辞としてつきません。
組み合わされた名前で配列を実装するのに使われるものは、 array ! index という形をしています。

以上より groff ms では以下の名前を予約しています:

*, @, : を含んでいる名前。
大文字と数字だけを含んでいる名前。

関連ファイル

/usr/share/tmac/ms.tmac ( s.tmac のラッパファイル)
 
/usr/share/tmac/s.tmac

関連項目

groff(1), troff(1), tbl(1), pic(1), eqn(1), refer(1), Groff: The GNU Implementation of troff by Trent Fisher and Werner Lemberg.

作者

元々のマニュアルページは、James Clark 等によって書かれ、 Larry Kollar ( lkollar@despammed.com) によって書き直されました。
17 January 2014 Groff Version 1.19.2