metanorma-iec 2.2.8 → 2.2.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 18f6bc14680c197555785231faaa0869ab871b4512a7ccbd70b777496a6bba0e
4
- data.tar.gz: 67a8eec620949d8ab8cf051ed565c841062dc65257abaccb641cd5b4f6cf4926
3
+ metadata.gz: 582be39d0a34200cdd7f77519d2366e23bfa3c07bb5e9c23ffb5dae558f5796b
4
+ data.tar.gz: c5d650ca2ccab49fd4719ff61f52781fe21f0f530d564412a3b08ac7a747baba
5
5
  SHA512:
6
- metadata.gz: e07e419fb0656fff285c3026ff77faff0e0bca0f26f18a8666ac748f651fec0dd140cce944e10a20b9c3929988c27ae8740e456ece5774d66bba658c1564e6c4
7
- data.tar.gz: 7438d74061aa138779b8d307379dc88dedbf6fa0de91fec335e7dcd54409ae7e7d9ff177b172940ea46072e81491c2ae81f2fe20856e550fb12a2636a5f7e31c
6
+ metadata.gz: 3c97a5a76d0bfb9986ccb5bdc05d81464dbb807fd4a3cbf717438b92ae774893b9bc27e05fabde23a7461ef042a01a8767a422ed91bd913925ef74d45978fd41
7
+ data.tar.gz: dcd178a0bcc682a0ab14b02bb29b8c031bc75983f5f799786dbfc9a238e842f7678527e39e040f82c284a22bf4ec82a2226cbce0c3d33a0df503b113ec75b064
@@ -8,32 +8,13 @@ module IsoDoc
8
8
  # processed in foreword instead
9
9
  end
10
10
 
11
- def foreword(isoxml, out)
12
- f = isoxml.at(ns("//foreword"))
13
- b = isoxml.at(ns("//boilerplate/legal-statement"))
14
- page_break(out)
15
- iec_orgname(out)
16
- middle_title(isoxml, out)
17
- foreword1(f, b, out)
18
- end
19
-
20
- def foreword1(sect, boilerplate, out)
11
+ def foreword(sect, out)
21
12
  out.div **attr_code(id: sect ? sect["id"] : "") do |s|
22
13
  s.h1(class: "ForewordTitle") { |h1| h1 << @i18n.foreword }
23
- @meta.get[:doctype] == "Amendment" or
24
- s.div **attr_code(class: "boilerplate_legal") do |s1|
25
- boilerplate&.elements&.each { |e| parse(e, s1) }
26
- end
27
14
  sect&.elements&.each { |e| parse(e, s) unless e.name == "title" }
28
15
  end
29
16
  end
30
17
 
31
- def iec_orgname(out)
32
- out.p(class: "zzSTDTitle1") { |p| p << @i18n.get["IEC"] }
33
- out.p(class: "zzSTDTitle1") { |p| p << "____________" }
34
- out.p(class: "zzSTDTitle1") { |p| p << "&#xa0;" }
35
- end
36
-
37
18
  def middle_title(_isoxml, out)
38
19
  title1, title2 = middle_title_parts(out)
39
20
  out.p(class: "zzSTDTitle1") do |p|
@@ -94,6 +75,19 @@ module IsoDoc
94
75
  def set_termdomain(termdomain)
95
76
  return super unless @is_iev
96
77
  end
78
+
79
+ def para_class(node)
80
+ case node["class"]
81
+ when "zzSTDTitle1", "zzSTDTitle2" then "zzSTDTitle1"
82
+ else super
83
+ end
84
+ end
85
+
86
+ def clause_attrs(node)
87
+ ret = super
88
+ node["type"] == "boilerplate_legal" and ret["class"] = "boilerplate_legal"
89
+ ret
90
+ end
97
91
  end
98
92
  end
99
93
  end
@@ -2,7 +2,6 @@
2
2
 
3
3
  <nav>
4
4
 
5
- <h1 id="content">{{ labels["table_of_contents"] }}</h1>
6
5
  <div id="toc"></div>
7
6
 
8
7
  </nav>
@@ -1,3 +0,0 @@
1
- <p class="zzContents" style='margin-top:0cm'><span lang="EN-GB">{{ labels["table_of_contents"] }}</span></p>
2
-
3
- WORDTOC
@@ -452,10 +452,10 @@
452
452
  </fo:block>
453
453
  <fo:block-container margin-left="1.5mm">
454
454
  <fo:block-container margin-left="0mm">
455
- <fo:block-container border="0.5pt solid black" font-size="10pt" margin-top="8mm" font-weight="bold" padding-left="1.5mm" padding-top="0.5mm" width="102%" height="11mm" display-align="center">
456
- <fo:block margin-left="2mm">Warning! Make sure that you obtained this publication from an authorized distributor.</fo:block>
455
+ <fo:block-container border="0.5pt solid black" font-size="10pt" margin-top="8mm" font-weight="bold" padding-left="1.5mm" padding-top="0.5mm" width="102%" height="11mm" display-align="center" id="__internal_layout__warning_block">
456
+ <fo:block margin-left="1mm">Warning! Make sure that you obtained this publication from an authorized distributor.</fo:block>
457
457
  <xsl:if test="//iec:iec-standard/iec:bibdata/iec:title[@language = 'fr']">
458
- <fo:block margin-left="2mm" margin-top="3pt">Attention! Veuillez vous assurer que vous avez obtenu cette publication via un distributeur agréé.</fo:block>
458
+ <fo:block margin-left="1mm" margin-top="3pt">Attention! Veuillez vous assurer que vous avez obtenu cette publication via un distributeur agréé.</fo:block>
459
459
  </xsl:if>
460
460
  </fo:block-container>
461
461
  </fo:block-container>
@@ -869,9 +869,9 @@
869
869
 
870
870
  <xsl:for-each select="xalan:nodeset($current_document)">
871
871
 
872
- <xsl:variable name="docid">
872
+ <!-- <xsl:variable name="docid">
873
873
  <xsl:call-template name="getDocumentId"/>
874
- </xsl:variable>
874
+ </xsl:variable> -->
875
875
 
876
876
  <fo:page-sequence master-reference="document" format="1" force-page-count="no-force"> <!-- initial-page-number="2" -->
877
877
 
@@ -883,17 +883,22 @@
883
883
  </xsl:if>
884
884
 
885
885
  <xsl:call-template name="insertHeaderFooter"/>
886
- <fo:flow flow-name="xsl-region-body">
886
+ <fo:flow flow-name="xsl-region-body">
887
+
888
+ <xsl:call-template name="processPrefaceSectionsDefault"/>
887
889
 
890
+ <!--
888
891
  <xsl:call-template name="insertTOCpages">
889
892
  <xsl:with-param name="contents" select="$contents/doc[@id = $docid]"/>
890
893
  </xsl:call-template>
891
-
894
+
892
895
  <xsl:call-template name="insertPrefacepages">
893
896
  <xsl:with-param name="lang" select="$lang"/>
894
897
  </xsl:call-template>
898
+ -->
895
899
 
896
- </fo:flow>
900
+ <fo:block/> <!-- for prevent empty preface -->
901
+ </fo:flow>
897
902
  </fo:page-sequence>
898
903
 
899
904
  <xsl:call-template name="insertBodypages">
