\frac 与 mathpazo:条形太靠近分母

\frac 与 mathpazo:条形太靠近分母

在以下 MWE 中:

\documentclass{article}
\usepackage{mathpazo}

\begin{document}
$\frac{1}{2}$
\end{document}

分数线离分母有点太近了,见截图:

使用 mathpazo 进行 \frac

这种行为有什么原因吗?可以调整线的位置吗?我不认为应该这样,因为当使用时lmodern,该栏(据我所知)正好位于中间,请参见第二张屏幕截图:

\frac 与 lmodern

答案1

让我们简单介绍一下 TeX 如何创建分数(为了简单起见,许多细节将被忽略)。首先,TeX 需要知道在哪里应该绘制分数线,并且多厚应该是。这些由\fontdimen字体设计者决定的参数控制(但用户可以稍后更改它们)。条的垂直位置对应于\fontdimen 22 of family 2,而厚度对应于\fontdimen 8 of family 3。然后,TeX 需要将分子和分母从“基线”上下移动,以将它们堆叠成分数。控制分子的参数是\fontdimen 8, 9, 10 of family 2,而控制分母的参数是\fontdimen 11, 12 of family 2笔记: 字体设计师需要为这些参数设置适当的值,以使结果看起来赏心悦目在多数情况下


这种行为有原因吗?

这是因为mathpazo许多参数使用与 Computer Modern Math 相同的值。这些值与 Computer Modern(以及 Latin Modern lmodern)配合得很好。但 Palatino 类设计有更高的“主体”,通常需要更大的间距。因此这些移动量(为 Computer Modern 设计)可能不适合 Palatino。


可以调整线的位置吗?

您实际上并不想调整分数线的位置(因为\fontdimen 22 of family 2这会影响很多其他不同的东西)。相反,您可以放大\fontdimen 11, 12 of family 2以使分母向下移动一点。

大卫的回答展示了如何为 分配新值\fontdimen11\textfont2。缺点是这种分配非常低级(TeX 编程的最低级别)。具体来说,这仅适用于一种字体大小(即\normalsize本例中的 10pt)。

一个稍微高级一点的解决方案是\DeclareFontShape在 LaTeX NFSS(新字体选择方案)中使用。语法是

\DeclareFontShape{<encoding>}{<family>}{<series>}{<shape>}
  {
    <size declarations>
  }
  {
    \fontdimen11\font=<some proportion of>\fontdimen6\font
    ...
  }

但在我看来,这种代码应该出现在包中。嗯,在我看来,如果字体中的参数足够好,这种代码就根本不需要。


我不认为应该这样,因为当使用时lmodern,该栏(据我所知)正好位于中间

嗯,就像大卫的回答还解释了,如果条形图正好位于和的中间12那么它肯定不可能正好位于1和的中间x,也不可能正好位于1和的中间(N)。记住,它是关于视觉平衡在无数情况下,不是关于数学上的精确性


我的建议

如果可以的话,请切换到newpxtext和。这些较新的软件包得到了积极维护。我还在2019 年帮助改进了它,处理了分子和分母的位置。详情如下:newpxmathnewpxmathhttps://tex.stackexchange.com/a/509092在我看来,这也符合你当前的需求。我试图在 (1) 分数线周围的等间距、(2) 分子的统一基线和 (3) 分母的统一基线之间找到平衡。它永远不可能“完美”,但我认为结果在视觉上是令人愉悦的。

总之,只需使用\usepackage[fracspacing]{newpxmath}而不是\usepackage{mathpazo}就可以了。


如果你想坚持mathpazo,那么:

如果您仍想使用mathpazo,那么这里是您可以使用的 LaTeX NFSS 代码:

\documentclass{article}
\usepackage{mathpazo}

% The original declarations can be found in omszplm.fd
% We are changing them to use our customized fontdimen's

\DeclareFontFamily{OMS}{zplm}{
   \skewchar\font=48 % kept from the original file
   \fontdimen 8\font=0.789\fontdimen6\font % 0.789 of a quad
   \fontdimen11\font=0.798\fontdimen6\font % 0.798 of a quad
}
\DeclareFontShape{OMS}{zplm}{m}{n}{<-> zplmr7y}{}
\DeclareFontShape{OMS}{zplm}{b}{n}{<-> zplmb7y}{}
\DeclareFontShape{OMS}{zplm}{bx}{n}{<->ssub * zplm/b/n}{}

\begin{document}
Inline $\frac{1}{2}$ and display
\[ \frac{1}{2} \]
\end{document}

这两个值0.7890.798取自newpxmath。如果我没记错的话,它们应该足以满足 Palatino 的长上升段和下降段的需求。您可以根据需要调整它们,甚至可以\fontdimen 9, 10, 12同时调整。

答案2

即使在现代计算机中,上方的空间也比下方的空间稍微大一些,为 1/2,并且通常 TeX 不会尝试均衡空间,例如 1/x,其中下方的空间比上方的空间大很多,或者分母使用高符号()其中下方的空间比上方的空间小很多。

在此处输入图片描述

\documentclass{article}

\begin{document}

\[\frac{1}{2} + \frac{1}{x} + \frac{1}{(N)} \]

\end{document}

因此,如果您使用的数字相对较高,分数线下方数字上方的空间就会较小。

但是,如果你想要增加分数线下方的空间,你可以设置 fondimen11,这是分母的默认下降,请参阅

不同的 \fontdimen<num> 代表什么意思

在此处输入图片描述

\documentclass{article}

\begin{document}
\sbox0{$x$}% initialise math

\fontdimen11\textfont2=10pt
\[\frac{1}{2} + \frac{1}{x} + \frac{1}{(N)} \]

\end{document}

相关内容