metanorma-itu 0.2.7 → 0.2.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: 8bad5e2f659ff457f36fdeeed03ac7bdde40f40e8dfda17655cd269113c25792
4
- data.tar.gz: d79af9838308ff14fc77be92eb359d37360f60915e0fb21a575fa8dffbd52046
3
+ metadata.gz: cc42b5f0ce3f11b23b8bcd171e19342c3f2c237742e8084cb6545af5a56e954f
4
+ data.tar.gz: 73ae3b1e5cf914b8e715e1ccb14b0492819cbe811334cbfe7c5b24787490f5bd
5
5
  SHA512:
6
- metadata.gz: e86d60228d21d906ad1411cc54b14e7aeba763c7dc189dd87880394eeb62e24f6989b31b3e828be026540a44bb4d06bf452b52d441478c235b6a9039901bb73c
7
- data.tar.gz: 7b97735f1e241bc98dcbfd388bad1d60427e43ed3a1aeb8b969ddd32bfdc79ce58149144175a2fc728f2ae22c5afed2c122009b0465fe3f109f4096a5854ed0a
6
+ metadata.gz: 8f72656f8c80c6bff4e48aba41f45d0342fb6fc5e542eb0410908efb465862ba7f3b9dee3cc6ef4ef5175fa60fdb05570339d9718b99193f56d6b2e4818734b0
7
+ data.tar.gz: 13071d691ced638d57cb4085835b359e00a7851c6198739159ccb5e675b491e34983fba7a89c16e6a090a3172a9e6ef577b46c2df4948125b279d7b510223c61
@@ -234,6 +234,14 @@ module Asciidoctor
234
234
  super
235
235
  end
236
236
 
237
+ def html_extract_attributes(node)
238
+ super.merge(hierarchical_assets: node.attr("hierarchical-assets"))
239
+ end
240
+
241
+ def doc_extract_attributes(node)
242
+ super.merge(hierarchical_assets: node.attr("hierarchical-assets"))
243
+ end
244
+
237
245
  def html_converter(node)
238
246
  IsoDoc::ITU::HtmlConvert.new(html_extract_attributes(node))
239
247
  end
@@ -9,6 +9,12 @@ module Asciidoctor
9
9
  # schema encapsulation of the document for validation
10
10
  #
11
11
  class Converter < Standoc::Converter
12
+ def metadata_status(node, xml)
13
+ xml.status do |s|
14
+ s.stage (node.attributes.has_key?("draft") ? "draft" :
15
+ (node.attr("status") || node.attr("docstage") || "published" ))
16
+ end
17
+ end
12
18
 
13
19
  def title_english(node, xml)
14
20
  ["en"].each do |lang|
@@ -62,6 +62,7 @@
62
62
  <value>technical-paper</value>
63
63
  <value>technical-report</value>
64
64
  <value>joint-itu-iso-iec</value>
65
+ <value>resolution</value>
65
66
  </choice>
66
67
  </define>
67
68
  <define name="editorialgroup">
@@ -17,7 +17,7 @@ module Asciidoctor
17
17
 
18
18
  def stage_validate(xmldoc)
19
19
  stage = xmldoc&.at("//bibdata/status/stage")&.text
20
- %w(in-force superseded in-force-prepublished withdrawn).include? stage or
20
+ %w(in-force superseded in-force-prepublished withdrawn draft).include? stage or
21
21
  warn "Document Attributes: #{stage} is not a recognised status"
22
22
  end
23
23
 
@@ -1,6 +1,8 @@
1
1
  require "isodoc"
2
2
  require_relative "metadata"
3
3
  require "fileutils"
4
+ require_relative "./ref.rb"
5
+ require_relative "./xref.rb"
4
6
 
5
7
  module IsoDoc
6
8
  module ITU
@@ -50,7 +52,7 @@ module IsoDoc
50
52
  node.children.each do |n|
51
53
  parse(n, div) unless n.name == "name"
52
54
  end
53
- figure_name_parse(node, div, name)
55
+ sourcecode_name_parse(node, div, name) if name
54
56
  end
55
57
  @in_figure = false
56
58
  end
@@ -64,46 +66,16 @@ module IsoDoc
64
66
  name&.children&.each { |c2| parse(c2, b) }
65
67
  end
66
68
  end
67
- type = annex&.document&.root&.at("//bibdata/ext/doctype")&.text || "recommendation"
68
- type = type.split(" ").map {|w| w.capitalize }.join(" ")
69
- info = annex["obligation"] == "informative"
70
- div.p { |p| p << (info ? @inform_annex_lbl : @norm_annex_lbl).sub(/%/, type) }
71
- end
72
-
73
- def annex_name_lbl(clause, num)
74
- lbl = clause["obligation"] == "informative" ? @appendix_lbl : @annex_lbl
75
- l10n("<b>#{lbl} #{num}</b>")
69
+ annex_obligation_subtitle(annex, div)
76
70
  end
77
71
 
78
- def annex_names(clause, num)
79
- lbl = clause["obligation"] == "informative" ? @appendix_lbl : @annex_lbl
80
- @anchors[clause["id"]] = { label: annex_name_lbl(clause, num), type: "clause",
81
- xref: "#{lbl} #{num}", level: 1 }
82
- clause.xpath(ns("./clause | ./references | ./terms | ./definitions ")).each_with_index do |c, i|
83
- annex_names1(c, "#{num}.#{i + 1}", 2)
84
- end
85
- hierarchical_asset_names(clause, num)
86
- end
87
-
88
- def back_anchor_names(docxml)
89
- super
90
- if annexid = docxml&.at(ns("//bibdata/ext/structuredidentifier/annexid"))&.text
91
- docxml.xpath(ns("//annex")).each { |c| annex_names(c, annexid) }
92
- else
93
- docxml.xpath(ns("//annex[@obligation = 'informative']")).each_with_index do |c, i|
94
- annex_names(c, RomanNumerals.to_roman(i + 1))
95
- end
96
- docxml.xpath(ns("//annex[not(@obligation = 'informative')]")).each_with_index do |c, i|
97
- annex_names(c, (65 + i + (i > 7 ? 1 : 0)).chr.to_s)
98
- end
99
- end
100
- end
101
-
102
- def annex_names1(clause, num, level)
103
- @anchors[clause["id"]] = { label: num, xref: "#{@labels["annex_subclause"]} #{num}",
104
- level: level, type: "clause" }
105
- clause.xpath(ns("./clause")).each_with_index do |c, i|
106
- annex_names1(c, "#{num}.#{i + 1}", level + 1)
72
+ def annex_obligation_subtitle(annex, div)
73
+ type = annex&.document&.root&.at("//bibdata/ext/doctype")&.text ||
74
+ "recommendation"
75
+ type = type.split(" ").map {|w| w.capitalize }.join(" ")
76
+ info = annex["obligation"] == "informative"
77
+ div.p **{class: "annex_obligation" } do |p|
78
+ p << (info ? @inform_annex_lbl : @norm_annex_lbl).sub(/%/, type)
107
79
  end
