学术论文写作新武器:Markdown-上篇

发布时间:2021-04-20 阅读 3001

Stata连享会   主页 || 视频 || 推文 || 知乎

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

作者:初虹 (公众号「虹鹄山庄」创办人)
E-mail20170237402@mail.sdufe.edu.cn

本文源自 「学术论文写作新武器:Markdown」 系列专栏:

学术论文写作新武器:Markdown-上篇
学术论文写作新武器:Markdown-下篇
学术论文写作新武器:Markdown-中篇


目录


1. 写在前面

学术论文的写作工具,除了 Microsoft Word,还有其他的选择吗?我在这期文章 还在用 Word 做笔记?Markdown 开启你更高效工作的第一步! 中推荐了使用 Markdown 作为个人知识体系的书写载体。作为大多数人眼中极轻量的排版工具 —— Markdown 也能实现像 Word 那样丰富的样式效果吗?学术论文的写作也可以使用 Markdown 来完成吗?

答案是 —— 能!  

对于搞学术的人来说,「写论文」是吃饭的本事。一般来说,大家(人文社科领域)都会有自己的写作模板,这个模板通常是 Word 格式,除了论文的基本套路之外,里面还包含了各个标题、摘要、图表等的样式信息。不少经济学实证研究者的论文写作流程是这样的:先通过 Stata 等计量工具以图、表的形式输出结果,粘贴到模板(DOCX)文件中,完成实证部分;再在模板文件的基础上「增删改查」,完成论文其余部分的撰写。内容写完之后,就是对各种样式的「无限」调整了。下一篇论文同样复制上面的流程,一遍又一遍。

论文的写作过程已经着实令人头疼,一篇篇文章格式的调整更是无比麻烦(好吧,一篇都没写出来过)。论文写作我们不能自动化,格式调整的自动化还做不到吗?

接下来就要请出今天的主角 —— Markdown + Pandoc 。二者配合「食用」助你实现 Markdown 写文、Pandoc 一行命令批量格式转换的效果,这回再有一百篇 Markdown 文章也能同一个样式转成 Word 或 PDF 了。

一篇学术论文的格式通常涉及标题、摘要、作者信息、正文、图片(图注和编号)、表格(表注和编号)、脚注、数学公式、参考文献、毕业论文还会有目录、附录等。为做演示,我七拼八凑了一篇、力求长相似经济学实证论文的 Markdown 文章(内容莫深究)

文末提供所有文件的下载链接~~

七拼八凑的、貌似「学术论文」的文章
七拼八凑的、貌似「学术论文」的文章
pandoc -F pandoc-crossref --citeproc `
--bibliography=ref.bib `
--csl=china-national-standard-gb-t-7714-2015-numeric.csl `
--reference-doc=ref.docx `
-M reference-section-title="参考文献" -M link-citations=true `
ref.yaml `
test_paper.md -o test_paper.docx

注:这里的反点号起到折行的作用,可不写,那样就会呈现在同一行上。

上面的 Pandoc 语法是本文转换流程的完整命令。这能实现何种效果呢?往下看

怎么样?还不错是嘛。这行命令具体啥意思、还需要哪些准备工作?别急,我们一步步来!

2. 什么是 Markdown

又到了这个老生常谈的问题了。自从遇到了 Markdown,感觉写作明显轻快了不少,也常常安利,奈何号召力有限,身边真正去用的还真不多。既然要用 Markdown 写学术论文,首先你得先弄明白什么是 Markdown。

计算机常见的文件格式主要分为两种:纯文本文件(Plain Text)和二进制文件(Binary File)。

最直观来看,纯文本文件可以直接用「记事本」打开,如常见的代码文件(.c/.py等)、文本文件.txt和接下来要介绍的 Markdown .md文件等。纯文本文件不保存任何格式设置、仅显示字符内容,因此无法展示样式信息。格式分明、样式丰富的二进制文件往往需要专业的软件来编写、浏览和维护,内存空间占用更大。常见的格式有多媒体文件(图片、音视频)、可执行程序.exe等;值得注意的是,我们日常见得最多的 Word 文档也属于二进制文件。

不过,对纯文本文件(如 MD)进行「版本控制」要比二进制文件(如 DOCX)容易的多。版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。进行版本控制不仅有利于「版本回退」、更会让你了解内容发生了什么样的变化,同时在文件备份、团队协同方面的作用更明显。

除此之外,也正是由于纯文本文件仅显示字符的特性,使其具有占用内存小、打开速度快等优点,在计算机世界被广泛使用。也因此出现了各种各样的 标记语言(Mark-Up Language),以使纯文本文件更加易读。

Markdown 便是众多标记语言中的一员。它允许人们使用易读易写的 「纯文本格式」 编写文档,然后转换成有效的 HTML 格式。由于 Markdown 轻量化、易读写的特性,以及对于图片、图表、数学公式的良好支持,目前 Markdown 已被广泛应用于各大网站和帮助文档的撰写中。其基本语法相当简单,十分钟即可快速上手,不了解的童鞋建议直接看看下面的介绍

3. 为什么选择 Markdown

除了上面介绍的语法简单容易上手、可进行版本控制等优点之外,我们在思考「为什么选择 Markdown」时,更应该想想「为什么不」选择其他编辑器?比如,Word、LaTeX。

从刚接触电脑那会儿,我们便与 Microsoft Word 「不期而遇」。凭借其广泛的流行性,Word 毫无疑问成为大多数人日常学习工作中使用频率最高的软件之一。那为什么不选择 Word 呢?

「流行不代表好用」。即使使用频率高,我们也深受其苦。Word 的「内容和格式分离」设计使得我们很容易不自觉地调整文章格式、打断写作的连贯性。或许用 Word 写几页的文档或许还能忍受,但是几十、上百页的毕业论文都用 Word 完成,不是我们先受不了,恐怕 Word 也会先「罢工」。

「易分心」和「易崩溃」的双重叠加足以促使我「不得不」选择新工具。

LaTeX 作为极专业的排版软件,为什么不选择它呢?

原因也正在于它「引以为傲」的优点 ——— 过于专业、学习曲线太陡峭。当然,除了 LaTeX 上手难度高的因素外,目前国内人文社科领域尚未形成使用 LaTeX 的氛围是更重要的原因。当下该领域绝大多数期刊对审稿稿件的格式要求以 Word 和 PDF 为主,提供 LaTeX 模板的期刊极少。在个人写作中,优雅的 LaTeX 带给自己「沉浸」的体验;不过一旦放到团队协作的模式中,怕是会用 LaTeX 的也没几个,交流成本将大幅提高。

4. Markdown 编辑器 —— VScode

确定了语法,还需要一个写作载体——编辑器。我在这期 推文 中介绍了 马克飞象StackEditEditor 等几个在线 Markdown 编辑器和两个本地编辑器(均可全平台使用)—— TyporaVisual Studio code

如果你没有插入参考文献的需求,Typora 应该是极佳的选择。但对于学术研究者而言,使用文献管理软件(这里仅以 Zotero 为例)插入引文是常事,那更推荐能与 Zotero 联动的 VScode 来解决这一学术论文写作的棘手问题。不过如果你使用的是 macOS 系统,Typora(或其他 Markdown 编辑器)也不错,因为搭配 ZotHero(一个 Alfred Workflow)可实现全局搜索 Zotero 数据库并快速复制引文。考虑到全平台性,本文仅以 VScode 为例。

关于 VScode,可以在其 官网 下载;或使用「包管理器」一键安装choco install vscode。关于「包管理器」的具体使用,可以参阅我的个人公众号推文虹鹄山庄 |「一行代码」打通软件的安装的所有需求:Windows 系统缺失的包管理器 Chocolatey备用地址 | 少数派

