轻量级标记语言:这就是为什么您应该在常规的Markdown上使用AsciiDoc

您可能会从过去的文章中看到,在PCPC.me,我们是Markdown的粉丝。通过学习这种简单直观的格式,您可以轻松创建美观的输出。从PDF到网页,您不起眼的纯文本文件都会变成复杂的文档。

但是Markdown并不是唯一的游戏。还有许多其他类似Markdown的轻量级标记语言,但是具有不同的功能集。其中之一是Asciidoc。如果您喜欢Markdown,但又需要更多功能,则值得考虑。这有一些原因。

“标记语言"到底是什么?

标记语言是一组代码,如果不使用这些代码,纯文本,允许您添加以下一个或多个属性(以及其他属性):

  • 定义文本
  • 结构化文本
  • 描述布局文本
  • 装饰文本
  • 您每天都会遇到的一种标记语言(除非您是隐士)是超文本标记语言或HTML。可为您带来新闻并向您显示电子邮件的网站和应用程序至少部分是使用HTML标记构建的。 HTML使用标签作为标记原始文本内容的机制。例如,考虑以下HTML代码段:

    <body><h1>Introducing HTML</h1><p>Here is a paragraph in HTML... we know it's a <strong>paragraph</strong>because the surrounding \<p\> tags define it as one.</p></body>

    在这里,

    标记指定要跟随的所有文本,直到其结束

    但也请注意标签……这些标签通常用于定义网页的布局,例如多少

    标签将用粗体字体修饰“ paragraph"一词,而

    标签可能都将标题布置(间距)

    某些标记语言(其中的HTML)存在的问题是,手动键入这些标记是一件非常繁琐的事情。与其他语言(例如XML)相比,标签及其属性在整个内容中所占的比例要比文本本身更大!看看下面的DocBook代码片段,这是一种用于创建许多技术出版物的XML方言:

    所有紫色文本代表您需要自己键入的标签。第一段直到该图片的最底部才开始。而且,如果按照DocBook标准没有完全正确地完成操作,您将无法将其转换为通常是最终目标的漂亮PDF文档。

    输入轻量标记语言

    如果您想利用标记语言,例如通过将HTML页面发布到Web或将DocBook文件转换为PDF以便进行打印,则需要执行以下两项操作之一。一方面,您可以通过内外学习这些语言,手工编写它们,然后对工作进行三重检查来投入时间。或者,您也可以将钱投资于一种工具,该工具可以为您管理这些工具的复杂性。

    幸运的是,一些有进取心的开发人员提出了第三个选择。他们创建了新的标记语言,其中包含许多(在某些情况下是大多数或全部)较重的标记语言的功能,但是大大简化了语法。这些“轻量级"语言包括熟悉的Markdown以及Asciidoc,Emac的Org-Mode格式和Mediawiki语法。

    这些语言的一个标志就是它们的“标记"(例如它们)应该要直观。让我们看一下以前用Asciidoc编写的代码段:

    Introducing Asciidoc--------------------Where are the *paragraph* tags? We dont need them... Asciidoc is smart enoughto realize this is a paragraph!

    更具可读性,不是吗?从顶部开始,我们可以将标题标识为带有短划线的“下划线"。如果您是手写的,则可以执行此操作,只需在笔记本页面标题下方画下划线即可。也没有段落标签-Asciidoc认为两个空白行之间没有任何其他标记的任何内容都是“纯文本"段落文本。最后,“段落"一词周围的星号表示粗体。如果您在短信中表示完全相同的意思,请举手。

    “重量级"标记语言通常具有专用的应用程序来为您解释它们。在网络上,是您的浏览器以及可能是网络服务器的将代码转换为华而不实的网页(这是另一种XML方言)。因此,您不必直接与这些文档的源进行交互,只需您的应用向您展示漂亮的外观即可。只有真正的书呆子才会认为自己很美丽。为了获得漂亮的输出,您需要使用处理器。这些应用程序将逐行运行您的标记,并将其转换为其他看起来不错的东西。开发语言本身的相同项目通常会产生与之配套的实用程序。 Markdown项目提供了一个同名的Perl脚本,而Asciidoc的配套程序是用Python编写的。此外,其他转换实用程序将包括对其中某些语言的支持。其中之一就是出色的Pandoc,它将采用Markdown以及轻量级标记的重组文本,Mediawiki和Org-Mode,并将它们转换为PDF,DOCX,ODT等。

    轻量级的标记语言使您可以使用纯文本(地球上最可移植的数据格式)工作,但最终仍会产生美观的输出。现在,您已经确信它的优点,应该选择哪种语言? Markdown无疑是最受欢迎的,并具有其优势(稍后将详细介绍)。但尤其是Asciidoc是一个值得选择的选择。在下一节中,我们将探讨为什么的两个原因。

    比较Markdown和Asciidoc

    创建Asciidoc格式是为了给DocBook带来轻巧的简洁性,其中之一是长格式(尤其是技术性)写作中的常见格式。它的名声之一是它是一对一的翻译,这意味着DocBook中的每个元素在Asciidoc中都有相应的表示形式。下面,我们将比较与Markdown相比Asciidoc的优缺点。

    Markdown的目标是从一开始就为Web编写者提供一种简单的格式。因此,它支持的书写元素(至少是原始实现,请参见下文)集中于自动执行耗时更多的HTML编写方面(例如,列表,除了<之外,还需要

        标签) li>标签)。

        Asciidoc也包含这些标签,但还提供了更高级的DocBook元素,例如警告(例如“ Note:"或“ Info:"标注块)和复杂的表格布局。这并不意味着您需要一直使用它们,但是如果您需要它们,它们将随时可用。

        Markdown的流行开始兴起时,它的一些用户开始遇到上面讨论的一些缺点。因此,这些用户开始开发自己的扩展程序来解决这些问题,例如能够添加表格或脚注/尾注。不久,Markdown出现了许多“风味",其中包括:

      • Github在其托管的项目的“自述"文件中使用的风味。
      • “扩展"风味来自原始Markdown的PHP端口,具有额外的HTML相关功能。
      • 一种名为“ MultiMarkdown"的风味,实现了较长形式的书写的许多功能,包括引用,定义和交叉引用
      • 结果是,您的文档可能需要的元素并非全部都包含在单个样式中。相比之下,Asciidoc不会像Markdown那样遭受零碎的破坏。

        Markdown非常适合快速地将博客帖子从您的脑海移到页面上。但是,它开箱即用,并不是为了构造更长的作品,例如一本书。 Asciidoc是为此目的而设计的,一个示例是其“ include"功能。这些语句使您可以将一个文件的所有内容包含在另一个文件中:

        include::somefile.adoc

        这与“主文档"在字处理器中的工作方式不同。例如,这使您可以将每个章节起草为单独的文件,然后将它们全部“包含"到代表该书的一个文件中。当您处理该“书本文件"时,输出将好像所有章节都直接写入该文档一样。

        Markdown涵盖了大部分用户的所有基础。对于那些只是想写博客或以纯文本格式键入一些注释的人,Markdown支持他们将需要的所有元素。交叉引用对只想创建一个简单的备忘录或网页的用户没有多大意义。您甚至可以将Markdown用于带有简单布局(例如小说)的较长作品,并在最后将它们自己组合。

        由于Markdown可以满足更多用户的需求,因此最终得到了更好的支持条款如下:

      • 所见即所得的编辑器(由至少提供实时预览的编辑器定义)更有可能支持Markdown。
      • 在线服务,例如上述的Github ,更可能直接或通过使用插件接受Markdown。
      • 尽管诸如静态站点生成器之类的发布系统通常支持带插件的Asciidoc,但几乎支持它们现成的支持Markdown。
      • li>

        您愿意尝试使用Asciidoc吗?

        虽然Markdown在轻量级标记语言中是事实上的选择,但Asciidoc包含所有相同的元素,然后包含一些相同的元素。 Asciidoc的其他功能需要一些时间来学习,可能会更好地为您准备更大,更复杂的写作项目。

        您如何看待?您是否对Markdown的简单性感到满意?还是使用Asciidoc诱人的方式创建自己的多渠道发布工作流程?也许您讨厌纯文字,而《 Word》一路为您服务?让我们在下面的评论中知道!

    标签: Markdown 写作技巧