我有类似的东西
\[a = \langle a + b, c + d, e + f \rangle\]
但我想在右侧上方堆叠另一个向量,水平居中(相对于 a 的相应元素),但没有尖括号,即
x y z
a = < a + b, c + d, e + f >
我试过了,\overset
但效果不理想,因为上面的向量会变小。我也试过了,\genfrac
但它会把原来的向量往下推。(我不希望尖括号延伸到覆盖两行。)我该如何实现这一点?
答案1
这里有两种可能的解决方案。第一种方法使用宏的修改形式\overset
,其中设置第一个参数\textstyle
而不是默认值\scriptstyle
。第二种方法使用array
环境;它需要更多的设置,但比第一种方法更灵活/通用。例如,使用第二种方法时,更改垂直间距更直接。
\documentclass{article}
\usepackage{amsmath}
\newcommand\myoverset[2]{\overset{\textstyle #1\mathstrut}{#2}}
\newcommand\mycomma{,\mkern3mu} % emulate punctuation spacing
\begin{document}
\[
a = \langle \myoverset{x}{a + b},
\myoverset{y}{c + d},
\myoverset{z}{e + f} \rangle
\]
\[
\setlength{\arraycolsep}{0pt}
\begin{array}{ccccccc}
&x && y && z &\\
a=\langle &a+b &\mycomma& c+d &\mycomma& e+f &\rangle
\end{array}
\]
\end{document}
答案2
答案3
也许是这样的
\documentclass{article}
\usepackage{amsmath}
\newcommand{\Overset}[2]{%
\mathop{#2}\limits^{\vbox to -.1ex{%
\kern -1.4ex\hbox{$#1$}\vss}}}
\begin{document}
\[ a = \langle \Overset{x}{a + b},\Overset{y}{c + d},\Overset{z}{e + f} \rangle \]
\[ a = \langle a + b, c + d, e + f \rangle \]
\begin{document}
如您所见,我定义了一个名为 的新命令\Overset
。
答案4
这里,stackengine
是合适的。如图所示,可以通过调用来改变堆栈基线跳过\setstackgap
。
\documentclass{article}
\usepackage{stackengine}
\newcommand\mathstack[2]{\ensurestackMath{%
\stackengine{\Lstackgap}{{}#1{}}{#2}{O}{c}{F}{F}{L}}}
\begin{document}
\[a = \langle a \mathstack{+}{x} b, c \mathstack{+}{y} d, e \mathstack{+}{z} f \rangle\]
\setstackgap{L}{1.3\baselineskip}
\[a = \langle a \mathstack{+}{x} b, c \mathstack{+}{y} d, e \mathstack{+}{z} f \rangle\]
\end{document}