relaton 3.0.7 → 3.0.8
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/bin/relaton +20 -0
- data/lib/relaton/bib/model/docidentifier.rb +17 -2
- data/lib/relaton/bibcollection.rb +146 -0
- data/lib/relaton/bibdata.rb +92 -0
- data/lib/relaton/bipm/data_outcomes_parser.rb +6 -1
- data/lib/relaton/cli/base_convertor.rb +134 -0
- data/lib/relaton/cli/command.rb +390 -0
- data/lib/relaton/cli/data_fetcher.rb +20 -0
- data/lib/relaton/cli/frontend/dist/404.html +18 -0
- data/lib/relaton/cli/frontend/dist/app.iife.js +1 -0
- data/lib/relaton/cli/frontend/dist/style.css +3 -0
- data/lib/relaton/cli/frontend/index.html +14 -0
- data/lib/relaton/cli/frontend/package-lock.json +2945 -0
- data/lib/relaton/cli/frontend/package.json +29 -0
- data/lib/relaton/cli/frontend/public/404.html +18 -0
- data/lib/relaton/cli/frontend/src/App.test.ts +501 -0
- data/lib/relaton/cli/frontend/src/App.vue +506 -0
- data/lib/relaton/cli/frontend/src/app.ts +90 -0
- data/lib/relaton/cli/frontend/src/components/DocumentDetail.test.ts +142 -0
- data/lib/relaton/cli/frontend/src/components/DocumentDetail.vue +228 -0
- data/lib/relaton/cli/frontend/src/components/DocumentRow.vue +88 -0
- data/lib/relaton/cli/frontend/src/components/Icon.test.ts +44 -0
- data/lib/relaton/cli/frontend/src/components/Icon.vue +55 -0
- data/lib/relaton/cli/frontend/src/components/Pagination.vue +26 -0
- data/lib/relaton/cli/frontend/src/dev/main.ts +100 -0
- data/lib/relaton/cli/frontend/src/dev/sample-data.json +71 -0
- data/lib/relaton/cli/frontend/src/lib/filter.test.ts +88 -0
- data/lib/relaton/cli/frontend/src/lib/filter.ts +95 -0
- data/lib/relaton/cli/frontend/src/lib/hydrate.test.ts +102 -0
- data/lib/relaton/cli/frontend/src/lib/hydrate.ts +55 -0
- data/lib/relaton/cli/frontend/src/lib/shards.test.ts +319 -0
- data/lib/relaton/cli/frontend/src/lib/shards.ts +183 -0
- data/lib/relaton/cli/frontend/src/lib/types.ts +148 -0
- data/lib/relaton/cli/frontend/src/lib/url.test.ts +151 -0
- data/lib/relaton/cli/frontend/src/lib/url.ts +111 -0
- data/lib/relaton/cli/frontend/src/shims-vue.d.ts +5 -0
- data/lib/relaton/cli/frontend/src/styles/index.css +27 -0
- data/lib/relaton/cli/frontend/src/test/fetch.ts +58 -0
- data/lib/relaton/cli/frontend/tsconfig.json +20 -0
- data/lib/relaton/cli/frontend/vite.config.ts +42 -0
- data/lib/relaton/cli/frontend/vitest.config.ts +11 -0
- data/lib/relaton/cli/frontend_assets.rb +58 -0
- data/lib/relaton/cli/full_text_search.rb +98 -0
- data/lib/relaton/cli/i18n.yaml +1 -0
- data/lib/relaton/cli/index_item_normalizer.rb +380 -0
- data/lib/relaton/cli/index_site_generator.rb +1015 -0
- data/lib/relaton/cli/relaton_file.rb +290 -0
- data/lib/relaton/cli/subcommand_collection.rb +263 -0
- data/lib/relaton/cli/subcommand_db.rb +81 -0
- data/lib/relaton/cli/templates/_document.liquid +111 -0
- data/lib/relaton/cli/templates/_index.liquid +61 -0
- data/lib/relaton/cli/templates/index/page.liquid +20 -0
- data/lib/relaton/cli/templates/index-style.css +1017 -0
- data/lib/relaton/cli/util.rb +8 -0
- data/lib/relaton/cli/version.rb +11 -0
- data/lib/relaton/cli/xml_convertor.rb +47 -0
- data/lib/relaton/cli/xml_to_html_renderer.rb +117 -0
- data/lib/relaton/cli/yaml_convertor.rb +102 -0
- data/lib/relaton/cli.rb +113 -0
- data/lib/relaton/doi/CLAUDE.md +1 -1
- data/lib/relaton/element_finder.rb +29 -0
- data/lib/relaton/gb/CLAUDE.md +1 -1
- data/lib/relaton/ietf/CLAUDE.md +1 -1
- data/lib/relaton/iho/CLAUDE.md +3 -3
- data/lib/relaton/iho/bibliography.rb +41 -27
- data/lib/relaton/iho/processor.rb +3 -2
- data/lib/relaton/nist/CLAUDE.md +11 -1
- data/lib/relaton/nist/README.adoc +7 -1
- data/lib/relaton/nist/hit_collection.rb +25 -1
- data/lib/relaton/nist/mods_parser.rb +32 -8
- data/lib/relaton/nist/pubs_export.rb +69 -11
- data/lib/relaton/ogc/CLAUDE.md +1 -1
- data/lib/relaton/omg/CLAUDE.md +1 -1
- data/lib/relaton/plateau/CLAUDE.md +1 -1
- data/lib/relaton/render/general.rb +319 -0
- data/lib/relaton/render/iso690/csl_import.rb +129 -0
- data/lib/relaton/render/iso690/element.rb +153 -0
- data/lib/relaton/render/iso690/elements/access.rb +44 -0
- data/lib/relaton/render/iso690/elements/authorizer.rb +45 -0
- data/lib/relaton/render/iso690/elements/citeid.rb +39 -0
- data/lib/relaton/render/iso690/elements/component_part.rb +97 -0
- data/lib/relaton/render/iso690/elements/creator.rb +267 -0
- data/lib/relaton/render/iso690/elements/edition.rb +97 -0
- data/lib/relaton/render/iso690/elements/extent.rb +71 -0
- data/lib/relaton/render/iso690/elements/identifier.rb +46 -0
- data/lib/relaton/render/iso690/elements/location.rb +73 -0
- data/lib/relaton/render/iso690/elements/medium.rb +32 -0
- data/lib/relaton/render/iso690/elements/numeration.rb +26 -0
- data/lib/relaton/render/iso690/elements/production.rb +111 -0
- data/lib/relaton/render/iso690/elements/pub_date.rb +63 -0
- data/lib/relaton/render/iso690/elements/series.rb +66 -0
- data/lib/relaton/render/iso690/elements/size.rb +45 -0
- data/lib/relaton/render/iso690/elements/status.rb +30 -0
- data/lib/relaton/render/iso690/elements/stddoc.rb +40 -0
- data/lib/relaton/render/iso690/elements/title.rb +56 -0
- data/lib/relaton/render/iso690/elements/updated.rb +38 -0
- data/lib/relaton/render/iso690/elements.rb +67 -0
- data/lib/relaton/render/iso690/fields.rb +142 -0
- data/lib/relaton/render/iso690/i18n/en.yml +48 -0
- data/lib/relaton/render/iso690/i18n/fr.yml +14 -0
- data/lib/relaton/render/iso690/i18n/ja.yml +38 -0
- data/lib/relaton/render/iso690/i18n.rb +83 -0
- data/lib/relaton/render/iso690/identifier_kinds.rb +29 -0
- data/lib/relaton/render/iso690/index_renderer.rb +57 -0
- data/lib/relaton/render/iso690/kinds.rb +53 -0
- data/lib/relaton/render/iso690/renderer.rb +150 -0
- data/lib/relaton/render/iso690/rules/bipm.rb +186 -0
- data/lib/relaton/render/iso690/rules/jis.rb +103 -0
- data/lib/relaton/render/iso690/rules/nist.rb +384 -0
- data/lib/relaton/render/iso690/rules.rb +227 -0
- data/lib/relaton/render/iso690/style/locale.rb +59 -0
- data/lib/relaton/render/iso690/style/name_form.rb +87 -0
- data/lib/relaton/render/iso690/style/scheme.rb +33 -0
- data/lib/relaton/render/iso690/style/sort_rule.rb +25 -0
- data/lib/relaton/render/iso690/style/template_map.rb +40 -0
- data/lib/relaton/render/iso690/style/type_template.rb +45 -0
- data/lib/relaton/render/iso690/style.rb +227 -0
- data/lib/relaton/render/iso690/styles/apa.yml +45 -0
- data/lib/relaton/render/iso690/styles/author-date.yml +31 -0
- data/lib/relaton/render/iso690/styles/chicago.yml +49 -0
- data/lib/relaton/render/iso690/styles/ieee-sa.yml +45 -0
- data/lib/relaton/render/iso690/styles/jis-en.yml +68 -0
- data/lib/relaton/render/iso690/styles/jis-ja.yml +67 -0
- data/lib/relaton/render/iso690/styles/lncs.yml +54 -0
- data/lib/relaton/render/iso690/styles/mla.yml +56 -0
- data/lib/relaton/render/iso690/template.rb +248 -0
- data/lib/relaton/render/iso690.rb +28 -0
- data/lib/relaton/render/version.rb +5 -0
- data/lib/relaton/un/CLAUDE.md +1 -1
- data/lib/relaton/version.rb +1 -1
- data/lib/relaton-cli.rb +17 -0
- data/lib/relaton-render.rb +13 -0
- metadata +192 -21
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require "lutaml/model"
|
|
4
|
+
|
|
5
|
+
module Relaton
|
|
6
|
+
module Render
|
|
7
|
+
module Iso690
|
|
8
|
+
# A citation style as an instance of the relaton-models CitationStyle
|
|
9
|
+
# model: the citation scheme (name form, localized strings), the
|
|
10
|
+
# citation and reference templates, and per-type template variants.
|
|
11
|
+
# All rendering knowledge is data; the engine holds no styles, no
|
|
12
|
+
# vocabularies, no localized strings.
|
|
13
|
+
class Style < Lutaml::Model::Serializable
|
|
14
|
+
autoload :NameForm, "relaton/render/iso690/style/name_form"
|
|
15
|
+
autoload :Locale, "relaton/render/iso690/style/locale"
|
|
16
|
+
autoload :Scheme, "relaton/render/iso690/style/scheme"
|
|
17
|
+
autoload :TemplateMap, "relaton/render/iso690/style/template_map"
|
|
18
|
+
autoload :SortRule, "relaton/render/iso690/style/sort_rule"
|
|
19
|
+
autoload :TypeTemplate, "relaton/render/iso690/style/type_template"
|
|
20
|
+
|
|
21
|
+
attribute :name, :string
|
|
22
|
+
# The citation-style family the pack belongs to (iso690 | lncs |
|
|
23
|
+
# chicago | ieee-sa | apa): selects the presentation-of-models
|
|
24
|
+
# conventions the templates address
|
|
25
|
+
attribute :family, :string, default: "iso690"
|
|
26
|
+
# A named pack this one deltas over; resolved at load with the
|
|
27
|
+
# documented merge semantics (#merge_delta)
|
|
28
|
+
attribute :extends, :string
|
|
29
|
+
# Engine capabilities the pack addresses; a resolver that lacks
|
|
30
|
+
# one fails loudly instead of mis-rendering
|
|
31
|
+
attribute :requires, :string, collection: true, default: []
|
|
32
|
+
# Pack-declared taxonomy: wire type -> kind (aliasing or
|
|
33
|
+
# fallthrough), consulted before the engine's Kinds table
|
|
34
|
+
attribute :types, :hash, default: -> { {} }
|
|
35
|
+
# Presentation-of-models selections: slot -> named engine rule
|
|
36
|
+
attribute :rules, :hash, default: -> { {} }
|
|
37
|
+
attribute :scheme, Scheme, default: -> { Scheme.new }
|
|
38
|
+
attribute :templates, TemplateMap, default: -> { TemplateMap.new }
|
|
39
|
+
attribute :per_type, TypeTemplate, collection: true, default: []
|
|
40
|
+
attribute :sort_key, SortRule, collection: true, default: []
|
|
41
|
+
|
|
42
|
+
key_value do
|
|
43
|
+
map "name", to: :name
|
|
44
|
+
map "family", to: :family
|
|
45
|
+
map "extends", to: :extends
|
|
46
|
+
map "requires", to: :requires
|
|
47
|
+
map "types", to: :types
|
|
48
|
+
map "rules", to: :rules
|
|
49
|
+
map "scheme", to: :scheme
|
|
50
|
+
map "templates", to: :templates
|
|
51
|
+
map "perType", to: :per_type
|
|
52
|
+
map "sortKey", to: :sort_key
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# The index sort rules; creator then date when the style declares
|
|
56
|
+
# none (the name-and-date default).
|
|
57
|
+
def sort_keys
|
|
58
|
+
return sort_key unless sort_key.empty?
|
|
59
|
+
|
|
60
|
+
[SortRule.new(attribute: "creator"), SortRule.new(attribute: "date")]
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
# The ISO 690 kind of an item: the vocabulary's mapping, or
|
|
64
|
+
# the style's declared kind for types the vocabulary does not
|
|
65
|
+
# map (a flavor whose untyped items are not reports)
|
|
66
|
+
def kind_for(type)
|
|
67
|
+
declared_type = types[type.to_s]
|
|
68
|
+
unless declared_type.to_s.empty?
|
|
69
|
+
return Kinds.mapped?(declared_type) ? Kinds.kind_for(declared_type) :
|
|
70
|
+
declared_type
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
return Kinds.kind_for(type) if Kinds.mapped?(type)
|
|
74
|
+
|
|
75
|
+
declared = scheme.default_kind.to_s
|
|
76
|
+
declared.empty? ? Kinds.kind_for(type) : declared
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Per-type template selection is a data lookup; unmatched types
|
|
80
|
+
# fall back to the general reference template. When a kind has
|
|
81
|
+
# home-flagged variants, the split is resolved by whether the item
|
|
82
|
+
# carries the scheme's home document identifier.
|
|
83
|
+
def template_for(type, home: nil)
|
|
84
|
+
candidates = per_type.select { |t| t.type == type.to_s }
|
|
85
|
+
if candidates.size > 1 && !home.nil?
|
|
86
|
+
candidates = candidates.select { |t| (t.home || false) == home }
|
|
87
|
+
end
|
|
88
|
+
candidates.first&.template || templates.reference
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def type_template_for(type)
|
|
92
|
+
per_type.find { |t| t.type == type.to_s }
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# The home split applies to the short cite as it does to the
|
|
96
|
+
# reference template (a home standard's short cite is not an
|
|
97
|
+
# external standard's)
|
|
98
|
+
def short_template_for(type, home: nil)
|
|
99
|
+
candidates = per_type.select { |t| t.type == type.to_s }
|
|
100
|
+
if candidates.size > 1 && !home.nil?
|
|
101
|
+
candidates = candidates.select { |t| (t.home || false) == home }
|
|
102
|
+
end
|
|
103
|
+
candidates.filter_map(&:short).first
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# The absent-slot replacement text declared for a type, when any
|
|
107
|
+
def fallback_for(type, slot)
|
|
108
|
+
type_template_for(type)&.fallbacks&.[](slot.to_s)
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def title_form_for(type)
|
|
112
|
+
per_type.lazy.select { |t| t.type == type.to_s }
|
|
113
|
+
.find { |t| t.title && !t.title.empty? }&.title
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
# First-creator name form: the style's declared name template with
|
|
117
|
+
# the surname upcased, per the name-and-date convention.
|
|
118
|
+
def render_name(surname:, given:)
|
|
119
|
+
shown = scheme.name_form.surname_upcase ? surname.upcase : surname
|
|
120
|
+
Template.new(templates.name).evaluate(
|
|
121
|
+
"surname" => Template::Field[!shown.empty?, shown],
|
|
122
|
+
"givennames" => Template::Field[!given.empty?, given],
|
|
123
|
+
)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
# The documented delta merge: perType entries merge per type
|
|
127
|
+
# key (a delta re-declaring `article` never drops the base's
|
|
128
|
+
# `monograph`); hash sections merge per key; scalars, templates
|
|
129
|
+
# and rule selections replace; sortKey and requires union.
|
|
130
|
+
# Deterministic and engine-portable.
|
|
131
|
+
def merge_delta(base)
|
|
132
|
+
merged_per_type = base.per_type.dup
|
|
133
|
+
per_type.each do |delta|
|
|
134
|
+
index = merged_per_type.find_index do |b|
|
|
135
|
+
b.type == delta.type && (b.home || false) == (delta.home || false)
|
|
136
|
+
end
|
|
137
|
+
index ? merged_per_type[index] = delta : merged_per_type << delta
|
|
138
|
+
end
|
|
139
|
+
self.per_type = merged_per_type
|
|
140
|
+
self.types = base.types.merge(types)
|
|
141
|
+
self.rules = base.rules.merge(rules)
|
|
142
|
+
merge_scheme(base)
|
|
143
|
+
merge_templates(base)
|
|
144
|
+
self.sort_key = (base.sort_key + sort_key).uniq
|
|
145
|
+
self.requires = (base.requires + requires).uniq
|
|
146
|
+
self
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
private
|
|
150
|
+
|
|
151
|
+
def merge_scheme(base)
|
|
152
|
+
fresh = NameForm.new
|
|
153
|
+
NameForm.attributes.each_key do |attr|
|
|
154
|
+
val = scheme.name_form.send(attr)
|
|
155
|
+
next unless val == fresh.send(attr)
|
|
156
|
+
|
|
157
|
+
base_val = base.scheme.name_form.send(attr)
|
|
158
|
+
scheme.name_form.send("#{attr}=", base_val) if
|
|
159
|
+
base_val != fresh.send(attr)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
scheme.system = base.scheme.system if scheme.system.to_s.empty?
|
|
163
|
+
scheme.short_from_reference = base.scheme.short_from_reference unless
|
|
164
|
+
scheme.short_from_reference
|
|
165
|
+
scheme.home_docid_type = base.scheme.home_docid_type if
|
|
166
|
+
Array(scheme.home_docid_type).empty?
|
|
167
|
+
scheme.default_kind = base.scheme.default_kind if
|
|
168
|
+
scheme.default_kind.to_s.empty?
|
|
169
|
+
|
|
170
|
+
locale = scheme.locale
|
|
171
|
+
base_locale = base.scheme.locale
|
|
172
|
+
locale.conj ||= base_locale.conj
|
|
173
|
+
locale.others ||= base_locale.others
|
|
174
|
+
locale.no_date ||= base_locale.no_date
|
|
175
|
+
locale.no_author ||= base_locale.no_author
|
|
176
|
+
locale.in_str ||= base_locale.in_str
|
|
177
|
+
locale.at ||= base_locale.at
|
|
178
|
+
locale.available_at ||= base_locale.available_at
|
|
179
|
+
# delta labels win per key; the base's label map only fills
|
|
180
|
+
# gaps. Hash#merge! yields |key, receiver, other|, so the
|
|
181
|
+
# delta value is the second argument.
|
|
182
|
+
locale.labels.merge!(base_locale.label_map) { |_k, delta, _base| delta }
|
|
183
|
+
# a delta's named attributes assert over the inherited labels
|
|
184
|
+
locale.named_label_map.each_key { |k| locale.labels.delete(k) }
|
|
185
|
+
locale.punct = (base_locale.punct || {}).merge(locale.punct || {})
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def merge_templates(base)
|
|
189
|
+
fresh = TemplateMap.new
|
|
190
|
+
TemplateMap.attributes.each_key do |attr|
|
|
191
|
+
val = templates.send(attr)
|
|
192
|
+
base_val = base.templates.send(attr)
|
|
193
|
+
next unless val == fresh.send(attr) && base_val != fresh.send(attr)
|
|
194
|
+
|
|
195
|
+
templates.send("#{attr}=", base_val)
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
class << self
|
|
200
|
+
def load(name_or_path, seen = [])
|
|
201
|
+
path = style_path(name_or_path) or
|
|
202
|
+
raise ArgumentError, "unknown style #{name_or_path}"
|
|
203
|
+
style = from_yaml(File.read(path))
|
|
204
|
+
return style if style.extends.to_s.empty?
|
|
205
|
+
|
|
206
|
+
style.extends.split(/\s+/).each do |base_name|
|
|
207
|
+
raise ArgumentError,
|
|
208
|
+
"circular extends #{base_name}" if seen.include?(base_name)
|
|
209
|
+
|
|
210
|
+
style.merge_delta(load(base_name, seen + [base_name]))
|
|
211
|
+
end
|
|
212
|
+
style
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
private
|
|
216
|
+
|
|
217
|
+
def style_path(name)
|
|
218
|
+
file = File.join(__dir__, "styles", "#{name}.yml")
|
|
219
|
+
return file if File.file?(file)
|
|
220
|
+
|
|
221
|
+
name if name.is_a?(String) && File.file?(name)
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
end
|
|
227
|
+
end
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# American Psychological Association (7th ed.) reference forms: all
|
|
2
|
+
# author names invert with initials ("Author, A. B."), the date
|
|
3
|
+
# follows the authors in parentheses, article titles take no marks
|
|
4
|
+
# (sentence case is the author's), and only book titles and journal
|
|
5
|
+
# names carry italics. The reference list joins with a comma and ampersand.
|
|
6
|
+
name: "APA (7th edition) references"
|
|
7
|
+
family: apa
|
|
8
|
+
scheme:
|
|
9
|
+
system: name-date
|
|
10
|
+
nameForm:
|
|
11
|
+
initials: true
|
|
12
|
+
initialsSeparator: " "
|
|
13
|
+
initialsPeriod: true
|
|
14
|
+
invertedAll: true
|
|
15
|
+
givenNameFirst: false
|
|
16
|
+
editorsMarked: false
|
|
17
|
+
surnameUpcase: false
|
|
18
|
+
orgUpcase: false
|
|
19
|
+
subsequentSurnameUpcase: false
|
|
20
|
+
locale:
|
|
21
|
+
"in": "In"
|
|
22
|
+
labels:
|
|
23
|
+
"and": "&"
|
|
24
|
+
oxford_comma: ","
|
|
25
|
+
templates:
|
|
26
|
+
titleOpen: ""
|
|
27
|
+
titleClose: ""
|
|
28
|
+
citation: "{{surname}}, {{date}}"
|
|
29
|
+
reference: "{{creator}} ({{date}}). {{title}}. {{series}}. {{production}}. {{extent}}"
|
|
30
|
+
name: "{{surname}}, {{givenNames}}"
|
|
31
|
+
identifierMode: all
|
|
32
|
+
perType:
|
|
33
|
+
- type: report
|
|
34
|
+
home: true
|
|
35
|
+
template: "{{title}}"
|
|
36
|
+
- type: report
|
|
37
|
+
template: "{{identifier}}. ({{date}}). {{title}}. {{production}}."
|
|
38
|
+
- type: monograph
|
|
39
|
+
title: "<em>{{title}}</em>"
|
|
40
|
+
template: "{{creator}} ({{date}}). {{title}}. {{production}}."
|
|
41
|
+
- type: component_part
|
|
42
|
+
template: "{{creator}} ({{date}}). {{title}}. {{componentpart}} ({{extent}}). {{production}}."
|
|
43
|
+
- type: continuing
|
|
44
|
+
series: "<em>{{seriestitle}}, {{serienumber}}</em>"
|
|
45
|
+
template: "{{creator}} ({{date}}). {{title}}. {{series}} {{extent}}. {{location}}"
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# ISO 690 name-and-date citation style, an instance of the relaton-models
|
|
2
|
+
# CitationStyle model. Templates place the ISO 690 clause 7 data elements
|
|
3
|
+
# ({{creator}}, {{title}}, ...) in each resource kind's clause 8 order; an
|
|
4
|
+
# absent element takes its trailing punctuation with it. A new style is a
|
|
5
|
+
# YAML instance — the engine holds no styles.
|
|
6
|
+
name: "ISO 690 (name and date)"
|
|
7
|
+
scheme:
|
|
8
|
+
system: name-date
|
|
9
|
+
nameForm:
|
|
10
|
+
initials: false
|
|
11
|
+
givenNameFirst: false
|
|
12
|
+
# ISO 690 marks an editor list's role ("(éd.)") also when the list
|
|
13
|
+
# holds a single editor; flavors opt out per their own style
|
|
14
|
+
loneEditorMarked: true
|
|
15
|
+
templates:
|
|
16
|
+
titleOpen: "_"
|
|
17
|
+
titleClose: "_"
|
|
18
|
+
citation: "{{surname}}, {{date}}{{disambiguator}}"
|
|
19
|
+
reference: "{{creator}}. {{title}}. {{medium}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{identifier}}. {{location}}."
|
|
20
|
+
name: "{{surname}}, {{givenNames}}"
|
|
21
|
+
perType:
|
|
22
|
+
- type: monograph
|
|
23
|
+
template: "{{creator}}. {{title}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{identifier}}. {{location}}."
|
|
24
|
+
- type: report
|
|
25
|
+
template: "{{creator}}. {{title}}. {{numeration}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{identifier}}. {{location}}."
|
|
26
|
+
- type: patent
|
|
27
|
+
template: "{{creator}}. {{title}}. {{identifier}}. {{date}}."
|
|
28
|
+
- type: continuing
|
|
29
|
+
template: "{{creator}}. {{title}}. {{componentPart}}. {{medium}}. {{edition}}. {{production}}, {{date}}. {{numeration}}. {{identifier}}. {{location}}."
|
|
30
|
+
- type: online
|
|
31
|
+
template: "{{creator}}. {{title}}. {{date}}. {{identifier}}. {{location}}."
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Chicago Manual of Style (17th ed.), bibliography forms: the notes
|
|
2
|
+
# system's reference list. Only the first author name inverts ("Peck,
|
|
3
|
+
# R. B., W. E. Hanson, and T. H. Thornburn"), article titles carry
|
|
4
|
+
# quotation marks, book titles are set in italics, and production runs
|
|
5
|
+
# "Place: Publisher".
|
|
6
|
+
name: "Chicago Manual of Style (bibliography)"
|
|
7
|
+
family: chicago
|
|
8
|
+
requires:
|
|
9
|
+
- extent_units
|
|
10
|
+
scheme:
|
|
11
|
+
system: name-date
|
|
12
|
+
nameForm:
|
|
13
|
+
initials: false
|
|
14
|
+
initialsSeparator: " "
|
|
15
|
+
initialsPeriod: true
|
|
16
|
+
invertedAll: false
|
|
17
|
+
givenNameFirst: false
|
|
18
|
+
editorsMarked: true
|
|
19
|
+
loneEditorMarked: true
|
|
20
|
+
surnameUpcase: false
|
|
21
|
+
subsequentSurnameUpcase: true
|
|
22
|
+
orgUpcase: false
|
|
23
|
+
locale:
|
|
24
|
+
"in": "in"
|
|
25
|
+
labels:
|
|
26
|
+
"and": "and"
|
|
27
|
+
oxford_comma: ","
|
|
28
|
+
series_no: "no."
|
|
29
|
+
templates:
|
|
30
|
+
titleOpen: "\""
|
|
31
|
+
titleClose: "\""
|
|
32
|
+
citation: "{{surname}}, {{date}}"
|
|
33
|
+
reference: "{{creator}}. {{title}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{extent}}."
|
|
34
|
+
name: "{{surname}}, {{givenNames}}"
|
|
35
|
+
identifierMode: all
|
|
36
|
+
perType:
|
|
37
|
+
- type: report
|
|
38
|
+
home: true
|
|
39
|
+
template: "{{title}}"
|
|
40
|
+
- type: report
|
|
41
|
+
template: "{{creator}}. {{title}}. {{edition}}. {{production}}, {{date}}."
|
|
42
|
+
- type: monograph
|
|
43
|
+
title: "<em>{{title}}</em>"
|
|
44
|
+
template: "{{creator}}. {{title}}. {{edition}}. {{production}}, {{date}}. {{extent}}."
|
|
45
|
+
- type: component_part
|
|
46
|
+
template: "{{creator}}. \"{{title}}.\" {{componentpart}}. {{production}}, {{date}}. {{extent}}."
|
|
47
|
+
- type: continuing
|
|
48
|
+
series: "<em>{{seriestitle}}</em>"
|
|
49
|
+
template: "{{creator}}. \"{{title}}.\" {{series}} {{extent}} ({{date}}). {{location}}"
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# IEEE-SA Standards Style Manual bibliography forms (clause 17): a
|
|
2
|
+
# standard's entry is its designation and title, nothing else - no
|
|
3
|
+
# authors, no publisher, no place; articles and books follow the
|
|
4
|
+
# Chicago-derived forms, with only the first author name inverting and
|
|
5
|
+
# the in-text citation carrying the designation and the [B#] number.
|
|
6
|
+
name: "IEEE-SA standards bibliography"
|
|
7
|
+
family: ieee-sa
|
|
8
|
+
scheme:
|
|
9
|
+
system: designation
|
|
10
|
+
nameForm:
|
|
11
|
+
initials: true
|
|
12
|
+
initialsSeparator: " "
|
|
13
|
+
initialsPeriod: true
|
|
14
|
+
invertedAll: false
|
|
15
|
+
givenNameFirst: false
|
|
16
|
+
editorsMarked: false
|
|
17
|
+
surnameUpcase: false
|
|
18
|
+
subsequentSurnameUpcase: false
|
|
19
|
+
locale:
|
|
20
|
+
labels:
|
|
21
|
+
"and": "and"
|
|
22
|
+
oxford_comma: ","
|
|
23
|
+
templates:
|
|
24
|
+
titleOpen: ""
|
|
25
|
+
titleClose: ""
|
|
26
|
+
citation: "{{identifier}}"
|
|
27
|
+
reference: "{{creator}}, {{title}}. {{series}}. {{extent}}. {{date}}."
|
|
28
|
+
name: "{{surname}}, {{givenNames}}"
|
|
29
|
+
identifierMode: first
|
|
30
|
+
perType:
|
|
31
|
+
- type: report
|
|
32
|
+
home: true
|
|
33
|
+
template: "{{title}}"
|
|
34
|
+
- type: report
|
|
35
|
+
template: "{{identifier}}, {{title}}"
|
|
36
|
+
- type: monograph
|
|
37
|
+
title: "<em>{{title}}</em>"
|
|
38
|
+
template: "{{creator}}, {{title}}, {{edition}}. {{production}}, {{date}}, {{extent}}."
|
|
39
|
+
- type: component_part
|
|
40
|
+
title: "\"{{title}},\""
|
|
41
|
+
template: "{{creator}}, {{title}} {{componentpart}}, {{extent}}, {{date}}."
|
|
42
|
+
- type: continuing
|
|
43
|
+
title: "\"{{title}},\""
|
|
44
|
+
series: "<em>{{seriestitle}}</em>"
|
|
45
|
+
template: "{{creator}}, {{title}} {{series}}, {{extent}}, {{date}}."
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# The metanorma-jis CitationStyle instance, English forms
|
|
2
|
+
# (relaton-render 3.0.0.pre Iso690 engine): the ISO 690 order with the
|
|
3
|
+
# Latin punctuation of the en language pack.
|
|
4
|
+
name: "ISO 690 (JIS, en)"
|
|
5
|
+
scheme:
|
|
6
|
+
system: name-date
|
|
7
|
+
shortFromReference: true
|
|
8
|
+
homeDocidType: []
|
|
9
|
+
nameForm:
|
|
10
|
+
initials: true
|
|
11
|
+
initialsSeparator: ""
|
|
12
|
+
initialsPeriod: true
|
|
13
|
+
surnameUpcase: false
|
|
14
|
+
subsequentSurnameUpcase: false
|
|
15
|
+
invertedAll: true
|
|
16
|
+
completenameUpcase: false
|
|
17
|
+
orgUpcase: false
|
|
18
|
+
editorsMarked: false
|
|
19
|
+
locale:
|
|
20
|
+
availableAt: "Available at:"
|
|
21
|
+
labels:
|
|
22
|
+
"and": "&"
|
|
23
|
+
oxford_comma: ""
|
|
24
|
+
series_no: ""
|
|
25
|
+
templates:
|
|
26
|
+
titleOpen: ""
|
|
27
|
+
titleClose: ""
|
|
28
|
+
identifierMode: first
|
|
29
|
+
citation: "{{surname}} {{date}}"
|
|
30
|
+
uri: "<span class='biburl'><fmt-link target='{{uri}}'>{{uri}}</fmt-link></span>"
|
|
31
|
+
reference: "{{creator}}{{role}}. {{title}}. {{edition}}. ({{series}}). {{production}}. {{date}}. {{size}}"
|
|
32
|
+
name: "{{surname}} {{givenNames}}"
|
|
33
|
+
perType:
|
|
34
|
+
- type: report
|
|
35
|
+
home: true
|
|
36
|
+
short: "<span class='stddocTitle'>{{title}}</span>, {{extent}}"
|
|
37
|
+
template: "{{title}}"
|
|
38
|
+
title: "<span class='stddocTitle'>{{title}}</span>"
|
|
39
|
+
- type: report
|
|
40
|
+
fallbacks:
|
|
41
|
+
date: "n.d"
|
|
42
|
+
template: "{{creator}}. {{title}}. {{edition}}. {{production}}. {{authorizer}}. {{location}}"
|
|
43
|
+
short: "{{creator}}. <span class='stddocTitle'>{{title}}</span>. {{edition}}. {{production}}"
|
|
44
|
+
title: "<span class='stddocTitle'>{{title}}</span>"
|
|
45
|
+
- type: monograph
|
|
46
|
+
noPlace: true
|
|
47
|
+
fallbacks:
|
|
48
|
+
date: "n.d"
|
|
49
|
+
template: "{{creator}}{{role}}. {{title}}. {{edition}}. ({{series}}). {{production}}. {{date}}. {{size}}. {{location}}"
|
|
50
|
+
- type: continuing
|
|
51
|
+
template: "{{title}}. {{date}}"
|
|
52
|
+
- type: online
|
|
53
|
+
fallbacks:
|
|
54
|
+
date: "n.d"
|
|
55
|
+
template: "{{creator}}. {{title}}. {{production}}. {{date}}. {{location}}"
|
|
56
|
+
- type: webdoc
|
|
57
|
+
fallbacks:
|
|
58
|
+
date: "n.d"
|
|
59
|
+
template: "{{creator}}. {{title}}. {{production}}. {{date}}. {{location}}"
|
|
60
|
+
- type: component_part
|
|
61
|
+
noPlace: true
|
|
62
|
+
template: "{{creator}}{{role}}. {{title}}. {{componentpart}}. {{edition}}. ({{series}}). {{production}}. {{date}}. {{extent}}. {{location}}"
|
|
63
|
+
- type: serial_part
|
|
64
|
+
template: "{{creator}}{{role}}. {{title}}. {{series}}. {{date}}, {{extent}}. {{location}}"
|
|
65
|
+
series: "{{seriestitle}} ({{seriesrun}})"
|
|
66
|
+
- type: article
|
|
67
|
+
template: "{{creator}}{{role}}. {{title}}. {{series}}. {{date}}, {{extent}}"
|
|
68
|
+
series: "{{seriestitle}} ({{seriesrun}})"
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# The metanorma-jis CitationStyle instance, Japanese forms
|
|
2
|
+
# (relaton-render 3.0.0.pre Iso690 engine): the ISO 690 order with the
|
|
3
|
+
# Latin punctuation of the en language pack.
|
|
4
|
+
name: "ISO 690 (JIS, ja)"
|
|
5
|
+
scheme:
|
|
6
|
+
system: name-date
|
|
7
|
+
shortFromReference: true
|
|
8
|
+
homeDocidType: []
|
|
9
|
+
nameForm:
|
|
10
|
+
initials: true
|
|
11
|
+
initialsSeparator: ""
|
|
12
|
+
initialsPeriod: true
|
|
13
|
+
surnameUpcase: false
|
|
14
|
+
subsequentSurnameUpcase: false
|
|
15
|
+
invertedAll: true
|
|
16
|
+
completenameUpcase: false
|
|
17
|
+
orgUpcase: false
|
|
18
|
+
editorsMarked: false
|
|
19
|
+
locale:
|
|
20
|
+
labels:
|
|
21
|
+
"and": ""
|
|
22
|
+
oxford_comma: ""
|
|
23
|
+
series_no: ""
|
|
24
|
+
templates:
|
|
25
|
+
titleOpen: ""
|
|
26
|
+
titleClose: ""
|
|
27
|
+
identifierMode: first
|
|
28
|
+
citation: "{{surname}} {{date}}"
|
|
29
|
+
uri: "<span class='biburl'><fmt-link target='{{uri}}'>{{uri}}</fmt-link></span>"
|
|
30
|
+
reference: "{{creator}}{{role}}。 {{title}}。 {{edition}}。({{series}})。 {{production}}。 {{date}}。 {{size}}"
|
|
31
|
+
name: "{{surname}} {{givenNames}}"
|
|
32
|
+
perType:
|
|
33
|
+
- type: report
|
|
34
|
+
home: true
|
|
35
|
+
short: "<span class='stddocTitle'>{{title}}</span>、 {{extent}}"
|
|
36
|
+
template: "{{title}}"
|
|
37
|
+
title: "<span class='stddocTitle'>{{title}}</span>"
|
|
38
|
+
- type: report
|
|
39
|
+
fallbacks:
|
|
40
|
+
date: "日付なし"
|
|
41
|
+
template: "{{creator}}。 {{title}}。 {{edition}}。 {{production}}。 {{authorizer}}。 {{location}}"
|
|
42
|
+
short: "{{creator}}。 <span class='stddocTitle'>{{title}}</span>。 {{edition}}。 {{production}}"
|
|
43
|
+
title: "<span class='stddocTitle'>{{title}}</span>"
|
|
44
|
+
- type: monograph
|
|
45
|
+
noPlace: true
|
|
46
|
+
fallbacks:
|
|
47
|
+
date: "日付なし"
|
|
48
|
+
template: "{{creator}}{{role}}。 {{title}}。 {{edition}}。({{series}})。 {{production}}。 {{date}}。 {{size}}。 {{location}}"
|
|
49
|
+
- type: continuing
|
|
50
|
+
template: "{{title}}。 {{date}}"
|
|
51
|
+
- type: online
|
|
52
|
+
fallbacks:
|
|
53
|
+
date: "日付なし"
|
|
54
|
+
template: "{{creator}}。 {{title}}。 {{production}}。 {{date}}。 {{location}}"
|
|
55
|
+
- type: webdoc
|
|
56
|
+
fallbacks:
|
|
57
|
+
date: "日付なし"
|
|
58
|
+
template: "{{creator}}。 {{title}}。 {{production}}。 {{date}}。 {{location}}"
|
|
59
|
+
- type: component_part
|
|
60
|
+
noPlace: true
|
|
61
|
+
template: "{{creator}}{{role}}。 {{title}}。 {{componentpart}}。 {{edition}}。({{series}})。 {{production}}。 {{date}}。 {{extent}}。 {{location}}"
|
|
62
|
+
- type: serial_part
|
|
63
|
+
template: "{{creator}}{{role}}。 {{title}}。 {{series}}。 {{date}}、{{extent}}。 {{location}}"
|
|
64
|
+
series: "{{seriestitle}} ({{seriesrun}})"
|
|
65
|
+
- type: article
|
|
66
|
+
template: "{{creator}}{{role}}。 {{title}}。 {{series}}。 {{date}}、{{extent}}"
|
|
67
|
+
series: "{{seriestitle}} ({{seriesrun}})"
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# Springer LNCS citation style, an instance of the relaton-models
|
|
2
|
+
# CitationStyle model. The LNCS shape: "Author, A.B.: Title. In:
|
|
3
|
+
# Editor, E. (ed.), Proceedings. LNCS 1234, pp. 10-20. Springer,
|
|
4
|
+
# Heidelberg (2010)" - the creator list closes on a colon, the year
|
|
5
|
+
# closes the entry in parentheses, publishers precede places, and a
|
|
6
|
+
# standard with no personal authors leads with the publisher's
|
|
7
|
+
# abbreviation.
|
|
8
|
+
name: "Springer LNCS"
|
|
9
|
+
family: lncs
|
|
10
|
+
requires:
|
|
11
|
+
- production_order
|
|
12
|
+
- extent_units
|
|
13
|
+
scheme:
|
|
14
|
+
system: name-date
|
|
15
|
+
nameForm:
|
|
16
|
+
initials: true
|
|
17
|
+
initialsSeparator: ""
|
|
18
|
+
initialsPeriod: true
|
|
19
|
+
invertedAll: true
|
|
20
|
+
givenNameFirst: false
|
|
21
|
+
editorsMarked: true
|
|
22
|
+
loneEditorMarked: true
|
|
23
|
+
creatorFallback: publisher_abbrev
|
|
24
|
+
surnameUpcase: false
|
|
25
|
+
subsequentSurnameUpcase: false
|
|
26
|
+
locale:
|
|
27
|
+
"in": "In"
|
|
28
|
+
availableAt: ""
|
|
29
|
+
labels:
|
|
30
|
+
"and": ""
|
|
31
|
+
oxford_comma: ""
|
|
32
|
+
series_no: ""
|
|
33
|
+
punct:
|
|
34
|
+
production_order: publisher_first
|
|
35
|
+
production_sep: ", "
|
|
36
|
+
templates:
|
|
37
|
+
titleOpen: ""
|
|
38
|
+
titleClose: ""
|
|
39
|
+
citation: "{{surname}}, {{date}}"
|
|
40
|
+
reference: "{{creator}}: {{title}}. {{series}}. {{production}} {{dategroup}}. {{location}}"
|
|
41
|
+
name: "{{surname}}, {{givenNames}}"
|
|
42
|
+
identifierMode: first
|
|
43
|
+
perType:
|
|
44
|
+
- type: report
|
|
45
|
+
home: true
|
|
46
|
+
template: "{{title}}"
|
|
47
|
+
- type: report
|
|
48
|
+
template: "{{creator}}: {{identifier}}, {{title}}. {{production}} {{dategroup}}."
|
|
49
|
+
- type: monograph
|
|
50
|
+
template: "{{creator}}: {{title}}. {{series}} {{production}} {{dategroup}}"
|
|
51
|
+
- type: component_part
|
|
52
|
+
template: "{{creator}}: {{title}}. {{componentpart}} {{extent}} {{production}} {{dategroup}}"
|
|
53
|
+
- type: continuing
|
|
54
|
+
template: "{{creator}}: {{title}}. {{series}} {{extent}} {{dategroup}}"
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# MLA Handbook (9th ed.), Works Cited forms: every author after the
|
|
2
|
+
# first renders in natural order ("Dorris, Michael, and Louise
|
|
3
|
+
# Erdrich"), three or more collapse to "et al."; self-contained titles
|
|
4
|
+
# are italic and container/part titles take quotation marks; the date
|
|
5
|
+
# closes the entry before the extent. The in-text citation carries the
|
|
6
|
+
# author alone - MLA has no date in the parenthesis.
|
|
7
|
+
name: "MLA (9th edition) Works Cited"
|
|
8
|
+
family: mla
|
|
9
|
+
requires:
|
|
10
|
+
- extent_units
|
|
11
|
+
scheme:
|
|
12
|
+
system: name-date
|
|
13
|
+
nameForm:
|
|
14
|
+
initials: false
|
|
15
|
+
initialsSeparator: " "
|
|
16
|
+
initialsPeriod: true
|
|
17
|
+
invertedAll: false
|
|
18
|
+
givenNameFirst: false
|
|
19
|
+
editorsMarked: true
|
|
20
|
+
surnameUpcase: false
|
|
21
|
+
subsequentSurnameUpcase: false
|
|
22
|
+
orgUpcase: false
|
|
23
|
+
listStyle: serial
|
|
24
|
+
etalCount: 3
|
|
25
|
+
etalDisplay: 1
|
|
26
|
+
locale:
|
|
27
|
+
"in": "in"
|
|
28
|
+
labels:
|
|
29
|
+
"and": "and"
|
|
30
|
+
oxford_comma: ","
|
|
31
|
+
others: "et al."
|
|
32
|
+
templates:
|
|
33
|
+
titleOpen: "\""
|
|
34
|
+
titleClose: "\""
|
|
35
|
+
citation: "{{surname}}"
|
|
36
|
+
reference: "{{creator}}. {{title}}. {{edition}}. {{series}}. {{production}}, {{date}}. {{extent}}."
|
|
37
|
+
name: "{{surname}}, {{givenNames}}"
|
|
38
|
+
identifierMode: all
|
|
39
|
+
perType:
|
|
40
|
+
- type: report
|
|
41
|
+
title: "<em>{{title}}</em>"
|
|
42
|
+
template: "{{creator}}. {{title}}. {{edition}}. {{production}}, {{date}}."
|
|
43
|
+
- type: monograph
|
|
44
|
+
title: "<em>{{title}}</em>"
|
|
45
|
+
template: "{{creator}}. {{title}}. {{edition}}. {{production}}, {{date}}. {{extent}}."
|
|
46
|
+
- type: component_part
|
|
47
|
+
title: "\"{{title}}\""
|
|
48
|
+
componentpart: "<em>{{componentpart}}</em>"
|
|
49
|
+
template: "{{creator}}. {{title}}. {{componentpart}}, {{production}}, {{date}}. {{extent}}."
|
|
50
|
+
- type: continuing
|
|
51
|
+
title: "\"{{title}}\""
|
|
52
|
+
series: "<em>{{seriestitle}}</em>"
|
|
53
|
+
template: "{{creator}}. {{title}}. {{series}}, {{date}}. {{extent}}."
|
|
54
|
+
sortKey:
|
|
55
|
+
- attribute: creator
|
|
56
|
+
- attribute: date
|