metanorma-csa 2.1.11 → 2.1.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -561,6 +561,8 @@
561
561
  <xsl:text>iVBORw0KGgoAAAANSUhEUgAAASEAAAEhCAYAAAAwHRYbAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA3BpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuNi1jMDE0IDc5LjE1Njc5NywgMjAxNC8wOC8yMC0wOTo1MzowMiAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0UmVmPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VSZWYjIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtcE1NOk9yaWdpbmFsRG9jdW1lbnRJRD0ieG1wLmRpZDplYWRhN2RlNC04YzAyLTQ1N2UtYjUwNy0zNGYzY2RjNWE2ZGQiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDUyNzBENDc3NjVCMTFFQTlDMDhGMEI2ODhENjUxQkIiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDUyNzBENDY3NjVCMTFFQTlDMDhGMEI2ODhENjUxQkIiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgSW5EZXNpZ24gMTQuMCAoTWFjaW50b3NoKSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ1dWlkOmZiZjFiODZmLTIzMjMtM2U0OS1hMDMzLTVlOGQxYThlNmI1YiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmlkOjFlMzVjZTE3LWU5NzAtNDQ1OS05ZjI0LTM1NzcwZWYzMjNjMiIvPiA8L3Jk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</xsl:text>
562
562
  </xsl:variable>
563
563
 
564
+ <xsl:strip-space elements="csa:xref"/>
565
+
564
566
  <!-- external parameters -->
565
567
 
566
568
  <xsl:param name="svg_images"/> <!-- svg images array -->
@@ -979,6 +981,15 @@
979
981
 
980
982
  </xsl:attribute-set>
981
983
 
984
+ <xsl:attribute-set name="pre-style">
985
+ <xsl:attribute name="font-family">Courier New, <xsl:value-of select="$font_noto_sans_mono"/></xsl:attribute>
986
+ <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
987
+
988
+ <xsl:attribute name="font-family"><xsl:value-of select="$font_noto_sans_mono"/></xsl:attribute>
989
+ <xsl:attribute name="line-height">113%</xsl:attribute>
990
+
991
+ </xsl:attribute-set>
992
+
982
993
  <xsl:attribute-set name="permission-style">
983
994
 
984
995
  </xsl:attribute-set>
@@ -1089,6 +1100,11 @@
1089
1100
  </xsl:variable>
1090
1101
  <xsl:variable name="table-border" select="normalize-space($table-border_)"/>
1091
1102
 
1103
+ <xsl:variable name="table-cell-border_">
1104
+
1105
+ </xsl:variable>
1106
+ <xsl:variable name="table-cell-border" select="normalize-space($table-cell-border_)"/>
1107
+
1092
1108
  <xsl:attribute-set name="table-container-style">
1093
1109
  <xsl:attribute name="margin-left">0mm</xsl:attribute>
1094
1110
  <xsl:attribute name="margin-right">0mm</xsl:attribute>
@@ -1098,8 +1114,6 @@
1098
1114
  <xsl:attribute-set name="table-style">
1099
1115
  <xsl:attribute name="table-omit-footer-at-break">true</xsl:attribute>
1100
1116
  <xsl:attribute name="table-layout">fixed</xsl:attribute>
1101
- <xsl:attribute name="margin-left">0mm</xsl:attribute>
1102
- <xsl:attribute name="margin-right">0mm</xsl:attribute>
1103
1117
 
1104
1118
  </xsl:attribute-set><!-- table-style -->
1105
1119
 
@@ -1936,17 +1950,22 @@
1936
1950
  </xsl:for-each>
1937
1951
  </xsl:template>
1938
1952
 
1953
+ <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
1939
1954
  <xsl:variable name="tag_fo_inline_keep-together_within-line_open">###fo:inline keep-together_within-line###</xsl:variable>
1940
1955
  <xsl:variable name="tag_fo_inline_keep-together_within-line_close">###/fo:inline keep-together_within-line###</xsl:variable>
1941
1956
  <xsl:template match="text()" name="text">
1942
1957
 
