metanorma-ogc 1.0.9 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +0 -1
  3. data/.github/workflows/ubuntu.yml +10 -7
  4. data/.github/workflows/windows.yml +0 -1
  5. data/Rakefile +2 -0
  6. data/lib/asciidoctor/ogc/converter.rb +19 -20
  7. data/lib/asciidoctor/ogc/isodoc.rng +12 -6
  8. data/lib/asciidoctor/ogc/validate.rb +13 -25
  9. data/lib/isodoc/ogc.rb +2 -0
  10. data/lib/isodoc/ogc/base_convert.rb +3 -71
  11. data/lib/isodoc/ogc/html/_coverpage.css +195 -0
  12. data/lib/isodoc/ogc/html/htmlstyle.css +1084 -0
  13. data/lib/isodoc/ogc/html/ogc.css +835 -0
  14. data/lib/isodoc/ogc/html/wordstyle.css +1253 -0
  15. data/lib/isodoc/ogc/html/wordstyle.scss +0 -1
  16. data/lib/isodoc/ogc/html_convert.rb +2 -5
  17. data/lib/isodoc/ogc/i18n-en.yaml +1 -0
  18. data/lib/isodoc/ogc/i18n.rb +10 -0
  19. data/lib/isodoc/ogc/init.rb +32 -0
  20. data/lib/isodoc/ogc/metadata.rb +1 -1
  21. data/lib/isodoc/ogc/ogc.abstract-specification-topic.xsl +1862 -1447
  22. data/lib/isodoc/ogc/ogc.best-practice.xsl +1862 -1447
  23. data/lib/isodoc/ogc/ogc.change-request-supporting-document.xsl +1862 -1447
  24. data/lib/isodoc/ogc/ogc.community-practice.xsl +1862 -1447
  25. data/lib/isodoc/ogc/ogc.community-standard.xsl +1862 -1447
  26. data/lib/isodoc/ogc/ogc.discussion-paper.xsl +1862 -1447
  27. data/lib/isodoc/ogc/ogc.engineering-report.xsl +1862 -1447
  28. data/lib/isodoc/ogc/ogc.other.xsl +1862 -1447
  29. data/lib/isodoc/ogc/ogc.policy.xsl +1862 -1447
  30. data/lib/isodoc/ogc/ogc.reference-model.xsl +1862 -1447
  31. data/lib/isodoc/ogc/ogc.release-notes.xsl +1862 -1447
  32. data/lib/isodoc/ogc/ogc.standard.xsl +1862 -1447
  33. data/lib/isodoc/ogc/ogc.test-suite.xsl +1862 -1447
  34. data/lib/isodoc/ogc/ogc.user-guide.xsl +1862 -1447
  35. data/lib/isodoc/ogc/ogc.white-paper.xsl +1966 -1799
  36. data/lib/isodoc/ogc/pdf_convert.rb +0 -13
  37. data/lib/isodoc/ogc/presentation_xml_convert.rb +137 -0
  38. data/lib/isodoc/ogc/reqt.rb +4 -27
  39. data/lib/isodoc/ogc/sections.rb +18 -63
  40. data/lib/isodoc/ogc/word_convert.rb +6 -9
  41. data/lib/isodoc/ogc/{reqt_xref.rb → xref.rb} +65 -5
  42. data/lib/metanorma/ogc/processor.rb +6 -8
  43. data/lib/metanorma/ogc/version.rb +1 -1
  44. data/metanorma-ogc.gemspec +3 -4
  45. metadata +32 -40
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 03f9f62da65c53f1c3642b819ca4d736cbdc94374acc379ceb1de60280ef91e6
4
- data.tar.gz: 94b9c283c453dbda58e9fd6b8ba7294e2238a8f72fbc07e68e9ce1bf62bbdf27
3
+ metadata.gz: cfeb15d2577cb48f993bf7a73f58be36077d2b21ca258c17276b0462ec8237c0
4
+ data.tar.gz: 4b79e2e72a36fe12d542ca20ac64625f261e973a63e1931041b42944d5474a22
5
5
  SHA512:
