metanorma-bipm 1.0.7 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -8,7 +8,8 @@ module IsoDoc
8
8
  end
9
9
 
10
10
  SI_ASPECT = %w(A_e_deltanu A_e cd_Kcd_h_deltanu cd_Kcd full K_k_deltanu
11
- K_k kg_h_c_deltanu kg_h m_c_deltanu m_c mol_NA s_deltanu).freeze
11
+ K_k kg_h_c_deltanu kg_h m_c_deltanu m_c mol_NA
12
+ s_deltanu).freeze
12
13
 
13
14
  def initialize(lang, script, labels)
14
15
  super
@@ -24,12 +25,12 @@ module IsoDoc
24
25
  TITLE = "//bibdata/title".freeze
25
26
 
26
27
  def title(isoxml, _out)
27
- lang1, lang2 = @lang == "fr" ? %w(fr en) : %w(en fr)
28
+ lang1, lang2 = @lang == "fr" ? %w(fr en) : %w(en fr)
28
29
  set(:doctitle, @c.encode(isoxml&.at(
29
30
  ns("#{TITLE}[@type='main'][@language='#{lang1}']"))&.text || ""))
30
31
  set(:docsubtitle, @c.encode(isoxml&.at(
31
32
  ns("#{TITLE}[@type='main'][@language='#{lang2}']"))&.text || ""))
32
- %w(appendix annex part subtitle).each do |e|
33
+ %w(appendix annex part subtitle provenance).each do |e|
33
34
  set("#{e}title".to_sym, @c.encode(isoxml&.at(
34
35
  ns("#{TITLE}[@type='#{e}'][@language='#{lang1}']"))&.text || ""))
35
36
  set("#{e}subtitle".to_sym, @c.encode(isoxml&.at(
@@ -40,9 +41,10 @@ module IsoDoc
40
41
  def status_print(status)
41
42
  return "Procès-Verbal" if status == "procès-verbal"
42
43
  return "CIPM-MRA" if status == "cipm-mra"
44
+
43
45
  status.split(/[- ]/).map.with_index do |s, i|
44
- (%w(en de).include?(s) && i > 0) ? s : s.capitalize
45
- end.join(' ')
46
+ %w(en de).include?(s) && i.positive? ? s : s.capitalize
47
+ end.join(" ")
46
48
  end
47
49
 
48
50
  def docid(isoxml, _out)
@@ -59,13 +61,19 @@ module IsoDoc
59
61
  dn = isoxml.at(ns("//bibdata/ext/structuredidentifier/part"))
60
62
  dn and set(:partid, @i18n.l10n("#{label1} #{dn&.text}"))
61
63
  dn and set(:partid_alt, @i18n.l10n("#{label2} #{dn&.text}"))
62
- set(:org_abbrev,
63
- isoxml.at(ns("//bibdata/ext/editorialgroup/committee[@acronym = 'JCGM']")) ? "JCGM" : "BIPM")
64
+ set(:org_abbrev,
65
+ isoxml.at(ns("//bibdata/ext/editorialgroup/committee"\
66
+ "[@acronym = 'JCGM']")) ? "JCGM" : "BIPM")
64
67
  end
65
68
 
66
69
  def extract_person_names_affiliations(authors)
67
70
  extract_person_affiliations(authors)
68
71
  end
72
+
73
+ def bibdate(isoxml, _out)
74
+ pubdate = isoxml.at(ns("//bibdata/date[not(@format)][@type = 'published']"))
75
+ pubdate and set(:pubdate_monthyear, monthyr(pubdate.text))
76
+ end
69
77
  end
70
78
  end
71
79
  end
@@ -4,7 +4,7 @@ module IsoDoc
4
4
  module BIPM
5
5
  # A {Converter} implementation that generates PDF HTML output, and a
6
6
  # document schema encapsulation of the document for validation
7
- class PdfConvert < IsoDoc::XslfoPdfConvert
7
+ class PdfConvert < IsoDoc::XslfoPdfConvert
8
8
  def initialize(options)
9
9
  @libdir = File.dirname(__FILE__)
10
10
  super
@@ -15,20 +15,23 @@ module IsoDoc
15
15
  end
16
16
 
17
17
  def pdf_stylesheet(docxml)
18
- return "jcgm.standard.xsl" if docxml&.at(ns("//bibdata/ext/editorialgroup/committee/@acronym"))&.value == "JCGM"
18
+ docxml&.at(ns("//bibdata/ext/editorialgroup/committee/@acronym"))
19
+ &.value == "JCGM" and
20
+ return "jcgm.standard.xsl"
21
+
19
22
  doctype = docxml&.at(ns("//bibdata/ext/doctype"))&.text
20
- doctype = "brochure" unless %w(guide mise-en-pratique rapport).
21
- include? doctype
23
+ doctype = "brochure" unless %w(guide mise-en-pratique rapport)
24
+ .include? doctype
22
25
  "bipm.#{doctype}.xsl"
23
26
  end
24
27
 
25
28
  def pdf_options(docxml)
29
+ n = configuration.document_namespace
30
+ q = "//m:bipm-standard/m:bibdata/m:language[@current = 'true']"
26
31
  if docxml.root.name == "metanorma-collection" &&
27
- docxml.at("//m:bipm-standard/m:bibdata/m:language[@current = 'true'][. = 'fr']",
28
- "m" => configuration.document_namespace) &&
29
- docxml.at("//m:bipm-standard/m:bibdata/m:language[@current = 'true'][. = 'en']",
30
- "m" => configuration.document_namespace)
31
- "--split-by-language"
32
+ docxml.at("#{q}[. = 'fr']", "m" => n) &&
33
+ docxml.at("#{q}[. = 'en']", "m" => n)
34
+ "#{super} --split-by-language"
32
35
  else
33
36
  super
34
37
  end
@@ -6,16 +6,25 @@ require_relative "index"
6
6
  module IsoDoc
7
7
  module BIPM
8
8
  class PresentationXMLConvert < IsoDoc::Generic::PresentationXMLConvert
9
+ def convert1(docxml, filename, dir)
10
+ @jcgm = docxml&.at(ns("//bibdata/ext/editorialgroup/committee/"\
11
+ "@acronym"))&.value == "JCGM"
12
+ super
13
+ end
14
+
9
15
  def table1(f)
10
16
  return if labelled_ancestor(f)
11
17
  return if f["unnumbered"]
18
+
12
19
  n = @xrefs.anchor(f['id'], :label, false)
13
20
  prefix_name(f, ".<tab/>", l10n("#{@i18n.table.capitalize} #{n}"), "name")
14
21
  end
15
22
 
16
23
  def annex1(f)
24
+ return super if @jcgm
17
25
  return if f["unnumbered"] == "true"
18
- lbl = @xrefs.anchor(f['id'], :label)
26
+
27
+ lbl = @xrefs.anchor(f["id"], :label)
19
28
  if t = f.at(ns("./title"))
20
29
  t.children = "<strong>#{t.children.to_xml}</strong>"
21
30
  end
@@ -25,6 +34,7 @@ module IsoDoc
25
34
  def clause1(f)
26
35
  return if f["unnumbered"] == "true"
27
36
  return if f.at(("./ancestor::*[@unnumbered = 'true']"))
37
+
28
38
  super
29
39
  end
30
40
 
@@ -35,21 +45,21 @@ module IsoDoc
35
45
 
36
46
  def doccontrol(docxml)
37
47
  return unless docxml.at(ns("//bibdata/relation[@type = 'supersedes']"))
48
+
38
49
  clause = <<~END
39
- <doccontrol>
40
- <title>Document Control</title>
41
- <table unnumbered="true"><tbody>
42
- <tr><th>Authors:</th><td/><td>#{list_authors(docxml)}</td></tr>
43
- #{doccontrol_row1(docxml)}
44
- #{doccontrol_row2(docxml)}
45
- #{list_drafts(docxml)}
46
- </tbody></table></doccontrol>
50
+ <doccontrol>
51
+ <title>Document Control</title>
52
+ <table unnumbered="true"><tbody>
53
+ <tr><th>Authors:</th><td/><td>#{list_authors(docxml)}</td></tr>
54
+ #{doccontrol_row1(docxml)} #{doccontrol_row2(docxml)} #{list_drafts(docxml)}
55
+ </tbody></table></doccontrol>
47
56
  END
48
57
  docxml.root << clause
49
58
  end
50
59
 
51
60
  def doccontrol_row1(docxml)
52
61
  return "" if list_draft(docxml, 1) == ["", ""] && list_cochairs(docxml).empty?
62
+
53
63
  <<~ROW
54
64
  <tr>#{list_draft(docxml, 1)&.map { |x| "<td>#{x}</td>" }&.join }
55
65
  <td>#{list_cochairs(docxml)}</td></tr>
@@ -58,6 +68,7 @@ module IsoDoc
58
68
 
59
69
  def doccontrol_row2(docxml)
60
70
  return "" if list_draft(docxml, 2) == ["", ""] && list_chairs(docxml).empty?
71
+
61
72
  <<~ROW
62
73
  <tr>#{list_draft(docxml, 2)&.map { |x| "<td>#{x}</td>" }&.join }
63
74
  <td>#{list_chairs(docxml)}</td></tr>
@@ -67,8 +78,8 @@ module IsoDoc
67
78
  def list_drafts(xml)
68
79
  ret = ""
69
80
  i = 3
70
- while a = list_draft(xml, i) != ["", ""]
71
- ret += "<tr>#{list_draft(xml, i).map { |x| "<td>#{x}</td>" }.join }"\
81
+ while list_draft(xml, i) != ["", ""]
82
+ ret += "<tr>#{list_draft(xml, i).map { |x| "<td>#{x}</td>" }.join} "\
72
83
  "<td/></tr>"
73
84
  i += 1
74
85
  end
@@ -78,6 +89,7 @@ module IsoDoc
78
89
  def list_draft(xml, i)
79
90
  return ["", ""] unless d =
80
91
  xml.at(ns("//bibdata/relation[@type = 'supersedes'][#{i}]/bibitem"))
92
+
81
93
  date = d&.at(ns("./date"))&.text
82
94
  draft = d&.at(ns("./version/draft"))&.text and
83
95
  draft = "Draft #{draft}"
@@ -101,7 +113,7 @@ module IsoDoc
101
113
  ret.empty? and return ""
102
114
  role = xml&.at(ns("//bibdata/contributor[#{COCHAIR}]/role"))&.text
103
115
  label = ret.size > 1 && role ? "#{role}s" : role
104
- "#{label}: #{@i18n.multiple_and(ret, @i18n.get["and"])}"
116
+ "#{label}: #{@i18n.multiple_and(ret, @i18n.get['and'])}"
105
117
  end
106
118
 
107
119
  def list_chairs(xml)
@@ -109,7 +121,7 @@ module IsoDoc
109
121
  ret.empty? and return ""
110
122
  role = xml&.at(ns("//bibdata/contributor#{CHAIR}/role"))&.text
111
123
  label = ret.size > 1 && role ? "#{role}s" : role
112
- "#{label}: #{@i18n.multiple_and(ret, @i18n.get["and"])}"
124
+ "#{label}: #{@i18n.multiple_and(ret, @i18n.get['and'])}"
113
125
  end
114
126
 
115
127
  def list_people(xml, xpath)
@@ -126,13 +138,29 @@ module IsoDoc
126
138
  end
127
139
 
128
140
  def twitter_cldr_localiser_symbols
129
- { group: "&#x202F;", fraction_group: "&#x202F;", fraction_group_digits: 3 }
141
+ { group: "&#x202F;", fraction_group: "&#x202F;",
142
+ fraction_group_digits: 3 }
130
143
  end
131
144
 
132
145
  def mathml1(f, locale)
133
146
  localize_maths(f, locale)
134
147
  end
135
148
 
149
+ def bibdata_i18n(bibdata)
150
+ super
151
+ bibdata_dates(bibdata)
152
+ end
153
+
154
+ def bibdata_dates(bibdata)
155
+ pubdate = bibdata.at(ns("./date[not(@format)][@type = 'published']"))
156
+ return unless pubdate
157
+
158
+ meta = metadata_init(@lang, @script, @i18n)
159
+ pubdate.next = pubdate.dup
160
+ pubdate.next["format"] = "ddMMMyyyy"
161
+ pubdate.next.children = meta.monthyr(pubdate.text)
162
+ end
163
+
136
164
  include Init
137
165
  end
138
166
  end
@@ -8,9 +8,20 @@ module IsoDoc
8
8
  super
9
9
  end
10
10
 
11
+ def parse(docxml)
12
+ @jcgm = docxml&.at(ns("//bibdata/ext/editorialgroup/committee/"\
13
+ "@acronym"))&.value == "JCGM"
14
+ @annexlbl =
15
+ if docxml.at(ns("//bibdata/ext/structuredidentifier/appendix"))
16
+ @labels["appendix"]
17
+ else
18
+ @labels["annex"]
19
+ end
20
+ super
21
+ end
22
+
11
23
  def clause_names(docxml, sect_num)
12
- if docxml&.at(ns("//bibdata/ext/editorialgroup/committee/@acronym"))&.
13
- value == "JCGM"
24
+ if @jcgm
14
25
  clause_names_jcgm(docxml, sect_num)
15
26
  else
16
27
  clause_names_bipm(docxml, sect_num)
@@ -19,21 +30,21 @@ module IsoDoc
19
30
 
20
31
  def clause_names_jcgm(docxml, sect_num)
21
32
  docxml.xpath(ns("//clause[parent::sections][not(@type = 'scope')]"\
22
- "[not(descendant::terms)]")).each_with_index do |c, i|
33
+ "[not(descendant::terms)]")).each do |c|
23
34
  section_names(c, sect_num, 1)
24
35
  end
25
36
  end
26
37
 
27
- def clause_names_bipm(docxml, sect_num)
38
+ def clause_names_bipm(docxml, _sect_num)
28
39
  n = Counter.new
29
40
  docxml.xpath(ns("//sections/clause[not(@unnumbered = 'true')] | "\
30
41
  "//sections/terms[not(@unnumbered = 'true')] | "\
31
- "//sections/definitions[not(@unnumbered = 'true')]")).
32
- each { |c| section_names(c, n, 1) }
42
+ "//sections/definitions[not(@unnumbered = 'true')]"))
43
+ .each { |c| section_names(c, n, 1) }
33
44
  docxml.xpath(ns("//sections/clause[@unnumbered = 'true'] | "\
34
45
  "//sections/terms[@unnumbered = 'true'] | "\
35
- "//sections/definitions[@unnumbered = 'true']")).
36
- each { |c| unnumbered_section_names(c, 1) }
46
+ "//sections/definitions[@unnumbered = 'true']"))
47
+ .each { |c| unnumbered_section_names(c, 1) }
37
48
  end
