![使用 xparse 处理列表中的数学运算时的扩展](https://linux22.com/image/443312/%E4%BD%BF%E7%94%A8%20xparse%20%E5%A4%84%E7%90%86%E5%88%97%E8%A1%A8%E4%B8%AD%E7%9A%84%E6%95%B0%E5%AD%A6%E8%BF%90%E7%AE%97%E6%97%B6%E7%9A%84%E6%89%A9%E5%B1%95.png)
我正在尝试“打印”一个以逗号分隔的字符串列表。实际用例更复杂,列表存储为键值,但下面的 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}