我为什么喜欢这些标记语言

3 位读者喜欢这篇文章。
Typewriter keys

原始照片由 Bob Doran 通过 Flickr 提供。由 Rikki Endsley 修改。 CC BY-SA 2.0。

大约在去年的这个时候,我为本专栏撰写了一篇关于各种标记语言的简短介绍。最近,语言选择的话题被多次提及,因此我认为现在可能是时候以更公开的偏见重新审视这个问题了。我在这里解释为什么我喜欢我使用的语言,而不是为您规定任何东西。毕竟,我不是医生。

一位同事询问了我对一篇比较 reStructuredText 和 Markdown 用于技术文档的文章的看法。我公司的文档是用 reStructuredText 编写的,并使用 Sphinx 渲染,但我时不时地发出声音,想转向类似 DocBook XML 的东西。对我来说,reStructuredText 处于反金发姑娘区,它不像 Markdown 那样超级简单,但也不像 DocBook XML 那样丰富。它的亮点在于使用 Sphinx 为 Python 自动生成模块文档

最近,Copyleft Guide 的主要维护者宣布他打算从 LaTeX 切换到 CommonMark 或 AsciiDoc。由于从未使用过 AsciiDoc,我对自己如此强烈地支持它感到有些惊讶,但随着我进行了后续对话,我意识到它非常适合类似书籍的文档。

“将内容与呈现分离,”他们说。像 DocBook 和 AsciiDoc 这样的语言允许作者说,例如:“这是一个 GUI 按钮。” 它最终可能会以粗体呈现,但您不仅仅添加 <em> 就完事了。内容与呈现分离;例如,像 Asciidoctor 这样的渲染工具使用层叠样式表 (CSS) 来控制呈现。

我在类似书籍的文档中最喜欢做的事情是包含标注。警告、提示等对您的读者来说是很重要的功能。在大多数情况下,读者最终会浏览本书的某些部分,要么是因为他们正在寻找特定部分,要么是因为您的散文太无聊而他们失去了兴趣。标注特别重要的部分有助于确保读者获得您真正、真正想让他们知道的信息。此外,它们为文本墙添加了很好的中断。公平地说,reStructuredText 对这些有一些支持,但我从未能够使它们像我希望的那样漂亮或在源代码中那样明显。

现在还有什么我没有赞扬的?Markdown。可怜的 Markdown。别误会我,我喜欢 Markdown。这篇文章就是以 Markdown 格式提交给编辑的。我在学校的讲课笔记是用 Markdown 写的。它非常容易边写边读,并且易于阅读源代码形式。对于简短的独立文档,Markdown 是最好的。

但是编写 Markdown 的容易性与 Markdown 的最终(缺乏)力量相矛盾。除非您嵌入大量 HTML(那样您还不如不使用 Markdown),否则您将无法获得在长篇材料中变得更重要的许多语义丰富性。选择 Markdown 来处理所有事情是很诱人的,因为它降低了贡献的门槛,但是当选择让开发人员或用户(在这种情况下是作者和读者)的生活更轻松时,成功的项目往往会偏爱用户。

就是这样。文档语言不是万能的,因此为正在编写的文档选择合适的语言至关重要。

在评论中告诉我你为什么喜欢你选择的语言。

User profile image.
Ben Cotton 受过气象学家的培训,但天气是一项很棒的爱好。Ben 在红帽公司担任 Fedora 项目经理。他是《开源项目项目管理》的作者。在 Twitter (@FunnelFiasco) 或 FunnelFiasco.com 上找到他。

12 条评论

我不喜欢 Markdown,因为它有歧义。任何难以解析的标记都难以理解。

我很好奇您认为与其他标记语言相比,Markdown 语法有哪些歧义之处。仅仅是因为 `**` 不如 `<b>` 表达力强吗?

回复 by Shawn H Corey (未验证)

我必须看看这里的不同建议。大约一年前,我将工作和其它方面的所有笔记都切换到了 Markdown。然后我使用 pandoc 在项目或年底将其转换为 PDF。对于更长的内容,我使用 LaTeX。当我将我在工作中的所有笔记(包括图片)从 OneNote 转移到 Markdown 时,我从 800 多 MB 减少到不到 800 KB。

当我读研究生时,我所有的笔记都是用 Markdown 写的。在每个单元结束时,我会将笔记渲染成 HTML,打印出来(是的,就像“死树”一样),并用它来学习。除了我的论文数据外,我整个研究生生活的所有内容都装进了几十兆字节中。

回复 by jimmysjolund

我的看法完全相同:“文档语言不是万能的,因此为正在编写的文档选择合适的语言至关重要。” 标记语言就像任何工具一样。您可以将一种语言硬塞到一项不太适合它的任务中,但这很像试图用螺丝刀锤钉子。您或许可以做到这一点,但并非不费力气和咒骂。结果也可能很难看。

我在 Word Perfect 的“显示代码”功能上磨练了文档编辑技巧,我发现直接使用语义 HTML 往往最适合我。我使用文本编辑器用 HTML 编写了所有的大学论文,现在仍然用原始 HTML 完成所有文档。优点包括向后兼容性(我仍然可以毫无问题地查看/打印我 90 年代后期的论文),无需任何工具即可转换为 HTML,语义相当简单,并且内置了广泛的标记,用于列表、侧边栏、标题、表格等。每种其他标记语言(好吧,也许 DocBook 除外)都让我不得不查阅文档以检查语法,只要我想做一些超出基本知识的事情。

我遇到的唯一棘手的部分是做脚注/尾注,但我拼凑了一个小 JavaScript,将内联脚注 span 元素转换为尾注(脚注更复杂,因为它们需要打印样式表)。

我觉得 markdown 很棒,直到您开始想要覆盖布局。我认为在使用 markdown 时存在一种不成文的协议:您承诺不考虑最终的格式和布局。如果您背叛了该协议,那么您将承担使用 markdown 的后果。

这或多或少是我对大多数预制解决方案的看法;为了方便,您牺牲了灵活性。这不是一件坏事,只是在采用之前需要注意的事情。

我认为我写下的每一个想法,只要涉及超过三行文本,都不可避免地会经历一个用 Markdown 编写的时期,或者至少,我会给它一个 # 标题和一些 * 项目符号。我还倾向于在我写的东西中添加 *各种* 形式的 _强调_,无论它是否会被渲染成任何东西。如果它变得足够长,以至于我认为它正在变成比给自己或电子邮件的注释更多的东西,并且变成我可能会发布的东西,我几乎总是在它完成一半之前就最终转换为 HTML。不同的人以不同的方式经历他们的创作过程(这可能与拖延症不同,也可能没有不同);对于我发布的东西,我的方式总是涉及在文本完全写完之前就玩弄渲染输出。

我同意你的看法。即使我做的非正式笔记只是为了记录正在发生的事情,以便我以后可以进行实际的撰写,即使不是有效的 Markdown,也已经非常接近了。我注意到,即使我手写的笔记,现在也明显带有 Markdown 的风格。

回复 by Jason B

Markdown:小小的标记语言,潜力无限。 ;-D

我已经成为它的一个分支 multi-markdown 的忠实粉丝。额外的语法仍然足够简单,可以直接编写,而无需担心它的外观,生成的输出本身看起来也很不错,并且可以在最终输出为 HTML、EPUB、PDF 或任何其他格式之前通过任何数量的工具轻松调整。非常适合编写那些长文档,而不会让您陷入学习另一种标记语言的困境。

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.