38
49
 
39
50
  NUMBERED_SUBCLAUSES = "./clause[not(@unnumbered = 'true')] | "\
@@ -48,18 +59,24 @@ module IsoDoc
48
59
  "./terms[@unnumbered = 'true'] | "\
49
60
  "./definitions[@unnumbered = 'true']".freeze
50
61
 
62
+ def section_name_anchors(clause, num, lvl)
63
+ lbl = @jcgm ? "clause_jcgm" : "clause"
64
+ @anchors[clause["id"]] =
65
+ { label: num.print, xref: l10n("#{@labels[lbl]} #{num.print}"),
66
+ level: lvl, type: "clause" }
67
+ end
68
+
51
69
  def section_names(clause, num, lvl)
52
70
  return num if clause.nil?
71
+
53
72
  num.increment(clause)
54
- @anchors[clause["id"]] =
55
- { label: num.print, xref: l10n("#{@labels["clause"]} #{num.print}"),
56
- level: lvl, type: "clause" }
73
+ @anchors[clause["id"]] = section_name_anchors(clause, num, lvl)
57
74
  i = Counter.new
58
75
  clause.xpath(ns(NUMBERED_SUBCLAUSES)).each do |c|
59
76
  i.increment(c)
60
77
  section_names1(c, "#{num.print}.#{i.print}", lvl + 1)