1943
- <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
1944
- <xsl:variable name="text" select="java:replaceAll(java:java.lang.String.new(.),$regex_standard_reference,concat($tag_fo_inline_keep-together_within-line_open,'$1',$tag_fo_inline_keep-together_within-line_close))"/>
1945
- <xsl:call-template name="replace_fo_inline_tags">
1946
- <xsl:with-param name="tag_open" select="$tag_fo_inline_keep-together_within-line_open"/>
1947
- <xsl:with-param name="tag_close" select="$tag_fo_inline_keep-together_within-line_close"/>
1948
- <xsl:with-param name="text" select="$text"/>
1949
- </xsl:call-template>
1958
+ <xsl:choose>
1959
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:value-of select="."/></xsl:when>
1960
+ <xsl:otherwise>
1961
+ <xsl:variable name="text" select="java:replaceAll(java:java.lang.String.new(.),$regex_standard_reference,concat($tag_fo_inline_keep-together_within-line_open,'$1',$tag_fo_inline_keep-together_within-line_close))"/>
1962
+ <xsl:call-template name="replace_fo_inline_tags">
1963
+ <xsl:with-param name="tag_open" select="$tag_fo_inline_keep-together_within-line_open"/>
1964
+ <xsl:with-param name="tag_close" select="$tag_fo_inline_keep-together_within-line_close"/>
1965
+ <xsl:with-param name="text" select="$text"/>
1966
+ </xsl:call-template>
1967
+ </xsl:otherwise>
1968
+ </xsl:choose>
1950
1969
 
1951
1970
  </xsl:template>
1952
1971
 
@@ -2203,10 +2222,18 @@
2203
2222
  <xsl:variable name="table_attributes">
2204
2223
 
2205
2224
  <xsl:element name="table_attributes" use-attribute-sets="table-style">
2225
+
2226
+ <xsl:if test="$margin-side != 0">
2227
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
2228
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
2229
+ </xsl:if>
2230
+
2206
2231
  <xsl:attribute name="width"><xsl:value-of select="normalize-space($table_width)"/></xsl:attribute>
2207
2232
 
2208
- <xsl:attribute name="margin-left"><xsl:value-of select="$margin-side"/>mm</xsl:attribute>
2209
- <xsl:attribute name="margin-right"><xsl:value-of select="$margin-side"/>mm</xsl:attribute>
2233
+ <xsl:if test="$margin-side != 0">
2234
+ <xsl:attribute name="margin-left"><xsl:value-of select="$margin-side"/>mm</xsl:attribute>
2235
+ <xsl:attribute name="margin-right"><xsl:value-of select="$margin-side"/>mm</xsl:attribute>
2236
+ </xsl:if>
2210
2237
 
2211
2238
  </xsl:element>
2212
2239
  </xsl:variable>
@@ -2309,7 +2336,7 @@
2309
2336
 
2310
2337
  <!-- centered table when table name is centered (see table-name-style) -->
2311
2338
 
2312
- <fo:table table-layout="fixed" width="100%">
2339
+ <fo:table table-layout="fixed" width="100%" xsl:use-attribute-sets="table-container-style">
2313
2340
  <fo:table-column column-width="proportional-column-width(1)"/>
2314
2341
  <fo:table-column column-width="{@width}"/>
2315
2342
  <fo:table-column column-width="proportional-column-width(1)"/>
@@ -2962,6 +2989,10 @@
2962
2989
  <xsl:template match="*[local-name()='tr']">
2963
2990
  <fo:table-row xsl:use-attribute-sets="table-body-row-style">
2964
2991
 
2992
+ <xsl:if test="count(*) = count(*[local-name() = 'th'])"> <!-- row contains 'th' only -->
2993
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
2994
+ </xsl:if>
2995
+
2965
2996
  <xsl:call-template name="setTableRowAttributes"/>
2966
2997
  <xsl:apply-templates/>
2967
2998
  </fo:table-row>
@@ -3917,7 +3948,8 @@
3917
3948
  <xsl:copy-of select="node()"/>
3918
3949
  </td>
3919
3950
  <td>
3920
- <xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]"/>
3951
+ <!-- <xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]"/> -->
3952
+ <xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]" mode="dl_if"/>
3921
3953
  <!-- get paragraphs from nested 'dl' -->
3922
3954
  <xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]/*[local-name() = 'dl']" mode="dl_if_nested"/>
3923
3955
  </td>
@@ -3925,6 +3957,53 @@
3925
3957
  </xsl:template>
3926
3958
  <xsl:template match="*[local-name()='dd']" mode="dl_if"/>
3927
3959
 
3960
+ <xsl:template match="*" mode="dl_if">
3961
+ <xsl:copy-of select="."/>
3962
+ </xsl:template>
3963
+
3964
+ <xsl:template match="*[local-name() = 'p']" mode="dl_if">
3965
+ <xsl:param name="indent"/>
3966
+ <p>
3967
+ <xsl:copy-of select="@*"/>
3968
+ <xsl:value-of select="$indent"/>
3969
+ <xsl:copy-of select="node()"/>
3970
+ </p>
3971
+
3972
+ </xsl:template>
3973
+
3974
+ <xsl:template match="*[local-name() = 'ul' or local-name() = 'ol']" mode="dl_if">
3975
+ <xsl:variable name="list_rendered_">
3976
+ <xsl:apply-templates select="."/>
3977
+ </xsl:variable>
3978
+ <xsl:variable name="list_rendered" select="xalan:nodeset($list_rendered_)"/>
3979
+
3980
+ <xsl:variable name="indent">
3981
+ <xsl:for-each select="($list_rendered//fo:block[not(.//fo:block)])[1]">
3982
+ <xsl:apply-templates select="ancestor::*[@provisional-distance-between-starts]/@provisional-distance-between-starts" mode="dl_if"/>
3983
+ </xsl:for-each>
3984
+ </xsl:variable>
3985
+
3986
+ <xsl:apply-templates mode="dl_if">
3987
+ <xsl:with-param name="indent" select="$indent"/>
3988
+ </xsl:apply-templates>
3989
+ </xsl:template>
3990
+
3991
+ <xsl:template match="*[local-name() = 'li']" mode="dl_if">
3992
+ <xsl:param name="indent"/>
3993
+ <xsl:apply-templates mode="dl_if">
3994
+ <xsl:with-param name="indent" select="$indent"/>
3995
+ </xsl:apply-templates>
3996
+ </xsl:template>
3997
+
3998
+ <xsl:template match="@provisional-distance-between-starts" mode="dl_if">
3999
+ <xsl:variable name="value" select="round(substring-before(.,'mm'))"/>
4000
+ <!-- emulate left indent for list item -->
4001
+ <xsl:call-template name="repeat">
4002
+ <xsl:with-param name="char" select="'x'"/>
4003
+ <xsl:with-param name="count" select="$value"/>
4004
+ </xsl:call-template>
4005
+ </xsl:template>
4006
+
3928
4007
  <xsl:template match="*[local-name()='dl']" mode="dl_if_nested">
3929
4008
  <xsl:for-each select="*[local-name() = 'dt']">
3930
4009
  <p>
@@ -4320,6 +4399,7 @@
4320
4399
  </word>
4321
4400
  <xsl:call-template name="tokenize_with_tags">
4322
4401
  <xsl:with-param name="text" select="substring-after($text, $separator)"/>
4402
+ <xsl:with-param name="tags" select="$tags"/>
4323
4403
  </xsl:call-template>
4324
4404
  </xsl:otherwise>
4325
4405
  </xsl:choose>
@@ -4359,8 +4439,18 @@
4359
4439
 
4360
4440
  <xsl:template name="add-zero-spaces-java">
4361
4441
  <xsl:param name="text" select="."/>
4362
- <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space -->
4363
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($text),'(-|\.|:|=|_|—| )','$1​')"/>
4442
+ <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, arrow right -->
4443
+ <xsl:variable name="text1" select="java:replaceAll(java:java.lang.String.new($text),'(-|\.|:|=|_|—| |→)','$1​')"/>
4444
+ <!-- add zero-width space (#x200B) after characters: 'great than' -->
4445
+ <xsl:variable name="text2" select="java:replaceAll(java:java.lang.String.new($text1), '(\u003e)(?!\u003e)', '$1​')"/><!-- negative lookahead: 'great than' not followed by 'great than' -->
4446
+ <!-- add zero-width space (#x200B) before characters: 'less than' -->
4447
+ <xsl:variable name="text3" select="java:replaceAll(java:java.lang.String.new($text2), '(?&lt;!\u003c)(\u003c)', '​$1')"/> <!-- (?<!\u003c)(\u003c) --> <!-- negative lookbehind: 'less than' not preceeded by 'less than' -->
4448
+ <!-- add zero-width space (#x200B) before character: { -->
4449
+ <xsl:variable name="text4" select="java:replaceAll(java:java.lang.String.new($text3), '(?&lt;!\W)(\{)', '​$1')"/> <!-- negative lookbehind: '{' not preceeded by 'punctuation char' -->
4450
+ <!-- add zero-width space (#x200B) after character: , -->
4451
+ <xsl:variable name="text5" select="java:replaceAll(java:java.lang.String.new($text4), '(\,)(?!\d)', '$1​')"/> <!-- negative lookahead: ',' not followed by digit -->
4452
+
4453
+ <xsl:value-of select="$text5"/>
4364
4454
  </xsl:template>
4365
4455
 
4366
4456
  <xsl:template name="add-zero-spaces-link-java">
@@ -4506,7 +4596,7 @@
4506
4596
  </xsl:copy>
4507
4597
  </xsl:template>
4508
4598
 
4509
- <xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p'])]" mode="table-without-br">
4599
+ <xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p']) and not(*[local-name()='sourcecode'])]" mode="table-without-br">
4510
4600
  <xsl:copy>
4511
4601
  <xsl:copy-of select="@*"/>
4512
4602
  <p>
@@ -4554,6 +4644,28 @@
4554
4644
  </xsl:for-each>
4555
4645
  </xsl:template>
4556
4646
 
4647
+ <xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'sourcecode']" mode="table-without-br">
4648
+ <xsl:apply-templates mode="table-without-br"/>
4649
+ </xsl:template>
4650
+
4651
+ <xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'sourcecode']/text()[contains(., '&#13;') or contains(., '&#10;')]" mode="table-without-br">
4652
+
4653
+ <xsl:variable name="sep">###SOURCECODE_NEWLINE###</xsl:variable>
4654
+ <xsl:variable name="sourcecode_text" select="java:replaceAll(java:java.lang.String.new(.),'(&#13;&#10;|&#13;|&#10;)', $sep)"/>
4655
+ <xsl:variable name="items">
4656
+ <xsl:call-template name="split">
4657
+ <xsl:with-param name="pText" select="$sourcecode_text"/>
4658
+ <xsl:with-param name="sep" select="$sep"/>
4659
+ <xsl:with-param name="normalize-space">false</xsl:with-param>
4660
+ </xsl:call-template>
4661
+ </xsl:variable>
4662
+ <xsl:for-each select="xalan:nodeset($items)/*">
4663
+ <p>
4664
+ <sourcecode><xsl:copy-of select="node()"/></sourcecode>
4665
+ </p>
4666
+ </xsl:for-each>
4667
+ </xsl:template>
4668
+
4557
4669
  <!-- remove redundant white spaces -->
4558
4670
  <xsl:template match="text()[not(ancestor::*[local-name() = 'sourcecode'])]" mode="table-without-br">
4559
4671
  <xsl:variable name="text" select="translate(.,'&#9;&#10;&#13;','')"/>
@@ -4864,6 +4976,7 @@
4864
4976
  <xsl:if test="ancestor::*[local-name() = 'sub']"><tag>sub</tag></xsl:if>
4865
4977
  <xsl:if test="ancestor::*[local-name() = 'sup']"><tag>sup</tag></xsl:if>
4866
4978
  <xsl:if test="ancestor::*[local-name() = 'tt']"><tag>tt</tag></xsl:if>
4979
+ <xsl:if test="ancestor::*[local-name() = 'sourcecode']"><tag>sourcecode</tag></xsl:if>
4867
4980
  <xsl:if test="ancestor::*[local-name() = 'keep-together_within-line']"><tag>keep-together_within-line</tag></xsl:if>
4868
4981
  </tags>
4869
4982
  </xsl:template>
@@ -4926,6 +5039,9 @@
4926
5039
  <xsl:value-of select="substring($str, 2)"/>
4927
5040
  </xsl:template>
4928
5041
 
5042
+ <!-- ======================================= -->
5043
+ <!-- math -->
5044
+ <!-- ======================================= -->
4929
5045
  <xsl:template match="mathml:math">
4930
5046
  <xsl:variable name="isAdded" select="@added"/>
4931
5047
  <xsl:variable name="isDeleted" select="@deleted"/>
@@ -4976,14 +5092,57 @@
4976
5092
  <xsl:value-of select="$comment_text"/>
4977
5093
  </xsl:template>
4978
5094
 
5095
+ <xsl:template match="*[local-name() = 'asciimath']">
5096
+ <xsl:param name="process" select="'false'"/>
5097
+ <xsl:if test="$process = 'true'">
5098
+ <xsl:apply-templates/>
5099
+ </xsl:if>
5100
+ </xsl:template>
5101
+
5102
+ <xsl:template match="*[local-name() = 'latexmath']"/>
5103
+
5104
+ <xsl:template name="getMathml_asciimath_text">
5105
+ <xsl:variable name="asciimath" select="../*[local-name() = 'asciimath']"/>
5106
+ <xsl:variable name="latexmath">
5107
+
5108
+ </xsl:variable>
5109
+ <xsl:variable name="asciimath_text_following">
5110
+ <xsl:choose>
5111
+ <xsl:when test="normalize-space($latexmath) != ''">
5112
+ <xsl:value-of select="$latexmath"/>
5113
+ </xsl:when>
5114
+ <xsl:when test="normalize-space($asciimath) != ''">
5115
+ <xsl:value-of select="$asciimath"/>
5116
+ </xsl:when>
5117
+ <xsl:otherwise>
5118
+ <xsl:value-of select="following-sibling::node()[1][self::comment()]"/>
5119
+ </xsl:otherwise>
5120
+ </xsl:choose>
5121
+ </xsl:variable>
5122
+ <xsl:variable name="asciimath_text_">
5123
+ <xsl:choose>
5124
+ <xsl:when test="normalize-space($asciimath_text_following) != ''">
5125
+ <xsl:value-of select="$asciimath_text_following"/>
5126
+ </xsl:when>
5127
+ <xsl:otherwise>
5128
+ <xsl:value-of select="normalize-space(translate(.,' ⁢',' '))"/>
5129
+ </xsl:otherwise>
5130
+ </xsl:choose>
5131
+ </xsl:variable>
5132
+ <xsl:variable name="asciimath_text_2" select="java:org.metanorma.fop.Util.unescape($asciimath_text_)"/>
5133
+ <xsl:variable name="asciimath_text" select="java:trim(java:java.lang.String.new($asciimath_text_2))"/>
5134
+ <xsl:value-of select="$asciimath_text"/>
5135
+ </xsl:template>
5136
+
4979
5137
  <xsl:template name="mathml_instream_object">
4980
- <xsl:param name="comment_text"/>
5138
+ <xsl:param name="asciimath_text"/>
4981
5139
  <xsl:param name="mathml_content"/>
4982
5140
 
4983
- <xsl:variable name="comment_text_">
5141
+ <xsl:variable name="asciimath_text_">
4984
5142
  <xsl:choose>
4985
- <xsl:when test="normalize-space($comment_text) != ''"><xsl:value-of select="$comment_text"/></xsl:when>
4986
- <xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise>
5143
+ <xsl:when test="normalize-space($asciimath_text) != ''"><xsl:value-of select="$asciimath_text"/></xsl:when>
5144
+ <!-- <xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise> -->
5145
+ <xsl:otherwise><xsl:call-template name="getMathml_asciimath_text"/></xsl:otherwise>
4987
5146
  </xsl:choose>
4988
5147
  </xsl:variable>
4989
5148
 
@@ -5000,10 +5159,10 @@
5000
5159
  </xsl:attribute>
5001
5160
 
5002
5161
  <!-- <xsl:if test="$add_math_as_text = 'true'"> -->
5003
- <xsl:if test="normalize-space($comment_text_) != ''">
5162
+ <xsl:if test="normalize-space($asciimath_text_) != ''">
5004
5163
  <!-- put Mathin Alternate Text -->
5005
5164
  <xsl:attribute name="fox:alt-text">
5006
- <xsl:value-of select="$comment_text_"/>
5165
+ <xsl:value-of select="$asciimath_text_"/>
5007
5166
  </xsl:attribute>
5008
5167
  </xsl:if>
5009
5168
  <!-- </xsl:if> -->
@@ -5076,6 +5235,29 @@
5076
5235
  <xsl:value-of select="."/><xsl:value-of select="$zero_width_space"/>
5077
5236
  </xsl:template>
5078
5237
 
5238
+ <!-- Examples:
5239
+ <stem type="AsciiMath">x = 1</stem>
5240
+ <stem type="AsciiMath"><asciimath>x = 1</asciimath></stem>
5241
+ <stem type="AsciiMath"><asciimath>x = 1</asciimath><latexmath>x = 1</latexmath></stem>
5242
+ -->
5243
+ <xsl:template match="*[local-name() = 'stem'][@type = 'AsciiMath'][count(*) = 0]/text() | *[local-name() = 'stem'][@type = 'AsciiMath'][*[local-name() = 'asciimath']]" priority="3">
5244
+ <fo:inline xsl:use-attribute-sets="mathml-style">
5245
+
5246
+ <xsl:choose>
5247
+ <xsl:when test="self::text()"><xsl:value-of select="."/></xsl:when>
5248
+ <xsl:otherwise>
5249
+ <xsl:apply-templates>
5250
+ <xsl:with-param name="process">true</xsl:with-param>
5251
+ </xsl:apply-templates>
5252
+ </xsl:otherwise>
5253
+ </xsl:choose>
5254
+
5255
+ </fo:inline>
5256
+ </xsl:template>
5257
+ <!-- ======================================= -->
5258
+ <!-- END: math -->
5259
+ <!-- ======================================= -->
5260
+
5079
5261
  <xsl:template match="*[local-name()='localityStack']"/>
5080
5262
 
5081
5263
  <xsl:template match="*[local-name()='link']" name="link">
@@ -5282,6 +5464,12 @@
5282
5464
  <xsl:attribute name="margin-bottom">0pt</xsl:attribute>
5283
5465
  </xsl:if>
5284
5466
 
5467
+ <!-- <xsl:if test="$namespace = 'iho'">
5468
+ <xsl:if test="ancestor::iho:td">
5469
+ <xsl:attribute name="font-size">12pt</xsl:attribute>
5470
+ </xsl:if>
5471
+ </xsl:if> -->
5472
+
5285
5473
  <fo:block>
5286
5474
 
5287
5475
  <fo:inline xsl:use-attribute-sets="note-name-style">
@@ -6416,44 +6604,22 @@
6416
6604
  <xsl:apply-templates mode="contents_item"/>
6417
6605
  </xsl:template>
6418
6606
 
6419
- <!-- ====== -->
6420
- <!-- sourcecode -->
6421
- <!-- ====== -->
6607
+ <!-- =============== -->
6608
+ <!-- sourcecode -->
6609
+ <!-- =============== -->
6422
6610
  <xsl:template match="*[local-name()='sourcecode']" name="sourcecode">
6423
6611
 
6424
- <fo:block-container xsl:use-attribute-sets="sourcecode-container-style">
6425
-
6426
- <xsl:if test="not(ancestor::*[local-name() = 'li']) or ancestor::*[local-name() = 'example']">
6427
- <xsl:attribute name="margin-left">0mm</xsl:attribute>
6428
- </xsl:if>
6429
-
6430
- <xsl:if test="ancestor::*[local-name() = 'example']">
6431
- <xsl:attribute name="margin-right">0mm</xsl:attribute>
6432
- </xsl:if>
6433
-
6434
- <xsl:copy-of select="@id"/>
6435
-
6436
- <xsl:if test="parent::*[local-name() = 'note']">
6437
- <xsl:attribute name="margin-left">
6438
- <xsl:choose>
6439
- <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
6440
- <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
6441
- </xsl:choose>
6442
- </xsl:attribute>
6443
-
6444
- </xsl:if>
6445
- <fo:block-container margin-left="0mm">
6446
-
6447
- <fo:block xsl:use-attribute-sets="sourcecode-style">
6448
- <xsl:variable name="_font-size">
6449
- 10
6612
+ <xsl:variable name="sourcecode_attributes">
6613
+ <xsl:element name="sourcecode_attributes" use-attribute-sets="sourcecode-style">
6614
+ <xsl:variable name="_font-size">
6615
+ 10
6450
6616
 
6451
6617
 
6452
- <!-- 9 -->
6618
+ <!-- 9 -->
6453
6619
 
6454
- <!-- <xsl:if test="$namespace = 'ieee'">
6455
- <xsl:if test="$current_template = 'standard'">8</xsl:if>
6456
- </xsl:if> -->
6620
+ <!-- <xsl:if test="$namespace = 'ieee'">
6621
+ <xsl:if test="$current_template = 'standard'">8</xsl:if>
6622
+ </xsl:if> -->
6457
6623
 
6458
6624
  </xsl:variable>
6459
6625
 
@@ -6468,14 +6634,60 @@
6468
6634
  </xsl:choose>
6469
6635
  </xsl:attribute>
6470
6636
  </xsl:if>
6637
+ </xsl:element>
6638
+ </xsl:variable>
6471
6639
 
6640
+ <xsl:choose>
6641
+ <xsl:when test="$isGenerateTableIF = 'true' and (ancestor::*[local-name() = 'td'] or ancestor::*[local-name() = 'th'])">
6642
+ <xsl:for-each select="xalan:nodeset($sourcecode_attributes)/sourcecode_attributes/@*">
6643
+ <xsl:attribute name="{local-name()}">
6644
+ <xsl:value-of select="."/>
6645
+ </xsl:attribute>
6646
+ </xsl:for-each>
6472
6647
  <xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
6473
- </fo:block>
6648
+ </xsl:when>
6474
6649
 
6475
- <xsl:apply-templates select="*[local-name()='name']"/> <!-- show sourcecode's name AFTER content -->
6650
+ <xsl:otherwise>
6651
+ <fo:block-container xsl:use-attribute-sets="sourcecode-container-style">
6476
6652
 
6477
- </fo:block-container>
6478
- </fo:block-container>
6653
+ <xsl:if test="not(ancestor::*[local-name() = 'li']) or ancestor::*[local-name() = 'example']">
6654
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
6655
+ </xsl:if>
6656
+
6657
+ <xsl:if test="ancestor::*[local-name() = 'example']">
6658
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
6659
+ </xsl:if>
6660
+
6661
+ <xsl:copy-of select="@id"/>
6662
+
6663
+ <xsl:if test="parent::*[local-name() = 'note']">
6664
+ <xsl:attribute name="margin-left">
6665
+ <xsl:choose>
6666
+ <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
6667
+ <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
6668
+ </xsl:choose>
6669
+ </xsl:attribute>
6670
+
6671
+ </xsl:if>
6672
+ <fo:block-container margin-left="0mm">
6673
+
6674
+ <fo:block xsl:use-attribute-sets="sourcecode-style">
6675
+
6676
+ <xsl:for-each select="xalan:nodeset($sourcecode_attributes)/sourcecode_attributes/@*">
6677
+ <xsl:attribute name="{local-name()}">
6678
+ <xsl:value-of select="."/>
6679
+ </xsl:attribute>
6680
+ </xsl:for-each>
6681
+
6682
+ <xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
6683
+ </fo:block>
6684
+
6685
+ <xsl:apply-templates select="*[local-name()='name']"/> <!-- show sourcecode's name AFTER content -->
6686
+
6687
+ </fo:block-container>
6688
+ </fo:block-container>
6689
+ </xsl:otherwise>
6690
+ </xsl:choose>
6479
6691
  </xsl:template>
6480
6692
 
6481
6693
  <xsl:template match="*[local-name()='sourcecode']/text()" priority="2">
@@ -6717,8 +6929,22 @@
6717
6929
  </fo:block>
6718
6930
  </xsl:if>
6719
6931
  </xsl:template>
6720
- <!-- ====== -->
6721
- <!-- ====== -->
6932
+ <!-- =============== -->
6933
+ <!-- END sourcecode -->
6934
+ <!-- =============== -->
6935
+
6936
+ <!-- =============== -->
6937
+ <!-- pre -->
6938
+ <!-- =============== -->
6939
+ <xsl:template match="*[local-name()='pre']" name="pre">
6940
+ <fo:block xsl:use-attribute-sets="pre-style">
6941
+ <xsl:copy-of select="@id"/>
6942
+ <xsl:apply-templates/>
6943
+ </fo:block>
6944
+ </xsl:template>
6945
+ <!-- =============== -->
6946
+ <!-- pre -->
6947
+ <!-- =============== -->
6722
6948
 
6723
6949
  <!-- ========== -->
6724
6950
  <!-- permission -->
@@ -8675,7 +8901,9 @@
8675
8901
  <!-- ===================================== -->
8676
8902
  <!-- Update xml -->
8677
8903
  <!-- ===================================== -->
8904
+ <!-- =========================================================================== -->
8678
8905
  <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
8906
+ <!-- =========================================================================== -->
8679
8907
  <xsl:template match="@*|node()" mode="update_xml_step1">
8680
8908
  <xsl:copy>
8681
8909
  <xsl:apply-templates select="@*|node()" mode="update_xml_step1"/>
@@ -8767,10 +8995,15 @@
8767
8995
  <xsl:template match="*[local-name() = 'span']" mode="update_xml_step1">
8768
8996
  <xsl:apply-templates mode="update_xml_step1"/>
8769
8997
  </xsl:template>
8770
-
8998
+ <!-- =========================================================================== -->
8771
8999
  <!-- END STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
9000
+ <!-- =========================================================================== -->
8772
9001
 
9002
+ <!-- =========================================================================== -->
8773
9003
  <!-- XML UPDATE STEP: enclose standard's name into tag 'keep-together_within-line' -->
9004
+ <!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
9005
+ <!-- keep-together_within-line for: a.b, aaa.b, a.bbb, .b in table's cell ONLY -->
9006
+ <!-- =========================================================================== -->
8774
9007
  <!-- Example: <keep-together_within-line>ISO 10303-51</keep-together_within-line> -->
8775
9008
  <xsl:template match="@*|node()" mode="update_xml_enclose_keep-together_within-line">
8776
9009
  <xsl:copy>
@@ -8786,10 +9019,15 @@
8786
9019
  <xsl:template match="text()[not(ancestor::*[local-name() = 'bibdata'] or ancestor::*[local-name() = 'link'][not(contains(.,' '))] or ancestor::*[local-name() = 'sourcecode'] or ancestor::*[local-name() = 'math'] or starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.') )]" name="keep_together_standard_number" mode="update_xml_enclose_keep-together_within-line">
8787
9020
 
8788
9021
  <!-- enclose standard's number into tag 'keep-together_within-line' -->
8789
- <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
8790
9022
  <xsl:variable name="tag_keep-together_within-line_open">###<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
8791
9023
  <xsl:variable name="tag_keep-together_within-line_close">###/<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
8792
- <xsl:variable name="text_" select="java:replaceAll(java:java.lang.String.new(.),$regex_standard_reference,concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
9024
+ <xsl:variable name="text__" select="java:replaceAll(java:java.lang.String.new(.), $regex_standard_reference, concat($tag_keep-together_within-line_open,'$1',$tag_keep-together_within-line_close))"/>
9025
+ <xsl:variable name="text_">
9026
+ <xsl:choose>
9027
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:value-of select="."/></xsl:when> <!-- no need enclose standard's number into tag 'keep-together_within-line' in table cells -->
9028
+ <xsl:otherwise><xsl:value-of select="$text__"/></xsl:otherwise>
9029
+ </xsl:choose>
9030
+ </xsl:variable>
8793
9031
  <xsl:variable name="text"><text><xsl:call-template name="replace_text_tags">
8794
9032
  <xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
8795
9033
  <xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
@@ -8805,7 +9043,11 @@
8805
9043
  </xsl:variable>
8806
9044
 
8807
9045
  <!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
8808
- <xsl:variable name="regex_solidus_units">((\b((\S{1,3}\/\S+)|(\S+\/\S{1,3}))\b)|(\/\S{1,3})\b)</xsl:variable>
9046
+ <!-- \S matches any non-whitespace character (equivalent to [^\r\n\t\f\v ]) -->
9047
+ <!-- <xsl:variable name="regex_solidus_units">((\b((\S{1,3}\/\S+)|(\S+\/\S{1,3}))\b)|(\/\S{1,3})\b)</xsl:variable> -->
9048
+ <!-- add &lt; and &gt; to \S -->
9049
+ <xsl:variable name="regex_S">[^\r\n\t\f\v \&lt;&gt;]</xsl:variable>
9050
+ <xsl:variable name="regex_solidus_units">((\b((<xsl:value-of select="$regex_S"/>{1,3}\/<xsl:value-of select="$regex_S"/>+)|(<xsl:value-of select="$regex_S"/>+\/<xsl:value-of select="$regex_S"/>{1,3}))\b)|(\/<xsl:value-of select="$regex_S"/>{1,3})\b)</xsl:variable>
8809
9051
  <xsl:variable name="text3">
8810
9052
  <text><xsl:for-each select="xalan:nodeset($text2)/text/node()">
8811
9053
  <xsl:choose>
@@ -8869,9 +9111,8 @@
8869
9111
  <xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
8870
9112
  </xsl:choose>
8871
9113
  </xsl:template>
8872
-
8873
9114
  <!-- ===================================== -->
8874
- <!-- End Update xml -->
9115
+ <!-- END XML UPDATE STEP: enclose standard's name into tag 'keep-together_within-line' -->
8875
9116
  <!-- ===================================== -->
8876
9117
 
8877
9118
  <!-- for correct rendering combining chars -->
@@ -9259,13 +9500,14 @@
9259
9500
  </xsl:template>
9260
9501
 
9261
9502
  <xsl:template name="setId">
9503
+ <xsl:param name="prefix"/>
9262
9504
  <xsl:attribute name="id">
9263
9505
  <xsl:choose>
9264
9506
  <xsl:when test="@id">
9265
- <xsl:value-of select="@id"/>
9507
+ <xsl:value-of select="concat($prefix, @id)"/>
9266
9508
  </xsl:when>
9267
9509
  <xsl:otherwise>
9268
- <xsl:value-of select="generate-id()"/>
9510
+ <xsl:value-of select="concat($prefix, generate-id())"/>
9269
9511
  </xsl:otherwise>
9270
9512
  </xsl:choose>
9271
9513
  </xsl:attribute>