troff 用の数式フォーマッタ
-C-N-v-r-m nn
とします。
eqn
は下付き、上付き文字を
n
より小さなサイズにしません。
-T namename
で指定された機器用の出力を行います。実際は、
name
と
いう値 1 のマクロが定義されるだけです。普通は
eqnrc
でこの定義されたマクロによって出力機器にふさわしい設定がなされます。
デフォルトの出力機器は
ps
です。
-M dirdir
の eqnrc を探します。
-R-f F-s n-p nn
ポイント小さくなるようにし
ます。このオプションは使うべきではありません。通常
eqn
は隣接するテキストの 70% のサイズになるように調節します。
ordinaryoperatorbinaryrelationopeningclosingpunctuationinnersuppresstype t ee
を含むものを、型
t
であると指定します。
t
は、上述の型の中から指定します。
たとえば、
times
は
type binary mu
と定義されます。
マクロ展開を防ぐためにクォーティングする以外は、
型の名前はクォートする必要はありません。
chartype t texttext
にある文字は、型
t
を持つようになります。例えば
chartype punctuation .,;:
という指定は、
という文字が、それぞれに句読点記号型を持つことを指定
します。
以後、式の中にこれらの文字が出現した場合は、句読点記号として処理されます。
型
t
は、
letter
や
digit
という指定も可能です。この場合
chartype
は、文字のフォントの型を変更します。
詳細は、フォントサブセクションを見て下さい。
e1 smallover e2e1
および
e2
のサイズを小さくします;
また
e1
および
e2
と分数の線との間の垂直幅も小さくなります。
over
プリミティブは \*(tx
のディスプレイスタイルの
\over
プリミティブに対応します;
smallover
は非ディスプレイスタイルの
\over
に対応します。
vcenter ee
を数式軸 (math axis) にあわせて垂直方向にセンタリングします。
数式軸は垂直位置であり、
これにあわせて + や - といった文字はセンタリングされます;
また分数の線の垂直位置にもなります。
例えば、
sum
はこのように定義されています。
{ type operator vcenter size +5 *S }
e1 accent e2e2
を
e1
上のアクセントとします。
e2
は小文字のレターに対して適正な高さにあると仮定します;
e2
は、
e1
が小文字のレターよりも文字の高さが高かったり低かったりする場合には、
必要に応じて下方に移動されます。
例えば
hat
はこのように定義されています。
accent { ^ }
dotdot ,
dot ,
tilde ,
vec ,
dyad
も
accent
プリミティブを用いて定義されています。
e1 uaccent e2e2
を
e1
下のアクセントとします。
e2
は下に突き出ていない小文字に対して適正な高さにあると仮定します;
e2
は、
e1
が下に突き出している場合、下方に移動されます。
utilde
は
uaccent
を使用して定義されており、
ベースライン下の tilde アクセントとなります。
split ts text tstext
と同じ効果ですが、
text
はクォートされているためマクロ展開の対象となりません;
text
は個々の文字に分割され、それぞれの文字の間に空白が調整されます。
nosplit texttext
はクォートされていないためマクロ展開の対象となります;
text
は個々の文字に分割されず、それぞれの文字の間の空白も調整されません。
e opprimespecial text ee
から新しいオブジェクトを生成します。
マクロが呼び出されると、文字列
0s
は
e
の出力を保持します。
また数字レジスタ
0w ,
0h ,
0d ,
0skern ,
0skew
はそれぞれ
e
の幅、高さ、深さ、下付き文字のカーニング、スキューを保持します
(オブジェクトの
subscript kern
とは、オブジェクト中の下付き文字がどの程度挿入されるかを表します;
オブジェクトの
skew
とは、オブジェクト上のアクセントが
オブジェクトの中央から右側に向けてどの程度離れて配置されるかを表します)。
マクロは
0s
を修正することにより、
現在位置における望ましい結果を出力し、
このオブジェクトの幅の分だけ現在の水平位置を増加させます。
数字レジスタは、結果に対応するように修正されている必要があります。
例えば、数式を `打ち消す' 構造を、斜め線を数式上に描く事によって
実現する場合を考えて見ましょう。
B 6+\n(.Vu .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 }
によって打ち消すことができます。
次はより複雑な構造により、式の周りに箱を描きます:
B 11+\n(.Vu .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 p np
を値
n
に設定します;
n
は整数です。
例えば、
set x_height 45
は、
eqn
に対して x の高さは 0.45 em であると指示します。
パラメータを以下に示します。
特に記述が無い場合は、値は em の 100 分の 1 を意味します。
以下の記述は定義的ではなく説明的になるように意図しています。
minimum_sizefat_offsetover_hangaccent_widthdelimiter_factordelimiter_shortfallnull_delimiter_spacescript_spacethin_spacemedium_spacethick_spacex_heightaxis_heightdefault_rule_thicknessnum1num2denom1denom2sup1sup2sup3sub1sub2sup_dropsub_dropbig_op_spacing1big_op_spacing2big_op_spacing3big_op_spacing4big_op_spacing5baseline_sepshift_downcolumn_sepmatrix_side_sepdraw_linesbody_heightbody_depthnroffn
は 1 から 9 は、
n 番目の
引数に置き換えられます;
引数が
n
より少ない場合、無と置き換えられます。
左括弧を含む語で、左括弧より前の語の部分が
define
コマンドで定義されている語は、
引数付きのマクロ呼び出しとして認識されます;
左括弧に続く複数の文字は、対応する右括弧の範囲まで、
コンマで区切られた引数として扱われます;
ネストした括弧内のコンマでは引数は区切られません。
sdefine name X anything Xname
は認識されません。
include ts file tsfile
中の行で、
もしくは
で始まる行は無視されます。
ifdef name X anything Xname
が
define
で定義されている場合
(または
name
が出力デバイスであるために自動的に定義されている場合)、
anything
を処理します;
そうでない場合は
anything
を無視します。
X
は
anything
に含まれない文字であれば何でも構いません。
grfont f/usr/share/tmac/eqnrc