と書く場合\[\sum\]
、 と書く場合よりも大きい合計記号が使用されます。コマンドは、使用するサイズをどのようにして判断するの\(\sum\)
でしょうか?\sum
展開するとどうなるのでしょうか\sum
? これは、別の長い一連のコマンドの省略形にすぎないと思いますが、そうではありませんか?
答え1
は\sum
、数式フォントに実装されている 2 つのサイズを持つビッグ演算子です。数式モードでタイプセットされる各文字または制御シーケンスには、数式クラス (Ord または Op または Bin または Rel...)、数式フォント ファミリ番号、およびフォントのスロットを含む数式コードがあります。文字は\mathcode
(または\Umathcode
Unicode エンジン) によって宣言され、制御シーケンスは\mathchardef
(または\Umathchardef
Unicode エンジン) によって宣言されます。 は、従来の TeX では によって宣言されるか、Unicode 数式では によって\sum
宣言されるか、 OpTeX ではによって定義され、によって宣言されます。\mathcode
\Umathchardef
\def\sum{∑}
∑
\Umathcode
これは\sum
複雑なマクロではなく、単に数値と等価であり、この数値は印刷時に数式コードとして解釈されることを意味します。この数式コードの重要な部分は、そのクラスが Op (大きな演算子) であるという情報です。TeX がこのような数式文字を印刷する場合、\textstyle
指定されたスロットのフォントから直接文字を要求しますが、印刷されると、\displaystyle
TeX は同じフォントとスロットを要求しますが、さらに、フォントからより大きなバリアントを要求します。Unicode フォントでは、1 つのスロットに複数のグリフを含めることができるため、この特別な要求を満たすことができます。従来の TeX フォントでは、tfm
指定されたスロットに割り当てられたファイル内にポインターがあり、このポインターは、より大きなグリフが用意されている別のスロットを指します。
たとえば、プレーン TeX (つまり、従来の TeX)\sum
は次のように宣言します。
\mathchardef\sum="1350
最初の数字は1
Op (大文字演算子) 文字であることを意味します。3 番目のフォント ファミリ (2 番目の数字) と0x50
スロットを使用する必要があります。Plain TeX は、次のフォントを 3 番目のフォント ファミリとして登録しますcmex10
。
\font\tenex=cmex10 % math extension
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
走るとき
tftopl cmex10 > cmex10.pl
cmex10.tfm
次に、ファイル内の人間が読める形式のメトリック情報を調べることができますcmex10.pl
。文字O 120
(スロットの 8 進数0x50
) に次の情報が含まれていることがわかります。
(CHARACTER O 120
(CHARWD R 1.055559)
(CHARDP R 1.000013)
(NEXTLARGER O 130)
)
はNEXTLAGRER O 130
上で述べたポインタです。これは、同じタイプの大きいグリフがスロット 8 進数 130、つまりスロット にあることを示しています0x58
。次のように実行できます。
tex testfont
Name of the font to test = cmex10
*\table\end
cmex10
ファイルにはフォントのテーブルがあります。スロットには小さい合計記号が含まれており、その大きい変形が含まれていることtestfont.dvi
がわかります。0x50
0x58
Unicode 数学フォントを使用する場合、大きい方のバリアントには特別なスロット番号はありませんが、すべての代替グリフは0x2211
GSUB テーブルによって実装される単一のスロット (Unicode 合計記号) にあります。