Mi resta un dubbio: è vero che chi riceve un documento codificato con la codiifca xyz può avere problemi a leggerlo se il suo editor non comprende quella codifica, ma potrà sempre compilarlo così com’è?
Questa mi sembra una cosa utile da sapere.
Un file è semplicemente una sequenza di righe di byte. Lasciando da perdere, per ora, UTF-8, TeX legge semplicemente un byte alla volta, interpretandolo secondo le sue regole.
Per essere pignoli, prima ancora di vedere questi byte, li trasforma secondo una tabella predefinita nei caratteri corrispondenti del codice ASCII, se il sistema operativo non usa questa convenzione.
Il pacchetto inputenc che permette l’uso dei caratteri da 128 a 255 fa una cosa molto semplice: li rende tutti attivi, cioè equivalenti a comandi, e ne dà definizioni appropriate a seconda della codifica scelta. È essenzialmente lo stesso metodo impiegato dagli editor: vedono un byte e lo mostrano sullo schermo secondo il significato a esso attribuito dalla codifica in uso. Per esempio, il carattere 192 (esadecimale) in codifica applemac è equivalente a \textquestiondown, mentre in latin1 è \`A.
In realtà TeX vede solo il carattere 192, che è attivo: quindi gli sostituisce la sua definizione data nel file
UTF-8 è un po’ più complicato, ma la faccenda è molto simile. Qui alcuni byte sono prefissi e quando un editor impostato secondo UTF-8 li vede sa che deve osservare il carattere successivo (in certi casi due o anche tre). Lo stesso fa LaTeX se si è data l’opzione utf8 a inputenc. Quei caratteri prefisso sono attivi e diventano macro con uno, due o tre argomenti; analizzano gli argomenti e agiscono di conseguenza.
Per esempio, in utf8, il carattere 201 (esadecimale “c9) è un prefisso “singolo” e infatti la sua definizione in utf8.def è
`\UTFviii@two@octets ^^c9`
mentre \UTFviii@two@octets è una macro a due argomenti
`\def\UTFviii@two@octets#1#2{%
\expandafter \UTFviii@defined \csname u8:#1\string #2\endcsname}`
Se il prefisso è seguito dal byte corretto, verrà quindi prodotta una sequenza valida con questi due byte, secondo le tabelle Unicode, altrimenti sarà prodotto un errore.
TeX non potrà mai leggere Unicode a 16 bit (UTF-16), perché in esso due byte formano un solo carattere. Anche i caratteri fra 0 e 127, che coincidono con quelli ASCII, sono in realtà formati da due byte e anche rendendo tutti i byte caratteri attivi, non potremmo veramente definire macro se non a prezzo di inenarrabili sofferenze. LuaTeX avrà un input direttamente in Unicode (a 16 o anche a 32 bit), come ce l’hanno XeTeX, Omega e Aleph.
Ciao
Enrico