metanorma-iso 2.3.6 → 2.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/isodoc/iso/base_convert.rb +1 -15
- data/lib/isodoc/iso/html/style-human.css +4 -0
- data/lib/isodoc/iso/html/style-iso.css +4 -0
- data/lib/isodoc/iso/html_convert.rb +4 -3
- data/lib/isodoc/iso/iso.amendment.xsl +274 -98
- data/lib/isodoc/iso/iso.international-standard.xsl +274 -98
- data/lib/isodoc/iso/presentation_xml_convert.rb +16 -0
- data/lib/isodoc/iso/sections.rb +6 -6
- data/lib/isodoc/iso/word_convert.rb +1 -1
- data/lib/metanorma/iso/cleanup.rb +8 -10
- data/lib/metanorma/iso/isodoc.rng +46 -296
- data/lib/metanorma/iso/isostandard.rng +1 -8
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +1 -1
- metadata +4 -4
@@ -2887,11 +2887,11 @@
|
|
2887
2887
|
|
2888
2888
|
<xsl:attribute-set name="table-header-cell-style">
|
2889
2889
|
<xsl:attribute name="font-weight">bold</xsl:attribute>
|
2890
|
-
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
|
2891
2890
|
<xsl:attribute name="padding-left">1mm</xsl:attribute>
|
2892
2891
|
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
2893
2892
|
<xsl:attribute name="display-align">center</xsl:attribute>
|
2894
2893
|
|
2894
|
+
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
|
2895
2895
|
<xsl:attribute name="padding-top">0.5mm</xsl:attribute>
|
2896
2896
|
<xsl:attribute name="border-left"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
|
2897
2897
|
<xsl:attribute name="border-right"><xsl:value-of select="$table-cell-border"/></xsl:attribute>
|
@@ -2900,7 +2900,6 @@
|
|
2900
2900
|
|
2901
2901
|
<xsl:attribute-set name="table-cell-style">
|
2902
2902
|
<xsl:attribute name="display-align">center</xsl:attribute>
|
2903
|
-
<xsl:attribute name="border">solid black 1pt</xsl:attribute>
|
2904
2903
|
<xsl:attribute name="padding-left">1mm</xsl:attribute>
|
2905
2904
|
<xsl:attribute name="padding-right">1mm</xsl:attribute>
|
2906
2905
|
|
@@ -3652,7 +3651,7 @@
|
|
3652
3651
|
<xsl:apply-templates select="." mode="contents"/>
|
3653
3652
|
</xsl:for-each>
|
3654
3653
|
|
3655
|
-
<xsl:for-each select="/*/*[local-name()='bibliography']/*[not(@normative='true') and not(*[local-name()='references'][@normative='true'])] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][not(@normative='true')]]">
|
3654
|
+
<xsl:for-each select="/*/*[local-name()='bibliography']/*[not(@normative='true') and not(*[local-name()='references'][@normative='true'])][count(.//*[local-name() = 'bibitem'][not(@hidden) = 'true']) > 0] | /*/*[local-name()='bibliography']/*[local-name()='clause'][*[local-name()='references'][not(@normative='true')]][count(.//*[local-name() = 'bibitem'][not(@hidden) = 'true']) > 0]">
|
3656
3655
|
<xsl:sort select="@displayorder" data-type="number"/>
|
3657
3656
|
<xsl:apply-templates select="." mode="contents"/>
|
3658
3657
|
</xsl:for-each>
|
@@ -4625,6 +4624,10 @@
|
|
4625
4624
|
</xsl:choose>
|
4626
4625
|
</xsl:variable>
|
4627
4626
|
|
4627
|
+
<xsl:variable name="table_fn_block">
|
4628
|
+
<xsl:call-template name="table_fn_display"/>
|
4629
|
+
</xsl:variable>
|
4630
|
+
|
4628
4631
|
<xsl:variable name="tableWithNotesAndFootnotes">
|
4629
4632
|
|
4630
4633
|
<fo:table keep-with-previous="always">
|
@@ -4672,11 +4675,25 @@
|
|
4672
4675
|
|
4673
4676
|
<xsl:apply-templates select="../*[local-name()='note']"/>
|
4674
4677
|
|
4678
|
+
<xsl:variable name="isDisplayRowSeparator">
|
4679
|
+
|
4680
|
+
</xsl:variable>
|
4681
|
+
|
4675
4682
|
<!-- horizontal row separator -->
|
4683
|
+
<xsl:if test="normalize-space($isDisplayRowSeparator) = 'true'">
|
4684
|
+
<xsl:if test="../*[local-name()='note'] and normalize-space($table_fn_block) != ''">
|
4685
|
+
<fo:block-container border-top="0.5pt solid black" padding-left="1mm" padding-right="1mm">
|
4686
|
+
|
4687
|
+
<xsl:call-template name="setBordersTableArray"/>
|
4688
|
+
<fo:block font-size="1pt"> </fo:block>
|
4689
|
+
</fo:block-container>
|
4690
|
+
</xsl:if>
|
4691
|
+
</xsl:if>
|
4676
4692
|
|
4677
4693
|
<!-- fn processing -->
|
4678
4694
|
|
4679
|
-
<xsl:call-template name="table_fn_display"/>
|
4695
|
+
<!-- <xsl:call-template name="table_fn_display" /> -->
|
4696
|
+
<xsl:copy-of select="$table_fn_block"/>
|
4680
4697
|
|
4681
4698
|
<!-- for PAS display Notes after footnotes -->
|
4682
4699
|
|
@@ -4848,6 +4865,28 @@
|
|
4848
4865
|
</fo:table-row>
|
4849
4866
|
</xsl:template>
|
4850
4867
|
|
4868
|
+
<xsl:template name="setBorderUnderRow">
|
4869
|
+
<xsl:variable name="border_under_row_" select="normalize-space(ancestor::*[local-name() = 'table'][1]/@border-under-row)"/>
|
4870
|
+
<xsl:choose>
|
4871
|
+
<xsl:when test="$border_under_row_ != ''">
|
4872
|
+
<xsl:variable name="table_id" select="ancestor::*[local-name() = 'table'][1]/@id"/>
|
4873
|
+
<xsl:variable name="row_num_"><xsl:number level="any" count="*[local-name() = 'table'][@id = $table_id]//*[local-name() = 'tr']"/></xsl:variable>
|
4874
|
+
<xsl:variable name="row_num" select="number($row_num_) - 1"/> <!-- because values in border-under-row start with 0 -->
|
4875
|
+
<xsl:variable name="border_under_row">
|
4876
|
+
<xsl:call-template name="split">
|
4877
|
+
<xsl:with-param name="pText" select="$border_under_row_"/>
|
4878
|
+
</xsl:call-template>
|
4879
|
+
</xsl:variable>
|
4880
|
+
<xsl:if test="xalan:nodeset($border_under_row)/item[. = normalize-space($row_num)]">
|
4881
|
+
<xsl:attribute name="border-bottom"><xsl:value-of select="$table-border"/></xsl:attribute>
|
4882
|
+
</xsl:if>
|
4883
|
+
</xsl:when>
|
4884
|
+
<xsl:otherwise>
|
4885
|
+
<xsl:attribute name="border-bottom"><xsl:value-of select="$table-border"/></xsl:attribute>
|
4886
|
+
</xsl:otherwise>
|
4887
|
+
</xsl:choose>
|
4888
|
+
</xsl:template>
|
4889
|
+
|
4851
4890
|
<!-- row in table footer (tfoot) -->
|
4852
4891
|
<xsl:template match="*[local-name()='tfoot']/*[local-name()='tr']" priority="2">
|
4853
4892
|
<fo:table-row xsl:use-attribute-sets="table-footer-row-style">
|
@@ -5198,8 +5237,16 @@
|
|
5198
5237
|
<!-- figure's footnotes rendering -->
|
5199
5238
|
<xsl:template name="fn_display_figure">
|
5200
5239
|
|
5240
|
+
<!-- current figure id -->
|
5241
|
+
<xsl:variable name="figure_id_">
|
5242
|
+
<xsl:value-of select="@id"/>
|
5243
|
+
<xsl:if test="not(@id)"><xsl:value-of select="generate-id()"/></xsl:if>
|
5244
|
+
</xsl:variable>
|
5245
|
+
<xsl:variable name="figure_id" select="normalize-space($figure_id_)"/>
|
5246
|
+
|
5247
|
+
<!-- all footnotes relates to the current figure -->
|
5201
5248
|
<xsl:variable name="references">
|
5202
|
-
<xsl:for-each select=".//*[local-name()='fn'][not(parent::*[local-name()='name'])]">
|
5249
|
+
<xsl:for-each select=".//*[local-name()='fn'][not(parent::*[local-name()='name'])][ancestor::*[local-name() = 'figure'][1][@id = $figure_id]]">
|
5203
5250
|
<fn reference="{@reference}" id="{@reference}_{ancestor::*[@id][1]/@id}">
|
5204
5251
|
<xsl:apply-templates/>
|
5205
5252
|
</fn>
|
@@ -5212,91 +5259,93 @@
|
|
5212
5259
|
true
|
5213
5260
|
</xsl:variable>
|
5214
5261
|
|
5215
|
-
|
5216
|
-
|
5217
|
-
|
5218
|
-
|
5219
|
-
|
5220
|
-
|
5262
|
+
<fo:block>
|
5263
|
+
|
5264
|
+
<!-- current hierarchy is 'figure' element -->
|
5265
|
+
<xsl:variable name="following_dl_colwidths">
|
5266
|
+
<xsl:if test="*[local-name() = 'dl']"><!-- if there is a 'dl', then set the same columns width as for 'dl' -->
|
5267
|
+
<xsl:variable name="simple-table">
|
5268
|
+
<!-- <xsl:variable name="doc_ns">
|
5269
|
+
<xsl:if test="$namespace = 'bipm'">bipm</xsl:if>
|
5270
|
+
</xsl:variable>
|
5271
|
+
<xsl:variable name="ns">
|
5272
|
+
<xsl:choose>
|
5273
|
+
<xsl:when test="normalize-space($doc_ns) != ''">
|
5274
|
+
<xsl:value-of select="normalize-space($doc_ns)"/>
|
5275
|
+
</xsl:when>
|
5276
|
+
<xsl:otherwise>
|
5277
|
+
<xsl:value-of select="substring-before(name(/*), '-')"/>
|
5278
|
+
</xsl:otherwise>
|
5279
|
+
</xsl:choose>
|
5280
|
+
</xsl:variable> -->
|
5281
|
+
|
5282
|
+
<xsl:for-each select="*[local-name() = 'dl'][1]">
|
5283
|
+
<tbody>
|
5284
|
+
<xsl:apply-templates mode="dl"/>
|
5285
|
+
</tbody>
|
5286
|
+
</xsl:for-each>
|
5287
|
+
</xsl:variable>
|
5288
|
+
|
5289
|
+
<xsl:call-template name="calculate-column-widths">
|
5290
|
+
<xsl:with-param name="cols-count" select="2"/>
|
5291
|
+
<xsl:with-param name="table" select="$simple-table"/>
|
5292
|
+
</xsl:call-template>
|
5293
|
+
|
5294
|
+
</xsl:if>
|
5221
5295
|
</xsl:variable>
|
5222
|
-
|
5296
|
+
|
5297
|
+
<xsl:variable name="maxlength_dt">
|
5298
|
+
<xsl:for-each select="*[local-name() = 'dl'][1]">
|
5299
|
+
<xsl:call-template name="getMaxLength_dt"/>
|
5300
|
+
</xsl:for-each>
|
5301
|
+
</xsl:variable>
|
5302
|
+
|
5303
|
+
<fo:table width="95%" table-layout="fixed">
|
5304
|
+
<xsl:if test="normalize-space($key_iso) = 'true'">
|
5305
|
+
<xsl:attribute name="font-size">10pt</xsl:attribute>
|
5306
|
+
|
5307
|
+
</xsl:if>
|
5223
5308
|
<xsl:choose>
|
5224
|
-
|
5225
|
-
|
5309
|
+
<!-- if there 'dl', then set same columns width -->
|
5310
|
+
<xsl:when test="xalan:nodeset($following_dl_colwidths)//column">
|
5311
|
+
<xsl:call-template name="setColumnWidth_dl">
|
5312
|
+
<xsl:with-param name="colwidths" select="$following_dl_colwidths"/>
|
5313
|
+
<xsl:with-param name="maxlength_dt" select="$maxlength_dt"/>
|
5314
|
+
</xsl:call-template>
|
5226
5315
|
</xsl:when>
|
5227
5316
|
<xsl:otherwise>
|
5228
|
-
<
|
5317
|
+
<fo:table-column column-width="5%"/>
|
5318
|
+
<fo:table-column column-width="95%"/>
|
5229
5319
|
</xsl:otherwise>
|
5230
5320
|
</xsl:choose>
|
5231
|
-
|
5232
|
-
|
5233
|
-
|
5234
|
-
|
5235
|
-
|
5236
|
-
|
5237
|
-
|
5238
|
-
|
5239
|
-
|
5240
|
-
|
5241
|
-
|
5242
|
-
|
5243
|
-
|
5244
|
-
|
5245
|
-
|
5246
|
-
</xsl:variable>
|
5247
|
-
|
5248
|
-
<xsl:variable name="maxlength_dt">
|
5249
|
-
<xsl:for-each select="*[local-name() = 'dl'][1]">
|
5250
|
-
<xsl:call-template name="getMaxLength_dt"/>
|
5251
|
-
</xsl:for-each>
|
5252
|
-
</xsl:variable>
|
5321
|
+
<fo:table-body>
|
5322
|
+
<xsl:for-each select="xalan:nodeset($references)//fn">
|
5323
|
+
<xsl:variable name="reference" select="@reference"/>
|
5324
|
+
<xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
|
5325
|
+
<fo:table-row>
|
5326
|
+
<fo:table-cell>
|
5327
|
+
<fo:block>
|
5328
|
+
<fo:inline id="{@id}" xsl:use-attribute-sets="figure-fn-number-style">
|
5329
|
+
<xsl:value-of select="@reference"/>
|
5330
|
+
</fo:inline>
|
5331
|
+
</fo:block>
|
5332
|
+
</fo:table-cell>
|
5333
|
+
<fo:table-cell>
|
5334
|
+
<fo:block xsl:use-attribute-sets="figure-fn-body-style">
|
5335
|
+
<xsl:if test="normalize-space($key_iso) = 'true'">
|
5253
5336
|
|
5254
|
-
|
5255
|
-
<fo:table width="95%" table-layout="fixed">
|
5256
|
-
<xsl:if test="normalize-space($key_iso) = 'true'">
|
5257
|
-
<xsl:attribute name="font-size">10pt</xsl:attribute>
|
5337
|
+
<xsl:attribute name="margin-bottom">0</xsl:attribute>
|
5258
5338
|
|
5259
|
-
|
5260
|
-
|
5261
|
-
|
5262
|
-
|
5263
|
-
|
5264
|
-
|
5265
|
-
|
5266
|
-
</
|
5267
|
-
</
|
5268
|
-
<xsl:otherwise>
|
5269
|
-
<fo:table-column column-width="15%"/>
|
5270
|
-
<fo:table-column column-width="85%"/>
|
5271
|
-
</xsl:otherwise>
|
5272
|
-
</xsl:choose>
|
5273
|
-
<fo:table-body>
|
5274
|
-
<xsl:for-each select="xalan:nodeset($references)//fn">
|
5275
|
-
<xsl:variable name="reference" select="@reference"/>
|
5276
|
-
<xsl:if test="not(preceding-sibling::*[@reference = $reference])"> <!-- only unique reference puts in note-->
|
5277
|
-
<fo:table-row>
|
5278
|
-
<fo:table-cell>
|
5279
|
-
<fo:block>
|
5280
|
-
<fo:inline id="{@id}" xsl:use-attribute-sets="figure-fn-number-style">
|
5281
|
-
<xsl:value-of select="@reference"/>
|
5282
|
-
</fo:inline>
|
5283
|
-
</fo:block>
|
5284
|
-
</fo:table-cell>
|
5285
|
-
<fo:table-cell>
|
5286
|
-
<fo:block xsl:use-attribute-sets="figure-fn-body-style">
|
5287
|
-
<xsl:if test="normalize-space($key_iso) = 'true'">
|
5288
|
-
|
5289
|
-
<xsl:attribute name="margin-bottom">0</xsl:attribute>
|
5339
|
+
</xsl:if>
|
5340
|
+
<xsl:copy-of select="./node()"/>
|
5341
|
+
</fo:block>
|
5342
|
+
</fo:table-cell>
|
5343
|
+
</fo:table-row>
|
5344
|
+
</xsl:if>
|
5345
|
+
</xsl:for-each>
|
5346
|
+
</fo:table-body>
|
5347
|
+
</fo:table>
|
5290
5348
|
|
5291
|
-
</xsl:if>
|
5292
|
-
<xsl:copy-of select="./node()"/>
|
5293
|
-
</fo:block>
|
5294
|
-
</fo:table-cell>
|
5295
|
-
</fo:table-row>
|
5296
|
-
</xsl:if>
|
5297
|
-
</xsl:for-each>
|
5298
|
-
</fo:table-body>
|
5299
|
-
</fo:table>
|
5300
5349
|
</fo:block>
|
5301
5350
|
</xsl:if>
|
5302
5351
|
|
@@ -5381,12 +5430,14 @@
|
|
5381
5430
|
|
5382
5431
|
<xsl:attribute name="margin-bottom">0</xsl:attribute>
|
5383
5432
|
|
5384
|
-
<xsl:variable name="title-where">
|
5433
|
+
<!-- <xsl:variable name="title-where">
|
5385
5434
|
<xsl:call-template name="getLocalizedString">
|
5386
5435
|
<xsl:with-param name="key">where</xsl:with-param>
|
5387
5436
|
</xsl:call-template>
|
5388
5437
|
</xsl:variable>
|
5389
|
-
<xsl:value-of select="$title-where"
|
5438
|
+
<xsl:value-of select="$title-where"/> -->
|
5439
|
+
<xsl:apply-templates select="preceding-sibling::*[1][local-name() = 'p' and @keep-with-next = 'true']/node()"/>
|
5440
|
+
<xsl:text> </xsl:text>
|
5390
5441
|
<xsl:apply-templates select="*[local-name()='dt']/*"/>
|
5391
5442
|
<xsl:text/>
|
5392
5443
|
<xsl:apply-templates select="*[local-name()='dd']/*" mode="inline"/>
|
@@ -5398,12 +5449,14 @@
|
|
5398
5449
|
|
5399
5450
|
<xsl:attribute name="margin-bottom">6pt</xsl:attribute>
|
5400
5451
|
|
5401
|
-
<xsl:variable name="title-where">
|
5452
|
+
<!-- <xsl:variable name="title-where">
|
5402
5453
|
<xsl:call-template name="getLocalizedString">
|
5403
5454
|
<xsl:with-param name="key">where</xsl:with-param>
|
5404
5455
|
</xsl:call-template>
|
5405
5456
|
</xsl:variable>
|
5406
|
-
<xsl:value-of select="$title-where"
|
5457
|
+
<xsl:value-of select="$title-where"/><xsl:if test="$namespace = 'bsi' or $namespace = 'itu'">:</xsl:if> -->
|
5458
|
+
<!-- preceding 'p' with word 'where' -->
|
5459
|
+
<xsl:apply-templates select="preceding-sibling::*[1][local-name() = 'p' and @keep-with-next = 'true']/node()"/>
|
5407
5460
|
</fo:block>
|
5408
5461
|
</xsl:when> <!-- END: a few components -->
|
5409
5462
|
<xsl:when test="$parent = 'figure' and (not(../@class) or ../@class !='pseudocode')"> <!-- definition list in a figure -->
|
@@ -5598,6 +5651,9 @@
|
|
5598
5651
|
|
5599
5652
|
</xsl:template> <!-- END: dl -->
|
5600
5653
|
|
5654
|
+
<!-- ignore 'p' with 'where' in formula, before 'dl' -->
|
5655
|
+
<xsl:template match="*[local-name() = 'formula']/*[local-name() = 'p' and @keep-with-next = 'true' and following-sibling::*[1][local-name() = 'dl']]"/>
|
5656
|
+
|
5601
5657
|
<xsl:template match="*[local-name() = 'dl']/*[local-name() = 'name']">
|
5602
5658
|
<xsl:param name="process">false</xsl:param>
|
5603
5659
|
<xsl:if test="$process = 'true'">
|
@@ -6496,8 +6552,8 @@
|
|
6496
6552
|
|
6497
6553
|
<!-- add zero-width space (#x200B) after dot with next non-digit -->
|
6498
6554
|
<xsl:variable name="text1" select="java:replaceAll(java:java.lang.String.new($text),'(\.)([^\d\s])','$1$2')"/>
|
6499
|
-
<!-- add zero-width space (#x200B) after characters: dash, equal, underscore, em dash, thin space, arrow right -->
|
6500
|
-
<xsl:variable name="text2" select="java:replaceAll(java:java.lang.String.new($text1),'(-|=|_|—|
|
6555
|
+
<!-- add zero-width space (#x200B) after characters: dash, equal, underscore, em dash, thin space, arrow right, ; -->
|
6556
|
+
<xsl:variable name="text2" select="java:replaceAll(java:java.lang.String.new($text1),'(-|=|_|—| |→|;)','$1')"/>
|
6501
6557
|
<!-- add zero-width space (#x200B) after characters: colon, if there aren't digits after -->
|
6502
6558
|
<xsl:variable name="text3" select="java:replaceAll(java:java.lang.String.new($text2),'(:)(\D)','$1$2')"/>
|
6503
6559
|
<!-- add zero-width space (#x200B) after characters: 'great than' -->
|
@@ -6508,8 +6564,19 @@
|
|
6508
6564
|
<xsl:variable name="text6" select="java:replaceAll(java:java.lang.String.new($text5), '(?<!\W)(\{)', '$1')"/> <!-- negative lookbehind: '{' not preceeded by 'punctuation char' -->
|
6509
6565
|
<!-- add zero-width space (#x200B) after character: , -->
|
6510
6566
|
<xsl:variable name="text7" select="java:replaceAll(java:java.lang.String.new($text6), '(\,)(?!\d)', '$1')"/> <!-- negative lookahead: ',' not followed by digit -->
|
6567
|
+
<!-- add zero-width space (#x200B) after character: '/' -->
|
6568
|
+
<xsl:variable name="text8" select="java:replaceAll(java:java.lang.String.new($text7), '(\u002f)(?!\u002f)', '$1')"/><!-- negative lookahead: '/' not followed by '/' -->
|
6511
6569
|
|
6512
|
-
<xsl:
|
6570
|
+
<xsl:variable name="text9">
|
6571
|
+
<xsl:choose>
|
6572
|
+
<xsl:when test="$isGenerateTableIF = 'true'">
|
6573
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text8), '([\u3000-\u9FFF])', '$1')"/> <!-- 3000 - CJK Symbols and Punctuation ... 9FFF CJK Unified Ideographs-->
|
6574
|
+
</xsl:when>
|
6575
|
+
<xsl:otherwise><xsl:value-of select="$text8"/></xsl:otherwise>
|
6576
|
+
</xsl:choose>
|
6577
|
+
</xsl:variable>
|
6578
|
+
|
6579
|
+
<xsl:value-of select="$text9"/>
|
6513
6580
|
</xsl:template>
|
6514
6581
|
|
6515
6582
|
<xsl:template name="add-zero-spaces-link-java">
|
@@ -6517,8 +6584,8 @@
|
|
6517
6584
|
|
6518
6585
|
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$1')"/> <!-- http://. https:// or www. -->
|
6519
6586
|
<xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
|
6520
|
-
<!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space -->
|
6521
|
-
<xsl:variable name="url" select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—|
|
6587
|
+
<!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, comma, slash, @ -->
|
6588
|
+
<xsl:variable name="url" select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/|@)','$1')"/>
|
6522
6589
|
<!-- remove zero-width space at the end -->
|
6523
6590
|
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($url), '$', '')"/>
|
6524
6591
|
</xsl:template>
|
@@ -6873,9 +6940,28 @@
|
|
6873
6940
|
</xsl:variable>
|
6874
6941
|
<xsl:copy-of select="$newRow"/>
|
6875
6942
|
|
6876
|
-
|
6877
|
-
|
6878
|
-
|
6943
|
+
<!-- optimize to prevent StackOverflowError, just copy next 'tr' -->
|
6944
|
+
<xsl:variable name="currrow_num" select="count(preceding-sibling::tr) + 1"/>
|
6945
|
+
<xsl:variable name="nextrow_without_rowspan_" select="count(following-sibling::tr[*[@rowspan and @rowspan != 1]][1]/preceding-sibling::tr) + 1"/>
|
6946
|
+
<xsl:variable name="nextrow_without_rowspan" select="$nextrow_without_rowspan_ - $currrow_num"/>
|
6947
|
+
<xsl:choose>
|
6948
|
+
<xsl:when test="not(xalan:nodeset($newRow)/*/*[@rowspan and @rowspan != 1]) and $nextrow_without_rowspan <= 0">
|
6949
|
+
<xsl:copy-of select="following-sibling::tr"/>
|
6950
|
+
</xsl:when>
|
6951
|
+
<!-- <xsl:when test="xalan:nodeset($newRow)/*[not(@rowspan) or (@rowspan = 1)] and $nextrow_without_rowspan > 0">
|
6952
|
+
<xsl:copy-of select="following-sibling::tr[position() <= $nextrow_without_rowspan]"/>
|
6953
|
+
|
6954
|
+
<xsl:copy-of select="following-sibling::tr[$nextrow_without_rowspan + 1]"/>
|
6955
|
+
<xsl:apply-templates select="following-sibling::tr[$nextrow_without_rowspan + 2]" mode="simple-table-rowspan">
|
6956
|
+
<xsl:with-param name="previousRow" select="following-sibling::tr[$nextrow_without_rowspan + 1]"/>
|
6957
|
+
</xsl:apply-templates>
|
6958
|
+
</xsl:when> -->
|
6959
|
+
<xsl:otherwise>
|
6960
|
+
<xsl:apply-templates select="following-sibling::tr[1]" mode="simple-table-rowspan">
|
6961
|
+
<xsl:with-param name="previousRow" select="$newRow"/>
|
6962
|
+
</xsl:apply-templates>
|
6963
|
+
</xsl:otherwise>
|
6964
|
+
</xsl:choose>
|
6879
6965
|
</xsl:template>
|
6880
6966
|
<!-- End mode simple-table-rowspan -->
|
6881
6967
|
|
@@ -7038,6 +7124,27 @@
|
|
7038
7124
|
</xsl:call-template>
|
7039
7125
|
</xsl:template>
|
7040
7126
|
|
7127
|
+
<xsl:template match="*[local-name() = 'link'][normalize-space() = '']" mode="td_text_with_formatting">
|
7128
|
+
<xsl:variable name="link">
|
7129
|
+
<link_updated>
|
7130
|
+
<xsl:variable name="target_text">
|
7131
|
+
<xsl:choose>
|
7132
|
+
<xsl:when test="starts-with(normalize-space(@target), 'mailto:')">
|
7133
|
+
<xsl:value-of select="normalize-space(substring-after(@target, 'mailto:'))"/>
|
7134
|
+
</xsl:when>
|
7135
|
+
<xsl:otherwise>
|
7136
|
+
<xsl:value-of select="normalize-space(@target)"/>
|
7137
|
+
</xsl:otherwise>
|
7138
|
+
</xsl:choose>
|
7139
|
+
</xsl:variable>
|
7140
|
+
<xsl:value-of select="$target_text"/>
|
7141
|
+
</link_updated>
|
7142
|
+
</xsl:variable>
|
7143
|
+
<xsl:for-each select="xalan:nodeset($link)/*">
|
7144
|
+
<xsl:apply-templates mode="td_text_with_formatting"/>
|
7145
|
+
</xsl:for-each>
|
7146
|
+
</xsl:template>
|
7147
|
+
|
7041
7148
|
<xsl:template name="getFormattingTags">
|
7042
7149
|
<tags>
|
7043
7150
|
<xsl:if test="ancestor::*[local-name() = 'strong']"><tag>strong</tag></xsl:if>
|
@@ -7386,7 +7493,7 @@
|
|
7386
7493
|
</xsl:variable>
|
7387
7494
|
<fo:inline xsl:use-attribute-sets="link-style">
|
7388
7495
|
|
7389
|
-
<xsl:if test="starts-with(normalize-space(@target), 'mailto:')">
|
7496
|
+
<xsl:if test="starts-with(normalize-space(@target), 'mailto:') and not(ancestor::*[local-name() = 'td'])">
|
7390
7497
|
<xsl:attribute name="keep-together.within-line">always</xsl:attribute>
|
7391
7498
|
</xsl:if>
|
7392
7499
|
|
@@ -7753,10 +7860,10 @@
|
|
7753
7860
|
<fo:block xsl:use-attribute-sets="figure-style">
|
7754
7861
|
<xsl:apply-templates select="node()[not(local-name() = 'name') and not(local-name() = 'note' and @type = 'units')]"/>
|
7755
7862
|
</fo:block>
|
7756
|
-
<xsl:call-template name="fn_display_figure"/>
|
7757
7863
|
<xsl:for-each select="*[local-name() = 'note'][not(@type = 'units')]">
|
7758
7864
|
<xsl:call-template name="note"/>
|
7759
7865
|
</xsl:for-each>
|
7866
|
+
<xsl:call-template name="fn_display_figure"/>
|
7760
7867
|
|
7761
7868
|
<xsl:apply-templates select="*[local-name() = 'name']"/> <!-- show figure's name AFTER image -->
|
7762
7869
|
|
@@ -7819,7 +7926,13 @@
|
|
7819
7926
|
</xsl:choose>
|
7820
7927
|
</xsl:variable>
|
7821
7928
|
|
7822
|
-
<xsl:variable name="
|
7929
|
+
<xsl:variable name="image_width_effective">
|
7930
|
+
|
7931
|
+
<xsl:value-of select="$width_effective"/>
|
7932
|
+
|
7933
|
+
</xsl:variable>
|
7934
|
+
|
7935
|
+
<xsl:variable name="scale" select="java:org.metanorma.fop.Util.getImageScale($img_src, $image_width_effective, $height_effective)"/>
|
7823
7936
|
<xsl:if test="number($scale) < 100">
|
7824
7937
|
|
7825
7938
|
<xsl:attribute name="content-width"><xsl:value-of select="$scale"/>%</xsl:attribute>
|
@@ -8406,6 +8519,13 @@
|
|
8406
8519
|
<xsl:when test="$contents_nodes/doc">
|
8407
8520
|
<xsl:choose>
|
8408
8521
|
<xsl:when test="count($contents_nodes/doc) > 1">
|
8522
|
+
|
8523
|
+
<xsl:if test="$contents_nodes/collection">
|
8524
|
+
<fo:bookmark internal-destination="{$contents/collection/@firstpage_id}">
|
8525
|
+
<fo:bookmark-title>collection.pdf</fo:bookmark-title>
|
8526
|
+
</fo:bookmark>
|
8527
|
+
</xsl:if>
|
8528
|
+
|
8409
8529
|
<xsl:for-each select="$contents_nodes/doc">
|
8410
8530
|
<fo:bookmark internal-destination="{contents/item[1]/@id}" starting-state="hide">
|
8411
8531
|
<xsl:if test="@bundle = 'true'">
|
@@ -10288,6 +10408,44 @@
|
|
10288
10408
|
|
10289
10409
|
<fo:list-block xsl:use-attribute-sets="list-style">
|
10290
10410
|
|
10411
|
+
<xsl:variable name="provisional_distance_between_starts_">
|
10412
|
+
<attributes xsl:use-attribute-sets="list-style">
|
10413
|
+
|
10414
|
+
</attributes>
|
10415
|
+
</xsl:variable>
|
10416
|
+
<xsl:variable name="provisional_distance_between_starts" select="normalize-space(xalan:nodeset($provisional_distance_between_starts_)/attributes/@provisional-distance-between-starts)"/>
|
10417
|
+
<xsl:if test="$provisional_distance_between_starts != ''">
|
10418
|
+
<xsl:attribute name="provisional-distance-between-starts"><xsl:value-of select="$provisional_distance_between_starts"/></xsl:attribute>
|
10419
|
+
</xsl:if>
|
10420
|
+
<xsl:variable name="provisional_distance_between_starts_value" select="substring-before($provisional_distance_between_starts, 'mm')"/>
|
10421
|
+
|
10422
|
+
<!-- increase provisional-distance-between-starts for long lists -->
|
10423
|
+
<xsl:if test="local-name() = 'ol'">
|
10424
|
+
<!-- Examples: xiii), xviii), xxviii) -->
|
10425
|
+
<xsl:variable name="item_numbers">
|
10426
|
+
<xsl:for-each select="*[local-name() = 'li']">
|
10427
|
+
<item><xsl:call-template name="getListItemFormat"/></item>
|
10428
|
+
</xsl:for-each>
|
10429
|
+
</xsl:variable>
|
10430
|
+
|
10431
|
+
<xsl:variable name="max_length">
|
10432
|
+
<xsl:for-each select="xalan:nodeset($item_numbers)/item">
|
10433
|
+
<xsl:sort select="string-length(.)" data-type="number" order="descending"/>
|
10434
|
+
<xsl:if test="position() = 1"><xsl:value-of select="string-length(.)"/></xsl:if>
|
10435
|
+
</xsl:for-each>
|
10436
|
+
</xsl:variable>
|
10437
|
+
|
10438
|
+
<!-- base width (provisional-distance-between-starts) for 4 chars -->
|
10439
|
+
<xsl:variable name="addon" select="$max_length - 4"/>
|
10440
|
+
<xsl:if test="$addon > 0">
|
10441
|
+
<xsl:attribute name="provisional-distance-between-starts"><xsl:value-of select="$provisional_distance_between_starts_value + $addon * 2"/>mm</xsl:attribute>
|
10442
|
+
</xsl:if>
|
10443
|
+
<!-- DEBUG -->
|
10444
|
+
<!-- <xsl:copy-of select="$item_numbers"/>
|
10445
|
+
<max_length><xsl:value-of select="$max_length"/></max_length>
|
10446
|
+
<addon><xsl:value-of select="$addon"/></addon> -->
|
10447
|
+
</xsl:if>
|
10448
|
+
|
10291
10449
|
<xsl:if test="not(ancestor::*[local-name() = 'ul' or local-name() = 'ol'])">
|
10292
10450
|
<xsl:attribute name="margin-bottom">8pt</xsl:attribute>
|
10293
10451
|
</xsl:if>
|
@@ -11356,7 +11514,7 @@
|
|
11356
11514
|
<!-- \S matches any non-whitespace character (equivalent to [^\r\n\t\f\v ]) -->
|
11357
11515
|
<!-- <xsl:variable name="regex_solidus_units">((\b((\S{1,3}\/\S+)|(\S+\/\S{1,3}))\b)|(\/\S{1,3})\b)</xsl:variable> -->
|
11358
11516
|
<!-- add < and > to \S -->
|
11359
|
-
<xsl:variable name="regex_S">[^\r\n\t\f\v \<>
|
11517
|
+
<xsl:variable name="regex_S">[^\r\n\t\f\v \<>\u3000-\u9FFF]</xsl:variable>
|
11360
11518
|
<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>
|
11361
11519
|
<xsl:variable name="text3">
|
11362
11520
|
<text><xsl:for-each select="xalan:nodeset($text2)/text/node()">
|
@@ -11378,7 +11536,8 @@
|
|
11378
11536
|
<xsl:choose>
|
11379
11537
|
<xsl:when test="ancestor::*[local-name() = 'td' or local-name() = 'th']">
|
11380
11538
|
<!-- keep-together_within-line for: a.b, aaa.b, a.bbb, .b in table's cell ONLY -->
|
11381
|
-
<xsl:variable name="
|
11539
|
+
<xsl:variable name="non_white_space">[^\s\u3000-\u9FFF]</xsl:variable>
|
11540
|
+
<xsl:variable name="regex_dots_units">((\b((<xsl:value-of select="$non_white_space"/>{1,3}\.<xsl:value-of select="$non_white_space"/>+)|(<xsl:value-of select="$non_white_space"/>+\.<xsl:value-of select="$non_white_space"/>{1,3}))\b)|(\.<xsl:value-of select="$non_white_space"/>{1,3})\b)</xsl:variable>
|
11382
11541
|
<xsl:for-each select="xalan:nodeset($text3)/text/node()">
|
11383
11542
|
<xsl:choose>
|
11384
11543
|
<xsl:when test="self::text()">
|
@@ -11981,6 +12140,23 @@
|
|
11981
12140
|
</xsl:if>
|
11982
12141
|
</xsl:template>
|
11983
12142
|
|
12143
|
+
<xsl:template name="setBlockAttributes">
|
12144
|
+
<xsl:param name="text_align_default">left</xsl:param>
|
12145
|
+
<xsl:call-template name="setTextAlignment">
|
12146
|
+
<xsl:with-param name="default" select="$text_align_default"/>
|
12147
|
+
</xsl:call-template>
|
12148
|
+
|
12149
|
+
<!-- https://www.metanorma.org/author/topics/document-format/text/#avoiding-page-breaks -->
|
12150
|
+
<!-- Example: keep-lines-together="true" -->
|
12151
|
+
<xsl:if test="@keep-lines-together = 'true'">
|
12152
|
+
<xsl:attribute name="keep-together.within-column">always</xsl:attribute>
|
12153
|
+
</xsl:if>
|
12154
|
+
<!-- Example: keep-with-next="true" -->
|
12155
|
+
<xsl:if test="@keep-with-next = 'true'">
|
12156
|
+
<xsl:attribute name="keep-with-next">always</xsl:attribute>
|
12157
|
+
</xsl:if>
|
12158
|
+
</xsl:template>
|
12159
|
+
|
11984
12160
|
<xsl:template name="number-to-words">
|
11985
12161
|
<xsl:param name="number"/>
|
11986
12162
|
<xsl:param name="first"/>
|
@@ -220,6 +220,22 @@ module IsoDoc
|
|
220
220
|
super
|
221
221
|
end
|
222
222
|
|
223
|
+
def formula_where(dlist)
|
224
|
+
dlist.nil? and return
|
225
|
+
return super unless dlist.xpath(ns("./dt")).size == 1 &&
|
226
|
+
dlist.at(ns("./dd"))&.elements&.size == 1 &&
|
227
|
+
dlist.at(ns("./dd/p"))
|
228
|
+
|
229
|
+
formula_where_one(dlist)
|
230
|
+
end
|
231
|
+
|
232
|
+
def formula_where_one(dlist)
|
233
|
+
dt = to_xml(dlist.at(ns("./dt")).children)
|
234
|
+
dd = to_xml(dlist.at(ns("./dd/p")).children)
|
235
|
+
dlist.previous = "<p>#{@i18n.where_one} #{dt} #{dd}</p>"
|
236
|
+
dlist.remove
|
237
|
+
end
|
238
|
+
|
223
239
|
include Init
|
224
240
|
end
|
225
241
|
end
|
data/lib/isodoc/iso/sections.rb
CHANGED
@@ -7,24 +7,24 @@ module IsoDoc
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def middle_title_main(out)
|
10
|
-
out.p(
|
10
|
+
out.p(class: "zzSTDTitle1") do |p|
|
11
11
|
p << @meta.get[:doctitleintro]
|
12
12
|
p << " — " if @meta.get[:doctitleintro] && @meta.get[:doctitlemain]
|
13
13
|
p << @meta.get[:doctitlemain]
|
14
14
|
p << " — " if @meta.get[:doctitlemain] && @meta.get[:doctitlepart]
|
15
15
|
end
|
16
|
-
a = @meta.get[:doctitlepart] and out.p(
|
16
|
+
a = @meta.get[:doctitlepart] and out.p(class: "zzSTDTitle2") do |p|
|
17
17
|
b = @meta.get[:doctitlepartlabel] and p << "#{b}: "
|
18
18
|
p << "<br/><b>#{a}</b>"
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
def middle_title_amd(out)
|
23
|
-
a = @meta.get[:doctitleamdlabel] and out.p(
|
23
|
+
a = @meta.get[:doctitleamdlabel] and out.p(class: "zzSTDTitle2") do |p|
|
24
24
|
p << a
|
25
25
|
a = @meta.get[:doctitleamd] and p << ": #{a}"
|
26
26
|
end
|
27
|
-
a = @meta.get[:doctitlecorrlabel] and out.p(
|
27
|
+
a = @meta.get[:doctitlecorrlabel] and out.p(class: "zzSTDTitle2") do |p|
|
28
28
|
p << a
|
29
29
|
end
|
30
30
|
end
|
@@ -39,8 +39,8 @@ module IsoDoc
|
|
39
39
|
f = isoxml.at(ns("//introduction")) || return
|
40
40
|
title_attr = { class: "IntroTitle" }
|
41
41
|
page_break(out)
|
42
|
-
out.div
|
43
|
-
clause_name(
|
42
|
+
out.div class: "Section3", id: f["id"] do |div|
|
43
|
+
clause_name(f, f.at(ns("./title")), div, title_attr)
|
44
44
|
f.elements.each do |e|
|
45
45
|
parse(e, div) unless e.name == "title"
|
46
46
|
end
|
@@ -104,7 +104,7 @@ module IsoDoc
|
|
104
104
|
def indexsect_title(clause, out)
|
105
105
|
br(out, "always")
|
106
106
|
out.div class: "WordSection3" do |div|
|
107
|
-
clause_name(
|
107
|
+
clause_name(clause, clause.at(ns("./title")), div, nil)
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|