这是对该问题的后续回答:使用分隔符从字符串创建项目符号列表
我有一个 CSV 文件,我从中生成了一些表格。其中一些表格单元格将包含应逐项列出的项目。
梅威瑟:
\documentclass{scrreprt}
\usepackage{csvsimple}
\usepackage{etoolbox}
\DeclareListParser{\ListParser}{|}
\newcommand{\listItems}[1]{
\parbox{10cm}{
\begin{itemize}
\newcommand*{\do}[1]{\item[] ##1}
\expandafter\ListParser\expandafter{#1}
\ListParser{#1}
\end{itemize}
}
}
\begin{document}
\csvreader[head to column names]{content/usecases.csv}{}{%
\begin{table}
\begin{tabular}{|l|l|}
\hline
Name & \ucname \\ \hline
Trigger & \listItems{\trigger} \\ \hline
\end{tabular}
\end{table}
}
\end{document}
CSV 示例:
ucname,trigger
test,This is|A test
test2,Barely
test3,No List
test4,List|Again|Here
但是,当前代码给我的输出是整个字符串的\trigger
两倍,并且没有分隔符。
答案1
您需要扩展处理的列表两次,并且只处理列表一次:
\documentclass{scrreprt}
\usepackage{filecontents}
\begin{filecontents*}{usecases.csv}
ucname,trigger
test,This is|A test
test2,Barely
test3,No List
test4,List|Again|Here
\end{filecontents*}
\usepackage{csvsimple}
\usepackage{etoolbox}
\DeclareListParser{\ListParser}{|}
\newcommand{\listItems}[1]{%
\parbox{10cm}{%
\begin{itemize}%
\renewcommand{\do}[1]{\item[] ##1}
\expandafter\expandafter\expandafter\ListParser\expandafter\expandafter\expandafter{#1}
\end{itemize}%
}%
}
\begin{document}
\csvreader[head to column names]{usecases.csv}{}{%
\begin{table}
\begin{tabular}{|l|l|}
\hline
Name & \ucname \\ \hline
Trigger & \listItems{\trigger} \\ \hline
\end{tabular}
\end{table}
}
\end{document}