スポンサーリンク

EQN

名称
書式
解説
オプション
使用法
関連ファイル
バグ
関連項目

名称

eqn − troff 用の数式フォーマッタ

書式

eqn [ −rvCNR ] [ −dxy ] [ −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 の機能のすべてを提供するものではありません。低解像度 の タ イプライタのような機器を (単純な入力に対しては十分であるのですが) サ ポートしません。

オプション

−dxy

インライン式の左右のデリミタを、それぞれ x および y と 指 定します。ソースファイル中の delim 文が優先します。

−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 は、 letterdigit という指定も 可能です。この場合 chartype は、文字のフォントの型を変更します。 詳細は、フォントサブセクションを見て下さい。

新しいプリミティブ

e1 smallover e2

これは over と似ています; smallovere1 および e2 のサイズ を 小 さくします; また e1 および e2 と分数の線との間の垂直幅も小さ くなります。 over プリミティブは TeX のディスプレイスタイ ル の \over プリミティブに対応します; smallover は非ディスプレイスタ イルの \over に対応します。

vcenter e

e を数式軸 (math axis) にあわせて垂直方向にセンタリングします。 数 式軸は垂直位置であり、これにあわせて + や - といった文字はセ ンタリングされます; また分数の線の垂直位置にもなりま す。 例 え ば、 sum はこのように定義されています。

{ type "operator" vcenter size +5 \(*S }

e1 accent e2

e2e1 上のアクセントとします。 e2 は小文字のレターに対して適 正な高さにあると仮定します; e2 は、 e1 が小文字のレターよりも文 字 の高さが高かったり低かったりする場合には、必要に応じて下方に 移動されます。例えば hat はこのように定義されています。

accent { "^" }

dotdot, dot, tilde, vec, dyadaccent プリミティブを用いて定義 されています。

e1 uaccent e2

e2e1 下のアクセントとします。 e2 は下に突き出ていない小文字 に対して適正な高さにあると仮定します; e2 は、 e1 が下に突き出し ている場合、下方に移動されます。 utildeuaccent を使用して定 義されており、ベースライン下の tilde アクセントとなります。

split "text"

単なる

text

と同じ効果ですが、 text はクォートされているためマクロ展開の対象 と なりません; text は個々の文字に分割され、それぞれの文字の間に 空白が調整されます。

nosplit text

"text"

と同じですが、 text はクォートされていないためマクロ展開の対象と な ります; text は個々の文字に分割されず、それぞれの文字の間の空 白も調整されません。

e opprime

prime の変形であり、 e のオペ レー タ と し て 作 用 し ま す。 A opprime sub 1 のような場合、 opprime は prime とは異なる結果 となります: opprime では 1 は prime 文字の真下に挿入され、 A の 下 付き文字となります (数式版組の形式のように)。一方、 prime で は 1 は prime 文字の下付き文字となります。 opprime が前に付くと い う 事 は、 barunder が前に付くのと同じ事ですが、後者は accent, uaccent 以外の他の全ての文字よりも高くなります。 クォー ト さ れていないテキスト中では、最初の文字ではない opprime として扱われます。

special text e

troff(1) マクロ text を使用して、 e から新しいオブジェクトを 生 成します。マクロが呼び出されると、文字列 0se の出力を保持し ます。また数字レジスタ 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’
..

以 上の結果から、式 ecancel { 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

barunder が単一文字に 対 して適用された場合、線の長さはこの値 となります。通常、 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

列ベクトルまたは行列の各 行のベースラインがどれだけ離れている か を指定します。大抵の場合、この値は num1denom1 の和に等しいです。

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 の場合には、 ndefinedefine のよ う に 振 舞 い、 tdefine は無視されます。この値が 0 の場 合は tdefinedefine のように振舞い、 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

namedefine で定義されている場合 (または name が出力デバイス であるために自動的に定義されている場合)、 anything を処理 し ま す; そうでない場合は anything を無視します。 Xanything に含 まれない文字であれば何でも構いません。

フォント

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

スポンサーリンク