Creazione di una tabella con più comandi

  • Creatore
    Topic
  • #80765
    Up
    0
    Down
    ::


    Ciao a tutti, come ho già scritto un’altra volta sto creando una classe per generare quasi tutti i documenti che servono per un’associazione.
    Sono ancora alle prese con la ricevuta, ho quasi finito ma ho un problemino con un multicol che fa riferimento ad una tabella definita in un altro comando (ho seguito le orme di isodoc) in questo modo:

    `
    \NewDocumentCommand{\itable}{m}{%
    \begin{tabularx}{\columnwidth}{|X|p{1.8cm}|p{1.8cm}|}
    \hline
    \textbf{Descrizione} & \textbf{Q.tà} & \textbf{Prezzo~\euro} \\
    \hline
    #1
    \end{tabularx}
    }

    % INVOICE
    % 1 – Descrizione
    % 2 – Quantità
    % 3 – Cifra
    \NewDocumentCommand{\iitem}{m m m}{%
    #1 & #2 & #3\\
    {} & {} & {}\\
    \hline
    }

    % INVOICE
    % 1 – Cifra totale
    \NewDocumentCommand{\itotal}{m}{%
    \multicolumn{2}{|r|}{\textbf{Totale:}} & \cellcolor{Dandelion}#1\\
    \hline
    }`

    e per usarla scrivo:

    `
    \invoice{Ricevuta}{01.2012}{10/10/2012}{Bonifico}{05/10/2012}{%
    \itable{%
    \iitem{Quota Associativa 2013}{-}{50.00}
    \itotal{50.00}
    }
    }`

    l’errore che ottengo è:
    `
    ! Misplaced \omit.
    \multispan ->\omit
    \@multispan
    l.20 }
    `

    Ho cercato in giro, ma sinceramente non capito come poterlo risolvere! 😕
    Help me!

    Ciao
    Marco

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #80766
      franen
      Partecipante
        Up
        0
        Down
        ::


        http://tex.stackexchange.com/questions/69606/misplaced-omit-multispan-with-newcommand
        Se usi [tt]\DeclareExpandableDocumentCommand{\itotal}{m}{%…[/tt] il tuo codice funziona, ma non ho ancora capito dove stia il problema.

        Perché non usi i comandi di booktabs? (\toprule, midrule e \bottomrule).
        E in \iitem anziché lasciare una riga vuota potresti usare il comando opzionale per spaziare le righe delle tabelle \\[5pt] (o quel che vuoi tu) a fine riga.(ma è necessario?)

        Fran

      • #80767
        Up
        0
        Down
        ::

        franen” post=79975http://tex.stackexchange.com/questions/69606/misplaced-omit-multispan-with-newcommand
        Se usi [tt]\DeclareExpandableDocumentCommand{\itotal}{m}{%…[/tt] il tuo codice funziona, ma non ho ancora capito dove stia il problema.

        Così funziona, grazie! in che senso non hai capito dove sia il problema?

        franen” post=79975
        Perché non usi i comandi di booktabs? (\toprule, midrule e \bottomrule).
        E in \iitem anziché lasciare una riga vuota potresti usare il comando opzionale per spaziare le righe delle tabelle \\[5pt] (o quel che vuoi tu) a fine riga.(ma è necessario?)
        Fran

        Uso sempre i comandi di booktabs, ma essendo una ricevuta/fattura sinceramente non mi garbava molto il risultato che ottenevo!
        Lo spazio lo metto per renderla più leggibile!

        Ciao
        Marco

      • #80768
        franen
        Partecipante
          Up
          0
          Down
          ::

          warcomeb” post=79976in che senso non hai capito dove sia il problema?

          Che anche io avrei scritto un codice come il tuo, nell convinzione avrebbe funzionato. L’espansione dei comandi è un mondo ancora non del tutto compreso per me.
          Fran

        • #80769
          Up
          0
          Down
          ::


          Siamo in due!! 😀

        • #80770
          Up
          0
          Down
          ::

          franen” post=79975http://tex.stackexchange.com/questions/69606/misplaced-omit-multispan-with-newcommand
          Se usi [tt]\DeclareExpandableDocumentCommand{\itotal}{m}{%…[/tt] il tuo codice funziona, ma non ho ancora capito dove stia il problema.

          Quando TeX sta componendo una tabella, la prima cosa che fa incontrando una nuova cella è di vedere se il suo contenuto comincia con [tt]\omit[/tt], espandendo i token che trova. Infatti l’espansione di [tt]\multicolumn[/tt] comincia con [tt]\omit[/tt] che serve a dire di ignorare il *template* della colonna. Per un comando definito con [tt]\NewDocumentCommand[/tt] l’espansione è inibita quando si trova dentro una [tt]\edef[/tt] e quando è il primo token in una cella di tabella, durante la ricerca di [tt]\omit[/tt]; verrà espanso più tardi, durante la composizione della cella. Dunque quando TeX vede [tt]\multicolumn[/tt] è troppo tardi.

          Ciao
          Enrico

      Visualizzazione 4 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top