写向量 * 矩阵 * 向量

写向量 * 矩阵 * 向量

我用$\vec{s}^\intercal \vec{A} \vec{s}$它来表示 s^T * s * S,其中 s 是列向量,A 是方阵。这种表示法的问题在于 s^T 和 As 之间的空间太小了。

有没有办法可以用均匀的间距来表示它?

附言:我正在使用\renewcommand{\vec}[1]{\mathbf{#1}}

答案1

这可能取决于个人喜好,但你可以增加或减少向量/矩阵之间的水平间隙:

在此处输入图片描述

\documentclass{article}
\usepackage{amssymb}% http://ctan.org/pkg/amsmath
\renewcommand{\vec}[1]{\mathbf{#1}}
\begin{document}
$\vec{s}^\intercal\!\vec{A} \vec{s}$ \quad
$\vec{s}^\intercal \vec{A}\mskip\thinmuskip \vec{s}$
\end{document}

第一个例子增加了一个负片\thinmuskip来拉近A与 的距离s^T,而第二个例子则逆转了这个过程,推开s \thinmuskipA

也许,在这种情况下,建议生成一个可以为您完成此间距的命令,而不是每次都摆弄间距(为了保持一致性):

\newcommand{\vmprod}[3]{%
   \vec{#1}^\intercal\!\vec{#2}\vec{#3}%
}

现在您将能够使用$\vmprod{s}{A}{s}$并获得第一个示例中提供的间距。

你可以更进一步。如果你的结构非常相似,并且通常具有以下形式s^T A s,那么你可以将命令构造为仅采用两个参数,并使用可选的第三个参数xparse

在此处输入图片描述

\documentclass{article}
\usepackage{xparse}% http://ctan.org/pkg/xparse
\usepackage{amssymb}% http://ctan.org/pkg/amsmath
\renewcommand{\vec}[1]{\mathbf{#1}}
\NewDocumentCommand{\vmprod}{o m m}{%
  \IfNoValueTF{#1}
    {\vec{#3}^\intercal}% \vmprod{A}{s}
    {\vec{#1}^\intercal}% \vmprod[t]{A}{s}
  \!\vec{#2}\vec{#3}%
}
\begin{document}
$\vmprod{A}{s}$ \quad
$\vmprod[x]{A}{y}$
\end{document}

答案2

Tex 会自动\scriptspace在每个下标或上标后插入一个空格(0.5pt)。定义一个命令来删除它

\newcommand\transp{^\intercal\kern-\scriptspace}

然后使用它

$\vec{s}\transp \vec{A} \vec{s}$

有些字母可能需要额外的字距调整,比较

在此处输入图片描述

相关内容