@@ -1191,7 +1196,7 @@
1191
1196
 
1192
1197
  <xsl:template name="insertTOCpages">
1193
1198
  <xsl:param name="contents"/>
1194
- <fo:block-container>
1199
+ <!-- <fo:block-container>
1195
1200
  <fo:block role="TOC">
1196
1201
  <fo:block font-size="12pt" text-align="center" margin-bottom="22pt" role="H1">
1197
1202
  <xsl:variable name="title-toc">
@@ -1202,90 +1207,90 @@
1202
1207
  <xsl:call-template name="addLetterSpacing">
1203
1208
  <xsl:with-param name="text" select="java:toUpperCase(java:java.lang.String.new($title-toc))"/>
1204
1209
  </xsl:call-template>
1205
- </fo:block>
1206
-
1207
- <xsl:for-each select="xalan:nodeset($contents)//item[@display = 'true']"><!-- [@display = 'true']
1208
- [@level &lt;= 3]
1209
- [not(@level = 2 and starts-with(@section, '0'))] skip clause from preface -->
1210
- <fo:block text-align-last="justify" role="TOCI">
1211
- <xsl:if test="@level = 1">
1212
- <xsl:attribute name="margin-bottom">5pt</xsl:attribute>
1213
- </xsl:if>
1214
- <xsl:if test="@level = 2">
1215
- <xsl:attribute name="margin-bottom">3pt</xsl:attribute>
1216
- </xsl:if>
1217
- <xsl:if test="@level &gt;= 3">
1218
- <xsl:attribute name="margin-bottom">2pt</xsl:attribute>
1219
- </xsl:if>
1220
- <xsl:if test="@type = 'indexsect'">
1221
- <xsl:attribute name="space-before">16pt</xsl:attribute>
1222
- </xsl:if>
1223
- <xsl:if test="@type = 'references'">
1224
- <xsl:attribute name="space-before">5pt</xsl:attribute>
1225
- </xsl:if>
1226
-
1227
- <fo:list-block>
1228
- <xsl:attribute name="margin-left">
1229
- <xsl:choose>
1230
- <xsl:when test="title/@variant-title = 'true'">0mm</xsl:when>
1231
- <xsl:when test="@level = 2">8mm</xsl:when>
1232
- <xsl:when test="@level &gt;= 3"><xsl:value-of select="(@level - 2) * 23"/>mm</xsl:when>
1233
- <xsl:otherwise>0mm</xsl:otherwise>
1234
- </xsl:choose>
1235
- </xsl:attribute>
1236
- <xsl:attribute name="provisional-distance-between-starts">
1237
- <xsl:choose>
1238
- <xsl:when test="@section = ''">0mm</xsl:when>
1239
- <xsl:when test="@level = 1">8mm</xsl:when>
1240
- <xsl:when test="@level = 2">15mm</xsl:when>
1241
- <xsl:when test="@level &gt;= 3"><xsl:value-of select="(@level - 2) * 19"/>mm</xsl:when>
1242
- <xsl:otherwise>0mm</xsl:otherwise>
1243
- </xsl:choose>
1244
- </xsl:attribute>
1245
- <fo:list-item>
1246
- <fo:list-item-label end-indent="label-end()">
1247
- <fo:block>
1248
- <xsl:value-of select="@section"/>
1249
- </fo:block>
1250
- </fo:list-item-label>
1251
- <fo:list-item-body start-indent="body-start()">
1252
- <fo:block text-align-last="justify">
1253
- <fo:basic-link internal-destination="{@id}" fox:alt-text="{title}">
1254
- <xsl:variable name="title">
1255
- <xsl:apply-templates select="title"/>
1256
- </xsl:variable>
1257
- <xsl:call-template name="addLetterSpacing">
1258
- <xsl:with-param name="text" select="$title"/>
1259
- </xsl:call-template>
1260
- <xsl:text> </xsl:text>
1261
- <fo:inline keep-together.within-line="always">
1262
- <fo:leader leader-pattern="dots"/>
1263
- <fo:inline><fo:page-number-citation ref-id="{@id}"/></fo:inline>
1264
- </fo:inline>
1265
- </fo:basic-link>
1266
- </fo:block>
1267
- </fo:list-item-body>
1268
- </fo:list-item>
1269
- </fo:list-block>
1270
- </fo:block>
1271
- </xsl:for-each>
1272
-
1273
- <xsl:if test="$contents//figures/figure">
1274
- <fo:block margin-bottom="5pt"> </fo:block>
1275
- <xsl:for-each select="$contents//figures/figure">
1276
- <xsl:call-template name="insertListOf_Item"/>
1277
- </xsl:for-each>
1210
+ </fo:block> -->
1211
+
1212
+ <xsl:for-each select="xalan:nodeset($contents)//item[@display = 'true']"><!-- [@display = 'true']
1213
+ [@level &lt;= 3]
1214
+ [not(@level = 2 and starts-with(@section, '0'))] skip clause from preface -->
1215
+ <fo:block text-align-last="justify" role="TOCI">
1216
+ <xsl:if test="@level = 1">
1217
+ <xsl:attribute name="margin-bottom">5pt</xsl:attribute>
1278
1218
  </xsl:if>
1279
-
1280
- <xsl:if test="$contents//tables/table">
1281
- <fo:block margin-bottom="5pt"> </fo:block>
1282
- <xsl:for-each select="$contents//tables/table">
1283
- <xsl:call-template name="insertListOf_Item"/>
1284
- </xsl:for-each>
1219
+ <xsl:if test="@level = 2">
1220
+ <xsl:attribute name="margin-bottom">3pt</xsl:attribute>
1221
+ </xsl:if>
1222
+ <xsl:if test="@level &gt;= 3">
1223
+ <xsl:attribute name="margin-bottom">2pt</xsl:attribute>
1224
+ </xsl:if>
1225
+ <xsl:if test="@type = 'indexsect'">
1226
+ <xsl:attribute name="space-before">16pt</xsl:attribute>
1227
+ </xsl:if>
1228
+ <xsl:if test="@type = 'references'">
1229
+ <xsl:attribute name="space-before">5pt</xsl:attribute>
1285
1230
  </xsl:if>
1286
1231
 
