表格单元格

在表格中,每个新单元格的声明都需要一个单元格分隔符。默认的*单元格分隔符*是垂直条形符号(|)。在单元格分隔符之后输入的所有内容都会包含在该单元格内,直到处理器遇到一个后面跟有另一个垂直条形符号(|)的空格,或者遇到以`|`开头的新行为止。

使用默认单元格分隔符创建表格单元格
|===
[cols="3,2,3"]
|该内容放置在第1列的第一个单元格中
|这行内容以竖条开始,因此这部分内容放在第2列的一个新的单元中
|当处理器遇到一个空格后跟竖条时,它会结束前一个单元格并开始一个新单元格
|===

当处理器遇到另一个 | 时,它会在连续的下一列创建一个新单元格。 一旦处理器到达分配给表的最后一列,它遇到的下一个单元格就被放置在新的一行。 考虑到任何跨度,这些跨度通过cell specifier应用,每一行都由相同数量的单元格组成。

单元格指定符和操作符

一个[.term]cell specifier(单元格指定符)是一个位置属性,直接放置在单元格分隔符前面,代表了分配给单元格内容的位置和样式属性。在下面的例子中,一个水平对齐操作符和样式操作符已经被分配给第一个单元格的指定符。

使用单元格指定符 [source#ex-specifier]

[cols="2*"]
|===
>s|这个单元格的指示符表示这个单元格的内容是右对齐并加粗的。
|这个单元格上的指示符没有被显式设置,所以应用了默认属性。
|===

AsciiDoc提供了操作符来控制以下单元格属性:

单元格指定符只适用于放置它的单元格,而不是同一行中的所有单元格。此外,如果单元格指定符和列指定符属于相同的属性,那么单元格指定符中的操作符将覆盖列指定符中的操作符。

创建一个表格单元

在这一节中,我们将设置一个表格并向其添加两行单元格。首先,让我们在[ex-cells]中创建两个单元格,并观察它们如何被排列成一行。

将两个单元格添加到表格中 [source#ex-cells]

[cols="1,1"] (1)
|===
这个单元格在第1列,第1行。|这个单元格在第2列,第1行。
|===

表格有两列,因为有两个列说明符被分配给 cols 属性。 处理器将此单元放置在表格的第一列和第一行,因为这个单元格开头的竖线 (|) 是处理器在开头的表格分隔符 (|===) 之后遇到的第一个单元格分隔符。 这是处理器遇到的第二个 |,所以这个单元被放在第一行的第二列。

虽然在[ex-cells]中的两个单元格是分别输入在不同行的,处理器却将它们放置在同一行。

.Result of [ex-cells] [cols="1,1"]

This cell is in column 1, row 1

This cell is in column 2, row 1

由于`cols`属性将[ex-cells]中的列数设置为两列,并且表格中输入了两个单元格,因此第一行已经完成。现在,让我们再向表格中添加两个单元格。

向表格中添加两个单元格
|===
这个单元格在第1列,第1行
这个单元格在第2列,第1行
这个单元格在第1列,第2行
这个单元格在第2列,第2行
|===
  1. 通过一个或多个空行来分隔各行。

  2. 处理器将此单元格放在第二行,因为表格有两列,而这是处理器遇到的第三个单元格分隔符(|)。

  3. 处理器会去除单元格内容前后的任何空格。

向表格中添加两个单元格中的表格现在有四个单元格,排列成两行连续的行。

.Result of 向表格中添加两个单元格 [cols="1,1"]

This cell is in column 1, row 1

This cell is in column 2, row 1

This cell is in column 1, row 2

This cell is in column 2, row 2

一行中的单元格可以输入在同一行或者连续的行中,因为单元格所在行是通过表格中的列数和处理器遇到单元格分隔符(|)的顺序来确定的。

请输入一行单元格的内容

你可以在一行中输入一行的单元格。 当在同一行内输入单元格时,至少需要在前一个单元格内容的最后一个字符和下一个单元格的分隔符(|)之间输入一个空格

同一行输入的单元格
|===
|Column 1 |Column 2 |Column 3 (1) (2)

|Cell in column 1, row 2 |Cell in column 2, row 2 |Cell in column 3, row 2 (3)

|Cell in column 1, row 3 (4)
|Cell in column 2, row 3 |Cell in column 3, row 3
|===

因为 cols 没有设置,表格中的第一行必须将单元格内容在一个行内输入,以便隐式地为表格分配三列。 第一行输入在打开表格分隔符(|===)之后直接的一行,并且后面跟着一个空行。 这会自动将 header 选项分配给它。 当在单行内输入多个单元格时,至少要在前一个单元格内容的最后一个字符和下一个单元格的分隔符(|)之间输入一个空格。 只要行是连续的,可以把一行的单元格分布在几行输入。

同一行输入的单元格中创建的表格包含三列和三行。

.Result of 同一行输入的单元格

Column 1

Column 2

Column 3

Cell in column 1, row 2

Cell in column 2, row 2

Cell in column 3, row 2

Cell in column 1, row 3

Cell in column 2, row 3

Cell in column 3, row 3

单元格内容周围的任何前导和后缀空格都会被删除,并且在渲染时不影响表格的布局。

连续输入一个行的单元格内容

在一行中的单元格可以连续输入在个别行上。使用这种方法时,记得要么设置cols属性(设置cols属性),要么在单行上输入第一行的单元格

连续的、单独的行上的单元格
Unresolved directive in add-cells-and-rows.adoc - include::example$row.adoc[tag=indv]

连续的、单独的行上的单元格中的`cols`属性被赋予了一个倍数3*,表示这个表格有三列。

Unresolved directive in add-cells-and-rows.adoc - include::example$row.adoc[tag=indv]

在连续的行中输入单元格可以提高原始 AsciiDoc 内容的可读性(以及调试性),尤其是当你在单元格中应用 修饰符,使用 在单元格中的 AsciiDoc 块元素,或者在单元格中输入大量内容时。