Vorrei sapere cosa fanno i seguenti comandi:
1) \mathsurround
2) \mathrel
3) \cr
4) \crcr
5) \ialign
6) \noaligned infine questo, che ho trovato spesso
7) \leaders
1) \mathsurround è un parametro dimensionale che dice quanto spazio supplementare TeX deve aggiungere a sinistra e a destra di ogni formula in corpo ($…$). Alcuni stili tipografici vogliono infatti che le formule siano leggermente più spaziate rispetto alle parole. Normalmente \mathsurround è 0pt.
Legato a \mathsurround c’è il comando interno \m@th: quando si usa il modo matematico per fare qualche costruzione che altrimenti sarebbe più complicata (ce ne sono parecchie in plain.tex, cerca \m@th e lo scopri), si inserisce questo comando per annullare l’eventuale \mathsurround positivo:
`\def\dots{\relax\ifmmode\ldots\else$\m@th\ldots\,$\fi}`
\m@th equivale a \mathsurround=0pt; occorre sapere che il valore usato è quello valido alla fine della formula; il valore globale non cambia perché $…$ costituisce un gruppo.
2) \mathrel ha un argomento; questo, considerato come semplice simbolo, verrà spaziato dal resto usando le regole per i simboli di relazione. Per esempio, il modo corretto di scrivere “a R b” che si usa nei libri di matematica è $a\mathrel{R} b$.
3) \cr è il comando primitivo che dice a TeX che finisce la riga di un allineamento; si può usare solo dentro un \halign (o un \valign, ma qui andiamo troppo nell’esoterico)
4) \crcr è un comando primitivo che dice a TeX: se c’è appena stato un \cr, ignorami, altrimenti fa’ finta che io sia \cr
5) \ialign è basato su \halign: dice di costruire un \halign in cui però il \tabskip iniziale sia nullo e il parametro \everycr sia vuoto
6) \noalign: serve per inserire materiale fra le righe di un allineamento. Su \noalign è basato, per esempio, \hline di LaTeX
7) \leaders: è il comando che permette di stampare i puntini di guida nell’indice. La sintassi è \leaders
`\def\hrulefill{\leaders\hrule\hfill}
\def\dotfill{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill}`
Il primo riempie uno spazio orizzontale con una linea, prova con
`\hbox to \hsize{Due \hrulefill\ parole}`
Il secondo usa \cleaders: la \hbox viene ripetuta fino a riempire lo spazio richiesto, lasciando spazi bianchi uguali all’inizio e alla fine. Invece \leaders allinea le \hbox ripetute a una “griglia invisibile”: negli indici si deve usare \leaders e non \cleaders. Esempi:
`\catcode`@=11
\def\mydot{\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}}
\catcode`@=12
\hbox to \hsize{AAA \leaders\mydot\hfill\ AAA}
\hbox to \hsize{AAAAA \leaders\mydot\hfill\ AAAAA}
\hbox to \hsize{AAAAA \cleaders\mydot\hfill\ AAAAA}`
Nelle prime due i puntini sono allineati verticalmente fra di loro, nella terza no.
Dunque, per scrivere una fila di puntini per indicare uno spazio da riempire in un modulo, si usa \dotfill che è basato su \cleaders (non ci sono allineamenti verticali da rispettare); una macro per i puntini guida nell’indice deve usare \leaders.
A dire il vero si può usare \leaders anche in modo verticale e ci sarebbe pure \xleaders, ma direi che può bastare.
Però puoi provare a vedere che succede con questo codice
`\hbox to 2.5in{\cleaders\vbox to .5in{\cleaders\hbox{\TeX}\vfil}\hfil}`
Non è carino? (Dal TeXbook, naturalmente.)
Ciao
Enrico