1232
+ <fo:list-block>
1233
+ <xsl:attribute name="margin-left">
1234
+ <xsl:choose>
1235
+ <xsl:when test="title/@variant-title = 'true'">0mm</xsl:when>
1236
+ <xsl:when test="@level = 2">8mm</xsl:when>
1237
+ <xsl:when test="@level &gt;= 3"><xsl:value-of select="(@level - 2) * 23"/>mm</xsl:when>
1238
+ <xsl:otherwise>0mm</xsl:otherwise>
1239
+ </xsl:choose>
1240
+ </xsl:attribute>
1241
+ <xsl:attribute name="provisional-distance-between-starts">
1242
+ <xsl:choose>
1243
+ <xsl:when test="@section = ''">0mm</xsl:when>
1244
+ <xsl:when test="@level = 1">8mm</xsl:when>
1245
+ <xsl:when test="@level = 2">15mm</xsl:when>
1246
+ <xsl:when test="@level &gt;= 3"><xsl:value-of select="(@level - 2) * 19"/>mm</xsl:when>
1247
+ <xsl:otherwise>0mm</xsl:otherwise>
1248
+ </xsl:choose>
1249
+ </xsl:attribute>
1250
+ <fo:list-item>
1251
+ <fo:list-item-label end-indent="label-end()">
1252
+ <fo:block>
1253
+ <xsl:value-of select="@section"/>
1254
+ </fo:block>
1255
+ </fo:list-item-label>
1256
+ <fo:list-item-body start-indent="body-start()">
1257
+ <fo:block text-align-last="justify">
1258
+ <fo:basic-link internal-destination="{@id}" fox:alt-text="{title}">
1259
+ <xsl:variable name="title">
1260
+ <xsl:apply-templates select="title"/>
1261
+ </xsl:variable>
1262
+ <xsl:call-template name="addLetterSpacing">
1263
+ <xsl:with-param name="text" select="$title"/>
1264
+ </xsl:call-template>
1265
+ <xsl:text> </xsl:text>
1266
+ <fo:inline keep-together.within-line="always">
1267
+ <fo:leader leader-pattern="dots"/>
1268
+ <fo:inline><fo:page-number-citation ref-id="{@id}"/></fo:inline>
1269
+ </fo:inline>
1270
+ </fo:basic-link>
1271
+ </fo:block>
1272
+ </fo:list-item-body>
1273
+ </fo:list-item>
1274
+ </fo:list-block>
1287
1275
  </fo:block>
1288
- </fo:block-container>
1276
+ </xsl:for-each>
1277
+
1278
+ <xsl:if test="$contents//figures/figure">
1279
+ <fo:block margin-bottom="5pt"> </fo:block>
1280
+ <xsl:for-each select="$contents//figures/figure">
1281
+ <xsl:call-template name="insertListOf_Item"/>
1282
+ </xsl:for-each>
1283
+ </xsl:if>
1284
+
1285
+ <xsl:if test="$contents//tables/table">
1286
+ <fo:block margin-bottom="5pt"> </fo:block>
1287
+ <xsl:for-each select="$contents//tables/table">
1288
+ <xsl:call-template name="insertListOf_Item"/>
1289
+ </xsl:for-each>
1290
+ </xsl:if>
1291
+
1292
+ <!-- </fo:block>
1293
+ </fo:block-container> -->
1289
1294
  </xsl:template>
1290
1295
 
1291
1296
  <xsl:template name="insertListOf_Item">
@@ -1300,6 +1305,49 @@
1300
1305
  </fo:block>
1301
1306
  </xsl:template>
1302
1307
 
1308
+ <xsl:template match="iec:preface/iec:clause[@type = 'toc']" priority="3">
1309
+ <fo:block-container>
1310
+ <fo:block role="TOC">
1311
+ <xsl:apply-templates/>
1312
+
1313
+ <xsl:if test="count(*) = 1 and *[local-name() = 'title']"> <!-- if there isn't user ToC -->
1314
+ <xsl:variable name="docid">
1315
+ <xsl:call-template name="getDocumentId"/>
1316
+ </xsl:variable>
1317
+ <xsl:call-template name="insertTOCpages">
1318
+ <xsl:with-param name="contents" select="$contents/doc[@id = $docid]"/>
1319
+ </xsl:call-template>
1320
+ </xsl:if>
1321
+ </fo:block>
1322
+ </fo:block-container>
1323
+ </xsl:template>
1324
+
1325
+ <xsl:template match="iec:preface/iec:clause[@type = 'toc']/iec:title" priority="3">
1326
+ <fo:block font-size="12pt" text-align="center" margin-bottom="22pt" role="H1">
1327
+ <xsl:call-template name="addLetterSpacing">
1328
+ <xsl:with-param name="text" select="java:toUpperCase(java:java.lang.String.new(.))"/>
1329
+ </xsl:call-template>
1330
+ </fo:block>
1331
+ </xsl:template>
1332
+
1333
+ <xsl:template match="iec:preface/iec:pagebreak" priority="3">
1334
+ <fo:block break-after="page"/>
1335
+ </xsl:template>
1336
+
1337
+ <xsl:template match="*[local-name() = 'preface' or local-name() = 'sections']/iec:p[starts-with(@class, 'zzSTDTitle')]" priority="3">
1338
+ <fo:block-container font-size="12pt" text-align="center">
1339
+ <xsl:if test="following-sibling::*[1][not(self::iec:p[starts-with(@class, 'zzSTDTitle')])]">
1340
+ <xsl:attribute name="margin-bottom">18pt</xsl:attribute>
1341
+ </xsl:if>
1342
+ <fo:block>
1343
+ <xsl:if test="iec:strong"> <!-- title -->
1344
+ <xsl:attribute name="role">H1</xsl:attribute>
1345
+ </xsl:if>
1346
+ <xsl:apply-templates/>
1347
+ </fo:block>
1348
+ </fo:block-container>
1349
+ </xsl:template>
1350
+
1303
1351
  <xsl:template name="insertPrefacepages">
1304
1352
  <xsl:param name="lang" select="$lang"/>
1305
1353
  <fo:block break-after="page"/>
@@ -1622,14 +1670,21 @@
1622
1670
  <xsl:with-param name="text" select="iec:title"/>
1623
1671
  </xsl:call-template>
1624
1672
  </fo:block>
1625
- <fo:block font-size="8.2pt" text-align="justify"> <!-- margin-left="6.3mm" -->
1673
+ <!-- margin-left="6.3mm" -->
1674
+ <!-- <fo:block font-size="8.2pt" text-align="justify">
1626
1675
  <xsl:apply-templates select="/iec:iec-standard/iec:boilerplate/iec:legal-statement/*"/>
1627
- </fo:block>
1676
+ </fo:block> -->
1628
1677
  <fo:block>
1629
1678
  <xsl:apply-templates select="*[not(local-name() = 'title')]"/>
1630
1679
  </fo:block>
1631
1680
  </xsl:template>
1632
1681
 
1682
+ <xsl:template match="iec:clause[@type = 'boilerplate_legal']" priority="3">
1683
+ <fo:block font-size="8.2pt" text-align="justify">
1684
+ <xsl:apply-templates/>
1685
+ </fo:block>
1686
+ </xsl:template>
1687
+
1633
1688
  <xsl:template match="iec:annex//iec:clause" priority="2">
1634
1689
  <fo:block id="{@id}" margin-top="5pt" margin-bottom="10pt" text-align="justify">
1635
1690
  <xsl:apply-templates/>
@@ -1806,7 +1861,7 @@
1806
1861
  <xsl:if test="ancestor::iec:ul">
1807
1862
  <xsl:attribute name="margin-bottom">3pt</xsl:attribute>
1808
1863
  </xsl:if>
1809
- <xsl:if test="ancestor::iec:legal-statement">
1864
+ <xsl:if test="ancestor::iec:legal-statement or ancestor::iec:clause[@type = 'boilerplate_legal']">
1810
1865
  <xsl:attribute name="margin-bottom">5pt</xsl:attribute>
1811
1866
  </xsl:if>
1812
1867
  <xsl:apply-templates/>
@@ -1844,14 +1899,18 @@
1844
1899
  </xsl:template>
1845
1900
 
1846
1901
  <xsl:template match="iec:xref[@pagenumber = 'true']" priority="2">
