簡體   English   中英

如何為 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 配置文件特定的調整。

我最近遇到了確切的問題。 我真的不喜歡默認的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 字體。

為了解決這個問題,我能夠執行以下操作:

  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/...

確保配置正確的一個簡單測試是將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 的根目錄

  • 在此目錄中打開一個 shell(命令提示符)
  • 通過鍵入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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM