2024-02-05更新。

草稿

关键概念

这个页面向您介绍了一些当您学习AsciiDoc时会遇到的概念和术语。文档后面将更深入地介绍每个概念。使用此页面作为开始熟悉这些行话的方式。

笔记
Document

在AsciiDoc中,文档代表顶层的块元素。它由一个可选的文档头部和以下部分组成:a) 一个或多个部分,它们可以由一个可选的序言引导,或者 b) 仅由一系列顶层块组成。文档可以通过文档头部进行配置。头部本身不是一个块,但它为文档提供元数据,例如文档标题和文档属性。

元素

一个元素是文档中可识别、可寻址、可组合的内容块。AsciiDoc文档仅仅是它所包含的所有元素的组合。元素是一个类型的层级结构,其中某个元素可能是一系列元素的特化。例如,侧边栏块是一个块元素,因此它共享所有块元素的特性,并且还增添了一些它自己的。元素包括文档本身、部分、块、块宏、分隔符、以及内联短语和宏。块元素是垂直地(通过行)堆叠在其他块元素的上方或下方。块元素通常简称为块。块构成了文档的主要树形结构。内联元素是块元素或其属性(例如,块标题)内的内容跨度。内联元素包括格式化文本(斜体、粗体等)、内联宏和元素引用。填补这些元素之间空隙的是未替换的文本。内联元素比块元素具有较少的结构,因为它们更倾向于替代而不是树形结构。

属性

属性是AsciiDoc语言中用于存储和揭示元数据的名称/值对。属性可以用于影响语法、控制行为、自定义样式、激活或配置集成或存储内联替换内容。属性确实使AsciiDoc与其他轻量级标记语言区别开来。属性实际上是一个抽象术语。属性有两个具体的分类: 1 文档属性和元素属性。

文档属性

文档属性,顾名思义,直接与文档关联。它们用于在运行时导出有关文档的信息、控制处理器的行为以及存储可复用的值或短语。因此,它们是与处理器进行双向通信的一种方式。在内容中可以通过属性引用来引用文档属性(只要属性替换被启用)。文档属性可以在文档中(通常在文档头部)通过属性条目定义,或者通过API或CLI定义。并非所有文档属性都可以被修改。

元素属性

元素属性是指定在具体元素上的元数据,比如一个块元素或内联元素。它们在属性列表中被定义,并且仅适用于那个元素。属性列表的位置取决于元素。属性名可以是字符串(即命名属性)或隐式数值索引(即未命名的、位置属性)。与文档属性不同,元素属性不能直接从内容中的文档模型上引用。换言之,它们不能通过属性引用来解决。元素属性丰富或配置了元素的行为,如应用角色或设置图像的宽度。元素属性是使用元素上的属性列表或可用的简写形式(如块标题行)来定义的。

笔记
Macros

当你阅读这份文档时,你会频繁地看到宏(macro)这个术语的引用。宏是一种代表非文本元素或使用提供的元数据扩展成文本的语法。查看宏相关内容学习更多关于这个术语的意义。这里有一个块宏的例子:

笔记
image::sunset.jpg[Sunset]

这是一个内联宏的例子:

笔记
Click the button with the image:star.png[Star] to favorite the project.

你可以将宏视为一种函数。宏的语法遵循一个名称,一个有时是可选的目标,以及一个属性列表的形式,属性列表由零个或多个元素属性组成,这些属性被包含在方括号内。宏有两种变体:块宏和内联宏。在块宏中,名称和目标被两个冒号(::)分隔,且必须独占一行。在内联宏中,名称和目标由单个冒号(:)分隔,它可以与文本和其他内联元素并列。块宏总是被解析的,而内联宏只有在允许宏替换的地方才被解析。

预处理指令

AsciiDoc中有另一种语法,看起来很像块宏,但它们并不是。这些是预处理指令。预处理指令是一种控制输入解析器的行的功能。条件性预处理指令可以根据属性的存在(ifdef, ifndef)或者其他任意条件(ifeval)来配置包含或排除的行。包含指令可以从另一份文档中添加额外的行到当前文档。预处理指令与块宏有一些共同的特点。像块宏一样,预处理指令必须独占一行。尽管预处理指令可以访问文档属性,但它对其周围的上下文并不了解。它仅仅是一个行处理器。像块宏一样,包含指令可以有元素属性,尽管它们只适用于预处理操作本身。