Я пытаюсь сделать что-то вроде этого,
\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