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 类型设置的主要内容,如果未能解决你的问题,请参考以下文章

MathJax基本的使用方式

对不带分隔符的自定义标签执行MathJax

MathJax 不处理乳胶环境

MathJax的使用

网页引入mathjax,latex

网页引入mathjax,latex