答案1
在继续阅读之前,请先阅读这个答案。接下来是关于修改 TeX 的行为,以便在原始级别(特别是,不只是对于分数,而且对于所有出现的“拥挤”风格)。
@Mico 说的没错他的评论,即分母的狭窄样式是所有 TeX 引擎内置的非常低级的功能;但它也可以通过相关参数进行配置\fontdimen
(因此我不会将其描述为“硬连线”)。这些参数的确切含义在附录 G 中定义TeXbook;具体来说,与这个问题相关的只是规则 18c 的第二句(第 445 页的最后两行),它规定了 TeX 如何选择将“普通”指数(即不太深的指数)应用于“普通”基本符号(例如,单个字符,而不是子公式)时要增加的量。事实证明有三种可能性:
在 中
\displaystyle
,所选的量是可以称为 的参数的值\fontdimen 13 \textfont 2
;在任何“不拥挤”、不展示的风格中,所选择的金额是
\fontdimen 14 \<style>font 2
在任何“狭窄”的(展示或非展示)样式中,所选数量为
\fontdimen 15 \<style>font 2
,但如果是 ,则<style>
用 替换。text
display
正如其他人已经指出的那样,“拥挤”风格用于分数的分母;但请注意,它们也用于根式、结构\overline
以及其他地方。
因此,只需将第 14 个\fontdimen
参数的值分配给第 15 个参数,就可以“禁用”实际上的“拥挤”样式,从而使分母中的指数增加与 TeX 通常用于分子中指数的量相同的量;也就是说,与@Mico 的解决方案完全相反,后者也强制分子采用“拥挤”的样式。
然而,也存在一些注意事项。
首先,
\fontdimen
参数的改变不是遵守 TeX 分组规则:其范围是总是全球的 (TeXbook,第 277 页)。这意味着,如果您想撤消它们,您需要“手动”保存原始值。其次,每个
\fontdimen
更改都应重复三次(每种风格一次,即针对\textfont 2
、\scriptfont 2
和\scriptscript 2
),除非您只想对某些风格禁用“crampedness”而不对其他风格禁用:例如,为了仅为\textstyle
和 禁用“crampedness”\scriptstyle
,但不为 禁用\scriptscriptstyle
,您可以更改\fontdimen 15 \textfont 2
和\fontdimen 15 \scriptfont 2
,但不要\fontdimen 15 \scriptscriptfont 2
。反过来,对于排版公式的所有大小(
\normalsize
,\footnotesize
,...),必须重复这三重设置,因为一般来说,对应于 的字体\textfont 2
与对应于的\normalsize
字体不同。\textfont 2
\footnotesize
如果您决定抑制“crampedness”,那么抑制“displayedness”似乎也是明智之举,也就是说,赋予与相同的值
\fontdimen 14
(\fontdimen 13
参见上文)。
以下代码给出了一种“概念证明”。它定义了两个声明,两者都是不可逆的:
\LeveledExponentsForCurrentSize
仅抑制当前字体大小的“拥挤度”和“显示度”(但一直到\scriptscriptstyle
);\LeveledExponentsForAllSizes
抑制所有的“拥挤感”和“显眼感”标准LaTeX 尺寸;但请注意,这将加载大量数学字体,其中大多数您永远不会使用,这可能会导致您达到某些引擎(主要是 pdfTeX)中可加载字体数量的限制。
正如前面提到的,代码没有提供保存原始值的功能,因此无法恢复到原始设置。不过,这并不难实现。
% My standard header for TeX.SX answers:
\documentclass[a4paper]{article} % To avoid confusion, let us explicitly
% declare the paper format.
\usepackage[T1]{fontenc} % Not always necessary, but recommended.
% End of standard header. What follows pertains to the problem at hand.
\makeatletter
\newcommand*\@level@exponents@for@font[1]{%
\fontdimen 13 #1\tw@ \fontdimen 14 #1\tw@
\fontdimen 15 #1\tw@ \fontdimen 14 #1\tw@
}
\newcommand*\@level@exponents@for@size[1]{%
\begingroup
#1% set font size
\setbox\z@ \hbox{$$}% activate math font for that size
\@level@exponents@for@font \textfont
\@level@exponents@for@font \scriptfont
\@level@exponents@for@font \scriptscriptfont
\endgroup
}
\newcommand*\LeveledExponentsForCurrentSize{%
\@level@exponents@for@size \@currsize
}
\newcommand*\LeveledExponentsForAllSizes{%
\@level@exponents@for@size \tiny
\@level@exponents@for@size \scriptsize
\@level@exponents@for@size \footnotesize
\@level@exponents@for@size \small
\@level@exponents@for@size \normalsize
\@level@exponents@for@size \large
\@level@exponents@for@size \Large
\@level@exponents@for@size \LARGE
\@level@exponents@for@size \huge
\@level@exponents@for@size \Huge
}
\begin{document}
\Huge
Compare $x^{2}$ with $\overline{x^{2}}$.
In display, three placements are possible:
\[x^{2}|{\textstyle x^{2}}|\overline{x^{2}}\]
As @Mico suggests, let's show fractions too, both in display, as in
\[\frac{x^{2}}{x^{2}}\ne x^{2},\]
and inline: \( \frac{x^{2}}{x^{2}}\ne x^{2} \).
\LeveledExponentsForCurrentSize
Now compare them again: \( x^{2}|\overline{x^{2}} \).
Now in display:
\[x^{2}|{\textstyle x^{2}}|\overline{x^{2}}\]
And the fractions, displayed
\[\frac{x^{2}}{x^{2}}\ne x^{2},\]
and inline: \( \frac{x^{2}}{x^{2}}\ne x^{2} \).
\end{document}
为了您的方便,这里是结果输出:
答案2
答案3
我倾向于选择一种在其他地方没有副作用的方法。这消除了 gustavo mezzetti 描述的(最出色!)方法。并且由于强制使用“拥挤”风格并不是所要求的(并且会产生副作用,即如果修改的对象靠近同时具有下标和上标的变量),对齐将不一致。
仅对上标位置进行操作的方法是插入幻像下标。这会将上标上推至几乎正常的、内联变量上的上标的级别。为了方便起见,可以像这里一样,将其制成命令。幻影物体应该具有良好的高度而没有深度;数字或大写“X”通常是一个不错的选择。
\documentclass{article}
\newcommand{\matchsupheight}{_{\vphantom{0}}}
\begin{document}
\begin{equation}
x^{2} / x^{2}
\end{equation}
\begin{equation}
\frac{x^{2}}{x^{2}} \quad \frac{x^{2}}{x\matchsupheight^{2}}
\end{equation}
\end{document}