本文用简明的样例,介绍如何使用 Markdown 和自动化工具帮你处理数学公式、参考文献引用、图片交叉索引等学术论文写作中常见的棘手问题。快来试试吧。

苦恼

自从我学会了如何在数字文档上用红笔写写画画,跟学生合写文章和指导毕业论文的工作就变得轻松多了。


null


有的部分,学生会很快改完反馈给我。但是我发现每次对引言和文献综述部分做出调整要求,学生们的反馈都非常慢。

有的时候,学生甚至会求饶,「老师,参考文献顺序能不能不动?或者全文都确定下来再统一做?每次调整一个,就需要很长时间!」

我一时惊愕,为什么需要那么久?

后来才明白,他们居然是在 Word 中一条条手动插入尾注,来引用参考文献的。尾注的内容有的直接搬过来,有的手动输入,结果参考文献列表的格式「丰富多彩」——有的信息不全,有的格式根本就不符合 GB/T 7714-2015 的规范。

在我的帮助下,许多学生学会了使用 NoteExpress、Endnote、Zotero 和 Mendeley 等工具,用自动化方式管理和引用参考文献。

但即便是这样,效率依然不够高。尤其是跟别人协作的时候,参考文献引用的修改就成了噩梦。

你可能需要每次都把 Mendeley 或者 Zotero 的文献库同步给对方,否则自动生成的引用标记就容易乱掉。

写作学术论文时,你还不得不时常面对图表交叉引用、数学公式和脚注等问题。如果方法不当,会把宝贵的时间和注意力耗散掉,劳而无功。

Word 编辑器用来写学术论文,可能真的并不是最优方案。

但是没办法,国内学术界,尤其是人文社科领域,目前投稿模板还主要是 Word 的。

好消息是,即便是形成 Word 文稿,效率也是可挖掘的。

我平时写作学术论文的时候,用的依然是让人喜欢的标记语言——Markdown。对,你没听错,它不光可以帮你写公众号、做幻灯,也可以写论文哦。

通过本文,我把自己用 Markdown 写作学术论文的流程分享给你。希望看过之后,能帮助你提升效率,带来更多愉悦的写作体验。

方案

我的方案,是采用 Markdown 来写作内容。然后用文档格式处理界的瑞士军刀 Pandoc,把内容转换成 Word 格式。

Pandoc 实在是黑科技。我曾经用它给你演示了 如何把思维导图秒变成幻灯。还记得其中这张图吗?


null


图中每一个节点,都是 Pandoc 支持的一种文档格式。Markdown、Docx、PDF、LaTeX、ePub、HTML …… 基本上涵盖了我们常见的发布格式需求。

一次写作,多种格式发布。听起来是不是很兴奋呢?

要使用这一方案,我们需要安装一些必要的工具。这就开始吧。

环境

我们需要安装以下几样东西:

  • Python 运行环境;

  • Pandoc;

  • Atom编辑器;

  • 样例文件夹。

下面我们一一介绍安装方法和注意事项。

Python环境

我们的演示中,需要用到 pip 等 Python 环境工具。最简便的方法是安装 Anaconda 套装,这样就不必对各种组件一一手动调整安装了。

请到 这个网址 下载最新版的 Anaconda。下拉页面,找到下载位置。根据你目前使用的系统,网站会自动推荐给你适合的版本下载。我使用的是 macOS,下载文件格式为 pkg。


null


下载页面区左侧是 Python 3.6 版,右侧是 2.7 版。请选择 2.7 版本。

双击下载后的 pkg 文件,根据中文提示一步步安装即可。


null


Pandoc

请到 这个网址 下载 Pandoc。


null


根据你的操作系统,下载对应的版本。我在 macOS 下,需要下载其中的 pkg扩展名安装包,双击安装。

为了处理图形的交叉引用,我们需要添加一个 pandoc 插件。

在终端(macOS, Linux)或者命令行(Windows)下,执行:

pip install pandoc-fignos

正常安装后,pandoc 就算准备好了。

Atom编辑器