108
80
  end
109
81
 
@@ -140,77 +112,6 @@ module IsoDoc
140
112
  super
141
113
  end
142
114
 
143
- def initial_anchor_names(d)
144
- d.xpath("//xmlns:preface/child::*").each do |c|
145
- preface_names(c)
146
- end
147
- sequential_asset_names(d.xpath("//xmlns:preface/child::*"))
148
- n = section_names(d.at(ns("//clause[title = 'Scope']")), 0, 1)
149
- n = section_names(d.at(ns("//bibliography/clause[title = 'References'] | "\
150
- "//bibliography/references[title = 'References']")), n, 1)
151
- n = section_names(d.at(ns("//sections/terms | "\
152
- "//sections/clause[descendant::terms]")), n, 1)
153
- n = section_names(d.at(ns("//sections/definitions")), n, 1)
154
- clause_names(d, n)
155
- middle_section_asset_names(d)
156
- termnote_anchor_names(d)
157
- termexample_anchor_names(d)
158
- end
159
-
160
- def norm_ref(isoxml, out, num)
161
- q = "//bibliography/references[title = 'References']"
162
- f = isoxml.at(ns(q)) or return num
163
- out.div do |div|
164
- num = num + 1
165
- clause_name(num, @normref_lbl, div, nil)
166
- f.elements.reject do |e|
167
- %w(reference title bibitem note).include? e.name
168
- end.each { |e| parse(e, div) }
169
- biblio_list(f, div, false)
170
- end
171
- num
172
- end
173
-
174
- def nonstd_bibitem(list, b, ordinal, biblio)
175
- list.p **attr_code(iso_bibitem_entry_attrs(b, biblio)) do |ref|
176
- ref << "[#{render_identifier(bibitem_ref_code(b))}]"
177
- date_note_process(b, ref)
178
- insert_tab(ref, 1)
179
- reference_format(b, ref)
180
- end
181
- end
182
-
183
- def std_bibitem_entry(list, b, ordinal, biblio)
184
- nonstd_bibitem(list, b, ordinal, biblio)
185
- end
186
-
187
- def reference_format(b, r)
188
- reference_format_start(b, r)
189
- reference_format_title(b, r)
190
- end
191
-
192
- def reference_format_start(b, r)
193
- id = bibitem_ref_code(b)
194
- r << "Recommendation " if id["type"] == "ITU"
195
- r << render_identifier(id)
196
- if date = b.at(ns("./date[@type = 'published']"))
197
- r << " (#{date.text.sub(/-.*$/, '')})"
198
- end
199
- r << ", "
200
- end
201
-
202
- def reference_format_title(b, r)
203
- if ftitle = b.at(ns("./formattedref"))
204
- ftitle&.children&.each { |n| parse(n, r) }
205
- /\.$/.match(ftitle&.text) or r << "."
206
- elsif title = iso_title(b)
207
- r.i do |i|
208
- title&.children&.each { |n| parse(n, i) }
209
- end
210
- /\.$/.match(title&.text) or r << "."
211
- end
212
- end
213
-
214
115
  def terms_defs_title(node)
215
116
  t = node.at(ns("./title")) and return t.text
216
117
  super
@@ -235,8 +136,10 @@ module IsoDoc
235
136
  out.div **attr_code(id: node["id"]) do |div|
236
137
  clause_parse_title(node, div, node.at(ns("./title")), out)
237
138
  title = node.at(ns("./title"))&.text&.downcase
238
- title == "terms defined elsewhere" and out.p @labels["elsewhere_terms"]
239
- title == "terms defined in this recommendation" and out.p @labels["here_terms"]
139
+ title == "terms defined elsewhere" and
140
+ out.p @labels["elsewhere_terms"]
141
+ title == "terms defined in this recommendation" and
142
+ out.p @labels["here_terms"]
240
143
  if node.at(ns("./clause | ./term")).nil? then out.p "None."
241
144
  else
242
145
  node.children.reject { |c1| c1.name == "title" }.each do |c1|
@@ -298,6 +201,16 @@ module IsoDoc
298
201
  end
299
202
  out.p(**{ class: "zzSTDTitle2" }) { |p| p << @meta.get[:doctitle] }
300
203
  end
204
+
205
+ def make_table_footnote_target(out, fnid, fnref)
206
+ attrs = { id: fnid, class: "TableFootnoteRef" }
207
+ out.span do |s|
208
+ out.span **attrs do |a|
209
+ a << fnref + ")"
210
+ end
211
+ insert_tab(s, 1)
212
+ end
213
+ end
301
214
  end
302
215
  end
303
216
  end
@@ -71,7 +71,7 @@
71
71
  </div>
72
72
  {% endif %}
73
73
  <div>
74
- <span class="doc-type">{{ doctype }}</span>
74
+ <span class="doc-type">{% if stage == "Draft" %}Draft {% endif %}{{ doctype }}</span>
75
75
  <span class="ITU-sector">ITU-{{ bureau }}</span>
76
76
  <span class="doc-identifier">{{ docnumber }}</span>
77
77
  </div>
@@ -685,7 +685,7 @@ p.Biblio, p.NormRef {
685
685
  }
686
686
 
687
687
  .pseudocode {
688
- background-color: #dddddd;
688
+ background-color: #f6f6f6;
689
689
  padding: 1.2em;
690
690
  margin: 2em 0 1em 0;
691
691
  padding-left: 2em;
@@ -14,6 +14,25 @@ p.Sourcecode, li.Sourcecode, div.Sourcecode, pre.Sourcecode, pre
14
14
  mso-fareast-font-family:Calibri;
15
15
  mso-bidi-font-family:"Courier New";
16
16
  mso-ansi-language:EN-GB;}
17
+ p.annex_obligation, li.annex_obligation, div.annex_obligation
18
+ {mso-style-unhide:no;
19
+ mso-style-qformat:yes;
20
+ mso-style-parent:"";
21
+ margin-top:6.0pt;
22
+ margin-right:0cm;
23
+ margin-bottom:0cm;
24
+ margin-left:0cm;
25
+ margin-bottom:.0001pt;
26
+ text-align:center;
27
+ mso-pagination:widow-orphan;
28
+ tab-stops:39.7pt 59.55pt 79.4pt 99.25pt;
29
+ mso-layout-grid-align:none;
30
+ punctuation-wrap:simple;
31
+ text-autospace:none;
32
+ font-size:12pt;
33
+ font-family:$bodyfont;
34
+ mso-fareast-font-family:"Times New Roman";
35
+ mso-ansi-language:EN-US;}
17
36
  p.Biblio, li.Biblio, div.Biblio, p.NormRef, li.NormRef, div.NormRef