61
78
  end
62
- clause.xpath(ns(UNNUMBERED_SUBCLAUSES)).each_with_index do |c, i|
79
+ clause.xpath(ns(UNNUMBERED_SUBCLAUSES)).each do |c|
63
80
  unnumbered_section_names1(c, lvl + 1)
64
81
  end
65
82
  num
@@ -67,31 +84,37 @@ module IsoDoc
67
84
 
68
85
  def unnumbered_section_names(clause, lvl)
69
86
  return if clause.nil?
70
- lbl = clause&.at(ns("./title"))&.text || "[#{clause["id"]}]"
87
+
88
+ lbl = clause&.at(ns("./title"))&.text || "[#{clause['id']}]"
71
89
  @anchors[clause["id"]] = { label: lbl, xref: l10n(%{"#{lbl}"}),
72
90
  level: lvl, type: "clause" }
73
- clause.xpath(ns(SUBCLAUSES)).each_with_index do |c, i|
91
+ clause.xpath(ns(SUBCLAUSES)).each do |c|
74
92
  unnumbered_section_names1(c, lvl + 1)
75
93
  end
76
94
  end
77
95
 
78
- def section_names1(clause, num, level)
96
+ def section_name1_anchors(clause, num, level)
97
+ lbl = @jcgm ? "" : "#{@labels['subclause']} "
79
98
  @anchors[clause["id"]] =
