metanorma-ieee 1.3.6 → 1.3.8

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: 7bed94947472e520546144ef97abcf02e8fe7d2892ebc7e6691845223eef19a4
4
- data.tar.gz: 5eff3d3949ca61fe5e1cf4bc2585f1f21ad766c70584443b775d9c6e5da9ba28
3
+ metadata.gz: 1fcdee8a51301c3df48c602dd91eed680ec3225d7c29962d9e5be525e049a99f
4
+ data.tar.gz: 41506b613379f537e090002267a82857eb23570bec07db98b36fcc66ebce8b0e
5
5
  SHA512:
6
- metadata.gz: 234d45e36875bcbf19a3823beec80f1d1b93e86a20a43cca597a55e1c84531041c9b2040ec83d94a87b5bcb0428abe3707b59c4db832bfc3744b04cb9150be8c
7
- data.tar.gz: bc1da6f07b793cf1f7bd11f84b77fd3937c406272fa917000eea081a9a9c3b31db2b4309ea3a7a7917c90ccbb5fd9860d76462f623694eaa1e983e81a877a3a1
6
+ metadata.gz: d4d4bb35f51417c6a4797ac41dca9269a74771f599e30fc9610e0a2cedc1ec0310700897ad48d9f559d41a2e1580346f75ba414ebcd63bd705f3b7a2957e8a6b
7
+ data.tar.gz: 55407e26370a1745bb9a0361b0bf2f43f6ca6a1e4b5ca76a36a9887c7e82bc418b895c6b116a051393e8951d6f5f5ff7c7dd4e5eb0307b4e187d886a2d2c1763
@@ -3798,8 +3798,21 @@
3798
3798
 
3799
3799
  <!-- <xsl:strip-space elements="ieee:xref"/> -->
3800
3800
 
3801
- <xsl:variable name="namespace_full" select="namespace-uri(/*)"/> <!-- example: https://www.metanorma.org/ns/iso -->
3802
- <xsl:variable name="root_element" select="local-name(/*)"/> <!-- example: iso-standard -->
3801
+ <xsl:variable name="namespace_full_">
3802
+ <xsl:choose>
3803
+ <xsl:when test="local-name(/*) = 'metanorma-collection'"><xsl:value-of select="namespace-uri(//*[contains(local-name(), '-standard')][1])"/></xsl:when>
3804
+ <xsl:otherwise><xsl:value-of select="namespace-uri(/*)"/></xsl:otherwise><!-- example: https://www.metanorma.org/ns/iso -->
3805
+ </xsl:choose>
3806
+ </xsl:variable>
3807
+ <xsl:variable name="namespace_full" select="normalize-space($namespace_full_)"/>
3808
+
3809
+ <xsl:variable name="root_element_">
3810
+ <xsl:choose>
3811
+ <xsl:when test="local-name(/*) = 'metanorma-collection'"><xsl:value-of select="local-name(//*[contains(local-name(), '-standard')][1])"/></xsl:when>
3812
+ <xsl:otherwise><xsl:value-of select="local-name(/*)"/></xsl:otherwise><!-- example: iso-standard -->
3813
+ </xsl:choose>
3814
+ </xsl:variable>
3815
+ <xsl:variable name="root_element" select="normalize-space($root_element_)"/>
3803
3816
 
3804
3817
  <xsl:variable name="document_scheme" select="normalize-space(//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name'] = 'document-scheme']/*[local-name() = 'value'])"/>
3805
3818
 
@@ -7162,7 +7175,9 @@
7162
7175
  <fo:block role="SKIP">
7163
7176
 
7164
7177
  <xsl:if test="$isGenerateTableIF = 'true'">
7165
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
7178
+
7179
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
7180
+
7166
7181
  </xsl:if>
7167
7182
 
7168
7183
  <xsl:apply-templates/>
@@ -8181,7 +8196,17 @@
8181
8196
  <xsl:call-template name="refine_dt-cell-style"/>
8182
8197
 
8183
8198
  <fo:block xsl:use-attribute-sets="dt-block-style" role="SKIP">
8184
- <xsl:copy-of select="@id"/>
8199
+
8200
+ <xsl:choose>
8201
+ <xsl:when test="$isGenerateTableIF = 'true'">
8202
+
8203
+ <xsl:copy-of select="@id"/>
8204
+
8205
+ </xsl:when>
8206
+ <xsl:otherwise>
8207
+ <xsl:copy-of select="@id"/>
8208
+ </xsl:otherwise>
8209
+ </xsl:choose>
8185
8210
 
8186
8211
  <xsl:if test="normalize-space($key_iso) = 'true'">
8187
8212
  <xsl:attribute name="margin-top">0</xsl:attribute>
@@ -8213,7 +8238,9 @@
8213
8238
  <fo:block role="SKIP">
8214
8239
 
8215
8240
  <xsl:if test="$isGenerateTableIF = 'true'">
8216
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
8241
+
8242
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
8243
+
8217
8244
  </xsl:if>
8218
8245
 
8219
8246
  <xsl:choose>
@@ -8689,6 +8716,12 @@
8689
8716
  </xsl:if>
8690
8717
  </xsl:template>
8691
8718
 
8719
+ <xsl:template match="*[local-name()='strike']">
8720
+ <fo:inline text-decoration="line-through">
8721
+ <xsl:apply-templates/>
8722
+ </fo:inline>
8723
+ </xsl:template>
8724
+
8692
8725
  <xsl:template match="*[local-name() = 'pagebreak']">
8693
8726
  <fo:block break-after="page"/>
8694
8727
  <fo:block> </fo:block>
@@ -9451,6 +9484,14 @@
9451
9484
  </xsl:for-each>
9452
9485
  </xsl:variable>
9453
9486
 
9487
+ <!-- <xsl:if test="$debug = 'true'">
9488
+ <redirect:write file="{generate-id()}_words_with_width_sorted.xml">
9489
+ <td_text><xsl:copy-of select="$td_text"/></td_text>
9490
+ <words_with_width><xsl:copy-of select="$words_with_width"/></words_with_width>
9491
+ <xsl:copy-of select="$words_with_width_sorted"/>
9492
+ </redirect:write>
9493
+ </xsl:if> -->
9494
+
9454
9495
  <xsl:variable name="words">
9455
9496
  <xsl:for-each select=".//*[local-name() = 'image' or local-name() = 'stem']">
9456
9497
  <word>
@@ -9576,6 +9617,7 @@
9576
9617
  <xsl:if test="ancestor::*[local-name() = 'tt']"><tag>tt</tag></xsl:if>
9577
9618
  <xsl:if test="ancestor::*[local-name() = 'sourcecode']"><tag>sourcecode</tag></xsl:if>
9578
9619
  <xsl:if test="ancestor::*[local-name() = 'keep-together_within-line']"><tag>keep-together_within-line</tag></xsl:if>
9620
+ <xsl:if test="ancestor::*[local-name() = 'font_en_vertical']"><tag>font_en_vertical</tag></xsl:if>
9579
9621
  </tags>
