[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Nested emphasis
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">
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]