如何为iPython笔记本配置mathjax?

时间:2015-03-07 00:06:13

标签: python ipython ipython-notebook mathjax

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

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

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

6 个答案:

答案 0 :(得分:6)

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

我尝试在custom.js/notebook/static/custom/custom.js中修改~/.jupyter/custom/custom.js。不行。我还尝试编辑mathjaxutils.js。它什么都不做。最后我看到了这篇文章https://github.com/jupyter/help/issues/109。我意识到Jupyter使用main.min.js来阅读MathJax配置。所以这是解决方案:

  • MathJax下载Githubhttps://github.com/mathjax/MathJax)。
  • 解压缩MathJax文件并进入该文件夹
    • jax/output/HTML-CSS/fonts/TeX复制到directoy ../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。它应该在第1489行附近。将其更改为

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

答案 1 :(得分: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安装就会出现问题。

答案 2 :(得分:2)

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

答案 3 :(得分:2)

我还想更改Jupyter Notebook中的数学字体。 我认为这是同一个问题:

首先我研究了MathJax文档: http://mathjax.readthedocs.org/en/latest/options/HTML-CSS.html

按照迈克的“比例:200测试”(谢谢!)我发现这个文件是我的Windows机器上正确的配置文件:
C:\ Users \用户mhof.ipython \ profile_default \静\定制\ custom.js。 但是试验如下:

MathJax.Hub.Config({
  "HTML-CSS": {
    availableFonts: [], preferredFont: null, // force Web fonts
    webFont: "Neo-Euler"
  }
});

MathJax.Hub.Config({
  "HTML-CSS": {
   availableFonts: ["TeX","STIX-Web","Neo-Euler"],
   preferredFont: "Neo-Euler",
  }
});
保存文件并在浏览器中刷新(F5)后,

没有更改Jupyter Notebook数学字体外观。 (对于“比例:200测试”,差异清晰可见)。

在C:\ Anaconda3 \ Lib \ site-packages \ notebook \ static \ components \ MathJax下查看我的Anaconda安装Mathjax文件我发现HTML-CSS中缺少几种数学字体。 我想在这里解释了原因:https://github.com/jupyter/notebook/issues/1037。 项目Jupyer成员minrk建议如何通过使用以下方式告诉笔记本使用nbextensions中安装的完整MathJax: c.NotebookApp.mathjax_url ='nbextensions / mathjax'

我不知道我需要在哪个文件中使用这个表达式,有人可以帮忙吗?

作为替代试用方法,我用Mathjax项目网页下载的MathJax文件夹替换了Anaconda安装中的MathJax文件夹。 Jupyter笔记本像以前一样运行并显示公式,但在更改字体方面仍然没有成功。

如果有人能在我的试验中给我一个提示,以改变Jupyter笔记本中的数学字体,我会非常感激。

感谢您的回答,并且非常感谢非常有趣的Jupyter Notebook项目。

此致

马尔特

答案 4 :(得分:2)

我已经将@Stefan Shi的answer调整得更容易了,至少如果您安装了命令行svn

  • 将以下内容放入名为install_tex_fonts的脚本文件中(Windows-land中为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(命令提示符)
  • 在* nix系统上输入install_tex_fonts(或./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"
        }
       });
    

答案 5 :(得分:1)

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
  3. 重新启动Jupyter,右键单击一段数学并将“ Math Renderer”切换为SVG。

(如果您的python版本不是3.7,请在路径中调整python版本)