用于编写向量的宏

用于编写向量的宏

我想简化编写向量的代码。例如,如果我写

\vector{1,2,3}

这相当于

\begin{bmatrix} 1 \\ 2 \\ 3 \end{bmatrix}

相似地

\vector{1,2,3,4}

将会

\begin{bmatrix} 1 \\ 2 \\ 3 \\ 4 \end{bmatrix}

我如何为此类工作创建宏?

答案1

stackengine软件包已经支持这种构造\bracketVectorstack,我按照 OP 要求的形式进行了捆绑。当然,它实际上并没有使用bmatrix

请注意,如果需要矩阵构造而不是向量,请查找tabstackengine包提供的扩展。此外,可以使用例如来更改行间基线跳跃\setstackgap{L}{1.2\baselineskip}

\documentclass{article}
\usepackage{stackengine}
\newcommand\Vector[1]{\setstackEOL{,}\bracketVectorstack{#1}}
\begin{document}
\[
X = \Vector{1,2,3,4} \ne \Vector{1,x,3}
\]
\end{document}

在此处输入图片描述

答案2

expl3使用语法和包装器命令(例如)可以非常轻松地进行拆分\feqvector。此示例允许设置分隔符和矩阵的类型,例如bp或任何其他允许的类型。

\documentclass{article}

\usepackage{mathtools}
\usepackage{xparse}

\ExplSyntaxOn
\clist_new:N \l_feq_vector_clist
\NewDocumentCommand{\feqvector}{O{\\}mO{b}}{
  \clist_set:Nn \l_feq_vector_clist {#2} % Set the list
  \begin{#3matrix}
  \clist_use:Nn \l_feq_vector_clist {#1} % show it with separator from #1 (\\)
  \end{#3matrix}
}
\ExplSyntaxOff

\begin{document}
A few: $\feqvector{1,2,3}$

More of them: $\feqvector{1,2,3,4,5}$

horizontal: $\feqvector[&]{1,2,3,4,5}$

Now with parenthesis and horizontal: $\feqvector[&]{1,2,3}[p]$
\end{document}

在此处输入图片描述

答案3

如果您可以接受稍微不同的语法(在第一种情况下多一个字符),那么有一个简单的解决方案:

\def\vector#1.{\begin{bmatrix} #1 \end{bmatrix}

使用

\vector 1\\2\\3.或者\vector 1\\2\\3\\4.

当然,以点作为参数的结尾仅仅是一个例子。

相关内容