metanorma-itu 1.0.13 → 1.0.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +8 -7
- data/.github/workflows/ubuntu.yml +12 -9
- data/.github/workflows/windows.yml +8 -8
- data/lib/asciidoctor/itu/biblio.rng +89 -32
- data/lib/asciidoctor/itu/cleanup.rb +80 -71
- data/lib/asciidoctor/itu/converter.rb +7 -11
- data/lib/asciidoctor/itu/front.rb +47 -18
- data/lib/asciidoctor/itu/isodoc.rng +475 -2
- data/lib/asciidoctor/itu/reqt.rng +23 -0
- data/lib/isodoc/itu/base_convert.rb +66 -16
- data/lib/isodoc/itu/html/_coverpage.scss +7 -3
- data/lib/isodoc/itu/html/header.html +8 -8
- data/lib/isodoc/itu/html/html_itu_titlepage.html +6 -7
- data/lib/isodoc/itu/html/htmlstyle.scss +9 -5
- data/lib/isodoc/itu/html/itu.scss +28 -1
- data/lib/isodoc/itu/html/scripts.html +14 -27
- data/lib/isodoc/itu/html/word_itu_intro.html +11 -1
- data/lib/isodoc/itu/html/word_itu_titlepage.html +3 -6
- data/lib/isodoc/itu/html/wordstyle.scss +6 -5
- data/lib/isodoc/itu/html_convert.rb +3 -3
- data/lib/isodoc/itu/i18n-en.yaml +2 -1
- data/lib/isodoc/itu/itu.recommendation-annex.xsl +3903 -0
- data/lib/isodoc/itu/itu.recommendation.xsl +3903 -0
- data/lib/isodoc/itu/itu.resolution.xsl +3903 -0
- data/lib/isodoc/itu/metadata.rb +16 -6
- data/lib/isodoc/itu/pdf_convert.rb +17 -44
- data/lib/isodoc/itu/ref.rb +48 -21
- data/lib/isodoc/itu/terms.rb +5 -6
- data/lib/isodoc/itu/word_convert.rb +10 -8
- data/lib/isodoc/itu/xref.rb +27 -16
- data/lib/metanorma/itu/processor.rb +8 -0
- data/lib/metanorma/itu/version.rb +1 -1
- data/metanorma-itu.gemspec +1 -1
- metadata +7 -5
- 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>
         | 
| @@ -37,13 +37,20 @@ module IsoDoc | |
| 37 37 | 
             
                    end
         | 
| 38 38 | 
             
                  end
         | 
| 39 39 |  | 
| 40 | 
            +
                  def bracket_opt(b)
         | 
| 41 | 
            +
                    return b if b.nil?
         | 
| 42 | 
            +
                    return b if /^\[.+\]$/.match(b)
         | 
| 43 | 
            +
                    "[#{b}]"
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 40 46 | 
             
                  def clausedelim
         | 
| 41 47 | 
             
                    ""
         | 
| 42 48 | 
             
                  end
         | 
| 43 49 |  | 
| 44 50 | 
             
                  def note_label(node)
         | 
| 45 51 | 
             
                    n = get_anchors[node["id"]]
         | 
| 46 | 
            -
                     | 
| 52 | 
            +
                    (n.nil? || n[:label].nil? || n[:label].empty?) and
         | 
| 53 | 
            +
                      return "#{@note_lbl} – "
         | 
| 47 54 | 
             
                    l10n("#{@note_lbl} #{n[:label]} – ")
         | 
| 48 55 | 
             
                  end
         | 
| 49 56 |  | 
| @@ -64,7 +71,8 @@ module IsoDoc | |
| 64 71 | 
             
                  end
         | 
| 65 72 |  | 
| 66 73 | 
             
                  def annex_name(annex, name, div)
         | 
| 67 | 
            -
                     | 
| 74 | 
            +
                    r_a = @meta.get[:doctype_original] == "recommendation-annex"
         | 
| 75 | 
            +
                    div.h1 **{ class: r_a ? "RecommendationAnnex" : "Annex" } do |t|
         | 
