首发于公众号醒钟。
Notion“万物皆可block”的概念使其非常适合构建个人wiki,但因为始终缺乏行内数学公式的支持,对多数理工科学生而言,Notion反而显得格外鸡肋。
为此,本文介绍了通过浏览器插件曲线救国的解决方式,在此分享给大家。
行内数学公式的渲染
这个Github项目制作了网页端脚本,通过油猴插件加载后即可使用,其公式语法与LaTeX语法相同,只需将公式包裹在两个美元符号之间就可以。
具体步骤如下:
- 安装Violentmonkey.
- 点击插件,然后点击加号,新建一个脚本
- 复制粘贴仓库中的 notion-inline-latex.js
- 刷新Notion界面
如果需要行间公式的话,可以根据自己的需要把这两行的注释去掉。
这种方法要保证页面里至少有一个Notion自带的math block. 正在编辑的公式不会被渲染,大约在三秒钟之后公式才会被渲染。
这个方法只改变了浏览器端的公式渲染结果,没有改变真正的内容。也就是说在移动端打开依然无法显示公式,从Notion自带的PDF导出中也无法显示数学公式,只能显示美元符号包裹的语法。
打印网页以导出PDF
基于以上的原因,如果我们想要从Notion中直接得到渲染好的PDF文件,可以直接从chrome里打印网页。在打印机一栏中选择Microsoft Print to PDF即可输出已经渲染好的PDF文件。
注意:为了获得较好的输出效果,这页不能使用icon,侧边栏要收起,不要勾选打印选项中的“页眉和页脚”。
修改CSS以获得更好的效果
Notion自身提供了三种字体样式,分别是无衬线、衬线和等间距字体。
为了可以获得更类似于LaTeX的输出效果,可以修改CSS文件来修改字体。下面提供的代码修改了衬线字体,即把Notion的Serif模式中的英文字体改为CMU Serif系列,并把中文楷体修改为宋体。
首先,我们需要下载一个chrome浏览器插件,这里我使用了Stylus. 新建样式表文件并且使其应用于域名www.notion.so和notion.so.
然后粘贴以下代码:
@font-face {
font-family: 'KaiTi';
src: local('宋体-PUA');
}
@font-face {
font-family: 'STKaiTi';
src: local('宋体-PUA');
}
@font-face {
font-family: '华文楷体';
src: local('宋体-PUA');
}
@font-face {
font-family: 'KaiTi_GB2312';
src: local('宋体-PUA');
}
@font-face {
font-family: '楷体_GB2312';
src: local('宋体-PUA');
}
@font-face {
font-family: "Lyon-Text";
src: local('CMU Serif Roman');
font-style: normal;
font-weight: 400;
}
@font-face {
font-family: "Lyon-Text";
src: local('CMU Serif Italic');
font-style: italic;
font-weight: 400;
}
@font-face {
font-family: "Lyon-Text";
src: local('CMU Serif Bold');
font-style: normal;
font-weight: 600;
}
@font-face {
font-family: "Lyon-Text";
src: local('CMU Serif BoldItalic');
font-style: italic;
font-weight: 600;
}
.notion-frame .katex {
padding-right: 32px;
font-size:16px;
}
其中最后两行代码是修改数学公式的字号大小的。修改之后打开Notion侧边栏的Small Text选项,使得正文和行内数学公式大小一致。
由于CSS文件中要求使用了local的字体,用户需要首先保证自己的电脑里有CMU字体和相应的宋体。可以由此下载Computer Modern Unicode Fonts,当然也可以根据自己的喜好选择不同的字体。
最终效果一览:
总结
使用这样的方法,可以暂时填补Notion不支持行内公式的空白,但效果依旧只能说是差强人意。
非常期待Notion团队能够及时开发原生的行内数学公式功能,保证多平台同步渲染公式效果,也不必使用各种浏览器插件来暂时补救。