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

関連情報