У меня есть документ DocBook V5.0, который раньше был одним .docbook
файлом, содержащим всю книгу. В этот момент сгенерированный TOC выглядел нормально. Теперь я разбил входные данные на 4 разных файла .docbook
, а также хочу разбить выходные данные.
После этого изменения у меня внезапно возникли две проблемы:
- TOC содержит только четыре записи (по одной для каждого .docbook), а не полную глубину, которая использовалась для
- Довольно странно, что номера глав в оглавлении — 1, 2 и 4, затем идет глоссарий, у которого нет номера.
Что касается последнего, то, если я удалю вторую главу, я получу 1, 2 и глоссарий, так что я думаю, что содержание второй главы не является причиной неправильной нумерации.
В любом случае, мой вопрос: как мне восстановить обычно выглядящую оглавление, сохранив при этом разбивку ввода и вывода? (Разбиение на фрагменты может быть даже ограничено глубиной одного файла, т. е. один файл на входе, один файл на выходе, но я хочу, чтобы глубина оглавления была намного выше.)
Что я сделал
Я сделал свой основной файл таким:
<!DOCTYPE book [
<!ENTITY a SYSTEM "a.docbook">
<!ENTITY b SYSTEM "b.docbook">
<!ENTITY c SYSTEM "c.docbook">
<!ENTITY glossary SYSTEM "glossary.docbook">
<!ENTITY larr "←">
<!ENTITY rarr "→">
<!ENTITY mdash "—">
]>
<book xmlns:xl="http://www.w3.org/1999/xlink">
<title>My Title</title>
&a;
&b;
&c;
&glossary;
</book>
Мой XSL похож на предыдущий с добавлением нескольких параметров управления фрагментированием (но без изменений в исходном параметре TOC):
<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="/usr/share/sgml/docbook/xsl-stylesheets/html/chunk.xsl"/>
<xsl:output method="html"
encoding="UTF-8"
indent="no"/>
<!--new--><xsl:param name="chunk.quietly" select="1"></xsl:param>
<!--new--><xsl:param name="chunker.output.encoding">UTF-8</xsl:param>
<!--new--><xsl:param name="html.extra.head.links" select="0"></xsl:param>
<xsl:param name="html.stylesheet" select="'main.css'"/>
<xsl:param name="generate.toc">
book toc,title
</xsl:param>
<xsl:param name="glossentry.show.acronym">yes</xsl:param>
<xsl:param name="glossary.sort" select="1"></xsl:param>
<!--new--><xsl:param name="use.id.as.filename" select="1"></xsl:param>
</xsl:stylesheet>
Все мои файлы .docbook
выглядят так:
A ...
За исключением glossary.doc
, который:
Глоссарий
Теперь я понимаю, что может быть немного странно иметь главу внутри главы. Это может быть даже причиной. Однако он проверяется без предупреждения, а также, если вместо этого я сделаю самый внешний тег в данном файле <section>
, то весь файл отсутствует в оглавлении.