下标垂直位置取决于上标的存在 - 如何改变?

下标垂直位置取决于上标的存在 - 如何改变?

可能重复:
带撇号的变量的下标

如果我有一个变量,它总是带有下标,但有时带有上标,则下标的垂直位置会发生变化。例如,$s^*_i$$s^{}_i$不同于$s_i$。我是否可以定义下标,使其无论是否存在上标,都始终位于同一位置?

答案1

\usepackage{subdepth}

例子

\documentclass{article}
\usepackage{subdepth}
\begin{document}
$a_i a_i^2$
\end{document}

在此处输入图片描述

答案2

我将定义一个宏来以一致的方式处理这个问题。以下最小示例定义了\var[<var>]{<sub>}[<sup>]集合<var>_{<sub>}^{<sup>}<var><sup>是可选的)。添加一个空值<sup>可确保上标的高度一致。如果您的可选项<sup>不是“普通上标”(我们称之为“奇怪的”),则\vphantom{<bizarre sup>}在之前添加#3应该可以解决垂直对齐问题:

在此处输入图片描述

\documentclass{article}
\usepackage{xparse}% http://ctan.org/pkg/xparse
\NewDocumentCommand{\var}{O{s} m O{}}{%
  \ensuremath{#1_{#2}^{#3}}% add \vphantom{<bizarre sup>}
}
\begin{document}
$s_i\ s_i^*$\ \var{i}\ \var{i}[*]\ \var[a]{k}\ \var[a]{k}[*]
\end{document}​

<var>默认值为s。如果<sup>包含其他(更复杂)元素,则可以使用\mathstrut。也就是说,只要了解一些输入,就可以优化输出。

还可以修改宏以允许您^{..}根据需要使用上标符号,而不是可选参数<sup>,但这会强制使用数学模式,而不是使用\ensuremath

xparse提供宏定义接口。

相关内容