80
99
  { label: num, level: level,
81
- xref: l10n("#{@labels["subclause"]} #{num}"),
100
+ xref: l10n("#{lbl}#{num}"),
82
101
  type: "clause" }
102
+ end
103
+
104
+ def section_names1(clause, num, level)
105
+ @anchors[clause["id"]] = section_name1_anchors(clause, num, level)
83
106
  i = Counter.new
84
107
  clause.xpath(ns(NUMBERED_SUBCLAUSES)).each do |c|
85
108
  i.increment(c)
86
109
  section_names1(c, "#{num}.#{i.print}", level + 1)
87
110
  end
88
- clause.xpath(ns(UNNUMBERED_SUBCLAUSES)).each_with_index do |c, i|
111
+ clause.xpath(ns(UNNUMBERED_SUBCLAUSES)).each do |c|
89
112
  unnumbered_section_names1(c, lvl + 1)
90
113
  end
91
114
  end
92
115
 
93
116
  def unnumbered_section_names1(clause, level)
94
- lbl = clause&.at(ns("./title"))&.text || "[#{clause["id"]}]"
117
+ lbl = clause&.at(ns("./title"))&.text || "[#{clause['id']}]"
95
118
  @anchors[clause["id"]] =
96
119
  { label: lbl, xref: l10n(%{"#{lbl}"}), level: level, type: "clause" }
97
120
  clause.xpath(ns(SUBCLAUSES)).each do |c|
@@ -101,69 +124,80 @@ module IsoDoc
101
124
 
102
125
  def back_anchor_names(docxml)
103
126
  super
104
- @annexlbl = docxml.at(ns("//bibdata/ext/structuredidentifier/appendix")) ?
105
- @labels["appendix"] : @labels["annex"]
106
- docxml.xpath(ns("//annex[not(@unnumbered = 'true')]")).
107
- each_with_index { |c, i| annex_names(c, (i+1).to_s) }
108
- docxml.xpath(ns("//annex[@unnumbered = 'true']")).
109
- each { |c| unnumbered_annex_names(c) }
127
+ i = @jcgm ? Counter.new("@") : Counter.new(0)
128
+ docxml.xpath(ns("//annex[not(@unnumbered = 'true')]")).each do |c|
129
+ i.increment(c)
130
+ annex_names(c, i.print)
131
+ end
132
+ docxml.xpath(ns("//annex[@unnumbered = 'true']"))
133
+ .each { |c| unnumbered_annex_names(c) }
110
134
  docxml.xpath(ns("//indexsect")).each { |b| preface_names(b) }
111
135
  end
112
136
 
137
+ def annex_name_anchors(clause, num)
138
+ { label: annex_name_lbl(clause, num), type: "clause", value: num.to_s,
139
+ xref: l10n("#{@annexlbl} #{num}"), level: 1 }
140
+ end
141
+
113
142
  def annex_names(clause, num)
114
- @anchors[clause["id"]] =
115
- { label: annex_name_lbl(clause, num), type: "clause", value: num.to_s,
116
- xref: l10n("#{@annexlbl} #{num}"), level: 1 }
143
+ @anchors[clause["id"]] = annex_name_anchors(clause, num)
117
144
  if a = single_annex_special_section(clause)
118
- annex_names1(a, "#{num}", 1)
145
+ annex_names1(a, num.to_s, 1)
119
146
  else
120
147
  i = Counter.new
121
148
  clause.xpath(ns(NUMBERED_SUBCLAUSES)).each do |c|
122
149
  i.increment(c)
123
150
  annex_names1(c, "#{num}.#{i.print}", 2)
124
151
  end
125
- clause.xpath(ns(UNNUMBERED_SUBCLAUSES)).
126
- each { |c| unnumbered_annex_names1(c, 2) }
152
+ clause.xpath(ns(UNNUMBERED_SUBCLAUSES))
153
+ .each { |c| unnumbered_annex_names1(c, 2) }
127
154
  end
