有一个相对简单的方法来获得它,尽管我很确定您不能不创建 DocBook XSL 自定义层或直接修改已安装的(系统)样式表。
无论哪种方式,我认为您需要修改或覆盖的实际 docbook-xsl 模板是命名make.toc
的,位于文件的样式表分布中html/autotoc.xsl
。
这是一个很大的模板——将近一百行——但你只需要对其进行一行更改:
--- /usr/share/xml/docbook/stylesheet/docbook-xsl/html/autotoc.xsl 2012-12-16 11:35:12.000000000 +0900
+++ /opt/workspace/autotoc.xsl 2015-12-26 09:19:36.000000000 +0900
@@ -28,7 +28,7 @@
</xsl:variable>
<xsl:template name="make.toc">
- <xsl:param name="toc-context" select="."/>
+ <xsl:param name="toc-context" select="/"/>
<xsl:param name="toc.title.p" select="true()"/>
<xsl:param name="nodes" select="/NOT-AN-ELEMENT"/>
也就是说,您需要在toc-context
参数设置为“ /
”(而不是“ .
”)的情况下调用该模板。
默认的 " .
" 值告诉模板,在为块创建 TOC 时,它应该只查看当前正在处理的任何元素的(子)内容(即,该特定块的根);例如,如果它正在处理 asection
它只会查看 that 的孩子section
。
但是,如果您改为将该值更改为“ /
”,您就是在告诉模板每次(重新)查看源文档的全部内容。因此,如果您的文档是book
,它每次都会为您提供整本书的整个 TOC,或者如果您的文档是article
,则为整篇文章等。
所以我认为这应该给你你想要的。
如果您决定只修改已安装的样式表,并且您已经从您使用的任何特定于操作系统的包管理器中安装了它们,那么您需要找到html/autotoc.xsl
文件的安装位置。
在我的 Debian Linux 系统上,html/autotoc.xsl
文件在这里:
/usr/share/xml/docbook/stylesheet/docbook-xsl/html/autotoc.xsl
在我的 OS X 系统上,从自制软件包安装,它在这里:
/usr/local/opt/docbook-xsl/docbook-xsl/html/autotoc.xsl
如果您决定改为创建自定义层,则需要将整个make.toc
模板复制到自定义层中(但将该toc-context
参数更改为“ /
”)。