metanorma-ieee 0.0.1 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.adoc +1 -1
- data/lib/html2doc/ieee/lists.rb +44 -0
- data/lib/html2doc/ieee/notes.rb +57 -0
- data/lib/html2doc/ieee.rb +4 -86
- data/lib/isodoc/ieee/base_convert.rb +56 -0
- data/lib/isodoc/ieee/html/header.html +1 -2
- data/lib/isodoc/ieee/html/header_amd.html +105 -0
- data/lib/isodoc/ieee/html/html_ieee_titlepage.html +14 -12
- data/lib/isodoc/ieee/html/htmlstyle.css +2 -1
- data/lib/isodoc/ieee/html/htmlstyle.scss +1 -0
- data/lib/isodoc/ieee/html/ieee.css +46 -273
- data/lib/isodoc/ieee/html/ieee.scss +46 -257
- data/lib/isodoc/ieee/html/word_ieee_intro.html +1 -1
- data/lib/isodoc/ieee/html/word_ieee_titlepage.html +12 -1
- data/lib/isodoc/ieee/html/wordstyle.css +20 -23
- data/lib/isodoc/ieee/html/wordstyle.scss +20 -17
- data/lib/isodoc/ieee/html_convert.rb +37 -1
- data/lib/isodoc/ieee/i18n-en.yaml +5 -0
- data/lib/isodoc/ieee/ieee.amendment.xsl +5488 -3540
- data/lib/isodoc/ieee/ieee.standard.xsl +5488 -3540
- data/lib/isodoc/ieee/metadata.rb +35 -51
- data/lib/isodoc/ieee/pdf_convert.rb +2 -2
- data/lib/isodoc/ieee/presentation_ref.rb +70 -0
- data/lib/isodoc/ieee/presentation_terms.rb +105 -32
- data/lib/isodoc/ieee/presentation_xml_convert.rb +136 -0
- data/lib/isodoc/ieee/word_authority.rb +73 -3
- data/lib/isodoc/ieee/word_cleanup.rb +55 -65
- data/lib/isodoc/ieee/word_cleanup_blocks.rb +151 -0
- data/lib/isodoc/ieee/word_convert.rb +98 -2
- data/lib/isodoc/ieee/xref.rb +31 -0
- data/lib/metanorma/ieee/boilerplate.xml +72 -23
- data/lib/metanorma/ieee/cleanup.rb +142 -77
- data/lib/metanorma/ieee/cleanup_ref.rb +126 -0
- data/lib/metanorma/ieee/converter.rb +8 -0
- data/lib/metanorma/ieee/front.rb +44 -53
- data/lib/metanorma/ieee/ieee.rng +44 -6
- data/lib/metanorma/ieee/isodoc.rng +32 -1
- data/lib/metanorma/ieee/reqt.rng +1 -1
- data/lib/metanorma/ieee/term_lookup_cleanup.rb +11 -0
- data/lib/metanorma/ieee/validate.rb +105 -57
- data/lib/metanorma/ieee/validate_section.rb +14 -7
- data/lib/metanorma/ieee/validate_style.rb +58 -1
- data/lib/metanorma/ieee/version.rb +1 -1
- data/lib/relaton/render/config.yml +44 -0
- data/lib/relaton/render/general.rb +13 -0
- data/metanorma-itu.gemspec +1 -1
- metadata +13 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 62bafd0727fc5b10d3a146196f4317b9d158802d918c7c3a7e407d689348bac9
|
4
|
+
data.tar.gz: ffd4fbc73ea2b2af25abf3b4b21863e07e79706fc2f2bf8403a75b804e8eb7cf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52bc01c58e681f92ed46c3241db36244fbb805d6ec81678e90ad07b5ad9b7c89c1a528fbfbe411af74a9b7d58c01f032b2bdebaaaa7996dc313fe052ba73e7f0
|
7
|
+
data.tar.gz: 6fb175826c51f3b48ceb6a7b330560f166d358a24412109b09b77f04f84a66bcdc2e75bff43d2d277767257cd619e33265218dd399c47eee842b85799b274ab0
|
data/README.adoc
CHANGED
@@ -8,7 +8,7 @@ image:https://img.shields.io/github/commits-since/metanorma/metanorma-ieee/lates
|
|
8
8
|
|
9
9
|
== Functionality
|
10
10
|
|
11
|
-
This gem processes https://www.metanorma.com[Metanorma documents] following a template for generating
|
11
|
+
This gem processes https://www.metanorma.com[Metanorma documents] following a template for generating IEEE
|
12
12
|
standards and documents.
|
13
13
|
|
14
14
|
The implementation inherits from https://github.com/metanorma/metanorma-standoc.
|
@@ -0,0 +1,44 @@
|
|
1
|
+
class Html2Doc
|
2
|
+
class IEEE < ::Html2Doc
|
3
|
+
def style_list(elem, level, liststyle, listnumber)
|
4
|
+
super
|
5
|
+
elem.parent["level"] = level
|
6
|
+
end
|
7
|
+
|
8
|
+
def list2para(list)
|
9
|
+
return if list.xpath("./li").empty?
|
10
|
+
|
11
|
+
level = list["level"] || "1"
|
12
|
+
list.delete("level")
|
13
|
+
list2para1(list, level, list.name)
|
14
|
+
end
|
15
|
+
|
16
|
+
def list2para1(list, level, type)
|
17
|
+
list.xpath("./li").first["class"] ||= list_style(type, level, "First")
|
18
|
+
list.xpath("./li").last["class"] ||= list_style(type, level, "Last")
|
19
|
+
list.xpath("./li/p").each do |p|
|
20
|
+
p["class"] ||= list_style(type, level, "Middle")
|
21
|
+
end
|
22
|
+
list.xpath("./li").each do |l|
|
23
|
+
l.name = "p"
|
24
|
+
l["class"] ||= list_style(type, level, "Middle")
|
25
|
+
next unless l&.first_element_child&.name == "p"
|
26
|
+
|
27
|
+
l["style"] += (l.first_element_child["style"]&.sub(/mso-list[^;]+;/, "") || "")
|
28
|
+
l.first_element_child.replace(l.first_element_child.children)
|
29
|
+
end
|
30
|
+
list.replace(list.children)
|
31
|
+
end
|
32
|
+
|
33
|
+
def list_style(listtype, level, position)
|
34
|
+
case listtype
|
35
|
+
when "ol" then "IEEEStdsNumberedListLevel#{level}CxSp#{position}"
|
36
|
+
when "ul"
|
37
|
+
case level
|
38
|
+
when "1" then "IEEEStdsUnorderedListCxSp#{position}"
|
39
|
+
else "IEEEStdsUnorderedListLevel2"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
class Html2Doc
|
2
|
+
class IEEE < ::Html2Doc
|
3
|
+
def process_footnote_texts(docxml, footnotes)
|
4
|
+
body = docxml.at("//body")
|
5
|
+
list = body.add_child("<div style='mso-element:footnote-list'/>")
|
6
|
+
footnotes.each_with_index do |f, i|
|
7
|
+
if i.zero?
|
8
|
+
fn = list.first.add_child(footnote_container_nofn(docxml, i + 1))
|
9
|
+
f.parent = fn.first
|
10
|
+
footnote_div_to_p_unstyled(f)
|
11
|
+
else
|
12
|
+
fn = list.first.add_child(footnote_container(docxml, i + 1))
|
13
|
+
f.parent = fn.first
|
14
|
+
footnote_div_to_p(f)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
footnote_cleanup(docxml)
|
18
|
+
end
|
19
|
+
|
20
|
+
def footnote_container_nofn(_docxml, idx)
|
21
|
+
<<~DIV
|
22
|
+
<div style='mso-element:footnote' id='ftn#{idx}'>
|
23
|
+
<a style='mso-footnote-id:ftn#{idx}' href='#_ftn#{idx}'
|
24
|
+
name='_ftnref#{idx}' title='' id='_ftnref#{idx}'></a></div>
|
25
|
+
DIV
|
26
|
+
end
|
27
|
+
|
28
|
+
def footnote_div_to_p_unstyled(elem)
|
29
|
+
if %w{div aside}.include? elem.name
|
30
|
+
if elem.at(".//p")
|
31
|
+
elem.replace(elem.children)
|
32
|
+
else
|
33
|
+
elem.name = "p"
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def transform_footnote_text(note)
|
39
|
+
note["id"] = ""
|
40
|
+
note.xpath(".//div").each { |div| div.replace(div.children) }
|
41
|
+
note.xpath(".//aside | .//p").each do |p|
|
42
|
+
p.name = "p"
|
43
|
+
%w(IEEEStdsCRTextReg IEEEStdsCRTextItal).include?(p["class"]) or
|
44
|
+
p["class"] = "IEEEStdsFootnote"
|
45
|
+
end
|
46
|
+
note.remove
|
47
|
+
end
|
48
|
+
|
49
|
+
def cleanup(docxml)
|
50
|
+
super
|
51
|
+
docxml.xpath("//div[@class = 'Note']").each do |d|
|
52
|
+
d.delete("class")
|
53
|
+
end
|
54
|
+
docxml
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/lib/html2doc/ieee.rb
CHANGED
@@ -1,89 +1,7 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
def process_footnote_texts(docxml, footnotes)
|
4
|
-
body = docxml.at("//body")
|
5
|
-
list = body.add_child("<div style='mso-element:footnote-list'/>")
|
6
|
-
footnotes.each_with_index do |f, i|
|
7
|
-
if i.zero?
|
8
|
-
fn = list.first.add_child(footnote_container_nofn(docxml, i + 1))
|
9
|
-
f.parent = fn.first
|
10
|
-
footnote_div_to_p_unstyled(f)
|
11
|
-
else
|
12
|
-
fn = list.first.add_child(footnote_container(docxml, i + 1))
|
13
|
-
f.parent = fn.first
|
14
|
-
footnote_div_to_p(f)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
footnote_cleanup(docxml)
|
18
|
-
end
|
19
|
-
|
20
|
-
def footnote_container_nofn(_docxml, idx)
|
21
|
-
<<~DIV
|
22
|
-
<div style='mso-element:footnote' id='ftn#{idx}'>
|
23
|
-
<a style='mso-footnote-id:ftn#{idx}' href='#_ftn#{idx}'
|
24
|
-
name='_ftnref#{idx}' title='' id='_ftnref#{idx}'></a></div>
|
25
|
-
DIV
|
26
|
-
end
|
27
|
-
|
28
|
-
def footnote_div_to_p_unstyled(elem)
|
29
|
-
if %w{div aside}.include? elem.name
|
30
|
-
if elem.at(".//p")
|
31
|
-
elem.replace(elem.children)
|
32
|
-
else
|
33
|
-
elem.name = "p"
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
def transform_footnote_text(note)
|
39
|
-
note["id"] = ""
|
40
|
-
note.xpath(".//div").each { |div| div.replace(div.children) }
|
41
|
-
note.xpath(".//aside | .//p").each do |p|
|
42
|
-
p.name = "p"
|
43
|
-
%w(IEEEStdsCRTextReg IEEEStdsCRTextItal).include?(p["class"]) or
|
44
|
-
p["class"] = "IEEEStdsFootnote"
|
45
|
-
end
|
46
|
-
note.remove
|
47
|
-
end
|
1
|
+
require "html2doc/ieee/notes"
|
2
|
+
require "html2doc/ieee/lists"
|
48
3
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
if list.name == "ol"
|
53
|
-
list2para_ol(list)
|
54
|
-
else
|
55
|
-
list2para_ul(list)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
def list2para_ul(list)
|
60
|
-
list.xpath("./li").first["class"] ||= "IEEEStdsUnorderedListCxSpFirst"
|
61
|
-
list.xpath("./li").last["class"] ||= "IEEEStdsUnorderedListCxSpLast"
|
62
|
-
list.xpath("./li/p").each do |p|
|
63
|
-
p["class"] ||= "IEEEStdsUnorderedListCxSpMiddle"
|
64
|
-
end
|
65
|
-
list.xpath("./li").each do |l|
|
66
|
-
l.name = "p"
|
67
|
-
l["class"] ||= "IEEEStdsUnorderedListCxSpMiddle"
|
68
|
-
l&.first_element_child&.name == "p" and
|
69
|
-
l.first_element_child.replace(l.first_element_child.children)
|
70
|
-
end
|
71
|
-
list.replace(list.children)
|
72
|
-
end
|
73
|
-
|
74
|
-
def list2para_ol(list)
|
75
|
-
list.xpath("./li").first["class"] ||= "IEEEStdsNumberedListLevel1CxSpFirst"
|
76
|
-
list.xpath("./li").last["class"] ||= "IEEEStdsNumberedListLevel1CxSpLast"
|
77
|
-
list.xpath("./li/p").each do |p|
|
78
|
-
p["class"] ||= "IEEEStdsNumberedListLevel1CxSpMiddle"
|
79
|
-
end
|
80
|
-
list.xpath("./li").each do |l|
|
81
|
-
l.name = "p"
|
82
|
-
l["class"] ||= "IEEEStdsNumberedListLevel1CxSpMiddle"
|
83
|
-
l&.first_element_child&.name == "p" and
|
84
|
-
l.first_element_child.replace(l.first_element_child.children)
|
85
|
-
end
|
86
|
-
list.replace(list.children)
|
87
|
-
end
|
4
|
+
class Html2Doc
|
5
|
+
class IEEE
|
88
6
|
end
|
89
7
|
end
|
@@ -28,6 +28,62 @@ module IsoDoc
|
|
28
28
|
def para_attrs(node)
|
29
29
|
super.merge(type: node["type"])
|
30
30
|
end
|
31
|
+
|
32
|
+
def note_delim
|
33
|
+
"—"
|
34
|
+
end
|
35
|
+
|
36
|
+
def note_p_parse(node, div)
|
37
|
+
name = node&.at(ns("./name"))&.remove
|
38
|
+
div.p do |p|
|
39
|
+
name and p.span **{ class: "note_label" } do |s|
|
40
|
+
name.children.each { |n| parse(n, s) }
|
41
|
+
s << note_delim
|
42
|
+
end
|
43
|
+
node.first_element_child.children.each { |n| parse(n, p) }
|
44
|
+
end
|
45
|
+
node.element_children[1..-1].each { |n| parse(n, div) }
|
46
|
+
end
|
47
|
+
|
48
|
+
def note_parse1(node, div)
|
49
|
+
name = node&.at(ns("./name"))&.remove
|
50
|
+
name and div.p do |p|
|
51
|
+
p.span **{ class: "note_label" } do |s|
|
52
|
+
name.children.each { |n| parse(n, s) }
|
53
|
+
s << note_delim
|
54
|
+
end
|
55
|
+
end
|
56
|
+
node.children.each { |n| parse(n, div) }
|
57
|
+
end
|
58
|
+
|
59
|
+
def termnote_delim
|
60
|
+
"—"
|
61
|
+
end
|
62
|
+
|
63
|
+
def formula_where(dlist, out)
|
64
|
+
return unless dlist
|
65
|
+
|
66
|
+
parse(dlist, out)
|
67
|
+
out.parent.at("./dl")["class"] = "formula_dl"
|
68
|
+
end
|
69
|
+
|
70
|
+
def bracket_if_num(num)
|
71
|
+
return nil if num.nil?
|
72
|
+
|
73
|
+
num = num.text.sub(/^\[/, "").sub(/\]$/, "")
|
74
|
+
return "[#{num}]" if /^B?\d+$/.match?(num)
|
75
|
+
|
76
|
+
num
|
77
|
+
end
|
78
|
+
|
79
|
+
def example_label(_node, div, name)
|
80
|
+
return if name.nil?
|
81
|
+
|
82
|
+
name << ":"
|
83
|
+
div.p **{ class: "example-title" } do |p|
|
84
|
+
name.children.each { |n| parse(n, p) }
|
85
|
+
end
|
86
|
+
end
|
31
87
|
end
|
32
88
|
end
|
33
89
|
end
|
@@ -62,8 +62,7 @@ xmlns="http://www.w3.org/TR/REC-html40">
|
|
62
62
|
<p class=MsoHeader><span lang=EN-US>P{{ docnumeric }}{% if draft %}/D{{ draft }},
|
63
63
|
{{ draft_month }} {{ draft_year }}{% endif %}</span></p>
|
64
64
|
|
65
|
-
<p class=MsoHeader><span lang=EN-US>{
|
66
|
-
{{ doctitle }}</span></p>
|
65
|
+
<p class=MsoHeader><span lang=EN-US>{{ full_doctitle }}</span></p>
|
67
66
|
|
68
67
|
</div>
|
69
68
|
|
@@ -0,0 +1,105 @@
|
|
1
|
+
<html xmlns:v="urn:schemas-microsoft-com:vml"
|
2
|
+
xmlns:o="urn:schemas-microsoft-com:office:office"
|
3
|
+
xmlns:w="urn:schemas-microsoft-com:office:word"
|
4
|
+
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
|
5
|
+
xmlns="http://www.w3.org/TR/REC-html40">
|
6
|
+
|
7
|
+
<head>
|
8
|
+
<meta http-equiv=Content-Type content="text/html; charset=utf-8">
|
9
|
+
<meta name=ProgId content=Word.Document>
|
10
|
+
<meta name=Generator content="Microsoft Word 15">
|
11
|
+
<meta name=Originator content="Microsoft Word 15">
|
12
|
+
<link id=Main-File rel=Main-File
|
13
|
+
href="../IEEESTD-WORDTEMPLATE_Amendments-Corri-v7-2022.html">
|
14
|
+
<!--[if gte mso 9]><xml>
|
15
|
+
<o:shapedefaults v:ext="edit" spidmax="2050"/>
|
16
|
+
</xml><![endif]-->
|
17
|
+
</head>
|
18
|
+
|
19
|
+
<body lang=el-AU link=blue vlink=purple>
|
20
|
+
|
21
|
+
<div style='mso-element:footnote-separator' id=fs>
|
22
|
+
|
23
|
+
<p class=MsoNormal><span lang=EN-US><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
24
|
+
|
25
|
+
<hr align=left size=1 width="33%">
|
26
|
+
|
27
|
+
<![endif]></span></span></p>
|
28
|
+
|
29
|
+
</div>
|
30
|
+
|
31
|
+
<div style='mso-element:footnote-continuation-separator' id=fcs>
|
32
|
+
|
33
|
+
<p class=MsoNormal><span lang=EN-US><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
34
|
+
|
35
|
+
<hr align=left size=1>
|
36
|
+
|
37
|
+
<![endif]></span></span></p>
|
38
|
+
|
39
|
+
</div>
|
40
|
+
|
41
|
+
<div style='mso-element:endnote-separator' id=es>
|
42
|
+
|
43
|
+
<p class=MsoNormal><span lang=EN-US><span style='mso-special-character:footnote-separator'><![if !supportFootnotes]>
|
44
|
+
|
45
|
+
<hr align=left size=1 width="33%">
|
46
|
+
|
47
|
+
<![endif]></span></span></p>
|
48
|
+
|
49
|
+
</div>
|
50
|
+
|
51
|
+
<div style='mso-element:endnote-continuation-separator' id=ecs>
|
52
|
+
|
53
|
+
<p class=MsoNormal><span lang=EN-US><span style='mso-special-character:footnote-continuation-separator'><![if !supportFootnotes]>
|
54
|
+
|
55
|
+
<hr align=left size=1>
|
56
|
+
|
57
|
+
<![endif]></span></span></p>
|
58
|
+
|
59
|
+
</div>
|
60
|
+
|
61
|
+
<div style='mso-element:header' id=h1>
|
62
|
+
|
63
|
+
<p class=MsoHeader><span lang=EN-US>IEEE
|
64
|
+
P{{ docnumeric }}{% if draft %}/D{{ draft }}, {{ draft_month }} {{ draft_year }}{% endif %}</span></p>
|
65
|
+
|
66
|
+
</div>
|
67
|
+
|
68
|
+
<div style='mso-element:header' id=fh1>
|
69
|
+
|
70
|
+
<p class=MsoHeader><span lang=EN-US>IEEE P{{ docnumeric }}{% if draft %}/D{{ draft }}, {{ draft_month }} {{ draft_year }}{% endif %}</span></p>
|
71
|
+
|
72
|
+
</div>
|
73
|
+
|
74
|
+
<div style='mso-element:footer' id=f8>
|
75
|
+
|
76
|
+
<p class=MsoFooter style='tab-stops:right 432.0pt'><!--[if supportFields]><span
|
77
|
+
class=MsoPageNumber><span lang=EN-US style='font-size:10.0pt'><span
|
78
|
+
style='mso-element:field-begin'></span>PAGE<span style='mso-spacerun:yes'>
|
79
|
+
</span><span style='mso-element:field-separator'></span></span></span><![endif]--><span
|
80
|
+
class=MsoPageNumber><span lang=EN-US style='font-size:10.0pt'>9</span></span><!--[if supportFields]><span
|
81
|
+
class=MsoPageNumber><span lang=EN-US style='font-size:10.0pt'><span
|
82
|
+
style='mso-element:field-end'></span></span></span><![endif]--><span
|
83
|
+
class=MsoPageNumber><span lang=EN-US style='font-size:10.0pt'><o:p></o:p></span></span></p>
|
84
|
+
|
85
|
+
<p class=MsoFooter style='tab-stops:right 432.0pt'><span lang=EN-US>Copyright ©
|
86
|
+
{{ draft_year }} IEEE. All rights reserved.</span></p>
|
87
|
+
|
88
|
+
<p class=MsoFooter style='tab-stops:right 432.0pt'><span lang=EN-US>This is an
|
89
|
+
unapproved IEEE Standards Draft, subject to change.</span></p>
|
90
|
+
|
91
|
+
</div>
|
92
|
+
|
93
|
+
<div style='mso-element:header' id=h9>
|
94
|
+
|
95
|
+
<p class=MsoHeader align=center style='text-align:center;tab-stops:right 432.0pt'><span
|
96
|
+
lang=EN-US style='mso-bidi-font-size:8.0pt'>IEEE
|
97
|
+
P<designation>/D<draft_number>, <draft_month>
|
98
|
+
<draft_year><o:p></o:p></span></p>
|
99
|
+
|
100
|
+
</div>
|
101
|
+
|
102
|
+
</body>
|
103
|
+
|
104
|
+
</html>
|
105
|
+
|
@@ -2,30 +2,32 @@
|
|
2
2
|
|
3
3
|
<div class="doctitle-en"><span>P{{ docnumeric }}™{% if draft %}/D{{ draft }}{% endif %}</span><br/>
|
4
4
|
<span lang="EN-US">{{ full_doctitle }}</span></div>
|
5
|
-
{% if
|
6
|
-
<div class="doctitle-part">
|
5
|
+
{% if amd %}
|
6
|
+
<div class="doctitle-part">Amendment {{ amd }}</div>
|
7
7
|
{% endif %}
|
8
|
-
{% if
|
9
|
-
<div class="doctitle-part">{{
|
8
|
+
{% if corr %}
|
9
|
+
<div class="doctitle-part">Corrigenda {{ corr }}</div>
|
10
10
|
{% endif %}
|
11
|
+
{%if provenance_doctitle %}
|
12
|
+
<div class="doctitle-part">({{ provenance_doctitle }})</div>
|
13
|
+
{%endif%}
|
11
14
|
</div>
|
12
15
|
|
13
16
|
<div><p>Developed by the</p>
|
14
17
|
<p><b>{{ technical_committee }}</b></p>
|
15
18
|
<p>of the</p>
|
16
19
|
<p><b>IEEE {{ society }}</b></p>
|
17
|
-
<p>Approved {{
|
20
|
+
<p>Approved {{ issueddate }}</p>
|
18
21
|
<p>IEEE SA Standards Board</p>
|
19
22
|
</div>
|
20
23
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
<
|
25
|
-
{% if unpublished %}
|
26
|
-
<p>{{ stageabbr }} stage</p>
|
27
|
-
{% endif %}
|
24
|
+
{% if trial_use %}
|
25
|
+
<div>
|
26
|
+
{% if feedback_endeddate %}<p>Comments due: {{ feedback_endeddate }}</p>{% endif %}
|
27
|
+
{% if obsoleteddate %}<p>Expires: {{ obsoleteddate }}</p>{% endif %}
|
28
28
|
</div>
|
29
|
+
{% endif %}
|
30
|
+
|
29
31
|
|
30
32
|
{% if unpublished %}
|
31
33
|
<div class="coverpage_warning">
|