我用$\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
\thinmuskip
了A
。
也许,在这种情况下,建议生成一个可以为您完成此间距的命令,而不是每次都摆弄间距(为了保持一致性):
\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}$
有些字母可能需要额外的字距调整,比较