9580
9622
  </xsl:template>
9581
9623
  <!-- =============================== -->
@@ -10118,7 +10160,16 @@
10118
10160
  </xsl:when>
10119
10161
  <xsl:otherwise>
10120
10162
  <!-- output text from <link>text</link> -->
10121
- <xsl:apply-templates/>
10163
+ <xsl:choose>
10164
+ <xsl:when test="starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.')">
10165
+ <xsl:call-template name="add-zero-spaces-link-java">
10166
+ <xsl:with-param name="text" select="."/>
10167
+ </xsl:call-template>
10168
+ </xsl:when>
10169
+ <xsl:otherwise>
10170
+ <xsl:apply-templates/>
10171
+ </xsl:otherwise>
10172
+ </xsl:choose>
10122
10173
  </xsl:otherwise>
10123
10174
  </xsl:choose>
10124
10175
  </fo:basic-link>
@@ -10757,16 +10808,29 @@
10757
10808
  <xsl:template name="getImageSrc">
10758
10809
  <xsl:choose>
10759
10810
  <xsl:when test="not(starts-with(@src, 'data:'))">
10811
+ <xsl:call-template name="getImageSrcExternal"/>
10812
+ </xsl:when>
10813
+ <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
10814
+ </xsl:choose>
10815
+ </xsl:template>
10816
+
10817
+ <xsl:template name="getImageSrcExternal">
10818
+ <xsl:choose>
10819
+ <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
10820
+ <xsl:value-of select="@src"/>
10821
+ </xsl:when>
10822
+ <xsl:otherwise>
10823
+ <xsl:variable name="src_with_basepath" select="concat($basepath, @src)"/>
10824
+ <xsl:variable name="file_exists" select="normalize-space(java:exists(java:java.io.File.new($src_with_basepath)))"/>
10760
10825
  <xsl:choose>
10761
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
10762
- <xsl:value-of select="@src"/>
10826
+ <xsl:when test="$file_exists = 'true'">
10827
+ <xsl:value-of select="$src_with_basepath"/>
10763
10828
  </xsl:when>
10764
10829
  <xsl:otherwise>
10765
- <xsl:value-of select="concat($basepath, @src)"/>
10830
+ <xsl:value-of select="@src"/>
10766
10831
  </xsl:otherwise>
10767
10832
  </xsl:choose>
10768
- </xsl:when>
10769
- <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
10833
+ </xsl:otherwise>
10770
10834
  </xsl:choose>
10771
10835
  </xsl:template>
10772
10836
 
@@ -10814,14 +10878,8 @@
10814
10878
  <xsl:value-of select="concat('url(file:///',$basepath, $src_png, ')')"/>
10815
10879
  </xsl:when>
10816
10880
  <xsl:when test="not(starts-with(@src, 'data:'))">
10817
- <xsl:choose>
10818
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
10819
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
10820
- </xsl:when>
10821
- <xsl:otherwise>
10822
- <xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
10823
- </xsl:otherwise>
10824
- </xsl:choose>
10881
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
10882
+ <xsl:value-of select="concat('url(file:///', $src_external, ')')"/>
10825
10883
  </xsl:when>
10826
10884
  <xsl:otherwise>
10827
10885
  <xsl:value-of select="@src"/>
@@ -10842,16 +10900,8 @@
10842
10900
  </svg>
10843
10901
  </xsl:when>
10844
10902
  <xsl:when test="not(starts-with(@src, 'data:'))">
10845
- <xsl:variable name="src">
10846
- <xsl:choose>
10847
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
10848
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
10849
- </xsl:when>
10850
- <xsl:otherwise>
10851
- <xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
10852
- </xsl:otherwise>
10853
- </xsl:choose>
10854
- </xsl:variable>
10903
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
10904
+ <xsl:variable name="src" select="concat('url(file:///', $src_external, ')')"/>
10855
10905
  <xsl:variable name="file" select="java:java.io.File.new(@src)"/>
10856
10906
  <xsl:variable name="bufferedImage" select="java:javax.imageio.ImageIO.read($file)"/>
10857
10907
  <xsl:variable name="width" select="java:getWidth($bufferedImage)"/>
@@ -15018,7 +15068,9 @@
15018
15068
  <xsl:template name="add_id">
15019
15069
  <xsl:if test="not(@id)">
15020
15070
  <!-- add @id - first element with @id plus '_element_name' -->
15021
- <xsl:attribute name="id"><xsl:value-of select="(.//*[@id])[1]/@id"/>_<xsl:value-of select="local-name()"/></xsl:attribute>
15071
+ <xsl:variable name="prefix_id_" select="(.//*[@id])[1]/@id"/>
15072
+ <xsl:variable name="prefix_id"><xsl:value-of select="$prefix_id_"/><xsl:if test="normalize-space($prefix_id_) = ''"><xsl:value-of select="generate-id()"/></xsl:if></xsl:variable>
15073
+ <xsl:attribute name="id"><xsl:value-of select="$prefix_id"/>_<xsl:value-of select="local-name()"/></xsl:attribute>
15022
15074
  </xsl:if>
15023
15075
  </xsl:template>
15024
15076
 
@@ -16425,6 +16477,7 @@
16425
16477
  <xsl:param name="formatted">false</xsl:param>
16426
16478
  <xsl:param name="lang"/>
16427
16479
  <xsl:param name="returnEmptyIfNotFound">false</xsl:param>
16480
+ <xsl:param name="bibdata_updated"/>
16428
16481
 
16429
16482
  <xsl:variable name="curr_lang">
16430
16483
  <xsl:choose>
@@ -16438,6 +16491,9 @@
16438
16491
 
16439
16492
  <xsl:variable name="data_value">
16440
16493
  <xsl:choose>
16494
+ <xsl:when test="$formatted = 'true' and string-length($bibdata_updated) != ''">
16495
+ <xsl:apply-templates select="xalan:nodeset($bibdata_updated)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
16496
+ </xsl:when>
16441
16497
  <xsl:when test="$formatted = 'true'">
16442
16498
  <xsl:apply-templates select="xalan:nodeset($bibdata)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
16443
16499
  </xsl:when>
@@ -16609,14 +16665,8 @@
16609
16665
  <xsl:value-of select="$src"/>
16610
16666
  </xsl:when>
16611
16667
  <xsl:otherwise>
16612
- <xsl:choose>
16613
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
16614
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
16615
- </xsl:when>
16616
- <xsl:otherwise>
16617
- <xsl:value-of select="concat('url(file:///',$basepath, $src, ')')"/>
16618
- </xsl:otherwise>
16619
- </xsl:choose>
16668
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
16669
+ <xsl:value-of select="concat('url(file:///', $src_external, ')')"/>
16620
16670
  </xsl:otherwise>
16621
16671
  </xsl:choose>
16622
16672
  </xsl:template>
@@ -16638,15 +16688,23 @@
16638
16688
  <!-- END: insert cover page image -->
16639
16689
 
16640
16690
  <!-- https://github.com/metanorma/docs/blob/main/109.adoc -->
