引言

上一回说道,Markdown 可以使用一些高级用法进一步提升文档的质量和可读性,以完成高要求的复杂文本写作如论文等。

那么,为什么我们需要用 Markdown 来写论文呢?

先总结一下毕业论文的特点:

  • 文本量大,需要几十页甚至几百页
  • 格式要求完全统一,每种段落都有自己的特有格式
  • 图表均需要带有序号,并随章节次序动态调整
  • 参考文献角标编号随顺序调整

那么,Word 可以为我们带来哪些呢?

  • 所见即所得
  • 样式模板设置各级标题及正文
  • 自动生成目录
  • 结合文献管理器自动生成参考文献列表及角标
  • 页面设置及输出 PDF

看起来还不错,但是相应存在的问题是「易分心」和「易崩溃」。分段式的写作调整格式将会成为噩梦,一切超出输入时预想的格式修改,都将消耗掉成倍的时间与精力。一旦输入时没有规范好,写完之后掉过头来修改都会让难度指数式上升。而输入和排版同时进行加大了文件的复杂度,在保存耗时增加的同时使程序易于崩溃,而且在崩溃之后往往无法修复,版本控制也因此变得一团糟。

最令人烦躁的是,当你用 Word 和别人协作的时候,Word 本身就足以成为灾难。以参考文献引用为例,如果你不把 Mendeley 或者 Zotero 的文献库页同步给对方,那么自动生成的标记大概率就会面目全非。

另外还有,无法修改的表格框,因图片而全部被挤到下一页的正文,因富文本粘贴而改变的字体、字号,不知所起的自动编号,不知所云的空格添加,莫名其妙的错误提示,一切的一切都是因为 Word 所见即所得的功能。

所谓成也萧何,败也萧何。Word 归根结底是一个文字编辑软件,而不是一个排版软件,无法做到所见及所得模式下输入和排版的结合。因此,就算不提编辑时”顺眼”的问题,单从实用性的角度,至少 Word 不是一个适用于长文本输入的软件。

既然提到排版和论文写作,怎么可以不提一下 LaTeX 呢?LaTeX 作为极专业的排版软件,可以满足一切你对排版的需求,文本和格式完全分离带来了输入时的”沉浸”体验,对科技类期刊投稿只需要换一个模板而不需要编辑内容,同时 overleaf 堪称最强团队协作软件,免去了本地配置的烦恼,做到了 LaTeX 的开箱即用。

那么,为什么不用 LaTex?

  • 学习成本高
  • 如找不到对应的模板难以自行设计
  • 国内期刊很少提供 LaTeX 模板
  • latex 的本地环境配置难
  • 不能转换成 word

说了这么多,比起 Word 或 LaTex, Markdown 又有什么独特的优势呢?

  • 语法简单
  • 便于版本控制
  • 实时保存,不易崩溃
  • 可转换成 Word 对排版进行补全

而最大的优点是:

来,跟我一起念!

计算机永远不会错!

复制粘贴永远不会错!

自动生成永远不会错!

当然,如果真出了错,那肯定只能是我自己的错……

效果展示

今天重点介绍发布于 github 的 nju-thesis-markdown 项目,作者是 centixkadon.

功能特色

  • 可排版硕士、学士学位论文(学士论文封面、摘要暂未直接生成);
  • 相比 LaTeX 简单多了,兼顾文本文件的版本控制和 Microsoft Word 的编辑功能;
  • 导出的 docx 文件用书签和域来引用,插入图、表、公式导致的编号变化可以直接更新;
  • 导出的 docx 文件可以给不使用 LaTeX 的导师修改;
  • 功能不足的地方可以导出 docx 文件后用 Microsoft Word 补足。

图例

输入文件

封面
摘要首页
代码图片表格
引用脚本
参考文献

源文件

标题摘要和部分正文等
参考文献和致谢等

过程

首先使用 git clone 将仓库克隆到本地。

1
2
3
4
5
6
7
8
9
10
11
12
## sandy @ sandys-Mac-mini in ~ [15:35:29]
$ cd /Users/sandy/Downloads

## sandy @ sandys-Mac-mini in ~/Downloads [15:35:33]
$ git clone https://github.com/centixkadon/nju-thesis-markdown.git
Cloning into 'nju-thesis-markdown'...
remote: Enumerating objects: 202, done.
remote: Counting objects: 100% (202/202), done.
remote: Compressing objects: 100% (119/119), done.
remote: Total 202 (delta 103), reused 173 (delta 77), pack-reused 0
Receiving objects: 100% (202/202), 828.64 KiB | 3.14 MiB/s, done.
Resolving deltas: 100% (103/103), done.

进入目录 nju-thesis-markdown/thesis 并使用命令 pandoc --lua-filter ../src/thesis.lua --citeproc sample.md --reference-doc nju-thesis-reference.docx --output sample.docx .

Windows 为 /path/to/pandoc.exe --lua-filter ../src/thesis.lua --citeproc sample.md --reference-doc nju-thesis-reference.docx --output sample.docx , 在 powershellcmd 中输入,其中 /path/to/pandoc.exe 代表 pandoc 的位置。

1
2
3
4
## sandy @ sandys-Mac-mini in ~/Downloads [15:35:40]
$ cd ./nju-thesis-markdown/thesis
## sandy @ sandys-Mac-mini in ~/Downloads/nju-thesis-markdown/thesis on git:master o [15:38:01] C:127
$ pandoc --lua-filter ../src/thesis.lua --citeproc sample.md --reference-doc nju-thesis-reference.docx --output sample.docx

结论

总之,Markdown 不一定是最好的模式,但可以给你一个新的选择。

Life is short, you need Markdown.

报错

all choices failed

根据lua crash when checking equality of built-in objects #8267|github, 应该是版本过老,出现了未修复的 bug.

引用

  1. GitHub - centixkadon/nju-thesis-markdown: 南京大学学位论文排版工具 (硕士/本科) - Life is short, you need Markdown.
  2. 学术论文写作新武器:Markdown-上篇 | 连享会主页
  3. 如何用 Markdown 写论文? - 少数派