metanorma-itu 1.0.14 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (37) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +8 -0
  3. data/.github/workflows/ubuntu.yml +10 -0
  4. data/.github/workflows/windows.yml +8 -0
  5. data/lib/asciidoctor/itu/biblio.rng +36 -6
  6. data/lib/asciidoctor/itu/cleanup.rb +15 -8
  7. data/lib/asciidoctor/itu/converter.rb +18 -27
  8. data/lib/asciidoctor/itu/front.rb +25 -0
  9. data/lib/asciidoctor/itu/isodoc.rng +450 -4
  10. data/lib/asciidoctor/itu/reqt.rng +23 -0
  11. data/lib/isodoc/itu.rb +1 -0
  12. data/lib/isodoc/itu/base_convert.rb +71 -17
  13. data/lib/isodoc/itu/html/_coverpage.scss +7 -3
  14. data/lib/isodoc/itu/html/html_itu_titlepage.html +4 -5
  15. data/lib/isodoc/itu/html/htmlstyle.scss +9 -5
  16. data/lib/isodoc/itu/html/itu.scss +27 -0
  17. data/lib/isodoc/itu/html/scripts.html +10 -7
  18. data/lib/isodoc/itu/html/word_itu_intro.html +11 -1
  19. data/lib/isodoc/itu/html/word_itu_titlepage.html +1 -4
  20. data/lib/isodoc/itu/html/wordstyle.scss +6 -5
  21. data/lib/isodoc/itu/html_convert.rb +3 -3
  22. data/lib/isodoc/itu/i18n-en.yaml +2 -1
  23. data/lib/isodoc/itu/itu.recommendation-annex.xsl +4358 -0
  24. data/lib/isodoc/itu/itu.recommendation.xsl +1354 -447
  25. data/lib/isodoc/itu/itu.resolution.xsl +1354 -447
  26. data/lib/isodoc/itu/metadata.rb +16 -6
  27. data/lib/isodoc/itu/pdf_convert.rb +6 -12
  28. data/lib/isodoc/itu/presentation_xml_convert.rb +10 -0
  29. data/lib/isodoc/itu/ref.rb +45 -23
  30. data/lib/isodoc/itu/terms.rb +9 -22
  31. data/lib/isodoc/itu/word_convert.rb +10 -8
  32. data/lib/isodoc/itu/xref.rb +56 -21
  33. data/lib/metanorma/itu/processor.rb +12 -6
  34. data/lib/metanorma/itu/version.rb +1 -1
  35. data/metanorma-itu.gemspec +2 -2
  36. metadata +12 -12
  37. data/lib/isodoc/itu/html/scripts.pdf.html +0 -72
@@ -30,9 +30,22 @@
30
30
  <data type="boolean"/>
31
31
  </attribute>
32
32
  </optional>
33
+ <optional>
34
+ <attribute name="number"/>
35
+ </optional>
33
36
  <optional>
34
37
  <attribute name="subsequence"/>
35
38
  </optional>
39
+ <optional>
40
+ <attribute name="keep-with-next">
41
+ <data type="boolean"/>
42
+ </attribute>
43
+ </optional>
44
+ <optional>
45
+ <attribute name="keep-lines-together">
46
+ <data type="boolean"/>
47
+ </attribute>
48
+ </optional>
36
49
  <attribute name="id">
37
50
  <data type="ID"/>
38
51
  </attribute>
@@ -141,6 +154,16 @@
141
154
  <data type="boolean"/>
142
155
  </attribute>
143
156
  </optional>
157
+ <optional>
158
+ <attribute name="keep-with-next">
159
+ <data type="boolean"/>
160
+ </attribute>
161
+ </optional>
162
+ <optional>
163
+ <attribute name="keep-lines-together">
164
+ <data type="boolean"/>
165
+ </attribute>
166
+ </optional>
144
167
  <oneOrMore>
145
168
  <ref name="BasicBlock"/>
146
169
  </oneOrMore>
@@ -3,6 +3,7 @@ require "isodoc/itu/base_convert"
3
3
  require "isodoc/itu/html_convert"
4
4
  require "isodoc/itu/pdf_convert"
5
5
  require "isodoc/itu/word_convert"
6
+ require "isodoc/itu/presentation_xml_convert"
6
7
 
7
8
  module IsoDoc
8
9
  module ITU
@@ -22,6 +22,11 @@ module IsoDoc
22
22
  @meta = Metadata.new(lang, script, labels)
23
23
  end
