Как определить команду вектора столбца с помощью 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

Связанный контент