我需要从变量(实际上是数据文件)中分离逗号分隔的字符串以便进一步处理。
有 MWE:
\documentclass{article}
\usepackage{csvsimple}
\usepackage{xparse}
\usepackage{filecontents}
\begin{filecontents*}{sample.csv}
colA;
A,B,C;
\end{filecontents*}
\NewDocumentCommand{\myfunc}{ >{\SplitList{,}} m }{\ProcessList{#1}{\func}}
\NewDocumentCommand{\func}{m}{\fbox{#1}}
\newcommand{\textA}{a,b,c}
\begin{document}
\parindent=0pt
(1) \myfunc{a,b,c}\\ % OK
(2) \myfunc{\textA}\\ % Wrong
(3) \expandafter\myfunc\expandafter{\textA}\\ % OK
\csvreader[
head to column names,
separator=semicolon
]{sample.csv}{}%
{
(4) \expandafter\myfunc\expandafter{\colA} % Wrong (how to correct?)
}
\end{document}
以与 (1) 或 (3) 相同的方式扩展案例 (4) 中的论点的正确方法是什么?
非常感谢您的任何帮助或建议!
此致,
卢博斯
答案1
这与 关系不大xparse
,而是与\csvreader
设置为\colA
包含您要查找的内容的宏有关,因此需要将其扩展两次。一种方法是执行
\expandafter\expandafter\expandafter\myfunc
\expandafter\expandafter\expandafter{\colA}
而不仅仅两个\expandafter
。