16691
+ <xsl:variable name="regex_ja_spec_half_width_">
16692
+ \u0028 <!-- U+0028 LEFT PARENTHESIS (() -->
16693
+ \u0029 <!-- U+0029 RIGHT PARENTHESIS ()) -->
16694
+ \u007B <!-- U+007B LEFT CURLY BRACKET ({) -->
16695
+ \u007D <!-- U+007D RIGHT CURLY BRACKET (}) -->
16696
+ \uFF62 <!-- U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) -->
16697
+ \uFF63 <!-- U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) -->
16698
+ \u005B <!-- U+005B LEFT SQUARE BRACKET ([) -->
16699
+ \u005D <!-- U+005D RIGHT SQUARE BRACKET (]) -->
16700
+ </xsl:variable>
16701
+ <xsl:variable name="regex_ja_spec_half_width" select="translate(normalize-space($regex_ja_spec_half_width_), ' ', '')"/>
16641
16702
  <xsl:variable name="regex_ja_spec_">[
16642
16703
  <!-- Rotate 90° clockwise -->
16643
- \u0028 <!-- U+0028 LEFT PARENTHESIS (() -->
16704
+ <xsl:value-of select="$regex_ja_spec_half_width"/>
16644
16705
  \uFF08 <!-- U+FF08 FULLWIDTH LEFT PARENTHESIS (() -->
16645
- \u0029 <!-- U+0029 RIGHT PARENTHESIS ()) -->
16646
16706
  \uFF09 <!-- U+FF09 FULLWIDTH RIGHT PARENTHESIS ()) -->
16647
- \u007B <!-- U+007B LEFT CURLY BRACKET ({) -->
16648
16707
  \uFF5B <!-- U+FF5B FULLWIDTH LEFT CURLY BRACKET ({) -->
16649
- \u007D <!-- U+007D RIGHT CURLY BRACKET (}) -->
16650
16708
  \uFF5D <!-- U+FF5D FULLWIDTH RIGHT CURLY BRACKET (}) -->
16651
16709
  \u3014 <!-- U+3014 LEFT TORTOISE SHELL BRACKET (〔) -->
16652
16710
  \u3015 <!-- U+3015 RIGHT TORTOISE SHELL BRACKET (〕) -->
@@ -16654,21 +16712,16 @@
16654
16712
  \u3011 <!-- U+3011 RIGHT BLACK LENTICULAR BRACKET (】) -->
16655
16713
  \u300A <!-- U+300A LEFT DOUBLE ANGLE BRACKET (《) -->
16656
16714
  \u300B <!-- U+300B RIGHT DOUBLE ANGLE BRACKET (》) -->
16657
- \uFF62 <!-- U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) -->
16658
16715
  \u300C <!-- U+300C LEFT CORNER BRACKET (「) -->
16659
- \uFF63 <!-- U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) -->
16660
16716
  \u300D <!-- U+300D RIGHT CORNER BRACKET (」) -->
16661
16717
  \u300E <!-- U+300E LEFT WHITE CORNER BRACKET (『) -->
16662
16718
  \u300F <!-- U+300F RIGHT WHITE CORNER BRACKET (』) -->
16663
- \u005B <!-- U+005B LEFT SQUARE BRACKET ([) -->
16664
16719
  \uFF3B <!-- U+FF3B FULLWIDTH LEFT SQUARE BRACKET ([) -->
16665
- \u005D <!-- U+005D RIGHT SQUARE BRACKET (]) -->
16666
16720
  \uFF3D <!-- U+FF3D FULLWIDTH RIGHT SQUARE BRACKET (]) -->
16667
16721
  \u3008 <!-- U+3008 LEFT ANGLE BRACKET (〈) -->
16668
16722
  \u3009 <!-- U+3009 RIGHT ANGLE BRACKET (〉) -->
16669
16723
  \u3016 <!-- U+3016 LEFT WHITE LENTICULAR BRACKET (〖) -->
16670
16724
  \u3017 <!-- U+3017 RIGHT WHITE LENTICULAR BRACKET (〗) -->
16671
-
16672
16725
  \u301A <!-- U+301A LEFT WHITE SQUARE BRACKET (〚) -->
16673
16726
  \u301B <!-- U+301B RIGHT WHITE SQUARE BRACKET (〛) -->
16674
16727
  \u301C <!-- U+301C WAVE DASH (〜) -->
@@ -16700,6 +16753,7 @@
16700
16753
  <xsl:variable name="regex_ja_spec"><xsl:value-of select="translate(normalize-space($regex_ja_spec_), ' ', '')"/></xsl:variable>
16701
16754
  <xsl:template name="insertVerticalChar">
16702
16755
  <xsl:param name="str"/>
16756
+ <xsl:param name="char_prev"/>
16703
16757
  <xsl:param name="writing-mode">lr-tb</xsl:param>
16704
16758
  <xsl:param name="reference-orientation">90</xsl:param>
16705
16759
  <xsl:param name="add_zero_width_space">false</xsl:param>
@@ -16709,53 +16763,99 @@
16709
16763
  </xsl:when>
16710
16764
  <xsl:otherwise>
16711
16765
  <xsl:if test="string-length($str) &gt; 0">
16712
- <xsl:variable name="horizontal_mode" select="normalize-space(ancestor::*[local-name() = 'span'][@class = 'horizontal'] and 1 = 1)"/>
16766
+
16767
+ <!-- <xsl:variable name="horizontal_mode" select="normalize-space(ancestor::*[local-name() = 'span'][@class = 'horizontal'] and 1 = 1)"/> -->
16713
16768
  <xsl:variable name="char" select="substring($str,1,1)"/>
