我正在尝试“打印”一个以逗号分隔的字符串列表。实际用例更复杂,列表存储为键值,但下面的 MWE 显示了问题:当我将数学添加到列表中时,编译器会抱怨“命令未定义”。(不过像下面这样的东西\linetwo
可以正常工作。)
有时\noexpand
有帮助(例如,$\noexpand\bm{v}$
可以工作,但$\bm{v}
不会)。这让我想到,也许弄乱扩展会有所帮助,我仔细研究了 的选项\mycmd
,最终选择了\exp_args:Nx
,尽管这很可能是错误的选择。如果能得到对 expl3 更有经验的人的帮助,我将不胜感激。谢谢!
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\processline}{m}{#1\par}
\NewDocumentCommand{\processlist}{ >{\SplitList{,}} m }{\ProcessList{#1}{\processline}}
\NewDocumentCommand{\mycmd}{m}{\exp_args:Nx \processlist{#1}}
\ExplSyntaxOff
\NewDocumentCommand{\linetwo}{}{line 2}
\begin{document}
\mycmd{line 1, \linetwo, $\text{v}_\text{v}$}
\end{document}