| 68 76 | 
             
                      t << "#{anchor(annex['id'], :label)} "
         | 
| 69 77 | 
             
                      t.br
         | 
| 70 78 | 
             
                      t.br
         | 
| @@ -76,14 +84,28 @@ module IsoDoc | |
| 76 84 | 
             
                  end
         | 
| 77 85 |  | 
| 78 86 | 
             
                  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 87 | 
             
                    info = annex["obligation"] == "informative"
         | 
| 83 88 | 
             
                    div.p **{class: "annex_obligation" } do |p|
         | 
| 84 | 
            -
                      p << (info ? @inform_annex_lbl : @norm_annex_lbl). | 
| 89 | 
            +
                      p << (info ? @inform_annex_lbl : @norm_annex_lbl).
         | 
| 90 | 
            +
                        sub(/%/, @meta.get[:doctype] || "")
         | 
| 91 | 
            +
                    end
         | 
| 92 | 
            +
                  end
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                  def annex(isoxml, out)
         | 
| 95 | 
            +
                  isoxml.xpath(ns("//annex")).each do |c|
         | 
| 96 | 
            +
                    @meta.get[:doctype_original] == "recommendation-annex" or
         | 
| 97 | 
            +
                      page_break(out)
         | 
| 98 | 
            +
                    out.div **attr_code(id: c["id"], class: "Section3") do |s|
         | 
| 99 | 
            +
                      annex_name(c, nil, s) unless c.at(ns("./title"))
         | 
| 100 | 
            +
                      c.elements.each do |c1|
         | 
| 101 | 
            +
                        if c1.name == "title" then annex_name(c, c1, s)
         | 
| 102 | 
            +
                        else
         | 
| 103 | 
            +
                          parse(c1, s)
         | 
| 104 | 
            +
                        end
         | 
| 105 | 
            +
                      end
         | 
| 85 106 | 
             
                    end
         | 
| 86 107 | 
             
                  end
         | 
| 108 | 
            +
                end
         | 
| 87 109 |  | 
| 88 110 | 
             
                  def i18n_init(lang, script)
         | 
| 89 111 | 
             
                    super
         | 
| @@ -96,13 +118,24 @@ module IsoDoc | |
| 96 118 | 
             
                  def cleanup(docxml)
         | 
| 97 119 | 
             
                    super
         | 
| 98 120 | 
             
                    term_cleanup(docxml)
         | 
| 121 | 
            +
                    refs_cleanup(docxml)
         | 
| 122 | 
            +
                    title_cleanup(docxml)
         | 
| 123 | 
            +
                  end
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                  def title_cleanup(docxml)
         | 
| 126 | 
            +
                    docxml.xpath("//h1[@class = 'RecommendationAnnex']").each do |h|
         | 
| 127 | 
            +
                      h.name = "p"
         | 
| 128 | 
            +
                      h["class"] = "h1Annex"
         | 
| 129 | 
            +
                    end
         | 
| 130 | 
            +
                    docxml
         | 
| 99 131 | 
             
                  end
         | 
| 100 132 |  | 
| 101 133 | 
             
                  def term_cleanup(docxml)
         | 
| 102 134 | 
             
                    docxml.xpath("//p[@class = 'Terms']").each do |d|
         | 
| 103 135 | 
             
                      h2 = d.at("./preceding-sibling::*[@class = 'TermNum'][1]")
         | 
| 104 | 
            -
                      h2. | 
| 105 | 
            -
                      h2 | 
| 136 | 
            +
                      d.children.first.previous = "<b>#{h2.children.to_xml}</b> "
         | 
| 137 | 
            +
                      d["id"] = h2["id"]
         | 
| 138 | 
            +
                      h2.remove
         | 
| 106 139 | 
             
                    end
         | 
| 107 140 | 
             
                    docxml.xpath("//p[@class = 'TermNum']").each do |d|
         | 
| 108 141 | 
             
                      d1 = d.next_element and d1.name == "p" or next
         | 
| @@ -112,36 +145,53 @@ module IsoDoc | |
| 112 145 | 
             
                    docxml
         | 