24
24
 
25
+ def xref_init(lang, script, klass, labels, options)
26
+ @xrefs = Xref.new(lang, script, klass, labels,
27
+ options.merge(hierarchical_assets: @hierarchical_assets))
28
+ end
29
+
25
30
  FRONT_CLAUSE = "//*[parent::preface]"\
26
31
  "[not(local-name() = 'abstract')]".freeze
27
32
 
@@ -37,18 +42,25 @@ module IsoDoc
37
42
  end
38
43
  end
39
44
 
45
+ def bracket_opt(b)
46
+ return b if b.nil?
47
+ return b if /^\[.+\]$/.match(b)
48
+ "[#{b}]"
49
+ end
50
+
40
51
  def clausedelim
41
52
  ""
42
53
  end
43
54
 
44
55
  def note_label(node)
45
- n = get_anchors[node["id"]]
46
- return "#{@note_lbl} &ndash; " if n.nil? || n[:label].nil? || n[:label].empty?
56
+ n = @xrefs.get[node["id"]]
57
+ (n.nil? || n[:label].nil? || n[:label].empty?) and
58
+ return "#{@note_lbl} &ndash; "
47
59
  l10n("#{@note_lbl} #{n[:label]} &ndash; ")
48
60
  end
49
61
 
50
62
  def prefix_container(container, linkend, _target)
51
- l10n("#{linkend} #{@labels["in"]} #{anchor(container, :xref)}")
63
+ l10n("#{linkend} #{@labels["in"]} #{@xrefs.anchor(container, :xref)}")
52
64
  end
53
65
 
54
66
  def ol_depth(node)
@@ -64,8 +76,9 @@ module IsoDoc
64
76
  end
65
77
 
66
78
  def annex_name(annex, name, div)
67
- div.h1 **{ class: "Annex" } do |t|
68
- t << "#{anchor(annex['id'], :label)} "
79
+ r_a = @meta.get[:doctype_original] == "recommendation-annex"
80
+ div.h1 **{ class: r_a ? "RecommendationAnnex" : "Annex" } do |t|
81
+ t << "#{@xrefs.anchor(annex['id'], :label)} "
69
82
  t.br
70
83
  t.br
71
84
  t.b do |b|
@@ -76,14 +89,28 @@ module IsoDoc
76
89
  end
77
90
 
78
91
  def annex_obligation_subtitle(annex, div)
79
- type = annex&.document&.root&.at("//bibdata/ext/doctype")&.text ||
80
- "recommendation"
81
- type = type.split(" ").map {|w| w.capitalize }.join(" ")
82
92
  info = annex["obligation"] == "informative"
83
93
  div.p **{class: "annex_obligation" } do |p|
84
- p << (info ? @inform_annex_lbl : @norm_annex_lbl).sub(/%/, type)
94
+ p << (info ? @inform_annex_lbl : @norm_annex_lbl).
95
+ sub(/%/, @meta.get[:doctype] || "")
96
+ end
97
+ end
98
+
99
+ def annex(isoxml, out)
100
+ isoxml.xpath(ns("//annex")).each do |c|
101
+ @meta.get[:doctype_original] == "recommendation-annex" or
102
+ page_break(out)
103
+ out.div **attr_code(id: c["id"], class: "Section3") do |s|
104
+ annex_name(c, nil, s) unless c.at(ns("./title"))
105
+ c.elements.each do |c1|
106
+ if c1.name == "title" then annex_name(c, c1, s)
107
+ else
108
+ parse(c1, s)
109
+ end
110
+ end
85
111
  end
86
112
  end
113
+ end
87
114
 
88
115
  def i18n_init(lang, script)
89
116
  super
@@ -96,6 +123,16 @@ module IsoDoc
96
123
  def cleanup(docxml)
97
124
  super
98
125
  term_cleanup(docxml)
126
+ refs_cleanup(docxml)
127
+ title_cleanup(docxml)
128
+ end
129
+
130
+ def title_cleanup(docxml)
131
+ docxml.xpath("//h1[@class = 'RecommendationAnnex']").each do |h|
132
+ h.name = "p"
133
+ h["class"] = "h1Annex"
134
+ end
135
+ docxml
99
136
  end
100
137
 
101
138
  def term_cleanup(docxml)
@@ -113,36 +150,53 @@ module IsoDoc
113
150
  docxml
114
151
  end
115
152
 
