Re: Ambiente con comandi interni

#64026
OldClaudio
Partecipante
    Up
    0
    Down
    ::


    `
    \makeatletter
    \newcommand{\descrizione}[1]{\def\d@scrizione{#1}}
    \newenvironment{scheda}[2]{% apertura
    #1, #2\\[3ex]
    \d@scrizione
    }
    {% chiusura

    }
    `

    Però onestamente, se usi descrizione così com’è e non ci fai niente, salvo stamparlo dop dopo il Luogo e l’Anno, definire un ambiente (dove bisogna psecificare anche i comandi di chiusura) non serve a granché; proviamo a renderlo così:
    `
    \newenvironment{scheda}[2]{% apertura
    \par\bigskip
    #1, #2, \\[\bigskipamount]
    }
    {% chiusura
    \par\bigskip\ignorespacesafterend
    }
    `

    Da usarsi così:
    `
    \begin{scheda}{Urbino}{1544}
    Urbino in quel tempo era una città ricca, ma senza più la guida dei duchi di Montefeltro.
    Il Duca Federico era morto nel 1482 e suo figlio Guidubaldo era morto di tifo a 22 anni,
    poco dopo la morte del padre.

    Eccetera
    \end{scheda}
    `

    La scheda ti viene composta a piena pagina con una riga di spazio bianco sopra e una sotto.

    È perfettamente inutile mettere i vari capoversi della descrizione in una variabile \d@scrizione, quando comunque usando il comando \def non consente di dare al suo oggetto definito un argomento che consti di più di un paragrafo. Nello stesso tempo che cosa metteresti come contenuto dell’ambiente? Quando chiudi l’ambiente, tutto quello che è stato usato o definito o assegnato a i contatori o ai registri, viene dimenticato perché queste cose sono strettamente locali.

    Se vuoi cimentarti in simili piccole acrobazie devi studiarti per bene il testo di Enrico “Appunti di programmazione in TeX e LaTeX”.

    Per curiosità: se definisci una macro con argomenti all’interno di un’altra definizione devi raddoppiare il segno #; devi cioè scrivere ##1, ##2, eccetera.

    Go to top