Provided by: manpages-ja_0.5.0.0.20161015+dfsg-1_all
名称
eqn - troff 用の数式フォーマッタ
書式
eqn [ -rvCNR ] [ -dcc ] [ -Tname ] [ -Mdir ] [ -fF ] [ -sn ] [ -pn ] [ -mn ] [ files... ] コマンドラインオプションとパラメータの間に、空白を置くことが可能です。
解説
本マニュアルでは、groff ドキュメントフォーマットシステムの一部である GNU バージョンの eqn について記述します。 eqn は、 troff への入力ファイルに埋め込まれている数式に関する記述をコ ンパイルし、 troff が解釈できる命令列に変換します。通常、 groff に -e オプ ションを指定す ることで、本プログラムは実行されます。文法は UNIX の eqn ととても似かよっています。GNU eqn の出力は UNIX の troff で処理できないので、 GNU troff を用いる必要があります。コマンドライ ンに ファイル名が指定されなかった場合は、標準入力から読み込みます。 ファイル名として - を 指定した場合も標準入力から読み込みます。 eqn は、まず -M オプションで指定されたディレクトリを、次に /usr/share/tmac, /usr/share/tmac を、最後に標準マクロディレクトリ /usr/share/tmac (訳注: 重複していますが原 文通りです) から eqnrc を検索し、もし存在すれば入力ファイルの処理に先がけて読み込みを行い ます。 -R オプションを使うことにより、この動作を禁止できます。 GNU eqn は neqn の機能のすべてを提供するものではありません。低解像度の タイプライタのよう な機器を (単純な入力に対しては十分であるのですが) サポートしません。
オプション
-C 直後に空白文字や改行ではない文字が続く .EQ と .EN を解釈します。 -N 区切り文字から次の区切り文字までの間に改行がくることを禁止します。誤って 閉じる方の 区切り文字をつけ忘れた場合も、以降の処理が正しく行われる可能性が高くなります。 -v バージョン番号を表示します。 -r サイズを 1 つだけ縮小します。 -mn 最低のポイントサイズを n とします。 eqn は下付き、上付き文字を n より小さなサイズに しません。 -Tname name で指定された機器用の出力を行います。実際は、 name と いう値 1 のマクロが定義さ れるだけです。普通は eqnrc でこの定義されたマクロによって出力機器にふさわしい設定が なされます。 デフォルトの出力機器は ps です。 -Mdir デフォルトのディレクトリ /usr/share/tmac よりも先に指定したディレクトリ dir の eqnrc を探します。 -R eqnrc ファイルを読み込みません。 -fF gfont F コマンドと等価です。 -sn gsize n コマンドと等価です。このオプションは使うべきではありません。 eqn は、通 常、数式が登場した位置のポイントサイズに数式のサイズをあわせます。 -pn 上付き、下付き文字が隣接するテキストより n ポイント小さくなるようにし ます。このオ プションは使うべきではありません。通常 eqn は隣接するテキストの 70% のサイズになる ように調節します。
使用法
ここでは、GNU eqn と Unix eqn の違いのみを解説します。 GNU eqn の新しい特徴のほとんどは、TeX に基づいています。 以下には、いくつかの TeX と GNU eqn の違いを記述してあります。 もし、あなたが TeX を知らないならば、無視した方が安全でしょ う。 自動スペーシング eqn は、数式の中の部分それぞれに対して型を与えて、その型を用いて数式 の中の部分の間の間隔 をそろえます。 利用できる型には以下のものがあります。 ordinary 1や x のような通常の文字 operator Σ のような大きな演算記号 binary + のような、2 項演算子 relation = のような関係記号 opening ( のような括弧開始記号 closing )のような括弧終了記号 punctuation , のような句読点記号 inner 括弧内部に含まれた部分式 suppress オートマチックスペーシングによる位置補正を抑制する 式の中の項の型は、以下に示す 2 つの方法のどちらかで指定されます。 type t e 式の中の項で e を含むものを、型 t であると指定します。 t は、上述の型の中から指定し ます。 たとえば、 times は type "binary" \(mu と定義されます。 マクロ展開を防ぐためにクォーティングする以外は、 型の名前はクォー トする必要はありません。 chartype t text クォートされていない文字のグループは、個々の文字に分割され、 それぞれの文字の型が検 索されます。 この変更で、各文字について、それぞれ格納されている文字の型が変更されま す。 この指定方法では、 text にある文字は、型 t を持つようになります。例えば chartype "punctuation" .,;: という指定は、 .,;: という文字が、それぞれに句読点記号型を持つことを指定 します。 以後、式の中にこれらの文字が出現した場合は、句読点記号として処理されます。 型 t は、 letter や digit という指定も可能です。この場合 chartype は、文字のフォントの型 を変更します。 詳細は、フォントサブセクションを見て下さい。 新しいプリミティブ e1 smallover e2 これは over と似ています; smallover は e1 および e2 のサイズを小さくします; また e1 および e2 と分数の線との間の垂直幅も小さくなります。 over プリミティブは TeX のディ スプレイスタイルの \over プリミティブに対応します; smallover は非ディスプレイスタイ ルの \over に対応します。 vcenter e e を数式軸 (math axis) にあわせて垂直方向にセンタリングします。 数式軸は垂直位置で あり、 これにあわせて + や - といった文字はセンタリングされます; また分数の線の垂直 位置にもなります。 例えば、 sum はこのように定義されています。 { type "operator" vcenter size +5 \(*S } e1 accent e2 e2 を e1 上のアクセントとします。 e2 は小文字のレターに対して適正な高さにあると仮定 します; e2 は、 e1 が小文字のレターよりも文字の高さが高かったり低かったりする場合に は、 必要に応じて下方に移動されます。 例えば hat はこのように定義されています。 accent { "^" } dotdot, dot, tilde, vec, dyad も accent プリミティブを用いて定義されています。 e1 uaccent e2 e2 を e1 下のアクセントとします。 e2 は下に突き出ていない小文字に対して適正な高さに あると仮定します; e2 は、 e1 が下に突き出している場合、下方に移動されます。 utilde は uaccent を使用して定義されており、 ベースライン下の tilde アクセントとなります。 split "text" 単なる text と同じ効果ですが、 text はクォートされているためマクロ展開の対象となりません; text は個々の文字に分割され、それぞれの文字の間に空白が調整されます。 nosplit text "text" と同じですが、 text はクォートされていないためマクロ展開の対象となります; text は 個々の文字に分割されず、それぞれの文字の間の空白も調整されません。 e opprime prime の変形であり、 e のオペレータとして作用します。 A opprime sub 1 のような場 合、 opprinme は prime とは異なる結果となります: opprime では 1 は prime 文字の真下 に挿入され、 A の下付き文字となります (数式版組の形式のように)。 一方、 prime では 1 は prime 文字の下付き文字となります。 opprime が前に付くという事は、 bar と under が前に付くのと同じ事ですが、 後者は accent, uaccent 以外の他の全ての文字よりも高く なります。 クォートされていないテキスト中では、最初の文字ではない ' は opprime とし て扱われます。 special text e troff(1) マクロ text を使用して、 e から新しいオブジェクトを生成します。 マクロが呼 び出されると、文字列 0s は e の出力を保持します。 また数字レジスタ 0w, 0h, 0d, 0skern, 0skew はそれぞれ e の幅、高さ、深さ、下付き文字のカーニング、スキューを保持 します (オブジェクトの subscript kern とは、オブジェクト中の下付き文字がどの程度挿 入されるかを表します; オブジェクトの skew とは、オブジェクト上のアクセントが オブ ジェクトの中央から右側に向けてどの程度離れて配置されるかを表します)。 マクロは 0s を修正することにより、 現在位置における望ましい結果を出力し、 このオブジェクトの幅 の分だけ現在の水平位置を増加させます。 数字レジスタは、結果に対応するように修正され ている必要があります。 例えば、数式を `打ち消す' 構造を、斜め線を数式上に描く事によって 実現する場合を考え て見ましょう。 .EQ define cancel 'special Ca' .EN .de Ca .ds 0s \Z'\\*(0s'\v'\\n(0du'\D'l \\n(0wu -\\n(0hu-\\n(0du'\v'\\n(0hu' .. 以上の結果から、式 e を cancel { e } によって打ち消すことができます。 次はより複雑な構造により、式の周りに箱を描きます: .EQ define box 'special Bx' .EN .de Bx .ds 0s \Z'\h'1n'\\*(0s'\ \Z'\v'\\n(0du+1n'\D'l \\n(0wu+2n 0'\D'l 0 -\\n(0hu-\\n(0du-2n'\ \D'l -\\n(0wu-2n 0'\D'l 0 \\n(0hu+\\n(0du+2n''\h'\\n(0wu+2n' .nr 0w +2n .nr 0d +1n .nr 0h +1n .. カスタマイズ 数式の外見は多くのパラメータにより制御します。 これらのパラメータは set コマンドで設定しま す。 set p n パラメータ p を値 n に設定します; n は整数です。 例えば、 set x_height 45 は、 eqn に対して x の高さは 0.45 em であると指示します。 パラメータを以下に示します。 特に記述が無い場合は、値は em の 100 分の 1 を意味しま す。 以下の記述は定義的ではなく説明的になるように意図しています。 minimum_size eqn はこれよりも小さいポイントサイズのセッティングを行いま せん。 値はポイントで指定します。 fat_offset fat プリミティブは数式をボールドにするために、 数式のコピー を 2 回重ね打ちします。 重ね打ちする時にずらす水平幅がこの 値です。 over_hang 分数の線の長さは、 分子もしくは分母の広い方の幅にこの値を 2 倍した長さを加えた長さとなります; 言い替えると、分子と分母 は少なくともこの値だけオーバハングします。 accent_width bar か under が単一文字に対して適用された場合、 線の長さは この値となります。 通常、 bar および under は適用対象のオブ ジェクトの幅に等しい長さの線を生成します; しかし単一文字の 場合、 これでは大抵の場合線が長すぎるように見えてしまいま す。 delimiter_factor left および right プリミティブにより生成される伸長性のある デリミタは高さと深さを持ちます。 デリミタが括っている部分式 が軸に対して最大限伸長する長さの 2000 分の 1 を単位とするこ のパラメータで表した値は、 デリミタの高さと深さの最低値を与 えます。 delimiter_shortfall left および right プリミティブにより生成される伸長性のある デリミタは高さと深さを持ちます。 デリミタが括っている部分式 が軸に対して最大限伸長する長さの 2000 分の 1 を単位とするこ のパラメータで表した値は、 デリミタの高さと深さの差の最低値 となります。 null_delimiter_space 分数の前後にこれだけの水平空白が挿入されます。 script_space 下付き文字、上付き文字の幅がこれだけ増やされます。 thin_space 句読点記号の後にこれだけの空白が自動的に挿入されます。 medium_space 2 項演算子の前後にこれだけの空白が自動的に挿入されます。 thick_space 関係演算子の前後にこれだけの空白が自動的に挿入されます。 x_height x のように上に突き出た部分の無いレターの高さ。 axis_height + や − といった 文字のセンタ位置がベースラインに対してどれ くらい高いかを表します。 使用しているフォントに対して適切な 値を使用する事が重要です。 default_rule_thickness \(ru 文字の太さ、 \D エスケープシーケンスにより生成される水 平線の太さを指定します。 num1 over コマンドは分子を最低この値だけ上に移動します。 num2 smallover コマンドは分子を最低この値だけ上に移動します。 denom1 over コマンドは分母を最低この値だけ下に移動します。 denom2 smallover コマンドは分母を最低この値だけ下に移動します。 sup1 通常上付き文字は最低この値だけ上に移動します。 sup2 上付き文字中もしくは上限中の上付き文字、もしくは smallover における分子は、 最低この値だけ上に移動します。 この値は通 常 sup1 より小さいです。 sup3 分母中もしくは平方根中の上付き文字、もしくは下付き文字もし くは下限は、 最低この値だけ上に移動します。 通常 sup2 より 小さいです。 sub1 通常下付き文字は最低この値だけ下に移動します。 sub2 下付き文字と上付き文字の両方がある場合、 下付き文字は最低こ の値だけ下に移動します。 sup_drop 上付き文字のベースラインは、上付き文字がセットされるオブ ジェクトの上部 に対して、この値よりも下になることはありませ ん。 sub_drop 下付き文字のベースラインは、下付き文字がセットされるオブ ジェクトの下部 に対して、少なくともこの値よりも下になりま す。 big_op_spacing1 上限のベースラインは、上限がセットされるオブジェクトの上部 に対して少なくともこの値よりも上になります。 big_op_spacing2 下限のベースラインは、下限がセットされるオブジェクトの下部 に対して少なくともこの値よりも下になります。 big_op_spacing3 上限の下部は、上限がセットされるオブジェクトの上部 に対して 少なくともこの値よりも上になります。 big_op_spacing4 下限の上部は、下限がセットされるオブジェクトの下部 に対して 少なくともこの値よりも下になります。 big_op_spacing5 これで指定される空白が上限上および下限下に付加されます。 baseline_sep 列ベクトルまたは行列の各行のベースラインがどれだけ離れてい るかを指定します。 大抵の場合、この値は num1 と denom1 の和 に等しいです。 shift_down 列ベクトルまたは行列の 一番上のベースラインおよび一番下の ベースラインの中間点が、 軸からどれだけ下がっているかを指定 します。 大抵の場合、この値は axis_height に等しいです。 column_sep 行列の列間に加えられる空白の長さを指定します。 matrix_side_sep 行列の両端に加えられる空白の長さを指定します。 draw_lines この値が非0の場合、線を引く場合に \D エスケープシーケンスを 使用し、 \l エスケープシーケンスと \(ru 文字は使用しなくな ります。 body_height この値を式の高さが越えた分だけ、 当該式を含む行の前の空白に 加えられます ( \xを使用します)。 デフォルト値は 85 です。 body_depth この値を式の深さが越えた分だけ、 当該式を含む行の後の空白に 加えられます ( \xを使用します)。 デフォルト値は 35 です。 nroff この値が非 0 の場合には、 ndefine は define のように振舞 い、 tdefine は無視されます。 この値が 0 の場合は tdefine は define のように振舞い、 ndefine は無視されます。 デフォ ルト値は 0 です (典型的には eqnrc ファイルによって、 ascii, latin1, utf8, cp1047 デバイスの場合、この値は 1 に変更され ます)。 これらのパラメータの役割に関するより正確な記述は The TeXbook の Appendix H に記載さ れています。 マクロ マクロは引数を取ることができます。 マクロが引数付きで呼ばれた場合、マクロボディでは、 $n ただし n は 1 から 9 は、 n番目の 引数に置き換えられます; 引数が n より少ない場合、無と置 き換えられます。 左括弧を含む語で、左括弧より前の語の部分が define コマンドで定義されてい る語は、 引数付きのマクロ呼び出しとして認識されます; 左括弧に続く複数の文字は、対応する右 括弧の範囲まで、 コンマで区切られた引数として扱われます; ネストした括弧内のコンマでは引数 は区切られません。 sdefine name X anything X define コマンドに似ていますが、 引数付きで呼ばれた場合 name は認識されません。 include "file" file の内容を組み込みます。 file 中の行で、 .EQ もしくは .EN で始まる行は無視されま す。 ifdef name X anything X name が define で定義されている場合 (または name が出力デバイスであるために自動的に 定義されている場合)、 anything を処理します; そうでない場合は anything を無視しま す。 X は anything に含まれない文字であれば何でも構いません。 フォント eqn は通常少なくとも 2 つのフォントを式のセットに使用します: すなわち、レターにはイタリッ クを、 その他にはローマンを使用します。 既存の gfont コマンドは、 イタリックフォントとして 使用されるフォントを変更します。 デフォルト値は I です。 ローマンフォントとして使用される フォントは 新しい grfont コマンドで変更します。 grfont f ローマンフォントを f に設定します。 italic プリミティブは gfont によってセットされた現在のイタリックフォントを使用します; roman プリミティブは grfont によってセットされた現在のローマンフォントを使用します。 また gbfont コマンドという新しいコマンドもあり、 bold プリミティブで使用されるフォントを変更し ます。 式中でフォントを変更するのに roman, italic, bold プリミティブしか使用しない場合、 全ての式中のフォントを変更するのには gfont, grfont, gbfont コマンドを使用するだけで済みま す。 どの文字をレター (イタリックでセットされるもの) として扱うのかを、 既に示した chartype コ マンドで指定できます。 letter タイプは文字をイタリックタイプでセットされるようにします。 digit タイプは文字をローマンタイプでセットされるようにします、
関連ファイル
/usr/share/tmac/eqnrc 初期化ファイル
バグ
文中に出現する式は、行の先頭での文字サイズに設定されます。
関連項目
groff(1), troff(1), groff_font(5), The TeXbook