【问题标题】:Docbook: Chapter number and word "Chapter" in headerDocbook:标题中的章节编号和单词“Chapter”
【发布时间】:2014-02-24 10:40:12
【问题描述】:

我正在用 DocBook 编写文档,并希望以带有页眉和页脚的 PDF 格式发布它。为此,我有这种风格:

<xsl:template name="header.content">
    <xsl:param name="pageclass" select="''"/>
    <xsl:param name="sequence" select="''"/>
    <xsl:param name="position" select="''"/>
    <xsl:param name="gentext-key" select="''"/>

  <fo:block>

    <!-- sequence can be odd, even, first, blank -->
    <!-- position can be left, center, right -->
    <xsl:choose>
      <xsl:when test="$sequence = 'blank'">
        <!-- nothing -->
      </xsl:when>

      <xsl:when test="$position='left'">
        <xsl:call-template name="draft.text"/>
         <xsl:apply-templates select="." mode="titleabbrev.markup"/>
        </xsl:when>
    </xsl:choose>
    <xsl:when test="$position='right'">
       <fo:page-number/>
     </xsl:when>
  </fo:block>
</xsl:template>

通过这段代码,我得到以下标题:

My first chapter blah-blah            1

我想得到这个:

Chapter 1: My first chapter blah-blah            1

我应该调用什么模板来创建这样的自动文本?

【问题讨论】:

  • 这里的许多人都熟悉 XSLT,但不熟悉 Docbook。因此,您可能想回答以下问题。你在哪里称模板“header.content”?章节号是参数还是必须从头开始生成?

标签: xml xslt xsl-fo docbook


【解决方案1】:

尝试以下(尝试是因为我对 DocBook 不太熟悉):

添加

<xsl:apply-templates select="." mode="object.title.markup"/>

到header.content 模板。这应该插入“带有章节编号标签的章节标题”。请参阅 Docbook 文档参考 here。

<xsl:template name="header.content">
    <xsl:param name="pageclass" select="''"/>
    <xsl:param name="sequence" select="''"/>
    <xsl:param name="position" select="''"/>
    <xsl:param name="gentext-key" select="''"/>

  <fo:block>

    <!-- sequence can be odd, even, first, blank -->
    <!-- position can be left, center, right -->
    <xsl:choose>
      <xsl:when test="$sequence = 'blank'">
        <!-- nothing -->
      </xsl:when>

      <xsl:when test="$position='left'">
        <xsl:call-template name="draft.text"/>
        <xsl:text>Chapter </xsl:text>
        <xsl:apply-templates select="." mode="object.title.markup"/>
        </xsl:text> </xsl:text>
        </xsl:when>
    </xsl:choose>
    <xsl:when test="$position='right'">
       <fo:page-number/>
     </xsl:when>
  </fo:block>
</xsl:template>

但请注意title.markup 和titleabbrev.markup 之间可能存在差异。

【讨论】:

    猜你喜欢
    • 2021-08-26
    • 2012-11-30
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 1970-01-01
    • 2021-06-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多