【背景】
之前看到:
http://velocity.apache.org/docbook/DocBook-Framework-1.0.pdf
中的pdf有页眉和页脚:
所以,想要也去给自己的pdf,以及html,去添加页眉和页脚。
其中我目前的pdf是这样的:
【折腾过程】
1.参考:
和官网的:
pdf的:
和html的:
去试试,
结果是:
最终是用:
E:\Dev_Root\docbook\dev\config\docbook-xsl-ns-1.78.1\fo\docbook_crl.xsl
中加上:
<!--============================================================================
header setting
=============================================================================-->
<!-- E:\Dev_Root\docbook\tools\docbook-xsl-ns-1.78.1\fo\pagesetup.xsl -->
<xsl:template name="footer.content">
<xsl:param name="pageclass" select="''"/>
<xsl:param name="sequence" select="''"/>
<xsl:param name="position" select="''"/>
<xsl:param name="gentext-key" select="''"/>
<!--
<fo:block>
<xsl:value-of select="$pageclass"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="$sequence"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="$position"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="$gentext-key"/>
</fo:block>
-->
<fo:block>
<!-- pageclass can be front, body, back -->
<!-- sequence can be odd, even, first, blank -->
<!-- position can be left, center, right -->
<xsl:choose>
<xsl:when test="$pageclass = 'titlepage'">
<!-- nop; no footer on title pages -->
</xsl:when>
<xsl:when test="$double.sided != 0 and $sequence = 'even'
and $position='left'">
<fo:page-number/>
</xsl:when>
<xsl:when test="$double.sided != 0 and ($sequence = 'odd' or $sequence = 'first')
and $position='right'">
<fo:page-number/>
</xsl:when>
<xsl:when test="$double.sided = 0 and $position='right'">
<fo:page-number/>
</xsl:when>
<xsl:when test="$position='center'">
<xsl:value-of select="/book/info/title"/>
</xsl:when>
<xsl:when test="$sequence='blank'">
<xsl:choose>
<xsl:when test="$double.sided != 0 and $position = 'left'">
<fo:page-number/>
</xsl:when>
<xsl:when test="$double.sided = 0 and $position = 'center'">
<fo:page-number/>
</xsl:when>
<xsl:otherwise>
<!-- nop -->
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<!-- nop -->
</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:template>只实现了:
让footnote部分,页号在右下角显示的。
目前的问题:
试过如下这些:
<xsl:when test="$position='center'">
<xsl:value-of select="ancestor-or-self::book/bookinfo/title"/>
</xsl:when>
<xsl:when test="$position='center'">
<xsl:value-of select="ancestor-or-self::book/info/title"/>
</xsl:when>
<xsl:when test="$position='center'">
<xsl:value-of select="ancestor-or-self::info/title"/>
</xsl:when>
<xsl:when test="$position='center'">
<xsl:value-of select="ancestor-or-self::/book/info/title"/>
</xsl:when>
<xsl:when test="$position='center'">
<xsl:value-of select="/book/info/title"/>
</xsl:when>都还是无法获得想要的book的title。
而对应的docbook的book的xml中,是正常的:
<book version="5.0"
xmlns="http://docbook.org/ns/docbook"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xl="http://www.w3.org/1999/xlink"
xml:lang="zh_CN"
>
<info>
<title>Docbook开发手记</title>
<subtitle></subtitle>但是就是无法获得。
感觉像是:
所谓的runtime的header和footer,是无法获得这些内容的。
但是,还是很奇怪,因为要是之前示例代码中的:
<xsl:when test="$sequence = 'first' and $position = 'center'">
<xsl:value-of
select="ancestor-or-self::book/bookinfo/corpauthor"/> 8
</xsl:when>那么按理来说,我这里的:
book/info/title
就也该可以的才对。
注:
对于select的用法,已经参考了:
了,确保写法是正确无误的。
2.最终,目前的效果如下:
即:
footer部分的,页号在右边;
但是footer中间部分,想要显示book的info的title,暂时未成功;
header的中间,还是保留之前的chapter的title。
暂时所用配置如下:
<!--============================================================================
header setting
=============================================================================-->
<!-- E:\Dev_Root\docbook\tools\docbook-xsl-ns-1.78.1\fo\pagesetup.xsl -->
<xsl:template name="footer.content">
<xsl:param name="pageclass" select="''"/>
<xsl:param name="sequence" select="''"/>
<xsl:param name="position" select="''"/>
<xsl:param name="gentext-key" select="''"/>
<!--
<fo:block>
<xsl:value-of select="$pageclass"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="$sequence"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="$position"/>
<xsl:text>, </xsl:text>
<xsl:value-of select="$gentext-key"/>
</fo:block>
-->
<fo:block>
<!-- pageclass can be front, body, back -->
<!-- sequence can be odd, even, first, blank -->
<!-- position can be left, center, right -->
<xsl:choose>
<xsl:when test="$pageclass = 'titlepage'">
<!-- nop; no footer on title pages -->
</xsl:when>
<xsl:when test="$double.sided != 0 and $sequence = 'even'
and $position='left'">
<fo:page-number/>
</xsl:when>
<xsl:when test="$double.sided != 0 and ($sequence = 'odd' or $sequence = 'first')
and $position='right'">
<fo:page-number/>
</xsl:when>
<xsl:when test="$double.sided = 0 and $position='right'">
<fo:page-number/>
</xsl:when>
<xsl:when test="$double.sided = 0 and $position='center'">
<xsl:value-of select="ancestor-or-self::book/info/title"/>
</xsl:when>
<xsl:when test="$sequence='blank'">
<xsl:choose>
<xsl:when test="$double.sided != 0 and $position = 'left'">
<fo:page-number/>
</xsl:when>
<xsl:when test="$double.sided = 0 and $position = 'center'">
<fo:page-number/>
</xsl:when>
<xsl:otherwise>
<!-- nop -->
</xsl:otherwise>
</xsl:choose>
</xsl:when>
<xsl:otherwise>
<!-- nop -->
</xsl:otherwise>
</xsl:choose>
</fo:block>
</xsl:template>
另外,html的footer和header,暂时懒得去弄了。
有空再弄。
【总结】
还是没有完全搞懂啊。。。
转载请注明:在路上 » 【记录】docbook为html,pdf添加页眉和页脚