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.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +8 -0
- data/.github/workflows/ubuntu.yml +10 -0
- data/.github/workflows/windows.yml +8 -0
- data/lib/asciidoctor/itu/biblio.rng +36 -6
- data/lib/asciidoctor/itu/cleanup.rb +15 -8
- data/lib/asciidoctor/itu/converter.rb +18 -27
- data/lib/asciidoctor/itu/front.rb +25 -0
- data/lib/asciidoctor/itu/isodoc.rng +450 -4
- data/lib/asciidoctor/itu/reqt.rng +23 -0
- data/lib/isodoc/itu.rb +1 -0
- data/lib/isodoc/itu/base_convert.rb +71 -17
- data/lib/isodoc/itu/html/_coverpage.scss +7 -3
- data/lib/isodoc/itu/html/html_itu_titlepage.html +4 -5
- data/lib/isodoc/itu/html/htmlstyle.scss +9 -5
- data/lib/isodoc/itu/html/itu.scss +27 -0
- data/lib/isodoc/itu/html/scripts.html +10 -7
- data/lib/isodoc/itu/html/word_itu_intro.html +11 -1
- data/lib/isodoc/itu/html/word_itu_titlepage.html +1 -4
- 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 +4358 -0
- data/lib/isodoc/itu/itu.recommendation.xsl +1354 -447
- data/lib/isodoc/itu/itu.resolution.xsl +1354 -447
- data/lib/isodoc/itu/metadata.rb +16 -6
- data/lib/isodoc/itu/pdf_convert.rb +6 -12
- data/lib/isodoc/itu/presentation_xml_convert.rb +10 -0
- data/lib/isodoc/itu/ref.rb +45 -23
- data/lib/isodoc/itu/terms.rb +9 -22
- data/lib/isodoc/itu/word_convert.rb +10 -8
- data/lib/isodoc/itu/xref.rb +56 -21
- data/lib/metanorma/itu/processor.rb +12 -6
- data/lib/metanorma/itu/version.rb +1 -1
- data/metanorma-itu.gemspec +2 -2
- metadata +12 -12
- data/lib/isodoc/itu/html/scripts.pdf.html +0 -72
data/lib/isodoc/itu/metadata.rb
CHANGED
@@ -11,12 +11,15 @@ module IsoDoc
|
|
11
11
|
File.expand_path(File.join(here, "html", "International_Telecommunication_Union_Logo.svg")))
|
12
12
|
set(:logo_comb,
|
13
13
|
File.expand_path(File.join(here, "html", "itu-document-comb.png")))
|
14
|
-
set(:logo_word,
|
14
|
+
set(:logo_word,
|
15
|
+
File.expand_path(File.join(here, "html", "International_Telecommunication_Union_Logo.svg")))
|
15
16
|
end
|
16
17
|
|
17
18
|
def title(isoxml, _out)
|
18
|
-
main = isoxml&.at(ns("//bibdata/title[@language='
|
19
|
+
main = isoxml&.at(ns("//bibdata/title[@language='#{@lang}'][@type = 'main']"))&.text
|
19
20
|
set(:doctitle, main)
|
21
|
+
main = isoxml&.at(ns("//bibdata/title[@language='#{@lang}'][@type = 'subtitle']"))&.text
|
22
|
+
set(:docsubtitle, main)
|
20
23
|
series = isoxml&.at(ns("//bibdata/series[@type='main']/title"))&.text
|
21
24
|
set(:series, series)
|
22
25
|
series1 =
|
@@ -66,11 +69,18 @@ module IsoDoc
|
|
66
69
|
end
|
67
70
|
|
68
71
|
def keywords(isoxml, _out)
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
+
super
|
73
|
+
set(:keywords, get[:keywords].sort)
|
74
|
+
end
|
75
|
+
|
76
|
+
def doctype(isoxml, _out)
|
77
|
+
d = isoxml&.at(ns("//bibdata/ext/doctype"))&.text
|
78
|
+
set(:doctype_original, d)
|
79
|
+
if d == "recommendation-annex"
|
80
|
+
set(:doctype, "Recommendation")
|
81
|
+
else
|
82
|
+
super
|
72
83
|
end
|
73
|
-
set(:keywords, keywords.sort)
|
74
84
|
end
|
75
85
|
|
76
86
|
def ip_notice_received(isoxml, _out)
|
@@ -13,19 +13,13 @@ module IsoDoc
|
|
13
13
|
super
|
14
14
|
end
|
15
15
|
|
16
|
-
def
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
f.write file
|
23
|
-
f.path
|
16
|
+
def pdf_stylesheet(docxml)
|
17
|
+
case doctype = docxml&.at(ns("//bibdata/ext/doctype"))&.text
|
18
|
+
when "resolution" then "itu.resolution.xsl"
|
19
|
+
when "recommendation-annex" then "itu.recommendation-annex.xsl"
|
20
|
+
else
|
21
|
+
"itu.recommendation.xsl"
|
24
22
|
end
|
25
|
-
FileUtils.rm_rf dir
|
26
|
-
::Metanorma::Output::XslfoPdf.new.convert(
|
27
|
-
filename, outname_html + ".pdf",
|
28
|
-
File.join(@libdir, resolution ? "itu.resolution.xsl" : "itu.recommendation.xsl"))
|
29
23
|
end
|
30
24
|
end
|
31
25
|
end
|
data/lib/isodoc/itu/ref.rb
CHANGED
@@ -6,7 +6,7 @@ module IsoDoc
|
|
6
6
|
module ITU
|
7
7
|
module BaseConvert
|
8
8
|
def norm_ref(isoxml, out, num)
|
9
|
-
q = "//bibliography/references[
|
9
|
+
q = "//bibliography/references[@normative = 'true']"
|
10
10
|
f = isoxml.at(ns(q)) or return num
|
11
11
|
out.div do |div|
|
12
12
|
num = num + 1
|
@@ -17,11 +17,14 @@ module IsoDoc
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def nonstd_bibitem(list, b, ordinal, biblio)
|
20
|
-
list.
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
20
|
+
list.tr **attr_code(iso_bibitem_entry_attrs(b, biblio)) do |ref|
|
21
|
+
id = render_identifier(bibitem_ref_code(b))
|
22
|
+
ref.td **{style: "vertical-align:top"} do |td|
|
23
|
+
td << (id[0] || "[#{id[1]}]")&.
|
24
|
+
gsub(/-/, "‑")&.gsub(/ /, " ")
|
25
|
+
date_note_process(b, td)
|
26
|
+
end
|
27
|
+
ref.td { |td| reference_format(b, td) }
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
@@ -29,6 +32,36 @@ module IsoDoc
|
|
29
32
|
nonstd_bibitem(list, b, ordinal, biblio)
|
30
33
|
end
|
31
34
|
|
35
|
+
def biblio_list(f, div, biblio)
|
36
|
+
div.table **{ class: "biblio", border: "0" } do |t|
|
37
|
+
i = 0
|
38
|
+
t.tbody do |tbody|
|
39
|
+
f.elements.each do |b|
|
40
|
+
if b.name == "bibitem"
|
41
|
+
next if implicit_reference(b)
|
42
|
+
i += 1
|
43
|
+
nonstd_bibitem(tbody, b, i, biblio)
|
44
|
+
else
|
45
|
+
unless %w(title clause references).include? b.name
|
46
|
+
tbody.tx do |tx|
|
47
|
+
parse(b, tx)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
f.xpath(ns("./clause | ./references")).each do |x|
|
55
|
+
parse(x, div)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
def bracket_if_num(x)
|
60
|
+
return nil if x.nil?
|
61
|
+
x = x.text.sub(/^\[/, "").sub(/\]$/, "")
|
62
|
+
"[#{x}]"
|
63
|
+
end
|
64
|
+
|
32
65
|
def reference_format(b, r)
|
33
66
|
reference_format_start(b, r)
|
34
67
|
reference_format_title(b, r)
|
@@ -38,20 +71,13 @@ module IsoDoc
|
|
38
71
|
s.gsub(/ |\_|\-/, " ").split(/ /).map(&:capitalize).join(" ")
|
39
72
|
end
|
40
73
|
|
74
|
+
def pref_ref_code(b)
|
75
|
+
b.at(ns("./docidentifier[@type = 'ITU']")) || super
|
76
|
+
end
|
77
|
+
|
41
78
|
IGNORE_IDS =
|
42
79
|
"@type = 'DOI' or @type = 'ISSN' or @type = 'ISBN' or @type = 'rfc-anchor'".freeze
|
43
80
|
|
44
|
-
def bibitem_ref_code(b)
|
45
|
-
id = b.at(ns("./docidentifier[@type = 'metanorma']"))
|
46
|
-
id ||= b.at(ns("./docidentifier[@type = 'ITU']"))
|
47
|
-
id ||= b.at(ns("./docidentifier[not(#{IGNORE_IDS})]"))
|
48
|
-
id ||= b.at(ns("./docidentifier"))
|
49
|
-
return id if id
|
50
|
-
id = Nokogiri::XML::Node.new("docidentifier", b.document)
|
51
|
-
id.text = "(NO ID)"
|
52
|
-
id
|
53
|
-
end
|
54
|
-
|
55
81
|
def multi_bibitem_ref_code(b)
|
56
82
|
id = b.xpath(ns("./docidentifier[not(@type = 'metanorma' or #{IGNORE_IDS})]"))
|
57
83
|
id.empty? and id = b.xpath(ns("./docidentifier[not(@type = 'metanorma')]"))
|
@@ -59,7 +85,7 @@ module IsoDoc
|
|
59
85
|
id.sort_by { |i| i["type"] == "ITU" ? 0 : 1 }
|
60
86
|
end
|
61
87
|
|
62
|
-
def
|
88
|
+
def render_multi_identifiers(ids)
|
63
89
|
ids.map do |id|
|
64
90
|
id["type"] == "ITU" ? doctype_title(id) :
|
65
91
|
docid_prefix(id["type"], id.text.sub(/^\[/, "").sub(/\]$/, ""))
|
@@ -78,7 +104,7 @@ module IsoDoc
|
|
78
104
|
|
79
105
|
def reference_format_start(b, r)
|
80
106
|
id = multi_bibitem_ref_code(b)
|
81
|
-
id1 =
|
107
|
+
id1 = render_multi_identifiers(id)
|
82
108
|
r << id1
|
83
109
|
date = b.at(ns("./date[@type = 'published']")) and
|
84
110
|
r << " (#{date.text.sub(/-.*$/, '')})"
|
@@ -96,10 +122,6 @@ module IsoDoc
|
|
96
122
|
/\.$/.match(title&.text) or r << "."
|
97
123
|
end
|
98
124
|
end
|
99
|
-
|
100
|
-
def format_ref(ref, prefix, isopub, date, allparts)
|
101
|
-
docid_prefix(prefix, ref).sub(/^\[/, "").sub(/\]$/, "")
|
102
|
-
end
|
103
125
|
end
|
104
126
|
end
|
105
127
|
end
|
data/lib/isodoc/itu/terms.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
module IsoDoc
|
2
2
|
module ITU
|
3
3
|
module BaseConvert
|
4
|
-
|
5
|
-
|
4
|
+
def term_def_title(node)
|
5
|
+
node
|
6
6
|
end
|
7
7
|
|
8
8
|
def terms_defs(node, out, num)
|
@@ -35,11 +35,11 @@ module IsoDoc
|
|
35
35
|
def termdef_parse1(node, div, term, defn, source)
|
36
36
|
div.p **{ class: "TermNum", id: node["id"] } do |p|
|
37
37
|
p.b do |b|
|
38
|
-
b << anchor(node["id"], :label)
|
38
|
+
b << @xrefs.anchor(node["id"], :label)
|
39
39
|
insert_tab(b, 1)
|
40
40
|
term.children.each { |n| parse(n, b) }
|
41
41
|
end
|
42
|
-
source and p << "
|
42
|
+
source and p << " #{bracket_opt(source.value)}"
|
43
43
|
p << ": "
|
44
44
|
end
|
45
45
|
defn and defn.children.each { |n| parse(n, div) }
|
@@ -60,24 +60,11 @@ module IsoDoc
|
|
60
60
|
end
|
61
61
|
|
62
62
|
def termnote_parse(node, out)
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
def termnote_anchor_names(docxml)
|
73
|
-
docxml.xpath(ns("//term[descendant::termnote]")).each do |t|
|
74
|
-
c = IsoDoc::Function::XrefGen::Counter.new
|
75
|
-
notes = t.xpath(ns(".//termnote"))
|
76
|
-
notes.each do |n|
|
77
|
-
return if n["id"].nil? || n["id"].empty?
|
78
|
-
idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
|
79
|
-
@anchors[n["id"]] = anchor_struct(idx, n, @note_xref_lbl,
|
80
|
-
"termnote", false)
|
63
|
+
out.div **note_attrs(node) do |div|
|
64
|
+
first = node.first_element_child
|
65
|
+
div.p do |p|
|
66
|
+
p << note_label(node) # "#{@xrefs.anchor(node['id'], :label) || '???'}: "
|
67
|
+
para_then_remainder(first, node, p, div)
|
81
68
|
end
|
82
69
|
end
|
83
70
|
end
|
@@ -48,7 +48,7 @@ module IsoDoc
|
|
48
48
|
kw.nil? || kw.empty? and return
|
49
49
|
out.div do |div|
|
50
50
|
clause_name(nil, "Keywords", div, class: "IntroTitle")
|
51
|
-
div.p kw.
|
51
|
+
div.p kw.join(", ") + "."
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
@@ -105,21 +105,24 @@ module IsoDoc
|
|
105
105
|
super
|
106
106
|
abstractbox = docxml.at("//div[@id='abstractbox']")
|
107
107
|
historybox = docxml.at("//div[@id='historybox']")
|
108
|
+
sourcebox = docxml.at("//div[@id='sourcebox']")
|
108
109
|
keywordsbox = docxml.at("//div[@id='keywordsbox']")
|
109
110
|
abstract = docxml.at("//p[@class = 'h1Preface' and text() = 'Summary']/..")
|
110
111
|
history = docxml.at("//p[@class = 'h1Preface' and text() = 'History']/..")
|
112
|
+
source = docxml.at("//p[@class = 'h1Preface' and text() = 'Source']/..")
|
111
113
|
keywords = docxml.at("//p[@class = 'h1Preface' and text() = 'Keywords']/..")
|
112
114
|
abstract.parent = abstractbox if abstract && abstractbox
|
113
115
|
history.parent = historybox if history && historybox
|
116
|
+
source.parent = sourcebox if source && sourcebox
|
114
117
|
keywords.parent = keywordsbox if keywords && keywordsbox
|
115
118
|
end
|
116
119
|
|
117
120
|
def formula_parse1(node, out)
|
118
|
-
out.div **attr_code(
|
121
|
+
out.div **attr_code(class: "formula") do |div|
|
119
122
|
div.p **attr_code(class: "formula") do |p|
|
120
123
|
insert_tab(div, 1)
|
121
124
|
parse(node.at(ns("./stem")), div)
|
122
|
-
lbl = anchor(node['id'], :label, false)
|
125
|
+
lbl = @xrefs.anchor(node['id'], :label, false)
|
123
126
|
unless lbl.nil?
|
124
127
|
insert_tab(div, 1)
|
125
128
|
div << "(#{lbl})"
|
@@ -150,10 +153,8 @@ module IsoDoc
|
|
150
153
|
super.merge(valign: "top")
|
151
154
|
end
|
152
155
|
|
153
|
-
def
|
154
|
-
|
155
|
-
node.children.each { |n| parse(n, ol) }
|
156
|
-
end
|
156
|
+
def ol_attrs(node)
|
157
|
+
{ class: node["class"], id: node["id"], style: keep_style(node) }
|
157
158
|
end
|
158
159
|
|
159
160
|
def toWord(result, filename, dir, header)
|
@@ -211,8 +212,9 @@ module IsoDoc
|
|
211
212
|
next unless auth && dest
|
212
213
|
t == "copyright" and p = auth&.at(".//p") and
|
213
214
|
p["class"] = "boilerplateHdr"
|
214
|
-
auth&.xpath(".//p[not(@class)]")&.
|
215
|
+
auth&.xpath(".//p[not(@class)]")&.each_with_index do |p, i|
|
215
216
|
p["class"] = "boilerplate"
|
217
|
+
i == 0 && t == "copyright" and p["style"] = "text-align:center;"
|
216
218
|
end
|
217
219
|
auth << "<p> </p><p> </p><p> </p>" unless t == "copyright"
|
218
220
|
dest.replace(auth.remove)
|
data/lib/isodoc/itu/xref.rb
CHANGED
@@ -4,20 +4,29 @@ require "fileutils"
|
|
4
4
|
|
5
5
|
module IsoDoc
|
6
6
|
module ITU
|
7
|
-
|
7
|
+
class Xref < IsoDoc::Xref
|
8
|
+
def initialize(lang, script, klass, labels, options)
|
9
|
+
super
|
10
|
+
@hierarchical_assets = options[:hierarchical_assets]
|
11
|
+
end
|
12
|
+
|
8
13
|
def annex_name_lbl(clause, num)
|
9
|
-
lbl = clause["obligation"] == "informative" ? @
|
14
|
+
lbl = clause["obligation"] == "informative" ? @labels["appendix"] : @labels["annex"]
|
10
15
|
l10n("<b>#{lbl} #{num}</b>")
|
11
16
|
end
|
12
17
|
|
13
18
|
def annex_names(clause, num)
|
14
|
-
lbl = clause["obligation"] == "informative" ? @
|
19
|
+
lbl = clause["obligation"] == "informative" ? @labels["appendix"] : @labels["annex"]
|
15
20
|
@anchors[clause["id"]] =
|
16
21
|
{ label: annex_name_lbl(clause, num), type: "clause",
|
17
22
|
xref: "#{lbl} #{num}", level: 1 }
|
18
|
-
|
19
|
-
|
20
|
-
|
23
|
+
if a = single_annex_special_section(clause)
|
24
|
+
annex_names1(a, "#{num}", 1)
|
25
|
+
else
|
26
|
+
clause.xpath(ns("./clause | ./references | ./terms | ./definitions")).
|
27
|
+
each_with_index do |c, i|
|
28
|
+
annex_names1(c, "#{num}.#{i + 1}", 2)
|
29
|
+
end
|
21
30
|
end
|
22
31
|
hierarchical_asset_names(clause, num)
|
23
32
|
end
|
@@ -52,8 +61,8 @@ module IsoDoc
|
|
52
61
|
hierarchical_asset_names(d.xpath("//xmlns:preface/child::*"), "Preface") :
|
53
62
|
sequential_asset_names(d.xpath("//xmlns:preface/child::*"))
|
54
63
|
n = section_names(d.at(ns("//clause[title = 'Scope']")), 0, 1)
|
55
|
-
n = section_names(d.at(ns("//bibliography/clause[
|
56
|
-
"//bibliography/references[
|
64
|
+
n = section_names(d.at(ns("//bibliography/clause[.//references[@normative = 'true']] | "\
|
65
|
+
"//bibliography/references[@normative = 'true']")), n, 1)
|
57
66
|
n = section_names(d.at(ns("//sections/terms | "\
|
58
67
|
"//sections/clause[descendant::terms]")), n, 1)
|
59
68
|
n = section_names(d.at(ns("//sections/definitions")), n, 1)
|
@@ -63,15 +72,11 @@ module IsoDoc
|
|
63
72
|
termexample_anchor_names(d)
|
64
73
|
end
|
65
74
|
|
66
|
-
def hiersep
|
67
|
-
"-"
|
68
|
-
end
|
69
|
-
|
70
75
|
MIDDLE_SECTIONS = "//clause[title = 'Scope'] | "\
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
76
|
+
"//foreword | //introduction | //acknowledgements | "\
|
77
|
+
"//references[@normative = 'true'] | "\
|
78
|
+
"//sections/terms | //preface/clause | "\
|
79
|
+
"//sections/definitions | //clause[parent::sections]".freeze
|
75
80
|
|
76
81
|
def middle_section_asset_names(d)
|
77
82
|
return super unless @hierarchical_assets
|
@@ -81,7 +86,7 @@ module IsoDoc
|
|
81
86
|
end
|
82
87
|
|
83
88
|
def sequential_figure_names(clause)
|
84
|
-
c = IsoDoc::
|
89
|
+
c = IsoDoc::XrefGen::Counter.new
|
85
90
|
j = 0
|
86
91
|
clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]")).each do |t|
|
87
92
|
if t.parent.name == "figure" then j += 1
|
@@ -92,12 +97,12 @@ module IsoDoc
|
|
92
97
|
label = c.print + (j.zero? ? "" : "-#{(96 + j).chr.to_s}")
|
93
98
|
next if t["id"].nil? || t["id"].empty?
|
94
99
|
@anchors[t["id"]] =
|
95
|
-
anchor_struct(label, nil, @
|
100
|
+
anchor_struct(label, nil, @labels["figure"], "figure", t["unnumbered"])
|
96
101
|
end
|
97
102
|
end
|
98
103
|
|
99
104
|
def hierarchical_figure_names(clause, num)
|
100
|
-
c = IsoDoc::
|
105
|
+
c = IsoDoc::XrefGen::Counter.new
|
101
106
|
j = 0
|
102
107
|
clause.xpath(ns(".//figure | .//sourcecode[not(ancestor::example)]")).each do |t|
|
103
108
|
if t.parent.name == "figure" then j += 1
|
@@ -108,7 +113,7 @@ module IsoDoc
|
|
108
113
|
label = "#{num}#{hiersep}#{c.print}" +
|
109
114
|
(j.zero? ? "" : "#{hierfigsep}#{(96 + j).chr.to_s}")
|
110
115
|
next if t["id"].nil? || t["id"].empty?
|
111
|
-
@anchors[t["id"]] = anchor_struct(label, nil, @
|
116
|
+
@anchors[t["id"]] = anchor_struct(label, nil, @labels["figure"], "figure",
|
112
117
|
t["unnumbered"])
|
113
118
|
end
|
114
119
|
end
|
@@ -116,12 +121,42 @@ module IsoDoc
|
|
116
121
|
def sequential_formula_names(clause)
|
117
122
|
clause&.first&.xpath(ns(MIDDLE_SECTIONS))&.each do |c|
|
118
123
|
if c["id"] && @anchors[c["id"]]
|
119
|
-
|
124
|
+
hierarchical_formula_names(c, @anchors[c["id"]][:label] ||
|
125
|
+
@anchors[c["id"]][:xref] || "???")
|
120
126
|
else
|
121
127
|
hierarchical_formula_names(c, "???")
|
122
128
|
end
|
123
129
|
end
|
124
130
|
end
|
131
|
+
|
132
|
+
def hierarchical_formula_names(clause, num)
|
133
|
+
c = IsoDoc::XrefGen::Counter.new
|
134
|
+
clause.xpath(ns(".//formula")).each do |t|
|
135
|
+
next if t["id"].nil? || t["id"].empty?
|
136
|
+
@anchors[t["id"]] =
|
137
|
+
anchor_struct("#{num}-#{c.increment(t).print}", nil,
|
138
|
+
t["inequality"] ? @labels["inequality"] : @labels["formula"],
|
139
|
+
"formula", t["unnumbered"])
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def reference_names(ref)
|
144
|
+
super
|
145
|
+
@anchors[ref["id"]] = { xref: @anchors[ref["id"]][:xref].sub(/^\[/, '').sub(/\]$/, '') }
|
146
|
+
end
|
147
|
+
|
148
|
+
def termnote_anchor_names(docxml)
|
149
|
+
docxml.xpath(ns("//term[descendant::termnote]")).each do |t|
|
150
|
+
c = IsoDoc::XrefGen::Counter.new
|
151
|
+
notes = t.xpath(ns(".//termnote"))
|
152
|
+
notes.each do |n|
|
153
|
+
return if n["id"].nil? || n["id"].empty?
|
154
|
+
idx = notes.size == 1 ? "" : " #{c.increment(n).print}"
|
155
|
+
@anchors[n["id"]] = anchor_struct(idx, n, @labels["note_xref"],
|
156
|
+
"termnote", false)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
125
160
|
end
|
126
161
|
end
|
127
162
|
end
|