如何从此代码生成行向量命令

如何从此代码生成行向量命令

我发现以下代码小尺寸矩阵

\documentclass{article}
\usepackage{graphicx,amsmath}
\newcommand{\colvec}[2][.8]{%
  \scalebox{#1}{%
    \renewcommand{\arraystretch}{.8}%
    $\begin{bmatrix}#2\end{bmatrix}$%
  }
}

\begin{document}
\[
\mathbf{a}+\colvec{x\\y\\z}+\begin{bmatrix}x\\y\\z\end{bmatrix}+\colvec[.7]{x\\y\\z}
\]
\end{document}

现在我正在使用

\colvec[1]{1 \enskip \mathbf{q}^{T}}

写入行向量。但一定有更好的方法来实现这一点。

答案1

由于\colvec仅使用手动缩放的bmatrix来制作行向量,因此只需将\\分隔符更改为&,如中所示\colvec{x&y&z}

\documentclass{article}
\usepackage{graphicx,amsmath}
\newcommand{\colvec}[2][.8]{%
  \scalebox{#1}{%
    \renewcommand{\arraystretch}{.8}%
    $\begin{bmatrix}#2\end{bmatrix}$%
  }
}

\begin{document}
\[
\mathbf{a}+\colvec{x&y&z}^T+\begin{bmatrix}x\\y\\z\end{bmatrix}+\colvec[.7]{x\\y\\z}
\]
\end{document}

在此处输入图片描述

答案2

由于语法统一,因此只需更改命令即可轻松地从 更改\rowvec为:\colvec

\documentclass{article}
\usepackage{graphicx,amsmath}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\colvec}{O{0.8}m}
 {
  \scalebox{#1}{$\generalvec{#2}{\\}$}
 }
\NewDocumentCommand{\rowvec}{O{0.8}m}
 {
  \scalebox{#1}{$\generalvec{#2}{&}$}
 }
\NewDocumentCommand{\generalvec}{mm}
 {
  \clist_set:Nn \l_tmpa_clist { #1 }
  \renewcommand{\arraystretch}{.8}
  \begin{bmatrix}
  \clist_use:Nn \l_tmpa_clist { #2 }
  \end{bmatrix}
 }
\ExplSyntaxOff

\begin{document}

\[
\mathbf{a}+\rowvec{x,y,z}^T+\colvec{x,y,z}+\colvec[.7]{x,y,z}
\]

\end{document}

在此处输入图片描述

相关内容