6
- metadata.gz: 163148c85ab9d85778b4af7b91d297f6e6885118037a063e84678d8d30904ea6c74112ac8d517c91a4a7ceea9509ebb902bb9b6af69aef43b9dc6c68e146bbd2
7
- data.tar.gz: 6a6dfed692bab95234941cb46cba2dc8581acec8ac21a5c8a68e40419b320a2ee0f475eb7c0cccf5f238b60e6f15dbf5d35fc4e4d29beb54ef895019f1ffe077
6
+ metadata.gz: e51b0f483c42b5ff9225410288821dd21ffb7ac8d6a7deac5ca40658c692e4a6bcd7f6792c04cbb4b091319c23c60d013665be610cbd320609715f9efbbb823c
7
+ data.tar.gz: 0e8c75fef49d337a48d128374fe7de3b950f575f83fe3ec3d1e87abd1dd7943cce67a3bd7da6856c9c31957cba7d58ba90735b2fe5054e0f2a1cb7a17d0af085
@@ -29,7 +29,6 @@ jobs:
29
29
  uses: actions/setup-ruby@v1
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
- architecture: 'x64'
33
32
  - name: Update gems
34
33
  run: |
35
34
  sudo gem install bundler --force
@@ -31,7 +31,6 @@ jobs:
31
31
  uses: actions/setup-ruby@v1
32
32
  with:
33
33
  ruby-version: ${{ matrix.ruby }}
34
- architecture: 'x64'
35
34
  - name: Update gems
36
35
  run: |
37
36
  gem install bundler
@@ -39,15 +38,19 @@ jobs:
39
38
  - name: Run specs
40
39
  run: |
41
40
  bundle exec rake
42
- - name: Trigger dependent repositories
43
- if: github.ref == 'refs/heads/master' && matrix.ruby == '2.6'
41
+ - name: Trigger repositories
42
+ if: matrix.ruby == '2.6'
44
43
  env:
45
- GH_USERNAME: ${{ secrets.PAT_USERNAME }}
46
- GH_ACCESS_TOKEN: ${{ secrets.PAT_TOKEN }}
44
+ GH_USERNAME: metanorma-ci
45
+ GH_ACCESS_TOKEN: ${{ secrets.METANORMA_CI_PAT_TOKEN }}
47
46
  run: |
48
47
  curl -LO --retry 3 https://raw.githubusercontent.com/metanorma/metanorma-build-scripts/master/trigger-gh-actions.sh
49
48
  [[ -f ".github/workflows/dependent_repos.env" ]] && source .github/workflows/dependent_repos.env
50
- for repo in $DEPENDENT_REPOS
49
+ CLIENT_PAYLOAD=$(cat <<EOF
50
+ "{ "ref": "${GITHUB_REF}", "repo": "${GITHUB_REPOSITORY}" }"
51
+ EOF
52
+ )
53
+ for repo in $REPOS
51
54
  do
52
- sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "{ \"ref\": \"${GITHUB_REF}\" }"
55
+ sh trigger-gh-actions.sh $ORGANISATION $repo $GH_USERNAME $GH_ACCESS_TOKEN $GITHUB_REPOSITORY "$CLIENT_PAYLOAD"
53
56
  done
@@ -29,7 +29,6 @@ jobs:
29
29
  uses: actions/setup-ruby@v1
30
30
  with:
31
31
  ruby-version: ${{ matrix.ruby }}
32
- architecture: 'x64'
33
32
  - name: Update gems
34
33
  shell: pwsh
35
34
  run: |
data/Rakefile CHANGED
@@ -1,6 +1,8 @@
1
1
  require "bundler/gem_tasks"
2
2
  require "rspec/core/rake_task"
3
+ require 'isodoc/gem_tasks'
3
4
 
5
+ IsoDoc::GemTasks.install
4
6
  RSpec::Core::RakeTask.new(:spec)
5
7
 
6
8
  task :default => :spec
@@ -52,21 +52,15 @@ module Asciidoctor
52
52
  end
53
53
  end
54
54
 
