【问题标题】:How do I configure mathjax for iPython notebooks?如何为 iPython 笔记本配置 mathjax?
【发布时间】:2015-03-07 00:06:12
【问题描述】:

我正在尝试找到一种方法,让 mathjax 不在我的 iPython 笔记本中使用 STIX 字体进行数学运算。相反,我宁愿让它使用“TeX”字体。根据 Mathjax 的文档,我应该使用:

MathJax.Hub.Config({
  "HTML-CSS": {
    preferredFont: "TeX"
  }
});

话虽如此,我不知道该放在哪里。我已经尝试将这段代码放入与我自己的 ipython 配置文件有关的 custom.js 文件中,但它不起作用。理想情况下,我想对 mathjax 进行 ipython 配置文件的特定调整。

【问题讨论】:

    标签: python ipython ipython-notebook mathjax


    【解决方案1】:

    我最近遇到了确切的问题。我真的不喜欢默认的STIX-Web 字体来渲染方程。经过一段时间的试验,我找到了一种在 Jupyter Notebook 中更改 MathJax 字体的方法。我的 Jupyter Notebook 版本是 4.3.1,它随 Anaconda 一起提供。我认为其他版本的解决方案应该类似。

    我尝试在/notebook/static/custom/custom.js~/.jupyter/custom/custom.js 中编辑custom.js。不工作。我还尝试编辑mathjaxutils.js。它什么也不做。最后我看到了这个帖子https://github.com/jupyter/help/issues/109。我意识到 Jupyter 使用 main.min.js 来读取 MathJax 配置。所以这里是解决方案:

    • Github下载MathJax(https://github.com/mathjax/MathJax)。
    • 解压MathJax文件并进入文件夹
      • 复制jax/output/HTML-CSS/fonts/TeX到目录../notebook/static/components/MathJax/jax/output/HTML-CSS/fonts/
      • fonts/HTML-CSS/TeX复制到../notebook/static/components/MathJax/fonts/HTML-CSS/
    • 打开../notebook/static/notebook/js/main.min.js,搜索availableFonts。它应该在第 14894 行附近。将其更改为

      ...
      availableFonts: ["STIX-Web","TeX"],
      imageFont: null;
      preferredFont: "TeX",
      webFont: "TeX"
      ...
      
    • 刷新笔记本。

    【讨论】:

    • 我投了赞成票,但这是一个猴子补丁的答案,而不是正确的答案(这似乎是未知的)
    • 不管怎样,MathJax 不再具有这种结构;您必须运行 git checkout legacy-v2 才能访问 MathJax v2 源代码
    【解决方案2】:

    Jupyter 附带了自己的(较小的)MathJax 版本。这就是为什么它无法找到 (Computer Modern) 'TeX' 字体的原因——只有 STIX 字体。

    为了解决这个问题,我能够做到以下几点:

    1. 下载MathJax 2.7并复制jax目录。
    2. 将 Jupyter 的 jax 目录替换为复制的目录:
    • 对于默认环境:~/anaconda3/lib/python3.7/site-packages/notebook/static/components/MathJax/jax
    • 对于不同的环境:~/anaconda3/envs/<ENVIRONMENT>/lib/python3.7/site-packages/notebook/static/components/MathJax/jax
    1. 重新启动 Jupyter,右键单击一段数学并将“数学渲染器”切换为 SVG。

    (如果你的不是 3.7,则在路径中调整 python 版本;如果你使用的是 miniconda,则路径应该是~/opt/miniconda3/lib/...

    【讨论】:

      【解决方案3】:

      确保配置正确的简单测试是将preferredFont: "TeX" 更改为scale: 200。然后保存并重新加载笔记本。数学显然应该比以前大得多。所以假设这有效,这意味着你的config.js 正在做它需要做的事情。

      现在,更重要的是,尝试添加另一行,使您的配置看起来像

      MathJax.Hub.Config({
        "HTML-CSS": {
          availableFonts: ["TeX"],
          preferredFont: "TeX",
        }
      });
      

      保存后不要忘记完全刷新笔记本页面。这会覆盖(我猜是)default value of that availableFonts variable,如果 mathjax 找不到 TeX,它将允许 STIX。我不确定为什么它似乎忽略了首选字体,但这似乎更像是一个 mathjax 问题而不是 ipython 问题。

      所以现在,如果它仍然不是 TeX 字体(mathjax 似乎调用 MathJax_Math-Italic.otf 或类似字体),我猜 mathjax 只是找不到该字体,并且可能已经依赖其他字体.如果是这种情况,则说明您的 mathjax 安装有问题。

      【讨论】:

      • config.js 去哪儿了?
      • 如果在~/.jupyter/custom/custom.js 中它不起作用
      • 我猜有些东西变了。 ~/.jupyter/custom/custom.js 文件确实被读取,您可以通过在其中放置一些 console.log 消息来验证。但是mathjax配置好像没有效果。他们似乎每隔几分钟就会改变配置的工作方式。这很令人沮丧。
      • 是的,据我所知,问题不在于配置,而是默认情况下实际上不存在 TeX 字体(请参阅我的回答和 Stefan Shi 的回答)
      • 我认为不止于此,因为其他配置不起作用,即使它们不依赖字体。例如,我有一个TeX: {Macros: {}} 部分,并且如此定义的宏都不可用。日志中没有关于此或任何内容的消息...
      【解决方案4】:

      查看一些numericalmooc 课程,例如this one,其中MathJax 配置是included through a css file,它是在笔记本中的某个位置导入的。

      【讨论】:

        【解决方案5】:

        我已经将@Stefan Shi 的answer 调整得更简单一些,至少如果你安装了命令行svn

        • 将以下内容放入名为install_tex_fonts(Windows 领域为install_tex_fonts.bat)的脚本文件中:

          svn export https://github.com/mathjax/MathJax/trunk/fonts/HTML-CSS/TeX/woff fonts/HTML-CSS/TeX/woff
          svn export https://github.com/mathjax/MathJax/trunk/jax/output/HTML-CSS/fonts/TeX jax/output/HTML-CSS/fonts/TeX
          
        • 将脚本文件移动到{PYTHON}/Lib/site-packages/notebook/static/components/MathJax,其中{PYTHON}是您安装Python的根目录

        • 在此目录中打开一个 shell(命令提示符)
        • 通过键入 install_tex_fonts(或在 *nix 系统上为 ./install_tex_fonts;我猜你还必须 chmod a+x 它)运行脚本
        • 在您的~/.jupyter/custom/custom.js 文件中添加以下部分($([IPython.events]).on('app_initialized.NotebookApp') 行应该已经存在):

          $([IPython.events]).on('app_initialized.NotebookApp', function(){
          
            MathJax.Hub.Config({
              "HTML-CSS": {
                  availableFonts: ["TeX"],
                  preferredFont: "TeX",
                  webFont: "TeX"
              }
             });
          

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-12-27
          • 1970-01-01
          • 2014-02-03
          • 2018-09-03
          • 1970-01-01
          • 2015-08-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多