При записи \[\sum\]
используется больший знак суммы, чем при записи \(\sum\)
. Как \sum
команда узнает, какой размер использовать?
Что значит \sum
expand to? Я предполагаю, что это просто сокращение для другой более длинной серии команд, не так ли?
решение1
Оператор \sum
is big, который имеет два размера, реализованных в шрифте math. Каждый символ или управляющая последовательность, набранная в математическом режиме, имеет свой mathcode, который включает класс math (Ord или Op или Bin или Rel...), номер семейства шрифтов math и слот шрифта. Символы объявляются с помощью \mathcode
(или \Umathcode
в движках Unicode), а управляющие последовательности — с помощью \mathchardef
(или \Umathchardef
в движках Unicode). Объявляется \sum
с помощью \mathcode
в классическом TeX или с помощью \Umathchardef
в math Unicode или определяется с помощью \def\sum{∑}
в OpTeX и ∑
объявляется с помощью \Umathcode
.
Это означает, что \sum
это не сложный макрос, это всего лишь эквивалент числа, и это число интерпретируется как математический код при печати. Важнейшей частью этого математического кода является информация о том, что его класс — Op (большой оператор). Когда TeX печатает такой математический символ в , \textstyle
он запрашивает прямой символ из шрифта из указанного слота, но когда он печатается в , \displaystyle
TeX запрашивает тот же шрифт и слот, но, кроме того, он запрашивает больший вариант из шрифта. Шрифты Unicode позволяют иметь больше глифов в одном слоте, поэтому этот специальный запрос может быть выполнен. Классические шрифты TeX имеют указатель в файле, tfm
назначенный указанному слоту, и этот указатель указывает на другой слот, где подготовлен больший глиф.
Например, простой TeX (т.е. классический TeX) объявляется \sum
следующим образом:
\mathchardef\sum="1350
Первая цифра 1
означает, что это символ Op (большой оператор). Следует использовать третье семейство шрифтов (вторая цифра) и 0x50
слот. Plain TeX регистрирует как третье семейство шрифтов шрифт cmex10
:
\font\tenex=cmex10 % math extension
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
Когда ты бежишь
tftopl cmex10 > cmex10.pl
затем вы можете посмотреть на метрическую информацию cmex10.tfm
в человекочитаемой форме в cmex10.pl
файле. Вы можете увидеть, что символ O 120
(который является восьмеричным номером слота 0x50
) включает эту информацию:
(CHARACTER O 120
(CHARWD R 1.055559)
(CHARDP R 1.000013)
(NEXTLARGER O 130)
)
Это NEXTLAGRER O 130
указатель, упомянутый выше. Он говорит, что больший глиф того же типа находится в слоте octal 130, т.е. в слоте 0x58
. Вы можете запустить
tex testfont
Name of the font to test = cmex10
*\table\end
и у вас есть таблица шрифта cmex10
в testfont.dvi
файле. Вы можете видеть, что 0x50
слот включает меньший символ суммирования и 0x58
включает его больший вариант.
При использовании математического шрифта Unicode более крупный вариант не имеет специального номера слота, но все альтернативные глифы находятся в одном слоте 0x2211
(символ суммирования Unicode), реализованном таблицей GSUB.