16714
- <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm">
16715
- <xsl:if test="normalize-space($writing-mode) != ''">
16716
- <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
16717
- <xsl:attribute name="reference-orientation">90</xsl:attribute>
16718
- </xsl:if>
16719
- <xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
16720
- <xsl:attribute name="reference-orientation">0</xsl:attribute>
16721
- </xsl:if>
16722
- <xsl:if test="$char = '゜' or $char = '。' or $char = '﹒' or $char = '.'">
16723
- <!-- Rotate 180°:
16724
- U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜)
16725
- U+3002 IDEOGRAPHIC FULL STOP (。)
16726
- U+FE52 SMALL FULL STOP (﹒)
16727
- U+FF0E FULLWIDTH FULL STOP ()
16728
- -->
16729
- <xsl:attribute name="reference-orientation">-90</xsl:attribute>
16730
- </xsl:if>
16731
- <fo:block-container width="1em">
16732
- <fo:block line-height="1em">
16733
- <xsl:choose>
16734
- <xsl:when test="$horizontal_mode = 'true'">
16735
- <xsl:value-of select="$str"/>
16736
- </xsl:when>
16737
- <xsl:otherwise>
16769
+ <xsl:variable name="char_next" select="substring($str,2,1)"/>
16770
+
16771
+ <xsl:variable name="char_half_width" select="normalize-space(java:matches(java:java.lang.String.new($char), concat('([', $regex_ja_spec_half_width, ']{1,})')))"/>
16772
+
16773
+ <xsl:choose>
16774
+ <xsl:when test="$char_half_width = 'true'">
16775
+ <fo:inline>
16776
+ <xsl:attribute name="baseline-shift">7%</xsl:attribute>
16777
+ <xsl:value-of select="$char"/>
16778
+ </fo:inline>
16779
+ </xsl:when>
16780
+ <xsl:otherwise>
16781
+ <!-- namespace-uri(ancestor::*[local-name() = 'title']) != '' to skip title from $contents -->
16782
+ <xsl:if test="namespace-uri(ancestor::*[local-name() = 'title']) != '' and ($char_prev = '' and ../preceding-sibling::node())">
16783
+ <fo:inline padding-left="1mm"><xsl:value-of select="$zero_width_space"/></fo:inline>
16784
+ </xsl:if>
16785
+ <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm" role="SKIP" text-align-last="center">
16786
+ <xsl:if test="normalize-space($writing-mode) != ''">
16787
+ <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
16788
+ <xsl:attribute name="reference-orientation">90</xsl:attribute>
16789
+ </xsl:if>
16790
+ <xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
16791
+ <xsl:attribute name="reference-orientation">0</xsl:attribute>
16792
+ </xsl:if>
16793
+ <xsl:if test="$char = '゜' or $char = '。' or $char = '﹒' or $char = '.'">
16794
+ <!-- Rotate 180°:
16795
+ U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜)
16796
+ U+3002 IDEOGRAPHIC FULL STOP (。)
16797
+ U+FE52 SMALL FULL STOP (﹒)
16798
+ U+FF0E FULLWIDTH FULL STOP (.)
16799
+ -->
16800
+ <xsl:attribute name="reference-orientation">-90</xsl:attribute>
16801
+ </xsl:if>
16802
+ <fo:block-container width="1em" role="SKIP"><!-- border="0.5pt solid blue" -->
16803
+ <fo:block line-height="1em" role="SKIP">
16804
+ <!-- <xsl:choose>
16805
+ <xsl:when test="$horizontal_mode = 'true'">
16806
+ <xsl:value-of select="$str"/>
16807
+ </xsl:when>
16808
+ <xsl:otherwise>
16809
+ <xsl:value-of select="$char"/>
16810
+ </xsl:otherwise>
16811
+ </xsl:choose> -->
16738
16812
  <xsl:value-of select="$char"/>
16739
- </xsl:otherwise>
16740
- </xsl:choose>
16741
- </fo:block>
16742
- </fo:block-container>
16743
- </fo:inline-container>
16744
- <xsl:if test="$add_zero_width_space = 'true' and ($char = ',' or $char = '.' or $char = ' ' or $char = '·' or $char = ')' or $char = ']' or $char = '}')"><xsl:value-of select="$zero_width_space"/></xsl:if>
16745
-
16746
- <xsl:if test="$horizontal_mode = 'false'">
16747
- <xsl:call-template name="insertVerticalChar">
16748
- <xsl:with-param name="str" select="substring($str, 2)"/>
16749
- <xsl:with-param name="writing-mode" select="$writing-mode"/>
16750
- <xsl:with-param name="reference-orientation" select="$reference-orientation"/>
16751
- <xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
16752
- </xsl:call-template>
16753
- </xsl:if>
16813
+ </fo:block>
16814
+ </fo:block-container>
16815
+ </fo:inline-container>
16816
+ <xsl:if test="namespace-uri(ancestor::*[local-name() = 'title']) != '' and ($char_next != '' or ../following-sibling::node())">
16817
+ <fo:inline padding-left="1mm"><xsl:value-of select="$zero_width_space"/></fo:inline>
16818
+ </xsl:if>
16819
+ </xsl:otherwise>
16820
+ </xsl:choose>
16821
+
16822
+ <xsl:if test="$add_zero_width_space = 'true' and ($char = ',' or $char = '.' or $char = ' ' or $char = '·' or $char = ')' or $char = ']' or $char = '}' or $char = '/')"><xsl:value-of select="$zero_width_space"/></xsl:if>
16823
+ <!-- <xsl:if test="$horizontal_mode = 'false'"> -->
16824
+ <xsl:call-template name="insertVerticalChar">
16825
+ <xsl:with-param name="str" select="substring($str, 2)"/>
16826
+ <xsl:with-param name="char_prev" select="$char"/>
16827
+ <xsl:with-param name="writing-mode" select="$writing-mode"/>
16828
+ <xsl:with-param name="reference-orientation" select="$reference-orientation"/>
16829
+ <xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
16830
+ </xsl:call-template>
16831
+ <!-- </xsl:if> -->
16754
16832
  </xsl:if>
16755
16833
  </xsl:otherwise>
16756
16834
  </xsl:choose>
16757
16835
  </xsl:template>
16758
16836
 
16837
+ <xsl:template name="insertHorizontalChars">
16838
+ <xsl:param name="str"/>
16839
+ <xsl:param name="writing-mode">lr-tb</xsl:param>
16840
+ <xsl:param name="reference-orientation">90</xsl:param>
16841
+ <xsl:param name="add_zero_width_space">false</xsl:param>
16842
+ <xsl:choose>
16843
+ <xsl:otherwise>
16844
+ <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm" role="SKIP">
16845
+ <xsl:if test="normalize-space($writing-mode) != ''">
16846
+ <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
16847
+ <xsl:attribute name="reference-orientation">90</xsl:attribute>
16848
+ </xsl:if>
16849
+ <fo:block-container width="1em" role="SKIP"> <!-- border="0.5pt solid green" -->
16850
+ <fo:block line-height="1em" role="SKIP">
16851
+ <xsl:value-of select="$str"/>
16852
+ </fo:block>
16853
+ </fo:block-container>
16854
+ </fo:inline-container>
16855
+ </xsl:otherwise>
16856
+ </xsl:choose>
16857
+ </xsl:template>
16858
+
16759
16859
  <xsl:template name="number-to-words">
16760
16860
  <xsl:param name="number"/>
16761
16861
  <xsl:param name="first"/>
@@ -3798,8 +3798,21 @@
3798
3798
 
3799
3799
  <!-- <xsl:strip-space elements="ieee:xref"/> -->
3800
3800
 
