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 マクロの直後で設定してください。

マージン設定
    レジスタ | 定義 | 効果対象 | デフォルト
    PO | ページオフセット (左マージン) | 次ページ | 1i
    LL | 行長 | 次段落 | 6i
    LT | ヘッダ/フッタ長 | 次段落 | 6i
    HM | トップ (ヘッダ) マージン | 次ページ | 1i
    FM | ボトム (フッタ) マージン | 次ページ | 1i

テキスト設定
    レジスタ | 定義 | 効果対象 | デフォルト
    PS | ポイントサイズ | 次段落 | 10p
    VS | 行間 (先行) | 次段落 | 12p

段落設定
    レジスタ | 定義 | 効果対象 | デフォルト
    PI | 初期インデント | 次段落 | 5n
    PD | 段落間の間隔 | 次段落 | 0.3v
    QI | 引用段落のインデント | 次段落 | 5n

脚注設定
    レジスタ | 定義 | 効果対象 | デフォルト
    FL | 脚注の長さ | 次の脚注 | LL*5/6
    FI | 脚注のインデント | 次の脚注 | 2n
    FF | 脚注の書式 | 次の脚注 | 0

他の設定
    レジスタ | 定義 | 効果対象 | デフォルト
    MINGW | カラム間の最小幅 | 次ページ | 2n

  表紙ページマクロ
次のマクロを次の順序で使用することで、文書の表紙ページを作成してください。

.RP [no]
    文書の報告書書式を指定します。 報告書書式は、独立した表紙ページを作成します。 RP マクロを指定しないと、 groff は、表紙のサブセットを文書のページ 1 に印字します。

    省略可能な no 引数を使用すると、 groff は表紙ページを印字しますが、表紙ページ情報 (タイトル、著者、アブストラクト等) を文書のページ 1 に続けません。

.P1 (P に数字の 1) ページ 1 にヘッダを印字します。 デフォルトは、ヘッダを抑制します。

.DA [xxx]
    (省略可能) 現在の日付かマクロに引数があればそれを、 表紙ページ (指定されていれば) とフッタに印字します。 これは nroff のデフォルトです。

.ND [xxx]
    (省略可能) 現在の日付かマクロに引数があればそれを、 表紙ページ (指定されていれば) に印字しますが、フッタには印字しません。 これは troff のデフォルトです。

.TL 文書のタイトルを指定します。 groff は TL マクロから著者かアブストラクトまでのテキストを集め、タイトルとします。

.AU 著者名を指定します。 複数の著者を指定するには、各著者に対して AU マクロを使用します。

.AI 著者の組織を指定します。 複数の組織を指定可能です。

.AB [no]
    アブストラクトを開始します。 デフォルトでは、語 ABSTRACT を中央寄せイタリックにて、アブストラクトのテキストの上に印字します。 オプションの no は、この見出しを抑制します。

.AE アブストラクトの終了です。

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

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

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

  見出し
文書に階層構造を作成するには、見出しを使用します。 ms マクロでは、本文と同じフォントファミリで同じポイントサイズの ボールド にて、見出しを印字します。

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

.NH xx
    数字付き見出し。 引数 xx は、見出しのレベルを示す数値引数であるか、 S xx xx "..." という形式の明示的なセクション番号です。 順番からは外れた見出しレベル、例えば .NH 1 の後に .NH 3 を指定すると、 groff は標準エラーに警告を表示します。

.SH 数字無しの副見出しです。

  強調印字
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 リクエストを挿入せずにコードがそのまま印字されます。 ディスプレイは、単一ページ上に キープ することもできますし、ページをまたがった分割を許すこともできます。
    ディスプレイマクロ | ディスプレイのタイプ
    キープ有 | キープ無
    .DS L | .LD | Left-justified.
    .DS I [indent] | .ID | インデント付き (デフォルトのインデントは DI レジスタ値)。
    .DS B | .BD | ブロック中央寄せ (左寄せで、最長行が中央寄せされます)。
    .DS C | .CD | 中央寄せ。
    .DS R | .RD | 右寄せ。

