Re: Mischiare e invertire modo macro e modo ambiente

#74143
robitex
Amministratore del forum
    Up
    0
    Down
    ::

    egreg9″ post=73043

    Ciao a tutti,
    l’altro giorno mi serviva un modo per rendere una voce di computo metrico composta con una tabella. Ho cominciato a scrivere il codice tutto esplicitamente per poi assemblarlo con i primi comandi.
    Ne è venuto fuori un codice in controtendenza, ovvero una sintassi che prevede di usare macro al posto di ambienti definite tramite ambienti.

    L’apertura è basata su l’ambiente tabular:
    \startvoce{descrizione}{unità di misura}

    Poi ho una macro \voce che compone il testo in una cella della tabella come ambiente minipage
    \voce{descrizione lunga quanto si vuole ma non troppo}

    Poi ho alcune macro per inserire prezzi e misure:
    \misure{descr misure}{numero}
    \prezzo{importo}

    La chiusura è:
    \endvoce

    ecco una traccia dell’implementazione:
    `\def\startvoce#1#2{% l'ambiente tabular verrà chiuso più tardi da \endvoce
    \begin{tabular}{clr}
    \toprule
    N. & #1 & \si{#2}\\% richiede siunitx
    \midrule
    }
    \def\voce#1{\begin{minipage}{110mm}#1\end{minipage}}

    \def\endvoce{\bottomrule\end{tabular}}
    `
    il fatto è che funziona a dimostrazione del fatto che la programmazione TeX è sempre ricca di sorprese.
    `\startvoce{Travi in legno lamellare}{m^3}
    \voce{
    Travi di orditura principale di copertura realizzate in legno lamellare
    GL24 di sezione rettangolare ecc ecc
    }
    \misura{Falda lato strada}{2.120}
    \prezzo{500.00}
    \endvoce`
    Simpatico no?
    R.

    Dov’è la sorpresa? 🙂 E dov’è diverso questo da un modo “tradizionale”?
    `\newenvironment{tabellona}[2]
    {\begin{tabular}{clr}
    \toprule
    N. & #1 & \si{#2}\\% richiede siunitx
    \midrule}
    {\bottomrule\end{tabular}}`
    E il tuo input sarebbe:
    `\begin{tabellona}{Travi in legno lamellare}{m^3}
    \voce{
    Travi di orditura principale di copertura realizzate in legno lamellare
    GL24 di sezione rettangolare ecc ecc
    }
    \misura{Falda lato strada}{2.120}
    \prezzo{500.00}
    \end{tabellona}`
    Non capisco perché mischiare nomi che indicano cose nettamente diverse, mi riferisco a “voce”.

    Ciao
    Enrico

    Sai che lo so.
    Trovo solo simpatico che nella definizione di una macro (quella di \voce riportata non è completa), può starci anche un \begin{qualcosa} senza che poi ci sia \end{qualcosa}.
    Almeno, non ci avevo mai fatto caso.
    😆
    Grazie.
    Ciao.
    R.

    Go to top