如何使下标中的小写字母和大写字母的垂直空间相同?

如何使下标中的小写字母和大写字母的垂直空间相同?

在此示例中

\documentclass[12pt]{article}
\usepackage{amsmath}
\begin{document}

\[
t_{0} = k r_N + \frac{ (N-1)\phi }{2}
\]
    
\[
t_{0} = k r_n + \frac{ (N-1)\phi }{2}
\]

\end{document}

使用 lualatex 编译,输出为

在此处输入图片描述

问题是当下标为大写时,它看起来几乎与处于同一级别r。就像乘法而不是下标。

我希望看起来像这样(通过 paint.exe 的魔力完成)

在此处输入图片描述

这可能也取决于所使用的字体。

是否有一些全局选项可以帮助解决这种情况,以便小写字母和大写字母在字母下方具有相同的垂直空间?

答案1

您可以将下标放在 a 中\raisebox,然后根据下标的高度和所需级别(此处为字体的 x 高度)之间的差异来降低下标的高度。这涉及将下标保存在框中并测量其高度。

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage{settobox} % For \settoboxheight

\newbox{\subbox}
\newlength{\xheight}
\newlength{\subheight}

\newcommand\xheightsub[2]{%
    \savebox{\subbox}{\({}_{#2}\)}%
    \settoheight{\xheight}{\({}_x\)}%
    \settoboxheight{\subheight}{\subbox}%
    \addtolength{\subheight}{-\xheight}%
    {#1}{\raisebox{-\subheight}{\usebox{\subbox}}}%
 }

\begin{document}

\[
  k_n = \xheightsub{k}{n} = \xheightsub{k}{N} = \xheightsub{k}{n^{2^t}} = \xheightsub{k}{+} = \xheightsub{\log}{N}
\]

\end{document}

计算机现代样本

代码没有完全涵盖的一个罕见的特殊情况是:如果您需要一个表达式来a \log_b工作,您可以将其写成a \mathop() \xheightsub{\log}{b}

相关内容