18
37
  {mso-style-unhide:no;
19
38
  mso-style-qformat:yes;
@@ -122,7 +141,7 @@ p.TableTitle
122
141
  mso-fareast-font-family:$bodyfont;
123
142
  mso-bidi-font-family:$bodyfont;
124
143
  mso-ansi-language:EN-GB;}
125
- p.Note, div.Note, li.Note, p.TableFootnote, div.TableFootnote, li.TableFootnote
144
+ p.Note, div.Note, li.Note
126
145
  {mso-style-unhide:no;
127
146
  mso-style-qformat:yes;
128
147
  margin-top:4.0pt;
@@ -143,6 +162,28 @@ p.Note, div.Note, li.Note, p.TableFootnote, div.TableFootnote, li.TableFootnote
143
162
  mso-fareast-font-family:$bodyfont;
144
163
  mso-bidi-font-family:$bodyfont;
145
164
  mso-ansi-language:EN-GB;}
165
+ p.TableFootnote, div.TableFootnote, li.TableFootnote
166
+ {mso-style-unhide:no;
167
+ mso-style-qformat:yes;
168
+ margin-top:2.0pt;
169
+ margin-right:0cm;
170
+ margin-bottom:2.0pt;
171
+ margin-left:14.2pt;
172
+ text-indent:-14.2pt;
173
+ margin-bottom:.0001pt;
174
+ text-align:justify;
175
+ text-justify:inter-ideograph;
176
+ mso-pagination:widow-orphan;
177
+ tab-stops:39.7pt 59.55pt 79.4pt 99.25pt;
178
+ mso-layout-grid-align:none;
179
+ punctuation-wrap:simple;
180
+ text-autospace:none;
181
+ font-size:11.0pt;
182
+ mso-bidi-font-size:10.0pt;
183
+ font-family:$bodyfont;
184
+ mso-fareast-font-family:$bodyfont;
185
+ mso-bidi-font-family:$bodyfont;
186
+ mso-ansi-language:EN-GB;}
146
187
  p.FooterQP, li.FooterQP, div.FooterQP
147
188
  {mso-style-name:Footer_QP;
148
189
  mso-style-unhide:no;
@@ -205,6 +246,28 @@ p.ANNEX, li.ANNEX, div.ANNEX
205
246
  mso-fareast-language:JA;
206
247
  font-weight:bold;
207
248
  mso-bidi-font-weight:normal;}
249
+ p.Normalaftertitle, li.Normalaftertitle, div.Normalaftertitle
250
+ {mso-style-name:Normal_after_title;
251
+ mso-style-unhide:no;
252
+ mso-style-next:Normal;
253
+ margin-top:18.0pt;
254
+ margin-right:0cm;
255
+ margin-bottom:0cm;
256
+ margin-left:0cm;
257
+ margin-bottom:.0001pt;
258
+ text-align:justify;
259
+ text-justify:inter-ideograph;
260
+ mso-pagination:widow-orphan;
261
+ tab-stops:39.7pt 59.55pt 79.4pt 99.25pt;
262
+ mso-layout-grid-align:none;
263
+ punctuation-wrap:simple;
264
+ text-autospace:none;
265
+ font-size:12.0pt;
266
+ mso-bidi-font-size:10.0pt;
267
+ font-family:$bodyfont;
268
+ mso-fareast-font-family:$bodyfont;
269
+ mso-ansi-language:EN-GB;
270
+ mso-fareast-language:EN-US;}
208
271
  p.BiblioTitle, li.BiblioTitle, div.BiblioTitle
209
272
  {mso-style-name:"Biblio Title";
210
273
  mso-style-noshow:yes;
@@ -352,9 +415,13 @@ p.TermNum, li.TermNum, div.TermNum
352
415
  mso-style-priority:7;
353
416
  mso-style-unhide:no;
354
417
  mso-style-next:"Term\(s\)";
355
- margin:0cm;
356
- margin-bottom:.0001pt;
418
+ margin-top:6.0pt;
419
+ margin-right:0cm;
420
+ margin-bottom:0cm;
421
+ margin-left:0cm;
357
422
  line-height:12.0pt;
423
+ text-align:justify;
424
+ text-justify:inter-ideograph;
358
425
  mso-pagination:widow-orphan;
359
426
  page-break-after:avoid;
360
427
  tab-stops:20.15pt;
@@ -793,8 +860,8 @@ span.stem
793
860
  mso-ascii-font-family:"Cambria Math";
794
861
  font-style:
795
862
  italic;}
796
- div.formula
797
- {tab-stops:right 487.45pt;}
863
+ div.Zormula, div.formula p
864
+ {tab-stops:39.7pt center 241.0pt right 17.0cm;}
798
865
  body
799
866
  {tab-interval:36.0pt;}
800
867
  dt
@@ -823,8 +890,9 @@ div.coverpage_warning
823
890
  {color:#485094;
824
891
  font-size:10.0pt;}
825
892
 
826
- a.TableFootnoteRef
893
+ a.TableFootnoteRef, span.TableFootnoteRef
827
894
  {mso-style-priority:99;
895
+ mso-style-parent:"Footnote Reference";
828
896
  vertical-align:super;}
829
897
 
830
898
  aside {
@@ -833,18 +901,26 @@ div.coverpage_warning
833
901
 
834
902
  .example-title {
835
903
  font-weight: bold;
836
- margin-left: -36.0pt;
904
+ margin-left: 0pt;
837
905
  }
838
906
 
839
907
  p.example, li.example, div.example, td.example {
840
- margin-top: 0cm;
841
- margin-right: 36.0pt;
842
- margin-bottom: 0cm;
843
- margin-left: 36.0pt;
844
908
  mso-pagination:none;
845
909
  font-size:10.0pt;
846
910
  font-family:$bodyfont;}
847
911
 
912
+ div.example {
913
+ margin-right: 0pt;
914
+ margin-left: 0pt;
915
+ margin-top: 0cm;
916
+ margin-bottom: 0cm;
917
+ }
918
+
919
+ p.example, li.example {
920
+ margin-right: 0pt;
921
+ margin-left: 0pt;
922
+ }
923
+
848
924
  td.example p.MsoListParagraph {
849
925
  font-size: 10.0pt;
850
926
  }
@@ -865,5 +941,5 @@ table.dl
865
941
  mso-table-layout-alt: auto;
866
942
  margin-right:0cm;
867
943
  margin-bottom:11.0pt;
868
- margin-left:20.15pt;}
944
+ margin-left:0cm;}
869
945
 
