MathJax 类型设置
Posted
技术标签:
【中文标题】MathJax 类型设置【英文标题】:MathJax TypeSetting 【发布时间】:2019-01-17 23:35:11 【问题描述】:我将 MathJax 用于我的个人博客(使用 Jekyll 托管在 Github 上)。
我注意到刷新页面时MathJax方程闪烁,字体本来比较小,看起来很细,不到半秒后,它会刷新并变得更粗。
与粗体版本相比,我认为我更喜欢细字体样式和更小的方程式(与文本内联的效果更好),所以我尝试配置它但失败了。这是我现在正在查看的文档:http://docs.mathjax.org/en/latest/options/output-processors/html-CSS.html#configure-html-css
这是我的设置不起作用:
<script type="text/x-mathjax-config">
MathJax.Hub.Config(
tex2jax:
inlineMath: [['$','$'], ['\\(','\\)']],
displayMath: [['$$','$$']],
processEscapes: true,
skipTags: ["script","noscript","style","textarea"],
preferredFont: "TeX",
scale: 90,
EqnChunkFactor: 1,
EqnChunk: 1,
EqnChunkDelay: 10
);
</script>
<script
type="text/javascript"
charset="utf-8"
src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<script
type="text/javascript"
charset="utf-8"
src="https://vincenttam.github.io/javascripts/MathJaxLocal.js">
</script>
在旁注中,我也有这个烦人的错误消息MathJaxLocal.js:1 Uncaught ReferenceError: MathJax is not defined
。
如果有人回答这个问题,将不胜感激!
【问题讨论】:
【参考方案1】:你问的是两个完全不同的问题,但还是让我把它们总结一下。
闪烁
“闪烁”(可能)是 PreviewHTML 输出 )docs)。这可能令人惊讶,但因为您正在加载的组合配置文件 (TeX-AMS-MML_HTMLorMML
) MathJax 将首先运行 PreviewHTML 输出,然后是 HTML-CSS 输出(参见 the combined config docs 和 fastpreview extension docs。
您可以像手动使用任何其他输出一样使用 PreviewHTML 输出,但请记住,它是一个不太完整(但速度更快)的输出处理器,它不需要网络字体(但使用系统具有的任何类似 Times 的字体)。
所以跟随configuration docs,类似
MathJax.Hub.Config(
messageStyle: "none",
extensions: ["tex2jax.js"],
jax: ["input/TeX", "output/PreviewHTML"],
tex2jax:
inlineMath: [ ['$','$'], ["\\(","\\)"] ],
displayMath: [ ['$$','$$'], ["\\[","\\]"] ],
processEscapes: true
skipTags: ["script","noscript","style","textarea"]
TeX:
// whatever is in MathJaxlocal.js
);
MathJax 未定义
该错误是由于页面上的所有脚本都是异步加载的。 MathJaxlocal.js
很可能会在 MathJax.js
之前加载和执行(因为它在同一个域上)。
您需要确保在 MathJax 之前加载配置。幸运的是,MathJax 可以为您做到这一点,参见 the docs。
将您的配置放入 MathJaxLocal.js 中,然后仅加载
<script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.5/MathJax.js?config=https://vincenttam.github.io/javascripts/MathJaxLocal.js"></script>
请参阅有关如何添加其他配置文件的链接,包括来自 CDN 的组合文件 - 如果您想返回到完整的输出处理器,这将是有意义的,因为组合配置的打包效率更高。
【讨论】:
啊!是的,谢谢!!通过切换到仅 PreviewHTML,它起作用了!然而,由于不完整,一些方程变得不可读。那么请问是否有办法只减少 MML 输出的 font-size 或 font-weight ?当前的方程式字体看起来太大太重了... 您不能更改将重量减少到低于其最小值。您可以更改字体大小(例如使用 CSS),但 x-height 将不再匹配周围的字体(这是 MathJax 的一个功能)。根据我的经验,您可能想测试 MathJax 支持的另一种字体是否更适合您周围的字体。查看文档以了解如何切换字体。 那是非常有见地和教育的!谢谢你:) 彼得给了你正确的解决方案,但他说的一件事不太对。他说页面上的所有脚本都是异步加载的,但事实并非如此。在您的情况下,脚本是同步加载的,但是由于您使用的是旧 CDN,因此该服务器上的MathJax.js
文件会同步加载,但它会通过插入新脚本将您重定向到新 CDN从那里加载(并且该脚本是异步的)。如果您已更改为 cdnjs.cloudflare.com 地址,那么您的页面将像过去一样工作。一个小小的挑剔。
@davide 是的,我一开始也是这么想的。但是源与页面上的 html 不匹配,其中源被 Octopress 处理为异步调用。不过我应该说清楚的。以上是关于MathJax 类型设置的主要内容,如果未能解决你的问题,请参考以下文章