Ottima sfera di cristallo!
TeX soffre di alcune magagnette che ne rivelano l’origine in tempi in cui occorreva stare molto attenti alle risorse che si impegnavano. Per questo all’inizio i font erano limitati a 128 caratteri e Knuth decise di inserire nei font i caratteri importanti per la composizione dei testi; così, per esempio, invece dei caratteri < e > inserì i segni di interpunzione spagnoli ¡ e ¿.
Una scelta che, vista con il senno di poi, si è rivelata sbagliata. I font EC, al contrario, hanno una perfetta corrispondenza con i caratteri ASCII stampabili nella prima metà. Quindi ci sono < e > al posto “giusto”. Solo i caratteri nei posti 0-31 e 127 non corrispondono al codice ASCII che là mette cose del tutto inutili dal punto di vista tipografico.
Altre scelte “sbagliate” nei font CM? Be’, il carattere $, in cmti è reso con il segno della sterlina. Provare a scrivere {\itshape\char`\$} per credere. Non \$, che in LaTeX è definito in modo da evitare il problema richiamando essenzialmente \textdollar se si è in modo testo e \mathdollar se si è in modo matematico. Il comando \textdollar è di quelli che dipendono dalla codifica in uso (OT1 oppure T1). Vediamo.
`\DeclareTextCommand{\textdollar}{OT1}{\hmode@bgroup
\ifdim \fontdimen\@ne\font >\z@
\slshape
\else
\upshape
\fi
\char`\$\egroup}
\DeclareTextCommand{\textsterling}{OT1}{\hmode@bgroup
\ifdim \fontdimen\@ne\font >\z@
\itshape
\else
\fontshape{ui}\selectfont
\fi
\char`\$\egroup}`
Non è difficile leggere la definizione di \textdollar. Il parametro \fontdimen1\font (\@ne sta per la costante 1 e \z@ per 0) contiene la percentuale di inclinazione del font in uso; se il font è inclinato viene scelto il carattere che sta al posto del dollaro nel codice ASCII (\char`\$) in \slshape (dove c’è effettivamente il carattere $); altrimenti si usa \upshape. Per \textsterling, invece, se il font in uso è inclinato, si passa a \itshape; se il font è diritto si passa al font “corsivo diritto” (\fontshape{ui}).
Questo è quanto accade in ot1enc.def, mentre in t1enc.def si trova semplicemente
`\DeclareTextSymbol{\textdollar}{T1}{`\$}
\DeclareTextSymbol{\textsterling}{T1}{191}`
Ciao
Enrico