在《7 App Store 操作:翻译发布说明》这篇文章里,我们用到了「替换文本」这个操作去解决一些问题,其中使用了一些和 Markdown、多信息文本、纯文本等有关的知识。当时由于篇幅和内容方向的考虑,没有展开。但是使用这些知识不仅对于捷径来说很重要,对于写作,以及许多其它形式的自动化也都有一定的影响。因此我们需要把它在这里进行进一步地说明。

要理解一个像 Markdown 这样的工具,一个好的方法是追问为什么这个东西会存在,它是为了解决什么问题出现的。在这些问题上,Markdown 有着明确的答案,而且其背后还有一条清晰的源流。

这条源流的出发点是纯文本

在计算机产生初期包括之后的很长一段时间,它的主要目的都不是用于写作排版。因此那个时候,人们在使用计算机的时候,输入的那些字符都是没有「格式」的。没有格式就是说,没有加粗、没有倾斜、没有列表、没有超链接、没有字号、没有颜色……

这种没有格式的文本,就是「纯文本」。但不要误会,这并不是说你打开 Word,然后写了一篇文章,期间没有修改过这些文字的字号等样式,就可以认为组成这篇文章的这些内容是纯文本了。因为 Word 已经对你输入的文字预设了一套样式,比如字号是 12,字体是宋体等等。

所以纯文本的存在条件是,那个编辑文本的软件——我们称为编辑器——本身就不具有赋予文本样式的能力。这样的编辑器有很多,Win 自带的记事本(Notepad)就是其中之一。

因为没有复杂的样式,纯文本的「流通性」或者说「通用性」很好。在一个编辑器里记下来的纯文本内容,换个平台、换个编辑器,也都能正常查看读取,不会有什么差别。

但是,也因为纯文本不带有格式这个特性,它并不适合表达文章所需要的标题、加粗、引用等样式。而为了解决这个问题,我们需要的是「富文本(多信息文本、Rich Text Format)」。

纯文本和富文本对比

从富文本出现的原因就能看出,它是允许我们为其赋予格式的。我们可以在富文本编辑器中,改变文字的字号、颜色、字体,为它加粗,赋予它链接……

然而这也带来了一个问题,那就是当我们复制这些富文本的时候,我们实际上将它们的样式也复制了出来。这样当我们再把这段文本粘贴到其它的地方时,它会根据编辑器的差异或者平台的差异,出现和原来的效果完全不同的样式。

左:备忘录;右:Pages

图片中的应用是 iOS 上的备忘录(Notes)和 Pages,两者都是富文本编辑器,但是 Pages 支持的样式要比备忘录多得多。因此当我们从 Pages 复制内容到备忘录上,就会发现虽然字体也有大小,但损失了很多样式。

也就是说,富文本不具备纯文本的那种「流通性」。这会让编辑文本的人感到懊丧——你辛苦做好的东西,发给对方,对方看起来和你看到的东西不一样。或者你在学校用 Win 的 Word 写好论文,回家用自己的 Mac 打开,想继续写,发现好多地方和自己花心思设计好的样式完全不同……不仅编辑时如此,写作者在使用富文本编辑器写作时,也总会考虑自己的操作会不会影响到接下来的格式。

富文本会导致的精神消耗远不止这些,但是富文本导致的所有问题都有一个共同的核心,那就是我们写作和编辑时不得不考虑格式,不得不应付格式。

富文本最大的好处也成了最拖后腿的地方。但是我们想两者都要,想要纯文本的流通性,还想要富文本的表现。能够同时做到这两点,并且覆盖面极广的方式,就是 HTML(HyperText Markup Language,超文本标记语言)。

HTML 是如何兼具纯文本的流通性,和富文本的表现呢?答案是——用纯文本来表现富文本,用纯文本的方法来指定样式。

怎么做到的?我们来看个例子,比如说我想要引用一句话:

People do not decide their futures, they decide their habits, and their habits decide their futures. —— FM Alexander

如果是纯文本,它就没有大家看到的这种和正文有区别的样式,它会是这样的:

People do not decide their futures, they decide their habits, and their habits decide their futures. —— FM Alexander

那我们怎么用 HTML,把这段文本指定成「引用」的格式?答案是使用标签,像这样:

<blockquote>People do not decide their futures, they decide their habits, and their habits decide their futures. —— FM Alexander</blockquote>

在引用文的前面,我们加了一个 <blockquote> 作为开始,这是在声明「从这开始,我要开始引用了。」随后,我们以带有 /</blockquote> 结尾,声明「引用到这里结束。」

<> 三角括号包着的这部分内容,在 HTML 里叫做「标签(Tag)」。HTML 叫做「超文本标记语言」,「M」代指的「Markup」就是标记的意思,拿什么标记?拿标签(Tag)标记。

以上就是 HTML 如何用纯文本的方式来赋予一段文本样式。大多数浏览器和软件,都能够做到「理解」HTML 语言,将标签转化为格式,赋予文本。我们的捷径,就可以把 HTML 语言转化为富文本(多信息文本),使用的操作是「从 HTML 制作多信息文本」。

当然,这只是一个非常简单的示例,如果我们想让引用的内容看起来有点花样,更加好看,还需要在使用 HTML 的时候配合 CSS(Cascading Style Sheets,层叠样式表)来使用。

我们可以简单做个尝试,你可以做两个捷径,每个捷径都由 2 个操作组成:

尝试 HTML 和 CSS 的操作组合
  1. 文本
  2. 从 HTML 制作多信息文本

随后把下面这两段字符分别复制到捷径里,然后运行这两个捷径,看看效果:

<p>FM Alexander</p>  
    <blockquote>People do not decide their futures, they decide their habits, and their habits decide their futures.</blockquote>

<p>FM Alexander</p>  
    <blockquote style="margin: 1em 1em; padding: 0px 1em; color: #888; border-left: solid #ff7e79;">People do not decide their futures, they decide their habits, and their habits decide their futures.</blockquote>
效果对比

你会发现,下面这一段要比上面的好看一些,有点颜色。你也应该已经发现,你复制的两段字符,后一个比前一个多了点东西。多的那些就是 CSS,是它让样式里有了颜色之类的元素。

篇幅原因,我们就不再针对 CSS 进行展开了,在之后的教程里我们还会再见到它,到时候我们再结合一些实例来具体了解在捷径中如何使用 CSS。

那么我们回到主线。HTML 做到了用纯文本表示富文本,或者说用纯文本的形式,为文本赋予样式。我们在任何一个平台上,用任何一个编辑器,都能打开 HTML 格式的文件。而且用 HTML 写成的文件,在转化为富文本后,在哪个平台上、哪个屏幕上看,基本上都是一样的。完全做到了「写的时候纯文本,看的时候富文本」。

尽管如此,HTML 作为给「写作者」的工具,又有 2 个比较大的问题:

  1. HTML 并非仅为「写文章」而设计。HTML的使命是设计网页,写文章相关的那些标签只是标签的一部分,HTML 里还有大量写作者用不到的标签。
  2. HTML 的标签过长。前面要加个开头,后面要加个结尾,有时候标签加起来比标签里的文本都长(比如说<blockquote>要有光。</blockquote> ),不好记都不说了,关键是写着麻烦,看着也难受。

针对这两个问题,Markdown 出现了。

HTML 的问题是什么?不是为写文章而设计,标签过长。Markdown 怎么解决的?完全为写文章设计,标签不仅短,而且全是符号,世界通用。

来看刚才的例子:

<blockquote>People do not decide their futures, they decide their habits, and their habits decide their futures. —— FM Alexander</blockquote>

这一段引用的 HTML 用 Markdown 怎么表示?在引用文本前面加 1 个 > 大于号就行:

> People do not decide their futures, they decide their habits, and their habits decide their futures. —— FM Alexander

来比一下,<blockquote> + </blockquote> = >

在 Markdown 中,常见的标记与 HTML 对比如下:

样式 Markdown HTML
一级标题 # 文本 <h1>文本</h1>
二级标题 ## 文本 <h2>文本</h2>
三级标题 ### 文本 <h3>文本</h3>
加粗 **文本** <strong>文本<strong>
超链接 [文本](链接) <a href="链接">文本</a>
引用 > 文本
<blockquote>文本</blockquote>
行内代码 `代码`
<code>代码</code>
有序列表 1. 苹果
2. 雪梨
3. 西瓜
<ol>
<li>苹果</li>
<li>雪梨</li>
<li>西瓜</li>
</ol>
无序列表 - 苹果
- 雪梨
- 西瓜
<ul>
<li>苹果</li>
<li>雪梨</li>
<li>西瓜</li>
</ul>

对比之后就能发现 Markdown 中的「标记」是多么简单。我们不需要刻意训练或投入多少精力就能熟练掌握 Markdown。Markdown 也因此流行,成就了 Markdown 编辑器的市场。

现在你应该理解了 Markdown 是什么、怎么来的、为什么会流行了。我们再来捋一捋:

  • 纯文本具有「流通性」,但是没有样式。
  • 富文本虽然有样式,但「流通性」很差。
  • HTML 用纯文本的方式来制作富文本,兼顾了流通性和样式,然而标签太多太长。
  • Markdown 只抽取了 HTML 与文章有关的标签进行简化,易学易用。

最初版本的 Markdown 语言支持的样式比较少,脚注等比较偏门的样式没有覆盖到,因此后面又出现了一些衍生语法。同时,各个文本编辑器中也会使用这些不同的衍生语法,不过这问题不大。因为首先,Markdown 各种衍生语法所使用的那些与文章有关的,最核心的标记,比如标题、加粗、链接、列表等等,都是一致的,普通使用下一般不会意识到区别。其次,正因为 Markdown 是简化了 HTML,所以 Markdown 可以还原为 HTML,在一些编辑器——比如 iA Writer——中还可以和 HTML 共用:

通过 HTML 让元素靠右

以上就是一篇从纯文本到 Markdown 的,面向小白的简单科普。我的目的有两个:

  1. 尽量少用术语地使大家明白
  2. 仅知道足够使用捷径的相关知识即可

在捷径中,我们不会使用到非常复杂的 Markdown,因为它不是个编辑器,我们也不会在这里写文章。我们只是会在这里预设一些局部的内容样式,让它导出内容时看起来更好看。

希望大家读完这篇文章后,再在捷径看到:

  • 用多信息文本(富文本)制作 HTML
  • 从 HTML 制作多信息文本(富文本)
  • 从多信息文本制作 Markdown
  • 从 Markdown 制作多信息文本

这 4 个操作时,能减少陌生感,如果能有意识地使用这些操作,那更是再好不过。

我们也会在之后的教程中通过实例再次详细地让大家认识这些操作的能力,希望大家读到那个部分时能够回想起本章的内容。