Jupyter Notebook 更换主题
安装
## PIP
pip install jupterthemes
## Conda
conda install conda
命令行参数
cl options | arg | default |
---|---|---|
Usage help | -h | -- |
List Themes | -l | -- |
Theme Name to Install | -t | -- |
Code Font | -f | -- |
Code Font-Size | -fs | 11 |
Notebook Font | -nf | -- |
Notebook Font Size | -nfs | 13 |
Text/MD Cell Font | -tf | -- |
Text/MD Cell Fontsize | -tfs | 13 |
Pandas DF Fontsize | -dfs | 9 |
Output Area Fontsize | -ofs | 8.5 |
Mathjax Fontsize (%) | -mathfs | 100 |
Intro Page Margins | -m | auto |
Cell Width | -cellw | 980 |
Line Height | -lineh | 170 |
Cursor Width | -cursw | 2 |
Cursor Color | -cursc | -- |
Alt Prompt Layout | -altp | -- |
Alt Markdown BG Color | -altmd | -- |
Alt Output BG Color | -altout | -- |
Style Vim NBExt* | -vim | -- |
Toolbar Visible | -T | -- |
Name & Logo Visible | -N | -- |
Kernel Logo Visible | -kl | -- |
Reset Default Theme | -r | -- |
Force Default Fonts | -dfonts | -- |
切换主题
使用 jt -l
可列出可用的主题名:
jt -l
Available Themes:
chesterish
grade3
gruvboxd
gruvboxl
monokai
oceans16
onedork
solarizedd
solarizedl
使用 jq -t 主题名 -T -N
可以切换主题.
网上很多教程都是
jq -t
, 不加-T
, 默认下, 主题只显示菜单和代码主体. 顶部的header和工具栏toolbar 均不显示.-T
是为了显示Toolbar,-N
是为了显示主题 (参见命令行参数)
使用 jq -r
可以恢复默认的主题.
命令切换主题后,
刷新网页并不起效, 必须退出Jupyter重新运行, 现在通过命令更改样式后, 可以直接在网页刷新了(同时再开别的jupyter2,3,4都会是同一个主题).jupyter notebook
一些主题的截图 ( 别人的 (>_<) ):
chesterish
grade3
gruvboxd
gruvboxl
oceabs16
onedork
solarizedd
solarizedl
monokai
不得不吐槽, 原配的Monokai的配色实在太刺眼了. 而这个配色不能简单地通过命令参数来改变, 只能更改源码. 为了找到合适的值, 找来了sublime里面的monokai-sublime.css
配色方案. 参考了Sublime的背景色和VSCode的背景色, 发现VSCode的背景色还是偏亮的, 适合做边色, 而Sublime的背景色适合做代码背景色.
在Conda里面, monokai的配色文件是: anaconda3/lib/python3.6/site-packages/jupyterthemes/styles/monokai.less
(最好用VS code打开, 可以看到具体的颜色而不是抽象的16进制数值.) 用取色器取了VSCode和Sublime的背景色. 更改以下内容:
/* monokai notebook colors */
@notebook-bg: #2B2B2B;/*1E1E1E;*/
@notebook-fg: #F8F8F0;
@notebook-base: #696969;/*2f2f2f;*/
/* code, text, markdown, & tooltip colors */
@cc-input-bg: #222222;/*#272822;/*#282828;*/
notebook-bg
是整个notebook的背景色, 比较重要. 2B2B2B是偏灰黑色, 自定义的.1D1E1B
是VSCode使用的侧边文件列表栏的颜色.1E1E1E
是原值notebook-fg
是notebook整体的字体颜色.notebook-base
是工具栏或可选栏的颜色.696969
是灰色,取自sublime的tab栏.cc-input-bg
是代码栏背景.222222
是sublime使用的,272822
是vscode使用的,282828
是原来的.
如果使用VSCode编辑, 看起来设置会舒服很多~
VS code编辑文件增长了Notebook的宽度到88%, 另外输出字体(ofs
)太小, 设置到10, 标题(nfs
)和Markdown出来(tfs
)的效果太大, 设小点. 命令:
jt -t monokai -cellw 88% -T -N -ofs 95 -nfs 10 -tfs 105 -fs 105 -lineh 140
## 如果想行间更紧凑, 代码字体小点(笔记本) 可以:
jt -t monokai -cellw 88% -T -N -nfs 115 -fs 95 -altp -tfs 11
## 其中 `-altp` 是改变前面`In [1]`一列提示的显示形式, 切换后会不显示`In [0]`这样可以更窄.
最后的我Notebook变成这样了:
修改版Monokai主题输出到HTML
使用了主题以后, 输出到HTML时发现, 除了背景色和代码背景色是保留了.. 其他语法高亮颜色和原来的缺省主题一致.. 另外, 字体还变小的了, 不太好看.
这个bug 在JT的issues 里面提了2年了也没解决, 看来是没有办法了. 暂时性的解决办法是:
alias notebook="jupyter notebook"
alias notebook-reset="jt -r"
alias notebook-monokai="jt -t monokai -cellw 88% -T -N -ofs 95 -nfs 10 -tfs 105 -fs 105 -lineh 140"
需要集中精力写代码时使用notebook-monokai
切换Notebook, 而需要输出时(包括Jekyll里面的Notebook显示)则使用notebook-reset
切换回原来的主题.