3801
- <xsl:variable name="namespace_full" select="namespace-uri(/*)"/> <!-- example: https://www.metanorma.org/ns/iso -->
3802
- <xsl:variable name="root_element" select="local-name(/*)"/> <!-- example: iso-standard -->
3801
+ <xsl:variable name="namespace_full_">
3802
+ <xsl:choose>
3803
+ <xsl:when test="local-name(/*) = 'metanorma-collection'"><xsl:value-of select="namespace-uri(//*[contains(local-name(), '-standard')][1])"/></xsl:when>
3804
+ <xsl:otherwise><xsl:value-of select="namespace-uri(/*)"/></xsl:otherwise><!-- example: https://www.metanorma.org/ns/iso -->
3805
+ </xsl:choose>
3806
+ </xsl:variable>
3807
+ <xsl:variable name="namespace_full" select="normalize-space($namespace_full_)"/>
3808
+
3809
+ <xsl:variable name="root_element_">
3810
+ <xsl:choose>
3811
+ <xsl:when test="local-name(/*) = 'metanorma-collection'"><xsl:value-of select="local-name(//*[contains(local-name(), '-standard')][1])"/></xsl:when>
3812
+ <xsl:otherwise><xsl:value-of select="local-name(/*)"/></xsl:otherwise><!-- example: iso-standard -->
3813
+ </xsl:choose>
3814
+ </xsl:variable>
3815
+ <xsl:variable name="root_element" select="normalize-space($root_element_)"/>
3803
3816
 
3804
3817
  <xsl:variable name="document_scheme" select="normalize-space(//*[contains(local-name(), '-standard')]/*[local-name() = 'metanorma-extension']/*[local-name() = 'presentation-metadata'][*[local-name() = 'name'] = 'document-scheme']/*[local-name() = 'value'])"/>
3805
3818
 
@@ -7162,7 +7175,9 @@
7162
7175
  <fo:block role="SKIP">
7163
7176
 
7164
7177
  <xsl:if test="$isGenerateTableIF = 'true'">
7165
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
7178
+
7179
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
7180
+
7166
7181
  </xsl:if>
7167
7182
 
7168
7183
  <xsl:apply-templates/>
@@ -8181,7 +8196,17 @@
8181
8196
  <xsl:call-template name="refine_dt-cell-style"/>
8182
8197
 
8183
8198
  <fo:block xsl:use-attribute-sets="dt-block-style" role="SKIP">
8184
- <xsl:copy-of select="@id"/>
8199
+
8200
+ <xsl:choose>
8201
+ <xsl:when test="$isGenerateTableIF = 'true'">
8202
+
8203
+ <xsl:copy-of select="@id"/>
8204
+
8205
+ </xsl:when>
8206
+ <xsl:otherwise>
8207
+ <xsl:copy-of select="@id"/>
8208
+ </xsl:otherwise>
8209
+ </xsl:choose>
8185
8210
 
8186
8211
  <xsl:if test="normalize-space($key_iso) = 'true'">
8187
8212
  <xsl:attribute name="margin-top">0</xsl:attribute>
@@ -8213,7 +8238,9 @@
8213
8238
  <fo:block role="SKIP">
8214
8239
 
8215
8240
  <xsl:if test="$isGenerateTableIF = 'true'">
8216
- <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
8241
+
8242
+ <xsl:attribute name="id"><xsl:value-of select="@id"/></xsl:attribute>
8243
+
8217
8244
  </xsl:if>
8218
8245
 
8219
8246
  <xsl:choose>
@@ -8689,6 +8716,12 @@
8689
8716
  </xsl:if>
8690
8717
  </xsl:template>
8691
8718
 
8719
+ <xsl:template match="*[local-name()='strike']">
8720
+ <fo:inline text-decoration="line-through">
8721
+ <xsl:apply-templates/>
8722
+ </fo:inline>
8723
+ </xsl:template>
8724
+
8692
8725
  <xsl:template match="*[local-name() = 'pagebreak']">
8693
8726
  <fo:block break-after="page"/>
8694
8727
  <fo:block> </fo:block>
@@ -9451,6 +9484,14 @@
9451
9484
  </xsl:for-each>
9452
9485
  </xsl:variable>
9453
9486
 
9487
+ <!-- <xsl:if test="$debug = 'true'">
9488
+ <redirect:write file="{generate-id()}_words_with_width_sorted.xml">
9489
+ <td_text><xsl:copy-of select="$td_text"/></td_text>
9490
+ <words_with_width><xsl:copy-of select="$words_with_width"/></words_with_width>
9491
+ <xsl:copy-of select="$words_with_width_sorted"/>
9492
+ </redirect:write>
9493
+ </xsl:if> -->
9494
+
9454
9495
  <xsl:variable name="words">
9455
9496
  <xsl:for-each select=".//*[local-name() = 'image' or local-name() = 'stem']">
9456
9497
  <word>
@@ -9576,6 +9617,7 @@
9576
9617
  <xsl:if test="ancestor::*[local-name() = 'tt']"><tag>tt</tag></xsl:if>
9577
9618
  <xsl:if test="ancestor::*[local-name() = 'sourcecode']"><tag>sourcecode</tag></xsl:if>
9578
9619
  <xsl:if test="ancestor::*[local-name() = 'keep-together_within-line']"><tag>keep-together_within-line</tag></xsl:if>
9620
+ <xsl:if test="ancestor::*[local-name() = 'font_en_vertical']"><tag>font_en_vertical</tag></xsl:if>
9579
9621
  </tags>
9580
9622
  </xsl:template>
9581
9623
  <!-- =============================== -->
@@ -10118,7 +10160,16 @@
10118
10160
  </xsl:when>
10119
10161
  <xsl:otherwise>
10120
10162
  <!-- output text from <link>text</link> -->
10121
- <xsl:apply-templates/>
10163
+ <xsl:choose>
10164
+ <xsl:when test="starts-with(., 'http://') or starts-with(., 'https://') or starts-with(., 'www.')">
10165
+ <xsl:call-template name="add-zero-spaces-link-java">
10166
+ <xsl:with-param name="text" select="."/>
10167
+ </xsl:call-template>
10168
+ </xsl:when>
10169
+ <xsl:otherwise>
10170
+ <xsl:apply-templates/>
10171
+ </xsl:otherwise>
10172
+ </xsl:choose>
10122
10173
  </xsl:otherwise>
10123
10174
  </xsl:choose>
10124
10175
  </fo:basic-link>
@@ -10757,16 +10808,29 @@
10757
10808
  <xsl:template name="getImageSrc">
10758
10809
  <xsl:choose>
10759
10810
  <xsl:when test="not(starts-with(@src, 'data:'))">
10811
+ <xsl:call-template name="getImageSrcExternal"/>
10812
+ </xsl:when>
10813
+ <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
10814
+ </xsl:choose>
10815
+ </xsl:template>
10816
+
10817
+ <xsl:template name="getImageSrcExternal">
10818
+ <xsl:choose>
10819
+ <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
10820
+ <xsl:value-of select="@src"/>
10821
+ </xsl:when>
10822
+ <xsl:otherwise>
10823
+ <xsl:variable name="src_with_basepath" select="concat($basepath, @src)"/>
10824
+ <xsl:variable name="file_exists" select="normalize-space(java:exists(java:java.io.File.new($src_with_basepath)))"/>
10760
10825
  <xsl:choose>
10761
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
10762
- <xsl:value-of select="@src"/>
10826
+ <xsl:when test="$file_exists = 'true'">
10827
+ <xsl:value-of select="$src_with_basepath"/>
10763
10828
  </xsl:when>
10764
10829
  <xsl:otherwise>
