如何配置一个学术写作博客

生命不息,折腾不止。

本文内容已经过时,更新信息请移步这里

Hexo

学术写作的博客,自然是要简单朴素的就好。墙裂推荐这个主题:hexo-theme-yuzu

中英文间距

文字平面设计领域,中英文之间有一些间距,读起来就会很舒服。但是,这个所谓的间距并不等同于一个半角空格,而是中文字符的四分之一最好。

使用hexo-filter-text-autospace插件可以为你文章中的中英文自动加入间距。

公式

解决了排版问题,终于可以写一些东西了。目前为止的配置和我写小说的网站一致。纯文字的体验已经足够不错了,但是学术方面的支持还不充分。第一个问题就是Latex公式。

首先安装插件hexo-filter-mathjax

1
npm install hexo-filter-mathjax --save

然后在你喜欢的模板比如@/scaffolds/post.md的元信息里加上一行mathjax: true,代表该文件有公式需要渲染。

插件GitHub地址

图表交叉引用和参考文献

要想让博客变得更加学术,把更多的Latex特性搬进来是个好主意。如果替换原本的Markdown渲染引擎为pandoc,那么交叉引用和参考文献自动生成都变得可行了。

为了达到目的,我们需要使用pandoc的两个组件:crossrefciteproc分别管理交叉引用和参考文献。这些组件的二进制文件的安装放到最后再讲。在此之前请按以下步骤先把hexo部分配置好。

替换Markdown渲染引擎

1
2
npm uninstall hexo-renderer-marked
npm install hexo-renderer-pandoc

添加配置

@/_config.yml里添加如下几行:

1
2
3
4
5
6
7
8
9
10
11
12
13
pandoc:
extra:
- filter: pandoc-crossref
- csl: "GB7714.csl"
- bibliography: "bibfile.bib"
- citeproc:
meta:
- link-citations: true
- reference-section-title: "参考文献"
- figureTitle: "图"
- figPrefix: "图"
- tableTitle: "表"
- tblPrefix: "表"

其中GB7714.csl文件是符合GB7714标准的引文格式文件,从这里复制而来。但是我引用的注定都是些英文文献,所有我把第二行的default-locale改成了en-US。这样做的好处就是当作者数量大于3时不会显示“等”而是"et al."。

bibfile.bibbib文件废话

等等,随着时间的流逝,这个文件岂不是会越来越长,变得不好维护?

确实,我也是这么想的。所以,我在@/source/下创建了_bibs/文件夹,单独创建每篇文章的bib文件,只有在生成网站之前cat ./source/_bibs/*.bib >./bibfile.bib合并起来。

如果你觉得filterciteproc显得很诡异,和网上的其他教程显得格格不入,这是pandoc的版本和该插件难以维护所导致的,网上好多教程已经过时。别急,一会讲到pandoc当前最新版本(2.16.2)的安装方法。

hexo-renderer-pandoc的其他配置参数请根据自身需要自行配置。

安装pandoc

1: PandocPandoc-crossref下载地址
项目仓库Release page
pandocpandocReleases
pandoc-corssrefpandoc-corssrefReleases

Ubuntuapt仓库默认pandoc版本为2.5,早已过时。 1列出相关项目与下载地址。

注意 pandoc版本应大于2.14. 这是因为自该版本之后pandoc内部集成了citeproc。详见pandoc-citeproc readmepandoc 2.14 changelog

注意 请务必保证pandoc-crossref基于与你选择的版本相同的pandoc编译。不然会疯狂报错即使运行正常

Latex风格换行

Markdown里,连续行被渲染成段落时,换行符会被保留。

1
2
3
4
5
6
7
8
9
line 1
line 2
line 3

// 将被渲染为

<p>line 1
line 2
line 3</p>

这几行会连续显示,并以空格分隔。

1
line 1 line 2 line 3

对拉丁字母组成的段落来说这没什么问题,但中文句号后再添空格就会破坏原有的美观。因此,我们需要hexo-filter-fix-cjk-spacing插件来删除CJK字符之间的换行符。

注意 使用本插件后标题与后段文字之间总需要空一行。

Fin.

0条搜索结果。