如何为 iPython 笔记本配置 mathjax?
How do I configure mathjax for iPython notebooks?
我正在尝试找到一种方法让 mathjax 不在我的 iPython 笔记本中使用 STIX 字体进行数学计算。相反,我宁愿让它使用 'TeX' 字体。根据 Mathjax 的文档,我应该使用:
MathJax.Hub.Config({
"HTML-CSS": {
preferredFont: "TeX"
}
});
话虽这么说,但我不确定该把它放在哪里。我已经尝试将这段代码放入属于我自己的 ipython 配置文件的 custom.js 文件中,但它不起作用。理想情况下,我想对 mathjax 进行 ipython 配置文件特定调整。
看一下在笔记本中的某个位置导入的一些 numericalmooc lessons such as this one where the MathJax configuration is included through a css
file。
确保配置正确的一个简单测试是将 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 安装有问题。
我最近遇到了确切的问题。我真的不喜欢默认的 STIX-Web
字体来呈现等式。经过一段时间的试验,我找到了一种在 Jupyter Notebook 中更改 MathJax 字体的方法。我的 Jupyter Notebook 版本是 4.3.1,它是随 Anaconda 一起提供的。我认为其他版本的解决方案应该类似。
我试图在 /notebook/static/custom/custom.js
和 ~/.jupyter/custom/custom.js
中编辑 custom.js
。不起作用。我也尝试编辑 mathjaxutils.js
。它什么都不做。最后我看到了这个 post 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"
...
- 刷新笔记本。
我已经将@Stefan Shi 的 调整得更简单一些,至少如果您安装了命令行 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(命令提示符)
- 运行 通过输入
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"
}
});
Jupyter 附带了自己的(较小)版本的 MathJax。这就是它无法找到(现代计算机)'TeX' 字体的原因——只有 STIX 字体。
要解决此问题,我可以执行以下操作:
- 下载 MathJax 2.7 并复制
jax
目录。
- 用复制的目录替换 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
- 重新启动Jupyter,右键单击一段数学并将'Math Renderer'切换为SVG。
(如果你的版本不是 3.7,请调整路径中的 python 版本;如果你使用的是 miniconda,则路径应为 ~/opt/miniconda3/lib/...
)
我正在尝试找到一种方法让 mathjax 不在我的 iPython 笔记本中使用 STIX 字体进行数学计算。相反,我宁愿让它使用 'TeX' 字体。根据 Mathjax 的文档,我应该使用:
MathJax.Hub.Config({
"HTML-CSS": {
preferredFont: "TeX"
}
});
话虽这么说,但我不确定该把它放在哪里。我已经尝试将这段代码放入属于我自己的 ipython 配置文件的 custom.js 文件中,但它不起作用。理想情况下,我想对 mathjax 进行 ipython 配置文件特定调整。
看一下在笔记本中的某个位置导入的一些 numericalmooc lessons such as this one where the MathJax configuration is included through a css
file。
确保配置正确的一个简单测试是将 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 安装有问题。
我最近遇到了确切的问题。我真的不喜欢默认的 STIX-Web
字体来呈现等式。经过一段时间的试验,我找到了一种在 Jupyter Notebook 中更改 MathJax 字体的方法。我的 Jupyter Notebook 版本是 4.3.1,它是随 Anaconda 一起提供的。我认为其他版本的解决方案应该类似。
我试图在 /notebook/static/custom/custom.js
和 ~/.jupyter/custom/custom.js
中编辑 custom.js
。不起作用。我也尝试编辑 mathjaxutils.js
。它什么都不做。最后我看到了这个 post 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" ...
- 刷新笔记本。
我已经将@Stefan Shi 的 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(命令提示符)
- 运行 通过输入
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" } });
Jupyter 附带了自己的(较小)版本的 MathJax。这就是它无法找到(现代计算机)'TeX' 字体的原因——只有 STIX 字体。
要解决此问题,我可以执行以下操作:
- 下载 MathJax 2.7 并复制
jax
目录。 - 用复制的目录替换 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
- 重新启动Jupyter,右键单击一段数学并将'Math Renderer'切换为SVG。
(如果你的版本不是 3.7,请调整路径中的 python 版本;如果你使用的是 miniconda,则路径应为 ~/opt/miniconda3/lib/...
)