'\" t .ig groff.7 This file is part of groff, the GNU roff type-setting system. Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. written by Bernd Warken maintained by Werner Lemberg Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being this .ig-section and AUTHOR, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the Free Documentation License is included as a file called FDL in the main directory of the groff source package. .. .\" Japanese Version Copyright (c) 2001 UCHIDA Norihiro all rights reserved. .\" Translated Thu Feb 15 2001 by UCHIDA Norihiro .\" .\" Copyright (c) 2001 FreeBSD jpman project .\" This is for Japanese translation done by FreeBSD jpman project. .\" $FreeBSD$ .\" .\"WORD: diversion ディバージョン[groff.7] .\"WORD: divert 転換する(出力データを別の場所に貯め込むこと)[groff.7] .\"WORD: line adjustment 行の位置揃え[groff.7] .\"WORD: roff formatting system roff 清書システム[groff.7] .\"WORD: control line 制御行[groff.7] .\"WORD: formatting element 整形要素[groff.7] .\"WORD: in-line 行埋め込み式の[groff.7] .\"WORD: scaling indicator 単位指定子[groff.7] .\"WORD: trap トラップ[groff.7] .\"WORD: no-break control character 非改行制御文字[groff.7] .\"WORD: center センタリングする(動詞)[groff.7] .\"WORD: special 特別フォント[groff.7] .\"WORD: leader リーダ(目次などで項目とページ番号の間に引く線)[groff.7] .\"WORD: intra-line skip 行間スキップ(行と行の間に入れる空き)[groff.7] .\"WORD: fill 行詰め(する)[groff.7] .\"WORD: built-in condition 組み込み条件式[groff.7] .\"WORD: baseline 基準線(文字位置の基準となる水平線)[groff.7] .\"WORD: line-tabs mode 行タブモード[groff.7] .\"WORD: first measure 最初のステップ[groff.7] . .\" -------------------------------------------------------------------- .\" Setup .\" -------------------------------------------------------------------- . .mso www.tmac . .if n \{\ . mso tty-char.tmac . ftr CR R . ftr CI I . ftr CB B .\} . .if '\*[.T]'dvi' \{\ . ftr CB CW .\} . . .\" -------------------------------------------------------------------- .\" start of macro definitions .eo . .de c .. . .de TPx . TP 10n .. .c --------------------------------------------------------------------- .c .Text anything ... .c .c All arguments are printed as text. .c .de Text . nop \)\$* .. .c --------------------------------------------------------------------- .c .ExecFF macro font1 font2 text1 text2 text1 text2 ... .c .c Concat text arguments using alternating fonts and feed into macro. .c For a trailing punctuation, terminate the call with \c. .c .de ExecFF . if (\n[.$] < 4) \ . return . ds @a\" . ds @m \$1\" . ds @f1 \$2\" . ds @f2 \$3\" . shift 3 . ds @s\" . while 1 \{\ . if (\n[.$] = 0) \ . break . ds @a \$1\" . as @s \f[\*[@f1]]\*[@a]\f[]\" . shift . if (\n[.$] = 0) \ . break . ds @a \$1\" . as @s \f[\*[@f2]]\*[@a]\f[]\" . shift . \} . \*[@m] "\*[@s]\f[R]" . ft P \" to make \c happy . rm @m . rm @s . rm @a . rm @f1 . rm @f2 .. . .c --------- command line option --------- . .de option . Text \f[CB]\$* . ft P .. . .c --------- characters --------- . .de character . ExecFF Text CB R \$* .. .de squoted_char . ds @1 \$1\" . shift . ExecFF Text R CB \[oq] \*[@1] "\[cq]\$*" . rm @1 .. .de dquoted_char . ds @1 \$1\" . shift . ExecFF Text R CB \[lq] \*[@1] "\[rq]\$*" . rm @1 .. .c --------- requests --------- . .c synopsis of a request .de REQ . if (\n[.$] = 0) \ . return . ds @1 \$1\" . shift 1 . ie (\n[.$] = 0) \{\ . TP 10n . Text \f[CB]\*[@1]\f[] . \} . el \{\ . TP 10n . Text \f[CB]\*[@1]\~\f[]\f[I]\$*\f[] . \} . rm @1 .. .c reference of a request .de request . BR \$* .. . .c --------- numerical elements --------- . .c number with a trailing unit .de scalednumber . Text \$1\^\f[CB]\$2\f[]\$3\f[R] . ft P .. . .c representation of units within the text .de scaleindicator . Text \f[CB]\$1\f[]\$2\f[R] . ft P .. . .c representation of mathematical operators within the text .de operator . squoted_char \$@ .. . . .c --------- escape sequences --------- . .c --------------------------------------------------------------------- .c .ESC name [arg] .c .c Synopsis of an escape sequence, optionally with argument .c Args : 1 or 2; `name' obligatory, `arg' optional .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary word .c Result : prints \namearg, where `name' is in CB, `arg' in I .c .de ESC . if (\n[.$] < 1) . ab .ESC needs 1 or 2 arguments. . ExecFF IP CB I "\[rs]\$1" "\,\$2\/" .. .c --------------------------------------------------------------------- .c .ESC[] name arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name[arg], where `name' is in CB, `arg' in I .c .de ESC[] . if !(\n[.$] = 2) \ . ab .ESC[] needs exactly 2 arguments. . ExecFF IP CB I "\[rs]\$1\[lB]" "\h'-0.2m'\$2\h'-0.15m'" \[rB] .. .c --------------------------------------------------------------------- .c .ESCq name arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name'arg', where `name' is in CB, `arg' in I .c .de ESCq . if !(\n[.$] = 2) \ . ab .ESCq needs exactly 2 argument. . ExecFF IP CB I "\[rs]\$1\[cq]" "\h'-0.3m'\$2" \[cq] .. .c --------------------------------------------------------------------- .c .ESC? arg .c .c Synopsis for escape sequence with a bracketed long argument .c Args : 1 obligatory .c arg : arbitrary text .c Result : prints `\?arg?', where the `?' are in CB, `arg' in I .c .de ESC? . if !(\n[.$] = 1) \ . ab .ESC? needs exactly 1 arguments. . ExecFF IP CB I \[rs]? "\$1" ? .. .c --------------------------------------------------------------------- .c .esc name [punct] .c .c Reference of an escape sequence (no args), possibly punctuation .c Args : 1 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c punct : arbitrary .c Result : prints \name, where `name' is in B, `punct' in R .c .de esc . if (\n[.$] < 1) \ . ab .esc needs 1 or 2 arguments. . BR "\[rs]\$1" \$2 .. .c --------------------------------------------------------------------- .c .escarg name arg [punct] .c .c Reference of an escape sequence (no args) .c Args : 1 obligatory, 1 optional .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary word .c Result : prints \namearg, where .c `name' is in B, `arg' in I .c .de escarg . if (\n[.$] < 2) \ . ab .esc needs 2 or 3 arguments. . Text \f[B]\[rs]\$1\f[]\f[I]\$2\f[]\$3 .. .c --------------------------------------------------------------------- .c .esc[] name arg [punct] .c .c Reference for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name[arg], where `name' is in CB, `arg' in CI .c .de esc[] . if (\n[.$] < 2) \ . ab .esc[] needs 2 or 3 arguments. . Text \f[B]\[rs]\$1\[lB]\f[]\f[I]\$2\f[]\f[B]\[rB]\f[]\$3 .. . .c --------------------------------------------------------------------- .c .escq name arg .c .c Reference for escape sequence with a bracketed long argument .c Args : 2 obligatory .c name : suitable name for an escape sequence (c, (xy, [long]) .c arg : arbitrary text .c Result : prints \name'arg', where `name' is in CB, `arg' in CI .c .de escq . if (\n[.$] < 2) \ . ab .escq needs 2 arguments. . Text \f[B]\[rs]\$1\[cq]\f[]\f[I]\$2\f[]\f[B]\[cq]\f[]\$3 .. . .c --------- strings --------- . .c synopsis for string, with \*[] .de STRING . ds @1 \$1\" . shift 1 . TP 10n . ExecFF Text R CB \[rs]*[ \*[@1]\f[]\f[R]] \$* . rm @1 .. .c synopsis for a long string .de string . if (\n[.$] = 0) \ . return . Text \f[CB]\[rs]*\[lB]\$1\[rB]\f[]\$2 .. . . .c --------- registers --------- . .c synopsis for registers, with \n[] .de REG . ds @1 \$1\" . shift 1 . TP 10n . ExecFF Text R CB \[rs]n[ \*[@1]\f[]\f[R]] \$* . rm @1 .. .c reference of a register, without decoration .de register . Text register . BR \$* .. . .ec .\" end of macro definitions . . .\" -------------------------------------------------------------------- .\" Title .\" -------------------------------------------------------------------- . .TH GROFF 7 "6 August 2001" "Groff Version 1.17.2" .SH 名称 groff \- GNU roff 言語の簡易リファレンス . . .\" -------------------------------------------------------------------- .SH 解説 .\" -------------------------------------------------------------------- .I groff という名前は、 .I GNU roff を表しており、roff 清書システムをフリーで実装したものです。 groff システムの概観ならびに背景については .BR roff (7) を参照してください。 . .P このドキュメントでは、groff 内で使用される、あらかじめ定義された roff 言語要素を簡潔に説明しているだけです。 古くからある機能と groff 拡張機能についての両方とも扱っています。 . .P 歴史的に、 .I roff 言語 は .IR troff と呼ばれています。 .I groff は、古くからあるシステムと互換性を持ちつつ、独自の拡張機能も 提供しています。 そのため GNU 版では、 .IR roff , .IR troff , .I groff 言語 という術語は同義として使うこともできるでしょう。 しかし、 .I troff は、どちらかと言えば古くからの機能に対して適用されるという 傾向があり、それに対して、 .I groff は GNU 拡張に重きを置いています。 そして、 .I roff は、この言語の一般的な術語になっています。 . .P このファイルは、 .I groff .BR info (1) ファイルにある完全なドキュメントの簡易版に過ぎません。 info ファイルの方がより詳細で実情に近く、正確な情報を含んでいます。 . .P groff ドキュメントを書くために使う一般的な文法は比較的 やさしいのですが、 roff 言語の拡張機能を書くのは少々骨が折れるかもしれません。 . .P roff 言語は、行指向の言語です。 行には、制御行とテキスト行の 2 種類しかありません。 制御行は制御文字で始まります。 制御文字は、デフォルトではピリオド .dquoted_char . あるいはシングルクォート .dquoted_char ' です。 そのほかの文字で始まる行はすべてテキスト行です。 . .P .B 制御行 は、コマンドを表し、オプションで引数を取ることもあります。 制御行は、次のような文法になります。 先頭の制御文字の後には、コマンド名を続けることができます。 引数は、もしあれば、コマンド名や他の引数と空白で分けられます。 例えば、次のようにします。 .RS . .P .Text .command_name arg1 arg2 .RE . .P インデント用に、先頭の制御文字とコマンド名との間にはスペースや タブ文字をいくつ入れても良いですが、制御文字は行の先頭になくては なりません。 . .P .B テキスト行 は、表示される部分のことです。 テキスト行はエスケープシーケンスで変更することができます。 エスケープシーケンスは先頭にバックスラッシュ .squoted_char \[rs] を置くことで認識されます。 これらは、行や単語の一部に含まれ、整形要素となったり 関数となったりします。 エスケープシーケンスには、シングルクォート .dquoted_char ' で区切られた引数を取るものもありますし、 開き括弧 .squoted_char ( に続いて符合化され長さの一定なものや、角括弧 .squoted_char [ と .squoted_char ] で括られているものもあります。 . .P roff 言語は、マクロなど、言語拡張機能を書くための柔軟な手段を 提供しています。 マクロ定義を解釈する際に、roff システムは .BR "コピーモード" と呼ばれる特別なモードに入ります。 . .P コピーモードの振る舞いはとても扱いにくいものでもありますが、 確実に安全に使えるようにするルールがいくつかあります。 .IP 1. 表示可能なバックスラッシュは .esc e と記述しなくてはなりません。 もっと正確に言えば、 .esc e は現在のエスケープ文字を表します。 バックスラッシュのグリフを得るには .esc (rs または .esc [rs] を使用してください。 .IP 2. バックスラッシュはすべて 2 重にしてください。 .IP 3. テキスト行はすべて、スペースをとらない特殊文字 .esc & で始めてください。 . .P このやり方は、一番効率の良いコードが生成できる というわけではありませんが、最初の一歩としては使えるはずです。 さらに良いやり方については groff info ファイルおよび .BR groff_tmac (5) を参照してください。 . .P roff ソースファイルを読むのはこれよりは簡単です。 すべてのマクロ定義部分で 2 重になっているバックスラッシュを 1 つに置き換えればよいだけです。 . .\" -------------------------------------------------------------------- .SH "groff 要素" .\"-------------------------------------------------------------------- roff 言語の要素は、テキストファイルに整形用情報を 付加するものです。 基本的な要素は、あらかじめ定義されたコマンド および変数であり、 この要素のおかげで roff は本格的なプログラミング言語に なっているのです。 . .P roff コマンドには 2 種類あります。 コマンドは引数を取ることもあります。 .B リクエスト は、ドット .squoted_char . あるいは .dquoted_char ' で始まる行に書かれるものです。 これに対して .B エスケープシーケンス は、 バックスラッシュ .squoted_char \[rs] で始まる、行埋め込み式の関数や単語中の整形要素です。 . .P ユーザは独自の整形コマンドを .request de リクエストを使って定義することができます。 これらのコマンドは .BR マクロ と呼ばれていますが、実際にはリクエストとまったく同様に使われます。 マクロパッケージは groff 言語で書かれた定義済みのマクロセットです。 ユーザが独自にエスケープシーケンスを作成できる場合というのは 非常に限られており、特殊文字のみマップすることができます。 . .P groff 言語は、異なるインタフェースを持ついくつかの種類の変数を 提供しています。 定義済みの変数もありますが、ユーザも同様に自分で変数を定義できます。 . .P .B 文字列 変数は文字列を格納します。 この変数は .request ds リクエストで設定され、値は .esc * エスケープシーケンスを使って取り出します。 . 文字列は、変数を持つことができます。 . .P .B レジスタ 変数は数値、スケールファクタつき数字、 場合によっては文字列に似たオブジェクトを格納できます。 .request nr リクエストで設定され、値は .esc n エスケープシーケンスを使って取り出します。 . .P .B 環境 を使うことによって、行の長さやフォントサイズなどのような グローバルな整形パラメータを、後で再利用できるように ユーザが一時的に格納することができます。 これは .request ev リクエストによって行われます。 . .P .B フォント は、名前もしくは内部番号のどちらかで判別されます。 現在のフォントは .request ft リクエストもしくは .esc f エスケープシーケンスで選択されます。 デバイスごとに特別フォントがありますが、次のフォントはすべての デバイスで利用可能です。 .B R は標準フォント、ローマン体です。 .B B はその .B ボールド体 です。 .I イタリック体 フォントは .B I と呼ばれておりどこででも利用可能ですが、テキストデバイスでは ローマン体フォントに下線がついたものとして表示されます。 グラフィカルの出力デバイスに対しては、次のフォントの固定幅の 修飾文字が存在します。 .BR CR , .BR CI , および .BR CB です。 テキストデバイスでは、いずれにしても文字はすべて固定幅です。 . .P さらに、roff の拡張要素がいくつかあります。 .B ディバージョン は、後で利用できるように情報をマクロに格納します。 .B トラップ は、ページの先頭から何行目とか、ディバージョンや入力において 何行目というような位置条件です。 アクションの中には、条件が揃ったときに自動的に起動するように 指示できるものがあります。 . .P これより詳細な情報と例については、groff info ファイルに示されています。 . .\" -------------------------------------------------------------------- .SH "制御文字" .\" -------------------------------------------------------------------- ある条件下で特別な制御タスクをもつ文字が いくつかあります。 .TP .character . ドットは、行の先頭あるいは .request if , .request ie , .request el , および .request while リクエスト中の条件の後にある場合のみ特別です。 その位置では、リクエスト (あるいはマクロ) を導入する制御文字になります。 .esc . エスケープを使うと、この特別な動作を遅らせることができます。 .request cc リクエストを使うことで、この制御文字を別の文字に設定して、 ドット .squoted_char . を特殊文字でなくすることができます。 .IP "" 他の位置にドットがあるときは、ただのドット文字以上の意味はありません。 テキスト段落の中では、文はそれぞれ新しい行で始めるほうが有利です。 .TP .character ' シングルクォートには 2 つの制御機能があります。 行の先頭および条件リクエスト内では、 シングルクォートは非ブレーク制御文字になります。 これは、ドットのようにリクエストを導入しますが、 リクエストが行を折り返さないような追加のプロパティをつけるものです。 .request c2 リクエストを用いると、非ブレーク制御文字を別の文字に設定する ことができます。 .IP "" 2 つめのタスクとして、シングルクォートは、 いくつかの関数エスケープシーケンスの中で 引数の区切り文字としてよく使用されます (引数に含まれない文字のペアならどれでも良いのですが)。 その他の場所にあれば、シングルクォート文字 あるいはアポストロフィ文字になります。 groff は、表示用の表記として エスケープシーケンス .esc (cq を提供しています。 .TP .character \[dq] ダブルクォートはリクエスト、マクロ、文字列の中で引数を括るときに 使用されます。 .request ds および .request as リクエスト内では、引数の先頭にくるダブルクォートは取り除かれ、 その後に続くダブルクォート以外の文字を定義文字列とします (先頭に空白が来るのを有効にします)。 エスケープされたダブルクォート .esc \[dq] はコメントの開始になります。 それ以外は、ダブルクォートには特別な機能はありません。 groff は、表示用の表記として エスケープシーケンス .esc (dq を提供しています。 .TP .character \[rs] バックスラッシュは、通常エスケープシーケンスの開始を意味しています (この文字は、 .request ec リクエストによって変更できます)。 表示用のエスケープ文字は、エスケープシーケンス .esc e で、バックスラッシュのグリフは .esc (rs で得られます。 .TP .character ( 開き括弧は、エスケープシーケンス内で、ちょうど 2 文字でできた エスケープ名あるいは引数を導入したときのみ特別な意味を持ちます。 groff では、この動作は \f[CB][]\f[] の組で置き換えることができます。 .TP .character [ 開き角括弧は、groff のエスケープシーケンス内でのみ特別な意味を持ちます。 これは、長いエスケープシーケンス名やエスケープシーケンスの引数を 導入するときに使用します。 それ以外の場合は、例えばマクロ呼び出しなどでも特別な意味はありません。 .TP .character ] 閉じ角括弧は、groff のエスケープシーケンス内でのみ特別な意味を持ちます。 これは、長いエスケープシーケンス名やエスケープシーケンスの引数を 終わらせます。 それ以外の場合は、特別な意味はありません。 .TP \f[CI]space\f[] 空白文字は、機能的な働きしか持たない文字です。 これは、 リクエスト、マクロ、文字列の引数の区切り文字、 およびテキスト行における単語の区切り文字です。 また、空白文字は groff の単語間の水平方向の空白計算に作用します。 定義された空白幅を得たい場合は、 .squoted_char "\[rs]\ " (エスケープ文字とそれに続いた空白文字)、 .esc | , .esc ^ , あるいは .esc h のようなエスケープシーケンスを使う必要があります。 .IP \f[CI]newline\f[] テキストの段落においては、改行は空白文字とほぼ同じような作用をします。 連結された行は、エスケープした改行で指定できます。 つまり、行の最後の文字に .squoted_char \[rs] を指定するのです。 .IP \f[CI]tab\f[] テキスト中にタブ文字があれば、インタプリタは次の定義済みのタブ位置へ 水平方向にインデントを作ります。 タブ位置の調整には洗練されたインタフェースが存在します。 . .\" -------------------------------------------------------------------- .SH "数式" .\" -------------------------------------------------------------------- .B 数値 は、符号つき整数、符号なし整数、浮動小数点実数のいずれか、 およびそれに単位指定子を付加したものです。 .B 単位指定子 は、計測単位を表す 1 文字の略語です。 単位指定子が後についた数字は、サイズに関する値を意味しています。 デフォルトでは、数値は単位指定を持ちません。 つまり、単なる数字にすぎません。 . .P .I roff 言語では、次の単位指定子を定義しています。 . .P .PD 0 .RS . .TPx .B c センチメートル . .TPx .B i インチ . .TPx .B P パイカ\ \[eq]\ 1/6\ インチ . .TPx .B p ポイント\ \[eq]\ 1/72\ インチ . .TPx .B m エム(em)\ \[eq]\ \f[R]ポイント値でのフォントサイズ (文字 `\f[CR]m\f[R]' の幅) . .TPx .B M \f[CR]エム(em)\f[R] の 100 倍 . .TPx .B n エヌ(en)\ \[eq]\ em/2 . .TPx .B u 実際の出力デバイスでの基本単位 . .TPx .B v 基本単位での行送り幅 .\"X kuma 今回の修正で単位 z が抜け、かつて単位 z の説明だった部分が .\"X kuma 単位 v の説明にくっついてしまっている。バグか? .\"X kuma とりあえず原文の修正に従い、単位 z がなくなったことにしておく。 .\"X kuma . .\"X kuma .TPx .\"X kuma .B z スケールされたポイント数\ \[eq]\ 1 ポイントの 1/\f[CI]sizescale\fR 倍 (フォントの \fIDESC\f[] ファイルで定義) . .TPx .B f 65536 倍 .RE .PD . .P .B 数式 は、先に定義された数値と、昔から troff で定義されていた 次に示す算術演算子の組合せです。 . .P .PD 0 .RS . .TPx .B + 加算 . .TPx .B \- 減算 . .TPx .B * 乗算 . .TPx .B / 除算 . .TPx .B % 剰余 . .TPx .B = 等号 . .TPx .B == 複数等号 . .TPx .B < より小さい . .TPx .B > より大きい . .TPx .B <= 以下 . .TPx .B >= 以上 . .TPx .B & 論理積 . .TPx .B : 論理和 . .TPx .B ! 論理否定 . .TPx .B ( 式のグループ化 . .TPx .B ) 現在の式グループを閉じる . .RE .PD . .P さらに、 .I groff は、数式に対して次の演算子を追加しました。 . .P .PD 0 .RS . .TPx .ExecFF Text I CB e1 >? e2 .I e1 と .I e2 の最大値 . .TPx .ExecFF Text I CB e1 「特別フォント」 . .REQ .ft 直前のフォントに戻します。 リクエスト .request \[rs]f[] または .request \[rs]fP と同じです。 . .REQ .ft font フォント名または番号 .I font に変更します。 エスケープシーケンス .esc[] f font と同じです。 . .REQ .ftr font1 font2 フォント .I font1 をフォント .I font2 に変換します。 . .REQ .hc 追加ハイフネーション指定文字を削除します。 . .REQ .hc c 追加ハイフネーション指定文字として\~\c .I c を設定します。 . .REQ .hcode c1 code1 c2 code2 .\|.\|.\& 文字 .I c1 のハイフネーションコードを .I code1 に、文字 .I c2 のコードを .I code2 のように設定します。 . .REQ .hla lang 現在のハイフネーション言語を .I lang に設定します。 . .REQ .hlm n ハイフンされた行の最大連続数を .I n に設定します。 . .REQ .hpf file ハイフネーションのパターンをファイル .I file から読み込みます。 . .REQ .hpfa file ハイフネーションのパターンを .I file から追加します。 . .REQ .hpfcode file .request .hpf のための入力マッピングを設定します。 . .REQ .hw words 例外的なハイフネーションをする単語のリストを .I words で指定します。 . .REQ .hy N ハイフネーションモードを .I N に変更します。 . .REQ .hym n ハイフネーションの余白を .I n に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .hys n ハイフネーションの空白を .I n に設定します。 . .REQ .ie cond anything 条件式 .I cond が真ならば .I anything を処理します。 偽の場合はリクエスト .request .el へ移動します。 . .REQ .if cond anything 条件式 .I cond が真ならば .I anything を処理します。偽の場合は何もしません。 . .REQ .ig リクエスト .B ..\& に遭遇するまでテキストを無視します。 . .REQ .ig end リクエスト .request .end までの間のテキストを無視します。 . .REQ .in インデント量を直前の値に戻します。 . .REQ .in \[+-]N 引数 .I \[+-]N に従ってインデント量を変更します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .it N trap 次の行から .I N 行に対し、入力行のカウントトラップを設定します。 . .REQ .itc N trap .esc c により行のカウントが中断され 1 行扱いされることを 除けば、 .request .it と同じです。 . .REQ .kern ペアワイズカーニングを有効にします。 . .REQ .kern n .I n が 0 ならばペアワイズカーニングを無効にします。 0 でなければ有効にします。 . .REQ .lc リーダ繰り返し文字の定義を削除します。 . .REQ .lc c リーダ繰り返し文字を\~\c .I c に設定します。 . .REQ .length register anything 文字列 .I anything の文字列長をレジスタ .I register に書き込みます。 . .REQ .linetabs 行タブモードを有効にします (つまり、出力行に比例したタブ位置を計算します)。 . .REQ .linetabs n .I n が 0 の場合、行タブモードを無効にします。 それ以外の場合は、行タブモードを有効にします。 . .REQ .lf N 入力の行番号を .I N に設定します。 . .REQ .lf N file 入力する行数を .I N に、ファイル名を .I file に設定します。 . .REQ .lg N 引数 .I N が 0 より大きければリガチャ (合字) モードにします。 . .REQ .ll 行幅を直前の値に戻します。 . .REQ .ll \[+-]N 行幅を引数 .I \[+-]N に従って設定します (デフォルトの大きさは .scalednumber 6.5 i で、デフォルトの単位指定子は .scaleindicator m です)。 . .REQ .ls 追加の行間スキップ量を直前の値に戻します。 . .REQ .ls N 追加の行間スキップ量を .I N に設定します。 つまり、テキストの出力行それぞれの後に .I N -1 行の空白行を挿入します。 . .REQ .lt \[+-]N タイトルの長さです (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .mc 余白文字を無効にします。 . .REQ .mc c それぞれのテキスト行の後、 右側余白から現在設定されている距離に文字 .I c を出力します。 . .REQ .mc c N 余白文字を .I c に、右側余白からの距離を .I N に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .mk register 現在の垂直位置を .I register にマークします。 . .REQ .mso file リクエスト .so と同じですが、tmac ディレクトリにある .I file が検索される点が違います。 . .REQ .na 出力行の位置揃えを行いません。 . .REQ .ne 1 行分の行送りが必要であることを指定します。 . .REQ .ne N .I N 行分の行送りが必要であることを指定します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .nf 出力行に行詰めや位置揃えを行いません。 . .REQ .nh ハイフネーションをしません。 . .REQ .nm 行番号モードを無効にします。 . .REQ .nm \[+-]N \fR[\fPM \fR[\fPS \fR[\fPI\fR]]]\fP 行番号モードの、行番号、行番号出力間隔、空白、インデントを設定します。 . .REQ .nn 次の行に行番号をつけません。 . .REQ .nn N 次の .I N 行に行番号をつけません。 . .REQ .nop anything .I anything を常に実行します。 . .REQ .nr register \[+-]N M レジスタの値を、インクリメント値 .I M で .I \[+-]N に設定・変更します。 . .REQ .nroff 組み込み条件式 .B n を真に、 .B t を偽にします。 . .REQ .ns 空白なしモードにします。 . .REQ .nx 現在のファイルの末尾に直ちにジャンプします。 . .REQ .nx filename 次のファイルへ処理を移します。 .\" 上記は、groff info の内容を参考にして補足しました。 .\" FreeBSD 4.4-RELEASE .\" By koich@cac.co.jp (Sept. 06, 2001) . .REQ .open stream filename ファイル .register filename を書き込みモードでオープンし、名前 .register stream を持つストリームに関連づけます。 . .REQ .opena stream filename リクエスト .request .open と同じですが、追加モードでファイルをオープンします。 . .REQ .os リクエスト .request sv で指定された行送り量を出力します。 . .REQ .output string .I string を直接中間出力に送出します。このとき、 .I string が、 .character \[dq] で始まる場合は、先頭に空白類文字 (whitespace) を置くことが できます ( .character \[dq] は削除されます)。 . .REQ .pc ページ番号文字を .squoted_char % に戻します。 . .REQ .pc c ページ番号文字を設定します。 . .REQ .pi program プログラム .I program に出力をパイプします (nroff のみ)。 . .REQ .pl ページ長をデフォルトの .scalednumber 11 i に設定します。 現在のページ長はレジスタ .register .p に格納されています。 . .REQ .pl \[+-]N ページ長を .I \[+-]N に変更します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .pm マクロ名とサイズを出力します (サイズは 1 ブロック 128 バイトのブロック数です)。 . .REQ ".pm t" マクロ全体のサイズのみを出力します (サイズは 1 ブロック 128 バイトのブロック数です)。 . .REQ .pn \[+-]N 次のページ番号を .I N に設定します。 . .REQ .pnr 現在定義されている数値レジスタの名前と内容を標準エラー出力に 出力します。 . .REQ .po ページオフセットを直前の値に戻します。 現在のページオフセットはレジスタ .register .o に格納されています。 . .REQ .po \[+-]N ページオフセットを .I N に設定します。 . .REQ .ps ポイントサイズを直前の値に戻します。 . .REQ .ps \[+-]N ポイントサイズを指定します。 エスケープシーケンス .esc[] s \[+-]N と同じです。 . .REQ .psbb filename PostScript 画像 .I filename のための矩形領域を確保します。 . .REQ .pso command リクエスト .request so と同様ですが、 .I command の標準出力から入力します。 . .REQ .ptr すべてのトラップの名前と位置を標準エラー出力に出力します (入力行のトラップとディバージョンのトラップは含まれません)。 . .REQ .pvs 垂直方向の後付け行送り量 (post-vertical line spacing) を変更します。 . .REQ .pvs \[+-]N 垂直方向の後付け行送り量 (post-vertical line spacing) を .I \[+-]N に変更します (デフォルトの単位指定子は .scaleindicator p です)。 . .REQ .rchar c1 c2 .\|.\|.\& 文字定義 .IR c1 , .IR c2 , .I .\|.\|.\& を削除します。 . .REQ .rd prompt 標準入力からの入力を読み込みます。 .\" 上記は、groff info の内容を参考にして補足しました。 .\" FreeBSD 4.4-RELEASE .\" By koich@cac.co.jp (Sept. 06, 2001) . .REQ .return マクロから戻ります。 . .REQ .rfschar f c1 c2 .\|.\|.\& フォント .I f における文字 .IR c1 , .IR c2 , .I .\|.\|.\& の定義を削除します。 . .REQ .rj n 次の .I n 行の入力行を右寄せします。 . .REQ .rm name .I name で指定されたリクエスト、マクロ、文字列を削除します。 . .REQ .rn old new .I old で指定されたリクエスト、マクロ、文字列の名前を .I new に変更します。 . .REQ .rnn reg1 reg2 レジスタ名 .I reg1 を .I reg2 に変更します。 . .REQ .rr register レジスタ .I register を削除します。 . .REQ .rs 空白を復活させます。つまり空白なしモードを無効にします。 . .REQ .rt \[+-]N (上方向のみ、) マークしておいた垂直位置まで戻します (デフォルトの単位指定子は\~\c .scaleindicator v です)。 . .REQ .schar c anything グローバルフォールバック文字 .I c を文字列 .I anything に定義します。 . .REQ .shc ソフトハイフン文字を .esc (hy に戻します。 . .REQ .shc c ソフトハイフン文字を .I c に設定します。 . .REQ .shift n マクロにおいて、引数を位置 .I n にシフトします。 . .REQ .sizes s1 s2 .\|.\|.\& sn \fB[0]\fP ファイル .B DESC の .B sizes コマンドと同様に、利用可能なフォントサイズを設定します。 . .REQ .so filename ソースファイルをインクルードします。 . .REQ .sp 1 行スキップします。 . .REQ .sp N .I N の行送りを挿入します。 .I N の符号によって上下方向が決まります (デフォルトの単位指定子は .scaleindicator v です)。 . .REQ .special 特別フォントのグローバルリストを空にリセットします。 . .REQ .special s1 s2 .\|.\|.\& フォント .IR s1 , .IR s2 , などを特別フォントとします。 現在のフォントにない文字をこれらから検索します。 . .REQ .spreadwarn 値を変えずに、出力行幅警告のオンオフを切り替えます。 . .REQ .spreadwarn limit 出力行の空白が .I limit 以上に広がった場合に警告を出します (デフォルトの単位指定子は .scaleindicator m です)。 . .REQ .ss N 空白文字のサイズを .IR N /12 に設定します。 単位は現在のフォントの空白幅です。 . .REQ .ss N M 空白文字のサイズを .IR N /12 に、文の空白サイズを .IR M /12 に設定します。 単位は現在のフォントの空白幅 (\f[CR]\[eq]1/3 em\f[]) です。 . .REQ .sty n style 位置 .I n のフォントをスタイル .I style に関連づけます。 . .REQ .substring xx n1 n2 名前 .I xx の文字列を、インデックス .I n1 と .I n2 とで決まる部分文字列で置換します。 . .REQ .sv 行送り量を .scalednumber 1 v に設定します。 . .REQ .sv N リクエスト .request os で出力される空白行の送り量を .I N に設定します。 . .REQ .sy command-line プログラム .I command-line を実行します。 . .REQ ".ta T" N タブ位置を .I N の倍数に設定します (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .ta n1 n2 .\|.\|.\& nn \f[CB]T\f[] r1 r2 .\|.\|.\& rn 位置 .IR n1 , .IR n2 , .Text .\|.\|., .I nn にタブを設定し、さらに、 .IR nn + r1 , .IR nn + r2 , .Text .\|.\|., .IR nn + rn にタブを設定し、それ以降は、 .IR nn + rn + r1 , .IR nn + rn + r2 , .Text .\|.\|., .IR nn + rn + rn のように設定します。 . .\".REQ .tar .\"内部的に保存されたタブ位置を復元します。 .\". .\".REQ .tas .\"タブ位置を内部的に保存します。 . .REQ .tc タブ繰り返し文字を削除します。 . .REQ .tc c タブ繰り返し文字を\~\c .I c に設定します。 . .REQ .ti \[+-]N 次の行を一時的にインデントします (デフォルトの単位指定子は\~\c .scaleindicator m です)。 . .REQ .tkf font s1 n1 s2 n2 フォント .I font のトラックカーニングを有効にします。 . .REQ .tl \f[CB]'\f[]left\f[CB]'\f[]center\f[CB]'\f[]right\f[CB]'\f[] 3 つの部位をもつタイトルです。 . .REQ .tm anything .I anything を端末 (UNIX の標準的なメッセージ出力先) に出力します。 .\" 「ターミナル」 => 「端末」 . .REQ .tm1 anything .I anything を端末 (UNIX の標準的なメッセージ出力先) に出力します。 その際、 .I anything が .character \[dq] で始まっている場合は、先頭を空白で始めることができます ( .character \[dq] 自体は取り除かれます)。 . .REQ .tmc anything .request .tm1 と似ていますが、末尾の改行を出力しません。 . .REQ .tr abcd.\|.\|.\& 出力で .I a を .I b に、 .I c を .I d のように変換します。 . .REQ .trf filename ファイル .I filename の内容をそのまま出力します。 . .REQ .trin abcd.\|.\|.\& リクエスト .B asciify が、文字変換前にその文字コード (が存在する場合、それ) を 使用することを除けば、リクエスト .request tr と同じです。 . .REQ .trnt abcd.\|.\|.\& リクエスト .request tr と同じですが、 .esc ! によってディバージョンへと出力されるテキストは変換されません。 . .REQ .troff 組み込み条件式 .B t を真に、 .B n を偽に設定します。 . .REQ .uf font アンダーラインフォントセットを .I font に設定します (リクエスト .request .ul で切り替わります)。 . .REQ .ul N 入力行を .I N 行、アンダーライン付きにします (troff では イタリック体になります)。 . .REQ .unformat diversion .I diversion 内のフォント情報を保存しつつ、空白文字およびタブ文字を アンフォーマットします。 .REQ .vpt n .I n が 0 でなければ垂直位置のトラップを有効にします。 0 ならば無効にします。 . .REQ .vs 行送りの基準線間隔を直前の値に戻します。 . .REQ .vs \[+-]N 行送りの基準線間隔を .I \[+-]N に設定します (デフォルトの単位指定子は、 .scaleindicator p です)。 デフォルト値は .scalednumber 12 p です。 . .REQ .warn n 警告コードを .I n に設定します。 . .REQ .warnscale si 警告で使用する単位指定子を .I si に設定します。 . .REQ .wh N 位置 .I N の (最初の) トラップを削除します。 . .REQ .wh N trap 位置によるトラップを設定します。 負の値の場合はページ末尾からの指定を表します。 . .REQ .while cond anything 条件式 .I cond が真ならば .I anything を入力として受理します。 . .REQ .write stream anything ストリーム .I stream へ .I anything を書き込みます。 . .REQ .writec stream anything 末尾の改行文字を出力しないことを除けば、 .request .write と同じです。 . .REQ .writem stream xx マクロまたは文字列 .I xx の内容を、名前 .I stream のストリームに書き出します。 . .PD . .P これらの基本的な groff リクエストの他にも、 マクロの呼び出しがあります。 これらはマクロパッケージ (概要は .BR roff (7) を参照) やプリプロセッサに由来するものです。 . .P プリプロセッサマクロを認識するのは容易です。 これらは独特のマクロの対で括られています。 . .P .TS box, center, tab (@); c | c | c CfCB | CfCB | CfCB. . プリプロセッサ@開始マクロ@終了マクロ = eqn@.PS@.PE grap@.G1@.G2 grn@.GS@.GE pic@.PS@.PE refer@.R1@.R2 soelim@\f[I]なし@\f[I]なし tbl@.TS@.TE .TE .P . .\" -------------------------------------------------------------------- .SH "エスケープシーケンス" .\" -------------------------------------------------------------------- . エスケープシーケンスは、行中の要素であり、通常は バックスラッシュ .squoted_char \[rs] で開始され、エスケープ名がそれに続きます。 場合によっては、必要な引数をつけることもあります。 入力処理は、エスケープ文字あるいはその引数の直後から再開されます。 引数には区切り文字がはさまっているわけではありません。 そのため、エスケープ名や引数の終わりを決定する方法が必要です。 . .P これは、名前 (エスケープ名、および変数名からなる引数) を 角括弧 .BI \[lB] name \[rB] で囲い、定数引数 (数式および文字) を アポストロフィ (ASCII 0x27) で .BI \[cq] constant \[cq] \f[R] のように囲うことによって実現します。 . .P エスケープ名には短い名前の省略形があります。 2 文字のエスケープ名は開き括弧で .esc ( xy のように指定され、閉じ括弧は必要ありません。 そして、特殊文字である .squoted_char [ と .squoted_char ( 以外の 1 文字の名前はすべて .esc c のようにマーカなしで指定することができます。 . .P 長さ\~1 の定数の引数もアポストロフィのマーカを省略できますが、 2 文字の名前のときには省略できません。 . .P 1 文字のエスケープシーケンスは主に行中での 関数とシステムに関連したタスク用に使われるのに対して、 .esc ( の後に付けた 2 文字の名前は、roff システムで定義済みの特殊文字用に 使われます。 2 文字より長い名前を持つエスケープシーケンス .esc[] "" name は、ユーザ定義の名前付き文字を表しています ( リクエスト .request char を参照してください)。 . .\" -------------------------------------------------------------------- .SS "1 文字のエスケープシーケンス" .\" -------------------------------------------------------------------- . .PD 0 . .\" --------- comments --------- . .ESC \[dq] コメントの開始です。 行末までのものすべてが無視されます。 . .ESC # 次の改行文字までのものすべてが無視されます。 これは、コピーモードで解釈されます。 .esc \[dq] と似ていますが、終端の改行文字も無視する点が異なります。 . .\" --------- strings --------- . .ESC *\f[I]s\f[] 1 文字の名前 .I s を持った文字列変数に格納されている文字列です。 . .ESC *(\f[I]st\f[] 2 文字の名前 .I st を持った文字列変数に格納されている文字列です。 . .ESC[] * "stringvar arg1 arg2 .\|.\|." 任意の長さの名前 .I stringvar を持った文字列変数に格納されている文字列です。 引数 .IR arg1 , .IR arg2 , .I .\|.\|.\& を取ります。 . .\" --------- macro arguments --------- . .ESC $0 現在のマクロが呼び出されている名前。 リクエスト .request als は、1 つのマクロに複数の名前をつけることができます。 . .ESC $ x .I x 番目のマクロ / 文字列の引数。 ここで、 .I x は、1 から 9 までの数値です。 . .ESC $( xy 2 桁の番号 .I xy 番目のマクロ / 文字列の引数。 . .ESC[] $ nexp .I nexp 番目のマクロ / 文字列の引数。 ここで、 .I nexp は 1 以上の整数に評価される数値表現です。 . .ESC $* マクロ / 文字列において、引数すべてを空白文字区切りで 連結したもの。 . .ESC $@ マクロ / 文字列において、引数すべてをそれぞれダブルクォートで囲い、 空白文字で区切って連結したもの。 . .\" --------- escaped characters --------- . .ESC \[rs] バックスラッシュ 1 個に縮退します。 コピーモードでエスケープ文字として解釈されるのを 遅らせるときに便利です。 表示可能なバックスラッシュには、 .esc e もしくは、 .esc [rs] を使用してください。 現在のエスケープ文字と独立なのでこちらの方が良いです。 . .ESC \[cq] 揚音アクセント符号 \[aa]。 .esc (aa と同じです。 エスケープなし: アポストロフィ、右クォーテーション記号、シングルクォート (ASCII 0x27)。 . .ESC ` 抑音アクセント符号 \[ga]。 .esc (ga と同じです。 エスケープなし: 左クォート、バッククォート (ASCII 0x60)。 . .ESC \- 現在のフォントでの \- 符号。 . .ESC . 解釈されないドット (ピリオド)。 行頭にあってもそうなります。 . .ESC % デフォルトでのオプションのハイフン文字。 . .ESC ! 透過行指定子。 . .ESC? anything ディバージョンでは、そのまま .I anything を組み込みます。 コピーモードでは、 .I anything を読み込みます。 エスケープシーケンス .esc ! および .esc ? も参照してください。 . . .\" --------- spacing --------- . .ESC \& space パディングされない、空白の大きさを持った空白文字 (改行もされません)。 . .ESC 0 数字の幅の空白。 . .ESC | 1/6\ em の狭い空白文字。nroff では幅 0 です。 . .ESC ^ 1/12\ em のさらに狭い空白文字。nroff では幅 0 です。 . .ESC & 表示されない、幅 0 の文字。 . .ESC ) .esc & と同様ですが、文の終わりを認識する目的で、 cflags リクエストを 用いて透過になるように宣言された文字のように振る舞うという 点で異なります。 . .ESC / 次の文字がローマン体であるときには、それの前の文字の幅を増やして 次の文字との間の空白が修正されるようにします。 . .ESC , 前の文字がローマン体であるときには、次の文字の空白を変更して 前の文字との間の空白が修正されるようにします。 . .ESC ~ 改行されない空白。 行を調整するとき、通常の単語間の空白のように 引き延ばされます。 . .ESC : 幅 0 のブレークポイント ( .esc % と似ていますが、ソフトハイフン文字は使いません)。 .ESC "" newline 無視される改行。 行を連続させるときのためです。 . .\" --------- structuring --------- . .ESC { 条件入力の開始。 . .ESC } 条件入力の終了。 . .\" --------- longer escape names --------- . .ESC ( sc 2 文字の名前 .I sc を持つ特殊文字。 セクション .BR "特殊文字" を参照してください。 .ESC[] "" name 任意の長さの名前 .I name を持つ名前付き文字 (というか、グリフ)。 . .ESC[] "" "comp1 comp2 .\|.\|." 要素 .IR comp1 , .IR comp2 , .I .\|.\|. からなる複合グリフ。 . .\" --------- alphabetical escapes --------- . .ESC a 解釈されないリーダ文字。 . .ESCq A anything .I anything が文字列、マクロ、ディバージョン、レジスタ、環境、あるいは フォント名として受け付けられるものの場合、\~1 に展開します。 そうでない場合、\~0 になります。 . .ESCq b abc.\|.\|.\& 角括弧を作る関数。 . .ESCq B anything .I anything が正しい数値表現として受け付けられるものの場合、\~1 に展開します。 そうでない場合、\~0 になります。 . .ESC c テキスト処理を中断します。 . .ESCq C char .I char と呼ばれる文字。 .esc[] "" char と同じですが、他の roff バージョンと互換性があります。 . .ESC d 垂直単位で 1/2 em だけ前方 (下) に移動します (nroff では 1/2 行です)。 . .ESCq D charseq .I charseq 中の文字で定義されたグラフィカルな要素を描きます。 詳細は groff info ファイルを参照してください。 . .ESC e 現在のエスケープ文字を表示する時の表記。 . .ESC E エスケープ文字と等価ですが、コピーモードでは評価されません。 . .ESC f F 1 文字の名前もしくは 1 個の数字 .I F を持つフォントに変更します。 . .ESC fP 元のフォントに戻します。 . .ESC f( fo 2 文字の名前もしくは 2 桁の数字 .I fo を持つフォントに変更します。 . .ESC[] f font 任意の長さの名前もしくは数式 .I font で表されるフォントに変更します。 . .ESC[] f "" 元のフォントに戻します。 . .ESC F f 1 文字の名前 .I f を持つフォントファミリに変更します。 . .ESC F( fm 2 文字の名前 .I fm を持つフォントファミリに変更します。 . .ESC[] F fam 任意の長さの名前 .I fam を持つフォントファミリに変更します。 . .ESC[] F "" 元のフォントファミリに戻します。 . .ESC[] g reg リクエスト .request .af に適した、名前 .I reg を持ったレジスタのフォーマットを返します。 別の形式として .escarg g( xy および .escarg g x があります。 . .ESCq h N 局所的な水平移動。 右側へ .I N だけ移動します (負の値のときは左側へ移動します)。 . .ESCq H N 現在のフォントの高さを .I N に設定します。 . .ESC[] k reg 任意の長さの名前 .I reg を持つレジスタ中の水平入力位置をマークします。 別の形式では .escarg k( xy と .escarg k x です。 . .ESCq l Nc 水平線描画関数 (文字 .I c を用いることも可能です)。 . .ESCq L Nc 垂直線描画関数 (文字 .I c を用いることも可能です)。 . .ESC[] m color 色 .I color に変更します。他の形式として、 .escarg m( co か、 .escarg m c があります。 . .ESC[] m "" 元の色に戻します。 . .ESC[] M color 閉じた描画オブジェクトの塗りつぶし色を、色 .I color に変更します。他の形式として、 .escarg M( co か、 .escarg M c があります。 . .ESC M "" 元の塗りつぶし色に戻します。 . .ESC n r 1 文字の名前 .I r を持つレジスタ変数に格納されている数値。 . .ESC n( re 2 文字の名前 .I re を持つレジスタ変数に格納されている数値。 . .ESC[] n reg 任意の長さの名前 .I reg を持つレジスタ変数に格納されている数値。 . .ESCq N n 現在のフォントで、コード .I n で指定された文字を出力します。 特別フォントは検索されません。 リクエスト .request char を用いて文字にフォントを追加するときに便利です。 . .ESCq o abc.\|.\|.\& 文字 .IR a , .IR b , .IR c , などを 2 度打ちします。 . .ESC O 0 グリフ出力を無効にします。 内部使用が主な目的です。 . .ESC O 1 グリフ出力を有効にします。 内部使用が主な目的です。 . .ESC p 改行し、その出力行を引き延ばします。 . .ESC r 垂直方向に 1\ em 逆戻りします (nroff では 1 行逆戻りします)。 . .ESCq R "name\~\[+-]n" リクエスト .request .nr .I name .I \[+-]n と同じです。 . .ESC[] s \[+-]N ポイントサイズを .I N スケールポイントに設定します。 別の書式として .BI \[rs]s \[+-] [ N ]\c , .BI \[rs]s' \[+-]N '\c .Text , .BI \[rs]s \[+-] ' N '\c .Text , .escarg s( \[+-]xy\c .Text , .BI \[rs]s \[+-] ( xy\c .Text , .escarg s \[+-]x が使えることに注意してください。 これは、リクエスト .request ps と同じです。 . .ESCq S N 出力を .I N 度傾けます。 . .ESC t 解釈されない水平タブ。 . .ESC u 垂直方向に 1/2 em 逆戻りします (nroff では 1/2 行逆戻りします)。 . .ESCq v N 局所的な垂直移動。 .I N だけ下がります (負の値のときは上がります)。 . .ESC[] V env 環境変数 .I env の内容。 別の書式では、 .escarg V( xy と .escarg V x が使えます。 . .ESCq w string 文字列 .I string の幅。 . .ESCq x N さらに行送りする関数 (負の値なら前へ、正の値なら後ろへ行送りします)。 . .ESCq X string .I string をデバイス制御関数として出力します。 . .ESC[] Y name 文字列変数あるいはマクロ .I name をデバイス制御関数として解釈しないように出力します。 別の書式では、 .escarg Y( xy と .escarg Y x になります。 . .ESC z c 幅 0 (空白なし) で .I c を出力します。 . .ESCq Z anything .I anything を出力し、水平・垂直位置を元に戻します。 .I anything にはタブやリーダを含めてはなりません。 . .PD .P エスケープシーケンス .esc e , .esc . , .esc \[dq] , .esc $ , .esc * , .esc a , .esc n , .esc t , .esc g , および .escarg \& newline はコピーモードで解釈されます。 . .P .esc ( あるいは .esc [ で始まるエスケープシーケンスは 1 文字のエスケープシーケンスを 表すものではなく、2 つ以上の文字を持ったエスケープ名の 開始を示します。 . .P バックスラッシュの後に定義済みのエスケープシーケンスを 形成しない文字が続く場合は、バックスラッシュは黙って無視され、 文字そのものがマップされます。 . . .\" -------------------------------------------------------------------- .SS "特殊文字" .\"-------------------------------------------------------------------- . よく使われる特殊文字は、文字 .I x と .I y を用いた .BI \[rs]( xy の形式のエスケープシーケンスであらかじめ定義されています。 特殊文字の中には通常のフォントに含まれているものも一部ありますが、 ほとんどは特別フォントでしか利用できません。 最も重要なグリフを抜き出したものを次に示します。 完全なリストは、 .BR groff_char (7) にあります。 .RS .P .PD 0 . .ESC (bu 中黒 .ESC (co 著作権記号 .ESC (ct セント記号 (通貨) .ESC (dd 2 重ダガー .ESC (de 度記号 .ESC (dg ダガー .ESC (em 全角ダッシュ .ESC (hy ハイフン .ESC (rg 登録記号 .ESC (sc セクション記号 .ESC (ul アンダーライン文字 .ESC (== 等号 .ESC (>= 以上 .ESC (<= 以下 .ESC (!= 不等号 .ESC (-> 右矢印 .ESC (<- 左矢印 .ESC (+- プラスマイナス記号 .PD .RE . . .\" -------------------------------------------------------------------- .SS "文字列" .\" -------------------------------------------------------------------- . 文字列は、リクエスト .request ds を用いて定義し、エスケープシーケンス .esc * を用いて値を取り出すことができます。 . .P 文字列はマクロと名前空間を共有します。 . ですから、文字列と引数無しのマクロはおおむね等価です。 文字列をマクロのように呼び出すことも、その逆も可能です。 しかし、このやり方はしばしば予想の付かない結果を招くことに なります。 . groff では、以下の文字列があらかじめ定義されています。 . .STRING .T コマンド行オプション .option -T により指定された、現在の出力デバイス名。 . . .\" -------------------------------------------------------------------- .SH レジスタ .\" -------------------------------------------------------------------- . レジスタは値を格納する変数です。 groff では、ほとんどのレジスタは数値を格納しますが (前述セクション .B 数式 を参照してください)、なかには文字列値を保持できるものもあります。 . .P 各レジスタには名前が与えられています。 任意のレジスタを定義でき、リクエスト .request nr .I register で定義・設定できます。 . .P レジスタに格納された値は、エスケープシーケンス .esc n を用いて取り出すことができます。 . .P 最も有用なのは、定義済みのレジスタです。 次からは、レジスタのことを話しているのだということを明確にするため、 .I name という表記を用いて .register name レジスタのことを示します。 .esc[] n "" 修飾はレジスタ名の一部ではないことを気にとめておいてください。 . . .\" -------------------------------------------------------------------- .SS "読み込み専用レジスタ" .\"-------------------------------------------------------------------- . 次のレジスタは、ユーザが書き換えられない定義済みの値を持った レジスタです (通常、ドットで始まるレジスタは読み込み専用です)。 ほとんどは、現在の設定についての情報を提供したり、リクエスト呼び出し からの結果を保存したりするものです。 . .P .PD 0 .REG .$ 現在のマクロの引数の個数。 . .REG .a 最後に .escq x N を用いて指定した行送り幅。 . .REG .A オプション .B \-A が使用されているときに .B troff 内で 1 が設定されます。 .B nroff 内では常に 1 です。 .REG .c 現在の入力行番号。 .REG .C 互換モードが有効になっている場合は 1 で、そうでない場合 0 です。 .REG .cdp 現在の環境に追加された最後の文字の深さ。 最後の文字が基準線から下に突き出ている場合に正になります。 .REG .ce リクエスト .request ce で設定された、センタリングされる行の残数。 .REG .cht 現在の環境に追加された最後の文字の高さ。 基準線よりも上に文字が突き出ている場合に正になります。 .REG .color 色機能が有効のとき 1 で、他の場合 0 です。 .REG .csk 現在の環境に追加された最後の文字の傾き。 文字の傾きとは、文字の上についたアクセント記号が文字の中央からどれだけ 右に離れて置かれるかということです。 .REG .d 現在のディバージョンでの垂直方向の位置です。 レジスタ .register nl と同じです。 .REG .ev 現在の環境の名前もしくは番号です (文字列の値です)。 .REG .f 現在のフォント番号です。 .REG .fam 現在のフォントファミリです (文字列の値です)。 .REG .fn 現在の (内部) 実フォント名 (文字列の値です)。 .REG .fp 次に空いているフォント位置番号。 .REG .g GNU troff では常に 1 です。 マクロ中で groff で動作しているかどうかをテストする場合、 このレジスタを使用すべきでしょう。 .REG .h 現在のページあるいはディバージョンでのテキスト基準線の 最高点です。 .REG .H 利用可能な水平方向の解像度 (基本単位です)。 . .REG .height 現在のフォントの高さ。これは .request \[rs]H により設定されたもの。 . .REG .hla リクエスト .B .hla で設定された現在のハイフネーション言語。 . .REG .hlc 直前で連続したハイフネーション行数。 . .REG .hlm 連続したハイフネーション行数の許される最大値。 これは、 リクエスト .request hlm で設定されます。 . .REG .hy 現在のハイフネーションフラグ ( リクエスト .request hy で設定されます)。 . .REG .hym 現在のハイフネーションの余白 ( リクエスト .request hym で設定されます)。 . .REG .hys 現在のハイフネーションの空白 ( リクエスト .request hys で設定されます)。 .REG .i 現在のインデント。 . .REG .in 現在の出力行に対して適用されるインデント。 . .REG .int 最後に出力した行に .esc c が含まれていれば正です。 .REG .kern ペアワイズカーニングが有効になっている場合 1 で、 無効になっていれば 0 です。 . .REG .l 現在行の長さです。 . .REG .lg 現在の合字モード ( リクエスト .request lg で設定されます)。 . .REG .linetabs 現在の行タブモード ( .request linetabs リクエストによって設定されます)。 .REG .ll 現在の出力行に対して適用される行の長さ。 . .REG .lt タイトルの長さ ( リクエスト .request lt で設定されます)。 . .REG .n 直前の出力行でのテキスト部分の長さ。 . .REG .ne トラップを生起させる原因となった最後のリクエスト .request ne が必要とした空白の量。 このレジスタは、 .register .trunc と一緒に使用すると便利です。 . .REG .ns 空白なしモードであれば 1 で、 そうでなければ 0 が設定されます。 . .REG .o 現在のページのオフセット。 . .REG .p 現在のページの長さ。 . .REG .pe ページ送出 (ejection) 中には 1 で、 そうでなければ 0 が設定されます。 . .REG .pn 次ページの番号。 これは、リクエスト .request pn で定義された値もしくは現在ページに 1 を足した番号の いずれかです。 . .REG .ps スケールポイントで表した現在のポイントサイズ。 . .REG .psr 最後に要求された、スケールポイントで表したポイントサイズ。 . .REG .rj リクエスト rj によって設定された右寄せされる行の数。 . .REG .s 10 進小数での現在のポイントサイズ。 . .REG .slant 現在のフォントのスラントの値。これは .request \[rs]S で設定されたものです。 . .REG .sr 10 進小数での最後に要求されたポイントサイズ (文字列値)。 . .REG .t 次のトラップまでの距離。 .REG .T オプション .B \-T が使われている場合 1 に設定されます。 .REG .tabs 現在のタブ設定の文字列表現。 リクエスト .request ta に対する引数として使用するのに適しています。 .REG .trunc 最近の垂直位置トラップによって切り詰められた垂直スペースの量。 リクエスト .request .ne によるトラップが引き起こされた場合は、そのリクエストによって生じた 垂直移動量をさらにマイナスした値になります。 別の言い方をすれば、トラップが発生した時点での、 トラップが起きなかった場合の垂直位置と現在の垂直位置との差を 表しています。 レジスタ .register .ne と一緒に使用すると便利です。 .REG .ss リクエスト .request ss の第 1 引数によって設定されたパラメータの値。 .REG .sss リクエスト .request ss の第 2 引数によって設定されたパラメータの値。 .REG .u 行連結モードのときは 1 で、そうでなければ 0 です。 . .REG .v 現在の垂直方向の行送り量。 . .REG .V 利用可能な垂直方向の解像度 (基本単位です)。 . .REG .vpt 垂直位置トラップが有効なら 1 で、無効なら 0 です。 . .REG .w 直前の文字の幅。 . .REG .warn 現在有効になっている警告の番号コードの和。 . .REG .x メジャーバージョン番号。 . .REG .y マイナバージョン番号。 . .REG .Y groff のリビジョン番号。 . .REG .z 現在のディバージョン名。 .PD . . .\" -------------------------------------------------------------------- .SS "書き込み可能なレジスタ" .\"-------------------------------------------------------------------- . 次のレジスタは、ユーザによって読み書き可能です。 定義済みのデフォルト値を持っていますが、ドキュメントを カスタマイズするために変更できます。 . .P .PD 0 .REG % 現在のページ番号。 . .REG c. 現在の入力行番号。 . .REG ct 文字の種類 (幅関数 .esc w で指定されます)。 . .REG dl 最後に行われたディバージョンの最大幅。 . .REG dn 最後に行われたディバージョンの高さ。 . .REG dw 現在の曜日 (1-7)。 . .REG dy 現在の日 (1-31)。 . .REG hours 深夜 0 時からの時刻。 起動時に初期化されます。 . .REG hp 現在の入力行における水平位置。 . .REG llx 与えられた PostScript 画像 ( .request .psbb で設定されます) の左下 x 座標 (PostScript の unit)。 . .REG lly 与えられた PostScript 画像 ( .request .psbb で設定されます) の左下 y 座標 (PostScript 単位)。 . .REG ln 出力行番号。 . .REG mo 現在の月 (1-12)。 . .REG nl 最後に表示されたテキストの基準線の垂直方向の位置。 . .REG rsb .register sb と同様ですが、文字の高さおよび深さを勘定に含めています。 .REG rst .register st と同様ですが、文字の高さおよび深さを勘定に含めています。 .REG sb 文字列の、基準線の下側の深さ (幅関数 .esc w で生成されます)。 . .REG seconds 現在の 1 分の中の秒数。 . .REG skw .esc w 引数の最後の文字の中央からの右スキップ幅。 .REG slimit 0 よりも大きければ、入力スタック上のオブジェクトの最大数。 0 以下であれば、制限はありません。 つまり、仮想メモリを使い果たすまで再帰呼び出しし続けることができます。 .REG ssc 添字の直前にある文字に追加すべき水平方向の空白量 (幅関数 .esc w で生成されます) (負の値になる可能性もあります)。 .REG st 文字列の、基準線の上の高さ (幅関数 .esc w で生成されます)。 .REG systat 最後の .request sy リクエストによって実行された .I system() 関数の戻り値。 .REG urx 与えられた PostScript 画像 ( .request .psbb で設定されます) の右上 x 座標 (PostScript 単位)。 . .REG ury 与えられた PostScript 画像 ( .request .psbb で設定されます) の右上 y 座標 (PostScript 単位)。 . .REG year 現在の年 (2000 年問題対応済みです)。 . .REG yr 現在の年から 1900 を引いたものです。 2000 年問題対応にするにはレジスタ .register year を代わりに使用してください。 . .PD . . .\" -------------------------------------------------------------------- .SH 互換性 .\" -------------------------------------------------------------------- . groff 言語を、 .I [CSTR\~#54] で定義された古典的な troff と比較した際の違いに ついては、 .BR groff_diff (7) に記載されています。 . .P groff システムは互換モードを提供しています。このモードをどのように して呼び出すかについては、 .BR groff (1) を参照して下さい。 . . .\" -------------------------------------------------------------------- .SH バグ .\" -------------------------------------------------------------------- . バグは .MTO bug-groff@gnu.org "groff bug mailing list" 宛に報告下さい。それ自体で完全な、十分な説明を含み、 バグが再現可能な例に、どのバージョンの groff を使っていたかも 含めて下さるようお願い致します。 . . .\" -------------------------------------------------------------------- .SH 作者 .\"-------------------------------------------------------------------- . Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. . .P このドキュメントは、FDL (GNU Free Documentation License) バージョン 1.1 以降の条項のもとに配布されています。 システムに FDL のコピーがあるはずですし、 .URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" からオンラインで入手可能です。 . .P 本ドキュメントは、 .IR groff , すなわち GNU roff ディストリビューションの一部です。 . .MTO bwarken@mayn.de "Bernd Warken" によって書かれ、 it is maintained by .MTO wl@gnu.org "Werner Lemberg" . が保守しています。 . . .\" -------------------------------------------------------------------- .SH "関連項目" .\"-------------------------------------------------------------------- . .P groff 言語の主な情報源は .B groff .BR info (1) ファイルです。 . めちゃくちゃ詳しい説明に加え、例もたくさん含まれています。 . .TP .BR groff (1) groff プログラムの用法と文書へのポインタと groff システムを 入手する方法。 . .TP .BR groff_diff (7) 古典的 roff と比較した際の groff 言語の違い。 これは、groff 固有の予め定義された言語要素についての 権威ある文書です。 .TP .BR groff_char (7) 予め定義された groff 文字 (グリフ)。 . .TP .BR groff_font (5) フォントと DESC ファイルの仕様。 . .TP .BR roff (7) roff の歴史、roff システムすべてに共通の部分について、 更に詳しい文書へのポインタ。 . .TP .I [CSTR\~#54] .URL http://\:cm.bell-labs.com/\:cm/\:cs/\:54.ps \ "Nroff/\:Troff User's Manual by Osanna & Kernighan" \[em] 古典的 troff に関するバイブル。 . .\" .SH 履歴 .\" Yoshiteru Kageyama 2001/05/20 JM さんの .\" groff 1.16.1 ベースを参考に更新 .\" Norihiro Kumagai 2001/03/16 訳チェック .\" Kazuo Horikawa 2001/05/20 groff 1.17 に更新 .\" Kazuo Horikawa 2001/08/07 groff 1.17.2 に更新 .\" Norihiro Kumagai 2003/06/02 groff 1.19 に更新 . . .\" -------------------------------------------------------------------- .\" Emacs Setup .\" -------------------------------------------------------------------- . .\" Local Variables: .\" mode: nroff .\" End: