Sagemath Jupyter 主题设置 [sagemath-theme]
Sagemath Jupyter 主题设置 [sagemath-theme]
如果你是一个没有定制化需求的 Sagemath 用户或者单纯地使用 Jupyter Notebook 连接一些与 Sagemath 无关的服务, 你遇到本文所关心问题的可能性是很低的, 这个主要有以下两个原因.
-
Sagemath Jupyter Notebook 在 Visual Studio Code 上几乎不能使用. 这是因为, 所有由 MathJax 提供渲染的公式都无法呈现, 甚至连 Cell 也不出现. 于是最稳妥的做法就变成了使用浏览器访问 Jupyter Notebook.
-
Jupyter Notebook 的主题设计非常混乱, 常用主题位于 jupyterthemes 包, 但是这个包的文档和使用示例并不适用于 Sagemath.
这两点使得问题看上去不太容易. 因为一般的, 如果用户使用 Visual Studio Code 访问 Jupyter Notebook 就完全不需要担心主题问题, 于是相应的可能在互联网上存在的解决方案就会变少. 关于第二点, 如果尝试在 Jupyter Notebook 当中执行下面这样的程序
from jupyterthemes import get_themes, jtplot
import jupyterthemes as jt
from jupyterthemes.stylefx import set_nb_theme
set_nb_theme('monokai')
确实能够切换到 monokai
主题, 同时你还会发现当前使用的 Jupyter Notebook 的 Header
和 Toolbar
消失了 1. 如果你尝试检索相关信息, 你会在 jupyterthemes 的文档中找到像是
jt -t monokai -T -N
这样的做法, 这里的 -T
是 Toolbar Visible, -N
是 Name & Logo Visible. 然后遗憾地发现这不会对 Sagemath 的 Jupyter Notebook 造成任何作用. 同时, 这样的设置也是临时的, 如果希望将某个特定的主题作为默认主题, 就得另谋他法.
最直接的方法是, 找到像下面这样的编译后的样式文件
sagemath/runtime/opt/sagemath-9.3/local/lib/python3.7/site-packages/jupyterthemes/styles/compiled/monokai.css
然后覆盖到
<SAGE_HOME>/.sage/jupyter-4.1/custom/custom.css
这样你就得到了一个永久生效的样式设置. 随后可以通过修改 div#maintoolbar
和 #header-container
的 display
为 block
重新显示这两个组件. 修改 .MathJax
的 font-size
为 120%
或者更大则能够增大渲染后公式的字号.
从编译后的样式文件中我们可以看到, div#maintoolbar
和 #header-container
确实被设置为了 display: none
.