Docbook: номер главы и слово "глава" в заголовке

Я пишу документацию в 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

Какие шаблоны я должен назвать, чтобы создать такой автотекст?

1 ответ

Решение

Попробуйте следующее (пытаясь, потому что я не слишком знаком с DocBook):

добавлять

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

к header.content шаблон. Это должно вставить "заголовок главы с меткой номера главы". Смотрите ссылку на документацию Docbook здесь.

<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,

Другие вопросы по тегам