Ao escrever \[\sum\]
, um sinal de soma maior é usado do que ao escrever \(\sum\)
. Como o \sum
comando descobre qual tamanho usar?
Para que se \sum
expande? Suponho que seja apenas uma abreviatura para outra série mais longa de comandos, não é?
Responder1
O \sum
é um grande operador que possui dois tamanhos implementados na fonte matemática. Cada caractere ou sequência de controle composta no modo matemático tem seu código matemático, que inclui a classe matemática (Ord ou Op ou Bin ou Rel...), o número da família da fonte matemática e o slot da fonte. Os caracteres são declarados por \mathcode
(ou \Umathcode
em mecanismos Unicode) e as sequências de controle por \mathchardef
(ou \Umathchardef
em mecanismos Unicode). O \sum
é declarado por \mathcode
no TeX clássico ou por \Umathchardef
na matemática Unicode ou é definido por \def\sum{∑}
no OpTeX e ∑
é declarado por \Umathcode
.
Isso significa que \sum
não é uma macro complicada, é apenas equivalente a um número e esse número é interpretado como código matemático quando é impresso. A parte crucial deste código matemático é a informação de que sua classe é Op (grande Operador). Quando o TeX imprime tal caractere matemático, \textstyle
ele solicita o caracter direto da fonte de determinado slot, mas quando é impresso, \displaystyle
o TeX solicita a mesma fonte e slot, mas além disso, solicita uma variante maior da fonte. As fontes Unicode permitem ter mais glifos em um único slot, para que esta solicitação especial possa ser atendida. As fontes TeX clássicas possuem um ponteiro no tfm
arquivo atribuído a um determinado slot e esse ponteiro aponta para outro slot onde o glifo maior está preparado.
Por exemplo, TeX simples (ou seja, TeX clássico) declara \sum
por:
\mathchardef\sum="1350
O primeiro dígito 1
significa que é o caractere Op (grande operador). A terceira família de fontes deve ser usada (segundo dígito) e 0x50
o slot deve ser usado. Plain TeX registra como terceira família de fontes a cmex10
fonte:
\font\tenex=cmex10 % math extension
\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
Quando você corre
tftopl cmex10 > cmex10.pl
então você pode examinar as informações métricas do cmex10.tfm
formato legível por humanos no cmex10.pl
arquivo. Você pode ver que o caractere O 120
(que é o número octal do slot 0x50
) inclui esta informação:
(CHARACTER O 120
(CHARWD R 1.055559)
(CHARDP R 1.000013)
(NEXTLARGER O 130)
)
O NEXTLAGRER O 130
é o ponteiro mencionado acima. Diz que o glifo maior do mesmo tipo está no slot octal 130, ou seja, no slot 0x58
. Você pode correr
tex testfont
Name of the font to test = cmex10
*\table\end
e você tem a tabela da cmex10
fonte no testfont.dvi
arquivo. Você pode ver que 0x50
o slot inclui um símbolo de soma menor e 0x58
sua variante maior.
Quando a fonte matemática Unicode é usada, a variante maior não possui um número de slot especial, mas todos os glifos alternativos estão no slot único 0x2211
(símbolo de soma Unicode) implementado pela tabela GSUB.