Como definir um comando de vetor de coluna usando foreach e bmatrix?

Como definir um comando de vetor de coluna usando foreach e bmatrix?

Estou tentando fazer algo assim,

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

O que infelizmente não funciona, enquanto isto funciona,

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

Alguém poderia sugerir uma correção? Tentei pesquisar esse problema, mas estou tendo dificuldade em entender qualquer uma das respostas.

Responder1

Como você deseja usar apenas \\entre cada elemento de uma lista separada por vírgula, você pode usar \clist_use:nnem vez de atribuições temporárias para alguma outra variável.

\clist_use:nnfunciona apenas por expansão e não tem problemas com grupos.

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

insira a descrição da imagem aqui

Responder2

Não tenho ideia do que isso faz, mas funciona,

\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

informação relacionada