样式表的设定除了前面的参数修改以外,还有一些需要修改模板,比如“titlepage”这个部分,在标题页上显示哪些内容、用什么样的样式来显示,都需要重新定义或修改相应的模板,而非仅仅调整几个参数。在这个部分我们仅介绍titlepage的定义方法。
titlepage,就是标题页。比如book的titlepage,就像这本书,它有书的“右页(recto,可以向左翻)”,我只让它显示标题、副标题及作者;还有“左页(verso)”,这上面显示的信息要多一些,还包括版本信息、摘要、版权信息等。要定义这个模板,需要三步:
titlepage.templates.xml
就是titlepage的模板文件,这个文件在目录docbook-xsl-1.79.1/fo
下面。首先我们需要对里面的“book”部分进行修改,修改成如下的样子:
1 <t:titlepage t:element="book" t:wrapper="fo:block"> 2 <t:titlepage-content t:side="recto"> 3 <mediaobject/> 4 <title 5 t:named-template="division.title" 6 param:node="ancestor-or-self::book[1]" 7 text-align="left" 8 font-size="&hsize5;" 9 space-before="&hsize5space;" 10 font-weight="normal" 11 font-family="{$title.fontset}"/> 12 <subtitle 13 text-align="left" 14 font-size="&hsize2;" 15 font-weight="normal" 16 space-before="&hsize4space;" 17 font-family="{$title.fontset}"/> 18 <corpauthor font-size="&hsize0;" 19 text-align="left" 20 font-weight="normal" 21 keep-with-next.within-column="always" 22 space-before="2in"/> 23 <authorgroup space-before="2in"/> 24 <author font-size="&hsize0;" 25 text-align="left" 26 font-weight="normal" 27 space-before="&hsize2space;" 28 keep-with-next.within-column="always"/> 29 <itermset/> 30 </t:titlepage-content> 31 32 <t:titlepage-content t:side="verso"> 33 <title 34 t:named-template="book.verso.title" 35 font-size="&hsize2;" 36 font-weight="bold" 37 font-family="{$title.fontset}"/> 38 <corpauthor/> 39 <authorgroup t:named-template="verso.authorgroup"/> 40 <author/> 41 42 <othercredit/> 43 <copyright/> 44 <pubdate/> 45 <releaseinfo/> 46 <revhistory/> 47 <abstract/> 48 <legalnotice font-size="7pt" background-color="#f5f5f5" space-before="1em"/> 49 </t:titlepage-content> 50 <t:titlepage-separator> 51 <fo:block break-after="page"/> 52 </t:titlepage-separator> 53 <t:titlepage-before t:side="recto"> 54 </t:titlepage-before> 55 <t:titlepage-before t:side="verso"> 56 <fo:block break-after="page"/> 57 </t:titlepage-before> 58 </t:titlepage>
上面的代码虽然有点长,但很容易阅读,基本就说了两个事:在recto或verso页上显示哪些内容、用什么样的样式显示。
模板文件的生成需要刚才修改过的titlepage.templates.xml
文件,及docbook-xsl-1.79.1/template/titlepage.xsl
文件,还需要xsltproc这个命令。先将titlpage.templates.xsl
做备份保存,然后执行如下的命令:
xsltproc --output titlepage.templates.xsl template/titlepage.xsl titlepage.templates.xml
这样,新的titlepage.templates.xsl
文件就生成了。
我总感觉这里有点奇怪,用xsl生成xsl? 但docbook官方就是这么定义的。
除了titlepage外,inline和pagesetup也需要定义模板,但不用修改xml文件了,可以参考fo/inline.xsl
文件和前面提到的相关站点。和
fo/pagesetup.xsl