55
- def document(node)
56
- init(node)
57
- ret1 = makexml(node)
58
- ret = ret1.to_xml(indent: 2)
59
- unless node.attr("nodoc") || !node.attr("docfile")
60
- filename = node.attr("docfile").gsub(/\.adoc/, ".xml").
61
- gsub(%r{^.*/}, "")
62
- File.open(filename, "w") { |f| f.write(ret) }
63
- html_converter(node).convert filename unless node.attr("nodoc")
64
- word_converter(node).convert filename unless node.attr("nodoc")
65
- pdf_converter(node)&.convert filename unless node.attr("nodoc")
66
- end
67
- @log.write(@localdir + @filename + ".err") unless @novalid
68
- @files_to_delete.each { |f| FileUtils.rm f }
69
- ret
55
+ def outputs(node, ret)
56
+ File.open(@filename + ".xml", "w:UTF-8") { |f| f.write(ret) }
57
+ presentation_xml_converter(node).convert(@filename + ".xml")
58
+ html_converter(node).convert(@filename + ".presentation.xml",
59
+ nil, false, "#{@filename}.html")
60
+ doc_converter(node).convert(@filename + ".presentation.xml",
61
+ nil, false, "#{@filename}.doc")
62
+ pdf_converter(node)&.convert(@filename + ".presentation.xml",
63
+ nil, false, "#{@filename}.pdf")
70
64
  end
71
65
 
72
66
  def validate(doc)
@@ -93,15 +87,16 @@ module Asciidoctor
93
87
  end
94
88
 
95
89
  def clause_parse(attrs, xml, node)
96
- clausetype = node&.attr("heading")&.downcase || node.title.downcase
97
- if clausetype == "submitters" then submitters_parse(attrs, xml, node)
98
- else
99
- super
90
+ case clausetype = node&.attr("heading")&.downcase || node.title.downcase
91
+ when "submitters" then return submitters_parse(attrs, xml, node)
92
+ when "conformance" then attrs = attrs.merge(type: "conformance")
100
93
  end
94
+ super
101
95
  end
102
96
 
103
97
  def submitters_parse(attrs, xml, node)
104
98
  xml.submitters **attr_code(attrs) do |xml_section|
99
+ xml_section.title @i18n.submitters
105
100
  xml_section << node.content
106
101
  end
107
102
  end
@@ -118,6 +113,10 @@ module Asciidoctor
118
113
  super
119
114
  end
120
115
 
116
+ def presentation_xml_converter(node)
117
+ IsoDoc::Ogc::PresentationXMLConvert.new(html_extract_attributes(node))
118
+ end
119
+
121
120
  def html_converter(node)
122
121
  IsoDoc::Ogc::HtmlConvert.new(html_extract_attributes(node))
123
122
  end
@@ -127,7 +126,7 @@ module Asciidoctor
127
126
  IsoDoc::Ogc::PdfConvert.new(html_extract_attributes(node))
128
127
  end
129
128
 
130
- def word_converter(node)
129
+ def doc_converter(node)
131
130
  IsoDoc::Ogc::WordConvert.new(doc_extract_attributes(node))
132
131
  end
133
132
  end
@@ -922,6 +922,9 @@
922
922
  <optional>
923
923
  <attribute name="script"/>
924
924
  </optional>
925
+ <optional>
926
+ <attribute name="type"/>
927
+ </optional>
925
928
  <optional>
926
929
  <attribute name="obligation">
927
930
  <choice>
@@ -961,9 +964,6 @@
961
964
  </define>
962
965
  <define name="content-subsection">
963
966
  <element name="clause">
964
- <optional>
965
- <attribute name="type"/>
966
- </optional>
967
967
  <ref name="Content-Section"/>
968
968
  </element>
969
969
  </define>
@@ -992,6 +992,9 @@
992
992
  </choice>
993
993
  </attribute>
994
994
  </optional>
995
+ <optional>
996
+ <attribute name="type"/>
997
+ </optional>
995
998
  <optional>
996
999
  <ref name="section-title"/>
997
1000
  </optional>