1847
- <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
1848
- <fo:inline>
1849
- <xsl:if test="@id">
1850
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
1851
- </xsl:if>
1852
- <fo:page-number-citation ref-id="{@target}"/>
1853
- </fo:inline>
1854
- </fo:basic-link>
1902
+ <xsl:call-template name="insert_basic_link">
1903
+ <xsl:with-param name="element">
1904
+ <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
1905
+ <fo:inline>
1906
+ <xsl:if test="@id">
1907
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
1908
+ </xsl:if>
1909
+ <fo:page-number-citation ref-id="{@target}"/>
1910
+ </fo:inline>
1911
+ </fo:basic-link>
1912
+ </xsl:with-param>
1913
+ </xsl:call-template>
1855
1914
  </xsl:template>
1856
1915
 
1857
1916
  <!-- =================== -->
@@ -2764,6 +2823,7 @@
2764
2823
  </xsl:attribute-set>
2765
2824
 
2766
2825
  <xsl:attribute-set name="xref-style">
2826
+ <xsl:attribute name="keep-together.within-line">always</xsl:attribute>
2767
2827
 
2768
2828
  </xsl:attribute-set>
2769
2829
 
@@ -4862,9 +4922,13 @@
4862
4922
  <xsl:attribute name="padding-right">0.5mm</xsl:attribute>
4863
4923
  </xsl:if>
4864
4924
 
4865
- <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
4866
- <xsl:value-of select="$current_fn_number_text"/>
4867
- </fo:basic-link>
4925
+ <xsl:call-template name="insert_basic_link">
4926
+ <xsl:with-param name="element">
4927
+ <fo:basic-link internal-destination="{$ref_id}" fox:alt-text="footnote {$current_fn_number}">
4928
+ <xsl:value-of select="$current_fn_number_text"/>
4929
+ </fo:basic-link>
4930
+ </xsl:with-param>
4931
+ </xsl:call-template>
4868
4932
  </fo:inline>
4869
4933
  </xsl:variable>
4870
4934
 
@@ -5210,7 +5274,7 @@
5210
5274
  <xsl:apply-templates select="*[local-name()='dt']/*"/>
5211
5275
 
5212
5276
  <xsl:text> </xsl:text>
5213
- <xsl:apply-templates select="*[local-name()='dd']/*" mode="inline"/>
5277
+ <xsl:apply-templates select="*[local-name()='dd']/node()" mode="inline"/>
5214
5278
  </fo:block>
5215
5279
 
5216
5280
  </xsl:when> <!-- END: only one component -->
@@ -5704,8 +5768,18 @@
5704
5768
  </xsl:if>
5705
5769
  </xsl:template>
5706
5770
 
5707
- <xsl:template match="*[local-name()='dd']/*[local-name()='p']" mode="inline">
5708
- <fo:inline><xsl:text> </xsl:text><xsl:apply-templates/></fo:inline>
5771
+ <xsl:template match="*[local-name()='dd']/*" mode="inline">
5772
+ <xsl:variable name="is_inline_element_after_where">
5773
+ <xsl:if test="(local-name() = 'p') and not(preceding-sibling::node()[normalize-space() != ''])">true</xsl:if>
5774
+ </xsl:variable>
5775
+ <xsl:choose>
5776
+ <xsl:when test="$is_inline_element_after_where = 'true'">
5777
+ <fo:inline><xsl:text> </xsl:text><xsl:apply-templates/></fo:inline>
5778
+ </xsl:when>
5779
+ <xsl:otherwise>
5780
+ <xsl:apply-templates select="."/>
5781
+ </xsl:otherwise>
5782
+ </xsl:choose>
5709
5783
  </xsl:template>
5710
5784
 
5711
5785
  <!-- virtual html table for dl/[dt and dd] for IF (Intermediate Format) -->
@@ -7206,6 +7280,79 @@
7206
7280
  <xsl:value-of select="."/><xsl:value-of select="$zero_width_space"/>
7207
7281
  </xsl:template>
7208
7282
 
7283
+ <!-- special case for:
7284
+ <math xmlns="http://www.w3.org/1998/Math/MathML">
7285
+ <mstyle displaystyle="true">
7286
+ <msup>
7287
+ <mi color="#00000000">C</mi>
7288
+ <mtext>R</mtext>
7289
+ </msup>
7290
+ <msubsup>
7291
+ <mtext>C</mtext>
7292
+ <mi>n</mi>
7293
+ <mi>k</mi>
7294
+ </msubsup>
7295
+ </mstyle>
7296
+ </math>
7297
+ -->
7298
+ <xsl:template match="mathml:msup/mathml:mi[. = '‌' or . = ''][not(preceding-sibling::*)][following-sibling::mathml:mtext]" mode="mathml">
7299
+ <xsl:copy>
7300
+ <xsl:copy-of select="@*"/>
7301
+ <xsl:variable name="next_mtext" select="ancestor::mathml:msup/following-sibling::*[1][self::mathml:msubsup or self::mathml:msub or self::mathml:msup]/mathml:mtext"/>
7302
+ <xsl:if test="string-length($next_mtext) != ''">
7303
+ <xsl:attribute name="color">#00000000</xsl:attribute>
7304
+ </xsl:if>
7305
+ <xsl:apply-templates/>
7306
+ <xsl:value-of select="$next_mtext"/>
7307
+ </xsl:copy>
7308
+ </xsl:template>
7309
+
7310
+ <!-- special case for:
7311
+ <msup>
7312
+ <mtext/>
7313
+ <mn>1</mn>
7314
+ </msup>
7315
+ convert to (add mspace after mtext and enclose them into mrow):
7316
+ <msup>
7317
+ <mrow>
7318
+ <mtext/>
7319
+ <mspace height="1.47ex"/>
7320
+ </mrow>
7321
+ <mn>1</mn>
7322
+ </msup>
7323
+ -->
7324
+ <xsl:template match="mathml:msup/mathml:mtext[not(preceding-sibling::*)]" mode="mathml">
7325
+ <mathml:mrow>
7326
+ <xsl:copy-of select="."/>
7327
+ <mathml:mspace height="1.47ex"/>
7328
+ </mathml:mrow>
7329
+ </xsl:template>
7330
+
7331
+ <!-- add space around vertical line -->
7332
+ <xsl:template match="mathml:mo[normalize-space(text()) = '|']" mode="mathml">
7333
+ <xsl:copy>
7334
+ <xsl:apply-templates select="@*" mode="mathml"/>
7335
+ <xsl:if test="not(@lspace)">
7336
+ <xsl:attribute name="lspace">0.4em</xsl:attribute>
7337
+ </xsl:if>
7338
+ <xsl:if test="not(@rspace)">
7339
+ <xsl:attribute name="rspace">0.4em</xsl:attribute>
7340
+ </xsl:if>
7341
+ <xsl:apply-templates mode="mathml"/>
7342
+ </xsl:copy>
7343
+ </xsl:template>
7344
+
7345
+ <!-- decrease fontsize for 'Circled Times' char -->
7346
+ <xsl:template match="mathml:mo[normalize-space(text()) = '⊗']" mode="mathml">
7347
+ <xsl:copy>
7348
+ <xsl:apply-templates select="@*" mode="mathml"/>
7349
+ <xsl:if test="not(@fontsize)">
7350
+ <xsl:attribute name="fontsize">55%</xsl:attribute>
7351
+ </xsl:if>
7352
+ <xsl:apply-templates mode="mathml"/>
7353
+ </xsl:copy>
7354
+ </xsl:template>
7355
+
7209
7356
  <!-- Examples:
