4

i want to print a longtable from a contact list with datatool package. The database has some special characters. This is a small example:

\newcommand{\inputfile}{dbase/a.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,\mail=MAIL}{%
\name & \mail\\
}%
\end{longtable}
\end{document}

this is the simple CSV file:

NAME;MAIL
name01;[email protected]
name02;[email protected]
name03;[email protected]

Please help, i can't understand the following error:

(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.
<inserted text>
                \par
<*> ./001.tex

?

0

1 Answer 1

3

Load the database outside the longtable. Tabular cells are groups and tabulars are complicated. Don't execute code inside a cell if you don't need too.

\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{datatool}
\usepackage{longtable}
\DTLsetseparator{;}
%
\begin{document}
\DTLloadrawdb{title}{a.csv}%
\begin{longtable}{l|l}
\DTLforeach*{title}{\name=NAME,\mail=MAIL}{%
\name & \mail\\
}%
\end{longtable}
\end{document}

enter image description here

1
  • How to avoid the last blank line created by the loop?
    – Sigur
    Commented May 1, 2023 at 23:49

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .