原文链接 🔗 3 Write and Edit(opens new window)

📚 合集|社会科学的纯文本指南(opens new window)


# 使用文本编辑器

如果你打算做一些定量分析,那么你应该使用一个好的文本编辑器。我认为,对于任何需要进行大量修改的高度结构化文档,例如学术论文,这都是适用的。文本编辑器与文字处理器不同,与 Microsoft Word 等文字处理应用相比,文本编辑器通常不需要花费大量精力来使你写的内容看起来像是在打印页面上写的一样。[1] 恰恰相反,文本编辑器注重文字工作的效率,同时能够保存为简单的便携格式,而不是像 .docx 这样的二进制文件格式。下方的截图展示了一个使用纯文本写作的例子。

文本编辑器也可以帮助做到在文字处理器中难以实现的功能,例如,如果你正在编写代码来进行一些统计分析,那么至少,一个高亮关键词和运算符的编辑器会使代码易读性提高。通常情况下,当语法出现错误时(例如忘记右括号、分号或引号),文本编辑器会提示你错误,并实现代码 自动(opens new window) 缩进或整理代码,更高级的编辑器可以使用 linter(opens new window) 更加高效地检查和标记代码风格,以及检查语法错误。如果你正在撰写一篇学术论文或学位论文,其中包含各种类型的数据,尤其是数值数据,那么一个好的文本编辑器可以使论文写作更加容易。正如数据分析由专门的统计应用(而不是文本编辑器)来完成一样,论文排版也应由专门的应用程序来处理,这种应用程序应该能够自动处理参考文献、表格和图片的标签,以及交叉引用和其他各种繁琐的步骤,并且最好能够与其他工具结合使用。

emacs-texted

在 Emacs 中处理本文档的一部分

就像蓝鲸是哺乳动物一样,Emacs(opens new window) 是一个文本编辑器,它完成了我上面提到的各种事情,如果你想要实现这些功能的话,Emacs 可以与其他的应用程序和插件相结合,有效地管理写作和数据分析。如果在编辑器中执行一系列不同的操作感觉很奇怪,那么看看博主 Rekado 对人们使用网页浏览器的方式进行的 有价值的类比(opens new window)

就像许多人将浏览器作为运行 HTML 文档的平台一样,Emacs 也是一个平台,可以将任何东西「合理地」(这需要解释)映射到文本缓冲区。浏览器中的应用程序是用 JavaScript 编写的,Emacs 中的应用程序是用 EmacsLisp 编写的(也称为「elisp」)…... 如果你用过网络浏览器(或观察过有人用他们的网络浏览器)来玩游戏,听音乐,观看视频,阅读和撰写电子邮件,编辑文本(例如在维基百科上撰写),与朋友聊天(或聊聊敌人),阅读文档,安装扩展程序,那么通用工具作为平台的概念你应该就不会感到陌生,而 Emacs 就可以理解为一个提供文本界面(其中一个可以是文件编辑器)的通用工具。

虽然 Emacs 非常强大和灵活,但它也可能令人摸不着头脑。事实上,很多人特别是那些习惯了 Windows 或 macOS 上的标准应用程序的人第一次上手 Emacs,会觉得它非常奇怪和古老。在应用程序发展历史中,Emacs 算是非常古老的,它的第一个版本是 Richard Stallman 在 20 世纪 70 年代写的。因为 Emacs 诞生于计算机早期时代(例如,在开发像样的图形化程序之前,甚至可能在窗口管理器出现之前),所以它并不遵循现代应用程序的许多习惯。与大多数功能强大的文本编辑器一样,Emacs 提供了许多教程资源,需要花时间来学习其特定的约定、调整其设置,并自定义它,每个主要平台都有一些不错的选择。

既然 Emacs 不怎么好用,为什么首先要提到它?一个原因是因为 Emacs 是我使用的编辑器,另一个原因是它适用于所有主要桌面级操作系统平台,还有一个原因是因为它非常非常善于做我想做的事情。有很多很好的理由去使用 TextMate(opens new window) Sublime Text(opens new window) ,而不是 Emacs。同样,在使用 R 进行数据分析时,你可能只想使用 RStudio 环境(opens new window) ,当然,如果你选择这些替代方案,你可能会做得很好。

# 使用 Markdown

当你以纯文本撰写论文时,怎样管理文档的格式、各个章节以及其他相关方面? Markdown(opens new window) 是一种标准化程度很低的纯文本写作格式,它包括有关文档格式的信息,最初由 John Gruber(opens new window) 开发,Aaron Swartz 参与贡献,目的是制作一种简单的格式,可以包含文档的有关结构信息(例如标题和副标题,强调超链接(opens new window) ,列表,脚注等),同时将可读性损失降至最低。HTML 或 这样的格式是更复杂的标记语言,但 Markdown 被设计得非常简单,多年来,它已成为「事实上」的标准。文本编辑器和笔记记录应用支持 Markdown,并且有很多工具可以将 Markdown 转换为 HTML[2] 以及许多其他文档类型。下面是本文档这部分的 Markdown 源代码。

# 使用 Markdown
当你以纯文本撰写论文时,怎样管理文档的格式、各个章节以及其他相关方面? [Markdown](https://en.wikipedia.org/wiki/Markdown) 是一种标准化程度很低的纯文本写作格式,它包括有关文档格式的信息,最初由 [John Gruber](https://twitter.com/gruber) 开发,Aaron Swartz 参与贡献,目的是制作一种简单的格式,可以包含有关文档的结构信息(例如标题和副标题,*强调*[超链接](https://daringfireball.net/markdown),列表,脚注等),同时将可读性损失降至最低。HTML 或 $\mathrm{\TeX{}}$ 这样的格式是更复杂的标记语言,但 Markdown 被设计得非常简单,多年来,它已成为「事实上」的标准。文本编辑器和笔记记录应用支持 Markdown,并且有很多工具可以将 Markdown 转换为 HTML[^2] 以及许多其他文档类型。下面是本文档这部分的 Markdown 源代码。
[^2]: Markdown 最初的目标就是为了输出为 HTML。
1
2
3
4
5
本文档这部分的 Markdown 源代码

上述源代码列出了一些最常见的 Markdown 语法,最明显的是它如何表示标题和子标题(# 是一级标题的符号,二级标题的符号是 ## 等),如何表示超链接,以及如何强调文本。一旦文本以这种格式标记,那么就需要一些软件将其输出为正确而可读的 HTML、PDF 或 Word 文件,这就是 Pandoc(opens new window) 的用途,后面(opens new window) 会详细介绍 Pandoc。

Markdown 有许多版本,或者说是「基于 Markdown 的扩展」,它们已经扩展到管理诸如交叉引用和标签、引用和其他文本元素之类的功能。我推荐使用 Pandoc's Markdown(opens new window) ,它可以处理所有这些功能,这意味着你可以使用 Markdown 以纯文本格式写作,而不必担心引用列表是否完整,或者在文本中改变前后文顺序是否仍然可以正确地交叉引用(例如「图 3」的这种标签)。

# 将 R 与 ESS 或 RStudio 一起使用

你可能会做一些或者大量的定量数据分析,R 是一个统计计算的环境,它有很好的支持,并且在不断改进,拥有一个非常活跃的专家级用户社区。R 附带完整的说明文档,如果觉得这个文档过于简洁,有大量优秀的参考和教学资料,包括 Dalgaard(2008), Venables &Ripley(2002),Maindonald&Braun(2003), Fox(2002),Harrell(2016), Matloff(2011)和 Gelman&Hill(2007)。虽然 R 的核心是一个命令行工具,但它可以很容易地与 RStudio IDE(opens new window) 一起使用,你可以从 R Project 主页(opens new window) 下载 R。

R 可以通过名为 ESS(opens new window) (Emacs Speaks Statistics) 的包直接在 Emacs 中使用,如下图所示,它允许你在一个 Emacs 会话框中处理代码,在下方另一个 Emacs 会话框中进行 R 的交互式运算。因为一切都在 Emacs 中,所以很容易做到,比如使用按键将一大块代码发送到 R。这是一种非常有效的交互式数据分析方法,同时可以构建将来可以再次使用的代码。

emacs-ess-compact

使用 ESS 在 Emacs 中使用 R。屏幕上半部打开的是 R 代码的文档。在分隔符下方,也是在 Emacs 内部运行 R 。顶部窗格中的代码通过键盘快捷键发送到底部,由 R 对其进行评估。还可以跳至底部窗格并在此处进行操作。还可以看到诸如 lint checker、active line highlighting 和 revision-control information 等小细节。

你将在论文中展示你的成果,因此这里也可以说一下应该使用哪种演示软件,你可以使用 Microsoft PowerPoint 或苹果的 Keynote(opens new window) ,或者 直接(opens new window) 从纯文本文档生成 HTML 或 PDF 幻灯片。[3]


  1. 有关文本编辑器相对于文字处理器的优势的更多争论,可以参考 Allin Cottrell 的论辩:Word Processors: Stupid and Inefficient(opens new window) ↩︎

  2. Markdown 最初的目标就是为了输出为 HTML。 ↩︎

  3. 根据你的工作进行演讲的事务不在本文讨论范围之内。但应该注意的是,Google(opens new window) 提供了很多很好的建议。 ↩︎