【问题】
docbook中,默认所生成的book的文章标题和目录,是不同的页(page)中显示的:
此处需要实现将标题和toc在同一页显示,就像这样:
【解决过程】
1.找到官网中关于toc的介绍:
不过没有找到解决办法。
2.找了半天,终于找到了对应的配置位置:
是在fo\titlepage.templates.xml中去配置此处是(包含分页符)分开显示,还是(不包含分页符)而在同一页显示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | < t:titlepage t:element = "book" t:wrapper = "fo:block" > < t:titlepage-content t:side = "recto" > ...... < t:titlepage-separator > < fo:block break-after = "page" /> </ t:titlepage-separator > < t:titlepage-before t:side = "recto" > </ t:titlepage-before > < t:titlepage-before t:side = "verso" > < fo:block break-after = "page" /> </ t:titlepage-before > </ t:titlepage > |
对应的,article中,就没有相应的分页符:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | < t:titlepage t:element = "article" t:wrapper = "fo:block" font-family = "{$title.fontset}" > ...... < t:titlepage-content t:side = "verso" > </ t:titlepage-content > < t:titlepage-separator > </ t:titlepage-separator > < t:titlepage-before t:side = "recto" > </ t:titlepage-before > < t:titlepage-before t:side = "verso" > </ t:titlepage-before > </ t:titlepage > |
对于,默认生成article的pdf中,标题和pdf就是上述在同一页的。
3.知道了原因,就可以去定制了。
就是把对应的<t:titlepage-separator>中的<fo:block break-after="page"/>删除掉,然后将此改动后的titlepage.templates.xml,参考:
用xsltproc生成新的titlepage.templates_crls.xsl,然后用此新的xsl去生成的pdf,就是可以实现将标题和目录显示在同一页了。
【总结】
关于书籍(book)和文章(article)的首页(titlepage)相关的配置,还是在对应的titlepage.templates.xml中。
以后遇到类似问题,还是应该先去这里看看。