10765
- <xsl:value-of select="concat($basepath, @src)"/>
10830
+ <xsl:value-of select="@src"/>
10766
10831
  </xsl:otherwise>
10767
10832
  </xsl:choose>
10768
- </xsl:when>
10769
- <xsl:otherwise><xsl:value-of select="@src"/></xsl:otherwise>
10833
+ </xsl:otherwise>
10770
10834
  </xsl:choose>
10771
10835
  </xsl:template>
10772
10836
 
@@ -10814,14 +10878,8 @@
10814
10878
  <xsl:value-of select="concat('url(file:///',$basepath, $src_png, ')')"/>
10815
10879
  </xsl:when>
10816
10880
  <xsl:when test="not(starts-with(@src, 'data:'))">
10817
- <xsl:choose>
10818
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
10819
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
10820
- </xsl:when>
10821
- <xsl:otherwise>
10822
- <xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
10823
- </xsl:otherwise>
10824
- </xsl:choose>
10881
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
10882
+ <xsl:value-of select="concat('url(file:///', $src_external, ')')"/>
10825
10883
  </xsl:when>
10826
10884
  <xsl:otherwise>
10827
10885
  <xsl:value-of select="@src"/>
@@ -10842,16 +10900,8 @@
10842
10900
  </svg>
10843
10901
  </xsl:when>
10844
10902
  <xsl:when test="not(starts-with(@src, 'data:'))">
10845
- <xsl:variable name="src">
10846
- <xsl:choose>
10847
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
10848
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
10849
- </xsl:when>
10850
- <xsl:otherwise>
10851
- <xsl:value-of select="concat('url(file:///',$basepath, @src, ')')"/>
10852
- </xsl:otherwise>
10853
- </xsl:choose>
10854
- </xsl:variable>
10903
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
10904
+ <xsl:variable name="src" select="concat('url(file:///', $src_external, ')')"/>
10855
10905
  <xsl:variable name="file" select="java:java.io.File.new(@src)"/>
10856
10906
  <xsl:variable name="bufferedImage" select="java:javax.imageio.ImageIO.read($file)"/>
10857
10907
  <xsl:variable name="width" select="java:getWidth($bufferedImage)"/>
@@ -15018,7 +15068,9 @@
15018
15068
  <xsl:template name="add_id">
15019
15069
  <xsl:if test="not(@id)">
15020
15070
  <!-- add @id - first element with @id plus '_element_name' -->
15021
- <xsl:attribute name="id"><xsl:value-of select="(.//*[@id])[1]/@id"/>_<xsl:value-of select="local-name()"/></xsl:attribute>
15071
+ <xsl:variable name="prefix_id_" select="(.//*[@id])[1]/@id"/>
15072
+ <xsl:variable name="prefix_id"><xsl:value-of select="$prefix_id_"/><xsl:if test="normalize-space($prefix_id_) = ''"><xsl:value-of select="generate-id()"/></xsl:if></xsl:variable>
15073
+ <xsl:attribute name="id"><xsl:value-of select="$prefix_id"/>_<xsl:value-of select="local-name()"/></xsl:attribute>
15022
15074
  </xsl:if>
15023
15075
  </xsl:template>
15024
15076
 
@@ -16425,6 +16477,7 @@
16425
16477
  <xsl:param name="formatted">false</xsl:param>
16426
16478
  <xsl:param name="lang"/>
16427
16479
  <xsl:param name="returnEmptyIfNotFound">false</xsl:param>
16480
+ <xsl:param name="bibdata_updated"/>
16428
16481
 
16429
16482
  <xsl:variable name="curr_lang">
16430
16483
  <xsl:choose>
@@ -16438,6 +16491,9 @@
16438
16491
 
16439
16492
  <xsl:variable name="data_value">
16440
16493
  <xsl:choose>
16494
+ <xsl:when test="$formatted = 'true' and string-length($bibdata_updated) != ''">
16495
+ <xsl:apply-templates select="xalan:nodeset($bibdata_updated)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
16496
+ </xsl:when>
16441
16497
  <xsl:when test="$formatted = 'true'">
16442
16498
  <xsl:apply-templates select="xalan:nodeset($bibdata)//*[local-name() = 'localized-string'][@key = $key and @language = $curr_lang]"/>
16443
16499
  </xsl:when>
@@ -16609,14 +16665,8 @@
16609
16665
  <xsl:value-of select="$src"/>
16610
16666
  </xsl:when>
16611
16667
  <xsl:otherwise>
16612
- <xsl:choose>
16613
- <xsl:when test="@extracted = 'true'"> <!-- added in mn2pdf v1.97 -->
16614
- <xsl:value-of select="concat('url(file:///', @src, ')')"/>
16615
- </xsl:when>
16616
- <xsl:otherwise>
16617
- <xsl:value-of select="concat('url(file:///',$basepath, $src, ')')"/>
16618
- </xsl:otherwise>
16619
- </xsl:choose>
16668
+ <xsl:variable name="src_external"><xsl:call-template name="getImageSrcExternal"/></xsl:variable>
16669
+ <xsl:value-of select="concat('url(file:///', $src_external, ')')"/>
16620
16670
  </xsl:otherwise>
16621
16671
  </xsl:choose>
16622
16672
  </xsl:template>
@@ -16638,15 +16688,23 @@
16638
16688
  <!-- END: insert cover page image -->
16639
16689
 
16640
16690
  <!-- https://github.com/metanorma/docs/blob/main/109.adoc -->
