isodoc 2.0.2 → 2.0.5
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/lib/isodoc/convert.rb +36 -18
- data/lib/isodoc/function/inline.rb +24 -13
- data/lib/isodoc/function/references.rb +18 -6
- data/lib/isodoc/html_function/html.rb +6 -0
- data/lib/isodoc/i18n.rb +20 -7
- data/lib/isodoc/metadata.rb +1 -1
- data/lib/isodoc/metadata_contributor.rb +1 -1
- data/lib/isodoc/presentation_function/bibdata.rb +26 -9
- data/lib/isodoc/presentation_function/block.rb +24 -0
- data/lib/isodoc/presentation_function/image.rb +3 -4
- data/lib/isodoc/presentation_function/inline.rb +118 -76
- data/lib/isodoc/presentation_function/math.rb +1 -0
- data/lib/isodoc/presentation_function/xrefs.rb +100 -0
- data/lib/isodoc/presentation_xml_convert.rb +1 -0
- data/lib/isodoc/version.rb +1 -1
- data/lib/isodoc/word_function/body.rb +11 -1
- data/lib/isodoc/word_function/postprocess.rb +4 -6
- data/lib/isodoc/word_function/postprocess_cover.rb +82 -1
- data/lib/isodoc/xref/xref_anchor.rb +1 -0
- data/lib/isodoc/xref/xref_gen.rb +2 -1
- data/lib/isodoc/xref/xref_sect_gen.rb +14 -8
- data/lib/isodoc/xslfo_convert.rb +19 -19
- data/lib/isodoc-yaml/i18n-ar.yaml +11 -0
- data/lib/isodoc-yaml/i18n-de.yaml +11 -0
- data/lib/isodoc-yaml/i18n-en.yaml +11 -0
- data/lib/isodoc-yaml/i18n-es.yaml +11 -0
- data/lib/isodoc-yaml/i18n-fr.yaml +11 -0
- data/lib/isodoc-yaml/i18n-ru.yaml +11 -0
- data/lib/isodoc-yaml/i18n-zh-Hans.yaml +11 -0
- data/spec/isodoc/blocks_spec.rb +13 -77
- data/spec/isodoc/inline_spec.rb +565 -22
- data/spec/isodoc/metadata_spec.rb +1 -1
- data/spec/isodoc/postproc_spec.rb +466 -2
- data/spec/isodoc/presentation_xml_spec.rb +380 -78
- data/spec/isodoc/ref_spec.rb +96 -11
- data/spec/isodoc/section_spec.rb +1 -2
- data/spec/isodoc/table_spec.rb +1 -1
- data/spec/isodoc/terms_spec.rb +8 -8
- data/spec/isodoc/xref_spec.rb +71 -1190
- data/spec/isodoc/xslfo_convert_spec.rb +12 -7
- metadata +3 -2
@@ -0,0 +1,100 @@
|
|
1
|
+
module IsoDoc
|
2
|
+
class PresentationXMLConvert < ::IsoDoc::Convert
|
3
|
+
def prefix_container(container, linkend, _target)
|
4
|
+
l10n("#{@xrefs.anchor(container, :xref)}, #{linkend}")
|
5
|
+
end
|
6
|
+
|
7
|
+
def anchor_value(id)
|
8
|
+
@xrefs.anchor(id, :value) || @xrefs.anchor(id, :label) ||
|
9
|
+
@xrefs.anchor(id, :xref)
|
10
|
+
end
|
11
|
+
|
12
|
+
def anchor_linkend(node, linkend)
|
13
|
+
if node["citeas"].nil? && node["bibitemid"]
|
14
|
+
return @xrefs.anchor(node["bibitemid"], :xref) || "???"
|
15
|
+
elsif node.at(ns("./location"))
|
16
|
+
linkend = combine_xref_locations(node)
|
17
|
+
elsif node["target"] && node["droploc"]
|
18
|
+
return anchor_value(node["target"]) || "???"
|
19
|
+
elsif node["target"] && !/.#./.match(node["target"])
|
20
|
+
linkend = anchor_linkend1(node)
|
21
|
+
end
|
22
|
+
|
23
|
+
linkend || "???"
|
24
|
+
end
|
25
|
+
|
26
|
+
def anchor_linkend1(node)
|
27
|
+
linkend = @xrefs.anchor(node["target"], :xref)
|
28
|
+
container = @xrefs.anchor(node["target"], :container, false)
|
29
|
+
(container && get_note_container_id(node) != container &&
|
30
|
+
@xrefs.get[node["target"]]) and
|
31
|
+
linkend = prefix_container(container, linkend, node["target"])
|
32
|
+
capitalise_xref(node, linkend, anchor_value(node["target"]))
|
33
|
+
end
|
34
|
+
|
35
|
+
def combine_xref_locations(node)
|
36
|
+
locs = gather_xref_locations(node)
|
37
|
+
linkend = if can_conflate_xref_rendering?(locs)
|
38
|
+
out = locs.each { |l| l[:target] = anchor_value(l[:target]) }
|
39
|
+
l10n("#{locs.first[:elem]} #{combine_conn(out)}")
|
40
|
+
else
|
41
|
+
out = locs.each { |l| l[:target] = anchor_linked1(l[:node]) }
|
42
|
+
l10n(combine_conn(out))
|
43
|
+
end
|
44
|
+
capitalise_xref(node, linkend, anchor_value(node["target"]))
|
45
|
+
end
|
46
|
+
|
47
|
+
def gather_xref_locations(node)
|
48
|
+
node.xpath(ns("./location")).each_with_object([]) do |l, m|
|
49
|
+
type = @xrefs.anchor(l["target"], :type)
|
50
|
+
m << { conn: l["connective"], target: l["target"],
|
51
|
+
type: type, node: l, elem: @xrefs.anchor(l["target"], :elem),
|
52
|
+
container: @xrefs.anchor(node["target"], :container, false) ||
|
53
|
+
%w(termnote).include?(type) }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def combine_conn(list)
|
58
|
+
return list.first[:target] if list.size == 1
|
59
|
+
|
60
|
+
if list[1..-1].all? { |l| l[:conn] == "and" }
|
61
|
+
@i18n.boolean_conj(list.map { |l| l[:target] }, "and")
|
62
|
+
elsif list[1..-1].all? { |l| l[:conn] == "or" }
|
63
|
+
@i18n.boolean_conj(list.map { |l| l[:target] }, "or")
|
64
|
+
else
|
65
|
+
ret = list[0][:target]
|
66
|
+
list[1..-1].each { |l| ret = i18n_chain_boolean(ret, l) }
|
67
|
+
ret
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def i18n_chain_boolean(value, entry)
|
72
|
+
@i18n.send("chain_#{entry[:conn]}").sub(/%1/, value)
|
73
|
+
.sub(/%2/, entry[:target])
|
74
|
+
end
|
75
|
+
|
76
|
+
def can_conflate_xref_rendering?(locs)
|
77
|
+
!locs.all? { |l| l[:container].nil? } &&
|
78
|
+
locs.all? { |l| l[:type] == locs[0][:type] }
|
79
|
+
end
|
80
|
+
|
81
|
+
def capitalise_xref(node, linkend, label)
|
82
|
+
linktext = linkend.gsub(/<[^>]+>/, "")
|
83
|
+
(label && !label.empty? && /^#{Regexp.escape(label)}/.match?(linktext)) ||
|
84
|
+
linktext[0, 1].match?(/\p{Upper}/) and return linkend
|
85
|
+
node["case"] and
|
86
|
+
return Common::case_with_markup(linkend, node["case"], @script)
|
87
|
+
|
88
|
+
capitalise_xref1(node, linkend)
|
89
|
+
end
|
90
|
+
|
91
|
+
def capitalise_xref1(node, linkend)
|
92
|
+
prec = nearest_block_parent(node).xpath("./descendant-or-self::text()") &
|
93
|
+
node.xpath("./preceding::text()")
|
94
|
+
if prec.empty? || /(?!<[^.].)\.\s+$/.match(prec.map(&:text).join)
|
95
|
+
Common::case_with_markup(linkend, "capital", @script)
|
96
|
+
else linkend
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
data/lib/isodoc/version.rb
CHANGED
@@ -233,11 +233,21 @@ module IsoDoc
|
|
233
233
|
end
|
234
234
|
|
235
235
|
def suffix_url(url)
|
236
|
-
return url if %r{^https?://}.match?(url)
|
236
|
+
return url if url.nil? || %r{^https?://}.match?(url)
|
237
237
|
return url unless File.extname(url).empty?
|
238
238
|
|
239
239
|
url.sub(/#{File.extname(url)}$/, ".doc")
|
240
240
|
end
|
241
|
+
|
242
|
+
def info(isoxml, out)
|
243
|
+
@tocfigurestitle =
|
244
|
+
isoxml&.at(ns("//misc-container/toc[@type = 'figure']/title"))&.text
|
245
|
+
@toctablestitle =
|
246
|
+
isoxml&.at(ns("//misc-container/toc[@type = 'table']/title"))&.text
|
247
|
+
@tocrecommendationstitle = isoxml
|
248
|
+
&.at(ns("//misc-container/toc[@type = 'recommendation']/title"))&.text
|
249
|
+
super
|
250
|
+
end
|
241
251
|
end
|
242
252
|
end
|
243
253
|
end
|
@@ -165,9 +165,7 @@ module IsoDoc
|
|
165
165
|
xpath.each do |list|
|
166
166
|
(list.xpath(".//li") - list.xpath(".//ol//li | .//ul//li")).each do |l|
|
167
167
|
l.xpath("./p | ./div | ./table").each_with_index do |p, i|
|
168
|
-
|
169
|
-
|
170
|
-
p.wrap(%{<div class="ListContLevel#{lvl}"/>})
|
168
|
+
i.zero? or p.wrap(%{<div class="ListContLevel#{lvl}"/>})
|
171
169
|
end
|
172
170
|
list_add(l.xpath(".//ul") - l.xpath(".//ul//ul | .//ol//ul"),
|
173
171
|
lvl + 1)
|
@@ -212,10 +210,10 @@ module IsoDoc
|
|
212
210
|
def word_remove_pb_before_annex(docxml)
|
213
211
|
docxml.xpath("//div[p/br]").each do |d|
|
214
212
|
/^WordSection\d+_\d+$/.match(d["class"]) or next
|
215
|
-
d.elements[0].name == "p" && !d.elements[0].elements.empty? or next
|
216
|
-
d.elements[0].elements[0].name == "br" &&
|
213
|
+
(d.elements[0].name == "p" && !d.elements[0].elements.empty?) or next
|
214
|
+
(d.elements[0].elements[0].name == "br" &&
|
217
215
|
d.elements[0].elements[0]["style"] ==
|
218
|
-
"mso-special-character:line-break;page-break-before:always" or next
|
216
|
+
"mso-special-character:line-break;page-break-before:always") or next
|
219
217
|
d.elements[0].remove
|
220
218
|
end
|
221
219
|
end
|
@@ -24,7 +24,12 @@ module IsoDoc
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def insert_toc(intro, docxml, level)
|
27
|
-
|
27
|
+
toc = ""
|
28
|
+
toc += make_WordToC(docxml, level)
|
29
|
+
toc += make_TableWordToC(docxml)
|
30
|
+
toc += make_FigureWordToC(docxml)
|
31
|
+
toc += make_RecommendationWordToC(docxml)
|
32
|
+
intro.sub(/WORDTOC/, toc)
|
28
33
|
end
|
29
34
|
|
30
35
|
def word_toc_entry(toclevel, heading)
|
@@ -77,6 +82,82 @@ module IsoDoc
|
|
77
82
|
%{\\1#{word_toc_preface(level)}}) + WORD_TOC_SUFFIX1
|
78
83
|
end
|
79
84
|
|
85
|
+
WORD_TOC_RECOMMENDATION_PREFACE1 = <<~TOC.freeze
|
86
|
+
<span lang="EN-GB"><span
|
87
|
+
style='mso-element:field-begin'></span><span
|
88
|
+
style='mso-spacerun:yes'> </span>TOC
|
89
|
+
\\h \\z \\t "RecommendationTitle,RecommendationTestTitle,recommendationtitle,recommendationtesttitle"
|
90
|
+
<span style='mso-element:field-separator'></span></span>
|
91
|
+
TOC
|
92
|
+
|
93
|
+
WORD_TOC_TABLE_PREFACE1 = <<~TOC.freeze
|
94
|
+
<span lang="EN-GB"><span
|
95
|
+
style='mso-element:field-begin'></span><span
|
96
|
+
style='mso-spacerun:yes'> </span>TOC
|
97
|
+
\\h \\z \\t "TableTitle,tabletitle" <span
|
98
|
+
style='mso-element:field-separator'></span></span>
|
99
|
+
TOC
|
100
|
+
|
101
|
+
WORD_TOC_FIGURE_PREFACE1 = <<~TOC.freeze
|
102
|
+
<span lang="EN-GB"><span
|
103
|
+
style='mso-element:field-begin'></span><span
|
104
|
+
style='mso-spacerun:yes'> </span>TOC
|
105
|
+
\\h \\z \\t "FigureTitle,figuretitle" <span
|
106
|
+
style='mso-element:field-separator'></span></span>
|
107
|
+
TOC
|
108
|
+
|
109
|
+
def make_TableWordToC(docxml)
|
110
|
+
(docxml.at("//p[@class = 'TableTitle']") && @toctablestitle) or
|
111
|
+
return ""
|
112
|
+
toc = %{<p class="TOCTitle">#{@toctablestitle}</p>}
|
113
|
+
docxml.xpath("//p[@class = 'TableTitle']").each do |h|
|
114
|
+
toc += word_toc_entry(1, header_strip(h))
|
115
|
+
end
|
116
|
+
toc.sub(/(<p class="MsoToc1">)/,
|
117
|
+
%{\\1#{WORD_TOC_TABLE_PREFACE1}}) + WORD_TOC_SUFFIX1
|
118
|
+
end
|
119
|
+
|
120
|
+
def make_FigureWordToC(docxml)
|
121
|
+
(docxml.at("//p[@class = 'FigureTitle']") && @tocfigurestitle) or
|
122
|
+
return ""
|
123
|
+
toc = %{<p class="TOCTitle">#{@tocfigurestitle}</p>}
|
124
|
+
docxml.xpath("//p[@class = 'FigureTitle']").each do |h|
|
125
|
+
toc += word_toc_entry(1, header_strip(h))
|
126
|
+
end
|
127
|
+
toc.sub(/(<p class="MsoToc1">)/,
|
128
|
+
%{\\1#{WORD_TOC_FIGURE_PREFACE1}}) + WORD_TOC_SUFFIX1
|
129
|
+
end
|
130
|
+
|
131
|
+
def make_RecommendationWordToC(docxml)
|
132
|
+
(docxml.at("//p[@class = 'RecommendationTitle']") &&
|
133
|
+
@tocrecommendationstitle) or return ""
|
134
|
+
toc = %{<p class="TOCTitle">#{@tocrecommendationstitle}</p>}
|
135
|
+
docxml.xpath("//p[@class = 'RecommendationTitle' or @class = 'RecommendationTestTitle']").sort_by do |h|
|
136
|
+
recommmendation_sort_key(h.text)
|
137
|
+
end.each do |h|
|
138
|
+
toc += word_toc_entry(1, header_strip(h))
|
139
|
+
end
|
140
|
+
toc.sub(/(<p class="MsoToc1">)/,
|
141
|
+
%{\\1#{WORD_TOC_RECOMMENDATION_PREFACE1}}) + WORD_TOC_SUFFIX1
|
142
|
+
end
|
143
|
+
|
144
|
+
def recommmendation_sort_key(header)
|
145
|
+
m = /^([^0-9]+) (\d+)/.match(header) || /^([^:]+)/.match(header)
|
146
|
+
m ||= [header, nil]
|
147
|
+
ret = "#{recommmendation_sort_key1(m[1])}::"
|
148
|
+
m[2] and ret += ("%04d" % m[2].to_i).to_s
|
149
|
+
ret
|
150
|
+
end
|
151
|
+
|
152
|
+
def recommmendation_sort_key1(type)
|
153
|
+
case type&.downcase
|
154
|
+
when "requirement" then "04"
|
155
|
+
when "recommendation" then "05"
|
156
|
+
when "permission" then "06"
|
157
|
+
else type
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
80
161
|
def authority_cleanup1(docxml, klass)
|
81
162
|
dest = docxml.at("//div[@id = 'boilerplate-#{klass}-destination']")
|
82
163
|
auth = docxml.at("//div[@id = 'boilerplate-#{klass}' "\
|
data/lib/isodoc/xref/xref_gen.rb
CHANGED
@@ -48,7 +48,8 @@ module IsoDoc
|
|
48
48
|
t.xpath(ns("./termnote")).reject { |n| blank?(n["id"]) }.each do |n|
|
49
49
|
c.increment(n)
|
50
50
|
@anchors[n["id"]] =
|
51
|
-
{ label: termnote_label(c.print), type: "termnote",
|
51
|
+
{ label: termnote_label(c.print), type: "termnote",
|
52
|
+
value: c.print, elem: @labels["termnote"],
|
52
53
|
xref: l10n("#{anchor(t['id'], :xref)}, "\
|
53
54
|
"#{@labels['note_xref']} #{c.print}") }
|
54
55
|
end
|
@@ -49,7 +49,7 @@ module IsoDoc
|
|
49
49
|
|
50
50
|
@anchors[clause["id"]] =
|
51
51
|
{ label: nil, level: 1, xref: preface_clause_name(clause),
|
52
|
-
type: "clause" }
|
52
|
+
type: "clause", elem: @labels["clause"] }
|
53
53
|
clause.xpath(ns(SUBCLAUSES)).each_with_index do |c, i|
|
54
54
|
preface_names1(c, c.at(ns("./title"))&.text,
|
55
55
|
"#{preface_clause_name(clause)}, #{i + 1}", 2)
|
@@ -58,8 +58,8 @@ module IsoDoc
|
|
58
58
|
|
59
59
|
def preface_names1(clause, title, parent_title, level)
|
60
60
|
label = title || parent_title
|
61
|
-
@anchors[clause["id"]] =
|
62
|
-
|
61
|
+
@anchors[clause["id"]] = { label: nil, level: level, xref: label,
|
62
|
+
type: "clause", elem: @labels["clause"] }
|
63
63
|
clause.xpath(ns(SUBCLAUSES)).each_with_index do |c, i|
|
64
64
|
preface_names1(c, c.at(ns("./title"))&.text, "#{label} #{i + 1}",
|
65
65
|
level + 1)
|
@@ -86,7 +86,7 @@ module IsoDoc
|
|
86
86
|
num.increment(clause)
|
87
87
|
@anchors[clause["id"]] =
|
88
88
|
{ label: num.print, xref: l10n("#{@labels['clause']} #{num.print}"),
|
89
|
-
level: lvl, type: "clause" }
|
89
|
+
level: lvl, type: "clause", elem: @labels["clause"] }
|
90
90
|
i = Counter.new
|
91
91
|
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
92
92
|
section_names1(c, "#{num.print}.#{i.increment(c).print}", lvl + 1)
|
@@ -97,7 +97,7 @@ module IsoDoc
|
|
97
97
|
def section_names1(clause, num, level)
|
98
98
|
@anchors[clause["id"]] =
|
99
99
|
{ label: num, level: level, xref: l10n("#{@labels['clause']} #{num}"),
|
100
|
-
type: "clause" }
|
100
|
+
type: "clause", elem: @labels["clause"] }
|
101
101
|
i = Counter.new
|
102
102
|
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
103
103
|
section_names1(c, "#{num}.#{i.increment(c).print}", level + 1)
|
@@ -121,10 +121,15 @@ module IsoDoc
|
|
121
121
|
a[0]
|
122
122
|
end
|
123
123
|
|
124
|
+
def annex_name_anchors(clause, num)
|
125
|
+
{ label: annex_name_lbl(clause, num),
|
126
|
+
elem: @labels["annex"],
|
127
|
+
type: "clause", value: num.to_s, level: 1,
|
128
|
+
xref: "#{@labels['annex']} #{num}" }
|
129
|
+
end
|
130
|
+
|
124
131
|
def annex_names(clause, num)
|
125
|
-
@anchors[clause["id"]] =
|
126
|
-
type: "clause", value: num.to_s, level: 1,
|
127
|
-
xref: "#{@labels['annex']} #{num}" }
|
132
|
+
@anchors[clause["id"]] = annex_name_anchors(clause, num)
|
128
133
|
if a = single_annex_special_section(clause)
|
129
134
|
annex_names1(a, num.to_s, 1)
|
130
135
|
else
|
@@ -138,6 +143,7 @@ module IsoDoc
|
|
138
143
|
|
139
144
|
def annex_names1(clause, num, level)
|
140
145
|
@anchors[clause["id"]] = { xref: "#{@labels['annex']} #{num}",
|
146
|
+
elem: @labels["annex"],
|
141
147
|
label: num, level: level, type: "clause" }
|
142
148
|
i = Counter.new
|
143
149
|
clause.xpath(ns(SUBCLAUSES)).each do |c|
|
data/lib/isodoc/xslfo_convert.rb
CHANGED
@@ -2,8 +2,21 @@ require "metanorma"
|
|
2
2
|
|
3
3
|
module IsoDoc
|
4
4
|
class XslfoPdfConvert < ::IsoDoc::Convert
|
5
|
-
MN2PDF_OPTIONS = :mn2pdf
|
5
|
+
# MN2PDF_OPTIONS = :mn2pdf
|
6
6
|
MN2PDF_FONT_MANIFEST = :font_manifest
|
7
|
+
MN2PDF_OPTIONS = { pdfencryptionlength: "--encryption-length",
|
8
|
+
pdfownerpassword: "--owner-password",
|
9
|
+
pdfuserpassword: "--user-password",
|
10
|
+
pdfallowprint: "--allow-print",
|
11
|
+
pdfallowcopycontent: "--allow-copy-content",
|
12
|
+
pdfalloweditcontent: "--allow-edit-content",
|
13
|
+
pdfalloweditannotations: "--allow-edit-annotations",
|
14
|
+
pdfallowfillinforms: "--allow-fill-in-forms",
|
15
|
+
pdfallowaccesscontent: "--allow-access-content",
|
16
|
+
pdfallowassembledocument: "--allow-assemble-document",
|
17
|
+
pdfallowprinthq: "--allow-print-hq",
|
18
|
+
pdfencryptmetadata: "--encrypt-metadata" }.freeze
|
19
|
+
MN2PDF_DEFAULT_ARGS = { "--syntax-highlight": nil }.freeze
|
7
20
|
|
8
21
|
def initialize(options)
|
9
22
|
@format = :pdf
|
@@ -13,22 +26,10 @@ module IsoDoc
|
|
13
26
|
end
|
14
27
|
|
15
28
|
def extract_cmd_options(options)
|
16
|
-
ret =
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
a = options[:pdfallowprint] and ret["--allow-print"] = a
|
21
|
-
a = options[:pdfallowcopycontent] and ret["--allow-copy-content"] = a
|
22
|
-
a = options[:pdfalloweditcontent] and ret["--allow-edit-content"] = a
|
23
|
-
a = options[:pdfalloweditannotations] and
|
24
|
-
ret["--allow-edit-annotations"] = a
|
25
|
-
a = options[:pdfallowfillinforms] and ret["--allow-fill-in-forms"] = a
|
26
|
-
a = options[:pdfallowaccesscontent] and
|
27
|
-
ret["--allow-access-content"] = a
|
28
|
-
a = options[:pdfallowassembledocument] and
|
29
|
-
ret["--allow-assemble-document"] = a
|
30
|
-
a = options[:pdfallowprinthq] and ret["--allow-print-hq"] = a
|
31
|
-
a = options[:pdfencryptmetadata] and ret["--encrypt-metadata"] = a
|
29
|
+
ret = MN2PDF_DEFAULT_ARGS.dup
|
30
|
+
MN2PDF_OPTIONS.each do |key, opt|
|
31
|
+
value = options[key] and ret[opt] = value
|
32
|
+
end
|
32
33
|
ret
|
33
34
|
end
|
34
35
|
|
@@ -42,8 +43,7 @@ module IsoDoc
|
|
42
43
|
|
43
44
|
def pdf_options(_docxml)
|
44
45
|
ret = {}
|
45
|
-
font_manifest = @options
|
46
|
-
MN2PDF_FONT_MANIFEST) and
|
46
|
+
font_manifest = @options[MN2PDF_FONT_MANIFEST] and
|
47
47
|
ret[MN2PDF_FONT_MANIFEST] = font_manifest
|
48
48
|
@aligncrosselements && !@aligncrosselements.empty? and
|
49
49
|
ret["--param align-cross-elements="] =
|
@@ -30,6 +30,14 @@ external_terms_boilerplate: |
|
|
30
30
|
internal_external_terms_boilerplate: |
|
31
31
|
<p>لأغراض هذه الوثيقة ،تنطبق المصطلحات والتعاريف الواردة في % وما يلي.</p>
|
32
32
|
term_defined_in: "[المصطلح المحدد في %]"
|
33
|
+
binary_and: "%1 و %2"
|
34
|
+
multiple_and: "%1, و %2"
|
35
|
+
binary_or: "%1 او %2"
|
36
|
+
multiple_or: "%1, او %2"
|
37
|
+
chain_and: "%1 و %2"
|
38
|
+
chain_or: "%1 او %2"
|
39
|
+
chain_from: "%1 %من 2"
|
40
|
+
chain_to: "من %1 إلى %2"
|
33
41
|
note: ملاحظة
|
34
42
|
note_xref: ملاحظة
|
35
43
|
termnote: ملاحظة % للقيد
|
@@ -55,6 +63,9 @@ deprecated: مهمل
|
|
55
63
|
source: مصدر
|
56
64
|
and: و
|
57
65
|
all_parts: كل الأجزاء
|
66
|
+
toc_figures: جدول الأرقام
|
67
|
+
toc_tables: جدول الجداول
|
68
|
+
toc_recommendations: جدول التوصيات
|
58
69
|
month_january: يناير
|
59
70
|
month_february: فبراير
|
60
71
|
month_march: مارس
|
@@ -32,6 +32,14 @@ external_terms_boilerplate: |
|
|
32
32
|
internal_external_terms_boilerplate: |
|
33
33
|
<p>Für die Zwecke dieses Dokuments gelten die in % und im Folgenden aufgeführten Begriffe und Definitionen.</p>
|
34
34
|
term_defined_in: "[Begriff definiert in %]"
|
35
|
+
binary_and: "%1 und %2"
|
36
|
+
multiple_and: "%1, und %2"
|
37
|
+
binary_or: "%1 oder %2"
|
38
|
+
multiple_or: "%1, oder %2"
|
39
|
+
chain_and: "%1 und %2"
|
40
|
+
chain_or: "%1 oder %2"
|
41
|
+
chain_from: "%1 von %2"
|
42
|
+
chain_to: "%1 bis %2"
|
35
43
|
note: HINWEIS
|
36
44
|
note_xref: Hinweis
|
37
45
|
termnote: Hinweis % zum Eintrag
|
@@ -57,6 +65,9 @@ deprecated: DEPRECATED
|
|
57
65
|
source: QUELLE
|
58
66
|
and: und
|
59
67
|
all_parts: Alle Teile
|
68
|
+
toc_figures: Abbildungsverzeichnis
|
69
|
+
toc_tables: Tabellenverzeichnis
|
70
|
+
toc_recommendations: Empfehlungenverzeichnis
|
60
71
|
month_january: Januar
|
61
72
|
month_february: Februar
|
62
73
|
month_march: März
|
@@ -38,6 +38,14 @@ internal_external_terms_boilerplate: |
|
|
38
38
|
<p>For the purposes of this document, the terms and definitions
|
39
39
|
given in % and the following apply.</p>
|
40
40
|
term_defined_in: "[term defined in %]"
|
41
|
+
binary_and: "%1 and %2"
|
42
|
+
multiple_and: "%1, and %2"
|
43
|
+
binary_or: "%1 or %2"
|
44
|
+
multiple_or: "%1, or %2"
|
45
|
+
chain_and: "%1 and %2"
|
46
|
+
chain_or: "%1 or %2"
|
47
|
+
chain_from: "%1 from %2"
|
48
|
+
chain_to: "%1 to %2"
|
41
49
|
note: NOTE
|
42
50
|
note_xref: Note
|
43
51
|
termnote: Note % to entry
|
@@ -63,6 +71,9 @@ deprecated: DEPRECATED
|
|
63
71
|
source: SOURCE
|
64
72
|
and: and
|
65
73
|
all_parts: All Parts
|
74
|
+
toc_figures: List of figures
|
75
|
+
toc_tables: List of tables
|
76
|
+
toc_recommendations: List of recommendations
|
66
77
|
month_january: January
|
67
78
|
month_february: February
|
68
79
|
month_march: March
|
@@ -34,6 +34,14 @@ external_terms_boilerplate: |
|
|
34
34
|
internal_external_terms_boilerplate: |
|
35
35
|
<p>Para los propósitos de este documento, se aplican los términos y definiciones dados en % y los siguientes.</p>
|
36
36
|
term_defined_in: "[término definido en %]"
|
37
|
+
binary_and: "%1 y %2"
|
38
|
+
multiple_and: "%1, y %2"
|
39
|
+
binary_or: "%1 o %2"
|
40
|
+
multiple_or: "%1, o %2"
|
41
|
+
chain_and: "%1 y %2"
|
42
|
+
chain_or: "%1 o %2"
|
43
|
+
chain_from: "%1 del %2"
|
44
|
+
chain_to: "%1 al %2"
|
37
45
|
note: NOTA
|
38
46
|
note_xref: Nota
|
39
47
|
termnote: Nota % a la entrada
|
@@ -59,6 +67,9 @@ deprecated: OBSOLETO
|
|
59
67
|
source: FUENTE
|
60
68
|
and: y
|
61
69
|
all_parts: Todas las partes
|
70
|
+
toc_figures: Table de figuras
|
71
|
+
toc_tables: Tabla de tablas
|
72
|
+
toc_recommendations: Tabla de recomendaciones
|
62
73
|
month_january: Enero
|
63
74
|
month_february: Febrero
|
64
75
|
month_march: Marzo
|
@@ -31,6 +31,14 @@ external_terms_boilerplate: |
|
|
31
31
|
internal_external_terms_boilerplate: |
|
32
32
|
<p>Pour les besoins du présent document, les termes et définitions de % ainsi que les suivants, s’appliquent.</p>
|
33
33
|
term_defined_in: "[terme défini dans %]"
|
34
|
+
binary_and: "%1 et %2"
|
35
|
+
multiple_and: "%1, et %2"
|
36
|
+
binary_or: "%1 ou %2"
|
37
|
+
multiple_or: "%1, ou %2"
|
38
|
+
chain_and: "%1 et %2"
|
39
|
+
chain_or: "%1 ou %2"
|
40
|
+
chain_from: "%1 de %2"
|
41
|
+
chain_to: "%1 à %2"
|
34
42
|
note: NOTE
|
35
43
|
note_xref: Note
|
36
44
|
termnote: Note % à l’article
|
@@ -56,6 +64,9 @@ deprecated: DÉCONSEILLÉ
|
|
56
64
|
source: SOURCE
|
57
65
|
and: et
|
58
66
|
all_parts: toutes les parties
|
67
|
+
toc_figures: Table des figures
|
68
|
+
toc_tables: Table des tableaux
|
69
|
+
toc_recommendations: Table de recommandations
|
59
70
|
month_january: Janvier
|
60
71
|
month_february: Février
|
61
72
|
month_march: Mars
|
@@ -37,6 +37,14 @@ internal_external_terms_boilerplate: |
|
|
37
37
|
<p>Для целей этого документа применяются
|
38
38
|
термины и определения, данные в % и следующие.</p>
|
39
39
|
term_defined_in: "[термин, определенный в %]"
|
40
|
+
binary_and: "%1 и %2"
|
41
|
+
multiple_and: "%1, и %2"
|
42
|
+
binary_or: "%1 или %2"
|
43
|
+
multiple_or: "%1, или %2"
|
44
|
+
chain_and: "%1 и %2"
|
45
|
+
chain_or: "%1 или %2"
|
46
|
+
chain_from: "%1 от %2"
|
47
|
+
chain_to: "%1 до %2"
|
40
48
|
note: ПРИМЕЧАНИЕ
|
41
49
|
note_xref: Примечание
|
42
50
|
termnote: Примечание % к определению
|
@@ -62,6 +70,9 @@ deprecated: НЕ РЕКОМЕНДУЕТСЯ
|
|
62
70
|
source: ИСТОЧНИК
|
63
71
|
and: и
|
64
72
|
all_parts: Все части
|
73
|
+
toc_figures: Таблица фигур
|
74
|
+
toc_tables: Таблица таблиц
|
75
|
+
toc_recommendations: Таблица рекомендаций
|
65
76
|
month_january: Январь
|
66
77
|
month_february: Февраль
|
67
78
|
month_march: Март
|
@@ -33,6 +33,14 @@ external_terms_boilerplate: |
|
|
33
33
|
internal_external_terms_boilerplate: |
|
34
34
|
<p>% 界定的以及下列术语和定义适用于本文件。</p>
|
35
35
|
term_defined_in: "〖术语于%中定义〗"
|
36
|
+
binary_and: "%1和%2"
|
37
|
+
multiple_and: "%1和%2"
|
38
|
+
binary_or: "%1或%2"
|
39
|
+
multiple_or: "%1或%2"
|
40
|
+
chain_and: "%1和%2"
|
41
|
+
chain_or: "%1或%2"
|
42
|
+
chain_from: "%1从%2"
|
43
|
+
chain_to: "%1到%2"
|
36
44
|
note: 注
|
37
45
|
note_xref: 注
|
38
46
|
termnote: 注%
|
@@ -58,6 +66,9 @@ deprecated: 被取代
|
|
58
66
|
source: 定义
|
59
67
|
and: 和
|
60
68
|
all_parts: 所有部分
|
69
|
+
toc_figures: 数字列表
|
70
|
+
toc_tables: 表列表
|
71
|
+
toc_recommendations: 建议清单
|
61
72
|
month_january: 一月
|
62
73
|
month_february: 二月
|
63
74
|
month_march: 三月
|