OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: Re: [docbook-apps] PDF output of <inlinemediaobject> within lists


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

caporale wrote:
> I'm using FOP 0.93 and xsltproc.
>
> The XML looks like this:
>
> <orderedlist>
> <listitem><para><inlinemediaobject/></para></listitem>
> ...
> </orderedlist>
>
> This is what the output looks like:
> http://img248.imageshack.us/my.php?image=inlinemediaobjectkl4.png
>
> Is there any way I can get the list label in line with the rest of it? 
HTML
> output looks fine, and this is what I want it to look like:
>
> http://img519.imageshack.us/my.php?image=inlinemediaobject2xl2.png
>
> Thank you,
> Joseph Caporale
>
I was struggling with this issue as well. You'd expect setting

  valign="middle"

to do the job, i.e something like

<inlinemediaobject>
  <imageobject>
    <imagedata fileref = "icon.png"
                 valign  = "middle"
                 />
  </imageobject>
</inlinemediaobject>

But it does not, since the FO xsl stylesheets does insert the right
attributes into the <fo:inline> element.

Below I include a changed definition of the template <xsl:template
name="process.image"> to get it to work (add this chunk to your
customization layer). It might have other unexpetcted consequences,
but solved the issue. The important part is the setting for the
<xsl:if test="@valign"> attribute.

Best, Mads

<!-- ********************************************************************
       Redefine valign such that inline icons get vertical center.
    
******************************************************************** -->
  <xsl:template name="process.image">
    <xsl:variable name="scalefit">
      <xsl:choose>
    <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
    <xsl:when test="@contentwidth">0</xsl:when>
    <xsl:when test="@contentdepth and
            @contentdepth != '100%'">0</xsl:when>
    <xsl:when test="@scale">0</xsl:when>
    <xsl:when test="@scalefit"><xsl:value-of