@@ -27,7 +27,7 @@
27
27
  <o:lock v:ext="edit" aspectratio="t"/>
28
28
  </v:shapetype><v:shape id="Picture_x0020_2" o:spid="_x0000_s1026" type="#_x0000_t75"
29
29
  alt="Fond-Rec_e" style='position:absolute;left:0;text-align:left;
30
- margin-left:-75.7pt;margin-top:-83.05pt;width:123.6pt;height:848.15pt;
30
+ margin-left:-75.7pt;margin-top:-60.0pt;width:123.6pt;height:848.15pt;
31
31
  z-index:251659264;visibility:visible;mso-wrap-style:square;
32
32
  mso-width-percent:0;mso-height-percent:0;mso-wrap-distance-left:9pt;
33
33
  mso-wrap-distance-top:0;mso-wrap-distance-right:9pt;
@@ -229,9 +229,9 @@
229
229
  normal'><span lang="EN-GB" style='font-size:16.0pt;mso-bidi-font-size:10.0pt'>PREPUBLISHED</span></i></b></span><b
230
230
  style='mso-bidi-font-weight:normal'><i style='mso-bidi-font-style:normal'><span
231
231
  lang="EN-GB" style='font-size:16.0pt;mso-bidi-font-size:10.0pt'><span
232
- style='mso-spacerun:yes'>  </span>RECOMMENDATION<o:p></o:p></span></i></b></p>
232
+ style='mso-spacerun:yes'>  </span>{{ doctype | upcase }}<o:p></o:p></span></i></b></p>
233
233
  <p class="MsoNormal" style='tab-stops:right 17.0cm'><span lang="EN-GB">This
234
- prepublication is an unedited version of a recently approved Recommendation.
234
+ prepublication is an unedited version of a recently approved {{doctype}}.
235
235
  It&#xA0;will be replaced by the published version after editing. Therefore,
236
236
  there will be differences between this prepublication and the published
237
237
  version.</span><span lang="EN-GB" style='font-size:9.0pt;mso-bidi-font-size:
@@ -263,7 +263,7 @@
263
263
  margin-bottom:12.0pt;margin-left:0cm;text-align:left;tab-stops:39.7pt 59.55pt 79.4pt 99.25pt right 17.0cm'><span
264
264
  style='mso-bookmark:_Hlk526346232'><a name="dnum2e"></a><span lang="EN-US"
265
265
  style='font-size:16.0pt;mso-bidi-font-size:10.0pt;font-family:"Arial",sans-serif;
266
- mso-ansi-language:EN-US'>Recommendation<span style='mso-spacerun:yes'> 
266
+ mso-ansi-language:EN-US'>{% if stage == "Draft" %}Draft {% endif %}{{ doctype }}<span style='mso-spacerun:yes'> 
267
267
  </span>ITU‑{{ bureau }}<span style='mso-spacerun:yes'>  </span>{{ docnumber }}<o:p></o:p></span></span></p>
268
268
  <span style='mso-bookmark:_Hlk526346232'></span>
269
269
  <p class="MsoNormal" align="left" style='margin-top:3.0pt;text-align:left;
@@ -92,6 +92,8 @@ p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
92
92
  margin-top:0cm;
93
93
  margin-right:0cm;
94
94
  margin-bottom:6.0pt;
95
+ text-align:justify;
96
+ text-justify:inter-ideograph;
95
97
  /* do not put in margin-left, it is specific to list level */
96
98
  mso-add-space:auto;
97
99
  mso-pagination:widow-orphan;
@@ -107,6 +109,8 @@ p.MsoListParagraphCxSpFirst, li.MsoListParagraphCxSpFirst, div.MsoListParagraphC
107
109
  margin-top:0cm;
108
110
  margin-right:0cm;
109
111
  margin-bottom:6.0pt;
112
+ text-align:justify;
113
+ text-justify:inter-ideograph;
110
114
  /* do not put in margin-left, it is specific to list level */
111
115
  mso-add-space:auto;
112
116
  mso-pagination:widow-orphan;
@@ -122,6 +126,8 @@ p.MsoListParagraphCxSpMiddle, li.MsoListParagraphCxSpMiddle, div.MsoListParagrap
122
126
  margin-top:0cm;
123
127
  margin-right:0cm;
124
128
  margin-bottom:6.0pt;
129
+ text-align:justify;
130
+ text-justify:inter-ideograph;
125
131
  /* do not put in margin-left, it is specific to list level */
126
132
  mso-add-space:auto;
127
133
  mso-pagination:widow-orphan;
@@ -137,6 +143,8 @@ p.MsoListParagraphCxSpLast, li.MsoListParagraphCxSpLast, div.MsoListParagraphCxS
137
143
  margin-top:0cm;
138
144
  margin-right:0cm;
139
145
  margin-bottom:6.0pt;
146
+ text-align:justify;
147
+ text-justify:inter-ideograph;
140
148
  /* do not put in margin-left, it is specific to list level */
141
149
  mso-add-space:auto;
142
150
  mso-pagination:widow-orphan;
@@ -288,11 +296,15 @@ a:link, span.MsoHyperlink
288
296
  {mso-style-unhide:no;
289
297
  mso-style-parent:"";
290
298
  color:blue;
299
+ font-family:"Arial",sans-serif;
300
+ font-size:8pt;
291
301
  text-decoration:underline;
292
302
  text-underline:single;}
293
303
  a:visited, span.MsoHyperlinkFollowed
294
304
  {mso-style-unhide:no;
295
305
  mso-style-parent:"";
306
+ font-family:"Arial",sans-serif;
307
+ font-size:8pt;
296
308
  color:purple;
297
309
  text-decoration:underline;
298
310
  text-underline:single;}
@@ -369,7 +381,7 @@ p.MsoRMPane, li.MsoRMPane, div.MsoRMPane
369
381
  mso-fareast-theme-font:minor-fareast;
370
382
  mso-ansi-language:EN-GB;
371
383
  mso-fareast-language:EN-US;}
372
- div.figure
384
+ div.figure, p.figure
373
385
  {text-align: center;}
374
386
  div.pseudocode