153
+ def refs_cleanup(docxml)
154
+ docxml.xpath("//tx[following-sibling::tx]").each do |tx|
155
+ tx << tx.next_element.remove.children
156
+ end
157
+ docxml.xpath("//tx").each do |tx|
158
+ tx.name = "td"
159
+ tx["colspan"] = "2"
160
+ tx.wrap("<tr></tr>")
161
+ end
162
+ docxml
163
+ end
164
+
116
165
  def info(isoxml, out)
117
- @meta.keywords isoxml, out
118
166
  @meta.ip_notice_received isoxml, out
119
167
  super
120
168
  end
121
169
 
122
170
  def get_eref_linkend(node)
123
- link = "[#{anchor_linkend(node, docid_l10n(node["target"] || node["citeas"]))}]"
124
- link += eref_localities(node.xpath(ns("./locality | ./localityStack")), link)
125
- contents = node.children.select { |c| !%w{locality localityStack}.include? c.name }
126
- return link if contents.nil? || contents.empty?
171
+ l = anchor_linkend(node, docid_l10n(node["target"] || node["citeas"]))
172
+ l && !/^\[.*\]$/.match(l) and l = "[#{l}]"
173
+ l += eref_localities(node.xpath(ns("./locality | ./localityStack")), l)
174
+ contents = node.children.select do |c|
175
+ !%w{locality localityStack}.include? c.name
176
+ end
177
+ return l if contents.nil? || contents.empty?
127
178
  Nokogiri::XML::NodeSet.new(node.document, contents).to_xml
128
179
  end
129
180
 
130
181
  def eref_parse(node, out)
131
182
  linkend = get_eref_linkend(node)
183
+ href = eref_target(node)
132
184
  if node["type"] == "footnote"
133
185
  out.sup do |s|
134
- s.a(**{ "href": "#" + node["bibitemid"] }) { |l| l << linkend }
186
+ s.a(**{ "href": href }) { |l| l << linkend }
135
187
  end
136
188
  else
137
- out.a(**{ "href": "#" + node["bibitemid"] }) { |l| l << linkend }
189
+ out.a(**{ "href": href }) { |l| l << linkend }
138
190
  end
139
191
  end
140
192
 
141
193
  def middle_title(out)
142
194
  out.p(**{ class: "zzSTDTitle1" }) do |p|
143
- id = @meta.get[:docnumber] and p << "Recommendation #{id}"
195
+ id = @meta.get[:docnumber] and p << "#{@meta.get[:doctype]} #{id}"
144
196
  end
145
197
  out.p(**{ class: "zzSTDTitle2" }) { |p| p << @meta.get[:doctitle] }
198
+ s = @meta.get[:docsubtitle] and
199
+ out.p(**{ class: "zzSTDTitle3" }) { |p| p << s }
146
200
  end
147
201
 
148
202
  def add_parse(node, out)
@@ -62,14 +62,18 @@
62
62
  @include coverpageStageBlock();
63
63
  }
64
64
 
