我想使用 csvsimple 包将 CSV 文件转换为一组段落,并使用第 1 列的值作为子部分标题。
我无法从文档中看到任何仅在值第一次出现时执行操作的方法。使用 csvsimple 可以做到这一点吗?
COUNTRY,INST,ADDR,PHONE
US,Dept of Justice,Washington DC,123-456/7890
US,Dept of Education,Seattle WA,234-567/8910
UK,Minitrue,London WC,123 456 7890
UK,Miniluv,London EC,234 567 8910
这应该会生成类似这样的内容:
\subsubsection{US}
Dept of Justice: Washington DC\\Phone 123-456/7890\par
Dept of Education: Seattle WA\\Phone 234-567/8910\par
\subsubsection{UK}
Minitrue: London WC\\Phone 123 456 7890\par
Miniluv: London EC\\Phone 234 567 8910\par
这可能吗?我希望避免 datatool 包的复杂性,尽管它很棒。
答案1
当处理数据时,您可以测试是否\COUNTRY
已发生变化,例如使用ifthen
包。address.csv
是您的样本数据。
\documentclass{article}
\usepackage{ifthen}
\usepackage{csvsimple}
\newcommand\COUNTRYlast{}
\newcommand\doaddress%
{\ifthenelse{\equal{\COUNTRY}{\COUNTRYlast}}%
{}%
{\subsubsection{\COUNTRY}%
\edef\COUNTRYlast{\COUNTRY}%
}%
\INST: \ADDR\\Phone \PHONE\par
}
\parindent0ex
\parskip3pt plus1pt minus 1pt
\begin{document}
\csvreader[head to column names]{address.csv}{}{\doaddress}
\end{document}
结果是