[RISOLTO] Errore con datatool e longtable

  • Creatore
    Topic
  • #108640
    Up
    0
    Down
    ::


    Possiedo tutti i miei contatti in formato CSV e volevo creare una tabella su più pagine. Mi viene sempre restituito l’errore seguente:

    `
    (D:\Programmi\miktex_portable\texmfs\install\tex\latex\tools\longtable.sty)
    (001.aux))
    Runaway argument?
    \@nil \let \@dtl@line =\@dtl@trmstr \dtl@domappings \@dtl@line \ifdefempty \ETC
    .
    ! File ended while scanning use of \@dtl@trim.

    \par
    <*> ./001.tex

    ?
    `

    Eliminando la longtable i valori vengono riportati nel documento regolarmente !
    Ho semplificato il codice creando un esempio che mi restituisce lo stesso errore:

    `
    \newcommand{\inputfile}{dbase/001.csv}
    \documentclass[a4paper,10pt]{article}
    \usepackage[utf8]{inputenc}
    \usepackage{datatool}
    \usepackage{longtable}
    \DTLsetseparator{;}
    %
    \begin{document}
    \begin{longtable}{l|l}
    \DTLloadrawdb{title}{\inputfile}%
    \DTLforeach*{title}{\name=NAME,\surname=SURNAME}{%
    \name & \surname\\
    }%
    \end{longtable}
    \end{document}
    `

    Il CSV è molto semplice:
    `
    NAME;SURNAME
    name01;surname01
    name02;surname02
    name03;surname03
    `

    Mi aiutate a capire l’errore ? Grazie.

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #108641
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        proxima” post=108837Possiedo tutti i miei contatti in formato CSV e volevo creare una tabella su più pagine. Mi viene sempre restituito l’errore seguente:

        `
        (D:\Programmi\miktex_portable\texmfs\install\tex\latex\tools\longtable.sty)
        (001.aux))
        Runaway argument?
        \@nil \let \@dtl@line =\@dtl@trmstr \dtl@domappings \@dtl@line \ifdefempty \ETC
        .
        ! File ended while scanning use of \@dtl@trim.

        \par
        <*> ./001.tex

        ?
        `

        Eliminando la longtable i valori vengono riportati nel documento regolarmente !
        Ho semplificato il codice creando un esempio che mi restituisce lo stesso errore:

        `
        \newcommand{\inputfile}{dbase/001.csv}
        \documentclass[a4paper,10pt]{article}
        \usepackage[utf8]{inputenc}
        \usepackage{datatool}
        \usepackage{longtable}
        \DTLsetseparator{;}
        %
        \begin{document}
        \begin{longtable}{l|l}
        \DTLloadrawdb{title}{\inputfile}%
        \DTLforeach*{title}{\name=NAME,\surname=SURNAME}{%
        \name & \surname\\
        }%
        \end{longtable}
        \end{document}
        `

        Il CSV è molto semplice:
        `
        NAME;SURNAME
        name01;surname01
        name02;surname02
        name03;surname03
        `

        Mi aiutate a capire l’errore ? Grazie.

        Ciao.
        Ho semplicemente cambiato il comando \dDTLloadrawdb in \DTLloaddb… e mi compila:
        `\newcommand{\inputfile}{001.csv}

        \documentclass[a4paper,10pt]{article}

        \usepackage[utf8]{inputenc}
        \usepackage{datatool}
        \usepackage{longtable}

        \DTLsetseparator{;}

        \begin{document}
        \begin{longtable}{l|l}
        \DTLloaddb{contacts}{\inputfile}%
        \DTLforeach*{contacts}{\name=NAME,\surname=SURNAME}{%
        \name & \surname\\
        }
        \end{longtable}

        \end{document}`

        Perché non usare un vero database?
        Potresti leggere i dati direttamente da TeX usando LuaTeX o LuaJitTeX.
        Tra l’altro questo è proprio l’argomento del mio prossimo articolo per Ars…
        Saluti.
        R.

      • #108642
        Up
        0
        Down
        ::


        Grazie per la risposta. Purtroppo mi servivano proprio i caratteri speciali gestiti da loadrawdb.
        Mi stranizza un errore di questo tipo perchè voler rappresentare i dati in una tabella è proprio uno dei motivi più comuni per utilizzare il pacchetto datatool.

        Volevo qualcosa di più semplice di un vero db (pensa ad una rapida esportazione del CSV da google contacts), comunque non mancherò di leggere il tuo prossimo lavoro.

      • #108643
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::


          Ciao. Allora controlla attentamente nella documentazione del pacchetto datatool la funzione grezza.
          Nel tuo esempio minimo compilabile non ci sono caratteri speciali.
          Visto che non funziona con dati privi di caratteri speciali, ne deduco che probabilmente non dipende l’errore da questi, ma di come scivi il comando.
          Mi sbaglio?
          R.

        • #108644
          Up
          0
          Down
          ::


          Risolto. Per dovere di cronaca la sintassi era corretta, dovevo solo caricare il database con \DTLloadrawdb fuori dall’ambiente longtable.
          In effetti è più corretto così, eseguire codice all’interno evidentemente era deleterio. Grazie.

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

      Go to top