65
- span.doc-title {
65
+ span.doc-title, span.doc-annextitle {
66
66
  font-size: 26px;
67
67
  font-weight: 800;
68
68
  margin-top: 20px;
69
- border-top: 2px solid #DA1D52;
70
69
  margin-right: 42px;
71
70
  }
72
71
 
72
+ span.doc-title {
73
+ border-top: 2px solid #DA1D52;
74
+ }
75
+
76
+
73
77
  .doc-footer {
74
78
  margin-top: 100px;
75
79
 
@@ -107,7 +111,7 @@ span.doc-title {
107
111
  padding: 0 3em 0 6em;
108
112
  }
109
113
 
110
- .zzSTDTitle1, .zzSTDTitle2, .MsoCommentText {
114
+ .zzSTDTitle1, .zzSTDTitle2, .zzSTDTitle3, .MsoCommentText {
111
115
  display: none;
112
116
  }
113
117
 
@@ -30,9 +30,6 @@
30
30
  {% if edition %} <div> Revision {{ edition }}</div> {% endif %}
31
31
  <div> {{ draftinfo }}</div>
32
32
  </div>
33
- {% if annexid %}
34
- <div class="doc-identifier">{{annexid}}</div>
35
- {% endif %}
36
33
  <div class="publication-month">
37
34
  ({{ pubdate_monthyear }})
38
35
  </div>
@@ -53,9 +50,9 @@
53
50
  <span class="doc-title">{{ doctitle }}</span>
54
51
  {% if docsubtitle %}
55
52
  <br/><span class="doc-subtitle">{{ docsubtitle }}</span>
56
- {% if annextitle %}
57
- <br/><span class="doctitle">{{ annextitle }}</span>
58
53
  {% endif %}
54
+ {% if annextitle %}
55
+ <br/><span class="doc-annextitle">{{ annexid }}{% if annexid and annextitle %}: {% endif %}{{ annextitle }}</span>
59
56
  {% endif %}
60
57
  </div>
61
58
 
@@ -98,9 +95,11 @@
98
95
  </div>
99
96
  -->
100
97
 
98
+ {% if unpublished %}
101
99
  <div class="coverpage-warning">
102
100
  <div id="draft-warning-destination"/>
103
101
  </div>
102
+ {% endif %}
104
103
 
105
104
  <div class="info-section">
106
105
  <div id="boilerplate-copyright-destination"/>
@@ -185,7 +185,7 @@ pre {
185
185
  }
186
186
 
187
187
  #ITU-logo {
188
- width: 200px;
188
+ width: 150px;
189
189
  height: auto;
190
190
  margin-left: auto;
191
191
  }
@@ -209,20 +209,20 @@ svg {
209
209
 
210
210
  /* Headings */
211
211
 
212
- h1, h2, h3, h4, h5, h6 {
212
+ h1, h2, h3, h4, h5, h6, .h1Annex {
213
213
  font-weight: 400;
214
214
  margin-top: 1.6em;
215
215
  margin-bottom: 0.3em;
216
216
  }
217
217
 
218
- h1, h2, h3, h4 {
218
+ h1, h2, h3, h4, .h1Annex {
219
219
  @media print {
220
220
  page-break-after: avoid;
221
221
  margin-top: 1.2em;
222
222
  }
223
223
  }
224
224
 
225
- h1 {
225
+ h1, .h1Annex {
226
226
  font-size: 1.4em;
227
227
  text-transform: uppercase;
228
228
  margin-top: 2em;
@@ -419,7 +419,11 @@ p.Biblio, p.NormRef {
419
419
 
420
420
  /* Tables */
421
421
 
422
- table {
422
+ table.biblio td {
423
+ padding-right: 0.5em;
424
+ }
425
+
426
+ table:not(.biblio) {
423
427
  @include table($border: none);
424
428
 
425
429
  &, th, td {
@@ -620,6 +620,29 @@ p.zzSTDTitle2, li.zzSTDTitle2, div.zzSTDTitle2
620
620
  font-weight:bold;
621
621
  text-align:center;
622
622
  mso-bidi-font-weight:normal;}
623
+ p.zzSTDTitle3, li.zzSTDTitle3, div.zzSTDTitle3
624
+ {mso-style-name:zzSTDTitle;
625
+ mso-style-noshow:yes;
626
+ mso-style-unhide:no;
627
+ mso-style-next:Normal;
628
+ margin-top:0pt;
629
+ margin-right:0cm;
630
+ margin-bottom:18.0pt;
631
+ margin-left:0cm;
632
+ line-height:17.5pt;
633
+ mso-line-height-rule:exactly;
634
+ mso-pagination:widow-orphan;
635
+ mso-hyphenate:none;
636
+ tab-stops:20.15pt;
637
+ font-size:14.0pt;
638
+ mso-bidi-font-size:11.0pt;
639
+ font-family:$headerfont;
640
+ mso-fareast-font-family:$headerfont;
641
+ mso-bidi-font-family:$headerfont;
642
+ mso-ansi-language:EN-GB;
643
+ font-style:italic;
644
+ text-align:center;
645
+ mso-bidi-font-weight:normal;}
623
646
  p.Quote, li.Quote, div.Quote
624
647
  {mso-style-priority:99;
625
648
  margin-top:0cm;
@@ -1069,3 +1092,7 @@ table.dl
1069
1092
  margin-bottom:11.0pt;
1070
1093
  margin-left:0cm;}
1071
1094
 
1095
+ table.biblio td {
1096
+ margin-bottom: 6pt;
1097
+ }
1098
+
@@ -42,13 +42,16 @@ $('#toggle').on('click', function(){
42
42
  </script>
43
43
 
44
44
  <script>
45
- /**
46
- * AnchorJS - v4.1.0 - 2017-09-20
47
- * https://github.com/bryanbraun/anchorjs
48
- * Copyright (c) 2017 Bryan Braun; Licensed MIT
49
- */
50
- !function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function e(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64}function t(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}function i(){if(null===document.head.querySelector("style.anchorjs")){var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"], style'))?document.head.appendChild(e):document.head.insertBefore(e,A),e.sheet.insertRule(" .anchorjs-link { opacity: 0; text-decoration: none; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }",e.sheet.cssRules.length),e.sheet.insertRule(" *:hover > .anchorjs-link, .anchorjs-link:focus { opacity: 1; }",e.sheet.cssRules.length),e.sheet.insertRule(" [data-anchorjs-icon]::after { content: attr(data-anchorjs-icon); }",e.sheet.cssRules.length),e.sheet.insertRule(' @font-face { font-family: "anchorjs-icons"; src: url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype"); }',e.sheet.cssRules.length)}}this.options=A||{},this.elements=[],e(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var n,o,s,a,r,c,h,l,u,d,f,p=[];if(e(this.options),"touch"===(f=this.options.visible)&&(f=this.isTouchDevice()?"always":"hover"),A||(A="h2, h3, h4, h5, h6"),0===(n=t(A)).length)return this;for(i(),o=document.querySelectorAll("[id]"),s=[].map.call(o,function(A){return A.id}),r=0;r<n.length;r++)if(this.hasAnchorJSLink(n[r]))p.push(r);else{if(n[r].hasAttribute("id"))a=n[r].getAttribute("id");else if(n[r].hasAttribute("data-anchor-id"))a=n[r].getAttribute("data-anchor-id");else{u=l=this.urlify(n[r].textContent),h=0;do{void 0!==c&&(u=l+"-"+h),c=s.indexOf(u),h+=1}while(-1!==c);c=void 0,s.push(u),n[r].setAttribute("id",u),a=u}a.replace(/-/g," "),(d=document.createElement("a")).className="anchorjs-link "+this.options.class,d.href="#"+a,d.setAttribute("aria-label",this.options.ariaLabel),d.setAttribute("data-anchorjs-icon",this.options.icon),"always"===f&&(d.style.opacity="1"),""===this.options.icon&&(d.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(d.style.lineHeight="inherit")),"left"===this.options.placement?(d.style.position="absolute",d.style.marginLeft="-1em",d.style.paddingRight="0.5em",n[r].insertBefore(d,n[r].firstChild)):(d.style.paddingLeft="0.375em",n[r].appendChild(d))}for(r=0;r<p.length;r++)n.splice(p[r]-r,1);return this.elements=this.elements.concat(n),this},this.remove=function(A){for(var e,i,n=t(A),o=0;o<n.length;o++)(i=n[o].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(n[o]))&&this.elements.splice(e,1),n[o].removeChild(i));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){var t=/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\]/g;return this.options.truncate||e(this.options),A.trim().replace(/\'/gi,"").replace(t,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&(" "+A.firstChild.className+" ").indexOf(" anchorjs-link ")>-1,t=A.lastChild&&(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ")>-1;return e||t||!1}}}); </script>
51
-
45
+ // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
46
+ //
47
+ // AnchorJS - v4.2.2 - 2020-04-20
48
+ // https://www.bryanbraun.com/anchorjs/
49
+ // Copyright (c) 2020 Bryan Braun; Licensed MIT
50
+ //
51
+ // @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&dn=expat.txt Expat
52
+ !function(A,e){"use strict";"function"==typeof define&&define.amd?define([],e):"object"==typeof module&&module.exports?module.exports=e():(A.AnchorJS=e(),A.anchors=new A.AnchorJS)}(this,function(){"use strict";return function(A){function f(A){A.icon=A.hasOwnProperty("icon")?A.icon:"",A.visible=A.hasOwnProperty("visible")?A.visible:"hover",A.placement=A.hasOwnProperty("placement")?A.placement:"right",A.ariaLabel=A.hasOwnProperty("ariaLabel")?A.ariaLabel:"Anchor",A.class=A.hasOwnProperty("class")?A.class:"",A.base=A.hasOwnProperty("base")?A.base:"",A.truncate=A.hasOwnProperty("truncate")?Math.floor(A.truncate):64,A.titleText=A.hasOwnProperty("titleText")?A.titleText:""}function p(A){var e;if("string"==typeof A||A instanceof String)e=[].slice.call(document.querySelectorAll(A));else{if(!(Array.isArray(A)||A instanceof NodeList))throw new Error("The selector provided to AnchorJS was invalid.");e=[].slice.call(A)}return e}this.options=A||{},this.elements=[],f(this.options),this.isTouchDevice=function(){return!!("ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch)},this.add=function(A){var e,t,i,n,o,s,a,r,c,h,l,u,d=[];if(f(this.options),"touch"===(l=this.options.visible)&&(l=this.isTouchDevice()?"always":"hover"),0===(e=p(A=A||"h2, h3, h4, h5, h6")).length)return this;for(!function(){if(null!==document.head.querySelector("style.anchorjs"))return;var A,e=document.createElement("style");e.className="anchorjs",e.appendChild(document.createTextNode("")),void 0===(A=document.head.querySelector('[rel="stylesheet"],style'))?document.head.appendChild(e):document.head.insertBefore(e,A);e.sheet.insertRule(".anchorjs-link{opacity:0;text-decoration:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}",e.sheet.cssRules.length),e.sheet.insertRule(":hover>.anchorjs-link,.anchorjs-link:focus{opacity:1}",e.sheet.cssRules.length),e.sheet.insertRule("[data-anchorjs-icon]::after{content:attr(data-anchorjs-icon)}",e.sheet.cssRules.length),e.sheet.insertRule('@font-face{font-family:anchorjs-icons;src:url(data:n/a;base64,AAEAAAALAIAAAwAwT1MvMg8yG2cAAAE4AAAAYGNtYXDp3gC3AAABpAAAAExnYXNwAAAAEAAAA9wAAAAIZ2x5ZlQCcfwAAAH4AAABCGhlYWQHFvHyAAAAvAAAADZoaGVhBnACFwAAAPQAAAAkaG10eASAADEAAAGYAAAADGxvY2EACACEAAAB8AAAAAhtYXhwAAYAVwAAARgAAAAgbmFtZQGOH9cAAAMAAAAAunBvc3QAAwAAAAADvAAAACAAAQAAAAEAAHzE2p9fDzz1AAkEAAAAAADRecUWAAAAANQA6R8AAAAAAoACwAAAAAgAAgAAAAAAAAABAAADwP/AAAACgAAA/9MCrQABAAAAAAAAAAAAAAAAAAAAAwABAAAAAwBVAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAMCQAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAARAAAAAAAAAAAAAAAAAAAAAAQAAg//0DwP/AAEADwABAAAAAAQAAAAAAAAAAAAAAIAAAAAAAAAIAAAACgAAxAAAAAwAAAAMAAAAcAAEAAwAAABwAAwABAAAAHAAEADAAAAAIAAgAAgAAACDpy//9//8AAAAg6cv//f///+EWNwADAAEAAAAAAAAAAAAAAAAACACEAAEAAAAAAAAAAAAAAAAxAAACAAQARAKAAsAAKwBUAAABIiYnJjQ3NzY2MzIWFxYUBwcGIicmNDc3NjQnJiYjIgYHBwYUFxYUBwYGIwciJicmNDc3NjIXFhQHBwYUFxYWMzI2Nzc2NCcmNDc2MhcWFAcHBgYjARQGDAUtLXoWOR8fORYtLTgKGwoKCjgaGg0gEhIgDXoaGgkJBQwHdR85Fi0tOAobCgoKOBoaDSASEiANehoaCQkKGwotLXoWOR8BMwUFLYEuehYXFxYugC44CQkKGwo4GkoaDQ0NDXoaShoKGwoFBe8XFi6ALjgJCQobCjgaShoNDQ0NehpKGgobCgoKLYEuehYXAAAADACWAAEAAAAAAAEACAAAAAEAAAAAAAIAAwAIAAEAAAAAAAMACAAAAAEAAAAAAAQACAAAAAEAAAAAAAUAAQALAAEAAAAAAAYACAAAAAMAAQQJAAEAEAAMAAMAAQQJAAIABgAcAAMAAQQJAAMAEAAMAAMAAQQJAAQAEAAMAAMAAQQJAAUAAgAiAAMAAQQJAAYAEAAMYW5jaG9yanM0MDBAAGEAbgBjAGgAbwByAGoAcwA0ADAAMABAAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAAH//wAP) format("truetype")}',e.sheet.cssRules.length)}(),t=document.querySelectorAll("[id]"),i=[].map.call(t,function(A){return A.id}),o=0;o<e.length;o++)if(this.hasAnchorJSLink(e[o]))d.push(o);else{if(e[o].hasAttribute("id"))n=e[o].getAttribute("id");else if(e[o].hasAttribute("data-anchor-id"))n=e[o].getAttribute("data-anchor-id");else{for(c=r=this.urlify(e[o].textContent),a=0;void 0!==s&&(c=r+"-"+a),a+=1,-1!==(s=i.indexOf(c)););s=void 0,i.push(c),e[o].setAttribute("id",c),n=c}(h=document.createElement("a")).className="anchorjs-link "+this.options.class,h.setAttribute("aria-label",this.options.ariaLabel),h.setAttribute("data-anchorjs-icon",this.options.icon),this.options.titleText&&(h.title=this.options.titleText),u=document.querySelector("base")?window.location.pathname+window.location.search:"",u=this.options.base||u,h.href=u+"#"+n,"always"===l&&(h.style.opacity="1"),""===this.options.icon&&(h.style.font="1em/1 anchorjs-icons","left"===this.options.placement&&(h.style.lineHeight="inherit")),"left"===this.options.placement?(h.style.position="absolute",h.style.marginLeft="-1em",h.style.paddingRight="0.5em",e[o].insertBefore(h,e[o].firstChild)):(h.style.paddingLeft="0.375em",e[o].appendChild(h))}for(o=0;o<d.length;o++)e.splice(d[o]-o,1);return this.elements=this.elements.concat(e),this},this.remove=function(A){for(var e,t,i=p(A),n=0;n<i.length;n++)(t=i[n].querySelector(".anchorjs-link"))&&(-1!==(e=this.elements.indexOf(i[n]))&&this.elements.splice(e,1),i[n].removeChild(t));return this},this.removeAll=function(){this.remove(this.elements)},this.urlify=function(A){return this.options.truncate||f(this.options),A.trim().replace(/\'/gi,"").replace(/[& +$,:;=?@"#{}|^~[`%!'<>\]\.\/\(\)\*\\\n\t\b\v]/g,"-").replace(/-{2,}/g,"-").substring(0,this.options.truncate).replace(/^-+|-+$/gm,"").toLowerCase()},this.hasAnchorJSLink=function(A){var e=A.firstChild&&-1<(" "+A.firstChild.className+" ").indexOf(" anchorjs-link "),t=A.lastChild&&-1<(" "+A.lastChild.className+" ").indexOf(" anchorjs-link ");return e||t||!1}}});
53
+ // @license-end
54
+ </script>
52
55
  <script>
53
56
  /*
54
57
  $(document).ready(function() {
@@ -4,9 +4,17 @@
4
4
  <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;mso-yfti-lastrow:yes'>
5
5
  <td width=663 valign=top style='width:497.25pt;padding:0cm 5.4pt 0cm 5.4pt'>
6
6
  <p class=RecNo><span style='mso-bookmark:_Hlk526346232'><a name=irecnoe></a><span
7
- lang=FR-CH style='mso-ansi-language:FR-CH;font-size:14pt;font-weight:bold;'>Recommendation ITU-{{ bureau }} {{ docnumber }}<o:p></o:p></span></span></p>
7
+ lang=FR-CH style='mso-ansi-language:FR-CH;font-size:14pt;font-weight:bold;'>{{ doctype}} {{ docnumber }}<o:p></o:p></span></span></p>
8
8
  <p class=Rectitle align="center"><span style='mso-bookmark:_Hlk526346232'><span lang=FR-CH
9
9
  style='mso-ansi-language:FR-CH;font-size:14pt;font-weight:bold;'>{{ doctitle }}<o:p></o:p></span></span></p>
10
+ {% if annexid %}
11
+ <p class=Rectitle align="center"><span style='mso-bookmark:_Hlk526346232'><span lang=FR-CH
12
+ style='mso-ansi-language:FR-CH;font-size:14pt;font-weight:bold;'>{{ annexid }}<o:p></o:p></span></span></p>
13
+ {% endif %}
14
+ {% if annextitle %}
15
+ <p class=Rectitle align="center"><span style='mso-bookmark:_Hlk526346232'><span lang=FR-CH
16
+ style='mso-ansi-language:FR-CH;font-size:14pt;font-weight:bold;'>{{ annextitle }}<o:p></o:p></span></span></p>
17
+ {% endif %}
10
18
  <span style='mso-bookmark:_Hlk526346232'></span>
11
19
  <p class=MsoNormal><span style='mso-bookmark:_Hlk526346232'><span lang=FR-CH
12
20
  style='mso-ansi-language:FR-CH'><o:p>&nbsp;</o:p></span></span></p>
@@ -104,6 +112,8 @@ style='mso-ansi-language:EN-US'> 

104
112
  <p class=MsoNormal><span style='mso-bookmark:_Hlk526346232'><span lang=EN-US
105
113
  style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></span></p>
106
114
 
115
+ <div id="sourcebox"/>
116
+
107
117
  <p class=MsoNormal><span style='mso-bookmark:_Hlk526346232'><span lang=EN-US
108
118
  style='mso-ansi-language:EN-US'><o:p>&nbsp;</o:p></span></span></p>
109
119
 
@@ -143,9 +143,6 @@
143
143
  <td width="265" valign="top" style='width:198.55pt;padding:0cm 4.25pt 0cm 4.25pt;
144
144
  height:48.7pt'>
145
145
  <p class="MsoNormal" align="right" style='margin-top:0cm;text-align:right'>
146
- {% if annexid %}
147
- <span style='font-size:18.0pt;font-family:"Arial",sans-serif'><b>{{annexid}}</b></span><br/>
148
- {% endif %}
149
146
  <span
150
147
  style='mso-bookmark:_Hlk526346232'><a name="ddatee"><span lang="EN-US"
151
148
  style='font-size:14.0pt;mso-bidi-font-size:10.0pt;font-family:"Arial",sans-serif;
@@ -198,7 +195,7 @@
198
195
  style='mso-bookmark:_Hlk526346232'><a name="c1tite">
199
196
  <span lang="EN-GB"
200
197
  style='font-size:18.0pt;mso-bidi-font-size:10.0pt;font-family:"Arial",sans-serif;
201
- mso-bidi-font-family:"Times New Roman"'>{% if annextitle %}{{ doctitle }}<br/><b>{{ annextitle }}</b>{% else %}<b>{{ doctitle }}</b>{% endif %}</span>
198
+ mso-bidi-font-family:"Times New Roman"'>{% if annextitle %}{{ doctitle }}<br/><b>{{ annexid }}{% if annexid and annextitle %}: {% endif %}{{ annextitle }}</b>{% else %}<b>{{ doctitle }}</b>{% endif %}</span>
202
199
  </a></span><span
203
200
  style='mso-bookmark:_Hlk526346232'><span style='mso-bookmark:c1tite'><b><span
204
201
  lang="EN-US" style='font-size:18.0pt;mso-bidi-font-size:10.0pt;font-family:
@@ -512,7 +512,7 @@ p.h1Preface
512
512
  mso-ansi-language:EN-GB;
513
513
  mso-fareast-language:JA;
514
514
  mso-bidi-font-weight:normal;}
515
- h1.Annex
515
+ h1.Annex, .h1Annex
516
516
  {mso-style-priority:1;
517
517
  mso-style-unhide:no;
518
518
  mso-style-qformat:yes;
@@ -527,15 +527,12 @@ h1.Annex
527
527
  text-align:center;
528
528
  mso-pagination:widow-orphan lines-together;
529
529
  page-break-after:avoid;
530
- mso-outline-level:1;
531
530
  tab-stops:39.7pt 59.55pt 79.4pt 99.25pt;
532
531
  mso-layout-grid-align:none;
533
532
  punctuation-wrap:simple;
534
533
  text-autospace:none;
535
534
  font-size:14.0pt;
536
535
  mso-bidi-font-size:10.0pt;
537
- mso-outline-level:1;
538
- mso-list:l1 level1 lfo6;
539
536
  mso-hyphenate:none;
540
537
  mso-bidi-font-size:11.0pt;
541
538
  font-family:$headerfont;
@@ -545,6 +542,10 @@ h1.Annex
545
542
  mso-ansi-language:EN-GB;
546
543
  mso-fareast-language:JA;
547
544
  mso-bidi-font-weight:normal;}
545
+ h1.Annex {
546
+ mso-outline-level:1;
547
+ mso-list:l1 level1 lfo6;
548
+ }
548
549
  .h2Annex
549
550
  {mso-style-priority:2;
550
551
  mso-style-unhide:no;
@@ -1561,7 +1562,7 @@ p.Tablebody, li.Tablebody, div.Tablebody
1561
1562
  mso-level-tab-stop:none;
1562
1563
  mso-level-number-position:left;
1563
1564
  margin-left:1.4cm;
1564
- text-indent:-0.7cm;}
1565
+ text-indent:-1.4cm;}
1565
1566
  @list l4:level2
1566
1567
  {mso-level-text:"%2\)";
1567
1568
  mso-level-number-format:alpha-lower;