Asciidoc table 用于计数器值和文本引用

Asciidoc table for counter values and text references

我正在创建如下所述的 asciidoc:

Start of document 

* R{counter:recom}: sentence1 
...
* R{counter:recom}: sentence2
...
* R{counter:recom}: sentence3

End

注意:asciidoc 中的 R{counter:recom} 在生成的文档中将显示为 R1 R2 R3

我需要在文档的开头创建一个 table,它将参考文档中的计数器和文本,如下所述:

Start of document 

|Ref#|text from the document
|R1|sentence1
|R2|sentence2
|R3|sentence3

throughout the doc: 

* R{counter:recom}: sentence1
...
* R{counter:recom}: sentence2
...
* R{counter:recom}: sentence3

End

现在,这里有两个未知的东西:

  1. 如何将 table 中的 asciidoc R1 sentence1 中的计数器和句子部分一起或单独引用,这样,如果我在文档中更改它,它将是在 table?

  2. 中更改
  3. 如何引用 table 中的计数器值,以便它们作为指向文档中实际计数器值 R1 的链接?

不确定是否有现成的构造来实现此目的,我还没有想出如何使用 anchorinclude 语句来实现它。

以下是属性的实验。它满足以下要求:

  • 如果您更改属性中的句子,table 和文档中的句子都会更改
  • table 和文档将包含相同的数字
  • table 到文档中的项目
:ref-a: R{counter:recom}
:sen-a: sentence1

:ref-b: R{counter:recom}
:sen-b: sentence2

:ref-c: R{counter:recom}
:sen-c: sentence3

|===
|Ref#|text from the document
|<<link-a>>|{sen-a}
|<<link-b>>|{sen-b}
|<<link-c>>|{sen-c}
|===

throughout the doc:

* [[link-a,{ref-a}]]{ref-a}: {sen-a}
...
* [[link-b,{ref-b}]]{ref-b}: {sen-b}
...
* [[link-c,{ref-c}]]{ref-c}: {sen-c}
...

用任一方法渲染这个

Asciidoctor 2.0.10 [https://asciidoctor.org]
Runtime Environment (jruby 9.2.7.0 (2.5.3) 2019-04-09 8a269e3 Java HotSpot(TM) 64-Bit Server VM 25.161-b12 on 1.8.0_161-b12 +jit [mswin32-x86_64]) (lc:CP850 fs:Windows-1252 in:CP850 ex:CP850)

Asciidoctor PDF 1.5.0.beta.1 using Asciidoctor 2.0.10 [https://asciidoctor.org]
Runtime Environment (jruby 9.2.7.0 (2.5.3) 2019-04-09 8a269e3 Java HotSpot(TM) 64-Bit Server VM 25.161-b12 on 1.8.0_161-b12 +jit [mswin32-x86_64]) (lc:CP850 fs:Windows-1252 in:CP850 ex:CP850)

显示

将句子放在属性中的替代方法:假设每个章节都在一个单独的文件中进行描述,您可以使用包含语句,该语句仅包含 table 文件的第一行,使用 include::filename.txt[lines=1],然后在文档中包含完整文件。详见Include By Line Ranges in the Asciidoctor documentation(你也可以使用标签指定table的内容)。

@ahus1 说的。

或者,如果您可以将计数器行转换为章节标题,那就很简单了:

= Document

[cols="a"]
|===
| <<first>>
| <<second>>
| <<third>>
|===

...

[[first]]
== R{counter:recom}: sentence 1

...

[[second]]
== R{counter:recom}: sentence 2

...

[[third]]
== R{counter:recom}: sentence 3

...


End