@@ -1011,9 +1014,6 @@
1011
1014
  </define>
1012
1015
  <define name="clause">
1013
1016
  <element name="clause">
1014
- <optional>
1015
- <attribute name="type"/>
1016
- </optional>
1017
1017
  <ref name="Clause-Section"/>
1018
1018
  </element>
1019
1019
  </define>
@@ -1042,6 +1042,9 @@
1042
1042
  </choice>
1043
1043
  </attribute>
1044
1044
  </optional>
1045
+ <optional>
1046
+ <attribute name="type"/>
1047
+ </optional>
1045
1048
  <optional>
1046
1049
  <ref name="section-title"/>
1047
1050
  </optional>
@@ -1180,6 +1183,9 @@
1180
1183
  <optional>
1181
1184
  <attribute name="script"/>
1182
1185
  </optional>
1186
+ <optional>
1187
+ <attribute name="type"/>
1188
+ </optional>
1183
1189
  <optional>
1184
1190
  <attribute name="obligation">
1185
1191
  <choice>
@@ -49,35 +49,25 @@ module Asciidoctor
49
49
  [
50
50
  {
51
51
  msg: "Prefatory material must be followed by (clause) Scope",
52
- val: [{ tag: "clause", title: "Scope" }],
52
+ val: ["./self::clause[@type = 'scope']" ]
53
53
  },
54
54
  {
55
55
  msg: "Scope must be followed by Conformance",
56
- val: [{ tag: "clause", title: "Conformance" }],
56
+ val: ["./self::clause[@type = 'conformance']" ]
57
57
  },
58
58
  {
59
59
  msg: "Normative References must be followed by "\
60
60
  "Terms and Definitions",
61
- val: [
62
- { tag: "terms", title: "Terms and definitions" },
63
- { tag: "clause", title: "Terms and definitions" },
64
- {
65
- tag: "terms",
66
- title: "Terms, definitions, symbols and abbreviated terms",
67
- },
68
- {
69
- tag: "clause",
70
- title: "Terms, definitions, symbols and abbreviated terms",
71
- },
72
- ],
61
+ val: ["./self::terms | .//terms"]
73
62
  },
74
63
  ].freeze
75
64
 
76
65
  def seqcheck(names, msg, accepted)
77
66
  n = names.shift
78
- unless accepted.include? n
67
+ return [] if n.nil?
68
+ test = accepted.map { |a| n.at(a) }
69
+ if test.all? { |a| a.nil? }
79
70
  @log.add("Style", nil, msg)
80
- names = []
81
71
  end
82
72
  names
83
73
  end
@@ -85,23 +75,21 @@ module Asciidoctor
85
75
  def sections_sequence_validate(root)
86
76
  return unless STANDARDTYPE.include?(
87
77
  root&.at("//bibdata/ext/doctype")&.text)
88
- f = root.at("//sections").elements
89
- names = f.map { |s| { tag: s.name, title: s&.at("./title")&.text } }
90
- names = seqcheck(names, SEQ[0][:msg], SEQ[0][:val]) || return
91
- names = seqcheck(names, SEQ[1][:msg], SEQ[1][:val]) || return
92
- names = seqcheck(names, SEQ[2][:msg], SEQ[2][:val]) || return
78
+ names = root.xpath("//sections/* | //bibliography/*")
79
+ names = seqcheck(names, SEQ[0][:msg], SEQ[0][:val])
80
+ names = seqcheck(names, SEQ[1][:msg], SEQ[1][:val])
81
+ names = seqcheck(names, SEQ[2][:msg], SEQ[2][:val])
93
82
  n = names.shift
94
- if !n.nil? && n[:tag] == "definitions"
83
+ if n&.at("./self::definitions")
95
84
  n = names.shift
96
85
  end
97
- unless n
86
+ if n.nil? || n.name != "clause"
98
87
  @log.add("Style", nil, "Document must contain at least one clause")
99
88
  return
100
89
  end
101
90
  root.at("//references | //clause[descendant::references]"\
102
91
  "[not(parent::clause)]") or
