Re: Problemi con ambiente sydebyside

#18912
Up
0
Down
::

Questo perché ridefinisce \bibitem in termini di \BR@@bibitem che ha la definizione
`\def\BR@@bibitem #1#2\par{…}`
Dunque il secondo argomento è delimitato da \par. Ovviamente questo non basta e occorre anche modificare quel comando
`\catcode`\^^M=10\relax`
in un più onesto
`\catcode`\^^M=5\relax`

Enrico, ora funziona tutto in maniera spettacolare. 😀

Mi resta la curiosità di capire che cosa fa quel (per me) ermetico
`\catcode`\^^M=5\relax`
e quali sono i cambiamenti ora che ho messo 5 al posto di 10.

Non è affatto ermetico; basta leggere l’aureo articolo su ArsTeXnica che parla appunto dei codici di categoria. 🙂

^^M indica il carattere di fine riga che TeX inserisce quando legge un file; siccome ogni sistema operativo ha il suo modo di fare, Knuth ha deciso che, una volta trovata la fine riga (secondo quanto stabilito dal SO), tutto ciò che la indica viene scartato e sostituito con un carattere fisso (quello di numero \endlinechar, usualmente 13).

Questo carattere ha, normalmente, codice di categoria 5. Quando TeX ne vede due consecutivi, li sostituisce con un token \par, altrimenti questo carattere diventa equivalente a un token di categoria 10 (spazio).

Mi dirai, ma se io su una riga batto due spazi e poi il ritorno a capo, come fa TeX a trovare due fine riga consecutivi? Risposta: gli spazi a inizio riga sono del tutto ignorati. Così si può far rientrare il codice come ci pare, senza preoccuparci di spazi spuri che, invece, possono comparire a fine riga.

Una definizione come \def\xxx#1\par{…} delimita l’argomento con il token \par; ma le due chiamate
`\xxx aaa\par
\xxx aaa
`
sono del tutto equivalenti.

Ciao
Enrico

Go to top