16691
+ <xsl:variable name="regex_ja_spec_half_width_">
16692
+ \u0028 <!-- U+0028 LEFT PARENTHESIS (() -->
16693
+ \u0029 <!-- U+0029 RIGHT PARENTHESIS ()) -->
16694
+ \u007B <!-- U+007B LEFT CURLY BRACKET ({) -->
16695
+ \u007D <!-- U+007D RIGHT CURLY BRACKET (}) -->
16696
+ \uFF62 <!-- U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) -->
16697
+ \uFF63 <!-- U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) -->
16698
+ \u005B <!-- U+005B LEFT SQUARE BRACKET ([) -->
16699
+ \u005D <!-- U+005D RIGHT SQUARE BRACKET (]) -->
16700
+ </xsl:variable>
16701
+ <xsl:variable name="regex_ja_spec_half_width" select="translate(normalize-space($regex_ja_spec_half_width_), ' ', '')"/>
16641
16702
  <xsl:variable name="regex_ja_spec_">[
16642
16703
  <!-- Rotate 90° clockwise -->
16643
- \u0028 <!-- U+0028 LEFT PARENTHESIS (() -->
16704
+ <xsl:value-of select="$regex_ja_spec_half_width"/>
16644
16705
  \uFF08 <!-- U+FF08 FULLWIDTH LEFT PARENTHESIS (() -->
16645
- \u0029 <!-- U+0029 RIGHT PARENTHESIS ()) -->
16646
16706
  \uFF09 <!-- U+FF09 FULLWIDTH RIGHT PARENTHESIS ()) -->
16647
- \u007B <!-- U+007B LEFT CURLY BRACKET ({) -->
16648
16707
  \uFF5B <!-- U+FF5B FULLWIDTH LEFT CURLY BRACKET ({) -->
16649
- \u007D <!-- U+007D RIGHT CURLY BRACKET (}) -->
16650
16708
  \uFF5D <!-- U+FF5D FULLWIDTH RIGHT CURLY BRACKET (}) -->
16651
16709
  \u3014 <!-- U+3014 LEFT TORTOISE SHELL BRACKET (〔) -->
16652
16710
  \u3015 <!-- U+3015 RIGHT TORTOISE SHELL BRACKET (〕) -->
@@ -16654,21 +16712,16 @@
16654
16712
  \u3011 <!-- U+3011 RIGHT BLACK LENTICULAR BRACKET (】) -->
16655
16713
  \u300A <!-- U+300A LEFT DOUBLE ANGLE BRACKET (《) -->
16656
16714
  \u300B <!-- U+300B RIGHT DOUBLE ANGLE BRACKET (》) -->
16657
- \uFF62 <!-- U+FF62 HALFWIDTH LEFT CORNER BRACKET (「) -->
16658
16715
  \u300C <!-- U+300C LEFT CORNER BRACKET (「) -->
16659
- \uFF63 <!-- U+FF63 HALFWIDTH RIGHT CORNER BRACKET (」) -->
16660
16716
  \u300D <!-- U+300D RIGHT CORNER BRACKET (」) -->
16661
16717
  \u300E <!-- U+300E LEFT WHITE CORNER BRACKET (『) -->
16662
16718
  \u300F <!-- U+300F RIGHT WHITE CORNER BRACKET (』) -->
16663
- \u005B <!-- U+005B LEFT SQUARE BRACKET ([) -->
16664
16719
  \uFF3B <!-- U+FF3B FULLWIDTH LEFT SQUARE BRACKET ([) -->
16665
- \u005D <!-- U+005D RIGHT SQUARE BRACKET (]) -->
16666
16720
  \uFF3D <!-- U+FF3D FULLWIDTH RIGHT SQUARE BRACKET (]) -->
16667
16721
  \u3008 <!-- U+3008 LEFT ANGLE BRACKET (〈) -->
16668
16722
  \u3009 <!-- U+3009 RIGHT ANGLE BRACKET (〉) -->
16669
16723
  \u3016 <!-- U+3016 LEFT WHITE LENTICULAR BRACKET (〖) -->
16670
16724
  \u3017 <!-- U+3017 RIGHT WHITE LENTICULAR BRACKET (〗) -->
16671
-
16672
16725
  \u301A <!-- U+301A LEFT WHITE SQUARE BRACKET (〚) -->
16673
16726
  \u301B <!-- U+301B RIGHT WHITE SQUARE BRACKET (〛) -->
16674
16727
  \u301C <!-- U+301C WAVE DASH (〜) -->
@@ -16700,6 +16753,7 @@
16700
16753
  <xsl:variable name="regex_ja_spec"><xsl:value-of select="translate(normalize-space($regex_ja_spec_), ' ', '')"/></xsl:variable>
16701
16754
  <xsl:template name="insertVerticalChar">
16702
16755
  <xsl:param name="str"/>
16756
+ <xsl:param name="char_prev"/>
16703
16757
  <xsl:param name="writing-mode">lr-tb</xsl:param>
16704
16758
  <xsl:param name="reference-orientation">90</xsl:param>
16705
16759
  <xsl:param name="add_zero_width_space">false</xsl:param>
@@ -16709,53 +16763,99 @@
16709
16763
  </xsl:when>
16710
16764
  <xsl:otherwise>
16711
16765
  <xsl:if test="string-length($str) &gt; 0">
16712
- <xsl:variable name="horizontal_mode" select="normalize-space(ancestor::*[local-name() = 'span'][@class = 'horizontal'] and 1 = 1)"/>
16766
+
16767
+ <!-- <xsl:variable name="horizontal_mode" select="normalize-space(ancestor::*[local-name() = 'span'][@class = 'horizontal'] and 1 = 1)"/> -->
16713
16768
  <xsl:variable name="char" select="substring($str,1,1)"/>
16714
- <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm">
16715
- <xsl:if test="normalize-space($writing-mode) != ''">
16716
- <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
16717
- <xsl:attribute name="reference-orientation">90</xsl:attribute>
16718
- </xsl:if>
16719
- <xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
16720
- <xsl:attribute name="reference-orientation">0</xsl:attribute>
16721
- </xsl:if>
16722
- <xsl:if test="$char = '゜' or $char = '。' or $char = '﹒' or $char = '.'">
16723
- <!-- Rotate 180°:
16724
- U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜)
16725
- U+3002 IDEOGRAPHIC FULL STOP (。)
16726
- U+FE52 SMALL FULL STOP (﹒)
16727
- U+FF0E FULLWIDTH FULL STOP ()
16728
- -->
16729
- <xsl:attribute name="reference-orientation">-90</xsl:attribute>
16730
- </xsl:if>
16731
- <fo:block-container width="1em">
16732
- <fo:block line-height="1em">
16733
- <xsl:choose>
16734
- <xsl:when test="$horizontal_mode = 'true'">
16735
- <xsl:value-of select="$str"/>
16736
- </xsl:when>
16737
- <xsl:otherwise>
16769
+ <xsl:variable name="char_next" select="substring($str,2,1)"/>
16770
+
16771
+ <xsl:variable name="char_half_width" select="normalize-space(java:matches(java:java.lang.String.new($char), concat('([', $regex_ja_spec_half_width, ']{1,})')))"/>
16772
+
16773
+ <xsl:choose>
16774
+ <xsl:when test="$char_half_width = 'true'">
16775
+ <fo:inline>
16776
+ <xsl:attribute name="baseline-shift">7%</xsl:attribute>
16777
+ <xsl:value-of select="$char"/>
16778
+ </fo:inline>
16779
+ </xsl:when>
16780
+ <xsl:otherwise>
16781
+ <!-- namespace-uri(ancestor::*[local-name() = 'title']) != '' to skip title from $contents -->
16782
+ <xsl:if test="namespace-uri(ancestor::*[local-name() = 'title']) != '' and ($char_prev = '' and ../preceding-sibling::node())">
16783
+ <fo:inline padding-left="1mm"><xsl:value-of select="$zero_width_space"/></fo:inline>
16784
+ </xsl:if>
16785
+ <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm" role="SKIP" text-align-last="center">
16786
+ <xsl:if test="normalize-space($writing-mode) != ''">
16787
+ <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
16788
+ <xsl:attribute name="reference-orientation">90</xsl:attribute>
16789
+ </xsl:if>
16790
+ <xsl:if test="normalize-space(java:matches(java:java.lang.String.new($char), concat('(', $regex_ja_spec, '{1,})'))) = 'true'">
16791
+ <xsl:attribute name="reference-orientation">0</xsl:attribute>
16792
+ </xsl:if>
16793
+ <xsl:if test="$char = '゜' or $char = '。' or $char = '﹒' or $char = '.'">
16794
+ <!-- Rotate 180°:
16795
+ U+309C KATAKANA-HIRAGANA SEMI-VOICED SOUND MARK (゜)
16796
+ U+3002 IDEOGRAPHIC FULL STOP (。)
16797
+ U+FE52 SMALL FULL STOP (﹒)
16798
+ U+FF0E FULLWIDTH FULL STOP (.)
16799
+ -->
16800
+ <xsl:attribute name="reference-orientation">-90</xsl:attribute>
16801
+ </xsl:if>
16802
+ <fo:block-container width="1em" role="SKIP"><!-- border="0.5pt solid blue" -->
16803
+ <fo:block line-height="1em" role="SKIP">
16804
+ <!-- <xsl:choose>
16805
+ <xsl:when test="$horizontal_mode = 'true'">
16806
+ <xsl:value-of select="$str"/>
16807
+ </xsl:when>
16808
+ <xsl:otherwise>
16809
+ <xsl:value-of select="$char"/>
16810
+ </xsl:otherwise>
16811
+ </xsl:choose> -->
16738
16812
  <xsl:value-of select="$char"/>
