metanorma-iso 2.4.8 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/isodoc/iso/base_convert.rb +7 -22
- data/lib/isodoc/iso/html_convert.rb +0 -12
- data/lib/isodoc/iso/iso.amendment.xsl +85 -33
- data/lib/isodoc/iso/iso.international-standard.xsl +85 -33
- data/lib/isodoc/iso/presentation_xml_convert.rb +34 -1
- data/lib/isodoc/iso/sections.rb +4 -44
- data/lib/isodoc/iso/word_convert.rb +24 -17
- data/lib/isodoc/iso/word_dis_cleanup.rb +9 -0
- data/lib/isodoc/iso/word_dis_convert.rb +28 -25
- data/lib/isodoc/iso/xref.rb +1 -1
- data/lib/metanorma/iso/isodoc.rng +26 -4
- data/lib/metanorma/iso/version.rb +1 -1
- data/metanorma-iso.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b68e0ac152a02770b1ca677908a34d243a66ba8da955a98aac66391a6e1a73ae
|
4
|
+
data.tar.gz: 4122f534ef647b210a829dc1645240b79bc240a0059dec141ca3eec0f1c64efc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb2d619b3e439f33ac96fd63691a288730daed7aa3ed8d478898caca5f755d3aea436469499afd81aa318519be87f5f12e5d8b632d17f40cff1b67e2c20851ad
|
7
|
+
data.tar.gz: 2e37056accf0f22aa7a13702ff79c928c359c0188126a10e165e8c448a9a7f110acf743b29fed45b5b972c54d77f7a8a7610a6da889f8ef9ca43d3b77bbfa501
|
@@ -130,22 +130,13 @@ module IsoDoc
|
|
130
130
|
end
|
131
131
|
end
|
132
132
|
|
133
|
-
def
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
bibliography isoxml, out
|
141
|
-
end
|
142
|
-
|
143
|
-
def clause_etc(isoxml, out, num)
|
144
|
-
isoxml.xpath(ns("//sections/clause[not(@type = 'scope')] | " \
|
145
|
-
"//sections/terms | //sections/definitions"))
|
146
|
-
.each do |f|
|
147
|
-
clause_etc1(f, out, num)
|
148
|
-
end
|
133
|
+
def top_element_render(elem, out)
|
134
|
+
if %w(clause terms definitions).include?(elem.name) &&
|
135
|
+
elem.parent.name == "sections" &&
|
136
|
+
elem["type"] != "scope"
|
137
|
+
clause_etc1(elem, out, 0)
|
138
|
+
else super
|
139
|
+
end
|
149
140
|
end
|
150
141
|
|
151
142
|
def clause_etc1(clause, out, num)
|
@@ -161,12 +152,6 @@ module IsoDoc
|
|
161
152
|
end
|
162
153
|
end
|
163
154
|
|
164
|
-
def indexsect(isoxml, out)
|
165
|
-
isoxml.xpath(ns("//indexsect")).each do |i|
|
166
|
-
clause_parse(i, out)
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
155
|
def ol_attrs(node)
|
171
156
|
super.merge(start: node["start"]).compact
|
172
157
|
end
|
@@ -81,18 +81,6 @@ module IsoDoc
|
|
81
81
|
docxml
|
82
82
|
end
|
83
83
|
|
84
|
-
def middle(isoxml, out)
|
85
|
-
middle_title(isoxml, out)
|
86
|
-
middle_admonitions(isoxml, out)
|
87
|
-
scope isoxml, out, 0
|
88
|
-
norm_ref isoxml, out, 0
|
89
|
-
clause_etc isoxml, out, 0
|
90
|
-
annex isoxml, out
|
91
|
-
bibliography isoxml, out
|
92
|
-
indexsect isoxml, out
|
93
|
-
end
|
94
|
-
|
95
|
-
|
96
84
|
def html_toc1(ulist)
|
97
85
|
u2 = nil
|
98
86
|
ulist.xpath("./li").each do |l|
|
@@ -1353,38 +1353,35 @@
|
|
1353
1353
|
<xsl:call-template name="insertHeaderFooter"/>
|
1354
1354
|
<fo:flow flow-name="xsl-region-body">
|
1355
1355
|
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
<xsl:value-of select="$title-en"/>
|
1360
|
-
</fo:block>
|
1361
|
-
-->
|
1356
|
+
<!-- Information and documentation — Codes for transcription systems -->
|
1357
|
+
<!-- <fo:block-container>
|
1358
|
+
|
1362
1359
|
<fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1" role="H1">
|
1363
|
-
|
1360
|
+
|
1364
1361
|
<fo:block role="SKIP">
|
1365
|
-
|
1362
|
+
|
1366
1363
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
|
1367
|
-
|
1364
|
+
|
1368
1365
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
|
1369
|
-
|
1366
|
+
|
1370
1367
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
|
1371
1368
|
<xsl:with-param name="isMainLang">true</xsl:with-param>
|
1372
1369
|
<xsl:with-param name="isMainBody">true</xsl:with-param>
|
1373
1370
|
</xsl:apply-templates>
|
1374
|
-
|
1371
|
+
|
1375
1372
|
</fo:block>
|
1376
1373
|
<fo:block role="SKIP">
|
1377
1374
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']/node()"/>
|
1378
1375
|
</fo:block>
|
1379
|
-
|
1376
|
+
|
1380
1377
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']">
|
1381
1378
|
<xsl:with-param name="isMainLang">true</xsl:with-param>
|
1382
1379
|
<xsl:with-param name="isMainBody">true</xsl:with-param>
|
1383
1380
|
</xsl:apply-templates>
|
1384
|
-
|
1381
|
+
|
1385
1382
|
</fo:block>
|
1386
|
-
|
1387
|
-
</fo:block-container>
|
1383
|
+
|
1384
|
+
</fo:block-container> -->
|
1388
1385
|
<!-- Clause(s) -->
|
1389
1386
|
<fo:block>
|
1390
1387
|
|
@@ -1757,6 +1754,31 @@
|
|
1757
1754
|
</xsl:if>
|
1758
1755
|
</xsl:template>
|
1759
1756
|
|
1757
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle1']" priority="4">
|
1758
|
+
<fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1" role="H1">
|
1759
|
+
<xsl:if test="following-sibling::*[1][self::iso:p][starts-with(@class, 'zzSTDTitle')]">
|
1760
|
+
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
|
1761
|
+
</xsl:if>
|
1762
|
+
<xsl:apply-templates/>
|
1763
|
+
</fo:block>
|
1764
|
+
</xsl:template>
|
1765
|
+
|
1766
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle1']/iso:span[@class = 'nonboldtitle']" priority="3">
|
1767
|
+
<!-- Example: <span class="nonboldtitle">Part 1:</span> -->
|
1768
|
+
<fo:block font-weight="normal" margin-top="12pt" line-height="1.1" role="SKIP">
|
1769
|
+
<xsl:apply-templates/>
|
1770
|
+
</fo:block>
|
1771
|
+
</xsl:template>
|
1772
|
+
|
1773
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle2']" priority="4">
|
1774
|
+
<!-- Example: <p class="zzSTDTitle2" displayorder="3">AMENDMENT 1: Mass fraction of extraneous matter, milled rice (nonglutinous), sample dividers and recommendations relating to storage and transport conditions</p> -->
|
1775
|
+
<xsl:if test="$doctype = 'amendment'">
|
1776
|
+
<fo:block font-size="18pt" margin-top="12pt" margin-bottom="20pt" margin-right="0mm" font-weight="normal" line-height="1.1" role="H1">
|
1777
|
+
<xsl:apply-templates/>
|
1778
|
+
</fo:block>
|
1779
|
+
</xsl:if>
|
1780
|
+
</xsl:template>
|
1781
|
+
|
1760
1782
|
<!-- ==================== -->
|
1761
1783
|
<!-- END display titles -->
|
1762
1784
|
<!-- ==================== -->
|
@@ -6429,6 +6451,9 @@
|
|
6429
6451
|
<!-- END Definition List -->
|
6430
6452
|
<!-- ===================== -->
|
6431
6453
|
|
6454
|
+
<!-- default: ignore title in sections/p -->
|
6455
|
+
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'p'][starts-with(@class, 'zzSTDTitle')]" priority="3"/>
|
6456
|
+
|
6432
6457
|
<!-- ========================= -->
|
6433
6458
|
<!-- Rich text formatting -->
|
6434
6459
|
<!-- ========================= -->
|
@@ -6512,7 +6537,7 @@
|
|
6512
6537
|
<xsl:variable name="regex_url_start">^(http://|https://|www\.)?(.*)</xsl:variable>
|
6513
6538
|
<xsl:template match="*[local-name()='tt']/text()" priority="2">
|
6514
6539
|
<xsl:choose>
|
6515
|
-
<xsl:when test="java:replaceAll(java:java.lang.String.new(.),
|
6540
|
+
<xsl:when test="java:replaceAll(java:java.lang.String.new(.), $regex_url_start, '$2') != ''">
|
6516
6541
|
<!-- url -->
|
6517
6542
|
<xsl:call-template name="add-zero-spaces-link-java"/>
|
6518
6543
|
</xsl:when>
|
@@ -7045,10 +7070,13 @@
|
|
7045
7070
|
</xsl:choose>
|
7046
7071
|
</xsl:variable>
|
7047
7072
|
|
7073
|
+
<!-- replace sequence #x200B to one ​ -->
|
7074
|
+
<xsl:variable name="text10" select="java:replaceAll(java:java.lang.String.new($text9), '\u200b{2,}', '')"/>
|
7075
|
+
|
7048
7076
|
<!-- replace sequence #x200B and space TO space -->
|
7049
|
-
<xsl:variable name="
|
7077
|
+
<xsl:variable name="text11" select="java:replaceAll(java:java.lang.String.new($text10), '\u200b ', ' ')"/>
|
7050
7078
|
|
7051
|
-
<xsl:value-of select="$
|
7079
|
+
<xsl:value-of select="$text11"/>
|
7052
7080
|
</xsl:template>
|
7053
7081
|
|
7054
7082
|
<xsl:template name="add-zero-spaces-link-java">
|
@@ -7058,8 +7086,12 @@
|
|
7058
7086
|
<xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
|
7059
7087
|
<!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, comma, slash, @ -->
|
7060
7088
|
<xsl:variable name="url" select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/|@)','$1')"/>
|
7089
|
+
|
7090
|
+
<!-- replace sequence #x200B to one ​ -->
|
7091
|
+
<xsl:variable name="url2" select="java:replaceAll(java:java.lang.String.new($url), '\u200b{2,}', '')"/>
|
7092
|
+
|
7061
7093
|
<!-- remove zero-width space at the end -->
|
7062
|
-
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($
|
7094
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($url2), '$', '')"/>
|
7063
7095
|
</xsl:template>
|
7064
7096
|
|
7065
7097
|
<!-- add zero space after dash character (for table's entries) -->
|
@@ -8590,25 +8622,45 @@
|
|
8590
8622
|
<fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" xsl:use-attribute-sets="image-graphic-style">
|
8591
8623
|
<xsl:if test="not(@mimetype = 'image/svg+xml') and ../*[local-name() = 'name'] and not(ancestor::*[local-name() = 'table'])">
|
8592
8624
|
|
8593
|
-
<xsl:
|
8594
|
-
<xsl:
|
8595
|
-
<xsl:
|
8596
|
-
|
8597
|
-
|
8598
|
-
</xsl:variable>
|
8625
|
+
<xsl:if test="@width != '' and @width != 'auto'">
|
8626
|
+
<xsl:attribute name="width">
|
8627
|
+
<xsl:value-of select="@width"/>
|
8628
|
+
</xsl:attribute>
|
8629
|
+
</xsl:if>
|
8599
8630
|
|
8600
|
-
<xsl:
|
8631
|
+
<xsl:if test="@height != '' and @height != 'auto'">
|
8632
|
+
<xsl:attribute name="height">
|
8633
|
+
<xsl:value-of select="@height"/>
|
8634
|
+
</xsl:attribute>
|
8635
|
+
</xsl:if>
|
8601
8636
|
|
8602
|
-
|
8637
|
+
<xsl:choose>
|
8638
|
+
<xsl:when test="@width != '' and @width != 'auto' and @height != '' and @height != 'auto'">
|
8639
|
+
<xsl:attribute name="scaling">non-uniform</xsl:attribute>
|
8640
|
+
</xsl:when>
|
8641
|
+
<xsl:otherwise>
|
8603
8642
|
|
8604
|
-
|
8643
|
+
<xsl:variable name="img_src">
|
8644
|
+
<xsl:choose>
|
8645
|
+
<xsl:when test="not(starts-with(@src, 'data:'))"><xsl:value-of select="concat($basepath, @src)"/></xsl:when>
|
8646
|
+
<xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
|
8647
|
+
</xsl:choose>
|
8648
|
+
</xsl:variable>
|
8605
8649
|
|
8606
|
-
|
8607
|
-
<xsl:if test="number($scale) < 100">
|
8650
|
+
<xsl:variable name="image_width_effective">
|
8608
8651
|
|
8609
|
-
|
8652
|
+
<xsl:value-of select="$width_effective"/>
|
8610
8653
|
|
8611
|
-
|
8654
|
+
</xsl:variable>
|
8655
|
+
|
8656
|
+
<xsl:variable name="scale" select="java:org.metanorma.fop.Util.getImageScale($img_src, $image_width_effective, $height_effective)"/>
|
8657
|
+
<xsl:if test="number($scale) < 100">
|
8658
|
+
|
8659
|
+
<xsl:attribute name="content-width"><xsl:value-of select="$scale"/>%</xsl:attribute>
|
8660
|
+
|
8661
|
+
</xsl:if>
|
8662
|
+
</xsl:otherwise>
|
8663
|
+
</xsl:choose>
|
8612
8664
|
|
8613
8665
|
</xsl:if>
|
8614
8666
|
|
@@ -12266,7 +12318,7 @@
|
|
12266
12318
|
<xsl:template match="*[local-name() = 'span']" mode="update_xml_step1">
|
12267
12319
|
<xsl:apply-templates mode="update_xml_step1"/>
|
12268
12320
|
</xsl:template>
|
12269
|
-
<xsl:template match="*[local-name() = 'sourcecode']//*[local-name() = 'span'][@class]" mode="update_xml_step1" priority="2">
|
12321
|
+
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'p'][starts-with(@class, 'zzSTDTitle')]/*[local-name() = 'span'][@class] | *[local-name() = 'sourcecode']//*[local-name() = 'span'][@class]" mode="update_xml_step1" priority="2">
|
12270
12322
|
<xsl:copy>
|
12271
12323
|
<xsl:copy-of select="@*"/>
|
12272
12324
|
<xsl:apply-templates mode="update_xml_step1"/>
|
@@ -1353,38 +1353,35 @@
|
|
1353
1353
|
<xsl:call-template name="insertHeaderFooter"/>
|
1354
1354
|
<fo:flow flow-name="xsl-region-body">
|
1355
1355
|
|
1356
|
-
|
1357
|
-
|
1358
|
-
|
1359
|
-
<xsl:value-of select="$title-en"/>
|
1360
|
-
</fo:block>
|
1361
|
-
-->
|
1356
|
+
<!-- Information and documentation — Codes for transcription systems -->
|
1357
|
+
<!-- <fo:block-container>
|
1358
|
+
|
1362
1359
|
<fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1" role="H1">
|
1363
|
-
|
1360
|
+
|
1364
1361
|
<fo:block role="SKIP">
|
1365
|
-
|
1362
|
+
|
1366
1363
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-intro']"/>
|
1367
|
-
|
1364
|
+
|
1368
1365
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-main']"/>
|
1369
|
-
|
1366
|
+
|
1370
1367
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']">
|
1371
1368
|
<xsl:with-param name="isMainLang">true</xsl:with-param>
|
1372
1369
|
<xsl:with-param name="isMainBody">true</xsl:with-param>
|
1373
1370
|
</xsl:apply-templates>
|
1374
|
-
|
1371
|
+
|
1375
1372
|
</fo:block>
|
1376
1373
|
<fo:block role="SKIP">
|
1377
1374
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-part']/node()"/>
|
1378
1375
|
</fo:block>
|
1379
|
-
|
1376
|
+
|
1380
1377
|
<xsl:apply-templates select="/iso:iso-standard/iso:bibdata/iso:title[@language = $lang and @type = 'title-amd']">
|
1381
1378
|
<xsl:with-param name="isMainLang">true</xsl:with-param>
|
1382
1379
|
<xsl:with-param name="isMainBody">true</xsl:with-param>
|
1383
1380
|
</xsl:apply-templates>
|
1384
|
-
|
1381
|
+
|
1385
1382
|
</fo:block>
|
1386
|
-
|
1387
|
-
</fo:block-container>
|
1383
|
+
|
1384
|
+
</fo:block-container> -->
|
1388
1385
|
<!-- Clause(s) -->
|
1389
1386
|
<fo:block>
|
1390
1387
|
|
@@ -1757,6 +1754,31 @@
|
|
1757
1754
|
</xsl:if>
|
1758
1755
|
</xsl:template>
|
1759
1756
|
|
1757
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle1']" priority="4">
|
1758
|
+
<fo:block font-size="18pt" font-weight="bold" margin-top="40pt" margin-bottom="20pt" line-height="1.1" role="H1">
|
1759
|
+
<xsl:if test="following-sibling::*[1][self::iso:p][starts-with(@class, 'zzSTDTitle')]">
|
1760
|
+
<xsl:attribute name="margin-bottom">0pt</xsl:attribute>
|
1761
|
+
</xsl:if>
|
1762
|
+
<xsl:apply-templates/>
|
1763
|
+
</fo:block>
|
1764
|
+
</xsl:template>
|
1765
|
+
|
1766
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle1']/iso:span[@class = 'nonboldtitle']" priority="3">
|
1767
|
+
<!-- Example: <span class="nonboldtitle">Part 1:</span> -->
|
1768
|
+
<fo:block font-weight="normal" margin-top="12pt" line-height="1.1" role="SKIP">
|
1769
|
+
<xsl:apply-templates/>
|
1770
|
+
</fo:block>
|
1771
|
+
</xsl:template>
|
1772
|
+
|
1773
|
+
<xsl:template match="iso:sections/iso:p[@class = 'zzSTDTitle2']" priority="4">
|
1774
|
+
<!-- Example: <p class="zzSTDTitle2" displayorder="3">AMENDMENT 1: Mass fraction of extraneous matter, milled rice (nonglutinous), sample dividers and recommendations relating to storage and transport conditions</p> -->
|
1775
|
+
<xsl:if test="$doctype = 'amendment'">
|
1776
|
+
<fo:block font-size="18pt" margin-top="12pt" margin-bottom="20pt" margin-right="0mm" font-weight="normal" line-height="1.1" role="H1">
|
1777
|
+
<xsl:apply-templates/>
|
1778
|
+
</fo:block>
|
1779
|
+
</xsl:if>
|
1780
|
+
</xsl:template>
|
1781
|
+
|
1760
1782
|
<!-- ==================== -->
|
1761
1783
|
<!-- END display titles -->
|
1762
1784
|
<!-- ==================== -->
|
@@ -6429,6 +6451,9 @@
|
|
6429
6451
|
<!-- END Definition List -->
|
6430
6452
|
<!-- ===================== -->
|
6431
6453
|
|
6454
|
+
<!-- default: ignore title in sections/p -->
|
6455
|
+
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'p'][starts-with(@class, 'zzSTDTitle')]" priority="3"/>
|
6456
|
+
|
6432
6457
|
<!-- ========================= -->
|
6433
6458
|
<!-- Rich text formatting -->
|
6434
6459
|
<!-- ========================= -->
|
@@ -6512,7 +6537,7 @@
|
|
6512
6537
|
<xsl:variable name="regex_url_start">^(http://|https://|www\.)?(.*)</xsl:variable>
|
6513
6538
|
<xsl:template match="*[local-name()='tt']/text()" priority="2">
|
6514
6539
|
<xsl:choose>
|
6515
|
-
<xsl:when test="java:replaceAll(java:java.lang.String.new(.),
|
6540
|
+
<xsl:when test="java:replaceAll(java:java.lang.String.new(.), $regex_url_start, '$2') != ''">
|
6516
6541
|
<!-- url -->
|
6517
6542
|
<xsl:call-template name="add-zero-spaces-link-java"/>
|
6518
6543
|
</xsl:when>
|
@@ -7045,10 +7070,13 @@
|
|
7045
7070
|
</xsl:choose>
|
7046
7071
|
</xsl:variable>
|
7047
7072
|
|
7073
|
+
<!-- replace sequence #x200B to one ​ -->
|
7074
|
+
<xsl:variable name="text10" select="java:replaceAll(java:java.lang.String.new($text9), '\u200b{2,}', '')"/>
|
7075
|
+
|
7048
7076
|
<!-- replace sequence #x200B and space TO space -->
|
7049
|
-
<xsl:variable name="
|
7077
|
+
<xsl:variable name="text11" select="java:replaceAll(java:java.lang.String.new($text10), '\u200b ', ' ')"/>
|
7050
7078
|
|
7051
|
-
<xsl:value-of select="$
|
7079
|
+
<xsl:value-of select="$text11"/>
|
7052
7080
|
</xsl:template>
|
7053
7081
|
|
7054
7082
|
<xsl:template name="add-zero-spaces-link-java">
|
@@ -7058,8 +7086,12 @@
|
|
7058
7086
|
<xsl:variable name="url_continue" select="java:replaceAll(java:java.lang.String.new($text), $regex_url_start, '$2')"/>
|
7059
7087
|
<!-- add zero-width space (#x200B) after characters: dash, dot, colon, equal, underscore, em dash, thin space, comma, slash, @ -->
|
7060
7088
|
<xsl:variable name="url" select="java:replaceAll(java:java.lang.String.new($url_continue),'(-|\.|:|=|_|—| |,|/|@)','$1')"/>
|
7089
|
+
|
7090
|
+
<!-- replace sequence #x200B to one ​ -->
|
7091
|
+
<xsl:variable name="url2" select="java:replaceAll(java:java.lang.String.new($url), '\u200b{2,}', '')"/>
|
7092
|
+
|
7061
7093
|
<!-- remove zero-width space at the end -->
|
7062
|
-
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($
|
7094
|
+
<xsl:value-of select="java:replaceAll(java:java.lang.String.new($url2), '$', '')"/>
|
7063
7095
|
</xsl:template>
|
7064
7096
|
|
7065
7097
|
<!-- add zero space after dash character (for table's entries) -->
|
@@ -8590,25 +8622,45 @@
|
|
8590
8622
|
<fo:external-graphic src="{$src}" fox:alt-text="Image {@alt}" xsl:use-attribute-sets="image-graphic-style">
|
8591
8623
|
<xsl:if test="not(@mimetype = 'image/svg+xml') and ../*[local-name() = 'name'] and not(ancestor::*[local-name() = 'table'])">
|
8592
8624
|
|
8593
|
-
<xsl:
|
8594
|
-
<xsl:
|
8595
|
-
<xsl:
|
8596
|
-
|
8597
|
-
|
8598
|
-
</xsl:variable>
|
8625
|
+
<xsl:if test="@width != '' and @width != 'auto'">
|
8626
|
+
<xsl:attribute name="width">
|
8627
|
+
<xsl:value-of select="@width"/>
|
8628
|
+
</xsl:attribute>
|
8629
|
+
</xsl:if>
|
8599
8630
|
|
8600
|
-
<xsl:
|
8631
|
+
<xsl:if test="@height != '' and @height != 'auto'">
|
8632
|
+
<xsl:attribute name="height">
|
8633
|
+
<xsl:value-of select="@height"/>
|
8634
|
+
</xsl:attribute>
|
8635
|
+
</xsl:if>
|
8601
8636
|
|
8602
|
-
|
8637
|
+
<xsl:choose>
|
8638
|
+
<xsl:when test="@width != '' and @width != 'auto' and @height != '' and @height != 'auto'">
|
8639
|
+
<xsl:attribute name="scaling">non-uniform</xsl:attribute>
|
8640
|
+
</xsl:when>
|
8641
|
+
<xsl:otherwise>
|
8603
8642
|
|
8604
|
-
|
8643
|
+
<xsl:variable name="img_src">
|
8644
|
+
<xsl:choose>
|
8645
|
+
<xsl:when test="not(starts-with(@src, 'data:'))"><xsl:value-of select="concat($basepath, @src)"/></xsl:when>
|
8646
|
+
<xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
|
8647
|
+
</xsl:choose>
|
8648
|
+
</xsl:variable>
|
8605
8649
|
|
8606
|
-
|
8607
|
-
<xsl:if test="number($scale) < 100">
|
8650
|
+
<xsl:variable name="image_width_effective">
|
8608
8651
|
|
8609
|
-
|
8652
|
+
<xsl:value-of select="$width_effective"/>
|
8610
8653
|
|
8611
|
-
|
8654
|
+
</xsl:variable>
|
8655
|
+
|
8656
|
+
<xsl:variable name="scale" select="java:org.metanorma.fop.Util.getImageScale($img_src, $image_width_effective, $height_effective)"/>
|
8657
|
+
<xsl:if test="number($scale) < 100">
|
8658
|
+
|
8659
|
+
<xsl:attribute name="content-width"><xsl:value-of select="$scale"/>%</xsl:attribute>
|
8660
|
+
|
8661
|
+
</xsl:if>
|
8662
|
+
</xsl:otherwise>
|
8663
|
+
</xsl:choose>
|
8612
8664
|
|
8613
8665
|
</xsl:if>
|
8614
8666
|
|
@@ -12266,7 +12318,7 @@
|
|
12266
12318
|
<xsl:template match="*[local-name() = 'span']" mode="update_xml_step1">
|
12267
12319
|
<xsl:apply-templates mode="update_xml_step1"/>
|
12268
12320
|
</xsl:template>
|
12269
|
-
<xsl:template match="*[local-name() = 'sourcecode']//*[local-name() = 'span'][@class]" mode="update_xml_step1" priority="2">
|
12321
|
+
<xsl:template match="*[local-name() = 'sections']/*[local-name() = 'p'][starts-with(@class, 'zzSTDTitle')]/*[local-name() = 'span'][@class] | *[local-name() = 'sourcecode']//*[local-name() = 'span'][@class]" mode="update_xml_step1" priority="2">
|
12270
12322
|
<xsl:copy>
|
12271
12323
|
<xsl:copy-of select="@*"/>
|
12272
12324
|
<xsl:apply-templates mode="update_xml_step1"/>
|
@@ -95,7 +95,7 @@ module IsoDoc
|
|
95
95
|
i = display_order_at(docxml, "//clause[@type = 'scope']", i)
|
96
96
|
i = display_order_at(docxml, @xrefs.klass.norm_ref_xpath, i)
|
97
97
|
i = display_order_xpath(docxml,
|
98
|
-
"//sections/clause[not(@type = 'scope')] | " \
|
98
|
+
"//sections/clause[not(@type = 'scope')][not(.//references)] | " \
|
99
99
|
"//sections/terms | //sections/definitions", i)
|
100
100
|
i = display_order_xpath(docxml, "//annex", i)
|
101
101
|
i = display_order_xpath(docxml, @xrefs.klass.bibliography_xpath, i)
|
@@ -161,6 +161,39 @@ module IsoDoc
|
|
161
161
|
super
|
162
162
|
end
|
163
163
|
|
164
|
+
def middle_title(docxml)
|
165
|
+
@meta.get[:doctitlemain].nil? || @meta.get[:doctitlemain].empty? and
|
166
|
+
return
|
167
|
+
s = docxml.at(ns("//sections")) or return
|
168
|
+
ret = "#{middle_title_main}#{middle_title_amd}"
|
169
|
+
s.children.first.previous = ret
|
170
|
+
end
|
171
|
+
|
172
|
+
def middle_title_main
|
173
|
+
ret = "<span class='boldtitle'>#{@meta.get[:doctitleintro]}"
|
174
|
+
ret += " — " if @meta.get[:doctitleintro] && @meta.get[:doctitlemain]
|
175
|
+
ret += @meta.get[:doctitlemain]
|
176
|
+
ret += " — " if @meta.get[:doctitlemain] && @meta.get[:doctitlepart]
|
177
|
+
ret += "</span>"
|
178
|
+
if a = @meta.get[:doctitlepart]
|
179
|
+
b = @meta.get[:doctitlepartlabel] and ret += "<span class='nonboldtitle'>#{b}:</span> "
|
180
|
+
ret += "<span class='boldtitle'>#{a}</span>"
|
181
|
+
end
|
182
|
+
"<p class='zzSTDTitle1'>#{ret}</p>"
|
183
|
+
end
|
184
|
+
|
185
|
+
def middle_title_amd
|
186
|
+
ret = ""
|
187
|
+
if a = @meta.get[:doctitleamdlabel]
|
188
|
+
ret += "<p class='zzSTDTitle2'>#{a}"
|
189
|
+
a = @meta.get[:doctitleamd] and ret += ": #{a}"
|
190
|
+
ret += "</p>"
|
191
|
+
end
|
192
|
+
a = @meta.get[:doctitlecorrlabel] and
|
193
|
+
ret += "<p class='zzSTDTitle2'>#{a}</p>"
|
194
|
+
ret
|
195
|
+
end
|
196
|
+
|
164
197
|
include Init
|
165
198
|
end
|
166
199
|
end
|
data/lib/isodoc/iso/sections.rb
CHANGED
@@ -1,52 +1,12 @@
|
|
1
1
|
module IsoDoc
|
2
2
|
module Iso
|
3
3
|
module BaseConvert
|
4
|
-
def
|
5
|
-
|
6
|
-
|
7
|
-
end
|
8
|
-
|
9
|
-
def middle_title_main(out)
|
10
|
-
out.p(class: "zzSTDTitle1") do |p|
|
11
|
-
p << @meta.get[:doctitleintro]
|
12
|
-
p << " — " if @meta.get[:doctitleintro] && @meta.get[:doctitlemain]
|
13
|
-
p << @meta.get[:doctitlemain]
|
14
|
-
p << " — " if @meta.get[:doctitlemain] && @meta.get[:doctitlepart]
|
15
|
-
end
|
16
|
-
a = @meta.get[:doctitlepart] and out.p(class: "zzSTDTitle2") do |p|
|
17
|
-
b = @meta.get[:doctitlepartlabel] and p << "#{b}: "
|
18
|
-
p << "<br/><b>#{a}</b>"
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def middle_title_amd(out)
|
23
|
-
a = @meta.get[:doctitleamdlabel] and out.p(class: "zzSTDTitle2") do |p|
|
24
|
-
p << a
|
25
|
-
a = @meta.get[:doctitleamd] and p << ": #{a}"
|
26
|
-
end
|
27
|
-
a = @meta.get[:doctitlecorrlabel] and out.p(class: "zzSTDTitle2") do |p|
|
28
|
-
p << a
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def annex(isoxml, out)
|
33
|
-
amd(isoxml) and @suppressheadingnumbers = @oldsuppressheadingnumbers
|
4
|
+
def annex(node, out)
|
5
|
+
amd(node.document) and
|
6
|
+
@suppressheadingnumbers = @oldsuppressheadingnumbers
|
34
7
|
super
|
35
|
-
amd(
|
36
|
-
end
|
37
|
-
|
38
|
-
=begin
|
39
|
-
def introduction(clause, out)
|
40
|
-
title_attr = { class: "IntroTitle" }
|
41
|
-
page_break(out)
|
42
|
-
out.div class: "Section3", id: clause["id"] do |div|
|
43
|
-
clause_name(clause, clause.at(ns("./title")), div, title_attr)
|
44
|
-
clause.elements.each do |e|
|
45
|
-
parse(e, div) unless e.name == "title"
|
46
|
-
end
|
47
|
-
end
|
8
|
+
amd(node.document) and @suppressheadingnumbers = true
|
48
9
|
end
|
49
|
-
=end
|
50
10
|
|
51
11
|
def foreword(clause, out)
|
52
12
|
@foreword = true
|
@@ -70,8 +70,8 @@ module IsoDoc
|
|
70
70
|
make_body1(body, docxml)
|
71
71
|
make_body2(body, docxml)
|
72
72
|
make_body3(body, docxml)
|
73
|
-
|
74
|
-
|
73
|
+
indexsect_section(docxml, body)
|
74
|
+
colophon_section(docxml, body)
|
75
75
|
end
|
76
76
|
end
|
77
77
|
|
@@ -80,23 +80,31 @@ module IsoDoc
|
|
80
80
|
"mso-break-type:section-break"
|
81
81
|
end
|
82
82
|
|
83
|
-
|
83
|
+
MAIN_ELEMENTS =
|
84
|
+
"//sections/*[@displayorder] | //annex[@displayorder] | " \
|
85
|
+
"//bibliography/*[@displayorder]".freeze
|
86
|
+
|
87
|
+
def colophon_section(_isoxml, out)
|
84
88
|
stage = @meta.get[:stage_int]
|
85
89
|
return if !stage.nil? && stage < 60
|
86
90
|
|
87
|
-
br(
|
88
|
-
|
91
|
+
br(out, "left")
|
92
|
+
out.div class: "colophon" do |div|
|
89
93
|
end
|
90
94
|
end
|
91
95
|
|
92
|
-
def
|
96
|
+
def indexsect_section(isoxml, out)
|
93
97
|
isoxml.xpath(ns("//indexsect")).each do |i|
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
98
|
+
indexsect(i, out)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def indexsect(elem, out)
|
103
|
+
indexsect_title(elem, out)
|
104
|
+
br(out, "auto")
|
105
|
+
out.div class: "index" do |div|
|
106
|
+
elem.children.each do |e|
|
107
|
+
parse(e, div) unless e.name == "title"
|
100
108
|
end
|
101
109
|
end
|
102
110
|
end
|
@@ -128,14 +136,14 @@ module IsoDoc
|
|
128
136
|
{ class: "BiblioTitle" }
|
129
137
|
end
|
130
138
|
|
131
|
-
def bibliography(
|
132
|
-
|
139
|
+
def bibliography(node, out)
|
140
|
+
node["hidden"] != "true" or return
|
133
141
|
page_break(out)
|
134
142
|
out.div do |div|
|
135
143
|
div.h1 **bibliography_attrs do |h1|
|
136
|
-
|
144
|
+
node&.at(ns("./title"))&.children&.each { |c2| parse(c2, h1) }
|
137
145
|
end
|
138
|
-
biblio_list(
|
146
|
+
biblio_list(node, div, true)
|
139
147
|
end
|
140
148
|
end
|
141
149
|
|
@@ -197,7 +205,6 @@ module IsoDoc
|
|
197
205
|
end
|
198
206
|
|
199
207
|
def annex_name(_annex, name, div)
|
200
|
-
preceding_floating_titles(name, div)
|
201
208
|
return if name.nil?
|
202
209
|
|
203
210
|
name&.at(ns("./strong"))&.remove # supplied by CSS list numbering
|
@@ -41,6 +41,7 @@ module IsoDoc
|
|
41
41
|
|
42
42
|
def dis_styles1(docxml)
|
43
43
|
amd_style(docxml)
|
44
|
+
middle_title_style(docxml)
|
44
45
|
code_style(docxml)
|
45
46
|
figure_style(docxml)
|
46
47
|
formula_style(docxml)
|
@@ -71,6 +72,14 @@ module IsoDoc
|
|
71
72
|
end
|
72
73
|
end
|
73
74
|
|
75
|
+
def middle_title_style(docxml)
|
76
|
+
docxml.xpath("//p[@class = 'zzSTDTitle2']").each do |p|
|
77
|
+
p1 = p.previous_element && p1.name == p &&
|
78
|
+
p1["class"] = "zzSTDTitle2" or next
|
79
|
+
p1 << " #{p.remove.children.to_xml}"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
74
83
|
def dis_style_interactions(docxml)
|
75
84
|
docxml.xpath("//p[@class = 'Code' or @class = 'Code-' or " \
|
76
85
|
"@class = 'Code--']" \
|
@@ -46,12 +46,6 @@ module IsoDoc
|
|
46
46
|
{ class: "TableTitle", style: "text-align:center;" }
|
47
47
|
end
|
48
48
|
|
49
|
-
def span_parse(node, out)
|
50
|
-
out.span class: node["class"] do |x|
|
51
|
-
node.children.each { |n| parse(n, x) }
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
49
|
def word_toc_preface(level)
|
56
50
|
<<~TOC.freeze
|
57
51
|
<span lang="EN-GB"><span
|
@@ -68,7 +62,7 @@ module IsoDoc
|
|
68
62
|
|
69
63
|
def toWord(result, filename, dir, header)
|
70
64
|
result = from_xhtml(word_cleanup(to_xhtml(result)))
|
71
|
-
.gsub(
|
65
|
+
.gsub("-DOUBLE_HYPHEN_ESCAPE-", "--")
|
72
66
|
@wordstylesheet = wordstylesheet_update
|
73
67
|
::Html2Doc::IsoDIS.new(
|
74
68
|
filename: filename,
|
@@ -86,30 +80,39 @@ module IsoDoc
|
|
86
80
|
middle_title_dis(out)
|
87
81
|
end
|
88
82
|
|
89
|
-
def middle_title_dis(out)
|
83
|
+
def middle_title_dis(node, out)
|
90
84
|
out.p(class: "zzSTDTitle") do |p|
|
91
|
-
p
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
85
|
+
node.children.each { |n| parse(n, p) }
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def middle_title_amd(node, out)
|
90
|
+
out.p(class: "zzSTDTitle2") do |p|
|
91
|
+
p.span(style: "font-weight:normal") do |s|
|
92
|
+
node.children.each { |n| parse(n, s) }
|
99
93
|
end
|
100
|
-
@meta.get[:doctitleamdlabel] || @meta.get[:doctitleamd] ||
|
101
|
-
@meta.get[:doctitlecorrlabel] and middle_title_dis_amd(p)
|
102
94
|
end
|
103
95
|
end
|
104
96
|
|
105
|
-
def
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
97
|
+
def para_parse(node, out)
|
98
|
+
case node["class"]
|
99
|
+
when "zzSTDTitle1" then middle_title_dis(node, out)
|
100
|
+
when "zzSTDTitle2" then middle_title_amd(node, out)
|
101
|
+
else super
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
105
|
+
def span_parse(node, out)
|
106
|
+
case node["class"]
|
107
|
+
when "nonboldtitle"
|
108
|
+
out.span(style: "font-weight:normal") do |s|
|
109
|
+
node.children.each { |n| parse(n, s) }
|
110
110
|
end
|
111
|
-
|
112
|
-
|
111
|
+
when "boldtitle"
|
112
|
+
node.children.each { |n| parse(n, out) }
|
113
|
+
else
|
114
|
+
out.span class: node["class"] do |x|
|
115
|
+
node.children.each { |n| parse(n, x) }
|
113
116
|
end
|
114
117
|
end
|
115
118
|
end
|
data/lib/isodoc/iso/xref.rb
CHANGED
@@ -43,7 +43,7 @@ module IsoDoc
|
|
43
43
|
n = Counter.new
|
44
44
|
n = section_names(doc.at(ns("//clause[@type = 'scope']")), n, 1)
|
45
45
|
n = section_names(doc.at(ns(@klass.norm_ref_xpath)), n, 1)
|
46
|
-
doc.xpath(ns("//sections/clause[not(@type = 'scope')] | " \
|
46
|
+
doc.xpath(ns("//sections/clause[not(@type = 'scope')][not(.//references)] | " \
|
47
47
|
"//sections/terms | //sections/definitions")).each do |c|
|
48
48
|
n = section_names(c, n, 1)
|
49
49
|
end
|
@@ -17,7 +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.
|
20
|
+
<!-- VERSION v1.2.3 -->
|
21
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">
|
22
22
|
<include href="reqt.rng"/>
|
23
23
|
<include href="basicdoc.rng">
|
@@ -192,9 +192,11 @@
|
|
192
192
|
</attribute>
|
193
193
|
</optional>
|
194
194
|
<attribute name="citeas"/>
|
195
|
-
<
|
196
|
-
<
|
197
|
-
|
195
|
+
<optional>
|
196
|
+
<attribute name="type">
|
197
|
+
<ref name="ReferenceFormat"/>
|
198
|
+
</attribute>
|
199
|
+
</optional>
|
198
200
|
<optional>
|
199
201
|
<attribute name="alt"/>
|
200
202
|
</optional>
|
@@ -836,6 +838,26 @@
|
|
836
838
|
<ref name="paragraph"/>
|
837
839
|
</element>
|
838
840
|
</define>
|
841
|
+
<define name="stem">
|
842
|
+
<element name="stem">
|
843
|
+
<attribute name="type">
|
844
|
+
<choice>
|
845
|
+
<value>MathML</value>
|
846
|
+
<value>AsciiMath</value>
|
847
|
+
<value>LatexMath</value>
|
848
|
+
</choice>
|
849
|
+
</attribute>
|
850
|
+
<attribute name="block">
|
851
|
+
<data type="boolean"/>
|
852
|
+
</attribute>
|
853
|
+
<oneOrMore>
|
854
|
+
<choice>
|
855
|
+
<text/>
|
856
|
+
<ref name="AnyElement"/>
|
857
|
+
</choice>
|
858
|
+
</oneOrMore>
|
859
|
+
</element>
|
860
|
+
</define>
|
839
861
|
<define name="em">
|
840
862
|
<element name="em">
|
841
863
|
<zeroOrMore>
|
data/metanorma-iso.gemspec
CHANGED
@@ -32,7 +32,7 @@ Gem::Specification.new do |spec|
|
|
32
32
|
spec.test_files = `git ls-files -- {spec}/*`.split("\n")
|
33
33
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
34
34
|
|
35
|
-
spec.add_dependency "metanorma-standoc", "~> 2.
|
35
|
+
spec.add_dependency "metanorma-standoc", "~> 2.5.0"
|
36
36
|
spec.add_dependency "mnconvert", "~> 1.14"
|
37
37
|
spec.add_dependency "pubid-iso", "~> 0.5.0"
|
38
38
|
spec.add_dependency "ruby-jing"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: metanorma-iso
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
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-07
|
11
|
+
date: 2023-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: metanorma-standoc
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 2.
|
19
|
+
version: 2.5.0
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 2.
|
26
|
+
version: 2.5.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: mnconvert
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|