filter/source/xslt/odf2xhtml/export/xhtml/body.xsl |  112 ++++++---------------
 1 file changed, 34 insertions(+), 78 deletions(-)

New commits:
commit fb8714eebdb34d6f3604c1a2801777f624829fcc
Author:     Svante Schubert <svante.schub...@gmail.com>
AuthorDate: Thu Sep 10 16:17:37 2020 +0200
Commit:     Xisco Fauli <xiscofa...@libreoffice.org>
CommitDate: Fri May 21 09:34:05 2021 +0200

    HTML MathML update - enabling inline MATHML & fixing duplication 
(regression from last commit)
    
    Change-Id: I22dba4fef5d1de7e4ef056a2e7f33511fa91318d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/111621
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@allotropia.de>
    Signed-off-by: Xisco Fauli <xiscofa...@libreoffice.org>
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/115880

diff --git a/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl 
b/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
index ad74d3716b45..b36a1e08fd46 100644
--- a/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
+++ b/filter/source/xslt/odf2xhtml/export/xhtml/body.xsl
@@ -386,6 +386,8 @@
                             <xsl:with-param name="globalData" 
select="$globalData" />
                             <xsl:with-param name="previousFrameWidths" 
select="0"/>
                             <xsl:with-param name="previousFrameHeights" 
select="0"/>
+                            <xsl:with-param name="leftPosition" select="0" />
+                            <xsl:with-param name="stopAtFirstFrame" 
select="true()" />
                             <!-- 2DO for me (Svante) - Not used, uncertain 
4now...
                             <xsl:with-param name="pageMarginLeft">
                                 <xsl:call-template name="getPageMarginLeft"/>
@@ -397,6 +399,8 @@
                         <xsl:with-param name="globalData" select="$globalData" 
/>
                         <xsl:with-param name="previousFrameWidths" select="0"/>
                         <xsl:with-param name="previousFrameHeights" 
select="0"/>
+                        <xsl:with-param name="leftPosition" select="0"/>
+
                         <!-- 2DO for me (Svante) - Not used, uncertain 4now...
                         <xsl:with-param name="pageMarginLeft">
                             <xsl:call-template name="getPageMarginLeft"/>
@@ -785,16 +789,12 @@
         <xsl:param name="globalData"/>
         <xsl:param name="previousFrameWidths" select="0"/>
         <xsl:param name="previousFrameHeights" select="0" />
-        <!-- it becomes true for siblings after a draw:frame  -->
-        <xsl:param name="createDiv" select="false()"/>
-        <xsl:param name="noDivBefore" select="true()"/>
-        <xsl:param name="leftPosition" />
+        <xsl:param name="leftPosition" select="0" />
         <xsl:param name="parentMarginLeft" />
-        <xsl:param name="frameAlignedToParagraphWithSvgY" />
+        <xsl:param name="stopAtFirstFrame" select="false()" />
 
         <xsl:choose>
-            <xsl:when test="name() = 'draw:frame'">
-                <xsl:copy-of select="$frameAlignedToParagraphWithSvgY"/>
+            <xsl:when test="name() = 'draw:frame' and not($stopAtFirstFrame)">
 
                 <!-- if the first node is a draw:frame create a div -->
                 <xsl:call-template name="createDrawFrame">
@@ -808,14 +808,14 @@
             <xsl:otherwise>
                 <xsl:variable name="nextSiblingIsFrame" 
select="name(following-sibling::node()[1]) = 'draw:frame'"/>
                 <xsl:choose>
-                    <xsl:when test="$createDiv and normalize-space(.) != ''">
+                    <xsl:when test="normalize-space(.) != ''">
                         <!-- every following frame sibling till the next 
draw:frame
                             have to be incapuslated within a div with left 
indent.
                             To be moved altogether according the indent 
(usually right) -->
                         <xsl:comment>Next 'div' added for 
floating.</xsl:comment>
                         <xsl:element name="div">
                             <xsl:attribute name="style">
-                                <xsl:text>position:relative; left:</xsl:text>
+                                <xsl:text>display:inline; position:relative; 
left:</xsl:text>
                                 <xsl:value-of select="$leftPosition"/>
                                 <xsl:text>cm;</xsl:text>
                             </xsl:attribute>
@@ -830,42 +830,38 @@
                                     <xsl:with-param 
name="previousFrameHeights" select="$previousFrameHeights"/>
                                     <xsl:with-param name="parentMarginLeft" 
select="$parentMarginLeft"/>
                                     <xsl:with-param name="leftPosition" 
select="$leftPosition"/>
-                                    <xsl:with-param name="createDiv" 
select="false()"/>
-                                    <xsl:with-param name="noDivBefore" 
select="$noDivBefore"/>
-                                    <xsl:with-param 
name="frameAlignedToParagraphWithSvgY" 
select="$frameAlignedToParagraphWithSvgY"/>
+                                    <xsl:with-param name="stopAtFirstFrame" 
select="$stopAtFirstFrame" />
                                 </xsl:apply-templates>
                             </xsl:if>
                         </xsl:element>
-                        <xsl:copy-of 
select="$frameAlignedToParagraphWithSvgY"/>
 
                         <!-- Other draw:frame will be created outside of the 
div element  -->
-                        <xsl:apply-templates 
select="following-sibling::draw:frame[1]" mode="frameFloating">
-                            <xsl:with-param name="globalData" 
select="$globalData"/>
-                            <xsl:with-param name="previousFrameWidths" 
select="$previousFrameWidths"/>
-                            <xsl:with-param name="previousFrameHeights" 
select="$previousFrameHeights"/>
-                            <xsl:with-param name="parentMarginLeft" 
select="$parentMarginLeft"/>
-                            <xsl:with-param name="leftPosition" 
select="$leftPosition"/>
-                            <xsl:with-param 
name="frameAlignedToParagraphWithSvgY" 
select="$frameAlignedToParagraphWithSvgY"/>
-                        </xsl:apply-templates>
+                        <xsl:if test="nextSiblingIsFrame and 
not(stopAtFirstFrame)">
+                            <xsl:apply-templates 
select="following-sibling::draw:frame[1]" mode="frameFloating">
+                                <xsl:with-param name="globalData" 
select="$globalData"/>
+                                <xsl:with-param name="previousFrameWidths" 
select="$previousFrameWidths"/>
+                                <xsl:with-param name="previousFrameHeights" 
select="$previousFrameHeights"/>
+                                <xsl:with-param name="parentMarginLeft" 
select="$parentMarginLeft"/>
+                                <xsl:with-param name="leftPosition" 
select="$leftPosition"/>
+                                <xsl:with-param name="stopAtFirstFrame" 
select="$stopAtFirstFrame" />
+                            </xsl:apply-templates>
+                        </xsl:if>
                     </xsl:when>
-                    <xsl:when test="not($createDiv)">
+                    <xsl:otherwise>
                         <xsl:apply-templates select=".">
                             <xsl:with-param name="globalData" 
select="$globalData"/>
-                            <xsl:with-param 
name="frameAlignedToParagraphWithSvgY" 
select="$frameAlignedToParagraphWithSvgY"/>
                         </xsl:apply-templates>
-                        <xsl:if test="not($nextSiblingIsFrame) or 
$noDivBefore">
+                        <xsl:if test="not($nextSiblingIsFrame)">
                             <xsl:apply-templates 
select="following-sibling::node()[1]" mode="frameFloating">
                                 <xsl:with-param name="globalData" 
select="$globalData"/>
                                 <xsl:with-param name="previousFrameWidths" 
select="$previousFrameWidths"/>
                                 <xsl:with-param name="previousFrameHeights" 
select="$previousFrameHeights"/>
                                 <xsl:with-param name="parentMarginLeft" 
select="$parentMarginLeft"/>
                                 <xsl:with-param name="leftPosition" 
select="$leftPosition"/>
-                                <xsl:with-param name="createDiv" 
select="false()"/>
-                                <xsl:with-param name="noDivBefore" 
select="$noDivBefore"/>
-                                <xsl:with-param 
name="frameAlignedToParagraphWithSvgY" 
select="$frameAlignedToParagraphWithSvgY"/>
+                                <xsl:with-param name="stopAtFirstFrame" 
select="$stopAtFirstFrame" />
                             </xsl:apply-templates>
                         </xsl:if>
-                    </xsl:when>
+                    </xsl:otherwise>
                 </xsl:choose>
             </xsl:otherwise>
         </xsl:choose>
@@ -876,20 +872,16 @@
         <xsl:param name="globalData"/>
         <xsl:param name="previousFrameWidths" select="0"/>
         <xsl:param name="previousFrameHeights" select="0" />
-        <!-- it becomes true for siblings after a draw:frame  -->
-        <xsl:param name="createDiv" select="false()"/>
-        <xsl:param name="noDivBefore" select="true()"/>
         <xsl:param name="leftPosition" />
         <xsl:param name="parentMarginLeft" />
-        <xsl:param name="frameAlignedToParagraphWithSvgY" />
+        <xsl:param name="stopAtFirstFrame" select="false()" />
 
         <xsl:apply-templates select="following-sibling::node()[1]" 
mode="frameFloating">
             <xsl:with-param name="globalData" select="$globalData"/>
             <xsl:with-param name="previousFrameWidths" 
select="$previousFrameWidths"/>
             <xsl:with-param name="parentMarginLeft" 
select="$parentMarginLeft"/>
             <xsl:with-param name="leftPosition" select="$leftPosition"/>
-            <xsl:with-param name="createDiv" select="false()"/>
-            <xsl:with-param name="noDivBefore" select="$noDivBefore"/>
+            <xsl:with-param name="stopAtFirstFrame" select="$stopAtFirstFrame" 
/>
         </xsl:apply-templates>
     </xsl:template>
 
@@ -947,6 +939,7 @@
         <xsl:param name="previousFrameWidths" select="0"/>
         <xsl:param name="previousFrameHeights" select="0" />
         <xsl:param name="parentMarginLeft"/>
+        <xsl:param name="stopAtFirstFrame" select="false()" />
 
         <xsl:variable name="parentMarginLeftNew">
             <xsl:choose>
@@ -965,7 +958,7 @@
                     </xsl:choose>
                 </xsl:when>
                 <xsl:otherwise>
-                    <xsl:value-of select="$parentMarginLeft"/>
+                    <xsl:value-of select="normalize-space($parentMarginLeft)" 
/>
                 </xsl:otherwise>
             </xsl:choose>
         </xsl:variable>
@@ -1018,37 +1011,6 @@
                 </xsl:element>
             </xsl:if>
         </xsl:if>
-
-
-      <!--
-        <xsl:variable name="followingSibling" 
select="following-sibling::node()[1]"/>
-        <xsl:choose>
-           HEURISTIC: if the frame is anchored on a paragraph and the above 
gab is big enough to hold a text line,
-                move it behind the text
-            <xsl:when test="@text:anchor-type='paragraph' and
-                (
-                    ($svgY &gt; 0.5) or
-                    ($svgX &gt; 4)
-                ) and normalize-space($followingSibling) != ''">
-                <xsl:apply-templates select="$followingSibling" 
mode="frameFloating">
-                    <xsl:with-param name="globalData" select="$globalData"/>
-                    <xsl:with-param name="previousFrameWidths" 
select="$previousFrameWidths + $svgWidth"/>
-                    <xsl:with-param name="parentMarginLeft" 
select="$parentMarginLeftNew"/>
-                    <xsl:with-param name="leftPosition" 
select="$leftPosition"/>
-                    <xsl:with-param name="createDiv" select="true()"/>
-                    <xsl:with-param name="noDivBefore" select="false()"/>
-                    <xsl:with-param name="frameAlignedToParagraphWithSvgY">
-                        <xsl:call-template name="createDrawFrame2">
-                            <xsl:with-param name="globalData" 
select="$globalData"/>
-                            <xsl:with-param name="previousFrameWidths" 
select="$previousFrameWidths + $svgWidth"/>
-                            <xsl:with-param name="parentMarginLeftNew" 
select="$parentMarginLeftNew"/>
-                            <xsl:with-param name="leftPosition" 
select="$leftPosition"/>
-                            <xsl:with-param name="svgY" select="$svgY"/>
-                        </xsl:call-template>
-                    </xsl:with-param>
-                </xsl:apply-templates>
-            </xsl:when>
-            <xsl:otherwise>-->
         <xsl:call-template name="createDrawFrame2">
             <xsl:with-param name="globalData" select="$globalData"/>
             <xsl:with-param name="previousFrameWidths" 
select="$previousFrameWidths + $svgWidth"/>
@@ -1061,13 +1023,8 @@
             <xsl:with-param name="previousFrameWidths" 
select="$previousFrameWidths + $svgWidth"/>
             <xsl:with-param name="parentMarginLeft" 
select="$parentMarginLeftNew"/>
             <xsl:with-param name="leftPosition" select="$leftPosition"/>
-            <xsl:with-param name="createDiv" select="false()"/>
-            <xsl:with-param name="noDivBefore" select="false()"/>
+            <xsl:with-param name="stopAtFirstFrame" select="$stopAtFirstFrame" 
/>
         </xsl:apply-templates>
-                <!--
-
-            </xsl:otherwise>
-        </xsl:choose> -->
     </xsl:template>
 
     <xsl:template name="createDrawFrame2">
@@ -1095,13 +1052,7 @@
                     replacement image and keep only the id attribute.
                     See fdo#66645 -->
                     <xsl:apply-templates select="@draw:name"/>
-                        <xsl:text> </xsl:text>
                     <xsl:apply-templates select="draw:object[1]"/>
-                    <!-- TODO: do not always add a space after the formula,
-                    for example when it is followed by a comma, period,
-                    dash etc This will probably require using regexp
-                    features like xsl:analyze-string -->
-                    <xsl:text> </xsl:text>
                 </xsl:when>
                 <xsl:otherwise>
                     <xsl:attribute name="style">
@@ -3015,6 +2966,11 @@
         </xsl:attribute>
     </xsl:template>
 
+    <!-- our mathml should always be inline the text flow -->
+    <xsl:template match="@display" mode="math">
+        <xsl:attribute name="{local-name()}">inline</xsl:attribute>
+    </xsl:template>
+
     <!-- Ignore semantic annotations -->
     <xsl:template match="math:semantics" mode="math">
         <xsl:apply-templates select="*[1]" mode="math"/>
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to