| 113 146 | 
             
                  end
         | 
| 114 147 |  | 
| 148 | 
            +
                  def refs_cleanup(docxml)
         | 
| 149 | 
            +
                    docxml.xpath("//tx[following-sibling::tx]").each do |tx|
         | 
| 150 | 
            +
                      tx << tx.next_element.remove.children
         | 
| 151 | 
            +
                    end
         | 
| 152 | 
            +
                    docxml.xpath("//tx").each do |tx|
         | 
| 153 | 
            +
                      tx.name = "td"
         | 
| 154 | 
            +
                      tx["colspan"] = "2"
         | 
| 155 | 
            +
                      tx.wrap("<tr></tr>")
         | 
| 156 | 
            +
                    end
         | 
| 157 | 
            +
                    docxml
         | 
| 158 | 
            +
                  end
         | 
| 159 | 
            +
             | 
| 115 160 | 
             
                  def info(isoxml, out)
         | 
| 116 | 
            -
                    @meta.keywords isoxml, out
         | 
| 117 161 | 
             
                    @meta.ip_notice_received isoxml, out
         | 
| 118 162 | 
             
                    super
         | 
| 119 163 | 
             
                  end
         | 
| 120 164 |  | 
| 121 165 | 
             
                  def get_eref_linkend(node)
         | 
| 122 | 
            -
                     | 
| 123 | 
            -
                     | 
| 124 | 
            -
                     | 
| 125 | 
            -
                     | 
| 166 | 
            +
                    l = anchor_linkend(node, docid_l10n(node["target"] || node["citeas"]))
         | 
| 167 | 
            +
                    l && !/^\[.*\]$/.match(l) and l = "[#{l}]"
         | 
| 168 | 
            +
                    l += eref_localities(node.xpath(ns("./locality | ./localityStack")), l)
         | 
| 169 | 
            +
                    contents = node.children.select do |c|
         | 
| 170 | 
            +
                      !%w{locality localityStack}.include? c.name
         | 
| 171 | 
            +
                    end
         | 
| 172 | 
            +
                    return l if contents.nil? || contents.empty?
         | 
| 126 173 | 
             
                    Nokogiri::XML::NodeSet.new(node.document, contents).to_xml
         | 
| 127 174 | 
             
                  end
         | 
| 128 175 |  | 
| 129 176 | 
             
                  def eref_parse(node, out)
         | 
| 130 177 | 
             
                    linkend = get_eref_linkend(node)
         | 
| 178 | 
            +
                    href = eref_target(node)
         | 
| 131 179 | 
             
                    if node["type"] == "footnote"
         | 
| 132 180 | 
             
                      out.sup do |s|
         | 