375
387
  {
@@ -392,7 +404,7 @@ h1
392
404
  mso-style-next:Normal;
393
405
  margin-top:18.0pt;
394
406
  margin-right:0cm;
395
- margin-bottom:0cm;
407
+ margin-bottom:6pt;
396
408
  margin-left:39.7pt;
397
409
  margin-bottom:.0001pt;
398
410
  text-indent:-39.7pt;
@@ -421,8 +433,9 @@ margin-top:36.0pt;
421
433
  margin-right:0cm;
422
434
  margin-bottom:0cm;
423
435
  margin-left:0cm;
424
- margin-bottom:.0001pt;
436
+ margin-bottom:6pt;
425
437
  text-align:center;
438
+ text-indent:0cm;
426
439
  mso-pagination:widow-orphan lines-together;
427
440
  page-break-after:avoid;
428
441
  mso-outline-level:1;
@@ -447,7 +460,7 @@ p.h1Preface
447
460
  mso-style-next:Normal;
448
461
  margin-top:18.0pt;
449
462
  margin-right:0cm;
450
- margin-bottom:0cm;
463
+ margin-bottom:6pt;
451
464
  margin-left:39.7pt;
452
465
  margin-bottom:.0001pt;
453
466
  text-indent:-39.7pt;
@@ -476,9 +489,10 @@ h1.Annex
476
489
  mso-style-next:Normal;
477
490
  margin-top:36.0pt;
478
491
  margin-right:0cm;
479
- margin-bottom:0cm;
492
+ margin-bottom:6pt;
480
493
  margin-left:0cm;
481
494
  margin-bottom:.0001pt;
495
+ text-indent:0cm;
482
496
  text-align:center;
483
497
  mso-pagination:widow-orphan lines-together;
484
498
  page-break-after:avoid;
@@ -509,10 +523,10 @@ h1.Annex
509
523
  mso-style-next:Normal;
510
524
  margin-top:12.0pt;
511
525
  margin-right:0cm;
512
- margin-bottom:0cm;
526
+ margin-bottom:6pt;
513
527
  margin-left:39.7pt;
514
528
  margin-bottom:.0001pt;
515
- text-indent:-39.7pt;
529
+ text-indent:0cm;
516
530
  mso-pagination:widow-orphan lines-together;
517
531
  page-break-after:avoid;
518
532
  mso-outline-level:2;
@@ -539,7 +553,7 @@ h2
539
553
  mso-style-next:Normal;
540
554
  margin-top:12.0pt;
541
555
  margin-right:0cm;
542
- margin-bottom:0cm;
556
+ margin-bottom:6pt;
543
557
  margin-left:39.7pt;
544
558
  margin-bottom:.0001pt;
545
559
  text-indent:-39.7pt;
@@ -569,7 +583,7 @@ h3
569
583
  mso-style-next:Normal;
570
584
  margin-top:8.0pt;
571
585
  margin-right:0cm;
572
- margin-bottom:0cm;
586
+ margin-bottom:6pt;
573
587
  margin-left:39.7pt;
574
588
  margin-bottom:.0001pt;
575
589
  text-indent:-39.7pt;
@@ -597,7 +611,7 @@ h4
597
611
  mso-style-next:Normal;
598
612
  margin-top:8.0pt;
599
613
  margin-right:0cm;
600
- margin-bottom:0cm;
614
+ margin-bottom:6pt;
601
615
  margin-left:51.05pt;
602
616
  margin-bottom:.0001pt;
603
617
  text-indent:-51.05pt;
@@ -628,7 +642,7 @@ h5
628
642
  mso-style-next:Normal;
629
643
  margin-top:8.0pt;
630
644
  margin-right:0cm;
631
- margin-bottom:0cm;
645
+ margin-bottom:6pt;
632
646
  margin-left:51.05pt;
633
647
  margin-bottom:.0001pt;
634
648
  text-indent:-51.05pt;
@@ -659,7 +673,7 @@ h6
659
673
  mso-style-next:Normal;
660
674
  margin-top:8.0pt;
661
675
  margin-right:0cm;
662
- margin-bottom:0cm;
676
+ margin-bottom:6pt;
663
677
  margin-left:79.4pt;
664
678
  margin-bottom:.0001pt;
665
679
  text-indent:-79.4pt;
@@ -688,7 +702,7 @@ p.MsoHeading7, li.MsoHeading7, div.MsoHeading7
688
702
  mso-style-next:Normal;
689
703
  margin-top:8.0pt;
690
704
  margin-right:0cm;
691
- margin-bottom:0cm;
705
+ margin-bottom:6pt;
692
706
  margin-left:79.4pt;
693
707
  margin-bottom:.0001pt;
694
708
  text-indent:-79.4pt;
@@ -714,7 +728,7 @@ p.MsoHeading8, li.MsoHeading8, div.MsoHeading8
714
728
  mso-style-next:Normal;
715
729
  margin-top:8.0pt;
716
730
  margin-right:0cm;
717
- margin-bottom:0cm;
731
+ margin-bottom:6pt;
718
732
  margin-left:79.4pt;
719
733
  margin-bottom:.0001pt;
720
734
  text-indent:-79.4pt;
@@ -740,7 +754,7 @@ p.MsoHeading9, li.MsoHeading9, div.MsoHeading9
740
754
  mso-style-next:Βασικό;
741
755
  margin-top:8.0pt;
742
756
  margin-right:0cm;
743
- margin-bottom:0cm;
757
+ margin-bottom:6pt;
744
758
  margin-left:79.4pt;
745
759
  margin-bottom:.0001pt;
746
760
  text-indent:-79.4pt;
@@ -1517,7 +1531,7 @@ p.ListContLevel1, li.ListContLevel1, div.ListContLevel1
1517
1531
  margin-right:0cm;
1518
1532
  margin-bottom:6.0pt;
1519
1533
  mso-pagination:widow-orphan;
1520
- font-size:11.0pt;
1534
+ font-size:12.0pt;
1521
1535
  font-family:$bodyfont;
1522
1536
  mso-ansi-language:EN-AU;
1523
1537
  mso-fareast-language:EN-US;}
@@ -1528,7 +1542,7 @@ p.ListContLevel2, li.ListContLevel2, div.ListContLevel2
1528
1542
  margin-right:0cm;
1529
1543
  margin-bottom:6.0pt;
1530
1544
  mso-pagination:widow-orphan;
1531
- font-size:11.0pt;
1545
+ font-size:12.0pt;
1532
1546
  font-family:$bodyfont;
1533
1547
  mso-ansi-language:EN-AU;
1534
1548
  mso-fareast-language:EN-US;}
@@ -1539,7 +1553,7 @@ p.ListContLevel3, li.ListContLevel3, div.ListContLevel3
1539
1553
  margin-right:0cm;
1540
1554
  margin-bottom:6.0pt;
1541
1555
  mso-pagination:widow-orphan;
1542
- font-size:11.0pt;
1556
+ font-size:12.0pt;
1543
1557
  font-family:$bodyfont;
1544
1558
  mso-ansi-language:EN-AU;
1545
1559
  mso-fareast-language:EN-US;}
@@ -1550,7 +1564,7 @@ p.ListContLevel4, li.ListContLevel4, div.ListContLevel4
1550
1564
  margin-right:0cm;
1551
1565
  margin-bottom:6.0pt;