请到 这个地址 下载 Atom 编辑器。网站会根据你的操作系统,自动找到对应的版本供你下载。


null


因为我用的是 macOS,所以这里网站提供的是苹果版本 Atom。

下载之后,安装运行。然后你需要安装 1 个插件,帮你预览 Markdown,叫做 markdown-preview-enhanced

安装方法如下:

使用 Cmd + , 呼叫配置菜单。注意我这里说的是苹果系统 macOS 上的操作。如果你用的是 Windows,请把所有出现的 Cmd 按键替换为 Ctrl 按键,或者查阅帮助文档。


null


选择左侧边栏的最后一项 + 号,用于安装新的插件。


null


在搜索框中输入该插件的名字:markdown-preview-enhanced,点击搜索结果中该插件的 Install 按钮。

很快,插件安装好了。


null


这样,我们就可以实时查看 Markdown 的预览效果了。

样例文件夹

我专门为这篇教程,准备了一个 github 项目。

请从 这个位置,下载压缩包,之后解压。


null


把其中的 demo.md 文件拖动到 Atom 编辑器中,就可以正式开始我们的探索之旅了。

基础版本

Atom 编辑器里,demo.md 文件显示如下。


null


左侧是 Markdown 源代码,对应的预览效果在右侧显示。

这里我们只包含了最简单的文本和图片。图片在我们刚刚下载文件夹的 /assets 子目录中。

到终端下,采用 cd 命令进入咱们的演示文件夹(我的在 ~/Downloads/demo-scholar-markdown-docx-master),执行:

pandoc demo.md -o demo.docx

可以看到,当前文件夹下,生成了 demo.docx 文件。

打开 Word 文件,内容是这样的:


null


基础版本的格式转换,就是这么简单。下面我们就要添加一些内容,让文稿变得愈加有学术色彩。

数学公式

我们尝试插入数学公式。

在 Markdown 下,可以直接使用 LaTeX 数学公式。你只需要负责键入符号,Pandoc 负责将其转换成漂亮的公式显示在 Word 中。

如果你对 LaTeX 数学公式的输入不是很熟悉,不要紧,这里有个小抄(cheatsheet),你可以参考。

我们打开 demo-math.md,可以看到这次除了刚刚的内容,还增加了一个新的部分,叫做「数学公式」。

内含一个经典物理学公式,还有相应的变量解释。


null


在右侧预览区里面,我们看到了公式预览的效果。

回到终端下执行:

pandoc demo-math.md -o demo-math.docx

这次生成的 docx 文件如下图所示:


null


转换后的 word 文件里,不论是独立公式,还是行内数学符号,都显示正常。

脚注

写学术论文的时候,经常需要加入脚注。例如在首页需要添加作者和基金支持信息之类。咱们也尝试在本部分加入对应内容。

打开 demo-footnote.md,对比一下添加了哪些信息。


null


脚注用 [^1] 来表示。内容用同样的符号,后接冒号,然后填写具体信息。

这次的预览中,我们看到了脚注的标注,但是脚注内容哪儿去了?

别担心,拖拽右侧的预览窗口,我们就能看到脚注了。


null


但是转换成 word 后,这脚注还在第一页吗?

我们到终端下,执行 pandoc命令:

pandoc demo-footnote.md -o demo-footnote.docx


null


脚注如同我们需要的那样,显示在了首页底部。本部分测试成功。

文献引用

下面我们进入关键阶段——文献引用了。

我们打开百度学术,找几篇跟大数据特性相关的文献。


null


键入检索主题词「大数据+3V+5V」,搜索后的结果如下:


null


点开第一篇,我们看看内容。


null


页面下方有全文链接,我们选择知网。


null


点击 PDF 下载,查看全文。其中包含以下内容,跟咱们这篇文稿的主题相关。


null


我们决定引用这篇参考文献。

回到百度学术的页面,点击引用按钮。


null


在弹出页面中,点击下方蓝色的「BibTex」。


null


如上图所示,该文献的 Bibtex 信息就是这样的一段文本。我们将其拷贝下来,存储到 .bib 文件里。

