如何使用 foreach 和 bmatrix 定义列向量命令?

如何使用 foreach 和 bmatrix 定义列向量命令?

我正在尝试做这样的事情,

\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

相关内容