asciidoctor-bibliography 0.3.0 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.adoc +23 -4
- data/asciidoctor-bibliography.gemspec +8 -8
- data/lib/asciidoctor-bibliography.rb +6 -0
- data/lib/asciidoctor-bibliography/asciidoctor/bibliographer_preprocessor.rb +35 -23
- data/lib/asciidoctor-bibliography/bibliographer.rb +0 -15
- data/lib/asciidoctor-bibliography/citation.rb +29 -22
- data/lib/asciidoctor-bibliography/databases/bibtex.rb +4 -1
- data/lib/asciidoctor-bibliography/formatter.rb +28 -0
- data/lib/asciidoctor-bibliography/index.rb +24 -16
- data/lib/asciidoctor-bibliography/options.rb +65 -32
- data/lib/asciidoctor-bibliography/version.rb +1 -1
- data/lib/citeproc/ruby/formats/adoc.rb +36 -0
- data/lib/csl/styles/tex-citealp-authoryear.csl +117 -0
- data/lib/csl/styles/tex-citealp-numeric.csl +116 -0
- data/lib/csl/styles/tex-citealps-authoryear.csl +117 -0
- data/lib/csl/styles/tex-citealps-numeric.csl +116 -0
- data/lib/csl/styles/tex-citealt-authoryear.csl +119 -0
- data/lib/csl/styles/tex-citealt-numeric.csl +119 -0
- data/lib/csl/styles/tex-citealts-authoryear.csl +119 -0
- data/lib/csl/styles/tex-citealts-numeric.csl +119 -0
- data/lib/csl/styles/tex-citeauthor-authoryear.csl +116 -0
- data/lib/csl/styles/tex-citeauthor-numeric.csl +116 -0
- data/lib/csl/styles/tex-citeauthors-authoryear.csl +116 -0
- data/lib/csl/styles/tex-citeauthors-numeric.csl +116 -0
- data/lib/csl/styles/tex-citep-authoryear.csl +117 -0
- data/lib/csl/styles/tex-citep-numeric.csl +116 -0
- data/lib/csl/styles/tex-citeps-authoryear.csl +117 -0
- data/lib/csl/styles/tex-citeps-numeric.csl +116 -0
- data/lib/csl/styles/tex-citet-authoryear.csl +119 -0
- data/lib/csl/styles/tex-citet-numeric.csl +119 -0
- data/lib/csl/styles/tex-citets-authoryear.csl +119 -0
- data/lib/csl/styles/tex-citets-numeric.csl +119 -0
- data/lib/csl/styles/tex-citeyear-authoryear.csl +116 -0
- data/lib/csl/styles/tex-citeyear-numeric.csl +116 -0
- data/lib/csl/styles/tex-citeyearpar-authoryear.csl +116 -0
- data/lib/csl/styles/tex-citeyearpar-numeric.csl +116 -0
- data/samples/tex/sample-numbers.adoc +1 -1
- data/samples/tex/sample-sort.adoc +1 -1
- data/spec/citation_helper.rb +46 -0
- data/spec/citation_item_spec.rb +0 -2
- data/spec/csl/styles/tex_citealp_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citealp_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citealps_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citealps_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citealt_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citealt_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citealts_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citealts_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citeauthor_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citeauthor_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citeauthors_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citeauthors_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citep_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citep_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citeps_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citeps_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citet_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citet_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citets_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citets_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citeyear_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citeyear_numeric_spec.rb +42 -0
- data/spec/csl/styles/tex_citeyearpar_authoryear_spec.rb +42 -0
- data/spec/csl/styles/tex_citeyearpar_numeric_spec.rb +42 -0
- data/spec/database_spec.rb +20 -1
- data/spec/macros_spec.rb +21 -0
- data/spec/options_spec.rb +105 -1
- metadata +72 -24
- data/lib/asciidoctor-bibliography/formatters/csl.rb +0 -28
- data/lib/asciidoctor-bibliography/formatters/tex.rb +0 -187
- data/lib/asciidoctor-bibliography/helpers.rb +0 -41
- data/spec/helpers_spec.rb +0 -73
@@ -8,6 +8,7 @@ module AsciidoctorBibliography
|
|
8
8
|
|
9
9
|
DEFAULTS = {
|
10
10
|
"bibliography-database" => nil,
|
11
|
+
"bibliography-locale" => "en-US",
|
11
12
|
"bibliography-style" => "apa",
|
12
13
|
"bibliography-hyperlinks" => "true",
|
13
14
|
"bibliography-order" => "alphabetical", # TODO: deprecate
|
@@ -19,16 +20,47 @@ module AsciidoctorBibliography
|
|
19
20
|
merge DEFAULTS
|
20
21
|
end
|
21
22
|
|
23
|
+
def self.new_from_reader(reader)
|
24
|
+
header_attributes = get_header_attributes_hash reader
|
25
|
+
header_attributes.select! { |key, _| DEFAULTS.keys.include? key }
|
26
|
+
new.merge header_attributes
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.get_header_attributes_hash(reader)
|
30
|
+
# We peek at the document attributes we need, without perturbing the parsing flow.
|
31
|
+
# NOTE: we'll use this in a preprocessor and they haven't been parsed yet, there.
|
32
|
+
tmp_document = ::Asciidoctor::Document.new
|
33
|
+
tmp_reader = ::Asciidoctor::PreprocessorReader.new(tmp_document, reader.source_lines)
|
34
|
+
|
35
|
+
::Asciidoctor::Parser.
|
36
|
+
parse(tmp_reader, tmp_document, header_only: true).
|
37
|
+
attributes
|
38
|
+
end
|
39
|
+
|
22
40
|
def style
|
23
41
|
# Error throwing delegated to CSL library. Seems to have nice messages.
|
24
42
|
self["bibliography-style"] || DEFAULTS["bibliography-style"]
|
25
43
|
end
|
26
44
|
|
45
|
+
def locale
|
46
|
+
value = self["bibliography-locale"] || DEFAULTS["bibliography-locale"]
|
47
|
+
unless CSL::Locale.list.include? value
|
48
|
+
raise Errors::Options::Invalid, <<~MESSAGE
|
49
|
+
Option :bibliography-locale: has an invalid value (#{value}).
|
50
|
+
Allowed values are #{CSL::Locale.list.inspect}.
|
51
|
+
MESSAGE
|
52
|
+
end
|
53
|
+
|
54
|
+
value
|
55
|
+
end
|
56
|
+
|
27
57
|
def hyperlinks?
|
28
58
|
value = self["bibliography-hyperlinks"] || DEFAULTS["bibliography-hyperlinks"]
|
29
59
|
unless %w[true false].include? value
|
30
|
-
|
31
|
-
|
60
|
+
raise Errors::Options::Invalid, <<~MESSAGE
|
61
|
+
Option :bibliography-hyperlinks: has an invalid value (#{value}).
|
62
|
+
Allowed values are 'true' and 'false'.
|
63
|
+
MESSAGE
|
32
64
|
end
|
33
65
|
|
34
66
|
value == "true"
|
@@ -37,8 +69,10 @@ module AsciidoctorBibliography
|
|
37
69
|
def database
|
38
70
|
value = self["bibliography-database"] || DEFAULTS["bibliography-database"]
|
39
71
|
if value.nil?
|
40
|
-
|
41
|
-
|
72
|
+
raise Errors::Options::Missing, <<~MESSAGE
|
73
|
+
Option :bibliography-database: is mandatory.
|
74
|
+
A bibliographic database is required.
|
75
|
+
MESSAGE
|
42
76
|
end
|
43
77
|
|
44
78
|
value
|
@@ -48,50 +82,49 @@ module AsciidoctorBibliography
|
|
48
82
|
begin
|
49
83
|
value = YAML.safe_load self["bibliography-sort"].to_s
|
50
84
|
rescue Psych::SyntaxError => psych_error
|
51
|
-
|
52
|
-
|
85
|
+
raise Errors::Options::Invalid, <<~MESSAGE
|
86
|
+
Option :bibliography-sort: is not a valid YAML string: \"#{psych_error}\".
|
87
|
+
MESSAGE
|
53
88
|
end
|
54
89
|
|
55
|
-
value =
|
56
|
-
value =
|
90
|
+
value = validate_parsed_sort_type! value
|
91
|
+
value = validate_parsed_sort_contents! value unless value.nil?
|
57
92
|
value
|
58
93
|
end
|
59
94
|
|
60
95
|
def tex_style
|
61
|
-
self["bibliography-tex-style"] || DEFAULTS["bibliography-tex-style"]
|
96
|
+
value = self["bibliography-tex-style"] || DEFAULTS["bibliography-tex-style"]
|
97
|
+
unless %w[authoryear numeric].include? value
|
98
|
+
raise Errors::Options::Invalid, <<~MESSAGE
|
99
|
+
Option :bibliography-tex-style: has an invalid value (#{value}).
|
100
|
+
Allowed values are 'authoryear' (default) and 'numeric'.
|
101
|
+
MESSAGE
|
102
|
+
end
|
103
|
+
|
104
|
+
value
|
62
105
|
end
|
63
106
|
|
64
|
-
|
107
|
+
private
|
108
|
+
|
109
|
+
def validate_parsed_sort_type!(value)
|
65
110
|
return value if value.nil?
|
66
111
|
return value if value.is_a?(Array) && value.all? { |v| v.is_a? Hash }
|
67
112
|
return [value] if value.is_a? Hash
|
68
|
-
|
69
|
-
|
113
|
+
raise Errors::Options::Invalid, <<~MESSAGE
|
114
|
+
Option :bibliography-sort: has an invalid value (#{value}).
|
115
|
+
Please refer to manual for more info.
|
116
|
+
MESSAGE
|
70
117
|
end
|
71
118
|
|
72
|
-
def
|
119
|
+
def validate_parsed_sort_contents!(array)
|
73
120
|
# TODO: should we restrict these? Double check the CSL spec.
|
74
121
|
allowed_keys = %w[variable macro sort names-min names-use-first names-use-last]
|
75
122
|
return array unless array.any? { |hash| (hash.keys - allowed_keys).any? }
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
header_attributes = get_header_attributes_hash reader
|
82
|
-
header_attributes.select! { |key, _| DEFAULTS.keys.include? key }
|
83
|
-
new.merge header_attributes
|
84
|
-
end
|
85
|
-
|
86
|
-
def self.get_header_attributes_hash(reader)
|
87
|
-
# We peek at the document attributes we need, without perturbing the parsing flow.
|
88
|
-
# NOTE: we'll use this in a preprocessor and they haven't been parsed yet, there.
|
89
|
-
tmp_document = ::Asciidoctor::Document.new
|
90
|
-
tmp_reader = ::Asciidoctor::PreprocessorReader.new(tmp_document, reader.source_lines)
|
91
|
-
|
92
|
-
::Asciidoctor::Parser.
|
93
|
-
parse(tmp_reader, tmp_document, header_only: true).
|
94
|
-
attributes
|
123
|
+
raise Errors::Options::Invalid, <<~MESSAGE
|
124
|
+
Option :bibliography-sort: has a value containing invalid keys (#{array}).
|
125
|
+
Allowed keys are #{allowed_keys.inspect}.
|
126
|
+
Please refer to manual for more info.
|
127
|
+
MESSAGE
|
95
128
|
end
|
96
129
|
end
|
97
130
|
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require "citeproc/ruby/format"
|
2
|
+
|
3
|
+
module CiteProc
|
4
|
+
module Ruby
|
5
|
+
module Formats
|
6
|
+
class Adoc < Format
|
7
|
+
# TODO
|
8
|
+
# def bibliography(bibliography)
|
9
|
+
# end
|
10
|
+
|
11
|
+
def apply_font_style
|
12
|
+
output.replace "_#{output}_" if options[:'font-style'] == "italic"
|
13
|
+
end
|
14
|
+
|
15
|
+
# TODO
|
16
|
+
# def apply_font_variant
|
17
|
+
# output.replace "*#{output}*" if options[:'font-variant'] == 'small-caps'
|
18
|
+
# end
|
19
|
+
|
20
|
+
def apply_font_weight
|
21
|
+
output.replace "*#{output}*" if options[:'font-weight'] == "bold"
|
22
|
+
end
|
23
|
+
|
24
|
+
# TODO
|
25
|
+
# def apply_text_decoration
|
26
|
+
# output.replace "*#{output}*" if options[:'text-decoration'] == 'underline'
|
27
|
+
# end
|
28
|
+
|
29
|
+
def apply_vertical_align
|
30
|
+
output.replace "^#{output}^" if options[:vertical_align] == "sup"
|
31
|
+
output.replace "~#{output}~" if options[:vertical_align] == "sub"
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never">
|
3
|
+
<info>
|
4
|
+
<title>TeX style for macro citealp with authoryear style</title>
|
5
|
+
<id>tex-citealp-authoryear</id>
|
6
|
+
</info>
|
7
|
+
<macro name="author-long">
|
8
|
+
<names variable="author">
|
9
|
+
<name form="short" and="text" initialize="false" sort-separator=""/>
|
10
|
+
</names>
|
11
|
+
</macro>
|
12
|
+
<macro name="author-short">
|
13
|
+
<names variable="author">
|
14
|
+
<name form="short" and="text" et-al-min="2" et-al-use-first="1" et-al-subsequent-min="2" et-al-subsequent-use-first="1"/>
|
15
|
+
</names>
|
16
|
+
</macro>
|
17
|
+
<macro name="locators">
|
18
|
+
<choose>
|
19
|
+
<if type="article-journal article-magazine" match="any">
|
20
|
+
<group prefix=", " delimiter=", ">
|
21
|
+
<group>
|
22
|
+
<text variable="volume" font-style="italic"/>
|
23
|
+
<text variable="issue" prefix="(" suffix=")"/>
|
24
|
+
</group>
|
25
|
+
<text variable="page"/>
|
26
|
+
</group>
|
27
|
+
<choose>
|
28
|
+
<if variable="issued">
|
29
|
+
<choose>
|
30
|
+
<if variable="page issue" match="none">
|
31
|
+
<text variable="status" prefix=". "/>
|
32
|
+
</if>
|
33
|
+
</choose>
|
34
|
+
</if>
|
35
|
+
</choose>
|
36
|
+
</if>
|
37
|
+
<else-if type="article-newspaper">
|
38
|
+
<group delimiter=" " prefix=", ">
|
39
|
+
<label variable="page" form="short"/>
|
40
|
+
<text variable="page"/>
|
41
|
+
</group>
|
42
|
+
</else-if>
|
43
|
+
<else-if type="book graphic motion_picture report song chapter paper-conference entry-encyclopedia entry-dictionary" match="any">
|
44
|
+
<group prefix=" (" suffix=")" delimiter=", ">
|
45
|
+
<choose>
|
46
|
+
<if type="report" match="none">
|
47
|
+
<text macro="edition"/>
|
48
|
+
</if>
|
49
|
+
</choose>
|
50
|
+
<choose>
|
51
|
+
<if variable="volume" match="any">
|
52
|
+
<group>
|
53
|
+
<text term="volume" form="short" text-case="capitalize-first" suffix=" "/>
|
54
|
+
<number variable="volume" form="numeric"/>
|
55
|
+
</group>
|
56
|
+
</if>
|
57
|
+
<else>
|
58
|
+
<group>
|
59
|
+
<text term="volume" form="short" plural="true" text-case="capitalize-first" suffix=" "/>
|
60
|
+
<number variable="number-of-volumes" form="numeric" prefix="1–"/>
|
61
|
+
</group>
|
62
|
+
</else>
|
63
|
+
</choose>
|
64
|
+
<group>
|
65
|
+
<label variable="page" form="short" suffix=" "/>
|
66
|
+
<text variable="page"/>
|
67
|
+
</group>
|
68
|
+
</group>
|
69
|
+
</else-if>
|
70
|
+
<else-if type="legal_case">
|
71
|
+
<group prefix=" (" suffix=")" delimiter=" ">
|
72
|
+
<text variable="authority"/>
|
73
|
+
<choose>
|
74
|
+
<if variable="container-title" match="any">
|
75
|
+
<date variable="issued" form="numeric" date-parts="year"/>
|
76
|
+
</if>
|
77
|
+
<else>
|
78
|
+
<date variable="issued" form="text"/>
|
79
|
+
</else>
|
80
|
+
</choose>
|
81
|
+
</group>
|
82
|
+
</else-if>
|
83
|
+
<else-if type="bill legislation" match="any">
|
84
|
+
<date variable="issued" prefix=" (" suffix=")">
|
85
|
+
<date-part name="year"/>
|
86
|
+
</date>
|
87
|
+
</else-if>
|
88
|
+
</choose>
|
89
|
+
</macro>
|
90
|
+
<macro name="citation-locator">
|
91
|
+
<group>
|
92
|
+
<choose>
|
93
|
+
<if locator="chapter">
|
94
|
+
<label variable="locator" form="long" text-case="capitalize-first"/>
|
95
|
+
</if>
|
96
|
+
<else>
|
97
|
+
<label variable="locator" form="short"/>
|
98
|
+
</else>
|
99
|
+
</choose>
|
100
|
+
<text variable="locator" prefix=" "/>
|
101
|
+
</group>
|
102
|
+
</macro>
|
103
|
+
<citation>
|
104
|
+
<layout delimiter="; ">
|
105
|
+
<group>
|
106
|
+
<text variable="prefix" suffix=" "/>
|
107
|
+
<group delimiter=", ">
|
108
|
+
<text macro="author-short"/>
|
109
|
+
<date date-parts="year" form="numeric" variable="issued"/>
|
110
|
+
<text macro="citation-locator"/>
|
111
|
+
</group>
|
112
|
+
<text variable="suffix" prefix=", "/>
|
113
|
+
</group>
|
114
|
+
</layout>
|
115
|
+
</citation>
|
116
|
+
<bibliography/>
|
117
|
+
</style>
|
@@ -0,0 +1,116 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never">
|
3
|
+
<info>
|
4
|
+
<title>TeX style for macro citealp with numeric style</title>
|
5
|
+
<id>tex-citealp-numeric</id>
|
6
|
+
</info>
|
7
|
+
<macro name="author-long">
|
8
|
+
<names variable="author">
|
9
|
+
<name form="short" and="text" initialize="false" sort-separator=""/>
|
10
|
+
</names>
|
11
|
+
</macro>
|
12
|
+
<macro name="author-short">
|
13
|
+
<names variable="author">
|
14
|
+
<name form="short" and="text" et-al-min="2" et-al-use-first="1" et-al-subsequent-min="2" et-al-subsequent-use-first="1"/>
|
15
|
+
</names>
|
16
|
+
</macro>
|
17
|
+
<macro name="locators">
|
18
|
+
<choose>
|
19
|
+
<if type="article-journal article-magazine" match="any">
|
20
|
+
<group prefix=", " delimiter=", ">
|
21
|
+
<group>
|
22
|
+
<text variable="volume" font-style="italic"/>
|
23
|
+
<text variable="issue" prefix="(" suffix=")"/>
|
24
|
+
</group>
|
25
|
+
<text variable="page"/>
|
26
|
+
</group>
|
27
|
+
<choose>
|
28
|
+
<if variable="issued">
|
29
|
+
<choose>
|
30
|
+
<if variable="page issue" match="none">
|
31
|
+
<text variable="status" prefix=". "/>
|
32
|
+
</if>
|
33
|
+
</choose>
|
34
|
+
</if>
|
35
|
+
</choose>
|
36
|
+
</if>
|
37
|
+
<else-if type="article-newspaper">
|
38
|
+
<group delimiter=" " prefix=", ">
|
39
|
+
<label variable="page" form="short"/>
|
40
|
+
<text variable="page"/>
|
41
|
+
</group>
|
42
|
+
</else-if>
|
43
|
+
<else-if type="book graphic motion_picture report song chapter paper-conference entry-encyclopedia entry-dictionary" match="any">
|
44
|
+
<group prefix=" (" suffix=")" delimiter=", ">
|
45
|
+
<choose>
|
46
|
+
<if type="report" match="none">
|
47
|
+
<text macro="edition"/>
|
48
|
+
</if>
|
49
|
+
</choose>
|
50
|
+
<choose>
|
51
|
+
<if variable="volume" match="any">
|
52
|
+
<group>
|
53
|
+
<text term="volume" form="short" text-case="capitalize-first" suffix=" "/>
|
54
|
+
<number variable="volume" form="numeric"/>
|
55
|
+
</group>
|
56
|
+
</if>
|
57
|
+
<else>
|
58
|
+
<group>
|
59
|
+
<text term="volume" form="short" plural="true" text-case="capitalize-first" suffix=" "/>
|
60
|
+
<number variable="number-of-volumes" form="numeric" prefix="1–"/>
|
61
|
+
</group>
|
62
|
+
</else>
|
63
|
+
</choose>
|
64
|
+
<group>
|
65
|
+
<label variable="page" form="short" suffix=" "/>
|
66
|
+
<text variable="page"/>
|
67
|
+
</group>
|
68
|
+
</group>
|
69
|
+
</else-if>
|
70
|
+
<else-if type="legal_case">
|
71
|
+
<group prefix=" (" suffix=")" delimiter=" ">
|
72
|
+
<text variable="authority"/>
|
73
|
+
<choose>
|
74
|
+
<if variable="container-title" match="any">
|
75
|
+
<date variable="issued" form="numeric" date-parts="year"/>
|
76
|
+
</if>
|
77
|
+
<else>
|
78
|
+
<date variable="issued" form="text"/>
|
79
|
+
</else>
|
80
|
+
</choose>
|
81
|
+
</group>
|
82
|
+
</else-if>
|
83
|
+
<else-if type="bill legislation" match="any">
|
84
|
+
<date variable="issued" prefix=" (" suffix=")">
|
85
|
+
<date-part name="year"/>
|
86
|
+
</date>
|
87
|
+
</else-if>
|
88
|
+
</choose>
|
89
|
+
</macro>
|
90
|
+
<macro name="citation-locator">
|
91
|
+
<group>
|
92
|
+
<choose>
|
93
|
+
<if locator="chapter">
|
94
|
+
<label variable="locator" form="long" text-case="capitalize-first"/>
|
95
|
+
</if>
|
96
|
+
<else>
|
97
|
+
<label variable="locator" form="short"/>
|
98
|
+
</else>
|
99
|
+
</choose>
|
100
|
+
<text variable="locator" prefix=" "/>
|
101
|
+
</group>
|
102
|
+
</macro>
|
103
|
+
<citation>
|
104
|
+
<layout delimiter=", ">
|
105
|
+
<group>
|
106
|
+
<text variable="prefix" suffix=" "/>
|
107
|
+
<group delimiter=", ">
|
108
|
+
<text variable="citation-number"/>
|
109
|
+
<text macro="citation-locator"/>
|
110
|
+
</group>
|
111
|
+
<text variable="suffix" prefix=", "/>
|
112
|
+
</group>
|
113
|
+
</layout>
|
114
|
+
</citation>
|
115
|
+
<bibliography/>
|
116
|
+
</style>
|
@@ -0,0 +1,117 @@
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
2
|
+
<style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" version="1.0" demote-non-dropping-particle="never">
|
3
|
+
<info>
|
4
|
+
<title>TeX style for macro citealp* with authoryear style</title>
|
5
|
+
<id>tex-citealps-authoryear</id>
|
6
|
+
</info>
|
7
|
+
<macro name="author-long">
|
8
|
+
<names variable="author">
|
9
|
+
<name form="short" and="text" initialize="false" sort-separator=""/>
|
10
|
+
</names>
|
11
|
+
</macro>
|
12
|
+
<macro name="author-short">
|
13
|
+
<names variable="author">
|
14
|
+
<name form="short" and="text" et-al-min="2" et-al-use-first="1" et-al-subsequent-min="2" et-al-subsequent-use-first="1"/>
|
15
|
+
</names>
|
16
|
+
</macro>
|
17
|
+
<macro name="locators">
|
18
|
+
<choose>
|
19
|
+
<if type="article-journal article-magazine" match="any">
|
20
|
+
<group prefix=", " delimiter=", ">
|
21
|
+
<group>
|
22
|
+
<text variable="volume" font-style="italic"/>
|
23
|
+
<text variable="issue" prefix="(" suffix=")"/>
|
24
|
+
</group>
|
25
|
+
<text variable="page"/>
|
26
|
+
</group>
|
27
|
+
<choose>
|
28
|
+
<if variable="issued">
|
29
|
+
<choose>
|
30
|
+
<if variable="page issue" match="none">
|
31
|
+
<text variable="status" prefix=". "/>
|
32
|
+
</if>
|
33
|
+
</choose>
|
34
|
+
</if>
|
35
|
+
</choose>
|
36
|
+
</if>
|
37
|
+
<else-if type="article-newspaper">
|
38
|
+
<group delimiter=" " prefix=", ">
|
39
|
+
<label variable="page" form="short"/>
|
40
|
+
<text variable="page"/>
|
41
|
+
</group>
|
42
|
+
</else-if>
|
43
|
+
<else-if type="book graphic motion_picture report song chapter paper-conference entry-encyclopedia entry-dictionary" match="any">
|
44
|
+
<group prefix=" (" suffix=")" delimiter=", ">
|
45
|
+
<choose>
|
46
|
+
<if type="report" match="none">
|
47
|
+
<text macro="edition"/>
|
48
|
+
</if>
|
49
|
+
</choose>
|
50
|
+
<choose>
|
51
|
+
<if variable="volume" match="any">
|
52
|
+
<group>
|
53
|
+
<text term="volume" form="short" text-case="capitalize-first" suffix=" "/>
|
54
|
+
<number variable="volume" form="numeric"/>
|
55
|
+
</group>
|
56
|
+
</if>
|
57
|
+
<else>
|
58
|
+
<group>
|
59
|
+
<text term="volume" form="short" plural="true" text-case="capitalize-first" suffix=" "/>
|
60
|
+
<number variable="number-of-volumes" form="numeric" prefix="1–"/>
|
61
|
+
</group>
|
62
|
+
</else>
|
63
|
+
</choose>
|
64
|
+
<group>
|
65
|
+
<label variable="page" form="short" suffix=" "/>
|
66
|
+
<text variable="page"/>
|
67
|
+
</group>
|
68
|
+
</group>
|
69
|
+
</else-if>
|
70
|
+
<else-if type="legal_case">
|
71
|
+
<group prefix=" (" suffix=")" delimiter=" ">
|
72
|
+
<text variable="authority"/>
|
73
|
+
<choose>
|
74
|
+
<if variable="container-title" match="any">
|
75
|
+
<date variable="issued" form="numeric" date-parts="year"/>
|
76
|
+
</if>
|
77
|
+
<else>
|
78
|
+
<date variable="issued" form="text"/>
|
79
|
+
</else>
|
80
|
+
</choose>
|
81
|
+
</group>
|
82
|
+
</else-if>
|
83
|
+
<else-if type="bill legislation" match="any">
|
84
|
+
<date variable="issued" prefix=" (" suffix=")">
|
85
|
+
<date-part name="year"/>
|
86
|
+
</date>
|
87
|
+
</else-if>
|
88
|
+
</choose>
|
89
|
+
</macro>
|
90
|
+
<macro name="citation-locator">
|
91
|
+
<group>
|
92
|
+
<choose>
|
93
|
+
<if locator="chapter">
|
94
|
+
<label variable="locator" form="long" text-case="capitalize-first"/>
|
95
|
+
</if>
|
96
|
+
<else>
|
97
|
+
<label variable="locator" form="short"/>
|
98
|
+
</else>
|
99
|
+
</choose>
|
100
|
+
<text variable="locator" prefix=" "/>
|
101
|
+
</group>
|
102
|
+
</macro>
|
103
|
+
<citation>
|
104
|
+
<layout delimiter="; ">
|
105
|
+
<group>
|
106
|
+
<text variable="prefix" suffix=" "/>
|
107
|
+
<group delimiter=", ">
|
108
|
+
<text macro="author-long"/>
|
109
|
+
<date date-parts="year" form="numeric" variable="issued"/>
|
110
|
+
<text macro="citation-locator"/>
|
111
|
+
</group>
|
112
|
+
<text variable="suffix" prefix=", "/>
|
113
|
+
</group>
|
114
|
+
</layout>
|
115
|
+
</citation>
|
116
|
+
<bibliography/>
|
117
|
+
</style>
|