请看以下示例。目标是将 AD 和 AA 的所有值作为变量名,并将相应的值放在每列中……必须对文件进行过滤,因为有更多不同的键值对(不仅仅是 AX:aa)。
\documentclass[landscape,a4paper, ngerman, 10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{datatool}
\usepackage{filecontents}
\begin{filecontents*}{c.csv}
AA:BB
AX:sdsd
AX:sdsd
AX:sdsd
AX:sdsd
AX:sdsd
AD:CC
AY:asas
AY:asas
AY:asas
AY:asas
AY:asas
AY:asas
AA:BB
AX:sdsd
AX:sdsd
AX:sdsd
AX:sdsd
AX:sdsd
AD:CC
AY:asas
AY:asas
AY:asas
AY:asas
AY:asas
AY:asas
\end{filecontents*}
\begin{document}
\DTLnewdb{tbase}
\DTLnewrow{tbase}
\DTLsetseparator{:}
\DTLloaddb[keys={ca,cb}]{dbn}{c.csv}
\section{A}
\DTLforeach[\DTLiseq{\ca}{AA}\OR\DTLiseq{\ca}{AD}]{dbn}{\ca=ca, \cb=cb}{
\DTLifoddrow{%
\DTLcurrentindex \ \protect\ca \ \protect\cb%
\DTLnewdbentry{tbase}{\ca}{\cb}%
}%
{%
\protect\ca \ \protect\cb\\%
\DTLnewdbentry{tbase}{\ca}{\cb}%
\DTLnewrow{tbase}%
}%
}%
\section{B}
\DTLdisplaydb{tbase}
\end{document}
我确信这是一个简单的错误......;(
答案1
我不确定我是否理解了您想要做什么。您的c.csv
文件中没有标题,因此您必须使用noheader
此数据库的选项。
\DTLloaddb[keys={ca,cb},noheader]{dbn}{c.csv}
请注意,默认情况下,添加到数据库的值不会扩展。因此,当您打印新数据库时,将使用tbase
最后一个定义。但您可以设置扩展数据库的新值。\cb
\dtlexpandnewvalue
我会\DTLnewrow{tbase}
在新行真正开始之前直接使用。
\documentclass[landscape,a4paper, ngerman, 10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage[T1]{fontenc}
\usepackage{datatool}
\usepackage{filecontents}
\begin{filecontents*}{c.csv}
AA:BB
AX:sdsd
AX:sdsd
AX:sdsd
AX:sdsd
AX:sdsd
AD:CC
AY:asas
AY:asas
AY:asas
AY:asas
AY:asas
AY:asas
AA:BB
AX:sdsd
AX:sdsd
AX:sdsd
AX:sdsd
AX:sdsd
AD:CC
AY:asas
AY:asas
AY:asas
AY:asas
AY:asas
AY:asas
\end{filecontents*}
\begin{document}
\DTLnewdb{tbase}
\DTLsetseparator{:}
\DTLloaddb[keys={ca,cb},noheader]{dbn}{c.csv}
\section{A}
\DTLforeach[\DTLiseq{\ca}{AA}\OR\DTLiseq{\ca}{AD}]{dbn}{\ca=ca, \cb=cb}{%
\dtlexpandnewvalue%
\DTLifoddrow{%
\DTLcurrentindex \ \ca \ \cb%
\DTLnewrow{tbase}\DTLnewdbentry{tbase}{\ca}{\cb}%
}%
{%
\ \ca \ \cb\\%
\DTLnewdbentry{tbase}{\ca}{\cb}%
}%
}%
\section{B}
\DTLdisplaydb{tbase}
\end{document}