首发于公众号醒钟


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团队能够及时开发原生的行内数学公式功能,保证多平台同步渲染公式效果,也不必使用各种浏览器插件来暂时补救。