7210
7357
  <stem type="AsciiMath">x = 1</stem>
7211
7358
  <stem type="AsciiMath"><asciimath>x = 1</asciimath></stem>
@@ -7267,19 +7414,23 @@
7267
7414
  <xsl:apply-templates/>
7268
7415
  </xsl:when>
7269
7416
  <xsl:otherwise>
7270
- <fo:basic-link external-destination="{$target}" fox:alt-text="{$target}">
7271
- <xsl:choose>
7272
- <xsl:when test="normalize-space(.) = ''">
7273
- <xsl:call-template name="add-zero-spaces-link-java">
7274
- <xsl:with-param name="text" select="$target_text"/>
7275
- </xsl:call-template>
7276
- </xsl:when>
7277
- <xsl:otherwise>
7278
- <!-- output text from <link>text</link> -->
7279
- <xsl:apply-templates/>
7280
- </xsl:otherwise>
7281
- </xsl:choose>
7282
- </fo:basic-link>
7417
+ <xsl:call-template name="insert_basic_link">
7418
+ <xsl:with-param name="element">
7419
+ <fo:basic-link external-destination="{$target}" fox:alt-text="{$target}">
7420
+ <xsl:choose>
7421
+ <xsl:when test="normalize-space(.) = ''">
7422
+ <xsl:call-template name="add-zero-spaces-link-java">
7423
+ <xsl:with-param name="text" select="$target_text"/>
7424
+ </xsl:call-template>
7425
+ </xsl:when>
7426
+ <xsl:otherwise>
7427
+ <!-- output text from <link>text</link> -->
7428
+ <xsl:apply-templates/>
7429
+ </xsl:otherwise>
7430
+ </xsl:choose>
7431
+ </fo:basic-link>
7432
+ </xsl:with-param>
7433
+ </xsl:call-template>
7283
7434
  </xsl:otherwise>
7284
7435
  </xsl:choose>
7285
7436
  </fo:inline>
@@ -7342,12 +7493,16 @@
7342
7493
  </xsl:template>
7343
7494
 
7344
7495
  <xsl:template match="*[local-name() = 'xref']">
7345
- <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
7346
- <xsl:if test="parent::*[local-name() = 'add']">
7347
- <xsl:call-template name="append_add-style"/>
7348
- </xsl:if>
7349
- <xsl:apply-templates/>
7350
- </fo:basic-link>
7496
+ <xsl:call-template name="insert_basic_link">
7497
+ <xsl:with-param name="element">
7498
+ <fo:basic-link internal-destination="{@target}" fox:alt-text="{@target}" xsl:use-attribute-sets="xref-style">
7499
+ <xsl:if test="parent::*[local-name() = 'add']">
7500
+ <xsl:call-template name="append_add-style"/>
7501
+ </xsl:if>
7502
+ <xsl:apply-templates/>
7503
+ </fo:basic-link>
7504
+ </xsl:with-param>
7505
+ </xsl:call-template>
7351
7506
  </xsl:template>
7352
7507
 
7353
7508
  <!-- ====== -->
@@ -7732,7 +7887,7 @@
7732
7887
  <xsl:value-of select="$images/images/image[@id = current()/@id]/@src"/>
7733
7888
  </xsl:when>
7734
7889
  <xsl:when test="not(starts-with(@src, 'data:'))">
7735
- <xsl:value-of select="concat('url(file:',$basepath, @src, ')')"/>
7890
+ <xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
7736
7891
  </xsl:when>
7737
7892
  <xsl:otherwise>
7738
7893
  <xsl:value-of select="@src"/>
@@ -7754,7 +7909,7 @@
7754
7909
  </xsl:when>
7755
7910
  <xsl:when test="not(starts-with(@src, 'data:'))">
7756
7911
  <xsl:variable name="src">
7757
- <xsl:value-of select="concat('url(file:',$basepath, @src, ')')"/>
7912
+ <xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
7758
7913
  </xsl:variable>
7759
7914
  <xsl:variable name="file" select="java:java.io.File.new(@src)"/>
7760
7915
  <xsl:variable name="bufferedImage" select="java:javax.imageio.ImageIO.read($file)"/>
@@ -8140,15 +8295,19 @@
8140
8295
  <xsl:param name="dest"/>
8141
8296
  <fo:block-container position="absolute" left="{$left}px" top="{$top}px" width="{$width}px" height="{$height}px">
8142
8297
  <fo:block font-size="1pt">
8143
- <fo:basic-link internal-destination="{$dest}" fox:alt-text="svg link">
8144
- <fo:inline-container inline-progression-dimension="100%">
8145
- <fo:block-container height="{$height - 1}px" width="100%">
8146
- <!-- DEBUG <xsl:if test="local-name()='polygon'">
8147
- <xsl:attribute name="background-color">magenta</xsl:attribute>
8148
- </xsl:if> -->
8149
- <fo:block> </fo:block></fo:block-container>
8150
- </fo:inline-container>
8151
- </fo:basic-link>
8298
+ <xsl:call-template name="insert_basic_link">
8299
+ <xsl:with-param name="element">
8300
+ <fo:basic-link internal-destination="{$dest}" fox:alt-text="svg link">
8301
+ <fo:inline-container inline-progression-dimension="100%">
8302
+ <fo:block-container height="{$height - 1}px" width="100%">
8303
+ <!-- DEBUG <xsl:if test="local-name()='polygon'">
8304
+ <xsl:attribute name="background-color">magenta</xsl:attribute>
8305
+ </xsl:if> -->
8306
+ <fo:block> </fo:block></fo:block-container>
8307
+ </fo:inline-container>
8308
+ </fo:basic-link>
8309
+ </xsl:with-param>
8310
+ </xsl:call-template>
8152
8311
  </fo:block>
8153
8312
  </fo:block-container>
8154
8313
  </xsl:template>
@@ -9711,14 +9870,18 @@
9711
9870
  </xsl:template>
9712
9871
 
9713
9872
  <xsl:template match="*[local-name() = 'origin']">
9714
- <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
9715
- <xsl:if test="normalize-space(@citeas) = ''">
9716
- <xsl:attribute name="fox:alt-text"><xsl:value-of select="@bibitemid"/></xsl:attribute>
9717
- </xsl:if>
9718
- <fo:inline xsl:use-attribute-sets="origin-style">
9719
- <xsl:apply-templates/>
9720
- </fo:inline>
9721
- </fo:basic-link>
9873
+ <xsl:call-template name="insert_basic_link">
9874
+ <xsl:with-param name="element">
9875
+ <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
9876
+ <xsl:if test="normalize-space(@citeas) = ''">
9877
+ <xsl:attribute name="fox:alt-text"><xsl:value-of select="@bibitemid"/></xsl:attribute>
9878
+ </xsl:if>
9879
+ <fo:inline xsl:use-attribute-sets="origin-style">
9880
+ <xsl:apply-templates/>
9881
+ </fo:inline>
9882
+ </fo:basic-link>
9883
+ </xsl:with-param>
9884
+ </xsl:call-template>
9722
9885
  </xsl:template>
