Re: comando speciale che si ridefinisce per l’indice analitico

#12250
Up
0
Down
::

risollevo il topic, sempre domandona per esperti:

non so perché, ma da quando uso la codifica utf8 sotto linux (kubuntu, kile, texlive-full)

`\makeatletter
\newcommand{\defspecialword}[1]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textbf{#1}\index{#1}%
\expandafter\gdef\csname sp@word#1\endcsname{\textit{#1}\index{#1}}}}

\newcommand{\spword}[1]{\@nameuse{sp@word#1}}

\newcommand{\defspecialsyn}[2]{%
\expandafter\gdef\csname sp@word#1\endcsname{%
\textit{#1}\index{#2}}}

\makeatother

\defspecialword{cecità}`

non funziona con i caratteri accentati! Infatti mi da il seguente errore:
`
[PDFLaTeX] prova.tex => prova.pdf (pdflatex)
[PDFLaTeX] finished with exit status 1
./prova.tex:75:Missing \endcsname inserted. \defspecialword{cecità}
./prova.tex:75:Missing \begin{document}. \defspecialword{cecità}
./prova.tex:75:Extra \endcsname. \defspecialword{cecità}
[PDFLaTeX] 3 errors, 0 warnings, 0 badboxes`

Tutto invece fila liscio se uso \’letteradaaccentare…
sia per defspecialword che per spword…

La mia ignoranza in questo caso è abissale dato che di quel codice capisco l’1%…non saprei dove mettere mano 😳

Temo che sia un compito molto arduo riuscire nell’impresa di far digerire a TeX un modo corretto di interpretare UTF8.

Come funziona UTF8? Alcuni caratteri sono codificati con un byte, altri con due e altri ancora con tre. Per esempio, “à” è codificato come “C3 A0” (indico il numero esadecimale). L’opzione utf8 a inputenc lavora così: rende “attivo” il carattere “C3” (che quindi si comporta come una macro) e lo definisce come un comando con un argomento; in base all’argomento (cioè al carattere che segue), userà l’azione opportuna.

Viceversa, quando l’opzione T1 del pacchetto fontenc è attiva, una combinazione come \`a viene tradotta in un solo carattere, che rende felice LaTeX, se il carattere accentato è presente nella tabella dei font in codifica T1 (quindi non per gli accenti più esoterici).

Attendiamo fiduciosi luaTeX, che permetterà l’input diretto di Unicode e la traduzione in fase di input di UTF8 in Unicode.

Il mio consiglio è di continuare con Latin 1.

Ciao
Enrico

Go to top