\clist_map_inline:nn 中的逗号将值拆分到不需要的位置

\clist_map_inline:nn 中的逗号将值拆分到不需要的位置

我对 的工作原理很好奇\clist_map_inline:nn。我有一个句子列表。这个列表没有固定的长度。有时,列表可能包含 2 个句子,或 10 个句子等。所以,我遇到了 ,\clist_map_inline:nn这正是我想要的,但它会在逗号处拆分。例如,如果列表包含 {a,b,c},最终结果是

  • A
  • b
  • C

然而,当你考虑这个例子时{To respond quickly and efficiently to all in-coming sales enquiries, by telephone, fax and email,Create Develop and maintain strong working relationship with existing and potential Customers},我希望输出是

  • 通过电话、传真和电子邮件快速有效地回复所有销售咨询
  • 与现有和潜在客户建立、发展并保持良好的工作关系

相反,我得到的输出是

  • 快速有效地回应所有销售咨询
  • 通过电话
  • 传真和电子邮件
  • 与现有和潜在客户建立、发展并保持良好的工作关系

显然该命令\clist_map_inline:nn将句子拆分为每一个逗号。有什么方法可以获得所需的输出吗?

答案1

输入中的任何逗号都定义一个项目:如果“语法逗号”和“分隔逗号”处于同一括号级别,则无法区分它们。

除了支撑每个项目(这可能不太方便)之外,您还可以使用不同的方法,使用另一个分隔符。

\usepackage{xparse}

\ExplSyntaxOn

\seq_new:N \l_egregfors_chorelist_seq

\NewDocumentCommand{\chorelist}{m}
 {
  \seq_set_split:Nnn \l_egregfors_chorelist_seq { \\ } { #1 }
  \begin{itemize}
  \seq_map_inline:Nn \l_egregfors_chorelist_seq { \item ##1 }
  \end{itemize}
 }

\ExplSyntaxOff

现在输入

\chorelist{
  To respond quickly and efficiently to all in-coming sales enquiries, by telephone, fax and email
  \\
  Create Develop and maintain strong working relationship with existing and potential Customers
}

将获得预期的输出。

相关内容