1552
1566
  mso-pagination:widow-orphan;
1553
- font-size:11.0pt;
1567
+ font-size:12.0pt;
1554
1568
  font-family:$bodyfont;
1555
1569
  mso-ansi-language:EN-AU;
1556
1570
  mso-fareast-language:EN-US;}
@@ -1561,7 +1575,7 @@ p.ListContLevel5, li.ListContLevel5, div.ListContLevel5
1561
1575
  margin-right:0cm;
1562
1576
  margin-bottom:6.0pt;
1563
1577
  mso-pagination:widow-orphan;
1564
- font-size:11.0pt;
1578
+ font-size:12.0pt;
1565
1579
  font-family:$bodyfont;
1566
1580
  mso-ansi-language:EN-AU;
1567
1581
  mso-fareast-language:EN-US;}
@@ -1572,7 +1586,7 @@ p.ListContLevel6, li.ListContLevel6, div.ListContLevel6
1572
1586
  margin-right:0cm;
1573
1587
  margin-bottom:6.0pt;
1574
1588
  mso-pagination:widow-orphan;
1575
- font-size:11.0pt;
1589
+ font-size:12.0pt;
1576
1590
  font-family:$bodyfont;
1577
1591
  mso-ansi-language:EN-AU;
1578
1592
  mso-fareast-language:EN-US;}
@@ -1583,7 +1597,7 @@ p.ListContLevel7, li.ListContLevel7, div.ListContLevel7
1583
1597
  margin-right:0cm;
1584
1598
  margin-bottom:6.0pt;
1585
1599
  mso-pagination:widow-orphan;
1586
- font-size:11.0pt;
1600
+ font-size:12.0pt;
1587
1601
  font-family:$bodyfont;
1588
1602
  mso-ansi-language:EN-AU;
1589
1603
  mso-fareast-language:EN-US;}
@@ -1594,7 +1608,7 @@ p.ListContLevel8, li.ListContLevel8, div.ListContLevel8
1594
1608
  margin-right:0cm;
1595
1609
  margin-bottom:6.0pt;
1596
1610
  mso-pagination:widow-orphan;
1597
- font-size:11.0pt;
1611
+ font-size:12.0pt;
1598
1612
  font-family:$bodyfont;
1599
1613
  mso-ansi-language:EN-AU;
1600
1614
  mso-fareast-language:EN-US;}
@@ -1605,7 +1619,7 @@ p.ListContLevel9, li.ListContLevel9, div.ListContLevel9
1605
1619
  margin-right:0cm;
1606
1620
  margin-bottom:6.0pt;
1607
1621
  mso-pagination:widow-orphan;
1608
- font-size:11.0pt;
1622
+ font-size:12.0pt;
1609
1623
  font-family:$bodyfont;
1610
1624
  mso-ansi-language:EN-AU;
1611
1625
  mso-fareast-language:EN-US;}
@@ -11,6 +11,7 @@ module IsoDoc
11
11
  class HtmlConvert < IsoDoc::HtmlConvert
12
12
  def initialize(options)
13
13
  @libdir = File.dirname(__FILE__)
14
+ @hierarchical_assets = options[:hierarchical_assets]
14
15
  super
15
16
  end
16
17
 
@@ -44,7 +44,7 @@ module IsoDoc
44
44
  end
45
45
 
46
46
  def unpublished(status)
47
- %w(in-force-prepublished).include? status.downcase
47
+ %w(in-force-prepublished draft).include? status.downcase
48
48
  end
49
49
 
50
50
  def version(isoxml, _out)
@@ -9,6 +9,7 @@ module IsoDoc
9
9
  class PdfConvert < IsoDoc::PdfConvert
10
10
  def initialize(options)
11
11
  @libdir = File.dirname(__FILE__)
12
+ @hierarchical_assets = options[:hierarchical_assets]
12
13
  super
13
14
  end
14
15
 
@@ -0,0 +1,96 @@
1
+ require "isodoc"
2
+ require_relative "metadata"
3
+ require "fileutils"
4
+
5
+ module IsoDoc
6
+ module ITU
7
+ module BaseConvert
8
+ def norm_ref(isoxml, out, num)
9
+ q = "//bibliography/references[title = 'References']"
10
+ f = isoxml.at(ns(q)) or return num
11
+ out.div do |div|
12
+ num = num + 1
13
+ clause_name(num, @normref_lbl, div, nil)
14
+ f.elements.reject do |e|
15
+ %w(reference title bibitem note).include? e.name
16
+ end.each { |e| parse(e, div) }
17
+ biblio_list(f, div, false)
18
+ end
19
+ num
20
+ end
21
+
22
+ def nonstd_bibitem(list, b, ordinal, biblio)
23
+ list.p **attr_code(iso_bibitem_entry_attrs(b, biblio)) do |ref|
24
+ ref << "[#{render_identifier(bibitem_ref_code(b))}]"
25
+ date_note_process(b, ref)
26
+ insert_tab(ref, 1)
27
+ reference_format(b, ref)
28
+ end
29
+ end
30
+
31
+ def std_bibitem_entry(list, b, ordinal, biblio)
32
+ nonstd_bibitem(list, b, ordinal, biblio)
33
+ end
34
+
35
+ def reference_format(b, r)
36
+ reference_format_start(b, r)
37
+ reference_format_title(b, r)
38
+ end
39
+
40
+ def titlecase(s)
41
+ s.gsub(/ |\_|\-/, " ").split(/ /).map(&:capitalize).join(" ")
42
+ end
43
+
44
+ def bibitem_ref_code(b)
45
+ id = b.at(ns("./docidentifier[@type = 'ITU']"))
46
+ id ||= b.at(ns("./docidentifier[not(@type = 'DOI' or @type = 'metanorma' "\
47
+ "or @type = 'ISSN' or @type = 'ISBN')]"))
48
+ id ||= b.at(ns("./docidentifier[not(@type = 'DOI' or @type = 'ISSN' or "\
49
+ "@type = 'ISBN')]"))
50
+ id ||= b.at(ns("./docidentifier"))
51
+ return id if id
52
+ id = Nokogiri::XML::Node.new("docidentifier", b.document)
53
+ id.text = "(NO ID)"
54
+ id
55
+ end
56
+
57
+ def multi_bibitem_ref_code(b)
58
+ id = b.xpath(ns("./docidentifier[not(@type = 'DOI' or @type = "\
59
+ "'metanorma' or @type = 'ISSN' or @type = 'ISBN')]"))
60
+ id.empty? and id = b.xpath(ns("./docidentifier[not(@type = 'DOI' or "\
61
+ "@type = 'ISSN' or @type = 'ISBN')]"))
62
+ id.empty? and id = b.xpath(ns("./docidentifier"))
63
+ return ["(NO ID)"] if id.empty?
64
+ id.sort_by { |i| i["type"] == "ITU" ? 0 : 1 }
65
+ end
66
+
67
+ def render_identifiers(ids)
68
+ ids.map do |id|
69
+ (id["type"] == "ITU" ? titlecase(id.parent&.at(ns("./ext/doctype"))&.text ||
70
+ "recommendation") + " " : "") +
71
+ docid_prefix(id["type"], id.text.sub(/^\[/, "").sub(/\]$/, ""))
72
+ end.join(" | ")
73
+ end
74
+
75
+ def reference_format_start(b, r)
76
+ id = multi_bibitem_ref_code(b)
77
+ r << render_identifiers(id)
78
+ date = b.at(ns("./date[@type = 'published']")) and
79
+ r << " (#{date.text.sub(/-.*$/, '')})"
80
+ r << ", "
81
+ end
82
+
83
+ def reference_format_title(b, r)
84
+ if ftitle = b.at(ns("./formattedref"))
85
+ ftitle&.children&.each { |n| parse(n, r) }
86
+ /\.$/.match(ftitle&.text) or r << "."
87
+ elsif title = iso_title(b)
88
+ r.i do |i|
89
+ title&.children&.each { |n| parse(n, i) }
90
+ end
91
+ /\.$/.match(title&.text) or r << "."
92
+ end
93
+ end
94
+ end
95
+ end
96
+ end
@@ -10,6 +10,7 @@ module IsoDoc
10
10
  class WordConvert < IsoDoc::WordConvert