依此类推,我们再下载其他两份文献的 Bibtex 信息。

你可以打开演示目录内的 myref.bib 文件查看,内容如下图所示:


null


下面我们就要引用这些文献了。

打开 demo-citation.md


null


引用的时候,我们使用 Bibtex 中每条文献信息大括号内的第一个字段,前面加上 @ 符号,用方括号扩起来。需要引用多条文献的时候,在方括号内,对不同文献标记用分号区隔。

我们很容易就发现,参考文献的预览信息是不正确的。

下面我们看看 Pandoc 能否帮助我们将其转换成为正确的 Word 内容。

注意这次需要使用的参数比较多。因为我们不光需要指定参考文献的格式,还得告诉 Pandoc,参考文献数据存储在了哪里(myref.bib)。

pandoc --filter pandoc-citeproc --bibliography=myref.bib --csl=chinese-gb7714-2005-numeric.csl demo-citation.md -o demo-citation.docx

打开转换后的word,看看效果。


null


Pandoc 正确地帮我们把文献的引用标记信息转换成为了上角标,根据出现的顺序自动编排序号。对于多个文献的引用情况,也做了对应的处理。

参考文献列表呢?

我们翻动页面到文末。


null


参考文献列表已经根据 GB/T 7714-2015 的规范自动生成。

将来无论是对文献引用作增删、移动、修改,都可以通过执行上面的一条命令自动更新。非常方便。

图片引用

写作长篇学术论文(例如毕业论文)时,图片可能会有很多。引用起来如果手动编号,将来插入新的图片,就得手动重排许多后续内容,很麻烦。

下面我们尝试在 Markdown 里插入图片标题,并且在文中作交叉引用。

请打开 demo-figref.md,内容如下:


null


注意这里图片使用时,加入了一些新的信息。前面的方括号里面,加上了图标题;后面的大括号,使用 #fig:id 的方式,加入了图的标记。

引用的时候,采用 {@fig:id} 的方式,分别引用每个图形。

注意右侧的预览区,图标记都是原封不动显示的。

为了能够让图片引用的时候使用「图」,而不是「Figure」,我们在文件首部插入4行内容:

---
fignos-cleveref: On
fignos-plus-name: 图
…

预览中,这部分也出现在了文章首部,很难看。


null


我们执行以下的 pandoc 命令,注意此次加入了图片引用处理要求。

pandoc --filter pandoc-fignos --filter pandoc-citeproc --bibliography=myref.bib --csl=chinese-gb7714-2005-numeric.csl demo-figref.md -o demo-figref.docx

这次生成的 Word 里面,图片自动加上了编号。


null


第二张图,序号也符合我们的预期。


null


注意,目前这个图片自动编号的功能对于中文支持还有些问题。例如标题中依然显示为「Figure」,而非我们想要的「图」。不过我们只需要调整替换图标题即可,所有的引用都是正常的。

如果你的学术论文里面有数十或上百张图片,你会立即体会到这种引用方式的好处。

小结

本文我们用一个最小化的样例,介绍了如何在学术论文写作时,利用 Markdown 和 Pandoc 处理以下格式信息:

  • 数学公式;

  • 脚注;

  • 文献引用;

  • 图片引用。

此时再来看我们生成的 Word 文稿,已经变成了这个样子:


null


是不是很有成就感呢?

举一反三,你也可以把这些技巧和方法应用于其他学术文稿的写作中,它们包括而不限于开题报告、结项报告,甚至是科研项目申请书。

希望这些展示,能对你写作学术文稿效率的提升,起到促进作用。

讨论

你平时经常写学术论文吗?用的是什么工具?效率如何?除了本文介绍的方法外,有没有更好的工具和流程推荐给大家?欢迎留言,分享你的思考和经验,我们一起交流讨论。

如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号「玉树芝兰」(nkwangshuyi)。

如果本文可能对你身边的亲友有帮助,也欢迎你把本文通过微博或朋友圈分享给他们。让他们一起参与到我们的讨论中来。(本文转载自 少数派,作者 玉树芝兰)