9723
9886
 
9724
9887
  <!-- not using, see https://github.com/glossarist/iev-document/issues/23 -->
@@ -9792,9 +9955,13 @@
9792
9955
  <xsl:if test="../*[local-name() = 'author']">
9793
9956
  <xsl:text>, </xsl:text>
9794
9957
  </xsl:if>
9795
- <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
9796
- <xsl:apply-templates/>
9797
- </fo:basic-link>
9958
+ <xsl:call-template name="insert_basic_link">
9959
+ <xsl:with-param name="element">
9960
+ <fo:basic-link internal-destination="{@bibitemid}" fox:alt-text="{@citeas}">
9961
+ <xsl:apply-templates/>
9962
+ </fo:basic-link>
9963
+ </xsl:with-param>
9964
+ </xsl:call-template>
9798
9965
  </xsl:template>
9799
9966
 
9800
9967
  <xsl:template match="*[local-name() = 'author']">
@@ -9843,25 +10010,29 @@
9843
10010
  <xsl:variable name="citeas" select="java:replaceAll(java:java.lang.String.new(@citeas),'^\[?(.+?)\]?$','$1')"/> <!-- remove leading and trailing brackets -->
9844
10011
  <xsl:variable name="text" select="normalize-space()"/>
9845
10012
 
9846
- <fo:basic-link fox:alt-text="{@citeas}">
9847
- <xsl:if test="normalize-space(@citeas) = ''">
9848
- <xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
9849
- </xsl:if>
9850
- <xsl:if test="@type = 'inline'">
10013
+ <xsl:call-template name="insert_basic_link">
10014
+ <xsl:with-param name="element">
10015
+ <fo:basic-link fox:alt-text="{@citeas}">
10016
+ <xsl:if test="normalize-space(@citeas) = ''">
10017
+ <xsl:attribute name="fox:alt-text"><xsl:value-of select="."/></xsl:attribute>
10018
+ </xsl:if>
10019
+ <xsl:if test="@type = 'inline'">
9851
10020
 
9852
- </xsl:if>
10021
+ </xsl:if>
9853
10022
 
9854
- <xsl:choose>
9855
- <xsl:when test="$external-destination != ''"> <!-- external hyperlink -->
9856
- <xsl:attribute name="external-destination"><xsl:value-of select="$external-destination"/></xsl:attribute>
9857
- </xsl:when>
9858
- <xsl:otherwise>
9859
- <xsl:attribute name="internal-destination"><xsl:value-of select="@bibitemid"/></xsl:attribute>
9860
- </xsl:otherwise>
9861
- </xsl:choose>
10023
+ <xsl:choose>
10024
+ <xsl:when test="$external-destination != ''"> <!-- external hyperlink -->
10025
+ <xsl:attribute name="external-destination"><xsl:value-of select="$external-destination"/></xsl:attribute>
10026
+ </xsl:when>
10027
+ <xsl:otherwise>
10028
+ <xsl:attribute name="internal-destination"><xsl:value-of select="@bibitemid"/></xsl:attribute>
10029
+ </xsl:otherwise>
10030
+ </xsl:choose>
9862
10031
 
9863
- <xsl:apply-templates/>
9864
- </fo:basic-link>
10032
+ <xsl:apply-templates/>
10033
+ </fo:basic-link>
10034
+ </xsl:with-param>
10035
+ </xsl:call-template>
9865
10036
 
9866
10037
  </fo:inline>
9867
10038
  </xsl:when>
@@ -10104,7 +10275,10 @@
10104
10275
  <xsl:variable name="ul_labels" select="xalan:nodeset($ul_labels_)"/>
10105
10276
 
10106
10277
  <xsl:template name="setULLabel">
10107
- <xsl:variable name="list_level_" select="count(ancestor::*[local-name() = 'ul']) + count(ancestor::*[local-name() = 'ol'])"/>
10278
+ <xsl:variable name="list_level__">
10279
+ <xsl:value-of select="count(ancestor::*[local-name() = 'ul']) + count(ancestor::*[local-name() = 'ol'])"/>
10280
+ </xsl:variable>
10281
+ <xsl:variable name="list_level_" select="number($list_level__)"/>
10108
10282
  <xsl:variable name="list_level">
10109
10283
  <xsl:choose>
10110
10284
  <xsl:when test="$list_level_ &lt;= 3"><xsl:value-of select="$list_level_"/></xsl:when>
@@ -10237,9 +10411,11 @@
10237
10411
  </fo:block-container>
10238
10412
  </xsl:when>
10239
10413
  <xsl:otherwise>
10240
- <fo:block>
10241
- <xsl:apply-templates select="." mode="list"/>
10242
- </fo:block>
10414
+
10415
+ <fo:block>
10416
+ <xsl:apply-templates select="." mode="list"/>
10417
+ </fo:block>
10418
+
10243
10419
  </xsl:otherwise>
10244
10420
  </xsl:choose>
10245
10421
  </xsl:template>
@@ -10255,7 +10431,7 @@
10255
10431
  <xsl:variable name="provisional_distance_between_starts_">
10256
10432
  <attributes xsl:use-attribute-sets="list-style">
10257
10433
 
10258
- <xsl:if test="ancestor::iec:legal-statement">
10434
+ <xsl:if test="ancestor::iec:legal-statement or ancestor::iec:clause[@type = 'boilerplate_legal']">
10259
10435
  <xsl:attribute name="provisional-distance-between-starts">5mm</xsl:attribute>
10260
10436
  </xsl:if>
10261
10437
 
@@ -10936,24 +11112,32 @@
10936
11112
  <xsl:for-each select="*[local-name() = 'tab']">
10937
11113
  <xsl:variable name="current_id" select="generate-id()"/>
10938
11114
  <fo:table-cell>
10939
- <fo:block>
10940
- <fo:basic-link internal-destination="{$target}" fox:alt-text="{.}">
10941
- <xsl:for-each select="following-sibling::node()[not(self::*[local-name() = 'tab']) and preceding-sibling::*[local-name() = 'tab'][1][generate-id() = $current_id]]">
10942
- <xsl:choose>
10943
- <xsl:when test="self::text()"><xsl:value-of select="."/></xsl:when>
10944
- <xsl:otherwise><xsl:apply-templates select="."/></xsl:otherwise>
10945
- </xsl:choose>
10946
- </xsl:for-each>
10947
- </fo:basic-link>
11115
+ <fo:block line-height-shift-adjustment="disregard-shifts">
11116
+ <xsl:call-template name="insert_basic_link">
11117
+ <xsl:with-param name="element">
11118
+ <fo:basic-link internal-destination="{$target}" fox:alt-text="{.}">
11119
+ <xsl:for-each select="following-sibling::node()[not(self::*[local-name() = 'tab']) and preceding-sibling::*[local-name() = 'tab'][1][generate-id() = $current_id]]">
11120
+ <xsl:choose>
11121
+ <xsl:when test="self::text()"><xsl:value-of select="."/></xsl:when>
11122
+ <xsl:otherwise><xsl:apply-templates select="."/></xsl:otherwise>
11123
+ </xsl:choose>
11124
+ </xsl:for-each>
11125
+ </fo:basic-link>
11126
+ </xsl:with-param>
11127
+ </xsl:call-template>
10948
11128
  </fo:block>
