我有一串不等式,中间某处有两个相等的东西。为了将其完美地放在一行中,我想将相等的东西堆叠起来。所以我想做这样的事情(使用 stackrel 包):
\[ A \leq \stackrel[B]{C}{\parallel} \leq D \]
但是这会使 B 和 C 变小。我可以用更笨拙的 hack 来解决这个问题:
\[ A \leq \stackrel[\text{\normalsize $B$}]{\text{\normalsize $C$}}{\parallel} \leq D \]
我的问题是:做这样的事情的正确方法是什么?
编辑:如果可能的话,我想要一些没有开始和结束的东西。
答案1
我将避免讨论这样做是否是个好主意,而是回答您的具体问题。您的问题是\stackrel
隐式地从 displaystyle 中取出B
和C
。要解决这个问题,您只需明确告诉它在 displaystyle 中排版它们:
\[ A \leq \stackrel[\displaystyle B]{\displaystyle C}{\parallel} \leq D \]
答案2
\stackrel
是用来放置上标的,所以它不是正确的,\substack
也用于下标或上标,所以它不是最好的选择,\genfrac
是一个选项:\[A \leq \genfrac{}{}{0pt}{0}{B}{C} \leq D.\]
,但字母之间的间距可能比你希望的要大,环境
aligned
是可能的,环境
array
看起来很自然:\[A \leq \begin{array}{c} B \\ C \end{array}\leq D.\]
如果你使用数组,你可以在本地修改 \arraystretch 以使其更加拥挤,另一种快速方法是使用 \ 的可选参数,就像
\[A \leq \begin{array}{c} B \\[-3pt] C \end{array}\leq D\]
最好使用\[ ...\]
而不是$$ ... $$
。
答案3
看过各种可能性的输出后,我不禁觉得这个问题应该带有“不要这样做”的标签!我发现自己想知道究竟是什么情况导致你想这样做。我猜整个表达式很长,有很多术语,所以逐行列出它们只会也大。因此,目标是使整个表达式紧凑。鉴于它(大概)不相当一行就可以写完,使用等式作为压缩点确实有一定意义。但是,如果使用稍微多一点的空间让它更清晰一点呢?
考虑到这一点,以下是我的提议(使用 amsmath 包):
\begin{align*}
A \le B \le C &\le D \\
&\phantom{{}\le{}}\parallel \\
&\phantom{{}\le{}}E \le F \le G \le H
\end{align*}
注意\phantom
s。放置对齐标签后第一行的\le
导致\le
和 之间的间距不好D
,所以我们必须将垂直等号和 稍微移动E
一下,以便它们正确地位于 下方D
。如果没有额外的括号, 两边的空间\le
会被修剪,使其\phantom
太短。
答案4
对于你的特殊情况,我会写
A \leq B = C \leq D
但一般来说,如果你想堆叠东西,我想可以用 AMS 矩阵环境来完成,
A \leq \begin{matrix}B \\ \parallel \\ C\end{matrix} \leq D
尽管可能有些东西非常适合这项任务。
(顺便说一句,我不太喜欢用它\parallel
来得到旋转的等号,但如果你不愿意只使用常规的未旋转的等号,我不知道正确的方法。)