Re: Grazie a tutti per avermi ospitato 🙂

#16978
Up
0
Down
::

La procedura è inserita all’interno del pacchetto front-vr.
Da quello che leggo (siccome sono una new entry qui :-)), la sua paternità credo sia associata a LEI Prof!:-)…o mi sbaglio???In caso i miei più sentiti complimenti!!!
Mi sto creando (prendendo come spunto proprio il pacchetto in questione),un qualcosa per comporre il titolo di un libro,magari inserendo una figura al centro della pagina (o dopo il titolo stesso).
La cosa che mi manda in confusione è la sequenza di controllo \if TT.
E’ una istruzione???

Immagino che sia la versione “fronte-th.sty”.

Per comporre il frontespizio, uso un procedimento asincrono: alla prima compilazione del documento, viene scritto un file .tex ausiliario da compilare successivamente. Alle compilazioni successive viene inserito il frontespizio così composto.

Lo stesso pacchetto serve a due scopi: a scrivere il file ausiliario, se chiamato dal documento principale; a comporre il frontespizio, quando è chiamato dal file ausiliario.

Per evitare di definire una miriade di comandi che sarebbero inutili durante la compilazione del file principale, ho scelto di racchiudere queste definizioni in un condizionale, che risulta vero se si sta componendo il frontespizio, falso se si sta scrivendo il file ausiliario.

A questo punto, però, molte delle definizioni che il condizionale deve “saltare” sarebbero della forma “\ifqualcosa … \else … \fi”. Se \ifqualcosa non è definito, sarei nei pasticci, perché TeX accoppierebbe il primo di questi \fi con il condizionale che mi dovrebbe far “saltare” questa parte di codice.

Perciò ho adottato questa procedura indiretta:
`\iffront@write % vero se stiamo scrivendo il file ausiliario

\else %falso se stiamo componendo il frontespizio
\newif\iffront@titoiletto % vero se il titoletto è presente

\if\@front@{logo}
\includegraphics[height=\front@logosize]{\front@logo}\par
\vspace{6pt}
\fi

\fi % chiude \iffront@write`
Siamo proprio nella situazione descritta nel messaggio precedente (con qualche modifica): se il condizionale \iffront@write è vero, tutta la parte fino al \fi di chiusura può essere omessa senza problemi, perché TeX accoppia gli \if interni con il relativo \fi.

Se invece siamo nel caso opposto, TeX troverà \if\@front@{logo}\fi

La regola vuole che il token che segue \if venga espanso: la definizione di \@front@ produce allora la lista di token
`\if TT\fi\@nameuse{iffront@logo}\fi`
Come già detto, l’espansione di \if TT\fi è vuota e TeX si trova davanti a
`\iffront@logo
\fi`
che sa gestire bene. Il comando \@nameuse{pippo} equivale a scrivere \pippo.

Tutta la parte sui condizionali nel TeXbook è racchiusa, come dice Knuth in un condizionale
`\ifexperienced … \fi`
Not for the faint of heart, direbbe la pubblicità di un film dell’orrore. 🙂

Ciao
Enrico

Go to top