![](/img/trans.png)
[英]How to automatically load profile in IPython/Jupyter notebooks?
[英]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 配置文件特定的調整。
我最近遇到了確切的問題。 我真的不喜歡默認的STIX-Web
字體來渲染方程。 經過一段時間的試驗,我找到了一種在 Jupyter Notebook 中更改 MathJax 字體的方法。 我的 Jupyter Notebook 版本是 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
配置。 所以這里是解決方案:
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" ...
Jupyter 附帶了它自己的(較小的)MathJax 版本。 這就是為什么它無法找到(Computer Modern)“TeX”字體的原因——只有 STIX 字體。
為了解決這個問題,我能夠執行以下操作:
jax
目錄。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.7,請調整路徑中的 python 版本;如果您使用的是 miniconda,路徑應該是~/opt/miniconda3/lib/...
)
確保配置正確的一個簡單測試是將preferredFont: "TeX"
更改為scale: 200
。 然后保存並重新加載筆記本。 數學顯然應該比以前大得多。 所以假設這有效,這意味着你的config.js
正在做它需要做的事情。
現在,更重要的是,嘗試添加另一行,使您的配置看起來像
MathJax.Hub.Config({
"HTML-CSS": {
availableFonts: ["TeX"],
preferredFont: "TeX",
}
});
保存后不要忘記完全刷新筆記本頁面。 這會覆蓋(我猜是)該availableFonts
變量的默認值,如果 mathjax 找不到 TeX,它將允許 STIX。 我不確定為什么它似乎忽略了首選字體,但這似乎更像是 mathjax 問題而不是 ipython 問題。
所以現在,如果它仍然不是 TeX 字體(mathjax 似乎稱之為MathJax_Math-Italic.otf
或類似的字體),我猜想 mathjax 只是找不到該字體,並且可能已經退回了其他字體。 如果是這種情況,那么您的 mathjax 安裝就會出現問題。
看看一些numericalmooc教訓,如這一個在MathJax配置是通過一個包含css
文件,這是在筆記本的某一點進口。
我還想更改Jupyter筆記本中的數學字體。 我認為這是同一個問題:
首先,我查看了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項目。
問候
馬爾特
我已經調整了@Stefan Shi 對一些更簡單的回答,至少如果你安裝了命令行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 的根目錄
install_tex_fonts
(或 *nix 系統上的./install_tex_fonts
來運行腳本;我猜你還必須chmod a+x
it) 在~/.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" } });
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.