使用最新版本的 datatool 包,如果我编译此文件
\begin{filecontents*}{\jobname.csv}
x,y
11,12
\end{filecontents*}
\documentclass{article}
\usepackage{datatool}
\DTLloaddb{table}{\jobname.csv}
\begin{document}
\end{document}
我收到这个错误
./example.tex:9: LaTeX Error: Missing \begin{document}.
在 pdf 文件中
,12
如果我用 11 代替 22 或 33 或...,我会得到同样的错误,但如果我使用任何其他数字,它可以很好地编译。
文件列表如下
*File List*
article.cls 2014/09/29 v1.4h Standard LaTeX document class
size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option)
datatool.sty 2017/11/10 v2.28 (NLCT)
xkeyval.sty 2014/12/03 v2.7a package option processing (HA)
xkeyval.tex 2014/12/03 v2.7a key=value parser (HA)
ifthen.sty 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
xfor.sty 2009/02/05 v1.05 (NLCT)
substr.sty 2009/10/20 v1.2 Handle substrings
etoolbox.sty 2017/01/02 v2.4 e-TeX tools for LaTeX (JAW)
datatool-base.sty 2017/11/10 v2.28 (NLCT)
amsmath.sty 2017/09/02 v2.17a AMS math features
amstext.sty 2000/06/29 v2.01 AMS text
amsgen.sty 1999/11/30 v2.0 generic functions
amsbsy.sty 1999/11/29 v1.2d Bold Symbols
amsopn.sty 2016/03/08 v2.02 operator names
datatool-fp.sty 2017/11/10 v2.28 (NLCT)
fp.sty 1995/04/02
defpattern.sty 1994/10/12
fp-basic.sty 1996/05/13
fp-addons.sty 1995/03/15
fp-snap.sty 1995/04/05
fp-exp.sty 1995/04/03
fp-trigo.sty 1995/04/14
fp-pas.sty 1994/08/29
fp-random.sty 1995/02/23
fp-eqn.sty 1995/04/03
fp-upn.sty 1996/10/21
fp-eval.sty 1995/04/03
答案1
这是软件包上次更新中的一个错误,但我认为解决办法是
\begin{filecontents*}{\jobname.csv}
x,y
11,12
\end{filecontents*}
\documentclass{article}
\usepackage{datatool}
\makeatletter
\def\dtl@trim#1{\def\@dtl@trmstr{}%
\if \par#1 \else \expandafter \@dtl@start@trim #1\@dtl@end@trim \fi
\let#1=\@dtl@trmstr}
\makeatother
\DTLloaddb{table}{\jobname.csv}
\begin{document}
\end{document}
答案2
已在 v2.29(2017-11-12)中修复。我改变了读取和修剪行的方式。代码现在局部更改\endlinechar
为\active
,这使得修剪行尾字符变得更加简单。与空格不同,控制序列中应该只有一个行尾字符,并且它将位于末尾。(如文档所述,datatool
不支持多行 CSV 文件。您需要datatooltk
它。)