select="@scalefit"/></xsl:when>
    <xsl:when test="@width or @depth">1</xsl:when>
    <xsl:otherwise>0</xsl:otherwise>
      </xsl:choose>
    </xsl:variable>

    <xsl:variable name="scale">
      <xsl:choose>
    <xsl:when test="$ignore.image.scaling != 0">0</xsl:when>
    <xsl:when test="@contentwidth or @contentdepth">1.0</xsl:when>
    <xsl:when test="@scale">
      <xsl:value-of select="@scale div 100.0"/>
    </xsl:when>
    <xsl:otherwise>1.0</xsl:otherwise>
      </xsl:choose>
    </xsl:variable>

    <xsl:variable name="filename">
      <xsl:choose>
    <xsl:when test="local-name(.) = 'graphic'
            or local-name(.) = 'inlinegraphic'">
      <!-- handle legacy graphic and inlinegraphic by new template -->
      <xsl:call-template name="mediaobject.filename">
        <xsl:with-param name="object" select="."/>
      </xsl:call-template>
    </xsl:when>
    <xsl:otherwise>
      <!-- imagedata, videodata, audiodata -->
      <xsl:call-template name="mediaobject.filename">
        <xsl:with-param name="object" select=".."/>
      </xsl:call-template>
    </xsl:otherwise>
      </xsl:choose>
    </xsl:variable>

    <xsl:variable name="content-type">
      <xsl:if test="@format">
    <xsl:call-template name="graphic.format.content-type">
      <xsl:with-param name="format" select="@format"/>
    </xsl:call-template>
      </xsl:if>
    </xsl:variable>

    <xsl:variable name="bgcolor">
      <xsl:call-template name="dbfo-attribute">
    <xsl:with-param name="pis"
            select="../processing-instruction('dbfo')"/>
    <xsl:with-param name="attribute" select="'background-color'"/>
      </xsl:call-template>
    </xsl:variable>

    <fo:external-graphic>
      <xsl:attribute name="src">
    <xsl:call-template name="fo-external-image">
      <xsl:with-param name="filename">
        <xsl:if test="$img.src.path != '' and
              not(starts-with($filename, '/')) and
              not(contains($filename, '://'))">
          <xsl:value-of select="$img.src.path"/>
        </xsl:if>
        <xsl:value-of select="$filename"/>
      </xsl:with-param>
    </xsl:call-template>
      </xsl:attribute>

      <xsl:attribute name="width">
    <xsl:choose>
      <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
      <xsl:when test="contains(@width,'%')">
        <xsl:value-of select="@width"/>
      </xsl:when>
      <xsl:when test="@width and not(@width = '')">
        <xsl:call-template name="length-spec">
          <xsl:with-param name="length" select="@width"/>
          <xsl:with-param name="default.units" select="'px'"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="not(@depth) and $default.image.width != ''">
        <xsl:call-template name="length-spec">
          <xsl:with-param name="length" select="$default.image.width"/>
          <xsl:with-param name="default.units" select="'px'"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>auto</xsl:otherwise>
    </xsl:choose>
      </xsl:attribute>

      <xsl:attribute name="height">
    <xsl:choose>
      <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
      <xsl:when test="contains(@depth,'%')">
        <xsl:value-of select="@depth"/>
      </xsl:when>
      <xsl:when test="@depth">
        <xsl:call-template name="length-spec">
          <xsl:with-param name="length" select="@depth"/>
          <xsl:with-param name="default.units" select="'px'"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:otherwise>auto</xsl:otherwise>
    </xsl:choose>
      </xsl:attribute>

      <xsl:attribute name="content-width">
    <xsl:choose>
      <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
      <xsl:when test="contains(@contentwidth,'%')">
        <xsl:value-of select="@contentwidth"/>
      </xsl:when>
      <xsl:when test="@contentwidth">
        <xsl:call-template name="length-spec">
          <xsl:with-param name="length" select="@contentwidth"/>
          <xsl:with-param name="default.units" select="'px'"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="number($scale) != 1.0">
        <xsl:value-of select="$scale * 100"/>
        <xsl:text>%</xsl:text>
      </xsl:when>
      <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when>
      <xsl:otherwise>auto</xsl:otherwise>
    </xsl:choose>
      </xsl:attribute>

      <xsl:attribute name="content-height">
    <xsl:choose>
      <xsl:when test="$ignore.image.scaling != 0">auto</xsl:when>
      <xsl:when test="contains(@contentdepth,'%')">
        <xsl:value-of select="@contentdepth"/>
      </xsl:when>
      <xsl:when test="@contentdepth">
        <xsl:call-template name="length-spec">
          <xsl:with-param name="length" select="@contentdepth"/>
          <xsl:with-param name="default.units" select="'px'"/>
        </xsl:call-template>
      </xsl:when>
      <xsl:when test="number($scale) != 1.0">
        <xsl:value-of select="$scale * 100"/>
        <xsl:text>%</xsl:text>
      </xsl:when>
      <xsl:when test="$scalefit = 1">scale-to-fit</xsl:when>
      <xsl:otherwise>auto</xsl:otherwise>
    </xsl:choose>
      </xsl:attribute>

      <xsl:if test="$content-type != ''">
    <xsl:attribute name="content-type">
      <xsl:value-of select="concat('content-type:',$content-type)"/>
    </xsl:attribute>
      </xsl:if>

      <xsl:if test="$bgcolor != ''">
    <xsl:attribute name="background-color">
      <xsl:value-of select="$bgcolor"/>
    </xsl:attribute>
      </xsl:if>

      <xsl:if test="@align">
    <xsl:attribute name="text-align">
      <xsl:value-of select="@align"/>
    </xsl:attribute>
      </xsl:if>

      <xsl:if test="@valign">
    <xsl:attribute name="vertical-align">
      <xsl:choose>
        <xsl:when test="@valign = 'top'">super</xsl:when>
        <xsl:when test="@valign = 'middle'">middle</xsl:when>
        <xsl:when test="@valign = 'bottom'">sub</xsl:when>
        <xsl:otherwise>auto</xsl:otherwise>
      </xsl:choose>
    </xsl:attribute>
      </xsl:if>
    </fo:external-graphic>
  </xsl:template>
</xsl:stylesheet>

- --
+---------------------------------+-------------------------+
| Mads Ipsen                      |                         |
| Product Support Specialist      | phone:     +45-35320630 |
| Atomistix A/S                   | fax:       +45-35320635 |
| Juliane Maries Vej 30           |                         |
| DK-2100 Copenhagen              | mpi@atomistix.com       |
+---------------------------------+-------------------------+
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGg2KLUiXEzEUa8LARAghtAJkBycuJx4rVKLctdWHP9+lgOE25GwCgoIcD
ai9wDabaPYGdgmwDHg+SAfE=
=Bk9n
-----END PGP SIGNATURE-----



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]