简单的问题:数学模式中的间距通常很尴尬,尤其是大栅栏和上标或下标。通常,这相当于指数离括号表达式太远,就像在倒数第二个例子中一样,它离括号比它所附加的内部表达式更近。
示例 1 是默认行为,显示了上标距离括号太远以及它在等号前引入的较大间隙。
示例 2 使用mathtools
' mathXlap
,它完全忽略了上标,并使所有内容太靠近,导致指数看起来很尴尬。
示例 3 通过添加手动负间距来使上标更靠近括号,从而对示例 2 进行了改进。有人可能会说,在等号左侧添加更多空间仍然会更好。
示例 4 显示了嵌套栅栏和指数的糟糕视觉效果。
我认为示例 3 和示例 5 看起来最好,或者至少比默认效果更好。
当然,我可以手动修复间距问题,或者手动使用较小尺寸的栅栏,但我真的希望 LaTeX 有办法自动完成这些操作,因为它擅长排版(数学)。
我听说过“阶梯字距”,一些数学字体似乎有这种字体来改善上标和下标的位置。这听起来很有希望,但我没有找到任何关于在哪里可以找到或如何使用这种字体的具体信息。(我也想保留 Computer Modern 的外观。)
所以,我只是在寻找任何自动的我可能错过的解决方案。
示例 MWE:(physcs
只是为了更容易地排版差异)
\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{mathtools}
\usepackage{physics}
\begin{document}
\begin{gather*}
\frac{z}{b} = \left( \dv{v}{t} \right)^{-1} = \frac{1}{a} \\
\frac{z}{b} = \left( \dv{v}{t} \right)^{\mathrlap{-1}} = \frac{1}{a} \\
\frac{z}{b} = \left( \dv{v}{t} \right)^{\mathrlap{\!\!-1}} = \frac{1}{a} \\
\end{gather*}
\begin{gather*}
\left( D\left( \dv[3]{A_{x0}}{A_{y0}} \right)^{2k} \right) \\
\left( D\!\left( \dv[3]{A_{x0}}{A_{y0}} \right)^{\!\!2k}\, \right)
\end{gather*}
\end{document}
答案1
评论太长了,大卫煽动我写一些东西来说明如何在 ConTeXt lmtx 中做到这一点。
我和 Hans Hagen 一起研究了这些阶梯字距,发现没有多少字体有这种字距,而且在有这种字距的字体中(我们所见过的)也不一致。ConTeXt 的决定是:不要使用它们,而是转换为角字距(用于四个角)。
在某些字体中,例如 Latin Modern Math,我们手动在右括号的右上角和右下角添加了这样的字距。这有点复杂,因为不同的大小可能需要不同的字距量。查看modern-math.lfg
我们调整 Latin Modern Math 的地方,我们找到了以下行(0x29 是右括号)
["0x29.variants.*"] = { topright = -0.15, bottomright = -0.15 },
["0x29.parts.top"] = { topright = -0.3,},
["0x29.parts.bottom"] = { bottomright = -0.3 },
所有变体都会产生一定的负字距,当配方生效时,负字距会更大。让我们看看这是如何实现的,但首先不要进行这些调整:
使用的代码是
\setupmathematics
[differentiald=upright]
\startbuffer
\dm{\frac{z}{b} = \left(\frac{\dd v}{\dd t}\right)^{-1} = \frac{1}{a}}
\blank[small]
\dm{\left( D \left( \frac{\dd^3 A_{x0}}{\dd A^3_{y0}}\right)^{2k} \right)}
\blank[big]
\stopbuffer
\startTEXpage[offset=1DK]
\setupbodyfont[modern-nt]
\getbuffer
\stopTEXpage
这里,我们将字体设置为modern-nt
,应该读作modern not tweaked
。如果我们注释掉以下行,这将与我们获得的默认调整版本进行比较\setupbodyfont
:
也许区别很微妙。这里更加明显一些,我们显示了字形(\showglyphs
)并显示了添加的原子间空间(\showmakeup[mathglue]
):
看看橙色框,以及和是如何-1
被推2k
到左边一点的。