10949
11129
  </fo:table-cell>
10950
11130
  </xsl:for-each>
10951
11131
  <!-- last column - for page numbers -->
10952
11132
  <fo:table-cell text-align="right" font-size="10pt" font-weight="bold" font-family="Arial">
10953
11133
  <fo:block>
10954
- <fo:basic-link internal-destination="{$target}" fox:alt-text="{.}">
10955
- <fo:page-number-citation ref-id="{$target}"/>
10956
- </fo:basic-link>
11134
+ <xsl:call-template name="insert_basic_link">
11135
+ <xsl:with-param name="element">
11136
+ <fo:basic-link internal-destination="{$target}" fox:alt-text="{.}">
11137
+ <fo:page-number-citation ref-id="{$target}"/>
11138
+ </fo:basic-link>
11139
+ </xsl:with-param>
11140
+ </xsl:call-template>
10957
11141
  </fo:block>
10958
11142
  </fo:table-cell>
10959
11143
  </xsl:template>
@@ -10995,6 +11179,27 @@
10995
11179
  <!-- End Table of Contents (ToC) processing -->
10996
11180
  <!-- =================== -->
10997
11181
 
11182
+ <!-- insert fo:basic-link, if external-destination or internal-destination is non-empty, otherwise insert fo:inline -->
11183
+ <xsl:template name="insert_basic_link">
11184
+ <xsl:param name="element"/>
11185
+ <xsl:variable name="element_node" select="xalan:nodeset($element)"/>
11186
+ <xsl:variable name="external-destination" select="normalize-space(count($element_node/fo:basic-link/@external-destination[. != '']) = 1)"/>
11187
+ <xsl:variable name="internal-destination" select="normalize-space(count($element_node/fo:basic-link/@internal-destination[. != '']) = 1)"/>
11188
+ <xsl:choose>
11189
+ <xsl:when test="$external-destination = 'true' or $internal-destination = 'true'">
11190
+ <xsl:copy-of select="$element_node"/>
11191
+ </xsl:when>
11192
+ <xsl:otherwise>
11193
+ <fo:inline>
11194
+ <xsl:for-each select="$element_node/fo:basic-link/@*[local-name() != 'external-destination' and local-name() != 'internal-destination' and local-name() != 'alt-text']">
11195
+ <xsl:attribute name="{local-name()}"><xsl:value-of select="."/></xsl:attribute>
11196
+ </xsl:for-each>
11197
+ <xsl:copy-of select="$element_node/fo:basic-link/node()"/>
11198
+ </fo:inline>
11199
+ </xsl:otherwise>
11200
+ </xsl:choose>
11201
+ </xsl:template>
11202
+
10998
11203
  <xsl:template match="*[local-name() = 'variant-title']"/> <!-- [@type = 'sub'] -->
10999
11204
  <xsl:template match="*[local-name() = 'variant-title'][@type = 'sub']" mode="subtitle">
11000
11205
  <fo:inline padding-right="5mm"> </fo:inline>
@@ -28,9 +28,8 @@ module IsoDoc
28
28
  end
29
29
 
30
30
  def termclause1(elem)
31
- return clause1(elem) unless @is_iev
32
- return if @suppressheadingnumbers || elem["unnumbered"]
33
-
31
+ @is_iev or return clause1(elem)
32
+ @suppressheadingnumbers || elem["unnumbered"] and return
34
33
  lbl = @xrefs.anchor(elem["id"], :label, true) or return
35
34
  prefix_name(elem, " ", "#{lbl}#{clausedelim}", "title")
36
35
  end
@@ -88,8 +87,7 @@ module IsoDoc
88
87
  end
89
88
 
90
89
  def merge_fr_into_en_term(docxml)
91
- return unless @is_iev
92
-
90
+ @is_iev or return
93
91
  docxml.xpath(ns("//term[@language = 'en'][@tag]")).each do |en|
94
92
  fr = docxml.at(ns("//term[@language = 'fr'][@tag = '#{en['tag']}']"))
95
93
  merge_fr_into_en_term1(en, fr) if fr
@@ -108,8 +106,7 @@ module IsoDoc
108
106
  end
109
107
 
110
108
  def otherlang_designations(docxml)
111
- return unless @is_iev
112
-
109
+ @is_iev or return
113
110
  docxml.xpath(ns("//term")).each do |t|
114
111
  otherlang_designations1(t, t["language"]&.split(/,/) || %w(en fr))
115
112
  end
@@ -133,8 +130,7 @@ module IsoDoc
133
130
  script = Metanorma::Utils.default_script(lang)
134
131
  c = HTMLEntities.new
135
132
  xml.traverse do |x|
136
- next unless x.text?
137
-
133
+ x.text? or next
138
134
  text = c.encode(c.decode(x.text), :hexadecimal)
139
135
  x.replace(cleanup_entities(l10n(text, lang, script), is_xml: false))
140
136
  end
@@ -155,8 +151,7 @@ module IsoDoc
155
151
  pr = merge_otherlang_designations(
156
152
  extract_otherlang_designations(term, lgs),
157
153
  )
158
- return if pr.empty?
159
-
154
+ pr.empty? and return
160
155
  prefs = pr.map do |p|
161
156
  "<dt>#{p[:lang]}</dt>" \
162
157
  "<dd language='#{p[:lang]}' script='#{p[:script]}'>" \
@@ -239,6 +234,59 @@ module IsoDoc
239
234
  i18nhash: @i18n.get)
240
235
  end
241
236
 
237
+ def rearrange_clauses(docxml)
238
+ insert_foreword(docxml) # feeds preface_rearrange
239
+ super
240
+ insert_middle_title(docxml)
241
+ end
242
+
243
+ def insert_foreword(docxml)
244
+ @meta.get[:doctype] == "Amendment" and return
245
+ b = docxml.at(ns("//boilerplate/legal-statement")) or return
246
+ unless f = docxml.at(ns("//preface/foreword"))
247
+ ins = toc_title_insert_pt(docxml)
248
+ f = ins.before(<<~CLAUSE).previous_element
249
+ <foreword id='_#{UUIDTools::UUID.random_create}'> </foreword>
250
+ CLAUSE
251
+ end
252
+ f.children.empty? and f.children = " "
253
+ ins = f.at(ns("./title")) || f.children.first.before(" ").previous
254
+ ins.next =
255
+ "<clause type='boilerplate_legal'>#{to_xml(b.children)}</clause>"
256
+ end
257
+
258
+ def insert_middle_title(docxml)
259
+ ins = docxml.at(ns("//preface/clause[@type = 'toc']")) or return
260
+ title1, title2 = middle_title_parts(nil)
261
+ title2out = ""
262
+ title2 and title2out = <<~OUTPUT
263
+ <p class="zzSTDTitle1">&#xa0;</p>
264
+ <p class="zzSTDTitle2"><strong>#{title2}</strong></p>
265
+ OUTPUT
266
+ ins.next = <<~OUTPUT
267
+ <pagebreak/>
268
+ <p class="zzSTDTitle1">#{@i18n.get['IEC']}</p>
269
+ <p class="zzSTDTitle1">____________</p>
270
+ <p class="zzSTDTitle1">&#xa0;</p>
271
+ <p class="zzSTDTitle1"><strong>#{title1.upcase}</strong></p>#{title2out}
272
+ <p class="zzSTDTitle1">&#xa0;</p>
273
+ OUTPUT
274
+ end
275
+
276
+ def middle_title_parts(_out)
277
+ title1 = @meta.get[:doctitlemain]&.sub(/\s+$/, "")
278
+ @meta.get[:doctitleintro] and
279
+ title1 = "#{@meta.get[:doctitleintro]} \u2014 #{title1}"
280
+ title2 = nil
281
+ if @meta.get[:doctitlepart]
282
+ title1 += " \u2014"
283
+ title2 = @meta.get[:doctitlepart]&.sub(/\s+$/, "")
284
+ @meta.get[:doctitlepartlabel] and
285
+ title2 = "#{@meta.get[:doctitlepartlabel]}: #{title2}"
286
+ end
287
+ [title1, title2]
288
+ end
289
+
242
290
  include Init
