Re: Regolamenti, far ripartire il numero della sezione

#34765
Up
0
Down
::

Grazie mille, gentilissimo. La soluzione era al di sopra delle mie attuali capacità.

Siamo qui per questo, no? Già che ci sono, dopo una lunga giornata ai seggi, provo a svelare un po’ di arcani misteri.
`\let\ltx@section\section`
Memorizzo il significato attuale di \section in \ltx@section
`\def\section{\@ifnextchar+{\section@bis}{\ltx@section}}`
Ridefinisco \section in modo che guardi solo il token successivo. Se è un + verrà usato il comando \section@bis, altrimenti \ltx@section, che procederà come al solito.
`\def\section@bis+#1{\begingroup
\edef\thesection{\thesection~bis}\ltx@section{#1}\endgroup}`
Qui è la parte rilevante: il comando \section@bis è ovviamente seguito da un + che viene ingoiato dalla definizione così data; poi viene letto l’argomento; si suppone che non si usi \section[Abc]{Abc def}, questo va rimarcato: se ti dovesse servire bisognerà fare un po’ di lavoro in più.

Si apre un gruppo perché abbiamo bisogno di ridefinire \thesection; infatti lo facciamo subito con \edef che esegue l’espensione di ciò che c’è dentro le graffe; in realtà sarebbe meglio scrivere
`\edef\thesection{\thesection\noexpand~bis}`
ma la definizione senza \noexpand è comunque abbastanza robusta lo stesso. Quando si espande \thesection dentro la definizione, il suo valore è esattamente il numero dell’ultimo articolo. A questo punto possiamo dare \ltx@section{#1} che produce il titolo della sezione usando il valore attuale di \thesection che è “Art. x~bis” dove x è il numero dell’ultimo articolo. Chiudiamo il gruppo e procediamo.

Ciao
Enrico

Go to top