metanorma-ieee 1.1.1 → 1.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/lib/html2doc/ieee_wp/lists.rb +22 -0
  3. data/lib/html2doc/ieee_wp.rb +6 -0
  4. data/lib/isodoc/ieee/base_convert.rb +5 -0
  5. data/lib/isodoc/ieee/html/header_wp.html +348 -0
  6. data/lib/isodoc/ieee/html/ieee_wp.css +3316 -0
  7. data/lib/isodoc/ieee/html/ieee_wp.scss +3174 -0
  8. data/lib/isodoc/ieee/html/word_ieee_colophon_wp.html +129 -0
  9. data/lib/isodoc/ieee/html/word_ieee_intro_wp.html +142 -0
  10. data/lib/isodoc/ieee/html/word_ieee_titlepage_wp.html +333 -0
  11. data/lib/isodoc/ieee/html/wordstyle_wp.css +5795 -0
  12. data/lib/isodoc/ieee/html/wordstyle_wp.scss +5357 -0
  13. data/lib/isodoc/ieee/html/wp_image001.emz +0 -0
  14. data/lib/isodoc/ieee/html/wp_image003.emz +0 -0
  15. data/lib/isodoc/ieee/html/wp_image008.emz +0 -0
  16. data/lib/isodoc/ieee/i18n-en.yaml +1 -0
  17. data/lib/isodoc/ieee/metadata.rb +15 -5
  18. data/lib/isodoc/ieee/presentation_xml_convert.rb +44 -5
  19. data/lib/isodoc/ieee/word_authority.rb +14 -13
  20. data/lib/isodoc/ieee/word_cleanup.rb +43 -20
  21. data/lib/isodoc/ieee/word_cleanup_blocks.rb +23 -17
  22. data/lib/isodoc/ieee/word_convert.rb +27 -7
  23. data/lib/isodoc/ieee/word_wp_cleanup.rb +220 -0
  24. data/lib/isodoc/ieee/word_wp_convert.rb +115 -0
  25. data/lib/isodoc/ieee/xref.rb +24 -2
  26. data/lib/metanorma/ieee/basicdoc.rng +18 -2
  27. data/lib/metanorma/ieee/biblio.rng +1 -1
  28. data/lib/metanorma/ieee/boilerplate_wp.adoc +95 -0
  29. data/lib/metanorma/ieee/cleanup.rb +10 -6
  30. data/lib/metanorma/ieee/cleanup_ref.rb +8 -0
  31. data/lib/metanorma/ieee/converter.rb +5 -2
  32. data/lib/metanorma/ieee/front.rb +13 -12
  33. data/lib/metanorma/ieee/isodoc.rng +18 -1
  34. data/lib/metanorma/ieee/validate.rb +8 -9
  35. data/lib/metanorma/ieee/validate_section.rb +1 -2
  36. data/lib/metanorma/ieee/validate_style.rb +1 -2
  37. data/lib/metanorma/ieee/version.rb +1 -1
  38. data/lib/metanorma-ieee.rb +1 -0
  39. data/lib/relaton/render/config.yml +6 -6
  40. data/metanorma-ieee.gemspec +1 -1
  41. metadata +20 -4
@@ -12,6 +12,7 @@ example: Example
12
12
  table_of_contents: Contents
13
13
  viewed: accessed
14
14
  adapted_from: "adapted from "
15
+ references: References
15
16
  doctype_abbrev:
16
17
  standard: Std.
17
18
  recommended-practice: Rec. Prac.
@@ -7,11 +7,21 @@ module IsoDoc
7
7
  def initialize(lang, script, i18n, fonts_options = {})
8
8
  super
9
9
  @metadata[:issueddate] = "<Date Approved>"
10
+ logos
11
+ end
12
+
13
+ def logos
14
+ here = File.join(File.dirname(__FILE__), "html")
15
+ %i(wp_image001_emz wp_image003_emz wp_image008_emz)
16
+ .each do |w|
17
+ img = w.to_s.sub("_emz", ".emz")
18
+ set(w, File.expand_path(File.join(here, img)))
19
+ end
10
20
  end
