Wie definiert man einen Spaltenvektorbefehl mit foreach und bmatrix?

Wie definiert man einen Spaltenvektorbefehl mit foreach und bmatrix?

Ich versuche so etwas zu machen,

\DeclareRobustCommand{\col}[1]{
  \begin{bmatrix}
  \foreach \i in {#1} {\i \\}
  \end{bmatrix}
}

Was leider nicht funktioniert, während dies funktioniert,

\DeclareRobustCommand{\col}[1]{
  \begin{bmatrix}
  \foreach \i in {#1} {\i, }
  \end{bmatrix}
}

Kann jemand eine Lösung vorschlagen? Ich habe versucht, dieses Problem nachzuschlagen, aber die Antworten sind mir nicht ganz klar.

Antwort1

\\Da Sie nur zwischen den einzelnen Elementen einer durch Kommas getrennten Liste etwas verwenden möchten, können Sie \clist_use:nnstattdessen temporäre Zuweisungen an eine andere Variable verwenden.

\clist_use:nnfunktioniert nur durch Erweiterung und hat keine Probleme mit Gruppen.

\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}

Bildbeschreibung hier eingeben

Antwort2

Ich habe keine Ahnung, was das bewirkt, aber es funktioniert.

\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

verwandte Informationen