【问题】
docbook中,默认所生成的book的文章标题和目录,是不同的页(page)中显示的:
此处需要实现将标题和toc在同一页显示,就像这样:
【解决过程】
1.找到官网中关于toc的介绍:
不过没有找到解决办法。
2.找了半天,终于找到了对应的配置位置:
是在fo\titlepage.templates.xml中去配置此处是(包含分页符)分开显示,还是(不包含分页符)而在同一页显示:
<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中,就没有相应的分页符:
<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中。
以后遇到类似问题,还是应该先去这里看看。