我想使用 datatool 包从联系人列表中打印一个长表。数据库中有一些特殊字符。这是一个小例子:
\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}
这是简单的 CSV 文件:
NAME;MAIL
name01;[email protected]
name02;[email protected]
name03;[email protected]
请帮忙,我不明白以下错误:
(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
?
答案1
在 longtable 之外加载数据库。表格单元格是组,表格很复杂。如果不需要,请不要在单元格内执行代码。
\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}