1

Ubuntu 13.04で DockBook 4.5 とRenderX の XEPを使用しています。DocBook の翻訳は Ubuntu によって提供されます。

画像を右に浮かせています (XEP を使用しても機能しますが、FOP は使用しません)。画像にマージンを追加する必要があります。DocBook は余白を使用していないように見えるため、テキストが画像に詰まっています。

DocBook にはFigure floatsに関するページがあります。残念ながら、私には意味がなく、HTML の例は当てはまりません。

DocBook にもFO パラメータ リファレンスページがありますが、すべての数値、フロート、およびマージンを含むプロパティはリストされていません。

カスタムに次のオーバーライドを追加しようとしましたbook-style.xsl(以前は0でした):

<xsl:attribute name="margin-left">6pt</xsl:attribute>
<xsl:attribute name="margin-right">6pt</xsl:attribute>

しかし、それは多くのエラーを引き起こしました:

Document book.xml does not validate
compilation error: file book-style.xsl line 16 element attribute
element attribute only allowed within a template, variable or param
compilation error: file book-style.xsl line 17 element attribute
element attribute only allowed within a template, variable or param
...

図や画像のフロート マージンを指定するにはどうすればよいですか?

4

1 に答える 1

1

OPのコメントで触れたように、右または左に浮く数字にマージンを導入するには、次を使用するだけで十分です。

<xsl:attribute-set name="figure.properties">
 <xsl:attribute name="margin-left">6pt</xsl:attribute>
 <xsl:attribute name="margin-right">6pt</xsl:attribute>
</xsl:attribute-set>

私の元の答え(以下)は不必要に複雑だったと思います。


という名前のテンプレートfloater( http://www.sagehill.net/docbookxsl/SideFloats.html#CustomSideFloatfo:floatを参照) は、書式設定オブジェクトを出力します。このテンプレートは、デフォルト値 0 のstart.indentおよびend.indentパラメータを取ります。残念ながら、これらのデフォルト値は、figureテンプレートが を呼び出しても変更されないfloaterため、問題が発生します。

これを機能させるには、テンプレート マッチングを少し修正するだけで済みますfigure(以下のコードのコメントを参照してください)。したがって、以下をカスタマイズ レイヤーに追加します。

<xsl:template match="figure">
  <xsl:variable name="param.placement"
              select="substring-after(normalize-space($formal.title.placement),
                                      concat(local-name(.), ' '))"/>

  <xsl:variable name="placement">
    <xsl:choose>
      <xsl:when test="contains($param.placement, ' ')">
        <xsl:value-of select="substring-before($param.placement, ' ')"/>
      </xsl:when>
      <xsl:when test="$param.placement = ''">before</xsl:when>
      <xsl:otherwise>
        <xsl:value-of select="$param.placement"/>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>

  <xsl:variable name="figure">
    <xsl:choose>
      <xsl:when test="@pgwide = '1'">
        <fo:block xsl:use-attribute-sets="pgwide.properties">
          <xsl:call-template name="formal.object">
            <xsl:with-param name="placement" select="$placement"/>
          </xsl:call-template>
        </fo:block>
      </xsl:when>
      <xsl:otherwise>
        <xsl:call-template name="formal.object">
          <xsl:with-param name="placement" select="$placement"/>
        </xsl:call-template>
      </xsl:otherwise>
    </xsl:choose>
  </xsl:variable>

  <xsl:variable name="floatstyle">
    <xsl:call-template name="floatstyle"/>
  </xsl:variable>

  <xsl:choose>
    <xsl:when test="$floatstyle != ''">
      <xsl:call-template name="floater">
        <xsl:with-param name="position" select="$floatstyle"/>
        <xsl:with-param name="content" select="$figure"/>

        <!-- The following two lines added to introduce a 10pt 'margin' for floats (right or left) -->
        <xsl:with-param name="start.indent">10pt</xsl:with-param> 
        <xsl:with-param name="end.indent">10pt</xsl:with-param>

      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <xsl:copy-of select="$figure"/>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>
于 2013-11-08T20:53:00.847 に答える