Определение \sum — как работает выбор размера

Определение \sum — как работает выбор размера

При записи \[\sum\]используется больший знак суммы, чем при записи \(\sum\). Как \sumкоманда узнает, какой размер использовать?

Что значит \sumexpand to? Я предполагаю, что это просто сокращение для другой более длинной серии команд, не так ли?

решение1

Оператор \sumis 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он запрашивает прямой символ из шрифта из указанного слота, но когда он печатается в , \displaystyleTeX запрашивает тот же шрифт и слот, но, кроме того, он запрашивает больший вариант из шрифта. Шрифты 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.

Связанный контент