Hi,
A coworker reported an issue in FO output with a nested emphasis:
- <emphasis role="bold"><emphasis>foo</emphasis></emphasis> displays "foo" in
regular bold.
- <emphasis><emphasis role="bold">foo</emphasis></emphasis> displays "foo" in
bold italics.
This happens because the template in inline.xsl counts the total number of
ancestor emphasis elements when it does not have a @role - notwithstanding the
@role attribute on those ancestor.
On a related note, is there a reason why this (and some other templates are
counting dots in the number generated for the current emphasis, rather than
doing a simple count(ancestor::emphasis)?
Or in other words, any objections to committing the attached patch?
Regards,
Alexey.
Index: fo/inline.xsl
===================================================================
--- fo/inline.xsl (revision 684)
+++ fo/inline.xsl (working copy)
@@ -687,14 +687,6 @@
</xsl:template>
<xsl:template match="emphasis">
- <xsl:variable name="depth">
- <xsl:call-template name="dot.count">
- <xsl:with-param name="string">
- <xsl:number level="multiple"/>
- </xsl:with-param>
- </xsl:call-template>
- </xsl:variable>
-
<xsl:choose>
<xsl:when test="@role='bold' or @role='strong'">
<xsl:call-template name="inline.boldseq"/>
@@ -710,6 +702,11 @@
</fo:inline>
</xsl:when>
<xsl:otherwise>
+ <!-- How many regular emphasis ancestors does this element have -->
+ <xsl:variable name="depth" select="count(ancestor::emphasis
+ [not(contains(' bold strong underline strikethrough ', concat(' ', @role, ' ')))]
+ )"/>
+
<xsl:choose>
<xsl:when test="$depth mod 2 = 1">
<fo:inline font-style="normal">
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]