103
- seqcheck([{tag: "clause"}],
104
- "Normative References are mandatory", [{tag: "references"}])
92
+ @log.add("Style", nil, "Normative References are mandatory")
105
93
  end
106
94
 
107
95
  def preface_sequence_validate(root)
@@ -2,6 +2,8 @@ require "isodoc/ogc/metadata"
2
2
  require "isodoc/ogc/html_convert"
3
3
  require "isodoc/ogc/pdf_convert"
4
4
  require "isodoc/ogc/word_convert"
5
+ require "isodoc/ogc/presentation_xml_convert"
6
+ require "isodoc/ogc/xref"
5
7
 
6
8
  module IsoDoc
7
9
  module Ogc
@@ -1,5 +1,4 @@
1
1
  require "isodoc"
2
- require_relative "metadata"
3
2
  require_relative "reqt"
4
3
  require_relative "biblio"
5
4
  require_relative "sections"
@@ -8,10 +7,6 @@ require "fileutils"
8
7
  module IsoDoc
9
8
  module Ogc
10
9
  module BaseConvert
11
- def fileloc(loc)
12
- File.join(File.dirname(__FILE__), loc)
13
- end
14
-
15
10
  def cleanup(docxml)
16
11
  requirement_table_cleanup(docxml)
17
12
  super
@@ -47,27 +42,6 @@ module IsoDoc
47
42
  docxml
48
43
  end
49
44
 
50
- def load_yaml(lang, script)
51
- y = if @i18nyaml then YAML.load_file(@i18nyaml)
52
- else
53
- YAML.load_file(File.join(File.dirname(__FILE__), "i18n-en.yaml"))
54
- end
55
- super.merge(y)
56
- end
57
-
58
- def preface_names_numbered(clause)
59
- return if clause.nil?
60
- @prefacenum += 1
61
- pref = RomanNumerals.to_roman(@prefacenum).downcase
62
- @anchors[clause["id"]] =
63
- { label: pref,
64
- level: 1, xref: preface_clause_name(clause), type: "clause" }
65
- clause.xpath(ns("./clause | ./terms | ./term | ./definitions | "\
66
- "./references")).each_with_index do |c, i|
67
- section_names1(c, "#{pref}.#{i + 1}", 2)
68
- end
69
- end
70
-
71
45
  def example_parse(node, out)
72
46
  name = node.at(ns("./name"))
73
47
  example_name_parse(node, out, name) #if name
@@ -78,56 +52,14 @@ module IsoDoc
78
52
  end
79
53
 
80
54
  def example_name_parse(node, div, name)
81
- lbl = anchor(node['id'], :label, false)
82
55
  div.p **{ class: "SourceTitle", style: "text-align:center;" } do |p|
83
- lbl.nil? or p << l10n("#{@example_lbl} #{lbl}")
84
- name and !lbl.nil? and p << "&nbsp;&mdash; "
85
56
  name&.children&.each { |n| parse(n, p) }
86
57
  end
87
58
  end
88
59
 
