Re: XeLaTeX e il circoletto dei gradi

#58867
Up
0
Down
::

Questo è un problema risolto, ma vorrei condividerne la soluzione con i frequentatori del forum..

Con (pdf)LaTeX per segnare i gradi angolari accanto al loro valore numerico in modo testo si usa \textdegree; in modo matematico si mette ad espenonente un circoletto con ^\circle.

Con XelLaTeX ci sono tre vie: in modo testo si può usare \textdegree ma si può anche inserire il simbolo diretto º se la tastiera lo consente (malgrado tutti i difetti della tastiera italiana, questa ha il pregio di avere direttamente su un tasto il simbolo dei gradi; con altre tastiere magari ci vuole un qualche tasto intelligente; sul mio Mac con tastiera USA international scrivo il segno º premendo alt+0 (questa è la cifra zero)).
Invece in modo matematico non esiste nessuna macro che permetta di inserire il simbolo dei gradi e il comando, sempre possibile, ^\circle produce un pallino talmente piccolo che non si sa dire nemmeno se il suo interno sia banco o se sia nero. In realtà i font matematici per XeLaTeX, XITS Math e Asana Math contengono il glifo giusto, ma non è reso accessibile nelle sue funzioni di segno matematico.

Però con la seguente magia inserita nel preambolo:
`
\XeTeXmathcharnum`º = “2E000B0
`
si dice a XeLaTeX che quando si immette il simbolo dei gradi in modo matematico, questo segno, che ha posizione esadecimale “B0 nella famiglia di font numero “2, deve essere trattato come una lettera con tipo matematico 7; non ho idea di come il codice 7 diventi parte del byte “E, ma tant’è, questa è la magia, che mi è costata diverse ore di lavoro, data la lentezza con cui girano le mie rotelline, ma vorrei risparmiare ad altri un po’ di tempo prezioso.

Non leggete il PostScriptum che segue, si tratta di considerazioni che dimostrano la mia incompetenza in certe cose e che probabilmente sono del tutto oscure.

PS: lo so che l’esadecimale “E è costituito dai bit 1110, e che i primi tre bit da soli vogliono dire 7, ciò nonostante non ne vedo bene la logica; con il semplice TeX ogni cifra esadecimale era di interpretazione trasparente. Non sono riuscito a scoprire il significato del bit meno significativo, che forse ha a che vedere con l’ultima parte dei codici della tabella UNICODE. In ogni caso la documentazione su queste cose nel XeTeX Companion di Michel Goosens è assai poco chiara. Ho già segnalato la cosa a Will Robertson, il curatore di diverse parti di XeLaTeX, compresa la matematica.

Il carattere che hai inserito non è il simbolo dei gradi, ma il carattere di posto U+00BA (MASCULINE ORDINAL INDICATOR). Il carattere ° (U+00B0, DEGREE SIGN) si ottiene con la tastiera US Extended con Alt+Shift+8.

I codici Unicode sono a 21 bit e questo rende ostica e complicata un’interpretazione diretta come quella dei \mathcode di TeX. Il pacchetto unicode-math usa la famiglia matematica numero 4; il comando primitivo di XeTeX da usare è \XeTeXmathcode che prende tre argomenti: il tipo, la famiglia e il “code point”:
`\XeTeXmathcode`°=”7 “4 “B0`
Naturalmente è possibile assegnare a qualsiasi carattere il mathcode che si preferisce e quindi dare anche
`\XeTeXmathcode`º=”7 “4 “B0`
Tuttavia non mi pare normale che al carattere U+00B0 non venga cambiato il mathcode dall’originale che si otterrebbe con
`\XeTeXmathcode`°=”0 “0 “B0`
Non sono del tutto convinto che vada usato come tipo il “7 e non “0, anzi sarei propenso a usare “0.

Ciao
Enrico

Go to top