| 133 | 
            -
                        s.a(**{ "href":  | 
| 181 | 
            +
                        s.a(**{ "href": href }) { |l| l << linkend }
         | 
| 134 182 | 
             
                      end
         | 
| 135 183 | 
             
                    else
         | 
| 136 | 
            -
                      out.a(**{ "href":  | 
| 184 | 
            +
                      out.a(**{ "href": href }) { |l| l << linkend }
         | 
| 137 185 | 
             
                    end
         | 
| 138 186 | 
             
                  end
         | 
| 139 187 |  | 
| 140 188 | 
             
                  def middle_title(out)
         | 
| 141 189 | 
             
                    out.p(**{ class: "zzSTDTitle1" }) do |p|
         | 
| 142 | 
            -
                      id = @meta.get[:docnumber] and p << " | 
| 190 | 
            +
                      id = @meta.get[:docnumber] and p << "#{@meta.get[:doctype]} #{id}" 
         | 
| 143 191 | 
             
                    end
         | 
| 144 192 | 
             
                    out.p(**{ class: "zzSTDTitle2" }) { |p| p << @meta.get[:doctitle] }
         | 
| 193 | 
            +
                    s = @meta.get[:docsubtitle] and
         | 
| 194 | 
            +
                      out.p(**{ class: "zzSTDTitle3" }) { |p| p << s }
         | 
| 145 195 | 
             
                  end
         | 
| 146 196 |  | 
| 147 197 | 
             
                  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 |  | 
| @@ -116,7 +116,7 @@ style='mso-element:field-separator'>
     | |
| 116 116 | 
             
            style='mso-ansi-language:FR-CH;font-weight:normal;mso-no-proof:yes'>ii</span><!--[if supportFields]><span
         | 
| 117 117 | 
             
            lang=EN-GB style='font-weight:normal'><span style='mso-element:field-end'></span></span><![endif]--><span
         | 
| 118 118 | 
             
            lang=FR-CH style='mso-ansi-language:FR-CH'><span style='mso-tab-count:1'>              </span>Rec.
         | 
| 119 | 
            -
            ITU‑{{ bureau }} {{  | 
| 119 | 
            +
            ITU‑{{ bureau }} {{ docnumeric }} ({{ pubdate_monthyear }})<o:p></o:p></span></p>
         | 
| 120 120 | 
             
            </div>
         | 
| 121 121 |  | 
| 122 122 | 
             
            <div style='mso-element:footer' id=ef2l>
         | 
| @@ -129,12 +129,12 @@ style='mso-element:field-separator'>
     | |
| 129 129 | 
             
            style='mso-ansi-language:FR-CH;font-weight:normal;mso-no-proof:yes'>ii</span><!--[if supportFields]><span
         | 
| 130 130 | 
             
            lang=EN-GB style='font-weight:normal'><span style='mso-element:field-end'></span></span><![endif]--><span
         | 
| 131 131 | 
             
            lang=FR-CH style='mso-ansi-language:FR-CH'><span style='mso-tab-count:1'>              </span>Rec.
         | 
| 132 | 
            -
            ITU‑{{ bureau }} {{  | 
| 132 | 
            +
            ITU‑{{ bureau }} {{ docnumeric }} ({{ pubdate_monthyear }})<o:p></o:p></span></p>
         | 
| 133 133 | 
             
            </div>
         | 
| 134 134 |  | 
| 135 135 | 
             
            <div style='mso-element:footer' id=f2>
         | 
| 136 136 | 
             
            <p class=FooterQP style='line-height:12.0pt'><span lang=EN-GB><span style='mso-tab-count:2'>                                                                                                       </span>Rec.
         | 
| 137 | 
            -
              ITU‑{{ bureau }} {{ | 
| 137 | 
            +
              ITU‑{{ bureau }} {{docnumeric}} ({{ pubdate_monthyear }})<span style='mso-tab-count:1'>             </span></span><!--[if supportFields]><span
         | 
| 138 138 | 
             
            lang=EN-GB style='font-weight:normal'><span style='mso-element:field-begin'></span>
         | 
| 139 139 | 
             
            PAGE<span style='mso-spacerun:yes'>  </span>\* MERGEFORMAT <span
         | 
| 140 140 | 
             
            style='mso-element:field-separator'></span></span><![endif]--><span lang=EN-GB
         | 
| @@ -145,7 +145,7 @@ lang=EN-GB style='font-weight:normal'> | |
| 145 145 |  | 
| 146 146 | 
             
            <div style='mso-element:footer' id=f2l>
         | 
| 147 147 | 
             
            <p class=FooterQPLandscape style='line-height:12.0pt'><span lang=EN-GB><span style='mso-tab-count:2'>                                                                                                       </span>Rec.
         | 
| 148 | 
            -
              ITU‑{{ bureau }} {{ | 
| 148 | 
            +
              ITU‑{{ bureau }} {{docnumeric}} ({{ pubdate_monthyear }})<span style='mso-tab-count:1'>             </span></span><!--[if supportFields]><span
         | 
| 149 149 | 
             
            lang=EN-GB style='font-weight:normal'><span style='mso-element:field-begin'></span>
         | 
| 150 150 | 
             
            PAGE<span style='mso-spacerun:yes'>  </span>\* MERGEFORMAT <span
         | 
| 151 151 | 
             
            style='mso-element:field-separator'></span></span><![endif]--><span lang=EN-GB
         | 
| @@ -164,7 +164,7 @@ style='mso-element:field-separator'>
     | |
| 164 164 | 
             
            style='mso-ansi-language:FR-CH;font-weight:normal;mso-no-proof:yes'>ii</span><!--[if supportFields]><span
         | 
| 165 165 | 
             
            lang=EN-GB style='font-weight:normal'><span style='mso-element:field-end'></span></span><![endif]--><span
         | 
| 166 166 | 
             
            lang=FR-CH style='mso-ansi-language:FR-CH'><span style='mso-tab-count:1'>              </span>Rec.
         | 
| 167 | 
            -
            ITU‑{{ bureau }} {{  | 
| 167 | 
            +
            ITU‑{{ bureau }} {{ docnumeric }} ({{ pubdate_monthyear }})<o:p></o:p></span></p>
         | 
| 168 168 | 
             
            </div>
         | 
| 169 169 |  | 
| 170 170 | 
             
            <div style='mso-element:footer' id=ef3l>
         | 
| @@ -177,12 +177,12 @@ style='mso-element:field-separator'>
     | |
| 177 177 | 
             
            style='mso-ansi-language:FR-CH;font-weight:normal;mso-no-proof:yes'>ii</span><!--[if supportFields]><span
         | 
| 178 178 | 
             
            lang=EN-GB style='font-weight:normal'><span style='mso-element:field-end'></span></span><![endif]--><span
         | 
| 179 179 | 
             
            lang=FR-CH style='mso-ansi-language:FR-CH'><span style='mso-tab-count:1'>              </span>Rec.
         | 
| 180 | 
            -
            ITU‑{{ bureau }} {{  | 
| 180 | 
            +
            ITU‑{{ bureau }} {{ docnumeric }} ({{ pubdate_monthyear }})<o:p></o:p></span></p>
         | 
| 181 181 | 
             
            </div>
         | 
| 182 182 |  | 
| 183 183 | 
             
            <div style='mso-element:footer' id=f3>
         | 
| 184 184 | 
             
            <p class=FooterQP style='line-height:12.0pt'><span lang=EN-GB><span style='mso-tab-count:2'>                                                                                                       </span>Rec.
         | 
| 185 | 
            -
              ITU‑{{ bureau }} {{ | 
| 185 | 
            +
              ITU‑{{ bureau }} {{docnumeric}} ({{ pubdate_monthyear }})<span style='mso-tab-count:1'>             </span></span><!--[if supportFields]><span
         | 
| 186 186 | 
             
            lang=EN-GB style='font-weight:normal'><span style='mso-element:field-begin'></span>
         | 
| 187 187 | 
             
            PAGE<span style='mso-spacerun:yes'>  </span>\* MERGEFORMAT <span
         | 
| 188 188 | 
             
            style='mso-element:field-separator'></span></span><![endif]--><span lang=EN-GB
         | 
| @@ -193,7 +193,7 @@ lang=EN-GB style='font-weight:normal'> | |
| 193 193 |  | 
| 194 194 | 
             
            <div style='mso-element:footer' id=f3l>
         | 
| 195 195 | 
             
            <p class=FooterQPLandscape style='line-height:12.0pt'><span lang=EN-GB><span style='mso-tab-count:2'>                                                                                                       </span>Rec.
         | 
| 196 | 
            -
              ITU‑{{ bureau }} {{ | 
| 196 | 
            +
              ITU‑{{ bureau }} {{docnumeric}} ({{ pubdate_monthyear }})<span style='mso-tab-count:1'>             </span></span><!--[if supportFields]><span
         | 
| 197 197 | 
             
            lang=EN-GB style='font-weight:normal'><span style='mso-element:field-begin'></span>
         | 
| 198 198 | 
             
            PAGE<span style='mso-spacerun:yes'>  </span>\* MERGEFORMAT <span
         | 
| 199 199 | 
             
            style='mso-element:field-separator'></span></span><![endif]--><span lang=EN-GB
         | 
| @@ -26,13 +26,10 @@ | |
| 26 26 |  | 
| 27 27 | 
             
                    <div class="doc-info-left">
         | 
| 28 28 | 
             
                      <div class="doc-identifier">
         | 
| 29 | 
            -
                        {{  | 
| 29 | 
            +
                        {{ docnumeric }}
         | 
| 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 |  | 
| @@ -73,7 +70,7 @@ | |
| 73 70 | 
             
                    <div>
         | 
| 74 71 | 
             
                      <span class="doc-type">{% if stage == "Draft" %}Draft {% endif %}{{ doctype }}</span>
         | 
| 75 72 | 
             
                      <span class="ITU-sector">ITU-{{ bureau }}</span>
         | 
| 76 | 
            -
                      <span class="doc-identifier">{{  | 
| 73 | 
            +
                      <span class="doc-identifier">{{ docnumeric }}</span>
         | 
| 77 74 | 
             
                    </div>
         | 
| 78 75 |  | 
| 79 76 | 
             
                  </div>
         | 
| @@ -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:  | 
| 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;
         | 
| @@ -986,7 +1009,7 @@ table.MsoTableGrid | |
| 986 1009 | 
             
            	font-size:10.0pt;
         | 
| 987 1010 | 
             
            	font-family:$bodyfont;}
         | 
| 988 1011 | 
             
            div.formula, div.formula p
         | 
| 989 | 
            -
                {tab-stops: | 
| 1012 | 
            +
                {tab-stops:center 241.0pt right 17.0cm;}
         | 
| 990 1013 | 
             
            body
         | 
| 991 1014 | 
             
                {tab-interval:36.0pt;}
         | 
| 992 1015 | 
             
            .coverpage_docnumber
         | 
| @@ -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 | 
            +
             | 
| @@ -1,24 +1,8 @@ | |
| 1 1 | 
             
              <script>
         | 
| 2 | 
            -
                 | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
             | 
| 6 | 
            -
                      'smoothScrolling': true, //enable or disable smooth scrolling on click
         | 
| 7 | 
            -
                      'prefix': 'toc', //prefix for anchor tags and class names
         | 
| 8 | 
            -
                      'onHighlight': function(el) {}, //called when a new section is highlighted 
         | 
| 9 | 
            -
                      'highlightOnScroll': true, //add class to heading that is currently in focus
         | 
| 10 | 
            -
                      'highlightOffset': 100, //offset to trigger the next headline
         | 
| 11 | 
            -
                      'anchorName': function(i, heading, prefix) { //custom function for anchor name
         | 
| 12 | 
            -
                          return prefix+i;
         | 
| 13 | 
            -
                      },
         | 
| 14 | 
            -
                      'headerText': function(i, heading, $heading) { //custom function building the header-item text
         | 
| 15 | 
            -
                          return $heading.text();
         | 
| 16 | 
            -
                      },
         | 
| 17 | 
            -
                  'itemClass': function(i, heading, $heading, prefix) { // custom function for item class
         | 
| 18 | 
            -
                    return $heading[0].tagName.toLowerCase();
         | 
| 19 | 
            -
                  }
         | 
| 20 | 
            -
                  });
         | 
| 21 | 
            -
                  
         | 
| 2 | 
            +
                $("#toc").on('click', 'li', function(e) {
         | 
| 3 | 
            +
                $(this).parent().find('li.toc-active').removeClass('toc-active');
         | 
| 4 | 
            +
                $(this).addClass('toc-active');
         | 
| 5 | 
            +
            });
         | 
| 22 6 | 
             
              </script>
         | 
| 23 7 |  | 
| 24 8 | 
             
            <script>
         | 
| @@ -58,13 +42,16 @@ $('#toggle').on('click', function(){ | |
| 58 42 | 
             
                </script>
         | 
| 59 43 |  | 
| 60 44 | 
             
              <script>
         | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
              | 
| 64 | 
            -
              | 
| 65 | 
            -
              | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 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>
         | 
| 68 55 | 
             
              <script>
         | 
| 69 56 | 
             
            /*
         | 
| 70 57 | 
             
              $(document).ready(function() {
         |