11
11
  def initialize(options)
12
12
  @libdir = File.dirname(__FILE__)
13
+ @hierarchical_assets = options[:hierarchical_assets]
13
14
  super
14
15
  end
15
16
 
@@ -21,7 +22,7 @@ module IsoDoc
21
22
  make_body3(body, docxml)
22
23
  end
23
24
  end
24
-
25
+
25
26
  def make_body2(body, docxml)
26
27
  body.div **{ class: "WordSection2" } do |div2|
27
28
  info docxml, div2
@@ -59,17 +60,43 @@ module IsoDoc
59
60
  end
60
61
 
61
62
  def word_term_cleanup(docxml)
62
- docxml.xpath("//p[@class = 'TermNum']").each do |t|
63
- end
63
+ docxml.xpath("//p[@class = 'TermNum']").each do |t|
64
+ end
64
65
  end
65
66
 
66
67
  def word_cleanup(docxml)
68
+ word_footnote_cleanup(docxml)
69
+ word_title_cleanup(docxml)
67
70
  word_preface_cleanup(docxml)
68
71
  word_term_cleanup(docxml)
72
+ word_history_cleanup(docxml)
69
73
  super
70
74
  docxml
71
75
  end
72
76
 
77
+ def word_footnote_cleanup(docxml)
78
+ docxml.xpath("//aside").each do |a|
79
+ a.first_element_child.children.first.previous =
80
+ '<span style="mso-tab-count:1"/>'
81
+ end
82
+ end
83
+
84
+ def word_title_cleanup(docxml)
85
+ docxml.xpath("p[@class = 'h1Preface'] | p[@class = 'h2Annex'] | "\
86
+ "//h1 | //h2 | //h3 | //h4 | //h5 | //h6 | "\
87
+ "//p[@class = 'annex_obligation']").each do |h|
88
+ h&.next_element&.name == "p" or next
89
+ h.next_element["class"] ||= "Normalaftertitle"
90
+ end
91
+ end
92
+
93
+ def word_history_cleanup(docxml)
94
+ docxml.xpath("//div[@id='_history']//table").each do |t|
95
+ t["class"] = "MsoNormalTable"
96
+ t.xpath(".//td").each { |td| td["style"] = nil }
97
+ end
98
+ end
99
+
73
100
  def word_preface(docxml)
74
101
  super
75
102
  abstractbox = docxml.at("//div[@id='abstractbox']")
@@ -84,21 +111,22 @@ module IsoDoc
84
111
  end
85
112
 
86
113
  def formula_parse1(node, out)
87
- out.div **attr_code(id: node["id"], class: "formula") do |div|
88
- div.p **attr_code(class: "formula") do |p|
89
- insert_tab(div, 2)
90
- parse(node.at(ns("./stem")), div)
91
- lbl = anchor(node['id'], :label, false)
92
- unless lbl.nil?
93
- insert_tab(div, 1)
94
- div << "(#{lbl})"
114
+ out.div **attr_code(id: node["id"], class: "formula") do |div|
115
+ div.p **attr_code(class: "formula") do |p|
116
+ insert_tab(div, 2)
117
+ parse(node.at(ns("./stem")), div)
118
+ lbl = anchor(node['id'], :label, false)
119
+ unless lbl.nil?
120
+ insert_tab(div, 1)
121
+ div << "(#{lbl})"
122
+ end
95
123
  end
96
124
  end
97
125
  end
98
- end
99
126
 
100
127
  def convert1(docxml, filename, dir)
101
- FileUtils.cp html_doc_path('itu-document-comb.png'), File.join(@localdir, "itu-document-comb.png")
128
+ FileUtils.cp html_doc_path('itu-document-comb.png'),
129
+ File.join(@localdir, "itu-document-comb.png")
102
130
  FileUtils.cp html_doc_path('logo.png'), File.join(@localdir, "logo.png")
103
131
  @files_to_delete << File.join(@localdir, "itu-document-comb.png")
104
132
  @files_to_delete << File.join(@localdir, "logo.png")
@@ -106,23 +134,21 @@ module IsoDoc
106
134
  end
107
135
 
108
136
  def default_fonts(options)
109
- {
110
- bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' : '"Times New Roman",serif'),
111
- headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' : '"Times New Roman",serif'),
112
- monospacefont: '"Courier New",monospace'
113
- }
137
+ { bodyfont: (options[:script] == "Hans" ? '"SimSun",serif' :
138
+ '"Times New Roman",serif'),
139
+ headerfont: (options[:script] == "Hans" ? '"SimHei",sans-serif' :
140
+ '"Times New Roman",serif'),
141
+ monospacefont: '"Courier New",monospace' }
114
142
  end
115
143
 
116
144
  def default_file_locations(options)
117
- {
118
- wordstylesheet: html_doc_path("wordstyle.scss"),
145
+ { wordstylesheet: html_doc_path("wordstyle.scss"),
119
146
  standardstylesheet: html_doc_path("itu.scss"),
120
147
  header: html_doc_path("header.html"),
121
148
  wordcoverpage: html_doc_path("word_itu_titlepage.html"),
122
149
  wordintropage: html_doc_path("word_itu_intro.html"),
123
150
  ulstyle: "l3",
124
- olstyle: "l2",
125
- }
151
+ olstyle: "l2", }
126
152
  end
