mathjax 中的大写字母和数字太大

Uppercase letters and numbers in mathjax are too big

我正在使用 Jekyll 在 Github 中设置网页。我已经实现 Mathjax 以呈现数学文本。我的配置是最小的:

<!-- Mathjax -->
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    tex2jax: {inlineMath: [['$','$'], ['\(','\)']],
      processEscapes: true
    }
  });
</script>
<script type="text/javascript" src="path-to-mathjax/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
    <script type="text/javascript"
  src="//cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>

它工作正常,除了内联数学文本和大写字母看起来很大,考虑到周围的文本。我以this page为例。

到目前为止,我唯一能做的就是通过使用

按周围文本的一个因子缩小数学
"HTML-CSS": {
scale: 90
}

问题是它缩放了所有数学表达式,包括小写字母,这些字母在没有缩放的情况下似乎大小合适。

所以我的问题是是否有办法解决这个差异。

is ... there is a way to fix this discrepancy?

没有。 MathJax 通过缩放自己的字体来匹配周围的字体,以便 ex-height 与周围字体的高度相匹配。这意味着小写字母的高度应该大致相等,如您的示例所示。所以 MathJax 正确地确定了周围的前高度并与之匹配。

大写不匹配的原因是不同的字体在大小写字母的高度之间有不同的比例。所以如果你让小写字母匹配,大写字母就不会匹配(反之亦然)。使用与 MathJax 字体具有不同大小写高度比的字体,您将无法同时匹配周围的字体。这是两种字体设计所固有的。

唯一的另一种可能性是对大写字母和小写字母进行不同的缩放,但这意味着权重不匹配,并且数学布局的质量会受到影响。

所以,不,一般来说,你不能两者兼得。


编辑 2020 年 4 月 30 日:

在下面的评论中,我们讨论了 em 单位的含义,它与字体的(计算)font-size 相同。不幸的是,这与字体中大写字母的高度不同。例如,对于字体 Times、Courier、Impact 和 Zapfino,下面的代码在高度和宽度为 1em 的红色框内显示了一个 M,在高度和宽度为 1ex 的框内显示了一个 x。 运行 来看看效果吧。

div {
  font-size: 60px;
  display: inline-block;
  min-width: 120px;
}
em-box {
  display: inline-block;
  background-color: red;
  width: 1em; height: 1em;
  margin-right: -1em;
}
ex-box {
  display: inline-block;
  background-color: red;
  width: 1ex; height: 1ex; 
  margin-right: -1ex;
  margin-left: 10px;
}
M-box {
  display: inline-block;
  min-width: 1em;
}
x-box {
  display: inline-block;
  min-width: 1ex;
}
<div style="font-family: Times">
<em-box></em-box><M-box>M</M-box><ex-box></ex-box><x-box>x</x-box>
</div>
<div style="font-family: Courier">
<em-box></em-box><M-box>M</M-box><ex-box></ex-box><x-box>x</x-box>
</div>
<div style="font-family: Impact">
<em-box></em-box><M-box>M</M-box><ex-box></ex-box><x-box>x</x-box>
</div>
<div style="font-family: Zapfino">
<em-box></em-box><M-box>M</M-box><ex-box></ex-box><x-box>x</x-box>
</div>

这是一张图片,以防您无法查看上面的结果。

请注意,em 框(红色)在所有情况下都是相同的,并且是 CSS 中指定的高度(50px),而 M 的高度在该框内变化(而高度x 的匹配其框)。所以不能用em-size来判断字体中大写字母的高度。

我不知道如何确定 M 的实际高度。