如何使用 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

相關內容