89
- def initial_anchor_names(d)
90
- @prefacenum = 0
91
- preface_names_numbered(d.at(ns("//preface/abstract")))
92
- @prefacenum += 1 if d.at(ns("//keyword"))
93
- preface_names_numbered(d.at(ns("//foreword")))
94
- preface_names_numbered(d.at(ns("//introduction")))
95
- @prefacenum += 1 if d.at(ns(SUBMITTINGORGS))
96
- preface_names_numbered(d.at(ns("//submitters")))
97
- d.xpath(ns("//preface/clause")).each do |c|
98
- preface_names_numbered(c)
99
- end
100
- preface_names_numbered(d.at(ns("//acknowledgements")))
101
- sequential_asset_names(d.xpath(ns(
102
- "//preface/abstract | //foreword | //introduction | "\
103
- "//submitters | //acknowledgements | //preface/clause")))
104
- n = section_names(d.at(ns("//clause[title = 'Scope']")), 0, 1)
105
- n = section_names(d.at(ns("//clause[title = 'Conformance']")), n, 1)
106
- n = section_names(d.at(ns(
107
- "//references[title = 'Normative References' or "\
108
- "title = 'Normative references']")), n, 1)
109
- n = section_names(
110
- d.at(ns("//sections/terms | //sections/clause[descendant::terms]")),
111
- n, 1)
112
- n = section_names(d.at(ns("//sections/definitions")), n, 1)
113
- middle_section_asset_names(d)
114
- clause_names(d, n)
115
- termnote_anchor_names(d)
116
- termexample_anchor_names(d)
117
- end
118
-
119
- MIDDLE_CLAUSE =
120
- "//clause[parent::sections][not(xmlns:title = 'Scope' or "\
121
- "xmlns:title = 'Conformance')][not(descendant::terms)]".freeze
122
-
123
- def middle_section_asset_names(d)
124
- middle_sections = "//clause[title = 'Scope' or title = 'Conformance'] "\
125
- "| //foreword | //introduction | //preface/abstract | "\
126
- "//submitters | //acknowledgements | //preface/clause | "\
127
- "//references[title = 'Normative References' or title = "\
128
- "'Normative references'] | //sections/terms | "\
129
- "//sections/definitions | //clause[parent::sections]"
130
- sequential_asset_names(d.xpath(ns(middle_sections)))
60
+ def middle_clause
61
+ "//clause[parent::sections][not(@type = 'scope' or "\
62
+ "@type = 'conformance')][not(descendant::terms)]"
131
63
  end
132
64
 
133
65
  def middle(isoxml, out)