128
155
  hierarchical_asset_names(clause, num)
129
156
  end
130
157
 
158
+ def unnumbered_annex_anchors(lbl)
159
+ { label: lbl, type: "clause", value: "",
160
+ xref: l10n(%{"#{lbl}"}), level: 1 }
161
+ end
162
+
131
163
  def unnumbered_annex_names(clause)
132
- lbl = clause&.at(ns("./title"))&.text || "[#{clause["id"]}]"
133
- @anchors[clause["id"]] =
134
- { label: lbl, type: "clause", value: "",
135
- xref: l10n(%{"#{lbl}"}), level: 1 }
164
+ lbl = clause&.at(ns("./title"))&.text || "[#{clause['id']}]"
165
+ @anchors[clause["id"]] = unnumbered_annex_anchors(lbl)
136
166
  if a = single_annex_special_section(clause)
137
- annex_names1(a, "#{num}", 1)
167
+ annex_names1(a, num.to_s, 1)
138
168
  else
139
- clause.xpath(ns(SUBCLAUSES)).
140
- each { |c| unnumbered_annex_names1(c, 2) }
169
+ clause.xpath(ns(SUBCLAUSES))
170
+ .each { |c| unnumbered_annex_names1(c, 2) }
141
171
  end
142
172
  hierarchical_asset_names(clause, lbl)
143
173
  end
144
174
 
175
+ def annex_names1_anchors(num, level)
176
+ lbl = @jcgm ? "" : "#{@annexlbl} "
177
+ { label: num, xref: l10n("#{lbl}#{num}"),
178
+ level: level, type: "clause" }
179
+ end
180
+
145
181
  def annex_names1(clause, num, level)
146
- @anchors[clause["id"]] =
147
- { label: num, xref: l10n("#{@annexlbl} #{num}"),
148
- level: level, type: "clause" }
182
+ @anchors[clause["id"]] = annex_names1_anchors(num, level)
149
183
  i = Counter.new
150
184
  clause.xpath(ns(NUMBERED_SUBCLAUSES)).each do |c|
151
185
  i.increment(c)
152
186
  annex_names1(c, "#{num}.#{i.print}", level + 1)
153
187
  end
154
- clause.xpath(ns(UNNUMBERED_SUBCLAUSES)).
155
- each { |c| unnumbered_annex_names1(c, level + 1) }
188
+ clause.xpath(ns(UNNUMBERED_SUBCLAUSES))
189
+ .each { |c| unnumbered_annex_names1(c, level + 1) }
156
190
  end
157
191
 
158
192
  def unnumbered_annex_names1(clause, level)
159
- lbl = clause&.at(ns("./title"))&.text || "[#{clause["id"]}]"
193
+ lbl = clause&.at(ns("./title"))&.text || "[#{clause['id']}]"
160
194
  @anchors[clause["id"]] = { label: lbl, xref: l10n(%{"#{lbl}"}),
161
195
  level: level, type: "clause" }
162
- clause.xpath(ns(SUBCLAUSES)).
163
- each { |c| unnumbered_annex_names1(c, level + 1) }
196
+ clause.xpath(ns(SUBCLAUSES))
197
+ .each { |c| unnumbered_annex_names1(c, level + 1) }
164
198
  end
165
199
 
166
- def annex_name_lbl(clause, num)
200
+ def annex_name_lbl(_clause, num)
167
201
  l10n("<strong>#{@annexlbl} #{num}</strong>")
168
202
  end
169
203
 
@@ -171,13 +205,14 @@ module IsoDoc
171
205
  c = Counter.new
172
206
  clause.xpath(ns(".//formula")).each do |t|
173
207
  next if t["id"].nil? || t["id"].empty?
174
- @anchors[t["id"]] =
175
- anchor_struct(c.increment(t).print, nil,
176
- t["inequality"] ? @labels["inequality"] : @labels["formula"],
177
- "formula", t["unnumbered"])
208
+
209
+ @anchors[t["id"]] = anchor_struct(
210
+ c.increment(t).print, nil,
211
+ t["inequality"] ? @labels["inequality"] : @labels["formula"],
212
+ "formula", t["unnumbered"]
213
+ )
178
214
  end
179
215
  end
180
-
181
216
  end
182
217
  end
183
218
  end