Newsgroup: it.comp.software.tex
Titolo: cat code ?

Scusate l'ignoranza ma...
cosa sono i cat code ?
e cosa possono fare per me ?

 cosa sono i cat code ?
Cito dal TeXbook:
=====
In the first place, it's wise to have a precise idea of what your 
keyboard
sends to the machine. There are 256 characters that \TeX\ might 
encounter at
each step, in a file or in a line of text typed directly on your 
terminal. These
256~characters are classified into 16 categories numbered 0 to 15:
\begindisplay \def\\{\hfill}
\hfil\hidewidth\it Category\hidewidth&\it \qquad Meaning\hidewidth\cr
\noalign{\smallskip}
\\0&Escape character&(|\| in this manual)\cr
\\1&Beginning of group&(|{| in this manual)\cr
\\2&End of group&(|}| in this manual)\cr
\\3&Math shift&(|$| in this manual)\cr
\\4&Alignment tab&(|&| in this manual)\cr
\\5&End of line&(\<return> in this manual)\cr
\\6&Parameter&(|#| in this manual)\cr
\\7&Superscript&(|^| in this manual)\cr
\\8&Subscript&(|_| in this manual)\cr
\\9&Ignored character&(\<null> in this manual)\cr
10&Space&(\] in this manual)\cr
11&Letter&(|A|, \dots, |Z| and |a|, \dots, |z|)\cr
12&Other character&(none of the above or below)\cr
13&Active character&(|~| in this manual)\cr
14&Comment character&(|%| in this manual)\cr
15&Invalid character&(\<delete> in this manual)\cr
\enddisplay
=====
In sostanza puoi riprogrammare TeX per far si' che risponda ad altri 
comandi invece che ai soliti. Per esempio, puoi fare in modo che per 
usare il modo matematico si debba scrivere 
" 1+1=2 ".
Oppure puoi creare comandi inaccessibili: all'inizio delle macro che 
stai scrivendo dici che il carattere @ e' un carattere normale, poi ti
definisci il comando \miocom@ndo come pare a te, te lo usi, e alla 
fine del file di macro rimetti il vecchio catcode di @ (active, 
credo). Da quel momento in poi non puoi piu' usare il \miocom@ndo, che
rimane quindi un comando "privato", usabile solo dal file di macro nel
quale era stato ridefinito il catcode di @. (questo e' quello che 
viene fatto di solito, prova a dare un'occhiata al plain.tex, o a un 
qualunque file di macro di latex).
Il succo del discorso e' che un carattere non ha un ruolo in TeX 
basato sul suo codice ascii, ma questo ruolo e' basato sul suo 
catcode, che puo' essere assegnato come vuoi.
Per esempio, plain.tex comincia con queste righe:
\catcode`\{=1 % left brace is begin-group character
\catcode`\}=2 % right brace is end-group character
\catcode`\$=3 % dollar sign is math shift
\catcode`\&=4 % ampersand is alignment tab
\catcode`\#=6 % hash mark is macro parameter character
\catcode`\^=7 \catcode`\^^K=7 % circumflex and uparrow are for 
superscripts
\catcode`\_=8 \catcode`\^^A=8 % underline and downarrow are for 
subscripts
\catcode`\^^I=10 % ascii tab is a blank space
\chardef\active=13 \catcode`\~=\active % tilde is active
\catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is 
"\outer\par"
Poi poco sotto aggiunge
% We make @ signs act like letters, temporarily, to avoid conflict
% between user names and internal control sequences of plain format.
\catcode`@=11
Poi fa tutte le sue cose, e alla fine il penultimo comando e' 
\catcode`@=12 % at signs are no longer letters
--

Curiosità soddisfatta!
Grazie mille!
Occorre proprio che mi metta a leggere il TeXBook...