127
153
 
128
154
  def word_example_cleanup(docxml)
@@ -132,6 +158,10 @@ module IsoDoc
132
158
  end
133
159
  end
134
160
 
161
+ def make_tr_attr(td, row, totalrows, header)
162
+ super.merge(valign: "top")
163
+ end
164
+
135
165
  include BaseConvert
136
166
  end
137
167
  end
@@ -0,0 +1,117 @@
1
+ require "isodoc"
2
+ require_relative "metadata"
3
+ require "fileutils"
4
+
5
+ module IsoDoc
6
+ module ITU
7
+ module BaseConvert
8
+ def annex_name_lbl(clause, num)
9
+ lbl = clause["obligation"] == "informative" ? @appendix_lbl : @annex_lbl
10
+ l10n("<b>#{lbl} #{num}</b>")
11
+ end
12
+
13
+ def annex_names(clause, num)
14
+ lbl = clause["obligation"] == "informative" ? @appendix_lbl : @annex_lbl
15
+ @anchors[clause["id"]] =
16
+ { label: annex_name_lbl(clause, num), type: "clause",
17
+ xref: "#{lbl} #{num}", level: 1 }
18
+ clause.xpath(ns("./clause | ./references | ./terms | ./definitions")).
19
+ each_with_index do |c, i|
20
+ annex_names1(c, "#{num}.#{i + 1}", 2)
21
+ end
22
+ hierarchical_asset_names(clause, num)
23
+ end
24
+
25
+ def back_anchor_names(docxml)
26
+ super
27
+ if annexid = docxml&.at(ns("//bibdata/ext/structuredidentifier/annexid"))&.text
28
+ docxml.xpath(ns("//annex")).each { |c| annex_names(c, annexid) }
29
+ else
30
+ docxml.xpath(ns("//annex[@obligation = 'informative']")).each_with_index do |c, i|
31
+ annex_names(c, RomanNumerals.to_roman(i + 1))
32
+ end
33
+ docxml.xpath(ns("//annex[not(@obligation = 'informative')]")).each_with_index do |c, i|
34
+ annex_names(c, (65 + i + (i > 7 ? 1 : 0)).chr.to_s)
35
+ end
36
+ end
37
+ end
38
+
39
+ def annex_names1(clause, num, level)
40
+ @anchors[clause["id"]] =
41
+ { label: num, xref: "#{@labels["annex_subclause"]} #{num}",
42
+ level: level, type: "clause" }
43
+ clause.xpath(ns("./clause | ./references | ./terms | ./definitions")).each_with_index do |c, i|
44
+ annex_names1(c, "#{num}.#{i + 1}", level + 1)
45
+ end
46
+ end
47
+
48
+ def initial_anchor_names(d)
49
+ d.xpath("//xmlns:preface/child::*").each do |c|
50
+ preface_names(c)
51
+ end
52
+ @hierarchical_assets ?
53
+ hierarchical_asset_names(d.xpath("//xmlns:preface/child::*"), "Preface") :
54
+ sequential_asset_names(d.xpath("//xmlns:preface/child::*"))
55
+ n = section_names(d.at(ns("//clause[title = 'Scope']")), 0, 1)
56
+ n = section_names(d.at(ns("//bibliography/clause[title = 'References'] | "\
57
+ "//bibliography/references[title = 'References']")), n, 1)
58
+ n = section_names(d.at(ns("//sections/terms | "\
59
+ "//sections/clause[descendant::terms]")), n, 1)
60
+ n = section_names(d.at(ns("//sections/definitions")), n, 1)
61
+ clause_names(d, n)
62
+ middle_section_asset_names(d)
63
+ termnote_anchor_names(d)
64
+ termexample_anchor_names(d)
65
+ end
66
+
67
+ def hiersep
68
+ "-"
69
+ end
70
+
71
+ def middle_section_asset_names(d)
72
+ return super unless @hierarchical_assets
73
+ middle_sections = "//clause[title = 'Scope'] | "\
74
+ "//foreword | //introduction | "\
75
+ "//references[title = 'References' or title = 'references'] | "\
76
+ "//sections/terms | "\
77
+ "//sections/definitions | //clause[parent::sections]"
78
+ d.xpath(ns(middle_sections)).each do |c|
79
+ hierarchical_asset_names(c, @anchors[c["id"]][:label])
80
+ end
81
+ end
82
+
83
+ def sequential_figure_names(clause)
84
+ c = IsoDoc::Function::XrefGen::Counter.new
85
+ j = 0
86
+ clause.xpath(ns(".//figure[not(@type = 'pseudocode')]")).each do |t|
87
+ if t.parent.name == "figure" then j += 1
88
+ else
89
+ j = 0
90
+ c.increment(t)
91
+ end
92
+ label = c.print + (j.zero? ? "" : "-#{(97 + j).chr.to_s}")
93
+ next if t["id"].nil? || t["id"].empty?
94
+ @anchors[t["id"]] =
95
+ anchor_struct(label, nil, @figure_lbl, "figure", t["unnumbered"])
96
+ end
97
+ end
98
+
99
+ def hierarchical_figure_names(clause, num)
100
+ c = IsoDoc::Function::XrefGen::Counter.new
101
+ j = 0
102
+ clause.xpath(ns(".//figure[not(@type = 'pseudocode')]")).each do |t|
103
+ if t.parent.name == "figure" then j += 1
104
+ else
105
+ j = 0
106
+ c.increment(t)
107
+ end
108
+ label = "#{num}#{hiersep}#{c.print}" +
109
+ (j.zero? ? "" : "#{hierfigsep}#{(97 + j).chr.to_s}")
110
+ next if t["id"].nil? || t["id"].empty?
111
+ @anchors[t["id"]] = anchor_struct(label, nil, @figure_lbl, "figure",
112
+ t["unnumbered"])
113
+ end
114
+ end
115
+ end
116
+ end
117
+ end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module ITU
3
- VERSION = "0.2.7"
3
+ VERSION = "0.2.8"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: metanorma-itu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ribose Inc.
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2019-10-20 00:00:00.000000000 Z
11
+ date: 2019-10-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
@@ -288,7 +288,9 @@ files:
288
288
  - lib/isodoc/itu/i18n-en.yaml
289
289
  - lib/isodoc/itu/metadata.rb
290
290
  - lib/isodoc/itu/pdf_convert.rb
291
+ - lib/isodoc/itu/ref.rb
291
292
  - lib/isodoc/itu/word_convert.rb
293
+ - lib/isodoc/itu/xref.rb
292
294
  - lib/metanorma-itu.rb
293
295
  - lib/metanorma/itu.rb
294
296
  - lib/metanorma/itu/processor.rb