Re: Occultare un comando con parametri

#8772
Up
0
Down
::

Salve a tutti,
come indicato nel titolo, vorrei capire come si può ridefinire un comando con parametri in modo che non faccia niente (comando nullo).

La ragione per cui vorrei fare questa cosa è un po’ lunghetta da spiegare; non ne parlo per non distogliere l’attenzione dal problema principale, comunque, se necessario, posso discuterne più avanti.

Il comando che vorrei ridefinire è \chapter, cioè vorrei che \chapter non facesse nulla.

Nel titolo ho scritto comando con parametri perché in presenza di un comando senza parametri saprei già come fare: immaginiamo che in LaTeX esista il comando \ciao, così definito:`\newcommand{\ciao}{Ciao a tutti!}`Poiché in TeX l’istruzione \relax rappresenta un’istruzione nulla, basterebbe ridefinire \ciao nel seguente modo:`\renewcommand{\ciao}{\relax}`e il problema sarebbe risolto. Purtroppo, \chapter ha un parametro obbligatorio, che è il titolo del capitolo. Questa soluzione non funziona, perché con questo codice: `\renewcommand{\chapter}{\relax}`il titolo del capitolo verrebbe comunque stampato. Come fare quindi per ovviare anche a questo problema?

Il problema di \ciao si risolve meglio con `\renewcommand{\ciao}{}` che è molto più semplice; dare \relax non sempre è la soluzione corretta. Per \chapter la situazione è più complicata; ma se nel tuo documento \chapter compare sempre e solo con l’argomento obbligatorio, puoi scrivere`\renewcommand{\chapter}[1]{}` Se compare anche con l’argomento opzionale, puoi scrivere`\renewcommand{\chapter}[2][]{}`Se però usi qualche volta \chapter*, devi fare qualcosa di più complicato: `\makeatletter
\renewcommand{\@schapter}[1]{}
\renewcommand{\@chapter}[2][]{}
\makeatletter`(e nessuna delle ridefinizioni precedenti).

Ah! Prima che tu lo domandi, non funziona allo stesso modo per \section.

Ciao
Enrico

Go to top