Re: Abbassare di un livello le sezioni

#16367
Up
0
Down
::

`\renewcommand{\part}{\chapter}
\renewcommand{\chapter}{\section}
\renewcommand{\section}{\subsection}
\renewcommand{\subsection}{\subsubsection}`
Avevo pensato a questo, ma non funziona. Pensavo che LaTeX interpretasse i comandi riga per riga: con la prima ridefinisco \part come \chapter (senza toccare \chapter), con la
seconda ridefinisco \chapter come \section (senza toccare \section), … ma evidentemente sbaglio. 😳

L’idea era a rovescio: far diventare \part i \chapter. Ma questo modo non può funzionare comunque: appena TeX incontra \part, esegue questa sequenza di espansioni:
`\part -> \chapter -> \section -> \subsection -> \subsubsection -> …`
dove i puntini stanno per l’espansione di \subsubsection come definita dalla classe. Lo stesso accade con \chapter eccetera. L’unico effetto che ottieni è di rendere tutti i comandi di sezione uguali a \subsubsection!

Ciò che desideri si ottiene con \let. Come vedi dall’altro mio messaggio, per abbassare il livello (da \subsubsection a \subsection e così via) devi partire dal più alto verso il più basso. Per alzare il livello (da \part a \chapter e così via) devi andare a rovescio:
`\let\part\chapter
\let\chapter\section
…`
C’è una grande differenza fra \let e \def (che è il comando primitivo usato da \renewcommand):
`\def\zzz{Lorenzo}
\let\xxx\zzz
\def\yyy{\zzz}`
potrebbero sembrare equivalenti. Ma non lo sono: se infatti diamo in seguito
`\def\zzz{Ciao}`
la sequenza di comandi
`\yyy\ \xxx`
viene espansa in “Ciao Lorenzo”. La ridefinizione di \zzz influisce sull’espansione di \yyy; non su quella di \xxx, il cui significato è congelato su quello di \zzz al momento dell’assegnazione \let.

Ciao
Enrico

Go to top