Vorrei che il numero totale delle pagine del mio documento fosse un multiplo di 4, per comporre in quartine; il problema si presenterebbe anche volendo comporre in ottavo, in sedicesimo, o in qualunque altro numero di facciate per una segnatura completa.
Normalmente il documento non finisce su un multiplo intero del numero di facciate di una segnatura. Si tratta, quindi di aggiungere in coda tante pagine bianche quanto basta per completare questo numero intero.
Ho provato con il codice seguente, dopo aver caricato il pacchetto ifthen ed essendo sicuro che il mio motore di tipocomposizione opera in modo esteso:
`
\whiledo{\numexpr \value{page} / 4}{\null\clearpage}
`
ma eseguendo la compilazione entra in un loop infinito e sputa fuori infinite pagine; tocca intervenire facendo “abortire” l’esecuzione.Ho allora cercato di eseguire le operazioni con i comandi primitivi di TeX:
`
\count254=\value{page}\divide\count254 by 4 \relax
\whiledo{\count254 > 0}{\null\clearpage\count254=\value{page}\divide\count254 by 4}
`
Ma succede la stessa cosa.È evidente dove è l’errore; ma me ne sono accorto nel momento stesso in cui sono arrivato alla riga precedente di questo messaggio. Purtroppo il software del forum non consente di annullare tutto finché si è in questa pagina.
Visto che ci sono spiego l’arcano (ovvio a posteriori):
`
\numexpr \value{page}/ 4
`
e l’analoga espressione
`
\count254=\value{page}\divide\count254 by 4 \relax
`
rappresentano il numero delle quartine, non il numero di pagine necessarie per completare una quartina; quello che bisogna determinare è il resto della divisione intera:
`
\numexpr\value{page} – \value{page}/4
`
e il risultato dell’espressione è il valore che bisogna controllare per decidere se sputare un’altra pagina o se uscire dal loop.
Il problema non esiste: è già risolto! 😀
Non del tutto. Le divisioni di e-TeX arrotondano. Se \value{page} è 3, ottieni 2 e non 3. Prova a compilare con pdftex
`\newcount\pippo
\pippo=3
\pippo=\numexpr\pippo-\pippo/4\relax
\showthe\pippo`
ottenendo appunto il valore 2. Il resto dovrebbe essere comunque calcolato con
`\pippo-(\pippo/4)*4`
ma nel caso di \pippo=7 il risultato è -1. 🙁
Cerca \truncdiv sugli Appunti. 🙂
Ciao
Enrico