243
291
  end
244
292
  end
@@ -13,16 +13,16 @@ module IsoDoc
13
13
 
14
14
  def convert(input_filename, file = nil, debug = false,
15
15
  output_filename = nil)
16
- file = File.read(input_filename, encoding: "utf-8") if file.nil?
17
- @openmathdelim, @closemathdelim = extract_delims(file)
18
- docxml, filename, dir = convert_init(file, input_filename, debug)
19
- result = convert1(docxml, filename, dir)
20
- return result if debug
21
-
22
- output_filename ||= "#{filename}.#{@suffix}"
23
- postprocess(result, output_filename, dir)
24
- FileUtils.rm_rf dir
25
- end
16
+ file = File.read(input_filename, encoding: "utf-8") if file.nil?
17
+ @openmathdelim, @closemathdelim = extract_delims(file)
18
+ docxml, filename, dir = convert_init(file, input_filename, debug)
19
+ result = convert1(docxml, filename, dir)
20
+ return result if debug
21
+
22
+ output_filename ||= "#{filename}.#{@suffix}"
23
+ postprocess(result, output_filename, dir)
24
+ FileUtils.rm_rf dir
25
+ end
26
26
 
27
27
  def font_choice(options)
28
28
  if options[:script] == "Hans" then '"Source Han Sans",serif'
@@ -169,8 +169,8 @@ module IsoDoc
169
169
  docxml.xpath("//div[@class = 'boilerplate_legal']//li").each do |l|
170
170
  l.replace(l.children)
171
171
  end
172
- b = docxml.at("div[@class = 'boilerplate_legal']")
173
- b.replace(b.children)
172
+ b = docxml.at("//div[@class = 'boilerplate_legal']")
173
+ b and b.replace(b.children)
174
174
  end
175
175
 
176
176
  def authority_cleanup(docxml)
@@ -202,11 +202,15 @@ module IsoDoc
202
202
  { class: "TableTitle", style: "text-align:center;" }
203
203
  end
204
204
 
205
- def para_class(_node)
206
- classtype = nil
207
- classtype = "MsoCommentText" if @in_comment
208
- classtype = "Sourcecode" if @annotation
209
- classtype
205
+ def para_class(node)
206
+ case node["class"]
207
+ when "zzSTDTitle1", "zzSTDTitle2" then node["class"]
208
+ else
209
+ classtype = nil
210
+ classtype = "MsoCommentText" if @in_comment
211
+ classtype = "Sourcecode" if @annotation
212
+ classtype
213
+ end
210
214
  end
211
215
 
212
216
  def annex_name(_annex, name, div)
@@ -1,6 +1,9 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
- <grammar ns="https://www.metanorma.org/ns/iec" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
- <!-- default namespace = "https://www.metanorma.com/ns/iec" -->
2
+ <grammar ns='https://www.metanorma.org/ns/iec' xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
+ <!--
4
+ VERSION v1.2.1
5
+ default namespace = "https://www.metanorma.com/ns/iec"
6
+ -->
4
7
  <include href="relaton-iec.rng"/>
5
8
  <include href="isostandard.rng">
6
9
  <start>
@@ -55,13 +58,7 @@
55
58
  -->
56
59
  <define name="iec-standard">
57
60
  <element name="iec-standard">
58
- <attribute name="version"/>
59
- <attribute name="type">
60
- <choice>
61
- <value>semantic</value>
62
- <value>presentation</value>
63
- </choice>
64
- </attribute>
61
+ <ref name="Root-Attributes"/>
65
62
  <ref name="bibdata"/>
66
63
  <zeroOrMore>
67
64
  <ref name="termdocsource"/>
@@ -17,6 +17,7 @@
17
17
  these elements; we just want one namespace for any child grammars
18
18
  of this.
19
19
  -->
20
+ <!-- VERSION v1.2.1 -->
20
21
  <grammar xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
21
22
  <include href="reqt.rng"/>
22
23
  <include href="basicdoc.rng">
@@ -1349,15 +1350,19 @@
1349
1350
  </choice>
1350
1351
  </element>
1351
1352
  </define>
1353
+ <define name="Root-Attributes">
1354
+ <attribute name="version"/>
1355
+ <attribute name="schema-version"/>
1356
+ <attribute name="type">
1357
+ <choice>
1358
+ <value>semantic</value>
1359
+ <value>presentation</value>
1360
+ </choice>
1361
+ </attribute>
1362
+ </define>
1352
1363
  <define name="standard-document">
1353
1364
  <element name="standard-document">
1354
- <attribute name="version"/>
1355
- <attribute name="type">
1356
- <choice>
1357
- <value>semantic</value>
1358
- <value>presentation</value>
1359
- </choice>
1360
- </attribute>
1365
+ <ref name="Root-Attributes"/>
1361
1366
  <ref name="bibdata"/>
1362
1367
  <optional>
1363
1368
  <ref name="misccontainer"/>
@@ -1,6 +1,9 @@
1
1
  <?xml version="1.0" encoding="UTF-8"?>
2
2
  <grammar xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
3
- <!-- default namespace isostandard = "https://www.metanorma.com/ns/iso" -->
3
+ <!--
4
+ VERSION v1.2.1
5
+ default namespace isostandard = "https://www.metanorma.com/ns/iso"
6
+ -->
4
7
  <include href="isodoc.rng">
5
8
  <start>
6
9
  <ref name="iso-standard"/>
@@ -240,13 +243,7 @@
240
243
  -->
241
244
  <define name="iso-standard">
242
245
  <element name="iso-standard">
243
- <attribute name="version"/>
244
- <attribute name="type">
245
- <choice>
246
- <value>semantic</value>
247
- <value>presentation</value>
248
- </choice>
249
- </attribute>
246
+ <ref name="Root-Attributes"/>
250
247
  <ref name="bibdata"/>
251
248
  <zeroOrMore>
252
249
  <ref name="termdocsource"/>
@@ -1,6 +1,6 @@
1
1
  module Metanorma
2
2
  module Iec
3
- VERSION = "2.2.8".freeze
3
+ VERSION = "2.2.9".freeze
4
4
  end
5
5
  end
6
6
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-iec
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.8
4
+ version: 2.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-10 00:00:00.000000000 Z
11
+ date: 2023-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-iso