metanorma-ieee 0.0.1 → 0.0.4
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/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">
|