软件初始界面默认语言为英文,需要的话,可以在扩展市场搜索安装 中文汉化扩展。除此之外,虽然 VScode 原生支持 Markdown,但是想要获得更地道的体验,还是得安装几个 Markdown 插件,实现实时预览、快捷操作等更优质的体验。

5. 格式转换的「瑞士军刀」:Pandoc

到这里,Markdown 部分就介绍差不多了,其准备工作也基本完成了。或许你也对简单易用的 Markdown 感兴趣了。那么问题来了。我们写好的论文需要传给不使用 Markdown 的老师同学们查看、批阅或者交给期刊编辑们审阅,那 .md 格式就不好用了,有解决之道吗?

Markdown 格式的文件转换为 Word 或 PDF 格式就轮到另一员大将出马了,它就是 —— Pandoc,专为各种文本文件「换马甲」。

5.1 Pandoc 是什么

Pandoc 是加州大学伯克利分校哲学系教授 John MacFarlane 于 2006 年使用 Haskell 语言编写的一款跨平台、自由开源及命令行界面的标记语言转换工具。由于支持的格式众多,Pandoc 也被誉为文本转换界的「瑞士军刀」。点击 这里 你将会看到那张著名 Pandoc 支持的文件格式图。

5.2 下载安装

进入 Pandoc 官网,按需选择对应的版本,点击下载安装即可。除了下载安装包的形式外,更推荐使用「包管理器」一键安装。

  • Windows 系统:choco install pandoc / scoop install pandoc / winget install pandoc
  • macOS 系统:brew install pandoc

安装成功后,可在 ** CMD 或 PowerShell 等命令行窗口** 输入 pandoc -v 查看版本信息,检验是否正确安装。

之后我们使用 Pandoc 的所有操作都基于命令行进行。

5.3 基本使用

好了,我们先和这个「百变魔王」简单过下招儿。

  • 查看帮助文档:pandoc --helppandoc -h
  • 查看支持的输入格式:pandoc --list-input-formats
  • 查看支持的输出格式:pandoc --list-output-formats
  • 基础使用:
pandoc -f 输入格式 -t 输出格式 输入文件名 -o 输出文件名

# 比如将当前目录下 Markdown 文件转换为 DOCX 文件
# pandoc -f markdown -t docx test.md -o test.docx

Pandoc 可自动根据文件名后缀判断文件类型,所以上述命令可简化为:

pandoc 输入文件名 -o 输出文件名

# Markdown → DOCX:pandoc test.md -o test.docx
# DOCX → PDF:     pandoc test.docx -o test.pdf
# IPYNB → HTML:   pandoc test.ipynb -o test.html

看到了吗?「一行代码」便能实现巨多种文件格式的快速转换,这仅是 Pandoc 的基本功能,若想实现更炫酷的玩法,还得接着往下看~~来个实际场景试试:转换下我文章开头说的「七拼八凑」的学术论文~

pandoc test_paper.md -o test_paper.docx

这是最简单的、不加任何修饰的 Markdown 转 Word,效果怎样呢?

嗯,还可、不过并不美观。最需要调整应该是各个标题的颜色、显示位置、大小(当然,表注、交叉引用编号、参考文献等进阶样式需要特殊语法)。如果仅是格式转换,到这儿或许可以了。但是想要符合学术论文写作的需求,还得再做进一步修改。

到这里,或许你即将被劝退,说好的用 Markdown 写论文,到这里还仅在准备阶段?!莫慌,为了让大家对整个流程有更深的理解,我用不少篇幅介绍了背景知识,相信我,接着看下期,好戏来了!你会发现有 Pandoc 加持的 Markdown,战斗力早不可同日而语。

下载地址:FavourHong蓝奏云 | https://honghujun.lanzous.com/iiDBLo6mp7e

6. 参考资料

7. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh Markdown
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh