metanorma-bipm 2.1.11 → 2.1.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -1058,7 +1058,7 @@
1058
1058
  <!-- <xsl:copy-of select="$contents"/> -->
1059
1059
 
1060
1060
  <xsl:if test="$contents/doc[@id = $docid]//item[@display='true']">
1061
- <fo:table table-layout="fixed" width="100%">
1061
+ <fo:table table-layout="fixed" width="100%" id="__internal_layout__toc_{generate-id()}">
1062
1062
  <fo:table-column column-width="127mm"/>
1063
1063
  <fo:table-column column-width="12mm"/>
1064
1064
  <fo:table-body>
@@ -2242,8 +2242,13 @@
2242
2242
  <!-- ====== -->
2243
2243
 
2244
2244
  <xsl:template match="bipm:preface/*[not(local-name() = 'note' or local-name() = 'admonition')][1]" priority="3">
2245
- <fo:table table-layout="fixed" width="173.5mm">
2245
+ <fo:block keep-with-next="always">
2246
2246
  <xsl:call-template name="setId"/>
2247
+ </fo:block>
2248
+ <fo:table table-layout="fixed" width="173.5mm">
2249
+ <xsl:call-template name="setId">
2250
+ <xsl:with-param name="prefix">__internal_layout__</xsl:with-param>
2251
+ </xsl:call-template>
2247
2252
  <fo:table-column column-width="137mm"/>
2248
2253
  <fo:table-column column-width="2.5mm"/>
2249
2254
  <fo:table-column column-width="34mm"/>
@@ -2386,11 +2391,16 @@
2386
2391
  </xsl:variable>
2387
2392
  <xsl:variable name="space-before-value" select="normalize-space($space-before)"/>
2388
2393
 
2394
+ <fo:block keep-with-next="always">
2395
+ <xsl:call-template name="setId"/>
2396
+ </fo:block>
2389
2397
  <fo:table table-layout="fixed" width="174mm" line-height="135%">
2390
2398
  <xsl:if test="@orientation = 'landscape'">
2391
2399
  <xsl:attribute name="width">261mm</xsl:attribute> <!-- 87 = (297 - 210) -->
2392
2400
  </xsl:if>
2393
- <xsl:call-template name="setId"/>
2401
+ <xsl:call-template name="setId">
2402
+ <xsl:with-param name="prefix">__internal_layout__</xsl:with-param>
2403
+ </xsl:call-template>
2394
2404
  <xsl:if test="$space-before-value != ''">
2395
2405
  <xsl:attribute name="space-before"><xsl:value-of select="$space-before-value"/></xsl:attribute>
2396
2406
  </xsl:if>
@@ -3743,7 +3753,7 @@
3743
3753
  </fo:block>
3744
3754
  </fo:block-container>
3745
3755
  <!-- grey opacity -->
3746
- <fo:block-container absolute-position="fixed" left="0" top="0">
3756
+ <fo:block-container absolute-position="fixed" left="0" top="0" id="{concat('__internal_layout__', 'Logo-BIPM-Metro_', generate-id())}">
3747
3757
  <fo:block>
3748
3758
  <fo:instream-foreign-object content-height="{$pageHeight}mm" fox:alt-text="Background color">
3749
3759
  <svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="215.9mm" height="279.4mm">
@@ -3788,6 +3798,8 @@
3788
3798
  </xsl:if>
3789
3799
  </xsl:template>
3790
3800
 
3801
+ <xsl:strip-space elements="bipm:xref"/>
3802
+
3791
3803
  <!-- external parameters -->
3792
3804
 
3793
3805
  <xsl:param name="svg_images"/> <!-- svg images array -->
@@ -4215,6 +4227,12 @@
4215
4227
 
4216
4228
  </xsl:attribute-set>
4217
4229
 
4230
+ <xsl:attribute-set name="pre-style">
4231
+ <xsl:attribute name="font-family">Courier New, <xsl:value-of select="$font_noto_sans_mono"/></xsl:attribute>
4232
+ <xsl:attribute name="margin-bottom">6pt</xsl:attribute>
4233
+
4234
+ </xsl:attribute-set>
4235
+
4218
4236
  <xsl:attribute-set name="permission-style">
4219
4237
 
4220
4238
  </xsl:attribute-set>
@@ -4313,6 +4331,11 @@
4313
4331
  </xsl:variable>
4314
4332
  <xsl:variable name="table-border" select="normalize-space($table-border_)"/>
4315
4333
 
4334
+ <xsl:variable name="table-cell-border_">
4335
+
4336
+ </xsl:variable>
4337
+ <xsl:variable name="table-cell-border" select="normalize-space($table-cell-border_)"/>
4338
+
4316
4339
  <xsl:attribute-set name="table-container-style">
4317
4340
  <xsl:attribute name="margin-left">0mm</xsl:attribute>
4318
4341
  <xsl:attribute name="margin-right">0mm</xsl:attribute>
@@ -4325,8 +4348,6 @@
4325
4348
  <xsl:attribute-set name="table-style">
4326
4349
  <xsl:attribute name="table-omit-footer-at-break">true</xsl:attribute>
4327
4350
  <xsl:attribute name="table-layout">fixed</xsl:attribute>
4328
- <xsl:attribute name="margin-left">0mm</xsl:attribute>
4329
- <xsl:attribute name="margin-right">0mm</xsl:attribute>
4330
4351
 
4331
4352
  </xsl:attribute-set><!-- table-style -->
4332
4353
 
@@ -5174,17 +5195,22 @@
5174
5195
  </xsl:for-each>
5175
5196
  </xsl:template>
5176
5197
 
5198
+ <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
5177
5199
  <xsl:variable name="tag_fo_inline_keep-together_within-line_open">###fo:inline keep-together_within-line###</xsl:variable>
5178
5200
  <xsl:variable name="tag_fo_inline_keep-together_within-line_close">###/fo:inline keep-together_within-line###</xsl:variable>
5179
5201
  <xsl:template match="text()" name="text">
5180
5202
 
5181
- <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
5182
- <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))"/>
5183
- <xsl:call-template name="replace_fo_inline_tags">
5184
- <xsl:with-param name="tag_open" select="$tag_fo_inline_keep-together_within-line_open"/>
5185
- <xsl:with-param name="tag_close" select="$tag_fo_inline_keep-together_within-line_close"/>
5186
- <xsl:with-param name="text" select="$text"/>
5187
- </xsl:call-template>
5203
+ <xsl:choose>
5204
+ <xsl:when test="ancestor::*[local-name() = 'table']"><xsl:value-of select="."/></xsl:when>
5205
+ <xsl:otherwise>
5206
+ <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))"/>
5207
+ <xsl:call-template name="replace_fo_inline_tags">
5208
+ <xsl:with-param name="tag_open" select="$tag_fo_inline_keep-together_within-line_open"/>
5209
+ <xsl:with-param name="tag_close" select="$tag_fo_inline_keep-together_within-line_close"/>
5210
+ <xsl:with-param name="text" select="$text"/>
5211
+ </xsl:call-template>
5212
+ </xsl:otherwise>
5213
+ </xsl:choose>
5188
5214
 
5189
5215
  </xsl:template>
5190
5216
 
@@ -5459,6 +5485,12 @@
5459
5485
  <xsl:variable name="table_attributes">
5460
5486
 
5461
5487
  <xsl:element name="table_attributes" use-attribute-sets="table-style">
5488
+
5489
+ <xsl:if test="$margin-side != 0">
5490
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
5491
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
5492
+ </xsl:if>
5493
+
5462
5494
  <xsl:attribute name="width"><xsl:value-of select="normalize-space($table_width)"/></xsl:attribute>
5463
5495
 
5464
5496
  <xsl:if test="not(ancestor::*[local-name()='preface']) and not(ancestor::*[local-name()='note_side']) and not(ancestor::*[local-name() = 'annex'] and .//*[local-name() = 'xref'][@pagenumber]) and not(ancestor::*[local-name() = 'doccontrol'])">
@@ -6247,6 +6279,10 @@
6247
6279
  <xsl:template match="*[local-name()='tr']">
6248
6280
  <fo:table-row xsl:use-attribute-sets="table-body-row-style">
6249
6281
 
6282
+ <xsl:if test="count(*) = count(*[local-name() = 'th'])"> <!-- row contains 'th' only -->
6283
+ <xsl:attribute name="keep-with-next">always</xsl:attribute>
6284
+ </xsl:if>
6285
+
6250
6286
  <xsl:call-template name="setTableRowAttributes"/>
6251
6287
  <xsl:apply-templates/>
6252
6288
  </fo:table-row>
@@ -7262,7 +7298,8 @@
7262
7298
  <xsl:copy-of select="node()"/>
7263
7299
  </td>
7264
7300
  <td>
7265
- <xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]"/>
7301
+ <!-- <xsl:copy-of select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]"/> -->
7302
+ <xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]/node()[not(local-name() = 'dl')]" mode="dl_if"/>
7266
7303
  <!-- get paragraphs from nested 'dl' -->
7267
7304
  <xsl:apply-templates select="following-sibling::*[local-name()='dd'][1]/*[local-name() = 'dl']" mode="dl_if_nested"/>
7268
7305
  </td>
@@ -7270,6 +7307,53 @@
7270
7307
  </xsl:template>
7271
7308
  <xsl:template match="*[local-name()='dd']" mode="dl_if"/>
7272
7309
 
7310
+ <xsl:template match="*" mode="dl_if">
7311
+ <xsl:copy-of select="."/>
7312
+ </xsl:template>
7313
+
7314
+ <xsl:template match="*[local-name() = 'p']" mode="dl_if">
7315
+ <xsl:param name="indent"/>
7316
+ <p>
7317
+ <xsl:copy-of select="@*"/>
7318
+ <xsl:value-of select="$indent"/>
7319
+ <xsl:copy-of select="node()"/>
7320
+ </p>
7321
+
7322
+ </xsl:template>
7323
+
7324
+ <xsl:template match="*[local-name() = 'ul' or local-name() = 'ol']" mode="dl_if">
7325
+ <xsl:variable name="list_rendered_">
7326
+ <xsl:apply-templates select="."/>
7327
+ </xsl:variable>
7328
+ <xsl:variable name="list_rendered" select="xalan:nodeset($list_rendered_)"/>
7329
+
7330
+ <xsl:variable name="indent">
7331
+ <xsl:for-each select="($list_rendered//fo:block[not(.//fo:block)])[1]">
7332
+ <xsl:apply-templates select="ancestor::*[@provisional-distance-between-starts]/@provisional-distance-between-starts" mode="dl_if"/>
7333
+ </xsl:for-each>
7334
+ </xsl:variable>
7335
+
7336
+ <xsl:apply-templates mode="dl_if">
7337
+ <xsl:with-param name="indent" select="$indent"/>
7338
+ </xsl:apply-templates>
7339
+ </xsl:template>
7340
+
7341
+ <xsl:template match="*[local-name() = 'li']" mode="dl_if">
7342
+ <xsl:param name="indent"/>
7343
+ <xsl:apply-templates mode="dl_if">
7344
+ <xsl:with-param name="indent" select="$indent"/>
7345
+ </xsl:apply-templates>
7346
+ </xsl:template>
7347
+
7348
+ <xsl:template match="@provisional-distance-between-starts" mode="dl_if">
7349
+ <xsl:variable name="value" select="round(substring-before(.,'mm'))"/>
7350
+ <!-- emulate left indent for list item -->
7351
+ <xsl:call-template name="repeat">
7352
+ <xsl:with-param name="char" select="'x'"/>
7353
+ <xsl:with-param name="count" select="$value"/>
7354
+ </xsl:call-template>
7355
+ </xsl:template>
7356
+
7273
7357
  <xsl:template match="*[local-name()='dl']" mode="dl_if_nested">
7274
7358
  <xsl:for-each select="*[local-name() = 'dt']">
7275
7359
  <p>
@@ -7663,6 +7747,7 @@
7663
7747
  </word>
7664
7748
  <xsl:call-template name="tokenize_with_tags">
7665
7749
  <xsl:with-param name="text" select="substring-after($text, $separator)"/>
7750
+ <xsl:with-param name="tags" select="$tags"/>
7666
7751
  </xsl:call-template>
7667
7752
  </xsl:otherwise>
7668
7753
  </xsl:choose>
@@ -7702,8 +7787,18 @@
7702
7787
 
7703
7788
  <xsl:template name="add-zero-spaces-java">
7704
7789
  <xsl:param name="text" select="."/>
7705
- <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space -->
7706
- <xsl:value-of select="java:replaceAll(java:java.lang.String.new($text),'(-|\.|:|=|_|—| )','$1​')"/>
7790
+ <!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, arrow right -->
7791
+ <xsl:variable name="text1" select="java:replaceAll(java:java.lang.String.new($text),'(-|\.|:|=|_|—| |→)','$1​')"/>
7792
+ <!-- add zero-width space (#x200B) after characters: 'great than' -->
7793
+ <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' -->
7794
+ <!-- add zero-width space (#x200B) before characters: 'less than' -->
7795
+ <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' -->
7796
+ <!-- add zero-width space (#x200B) before character: { -->
7797
+ <xsl:variable name="text4" select="java:replaceAll(java:java.lang.String.new($text3), '(?&lt;!\W)(\{)', '​$1')"/> <!-- negative lookbehind: '{' not preceeded by 'punctuation char' -->
7798
+ <!-- add zero-width space (#x200B) after character: , -->
7799
+ <xsl:variable name="text5" select="java:replaceAll(java:java.lang.String.new($text4), '(\,)(?!\d)', '$1​')"/> <!-- negative lookahead: ',' not followed by digit -->
7800
+
7801
+ <xsl:value-of select="$text5"/>
7707
7802
  </xsl:template>
7708
7803
 
7709
7804
  <xsl:template name="add-zero-spaces-link-java">
@@ -7849,7 +7944,7 @@
7849
7944
  </xsl:copy>
7850
7945
  </xsl:template>
7851
7946
 
7852
- <xsl:template match="*[local-name()='th' or local-name() = 'td'][not(*[local-name()='br']) and not(*[local-name()='p'])]" mode="table-without-br">
7947
+ <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">
7853
7948
  <xsl:copy>
7854
7949
  <xsl:copy-of select="@*"/>
7855
7950
  <p>
@@ -7897,6 +7992,28 @@
7897
7992
  </xsl:for-each>
7898
7993
  </xsl:template>
7899
7994
 
7995
+ <xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'sourcecode']" mode="table-without-br">
7996
+ <xsl:apply-templates mode="table-without-br"/>
7997
+ </xsl:template>
7998
+
7999
+ <xsl:template match="*[local-name()='th' or local-name()='td']/*[local-name() = 'sourcecode']/text()[contains(., '&#13;') or contains(., '&#10;')]" mode="table-without-br">
8000
+
8001
+ <xsl:variable name="sep">###SOURCECODE_NEWLINE###</xsl:variable>
8002
+ <xsl:variable name="sourcecode_text" select="java:replaceAll(java:java.lang.String.new(.),'(&#13;&#10;|&#13;|&#10;)', $sep)"/>
8003
+ <xsl:variable name="items">
8004
+ <xsl:call-template name="split">
8005
+ <xsl:with-param name="pText" select="$sourcecode_text"/>
8006
+ <xsl:with-param name="sep" select="$sep"/>
8007
+ <xsl:with-param name="normalize-space">false</xsl:with-param>
8008
+ </xsl:call-template>
8009
+ </xsl:variable>
8010
+ <xsl:for-each select="xalan:nodeset($items)/*">
8011
+ <p>
8012
+ <sourcecode><xsl:copy-of select="node()"/></sourcecode>
8013
+ </p>
8014
+ </xsl:for-each>
8015
+ </xsl:template>
8016
+
7900
8017
  <!-- remove redundant white spaces -->
7901
8018
  <xsl:template match="text()[not(ancestor::*[local-name() = 'sourcecode'])]" mode="table-without-br">
7902
8019
  <xsl:variable name="text" select="translate(.,'&#9;&#10;&#13;','')"/>
@@ -8207,6 +8324,7 @@
8207
8324
  <xsl:if test="ancestor::*[local-name() = 'sub']"><tag>sub</tag></xsl:if>
8208
8325
  <xsl:if test="ancestor::*[local-name() = 'sup']"><tag>sup</tag></xsl:if>
8209
8326
  <xsl:if test="ancestor::*[local-name() = 'tt']"><tag>tt</tag></xsl:if>
8327
+ <xsl:if test="ancestor::*[local-name() = 'sourcecode']"><tag>sourcecode</tag></xsl:if>
8210
8328
  <xsl:if test="ancestor::*[local-name() = 'keep-together_within-line']"><tag>keep-together_within-line</tag></xsl:if>
8211
8329
  </tags>
8212
8330
  </xsl:template>
@@ -8269,6 +8387,9 @@
8269
8387
  <xsl:value-of select="substring($str, 2)"/>
8270
8388
  </xsl:template>
8271
8389
 
8390
+ <!-- ======================================= -->
8391
+ <!-- math -->
8392
+ <!-- ======================================= -->
8272
8393
  <xsl:template match="mathml:math">
8273
8394
  <xsl:variable name="isAdded" select="@added"/>
8274
8395
  <xsl:variable name="isDeleted" select="@deleted"/>
@@ -8304,17 +8425,18 @@
8304
8425
  <xsl:when test="$add_math_as_attachment = 'true' and normalize-space($filename) != ''">
8305
8426
  <xsl:variable name="url" select="concat('url(embedded-file:', $filename, ')')"/>
8306
8427
  <fo:basic-link external-destination="{$url}" fox:alt-text="MathLink">
8307
- <xsl:variable name="comment_text">
8308
- <xsl:call-template name="getMathml_comment_text"/>
8428
+ <xsl:variable name="asciimath_text">
8429
+ <!-- <xsl:call-template name="getMathml_comment_text"/> -->
8430
+ <xsl:call-template name="getMathml_asciimath_text"/>
8309
8431
  </xsl:variable>
8310
- <xsl:if test="normalize-space($comment_text) != ''">
8432
+ <xsl:if test="normalize-space($asciimath_text) != ''">
8311
8433
  <!-- put Mathin Alternate Text -->
8312
8434
  <xsl:attribute name="fox:alt-text">
8313
- <xsl:value-of select="$comment_text"/>
8435
+ <xsl:value-of select="$asciimath_text"/>
8314
8436
  </xsl:attribute>
8315
8437
  </xsl:if>
8316
8438
  <xsl:call-template name="mathml_instream_object">
8317
- <xsl:with-param name="comment_text" select="$comment_text"/>
8439
+ <xsl:with-param name="asciimath_text" select="$asciimath_text"/>
8318
8440
  <xsl:with-param name="mathml_content" select="$mathml_content"/>
8319
8441
  </xsl:call-template>
8320
8442
  </fo:basic-link>
@@ -8325,7 +8447,7 @@
8325
8447
  </xsl:call-template>
8326
8448
  </xsl:otherwise>
8327
8449
  </xsl:choose>
8328
- <!-- end BSI -->
8450
+ <!-- end BIPM -->
8329
8451
 
8330
8452
  </fo:inline>
8331
8453
  </xsl:template>
@@ -8347,14 +8469,57 @@
8347
8469
  <xsl:value-of select="$comment_text"/>
8348
8470
  </xsl:template>
8349
8471
 
8472
+ <xsl:template match="*[local-name() = 'asciimath']">
8473
+ <xsl:param name="process" select="'false'"/>
8474
+ <xsl:if test="$process = 'true'">
8475
+ <xsl:apply-templates/>
8476
+ </xsl:if>
8477
+ </xsl:template>
8478
+
8479
+ <xsl:template match="*[local-name() = 'latexmath']"/>
8480
+
8481
+ <xsl:template name="getMathml_asciimath_text">
8482
+ <xsl:variable name="asciimath" select="../*[local-name() = 'asciimath']"/>
8483
+ <xsl:variable name="latexmath">
8484
+
8485
+ </xsl:variable>
8486
+ <xsl:variable name="asciimath_text_following">
8487
+ <xsl:choose>
8488
+ <xsl:when test="normalize-space($latexmath) != ''">
8489
+ <xsl:value-of select="$latexmath"/>
8490
+ </xsl:when>
8491
+ <xsl:when test="normalize-space($asciimath) != ''">
8492
+ <xsl:value-of select="$asciimath"/>
8493
+ </xsl:when>
8494
+ <xsl:otherwise>
8495
+ <xsl:value-of select="following-sibling::node()[1][self::comment()]"/>
8496
+ </xsl:otherwise>
8497
+ </xsl:choose>
8498
+ </xsl:variable>
8499
+ <xsl:variable name="asciimath_text_">
8500
+ <xsl:choose>
8501
+ <xsl:when test="normalize-space($asciimath_text_following) != ''">
8502
+ <xsl:value-of select="$asciimath_text_following"/>
8503
+ </xsl:when>
8504
+ <xsl:otherwise>
8505
+ <xsl:value-of select="normalize-space(translate(.,' ⁢',' '))"/>
8506
+ </xsl:otherwise>
8507
+ </xsl:choose>
8508
+ </xsl:variable>
8509
+ <xsl:variable name="asciimath_text_2" select="java:org.metanorma.fop.Util.unescape($asciimath_text_)"/>
8510
+ <xsl:variable name="asciimath_text" select="java:trim(java:java.lang.String.new($asciimath_text_2))"/>
8511
+ <xsl:value-of select="$asciimath_text"/>
8512
+ </xsl:template>
8513
+
8350
8514
  <xsl:template name="mathml_instream_object">
8351
- <xsl:param name="comment_text"/>
8515
+ <xsl:param name="asciimath_text"/>
8352
8516
  <xsl:param name="mathml_content"/>
8353
8517
 
8354
- <xsl:variable name="comment_text_">
8518
+ <xsl:variable name="asciimath_text_">
8355
8519
  <xsl:choose>
8356
- <xsl:when test="normalize-space($comment_text) != ''"><xsl:value-of select="$comment_text"/></xsl:when>
8357
- <xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise>
8520
+ <xsl:when test="normalize-space($asciimath_text) != ''"><xsl:value-of select="$asciimath_text"/></xsl:when>
8521
+ <!-- <xsl:otherwise><xsl:call-template name="getMathml_comment_text"/></xsl:otherwise> -->
8522
+ <xsl:otherwise><xsl:call-template name="getMathml_asciimath_text"/></xsl:otherwise>
8358
8523
  </xsl:choose>
8359
8524
  </xsl:variable>
8360
8525
 
@@ -8378,10 +8543,10 @@
8378
8543
  </xsl:attribute>
8379
8544
 
8380
8545
  <!-- <xsl:if test="$add_math_as_text = 'true'"> -->
8381
- <xsl:if test="normalize-space($comment_text_) != ''">
8546
+ <xsl:if test="normalize-space($asciimath_text_) != ''">
8382
8547
  <!-- put Mathin Alternate Text -->
8383
8548
  <xsl:attribute name="fox:alt-text">
8384
- <xsl:value-of select="$comment_text_"/>
8549
+ <xsl:value-of select="$asciimath_text_"/>
8385
8550
  </xsl:attribute>
8386
8551
  </xsl:if>
8387
8552
  <!-- </xsl:if> -->
@@ -8454,6 +8619,33 @@
8454
8619
  <xsl:value-of select="."/><xsl:value-of select="$zero_width_space"/>
8455
8620
  </xsl:template>
8456
8621
 
8622
+ <!-- Examples:
8623
+ <stem type="AsciiMath">x = 1</stem>
8624
+ <stem type="AsciiMath"><asciimath>x = 1</asciimath></stem>
8625
+ <stem type="AsciiMath"><asciimath>x = 1</asciimath><latexmath>x = 1</latexmath></stem>
8626
+ -->
8627
+ <xsl:template match="*[local-name() = 'stem'][@type = 'AsciiMath'][count(*) = 0]/text() | *[local-name() = 'stem'][@type = 'AsciiMath'][*[local-name() = 'asciimath']]" priority="3">
8628
+ <fo:inline xsl:use-attribute-sets="mathml-style">
8629
+
8630
+ <xsl:if test="ancestor::*[local-name()='table']">
8631
+ <xsl:attribute name="font-size">95%</xsl:attribute> <!-- base font in table is 10pt -->
8632
+ </xsl:if>
8633
+
8634
+ <xsl:choose>
8635
+ <xsl:when test="self::text()"><xsl:value-of select="."/></xsl:when>
8636
+ <xsl:otherwise>
8637
+ <xsl:apply-templates>
8638
+ <xsl:with-param name="process">true</xsl:with-param>
8639
+ </xsl:apply-templates>
8640
+ </xsl:otherwise>
8641
+ </xsl:choose>
8642
+
8643
+ </fo:inline>
8644
+ </xsl:template>
8645
+ <!-- ======================================= -->
8646
+ <!-- END: math -->
8647
+ <!-- ======================================= -->
8648
+
8457
8649
  <xsl:template match="*[local-name()='localityStack']"/>
8458
8650
 
8459
8651
  <xsl:template match="*[local-name()='link']" name="link">
@@ -8661,6 +8853,12 @@
8661
8853
 
8662
8854
  <fo:block-container margin-left="0mm">
8663
8855
 
8856
+ <!-- <xsl:if test="$namespace = 'iho'">
8857
+ <xsl:if test="ancestor::iho:td">
8858
+ <xsl:attribute name="font-size">12pt</xsl:attribute>
8859
+ </xsl:if>
8860
+ </xsl:if> -->
8861
+
8664
8862
  <fo:block>
8665
8863
 
8666
8864
  <xsl:if test="@parent-type = 'quote'">
@@ -9834,42 +10032,20 @@
9834
10032
  <xsl:apply-templates mode="contents_item"/>
9835
10033
  </xsl:template>
9836
10034
 
9837
- <!-- ====== -->
9838
- <!-- sourcecode -->
9839
- <!-- ====== -->
10035
+ <!-- =============== -->
10036
+ <!-- sourcecode -->
10037
+ <!-- =============== -->
9840
10038
  <xsl:template match="*[local-name()='sourcecode']" name="sourcecode">
9841
10039
 
9842
- <fo:block-container xsl:use-attribute-sets="sourcecode-container-style">
9843
-
9844
- <xsl:if test="not(ancestor::*[local-name() = 'li']) or ancestor::*[local-name() = 'example']">
9845
- <xsl:attribute name="margin-left">0mm</xsl:attribute>
9846
- </xsl:if>
9847
-
9848
- <xsl:if test="ancestor::*[local-name() = 'example']">
9849
- <xsl:attribute name="margin-right">0mm</xsl:attribute>
9850
- </xsl:if>
10040
+ <xsl:variable name="sourcecode_attributes">
10041
+ <xsl:element name="sourcecode_attributes" use-attribute-sets="sourcecode-style">
10042
+ <xsl:variable name="_font-size">
9851
10043
 
9852
- <xsl:copy-of select="@id"/>
9853
-
9854
- <xsl:if test="parent::*[local-name() = 'note']">
9855
- <xsl:attribute name="margin-left">
9856
- <xsl:choose>
9857
- <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
9858
- <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
9859
- </xsl:choose>
9860
- </xsl:attribute>
10044
+ <!-- 9 -->
9861
10045
 
9862
- </xsl:if>
9863
- <fo:block-container margin-left="0mm">
9864
-
9865
- <fo:block xsl:use-attribute-sets="sourcecode-style">
9866
- <xsl:variable name="_font-size">
9867
-
9868
- <!-- 9 -->
9869
-
9870
- <!-- <xsl:if test="$namespace = 'ieee'">
9871
- <xsl:if test="$current_template = 'standard'">8</xsl:if>
9872
- </xsl:if> -->
10046
+ <!-- <xsl:if test="$namespace = 'ieee'">
10047
+ <xsl:if test="$current_template = 'standard'">8</xsl:if>
10048
+ </xsl:if> -->
9873
10049
 
9874
10050
  </xsl:variable>
9875
10051
 
@@ -9884,14 +10060,60 @@
9884
10060
  </xsl:choose>
9885
10061
  </xsl:attribute>
9886
10062
  </xsl:if>
10063
+ </xsl:element>
10064
+ </xsl:variable>
9887
10065
 
10066
+ <xsl:choose>
10067
+ <xsl:when test="$isGenerateTableIF = 'true' and (ancestor::*[local-name() = 'td'] or ancestor::*[local-name() = 'th'])">
10068
+ <xsl:for-each select="xalan:nodeset($sourcecode_attributes)/sourcecode_attributes/@*">
10069
+ <xsl:attribute name="{local-name()}">
10070
+ <xsl:value-of select="."/>
10071
+ </xsl:attribute>
10072
+ </xsl:for-each>
9888
10073
  <xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
9889
- </fo:block>
10074
+ </xsl:when>
10075
+
10076
+ <xsl:otherwise>
10077
+ <fo:block-container xsl:use-attribute-sets="sourcecode-container-style">
9890
10078
 
9891
- <xsl:apply-templates select="*[local-name()='name']"/> <!-- show sourcecode's name AFTER content -->
10079
+ <xsl:if test="not(ancestor::*[local-name() = 'li']) or ancestor::*[local-name() = 'example']">
10080
+ <xsl:attribute name="margin-left">0mm</xsl:attribute>
10081
+ </xsl:if>
9892
10082
 
9893
- </fo:block-container>
9894
- </fo:block-container>
10083
+ <xsl:if test="ancestor::*[local-name() = 'example']">
10084
+ <xsl:attribute name="margin-right">0mm</xsl:attribute>
10085
+ </xsl:if>
10086
+
10087
+ <xsl:copy-of select="@id"/>
10088
+
10089
+ <xsl:if test="parent::*[local-name() = 'note']">
10090
+ <xsl:attribute name="margin-left">
10091
+ <xsl:choose>
10092
+ <xsl:when test="not(ancestor::*[local-name() = 'table'])"><xsl:value-of select="$note-body-indent"/></xsl:when>
10093
+ <xsl:otherwise><xsl:value-of select="$note-body-indent-table"/></xsl:otherwise>
10094
+ </xsl:choose>
10095
+ </xsl:attribute>
10096
+
10097
+ </xsl:if>
10098
+ <fo:block-container margin-left="0mm">
10099
+
10100
+ <fo:block xsl:use-attribute-sets="sourcecode-style">
10101
+
10102
+ <xsl:for-each select="xalan:nodeset($sourcecode_attributes)/sourcecode_attributes/@*">
10103
+ <xsl:attribute name="{local-name()}">
10104
+ <xsl:value-of select="."/>
10105
+ </xsl:attribute>
10106
+ </xsl:for-each>
10107
+
10108
+ <xsl:apply-templates select="node()[not(local-name() = 'name')]"/>
10109
+ </fo:block>
10110
+
10111
+ <xsl:apply-templates select="*[local-name()='name']"/> <!-- show sourcecode's name AFTER content -->
10112
+
10113
+ </fo:block-container>
10114
+ </fo:block-container>
10115
+ </xsl:otherwise>
10116
+ </xsl:choose>
9895
10117
  </xsl:template>
9896
10118
 
9897
10119
  <xsl:template match="*[local-name()='sourcecode']/text()" priority="2">
@@ -10133,8 +10355,22 @@
10133
10355
  </fo:block>
10134
10356
  </xsl:if>
10135
10357
  </xsl:template>
10136
- <!-- ====== -->
10137
- <!-- ====== -->
10358
+ <!-- =============== -->
10359
+ <!-- END sourcecode -->
10360
+ <!-- =============== -->
10361
+
10362
+ <!-- =============== -->
10363
+ <!-- pre -->
10364
+ <!-- =============== -->
10365
+ <xsl:template match="*[local-name()='pre']" name="pre">
10366
+ <fo:block xsl:use-attribute-sets="pre-style">
10367
+ <xsl:copy-of select="@id"/>
10368
+ <xsl:apply-templates/>
10369
+ </fo:block>
10370
+ </xsl:template>
10371
+ <!-- =============== -->
10372
+ <!-- pre -->
10373
+ <!-- =============== -->
10138
10374
 
10139
10375
  <!-- ========== -->
10140
10376
  <!-- permission -->
@@ -12106,7 +12342,9 @@
12106
12342
  <!-- ===================================== -->
12107
12343
  <!-- Update xml -->
12108
12344
  <!-- ===================================== -->
12345
+ <!-- =========================================================================== -->
12109
12346
  <!-- STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
12347
+ <!-- =========================================================================== -->
12110
12348
  <xsl:template match="@*|node()" mode="update_xml_step1">
12111
12349
  <xsl:copy>
12112
12350
  <xsl:apply-templates select="@*|node()" mode="update_xml_step1"/>
@@ -12198,10 +12436,15 @@
12198
12436
  <xsl:template match="*[local-name() = 'span']" mode="update_xml_step1">
12199
12437
  <xsl:apply-templates mode="update_xml_step1"/>
12200
12438
  </xsl:template>
12201
-
12439
+ <!-- =========================================================================== -->
12202
12440
  <!-- END STEP1: Re-order elements in 'preface', 'sections' based on @displayorder -->
12441
+ <!-- =========================================================================== -->
12203
12442
 
12443
+ <!-- =========================================================================== -->
12204
12444
  <!-- XML UPDATE STEP: enclose standard's name into tag 'keep-together_within-line' -->
12445
+ <!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
12446
+ <!-- keep-together_within-line for: a.b, aaa.b, a.bbb, .b in table's cell ONLY -->
12447
+ <!-- =========================================================================== -->
12205
12448
  <!-- Example: <keep-together_within-line>ISO 10303-51</keep-together_within-line> -->
12206
12449
  <xsl:template match="@*|node()" mode="update_xml_enclose_keep-together_within-line">
12207
12450
  <xsl:copy>
@@ -12217,10 +12460,15 @@
12217
12460
  <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">
12218
12461
 
12219
12462
  <!-- enclose standard's number into tag 'keep-together_within-line' -->
12220
- <xsl:variable name="regex_standard_reference">([A-Z]{2,}(/[A-Z]{2,})* \d+(-\d+)*(:\d{4})?)</xsl:variable>
12221
12463
  <xsl:variable name="tag_keep-together_within-line_open">###<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
12222
12464
  <xsl:variable name="tag_keep-together_within-line_close">###/<xsl:value-of select="$element_name_keep-together_within-line"/>###</xsl:variable>
12223
- <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))"/>
12465
+ <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))"/>
12466
+ <xsl:variable name="text_">
12467
+ <xsl:choose>
12468
+ <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 -->
12469
+ <xsl:otherwise><xsl:value-of select="$text__"/></xsl:otherwise>
12470
+ </xsl:choose>
12471
+ </xsl:variable>
12224
12472
  <xsl:variable name="text"><text><xsl:call-template name="replace_text_tags">
12225
12473
  <xsl:with-param name="tag_open" select="$tag_keep-together_within-line_open"/>
12226
12474
  <xsl:with-param name="tag_close" select="$tag_keep-together_within-line_close"/>
@@ -12236,7 +12484,11 @@
12236
12484
  </xsl:variable>
12237
12485
 
12238
12486
  <!-- keep-together_within-line for: a/b, aaa/b, a/bbb, /b -->
12239
- <xsl:variable name="regex_solidus_units">((\b((\S{1,3}\/\S+)|(\S+\/\S{1,3}))\b)|(\/\S{1,3})\b)</xsl:variable>
12487
+ <!-- \S matches any non-whitespace character (equivalent to [^\r\n\t\f\v ]) -->
12488
+ <!-- <xsl:variable name="regex_solidus_units">((\b((\S{1,3}\/\S+)|(\S+\/\S{1,3}))\b)|(\/\S{1,3})\b)</xsl:variable> -->
12489
+ <!-- add &lt; and &gt; to \S -->
12490
+ <xsl:variable name="regex_S">[^\r\n\t\f\v \&lt;&gt;]</xsl:variable>
12491
+ <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>
12240
12492
  <xsl:variable name="text3">
12241
12493
  <text><xsl:for-each select="xalan:nodeset($text2)/text/node()">
12242
12494
  <xsl:choose>
@@ -12300,9 +12552,8 @@
12300
12552
  <xsl:otherwise><xsl:value-of select="$text"/></xsl:otherwise>
12301
12553
  </xsl:choose>
12302
12554
  </xsl:template>
12303
-
12304
12555
  <!-- ===================================== -->
12305
- <!-- End Update xml -->
12556
+ <!-- END XML UPDATE STEP: enclose standard's name into tag 'keep-together_within-line' -->
12306
12557
  <!-- ===================================== -->
12307
12558
 
12308
12559
  <!-- for correct rendering combining chars -->
@@ -12690,13 +12941,14 @@
12690
12941
  </xsl:template>
12691
12942
 
12692
12943
  <xsl:template name="setId">
12944
+ <xsl:param name="prefix"/>
12693
12945
  <xsl:attribute name="id">
12694
12946
  <xsl:choose>
12695
12947
  <xsl:when test="@id">
12696
- <xsl:value-of select="@id"/>
12948
+ <xsl:value-of select="concat($prefix, @id)"/>
12697
12949
  </xsl:when>
12698
12950
  <xsl:otherwise>
12699
- <xsl:value-of select="generate-id()"/>
12951
+ <xsl:value-of select="concat($prefix, generate-id())"/>
12700
12952
  </xsl:otherwise>
12701
12953
  </xsl:choose>
12702
12954
  </xsl:attribute>