在 Asciidoc / Asciidoctor 中隐藏 ToC 的标题

grw*_*grw 8 asciidoc asciidoctor

我想找到一种方法来从我的 Asciidoc 文档的目录中隐藏某些标题,我正在使用 Asciidoctor 将其处理为 HTML 和 PDF。

我增加了headerlevel值以包含一些其他子标题,但这样做的副作用是一些不需要的标题现在也出现在输出文档的 ToC 中。

我的文档是使用这种语句从多个源文件动态组成的:

include::deployment/topic.adoc[leveloffset=+3]
Run Code Online (Sandbox Code Playgroud)

其中一些标题不应出现在 ToC 中——包括它们会导致大量重复(它们在每个主要标题下都有相似的内容)。

例如:

每个组件主题都有一个 H1 标头,这些“leveloffset”属性根据需要降级为 h2、h3 等:

= My Topic Title
Run Code Online (Sandbox Code Playgroud)

所以我解析的文件是这样的:

= Main Title (Keep in ToC)
== H2 (Keep in ToC)
=== H3 (Keep in ToC)
== H2 (Keep in ToC)
=== H3 (Remove from ToC)
== H2 (Keep in ToC)
=== H3 (Remove from ToC)
Run Code Online (Sandbox Code Playgroud)

我不能减少headerlevel去除的情况下,=== H3 (Remove from ToC)无需删除=== H3 (Keep in ToC)从TOC。

我试图保持文档模块化。因此,将一些标题设为简单的粗体文本(使用星号)并不理想。我想将它们保留为标题,但向它们添加某种属性,将它们标记为“非 ToC”。

我会很感激任何提示或想法。

谢谢

grw*_*grw 13

我刚刚想通了 - 哦!

一个可行的解决方案是在[discrete]要定义的标题上方插入属性:

[discrete]
=== H3 (Remove from ToC)
This is the H3 content.
Run Code Online (Sandbox Code Playgroud)

Asciidoctor 文档的这一部分展示了这个属性通常是如何使用的。但是,您实际上不需要像建议的那样使用 H2 标头 - Asciidoctor 在使用时尊重层次结构[discrete],因此嵌套仍然有效。