ディスプレイタイプを終了するには DE マクロを使用します。

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

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

  表、図、式、参照
-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 を使用して、左・中央・右のフッタを設定します。 奇数ページと偶数ページを区別しない文書で、もっとも良く動作します。

•   OH と EH のマクロで、偶数ページと奇数ページのヘッダを定義します。 OF と EF のマクロで、偶数ページと奇数ページのフッタを定義します。 これは、個別の文字列を定義するより柔軟な方法です。 これらのマクロの構文は次の通りです:

        .OH 'left'center'right'

    クォート (') は、ヘッダやフッタのテキストに登場しない 任意の文字に置き換え可能です。

  マージン
マージンの制御は、数値レジスタを設定することで行います。 次の表は、レジスタ名とデフォルトを列挙します:
    レジスタ | 定義 | 効果対象 | デフォルト
    PO | ページオフセット (左マージン) | 次ページ | 1i
    LL | 行長 | 次段落 | 6i
    LT | ヘッダ/フッタ長 | 次段落 | 6i
    HM | トップ (ヘッダ) マージン | 次ページ | 1i
    FM | ボトム (フッタ) マージン | 次ページ | 1i

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

  複数カラム
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] 文字列で指定されたタイトルの印字を抑制します。

troff ms との違い
groff ms マクロは、完全な再実装であり、 元々の AT&T のコードは使用されていません。 groff の拡張機能を使用していますので、これらは AT&T の troff では使用できません。 他の違いは次の通りです:

•   groff ms の内部は Unix ms の内部とは同じではありません。 したがって、Unix ms の実装の細部に依存する書式については groff ms で機能しないとしてももっともでしょう。

•   エラー処理の方針については、 groff ms は、沈黙したままエラーを無視したりせず、エラーを検出してレポートします。

•   Bell Labs 方言は実装されていません。

•   Berkeley 方言、特に、 TM や CT マクロは、実装されていません。

•   groff ms は、互換モードでは機能しません (例えば、 -C オプションなど)。

•   タイプライタ様のデバイスには、サポートはありません。

•   groff ms では、カットマークは提供しません。

•   重複した行送りは許されません (代わりに、大きな垂直行送りを使用して下さい)。

•   ある Unix ms の文書には、数値レジスタの CW と GW とが、それぞれカラム幅とガター幅 を制御する為に 使用できると述べられています。 これらの数値レジスタは、groff ms では使用されません。

•   リセットを引き起こすマクロ (段落や見出し) はインデントを設定します。 インデントを変更するマクロはインデントを増減するのではなく、 むしろインデントを絶対的に設定します。 このことによって、独自のマクロを追加定義している文書に 問題が生じるかも知れません。 これを解決するには、 in リクエストを用いずに、代わりに RS や RE マクロを用いて下さい。

•   数値レジスタの GS は、 groff ms マクロによって 1 に設定されます。 しかし、この数値レジスタは Unix ms マクロでは使用されていません。 このレジスタの目的は、 Unix ms か groff ms かのどちらによってフォーマットされているのかを判定する 必要のある文書によって利用されることです。

  文字列
次の文字列は、 groff ms マクロを英語以外の言語に適合させるために 再定義することができます:
文字列 | デフォルト値
REFERENCES | References
ABSTRACT | ABSTRACT
TOC | Table of Contents
MONTH1 | January
MONTH2 | February
MONTH3 | March
MONTH4 | April
MONTH5 | May
MONTH6 | June
MONTH7 | July
MONTH8 | August
MONTH9 | September
MONTH10 | October
MONTH11 | November
MONTH12 | December

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

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

脚注のポイントサイズ、垂直行送り幅、そして段落間の行送り幅は、 数値レジスタの FPS, FVS, FPD で制御されます。 初期化時に、これらは、それぞれ \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) が書き直しました。