我正在尝试做这样的事情,
\DeclareRobustCommand{\col}[1]{
\begin{bmatrix}
\foreach \i in {#1} {\i \\}
\end{bmatrix}
}
不幸的是,这个方法不管用,
\DeclareRobustCommand{\col}[1]{
\begin{bmatrix}
\foreach \i in {#1} {\i, }
\end{bmatrix}
}
有人能建议解决办法吗?我尝试查找此问题,但很难理解任何答案。
答案1
\\
由于您只想在逗号分隔列表的每个元素之间使用,因此您可以使用\clist_use:nn
它来代替对其他变量的临时分配。
\clist_use:nn
仅通过扩展即可工作,并且不会出现群组问题。
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\NewDocumentCommand \col { m }
{
\begin{bmatrix}
\clist_use:nn {#1} { \\ }
\end{bmatrix}
}
\ExplSyntaxOff
\begin{document}
\[
\col{1,4} + \col{2, 1} = \col{3,5}
\]
\end{document}
答案2
我不知道这是做什么的,但这有效,
\ExplSyntaxOn
\NewDocumentCommand{\col}{m} {
\seq_set_from_clist:Nn \l_tmpa_seq { #1 }
\seq_set_map:NNn \l_tmpb_seq \l_tmpa_seq { ##1 }
\begin{bmatrix}
\seq_use:Nn \l_tmpb_seq { \\ }
\end{bmatrix}
}
\ExplSyntaxOff