@@ -0,0 +1,195 @@
1
+ .coverpage-maturity, .coverpage-stage {
2
+ font-family: {{headerfont}};
3
+ font-weight: 400;
4
+ font-size: 1.3em;
5
+ margin: 0 0 2em 0;
6
+ text-transform: uppercase; }
7
+
8
+ .icon-svg {
9
+ width: 100%;
10
+ color: #5ecf86; }
11
+
12
+ .wrapper-top {
13
+ background: #00335b;
14
+ background: linear-gradient(130deg, #00335b 45%, #f1f8ff 100%);
15
+ color: #ffffff;
16
+ padding: 5em 0;
17
+ width: 100%; }
18
+
19
+ .wrapper-top-bottom {
20
+ width: 0;
21
+ height: 0;
22
+ border-top: 100px solid #00335b;
23
+ border-right: 100px solid transparent;
24
+ position: absolute; }
25
+
26
+ .coverpage-metadata {
27
+ margin-top: 35px;
28
+ padding-top: 15px;
29
+ margin-right: 25px;
30
+ border-top: solid 1px white; }
31
+
32
+ .coverpage-metadata,
33
+ .coverpage-alt-formats {
34
+ font-size: 12px;
35
+ font-family: {{headerfont}};
36
+ margin-left: 1em;
37
+ text-align: left; }
38
+ .coverpage-metadata span,
39
+ .coverpage-alt-formats span {
40
+ display: block;
41
+ text-align: left; }
42
+ .coverpage-metadata span a,
43
+ .coverpage-alt-formats span a {
44
+ color: white; }
45
+ .coverpage-metadata span a:hover,
46
+ .coverpage-alt-formats span a:hover {
47
+ text-decoration: underline;
48
+ background: none;
49
+ box-shadow: none !important;
50
+ font-weight: 400; }
51
+ .coverpage-metadata .value,
52
+ .coverpage-alt-formats .value {
53
+ font-size: 15px;
54
+ margin-bottom: 15px; }
55
+ .coverpage-metadata .label,
56
+ .coverpage-alt-formats .label {
57
+ font-size: 12px;
58
+ padding: 0; }
59
+
60
+ .coverpage-alt-formats span {
61
+ display: inline;
62
+ text-align: left; }
63
+ .coverpage-alt-formats span a {
64
+ padding-right: 5px; }
65
+
66
+ .coverpage-title {
67
+ padding-bottom: 0.5em;
68
+ font-family: {{headerfont}};
69
+ font-weight: 100;
70
+ padding-left: 1em;
71
+ padding-right: 1em; }
72
+ .coverpage-title span {
73
+ font-family: {{headerfont}};
74
+ font-size: 1.8em;
75
+ line-height: 1; }
76
+
77
+ .docstage-box table {
78
+ width: auto; }
79
+
80
+ .docstage-box th {
81
+ background-color: #93c0d6; }
82
+
83
+ .docstage-box td {
84
+ vertical-align: top;
85
+ background-color: #daeef3;
86
+ padding: 0.5em;
87
+ border: 0; }
88
+
89
+ .docstage-box th:first-child {
90
+ border-radius: 1em 0 0 0; }
91
+
92
+ .docstage-box th:last-child {
93
+ border-radius: 0 1em 0 0; }
94
+
95
+ .docstage-box tr:first-child {
96
+ border-radius: 0 0 0 1em; }
97
+
98
+ .docstage-box tr:last-child {
99
+ border-radius: 0 1em 0 0; }
100
+
101
+ .docstage-box tr:last-child > td:first-child {
102
+ border-radius: 0 0 0 1em; }
103
+
104
+ .docstage-box tr:last-child > td:last-child {
105
+ border-radius: 0 0 1em 0; }
106
+
107
+ .WordSection11 {
108
+ padding: 0 2em 0 3em; }
109
+
110
+ .info-section {
111
+ padding: 0 2em 0 5em; }
112
+
113
+ .prefatory-section {
114
+ padding: 0 3em 0 6em; }
115
+
116
+ .zzSTDTitle1, .MsoCommentText {
117
+ display: none; }
118
+
119
+ .coverpage {
120
+ text-align: center;
121
+ padding-left: 1.5em; }
122
+
123
+ .coverpage-logo span, .coverpage-tc-name span {
124
+ font-family: {{bodyfont}};
125
+ text-transform: none;
126
+ font-weight: 300;
127
+ margin-left: 1em; }
128
+
129
+ .coverpage-tc-name {
130
+ font-size: 1.2em;
131
+ line-height: 1.2em;
132
+ margin: 0.25em 0; }
133
+
134
+ .copyright {
135
+ padding: 1em;
136
+ font-size: 0.9em;
137
+ text-align: left; }
138
+
139
+ /* Document Identity */
140
+ .coverpage-doc-identity {
141
+ font-size: 2em;
142
+ line-height: 2em; }
143
+
144
+ .coverpage-title .title-second {
145
+ display: none; }
146
+
147
+ .coverpage-stage-block {
148
+ font-family: {{headerfont}};
149
+ font-weight: 600;
150
+ font-size: 1.25em;
151
+ margin: 2em 0em 2em 0em;
152
+ text-transform: uppercase; }
153
+
154
+ .authors {
155
+ margin-top: 2em; }
156
+ .authors span {
157
+ display: block;
158
+ line-height: 2; }
159
+ .authors span.roletag {
160
+ display: inline-block;
161
+ font-size: 12px;
162
+ color: #00335b;
163
+ background-color: white;
164
+ padding: 2px 5px;
165
+ margin-left: 7px;
166
+ border-radius: 5px; }
167
+
168
+ /* Draft Warning */
169
+ .coverpage-warning {
170
+ border: #f36f36 solid 2px;
171
+ color: #f36f36 !important;
172
+ margin: 1em 2em;
173
+ color: #2e81c2;
174
+ padding: 2em 1em 1em 1em;
175
+ border-radius: 25px; }
176
+ .coverpage-warning h1 {
177
+ font-family: {{headerfont}};
178
+ font-weight: 300;
179
+ text-transform: uppercase;
180
+ font-size: 1.2em; }
181
+
182
+ @media print {
183
+ .document-info, .copyright {
184
+ page-break-before: always; }
185
+ .coverpage {
186
+ height: 23cm; }
187
+ .info-section {
188
+ display: none; }
189
+ .wrapper-top {
190
+ top: 0;
191
+ padding-top: 4cm;
192
+ padding-bottom: 4cm; }
193
+ .wrapper-top-bottom {
194
+ margin-top: -5px;
195
+ display: none; } }