11
21
 
12
22
  def bibdate(isoxml, _out)
13
23
  isoxml.xpath(ns("//bibdata/date[@format = 'ddMMMyyyy']")).each do |d|
14
- set("#{d['type'].gsub(/-/, '_')}date".to_sym, Common::date_range(d))
24
+ set("#{d['type'].gsub('-', '_')}date".to_sym, Common::date_range(d))
15
25
  end
16
26
  draft = isoxml.at(ns("//bibdata/date[@type = 'issued']")) ||
17
27
  isoxml.at(ns("//bibdata/date[@type = 'circulated']")) ||
@@ -42,25 +52,25 @@ module IsoDoc
42
52
  end
43
53
 
44
54
  def society(xml)
45
- society = xml.at(ns("//bibdata/ext/editorialgroup/"\
55
+ society = xml.at(ns("//bibdata/ext/editorialgroup/" \
46
56
  "society"))&.text || "<Society>"
47
57
  set(:society, society)
48
58
  end
49
59
 
50
60
  def tc(xml)
51
- tc = xml.at(ns("//bibdata/ext/editorialgroup/"\
61
+ tc = xml.at(ns("//bibdata/ext/editorialgroup/" \
52
62
  "committee"))&.text || "<Committee Name>"
53
63
  set(:technical_committee, tc)
54
64
  end
55
65
 
56
66
  def wg(xml)
57
- wg = xml.at(ns("//bibdata/ext/editorialgroup/"\
67
+ wg = xml.at(ns("//bibdata/ext/editorialgroup/" \
58
68
  "working-group")) or return nil
59
69
  set(:working_group, wg.text)
60
70
  end
61
71
 
62
72
  def bg(xml)
63
- bg = xml.at(ns("//bibdata/ext/editorialgroup/"\
73
+ bg = xml.at(ns("//bibdata/ext/editorialgroup/" \
64
74
  "balloting-group")) or return nil
65
75
  set(:balloting_group, bg.text)
66
76
  set(:balloting_group_type, bg["type"])
@@ -39,9 +39,8 @@ module IsoDoc
39
39
  end
40
40
 
41
41
  def eref_localities1(opt)
42
- return nil if opt[:type] == "anchor"
43
-
44
- opt[:type] = opt[:type].downcase
42
+ opt[:type] == "anchor" and return nil
43
+ opt[:type].downcase!
45
44
  opt[:lang] == "zh" and return l10n(eref_localities1_zh(opt))
46
45
  ret = ""
47
46
  opt[:node]["droploc"] != "true" &&
@@ -80,6 +79,23 @@ module IsoDoc
80
79
  end
81
80
 
82
81
  def annex1(elem)
82
+ if @doctype == "whitepaper"
83
+ annex1_whitepaper(elem)
84
+ else
85
+ annex1_default(elem)
86
+ end
87
+ end
88
+
89
+ def annex1_whitepaper(elem)
90
+ lbl = @xrefs.anchor(elem["id"], :label)
91
+ if t = elem.at(ns("./title"))
92
+ t.name = "variant-title"
93
+ t["type"] = "sub"
94
+ end
95
+ elem.children.first.previous = "<title>#{lbl}</title>"
96
+ end
97
+
98
+ def annex1_default(elem)
83
99
  lbl = @xrefs.anchor(elem["id"], :label)
84
100
  if t = elem.at(ns("./title"))
85
101
  t.children = "<strong>#{to_xml(t.children)}</strong>"
@@ -164,14 +180,37 @@ module IsoDoc
164
180
  end
165
181
 
166
182
  def middle_title(docxml)
167
- s = docxml.at(ns("//sections")) or return
183
+ s = middle_title_insert(docxml) or return
184
+ s.previous = middle_title_body
185
+ end
186
+
187
+ def middle_title_body
168
188
  ret = "<p class='zzSTDTitle1'>#{@meta.get[:full_doctitle]}"
169
189
  @meta.get[:amd] || @meta.get[:corr] and ret += "<br/>"
170
190
  @meta.get[:amd] and ret += "Amendment #{@meta.get[:amd]}"
171
191
  @meta.get[:amd] && @meta.get[:corr] and ret += " "
172
192
  @meta.get[:corr] and ret += "Corrigenda #{@meta.get[:corr]}"
173
193
  ret += "</p>"
174
- s.children.first.previous = ret
194
+ ret
195
+ end
196
+
197
+ def middle_title_insert(docxml)
198
+ s = docxml.at(ns("//sections")) or return
199
+ s.children.first
200
+ end
201
+
202
+ def preface_rearrange(doc)
203
+ move_abstract(doc)
204
+ super
205
+ end
206
+
207
+ def move_abstract(doc)
208
+ doc.at(ns("//bibdata/ext/doctype"))&.text == "whitepaper" or return
209
+ source = doc.at(ns("//preface/abstract")) or return
210
+ dest = doc.at(ns("//sections")) ||
211
+ doc.at(ns("//preface")).after("<sections> </sections>").next_element
212
+ dest.children.empty? and dest.children = " "
213
+ dest.children.first.next = source
175
214
  end
176
215
 
177
216
  include Init
@@ -71,7 +71,7 @@ module IsoDoc
71
71
  def officemember_style(docxml)
72
72
  docxml.xpath("//p[@type = 'officemember' or @type = 'officeorgmember']")
73
73
  .each do |p|
74
- p["class"] = "IEEEStdsNamesList"
74
+ p["class"] = stylesmap[:nameslist]
75
75
  end
76
76
  docxml.xpath("//p[@type = 'emeritus_sign']").each do |p|
77
77
  p["class"] = "IEEEStdsParaMemEmeritus"
@@ -80,20 +80,19 @@ module IsoDoc
80
80
 
81
81
  def officeorgrep_style(docxml)
82
82
  docxml.xpath("//p[@type = 'officeorgrepmemberhdr']").each do |p|
83
- p["class"] = "IEEEStdsNamesList"
83
+ p["class"] = stylesmap[:nameslist]
84
84
  p["style"] =
85
85
  "margin-bottom:6.0pt;tab-stops:right 432.0pt;"
86
86
  end
87
87
  docxml.xpath("//p[@type = 'officeorgrepmember']").each do |p|
88
- p["class"] = "IEEEStdsNamesList"
88
+ p["class"] = stylesmap[:nameslist]
89
89
  p["style"] =
90
90
  "margin-top:6.0pt;tab-stops:right dotted 432.0pt;"
91
91
  end
92
92
  end
93
93
 
94
94
  def three_column_officemembers(div)
95
- return unless div
96
-
95
+ div or return
97
96
  ret = three_column_officemembers_split(div)
98
97
  three_column_officemembers_render(div, ret)
99
98
  end
@@ -128,6 +127,7 @@ module IsoDoc
128
127
  end
129
128
  end
130
129
 
130
+ # STYLE
131
131
  def feedback_table1(trow)
132
132
  trow.name = "p"
133
133
  trow["class"] = "IEEEStdsCRTextReg"
@@ -149,6 +149,7 @@ module IsoDoc
149
149
  end
150
150
  end
151
151
 
152
+ # STYLE
152
153
  def feedback_style1(div, idx)
153
154
  div.xpath(".//p").each_with_index do |p, j|
154
155
  p["class"] = idx == 4 ? "IEEEStdsCRTextItal" : "IEEEStdsCRTextReg"
@@ -160,7 +161,7 @@ module IsoDoc
160
161
 
161
162
  def authority_cleanup1(docxml, klass)
162
163
  dest = docxml.at("//div[@id = 'boilerplate-#{klass}-destination']")
163
- auth = docxml.at("//div[@id = 'boilerplate-#{klass}' "\
164
+ auth = docxml.at("//div[@id = 'boilerplate-#{klass}' " \
164
165
  "or @class = 'boilerplate-#{klass}']")
165
166
  auth&.xpath(".//h1[not(text())] | .//h2[not(text())]")&.each(&:remove)
166
167
  authority_cleanup_hdr(auth)
@@ -171,7 +172,7 @@ module IsoDoc
171
172
  (1..2).each do |i|
172
173
  auth&.xpath(".//h#{i}")&.each do |h|
173
174
  h.name = "p"
174
- h["class"] = "IEEEStdsLevel#{i}frontmatter"
175
+ h["class"] = "level#{i}frontmatter"
175
176
  end
176
177
  end
177
178
  end
@@ -191,18 +192,18 @@ module IsoDoc
191
192
  def abstract_cleanup1(source, dest)
192
193
  source.elements.reject { |e| %w(h1 h2).include?(e.name) }.each do |e|
193
194
  e1 = e.dup
194
- e1.xpath(".//p").each do |p|
195
+ e1.xpath("self::p | .//p").each do |p|
196
+ p["class"] = stylesmap[:abstract]
195
197
  p["style"] ||= ""
196
- p["style"] = 'font-family: "Arial", sans-serif;' + p["style"]
198
+ p["style"] = "font-family: 'Arial', sans-serif;#{p['style']}"
197
199
  end
198
- %w(ul ol).include?(e1.name) or e1["class"] = "IEEEStdsAbstractBody"
199
- dest << e1
200
+ dest and dest << e1
200
201
  end
201
202
  end
202
203
 
203
204
  def abstract_header(dest)
204
205
  dest.elements.first.children.first.previous =
205
- "<span class='IEEEStdsAbstractHeader'><span lang='EN-US'>"\
206
+ "<span class='IEEEStdsAbstractHeader'><span lang='EN-US'>" \
206
207
  "Abstract:</span></span> "
207
208
  end
208
209
 
@@ -221,7 +222,7 @@ module IsoDoc
221
222
  dest.replace(intro.remove)
222
223
  i = docxml.at("//h1[@class = 'IntroTitle']")
223
224
  if i.next_element.name == "div" &&
224
- i.next_element["class"] == "IEEEStdsIntroduction"
225
+ i.next_element["class"] == stylesmap[:intro]
225
226
  i.next_element.name = "p"
226
227
  end
227
228
  end
@@ -3,7 +3,7 @@ module IsoDoc
3
3
  class WordConvert < IsoDoc::WordConvert
4
4
  def toWord(result, filename, dir, header)
5
5
  result = from_xhtml(word_cleanup(to_xhtml(result)))
6
- .gsub(/-DOUBLE_HYPHEN_ESCAPE-/, "--")
6
+ .gsub("-DOUBLE_HYPHEN_ESCAPE-", "--")
7
7
  @wordstylesheet = wordstylesheet_update
8
8
  ::Html2Doc::IEEE.new(
9
9
  filename: filename,
@@ -18,7 +18,7 @@ module IsoDoc
18
18
  end
19
19
 
20
20
  def sourcecode_style
21
- "IEEEStdsComputerCode"
21
+ stylesmap[:Sourcecode]
22
22
  end
23
23
 
24
24
  def word_cleanup(docxml)
@@ -75,10 +75,10 @@ module IsoDoc
75
75
  hdr["style"] = "mso-list:l13 level#{idx} lfo33;"
76
76
  elsif hdr.at("./ancestor::div[@class = 'Section3' or @class = 'WordSectionContents']")
77
77
  hdr.name = "p"
78
- hdr["class"] = "IEEEStdsLevel#{idx}frontmatter"
78
+ hdr["class"] = stylesmap["level#{idx}frontmatter".to_sym]
79
79
  else
80
80
  hdr.name = "p"
81
- hdr["class"] = "IEEEStdsLevel#{idx}Header"
81
+ hdr["class"] = stylesmap["level#{idx}header".to_sym]
82
82
  end
83
83
  end
84
84
 
@@ -89,6 +89,7 @@ module IsoDoc
89
89
  end
90
90
  end
91
91
 
92
+ # STYLE
92
93
  def div_cleanup(docxml)
93
94
  d = docxml.at("//div[@class = 'WordSection2']" \
94
95
  "[div[@class = 'WordSection2']]") and
@@ -102,36 +103,58 @@ module IsoDoc
102
103
  end
103
104
  end
104
105
 
105
- STYLESMAP = {
106
- example: "IEEEStdsParagraph",
107
- MsoNormal: "IEEEStdsParagraph",
108
- NormRef: "IEEEStdsParagraph",
109
- Biblio: "IEEEStdsBibliographicEntry",
110
- figure: "IEEEStdsImage",
111
- formula: "IEEEStdsEquation",
112
- Sourcecode: "IEEEStdsComputerCode",
113
- TableTitle: "IEEEStdsRegularTableCaption",
114
- FigureTitle: "IEEEStdsRegularFigureCaption",
115
- }.freeze
106
+ def stylesmap
107
+ {
108
+ example: "IEEEStdsParagraph",
109
+ MsoNormal: "IEEEStdsParagraph",
110
+ NormRef: "IEEEStdsParagraph",
111
+ Biblio: "IEEEStdsBibliographicEntry",
112
+ figure: "IEEEStdsImage",
113
+ formula: "IEEEStdsEquation",
114
+ Sourcecode: "IEEEStdsComputerCode",
115
+ TableTitle: "IEEEStdsRegularTableCaption",
116
+ FigureTitle: "IEEEStdsRegularFigureCaption",
117
+ admonition: "IEEEStdsWarning",
118
+ abstract: "IEEEStdsAbstractBody",
119
+ AbstractTitle: "AbstractTitle",
120
+ level1frontmatter: "IEEEStdsLevel1frontmatter",
121
+ level2frontmatter: "IEEEStdsLevel2frontmatter",
122
+ level3frontmatter: "IEEEStdsLevel3frontmatter",
123
+ level1header: "IEEEStdsLevel1Header",
124
+ level2header: "IEEEStdsLevel2Header",
125
+ level3header: "IEEEStdsLevel3Header",
126
+ level4header: "IEEEStdsLevel4Header",
127
+ level5header: "IEEEStdsLevel5Header",
128
+ level6header: "IEEEStdsLevel6Header",
129
+ zzSTDTitle1: "IEEEStdsTitle",
130
+ tabledata_center: "IEEEStdsTableData-Center",
131
+ tabledata_left: "IEEEStdsTableData-Left",
132
+ table_head: "IEEEStdsTableLineHead",
133
+ table_subhead: "IEEEStdsTableLineSubhead",
134
+ table_columnhead: "IEEEStdsTableColumnHead",
135
+ nameslist: "IEEEStdsNamesList",
136
+ intro: "IEEEStdsIntroduction",
137
+ }
138
+ end
116
139
 
117
140
  def table_toc_class
118
- %w(IEEEStdsRegularTableCaption TableTitle tabletitle)
141
+ [stylesmap[:TableTitle], "TableTitle", "tabletitle"]
119
142
  end
120
143
 
121
144
  def figure_toc_class
122
- %w(IEEEStdsRegularFigureCaption FigureTitle figuretitle)
145
+ [stylesmap[:FigureTitle], "FigureTitle", "figuretitle"]
123
146
  end
124
147
 
125
148
  def style_cleanup(docxml)
126
149
  note_style_cleanup(docxml)
127
150
  docxml.xpath("//div[@class = 'formula']/p").each do |p|
128
- p["class"] = "IEEEStdsEquation"
151
+ p["class"] = stylesmap[:formula]
129
152
  end
130
- STYLESMAP.each do |k, v|
153
+ stylesmap.each do |k, v|
131
154
  docxml.xpath("//*[@class = '#{k}']").each { |s| s["class"] = v }
132
155
  end
133
156
  docxml.xpath("//p[not(@class)]").each do |p|
134
- p["class"] = "IEEEStdsParagraph"
157
+ p["class"] = stylesmap[:MsoNormal]
135
158
  end
136
159
  end
137
160
  end
@@ -1,13 +1,13 @@
1
1
  module IsoDoc
2
2
  module IEEE
3
3
  class WordConvert < IsoDoc::WordConvert
4
+ # STYLE
4
5
  def admonition_cleanup(docxml)
5
6
  super
6
7
  docxml.xpath("//div[@class = 'zzHelp']").each do |d|
7
8
  d.xpath(".//p").each do |p|
8
- %w(IEEEStdsWarning IEEEStdsParagraph).include?(p["class"]) ||
9
- !p["class"] or next
10
-
9
+ [stylesmap[:admonition], stylesmap[:MsoNormal]]
10
+ .include?(p["class"]) || !p["class"] or next
11
11
  p["class"] = "zzHelp"
12
12
  end
13
13
  end
@@ -22,15 +22,20 @@ module IsoDoc
22
22
  def thead_cleanup(docxml)
23
23
  docxml.xpath("//thead").each do |h|
24
24
  h.xpath(".//td | .//th").each do |t|
25
- if t.at("./p")
26
- t.xpath("./p").each do |p|
27
- p["class"] = "IEEEStdsTableColumnHead"
28
- end
29
- else
30
- t.children =
31
- "<p class='IEEEStdsTableColumnHead'>#{to_xml(t.children)}</p>"
32
- end
25
+ thead_cell_cleanup(t)
26
+ end
27
+ end
28
+ end
29
+
30
+ def thead_cell_cleanup(cell)
31
+ s = stylesmap[:table_columnhead]
32
+ if cell.at("./p")
33
+ cell.xpath("./p").each do |p|
34
+ p["class"] = s
33
35
  end
36
+ else
37
+ cell.children =
38
+ "<p class='#{s}'>#{to_xml(cell.children)}</p>"
34
39
  end
35
40
  end
36
41
 
@@ -63,12 +68,12 @@ module IsoDoc
63
68
  end
64
69
 
65
70
  def td_style(cell, idx)
66
- if cell.name == "th" && idx.zero? then "IEEEStdsTableLineHead"
67
- elsif cell.name == "th" then "IEEEStdsTableLineSubhead"
71
+ if cell.name == "th" && idx.zero? then stylesmap[:table_head]
72
+ elsif cell.name == "th" then stylesmap[:table_subhead]
68
73
  elsif cell["align"] == "center" ||
69
- /text-align:center/.match?(cell["style"])
70
- "IEEEStdsTableData-Center"
71
- else "IEEEStdsTableData-Left"
74
+ cell["style"].include?("text-align:center")
75
+ stylesmap[:tabledata_center]
76
+ else stylesmap[:tabledata_left]
72
77
  end
73
78
  end
74
79
 
@@ -95,7 +100,7 @@ module IsoDoc
95
100
  def example_caption(docxml)
96
101
  docxml.xpath("//p[@class = 'example-title']").each do |s|
97
102
  s.children = "<em>#{to_xml(s.children)}</em>"
98
- s["class"] = "IEEEStdsParagraph"
103
+ s["class"] = stylesmap[:MsoNormal]
99
104
  end
100
105
  end
101
106
 
@@ -135,6 +140,7 @@ module IsoDoc
135
140
  end
136
141
 
137
142
  # hardcoded list style for notes
143
+ # STYLE
138
144
  def note_style_cleanup1(multi, div, seq)
139
145
  div.xpath(".//p[@class = 'Note' or not(@class)]")
140
146
  .each_with_index do |p, i|
@@ -3,6 +3,7 @@ require_relative "init"
3
3
  require_relative "word_cleanup"
4
4
  require_relative "word_cleanup_blocks"
5
5
  require_relative "word_authority"
6
+ require_relative "word_wp_convert"
6
7
 
7
8
  module IsoDoc
8
9
  module IEEE
@@ -10,16 +11,32 @@ module IsoDoc
10
11
  def initialize(options)
11
12
  @libdir = File.dirname(__FILE__)
12
13
  super
14
+ init_wp(options)
15
+ end
16
+
17
+ def init_wp(options)
18
+ @wp = ::IsoDoc::IEEE::WordWPConvert.new(options)
13
19
  end
14
20
 
15
21
  def convert1(docxml, filename, dir)
16
- doctype = docxml.at(ns("//bibdata/ext/doctype"))
17
- if %w(amendment corrigendum).include?(doctype&.text)
22
+ if %w(amendment corrigendum).include?(@doctype)
18
23
  @header = html_doc_path("header_amd.html")
19
24
  end
20
25
  super
21
26
  end
22
27
 
28
+ def convert(input_filename, file = nil, debug = false,
29
+ output_filename = nil)
30
+ file ||= File.read(input_filename, encoding: "utf-8")
31
+ docxml = Nokogiri::XML(file) { |config| config.huge }
32
+ doctype = docxml&.at(ns("//bibdata/ext/doctype"))&.text
33
+ if @wp && doctype == "whitepaper"
34
+ @wp.convert(input_filename, file, debug, output_filename)
35
+ else
36
+ super
37
+ end
38
+ end
39
+
23
40
  def default_fonts(options)
24
41
  { bodyfont: (if options[:script] == "Hans"
25
42
  '"Source Han Sans",serif'
@@ -51,7 +68,7 @@ module IsoDoc
51
68
  page_break(out)
52
69
  out.div **attr_code(id: clause["id"], class: "abstract") do |s|
53
70
  clause_name(clause, clause.at(ns("./title")), s,
54
- { class: "AbstractTitle" })
71
+ { class: stylesmap[:AbstractTitle] })
55
72
  clause.elements.each { |e| parse(e, s) unless e.name == "title" }
56
73
  end
57
74
  end
@@ -76,13 +93,14 @@ module IsoDoc
76
93
 
77
94
  def middle_title_ieee(docxml, out)
78
95
  title = docxml.at(ns("//p[@class = 'zzSTDTitle1']")) or return
79
- out.p(class: "IEEEStdsTitle", style: "margin-top:70.0pt") do |p|
96
+ out.p(class: stylesmap[:zzSTDTitle1],
97
+ style: "margin-left:0cm;margin-top:70.0pt") do |p|
80
98
  title.children.each { |n| parse(n, p) }
81
99
  end
82
100
  end
83
101
 
84
102
  def admonition_name_parse(_node, div, name)
85
- div.p class: "IEEEStdsWarning", style: "text-align:center;" do |p|
103
+ div.p class: stylesmap[:admonition], style: "text-align:center;" do |p|
86
104
  p.b do |b|
87
105
  name.children.each { |n| parse(n, b) }
88
106
  end
@@ -92,8 +110,8 @@ module IsoDoc
92
110
  def admonition_class(node)
93
111
  if node["type"] == "editorial" then "zzHelp"
94
112
  elsif node.ancestors("introduction").empty?
95
- "IEEEStdsWarning"
96
- else "IEEEStdsIntroduction"
113
+ stylesmap[:admonition]
114
+ else stylesmap[:intro]
97
115
  end
98
116
  end
99
117
 
@@ -121,6 +139,7 @@ module IsoDoc
121
139
  end
122
140
  end
123
141
 
142
+ # STYLE
124
143
  def formula_where1(out, dterm, ddefn)
125
144
  out.p class: "IEEEStdsEquationVariableList" do |p|
126
145
  dterm.children.each { |n| parse(n, p) }
@@ -176,6 +195,7 @@ module IsoDoc
176
195
  end
177
196
  end
178
197
 
198
+ # STYLE
179
199
  def table_of_contents(clause, out)
180
200
  out.div class: "WordSectionContents" do |div|
181
201
  clause_name(clause, clause.at(ns("./title")), div,