16739
- </xsl:otherwise>
16740
- </xsl:choose>
16741
- </fo:block>
16742
- </fo:block-container>
16743
- </fo:inline-container>
16744
- <xsl:if test="$add_zero_width_space = 'true' and ($char = ',' or $char = '.' or $char = ' ' or $char = '·' or $char = ')' or $char = ']' or $char = '}')"><xsl:value-of select="$zero_width_space"/></xsl:if>
16745
-
16746
- <xsl:if test="$horizontal_mode = 'false'">
16747
- <xsl:call-template name="insertVerticalChar">
16748
- <xsl:with-param name="str" select="substring($str, 2)"/>
16749
- <xsl:with-param name="writing-mode" select="$writing-mode"/>
16750
- <xsl:with-param name="reference-orientation" select="$reference-orientation"/>
16751
- <xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
16752
- </xsl:call-template>
16753
- </xsl:if>
16813
+ </fo:block>
16814
+ </fo:block-container>
16815
+ </fo:inline-container>
16816
+ <xsl:if test="namespace-uri(ancestor::*[local-name() = 'title']) != '' and ($char_next != '' or ../following-sibling::node())">
16817
+ <fo:inline padding-left="1mm"><xsl:value-of select="$zero_width_space"/></fo:inline>
16818
+ </xsl:if>
16819
+ </xsl:otherwise>
16820
+ </xsl:choose>
16821
+
16822
+ <xsl:if test="$add_zero_width_space = 'true' and ($char = ',' or $char = '.' or $char = ' ' or $char = '·' or $char = ')' or $char = ']' or $char = '}' or $char = '/')"><xsl:value-of select="$zero_width_space"/></xsl:if>
16823
+ <!-- <xsl:if test="$horizontal_mode = 'false'"> -->
16824
+ <xsl:call-template name="insertVerticalChar">
16825
+ <xsl:with-param name="str" select="substring($str, 2)"/>
16826
+ <xsl:with-param name="char_prev" select="$char"/>
16827
+ <xsl:with-param name="writing-mode" select="$writing-mode"/>
16828
+ <xsl:with-param name="reference-orientation" select="$reference-orientation"/>
16829
+ <xsl:with-param name="add_zero_width_space" select="$add_zero_width_space"/>
16830
+ </xsl:call-template>
16831
+ <!-- </xsl:if> -->
16754
16832
  </xsl:if>
16755
16833
  </xsl:otherwise>
16756
16834
  </xsl:choose>
16757
16835
  </xsl:template>
16758
16836
 
16837
+ <xsl:template name="insertHorizontalChars">
16838
+ <xsl:param name="str"/>
16839
+ <xsl:param name="writing-mode">lr-tb</xsl:param>
16840
+ <xsl:param name="reference-orientation">90</xsl:param>
16841
+ <xsl:param name="add_zero_width_space">false</xsl:param>
16842
+ <xsl:choose>
16843
+ <xsl:otherwise>
16844
+ <fo:inline-container text-align="center" alignment-baseline="central" width="1em" margin="0" padding="0" text-indent="0mm" last-line-end-indent="0mm" start-indent="0mm" end-indent="0mm" role="SKIP">
16845
+ <xsl:if test="normalize-space($writing-mode) != ''">
16846
+ <xsl:attribute name="writing-mode"><xsl:value-of select="$writing-mode"/></xsl:attribute>
16847
+ <xsl:attribute name="reference-orientation">90</xsl:attribute>
16848
+ </xsl:if>
16849
+ <fo:block-container width="1em" role="SKIP"> <!-- border="0.5pt solid green" -->
16850
+ <fo:block line-height="1em" role="SKIP">
16851
+ <xsl:value-of select="$str"/>
16852
+ </fo:block>
16853
+ </fo:block-container>
16854
+ </fo:inline-container>
16855
+ </xsl:otherwise>
16856
+ </xsl:choose>
16857
+ </xsl:template>
16858
+
16759
16859
  <xsl:template name="number-to-words">
16760
16860
  <xsl:param name="number"/>
16761
16861
  <xsl:param name="first"/>
@@ -86,12 +86,12 @@ module IsoDoc
86
86
  .render1(RelatonBib::XMLParser.from_xml(bibitem.to_xml))
87
87
  end
88
88
 
89
- def bibliography_bibitem_number1(bibitem, idx)
89
+ def bibliography_bibitem_number1(bibitem, idx, normative)
90
90
  bibitem.xpath(ns(".//docidentifier[@type = 'metanorma' or " \
91
91
  "@type = 'metanorma-ordinal']")).each do |mn|
92
92
  /^\[?B?\d\]?$/.match?(mn&.text) and mn.remove
93
93
  end
94
- unless bibliography_bibitem_number_skip(bibitem)
94
+ unless bibliography_bibitem_number_skip(bibitem) || normative
95
95
  idx += 1
96
96
  docidentifier_insert_pt(bibitem).next =
97
97
  "<docidentifier type='metanorma-ordinal'>[B#{idx}]</docidentifier>"
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Ieee
3
- VERSION = "1.3.6".freeze
3
+ VERSION = "1.3.8".freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-ieee
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.6
4
+ version: 1.3.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-12-11 00:00:00.000000000 Z
11
+ date: 2025-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: metanorma-standoc
@@ -339,7 +339,7 @@ homepage: https://github.com/metanorma/metanorma-ieee
339
339
  licenses:
340
340
  - BSD-2-Clause
341
341
  metadata: {}
342
- post_install_message:
342
+ post_install_message:
343
343
  rdoc_options: []
344
344
  require_paths:
345
345
  - lib
@@ -355,7 +355,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
355
355
  version: '0'
356
356
  requirements: []
357
357
  rubygems_version: 3.3.27
358
- signing_key:
358
+ signing_key:
359
359
  specification_version: 4
360
360
  summary: Metanorma for the IEEE
361
361
  test_files: []