胶水Python

Jupyter Notebook 更换主题

2019-02-04  本文已影响38人  爱折腾的大懒猪

安装

## 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重新运行jupyter notebook, 现在通过命令更改样式后, 可以直接在网页刷新了(同时再开别的jupyter2,3,4都会是同一个主题).

一些主题的截图 ( 别人的 (>_<) ):

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切换回原来的主题.

Reference

  1. Jupyter-themes Github
  2. 更改jupyter notebook的主题颜色(theme) 包括pycharm
  3. Jupyter 主题更换 @月牙眼的楼下小黑 及其的 Jupyter 更新主题后丢失按钮工具栏
上一篇下一篇

猜你喜欢

热点阅读