如何将一个符号堆叠在另一个相同大小但没有垂直居中的符号上?

如何将一个符号堆叠在另一个相同大小但没有垂直居中的符号上?

我有类似的东西

\[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

您可以使用底部对齐数组:

\documentclass{article}
\usepackage{amsmath}

\newcommand{\adorn}[2]{\begin{array}[b]{@{}c@{}}#2\\#1\end{array}}

\begin{document}

\[
A=\langle \adorn{a+b}{x},\adorn{c+d}{y},\adorn{e+f}{z} \rangle
\]

\end{document}

在此处输入图片描述

答案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}

在此处输入图片描述

相关内容