如何配置一个学术写作博客
生命不息,折腾不止。
Hexo
学术写作的博客,自然是要简单朴素的就好。墙裂推荐这个主题:hexo-theme-yuzu
中英文间距
文字平面设计领域,中英文之间有一些间距,读起来就会很舒服。但是,这个所谓的间距并不等同于一个半角空格,而是中文字符的四分之一最好。
使用hexo-filter-text-autospace插件可以为你文章中的中英文自动加入间距。
公式
解决了排版问题,终于可以写一些东西了。目前为止的配置和我写小说的网站一致。纯文字的体验已经足够不错了,但是学术方面的支持还不充分。第一个问题就是Latex公式。
首先安装插件hexo-filter-mathjax。
1 | npm install hexo-filter-mathjax --save |
然后在你喜欢的模板比如@/scaffolds/post.md的元信息里加上一行mathjax: true,代表该文件有公式需要渲染。
图表交叉引用和参考文献
要想让博客变得更加学术,把更多的Latex特性搬进来是个好主意。如果替换原本的Markdown渲染引擎为pandoc,那么交叉引用和参考文献自动生成都变得可行了。
为了达到目的,我们需要使用pandoc的两个组件:crossref和citeproc分别管理交叉引用和参考文献。这些组件的二进制文件的安装放到最后再讲。在此之前请按以下步骤先把hexo部分配置好。
替换Markdown渲染引擎
1 | npm uninstall hexo-renderer-marked |
添加配置
在@/_config.yml里添加如下几行:
1 | pandoc: |
其中GB7714.csl文件是符合GB7714标准的引文格式文件,从这里复制而来。但是我引用的注定都是些英文文献,所有我把第二行的default-locale改成了en-US。这样做的好处就是当作者数量大于3时不会显示“等”而是”et al.”。
bibfile.bib是bib文件废话。
等等,随着时间的流逝,这个文件岂不是会越来越长,变得不好维护?
确实,我也是这么想的。所以,我在@/source/下创建了_bibs/文件夹,单独创建每篇文章的bib文件,只有在生成网站之前cat ./source/_bibs/*.bib >./bibfile.bib合并起来。
如果你觉得filter和citeproc显得很诡异,和网上的其他教程显得格格不入,这是pandoc的版本和该插件难以维护所导致的,网上好多教程已经过时。别急,一会讲到pandoc当前最新版本(2.16.2)的安装方法。
hexo-renderer-pandoc的其他配置参数请根据自身需要自行配置。
安装pandoc
| 项目 | 仓库 | Release page |
|---|---|---|
| pandoc | pandoc | Releases |
| pandoc-corssref | pandoc-corssref | Releases |
Ubuntu的apt仓库默认pandoc版本为2.5,早已过时。 表1列出相关项目与下载地址。
注意 pandoc版本应大于2.14. 这是因为自该版本之后pandoc内部集成了citeproc。详见pandoc-citeproc readme和pandoc 2.14 changelog
注意 请务必保证pandoc-crossref基于与你选择的版本相同的pandoc编译。不然会疯狂报错即使运行正常。
Latex风格换行
在Markdown里,连续行被渲染成段落时,换行符会被保留。
1 | line 1 |
这几行会连续显示,并以空格分隔。
1 | line 1 line 2 line 3 |
对拉丁字母组成的段落来说这没什么问题,但中文句号后再添空格就会破坏原有的美观。因此,我们需要hexo-filter-fix-cjk-spacing插件来删除CJK字符之间的换行符。
注意 使用本插件后标题与后段文字之间总需要空一行。
Fin.