使用分隔符从字符串创建项目符号列表

使用分隔符从字符串创建项目符号列表

我想从带有分隔符的字符串创建项目符号列表。

我的示例中的分隔符是|

示例字符串:

This is|A bullet|List from|A string

我想让它变成像这样的项目符号列表:

  • 这是
  • 一颗子弹
  • 列表来自
  • 字符串

我需要做什么?需要一些额外的软件包吗?

我可以使用任何分隔符,但,由于字符串来自使用 csvsimple 进行解析的 CSV 文件,因此这样会更容易。

MWE(在回答建议之后):

\documentclass{scrreprt}
\usepackage{csvsimple}
\usepackage{etoolbox}
  \csvreader[head to column names]{content/usecases.csv}{}{%
    \begin{table}
      \begin{tabular}{|l|l|}
        \hline
        Name             & \ucname \\ \hline
        Pre conditions   & 
          \begin{itemize}
            \renewcommand*{\do}[1]{\item #1}%
            \ListParser{\preconditions} %
          \end{itemize} \\ \hline
      \end{tabular}
    \end{table}
  }
\end{document}

CSV 示例:

ucname,precondition
test,This is|A test
test2,Barely
test3,No List
test4,List|Again|Here

后续内容发布于此处:使用带分隔符的字符串自动生成表格内的列表项

答案1

您可以使用包定义自己的列表解析器etoolbox

在此处输入图片描述

笔记:

  • 列表元素中有逗号,仍然使用逗号作为分隔符,通过应用额外的分组,如下面的第二个 MWE 所示。

代码:用作|分隔符

\documentclass{article}
\usepackage{etoolbox}

\DeclareListParser{\MyListParser}{|}

\begin{document}
\begin{itemize}
    \renewcommand*{\do}[1]{\item #1}%
    \MyListParser{This, has a comma in it|A bullet, and also a comma|List from|A string}%
\end{itemize}
\end{document}

代码:用作,分隔符

\documentclass{article}
\usepackage{etoolbox}

\DeclareListParser{\MyListParser}{,}

\begin{document}
\begin{itemize}
    \renewcommand*{\do}[1]{\item #1}%
    \MyListParser{{This, has a comma in it},{A bullet, and also a comma},{List from},{A string}}%
\end{itemize}

答案2

xparse以下是使用和的方法expl3。该命令\parselist有一个可选参数(分隔符,默认为|)和两个强制参数

  1. 列名,或者一般来说,包含分隔数据的控制序列和

  2. 要执行的代码,其中#1代表当前项(拆分后)。

在下面的例子中,标记为 ,##1因为\parselist是 的参数\csvreader

\documentclass{scrreprt}
\usepackage{csvsimple,array}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\parselist}{O{|}mm}
 {% #1 is the delimiter, #2 is the column name, #3 is the code to use
  \nielsen_parselist:nnn { #1 } { #2 } { #3 }
 }

\seq_new:N \l__nielsen_data_seq

\cs_new_protected:Npn \nielsen_parselist:nnn #1 #2 #3
 {
  \seq_set_split:Nnf \l__nielsen_data_seq { #1 } { #2 }
  \seq_map_inline:Nn \l__nielsen_data_seq { #3 }
 }

\cs_generate_variant:Nn \seq_set_split:Nnn { Nnf }
\ExplSyntaxOff

\begin{document}

\csvreader[head to column names]{\jobname.csv}{}{%
  \begin{table}
  \centering
  \begin{tabular}{|l|l|}
  \hline
  Name             & \ucname \\ \hline
  Pre conditions   &
    \begin{minipage}[t]{.3\textwidth}
    \begin{itemize}
    \parselist{\preconditions}{\item ##1}
    \vspace{\smallskipamount}
    \end{itemize}
    \end{minipage} \\
  \hline
  \end{tabular}
  \end{table}
}
\end{document}

在此处输入图片描述

相关内容