citeproc-rb 0.0.1

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.
Files changed (52) hide show
  1. data/README +93 -0
  2. data/Rakefile +73 -0
  3. data/TODO +25 -0
  4. data/VERSION +1 -0
  5. data/data/locales/locales_en.xml +89 -0
  6. data/data/locales/locales_nl.xml +96 -0
  7. data/data/styles/ama.csl +184 -0
  8. data/data/styles/apa.csl +230 -0
  9. data/data/styles/apsa.csl +175 -0
  10. data/data/styles/asa.csl +215 -0
  11. data/data/styles/chicago-author-date.csl +361 -0
  12. data/data/styles/chicago-fullnote-bibliography.csl +665 -0
  13. data/data/styles/chicago-note-bibliography.csl +437 -0
  14. data/data/styles/chicago-note.csl +383 -0
  15. data/data/styles/harvard.csl +185 -0
  16. data/data/styles/ieee.csl +111 -0
  17. data/data/styles/mhra.csl +317 -0
  18. data/data/styles/mla.csl +173 -0
  19. data/data/styles/nature.csl +87 -0
  20. data/data/styles/nlm.csl +118 -0
  21. data/examples/citeproc_driver.rb +174 -0
  22. data/lib/citeproc.rb +28 -0
  23. data/lib/citeproc/csl.rb +647 -0
  24. data/lib/citeproc/csl_parser.rb +479 -0
  25. data/lib/citeproc/csl_processor.rb +485 -0
  26. data/lib/citeproc/csl_reference.rb +228 -0
  27. data/lib/citeproc/filters/bibo/bibo.rb +635 -0
  28. data/lib/citeproc/filters/bibo/bibo_input_filter.rb +242 -0
  29. data/lib/citeproc/filters/bibo/bibo_utils.rb +75 -0
  30. data/lib/citeproc/filters/csl_citation/csl_citation.rb +137 -0
  31. data/lib/citeproc/filters/csl_citation/csl_citation_input_filter.rb +274 -0
  32. data/lib/citeproc/formatters/base_formatter.rb +115 -0
  33. data/lib/citeproc/formatters/xhtml_formatter.rb +144 -0
  34. data/lib/citeproc/input_filter.rb +97 -0
  35. data/test/fixtures/bibo_test_data.n3 +191 -0
  36. data/test/fixtures/bibo_test_data.yaml +96 -0
  37. data/test/fixtures/bibo_test_how_to_cook.n3 +63 -0
  38. data/test/fixtures/bibo_test_zotero.rdf +129 -0
  39. data/test/fixtures/csl_test_data.json +62 -0
  40. data/test/fixtures/csl_test_data.yaml +8 -0
  41. data/test/fixtures/locales/test_locale_en.xml +89 -0
  42. data/test/fixtures/styles/test_csl_parse.csl +230 -0
  43. data/test/fixtures/styles/test_groups.csl +32 -0
  44. data/test/fixtures/styles/test_names.csl +46 -0
  45. data/test/fixtures/styles/test_sort.csl +125 -0
  46. data/test/fixtures/styles/test_text_terms.csl +40 -0
  47. data/test/test_all.rb +14 -0
  48. data/test/test_bibo.rb +20 -0
  49. data/test/test_csl.rb +136 -0
  50. data/test/test_csl_parser.rb +222 -0
  51. data/test/test_sample_bibo.rb +82 -0
  52. metadata +101 -0
data/README ADDED
@@ -0,0 +1,93 @@
1
+ citeproc-rb README
2
+ ==================
3
+
4
+ NB: citeproc-rb is currently incomplete and error-prone.
5
+ Please check http://xbiblio.sourceforge.net/ regularly for updates.
6
+
7
+
8
+ Overview
9
+ --------
10
+
11
+ citeproc-rb is a Ruby port of Citeproc, a process for converting citations
12
+ into a variety of formats using a macro language called Citation Style Language
13
+ (CSL). For more details on Citeproc and CSL, please check
14
+ http://xbiblio.sourceforge.net/.
15
+
16
+ citeproc-rb itself is currently designed to citations in two formats: an internal
17
+ CSL model and Bibliontology (http://bibliontology). Bibliontology itself is
18
+ designed to support a range of additional formats, such as BibTeX, greatly
19
+ extending the range of formats supported.
20
+
21
+ The basic classes of Citeproc-rb is as follows:
22
+
23
+ Citeproc - the main process for Citeproc; controls the processing
24
+ pipeline
25
+ InputFilter - converts input sources and provides a standard interface for
26
+ retrieving citation data
27
+ Csl - the CSL object model
28
+ CslParser - parses CSL rules into an object model
29
+ CslProcessor - processes citations according to the CSL rules
30
+ BaseFormatter - formats citations in plain text
31
+ XhtmlFormatter - formats citations in XHTML
32
+
33
+ Together these classes form a processing pipeline: the Citeproc controls
34
+ filtering citations input; the parsing of CSL rules; and
35
+ formatting the citations according to the rules.
36
+
37
+ The InputFilter class provides some basic services but is designed to be
38
+ sub-classed for particular input formats.
39
+
40
+
41
+ Requirements
42
+ ------------
43
+
44
+ * ruby 1.8
45
+ <http://www.ruby-lang.org/>
46
+
47
+ Optional:
48
+
49
+ * Rubygems
50
+ <http://www.rubygems.org/>
51
+
52
+ * ActiveSupport
53
+ <http://rubyforge.org/projects/activesupport/>
54
+
55
+ * YAML
56
+ <http://yaml4r.sourceforge.com/>
57
+
58
+ * JSON
59
+ <http://json.rubyforge.com/>
60
+
61
+ * Redland Ruby bindings (for Bibliontology support)
62
+ <http://librdf.org/>
63
+
64
+
65
+
66
+ Usage
67
+ -----
68
+
69
+ To use the internal CSL model with JSON:
70
+
71
+ ruby examples/citeproc_driver.rb --input test/fixtures/csl_test_data.json --content-type json --csl data/styles/ama.csl
72
+
73
+ With YAML:
74
+
75
+ ruby examples/citeproc_driver.rb --input test/fixtures/csl_test_data.yaml --content-type yaml --csl data/styles/ama.csl
76
+
77
+ To use Bibliontology data, again with YAML (but note the YAML includes class specifications):
78
+
79
+ ruby examples/citeproc_driver.rb --input-filter bibo --input test/fixtures/bibo_test_data.yaml --content-type yaml --csl data/styles/ama.csl
80
+
81
+ With RDF (presumes Redland with Ruby bindings is installed):
82
+
83
+ ruby examples/citeproc_driver.rb --input-filter bibo --input test/fixtures/bibo_test_data.xml --content-type rdf --csl data/styles/ama.csl
84
+
85
+
86
+
87
+ License
88
+ -------
89
+
90
+ You can redistribute it and/or modify it under the same term as Ruby.
91
+
92
+
93
+ Liam Magee <liam.magee@gmail.com>
data/Rakefile ADDED
@@ -0,0 +1,73 @@
1
+ require "rake/rdoctask"
2
+ require "rake/testtask"
3
+ require "rake/gempackagetask"
4
+
5
+ require "rubygems"
6
+
7
+ dir = File.dirname(__FILE__)
8
+ lib = File.join(dir, "lib", "citeproc.rb")
9
+ version = File.read('VERSION').chomp
10
+
11
+ task :default => [:test]
12
+
13
+ Rake::TestTask.new do |test|
14
+ test.libs << "test"
15
+ test.test_files = [ "test/test_all.rb" ]
16
+ test.verbose = true
17
+ end
18
+
19
+ Rake::RDocTask.new do |rdoc|
20
+ rdoc.rdoc_files.include( "README", "VERSION", "lib/" )
21
+ rdoc.main = "README"
22
+ rdoc.rdoc_dir = "doc/html"
23
+ rdoc.title = "Citeproc-rb Documentation"
24
+ end
25
+
26
+
27
+
28
+ spec = Gem::Specification.new do |spec|
29
+ spec.name = "citeproc-rb"
30
+ spec.version = version
31
+ spec.platform = Gem::Platform::RUBY
32
+ spec.summary = "Citeproc-rb is a Ruby port of the ."
33
+ spec.files = Dir.glob("{data,examples,lib,test}/**/*.{rb,csl,xml,n3,rdf,json,yaml}").
34
+ delete_if { |item| item.include?(".svn") } +
35
+ ["Rakefile"]
36
+
37
+ spec.test_suite_file = "test/test_all.rb"
38
+ spec.has_rdoc = true
39
+ spec.extra_rdoc_files = %w{README TODO VERSION}
40
+ spec.rdoc_options << '--title' << 'Citeproc-rb Documentation' <<
41
+ '--main' << 'README'
42
+
43
+ spec.require_path = 'lib'
44
+
45
+ spec.author = "Liam Magee"
46
+ spec.email = "liam.magee@gmail.com"
47
+ spec.homepage = "http://xbiblio.sourceforge.org"
48
+ spec.description = <<END_DESC
49
+ Citeproc-rb is a Ruby port of Citeproc, a process for converting citations
50
+ into a variety of formats using a macro language called Citation Style Language
51
+ (CSL). For more details on Citeproc and CSL, please check
52
+ http://xbiblio.sourceforge.net/.
53
+ END_DESC
54
+ end
55
+
56
+ Rake::GemPackageTask.new(spec) do |pkg|
57
+ pkg.need_zip = true
58
+ pkg.need_tar = true
59
+ end
60
+
61
+ desc "Show library's code statistics"
62
+ task :stats do
63
+ require 'code_statistics'
64
+ CodeStatistics.new( ["Citeproc-rb", "lib"],
65
+ ["Functionals", "examples"],
66
+ ["Units", "test"] ).to_s
67
+ end
68
+
69
+ desc "Add new files to Subversion"
70
+ task :add_to_svn do
71
+ sh %Q{svn status | ruby -nae 'system "svn add \#{$F[1]}" if $F[0] == "?"' }
72
+ end
73
+
data/TODO ADDED
@@ -0,0 +1,25 @@
1
+ TODO:
2
+
3
+ Parser:
4
+ - Validation
5
+
6
+ BaseFormatter:
7
+ - Some conditions
8
+ - Add more types - need to compare bibliontology classes with CSL types
9
+ - Mark-up option - a bit clumsy
10
+ - Sorting
11
+ - Options
12
+ - Tests and fixtures
13
+ - Document
14
+ - Dynamic InputFilter ?
15
+ - Spacing issues
16
+
17
+ InputFilter:
18
+ - Better name (Resolver, Mapper)?
19
+
20
+ OutputFilter:
21
+ - Support differential mark-up (at least: XHTML/XSL-FO)
22
+
23
+ Bibliontology
24
+ - Revise: ensure all CSL variables, types etc are supported
25
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -0,0 +1,89 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <terms xmlns="http://purl.org/net/xbiblio/csl">
3
+ <locale xml:lang="en">
4
+ <term name="in">in</term>
5
+ <term name="ibid">ibid</term>
6
+ <term name="accessed">accessed</term>
7
+ <term name="forthcoming">forthcoming</term>
8
+ <term name="references">References</term>
9
+ <term name="no date">nd</term>
10
+ <term name="and">and</term>
11
+ <term name="et-al">et al.</term>
12
+
13
+ <!-- LONG LOCATOR FORMS -->
14
+ <term name="page">
15
+ <single>page</single>
16
+ <multiple>pages</multiple>
17
+ </term>
18
+ <term name="paragraph">
19
+ <single>paragraph</single>
20
+ <multiple>paragraph</multiple>
21
+ </term>
22
+ <term name="volume">volume</term>
23
+ <term name="issue">number</term>
24
+
25
+ <!-- SHORT LOCATOR FORMS -->
26
+ <term name="page" form="short">
27
+ <single>p</single>
28
+ <multiple>pp</multiple>
29
+ </term>
30
+ <term name="paragraph" form="short">
31
+ <single>¶</single>
32
+ <multiple>¶¶</multiple>
33
+ </term>
34
+ <term name="volume" form="short">vol</term>
35
+ <term name="issue" form="short">no</term>
36
+
37
+ <!-- LONG ROLE FORMS -->
38
+ <term name="editor">
39
+ <single>editor</single>
40
+ <multiple>editors</multiple>
41
+ </term>
42
+ <term name="translator">
43
+ <single>translator</single>
44
+ <multiple>translators</multiple>
45
+ </term>
46
+
47
+ <!-- SHORT ROLE FORMS -->
48
+ <term name="editor" form="short">
49
+ <single>ed</single>
50
+ <multiple>eds</multiple>
51
+ </term>
52
+ <term name="translator" form="short">
53
+ <single>tran</single>
54
+ <multiple>trans</multiple>
55
+ </term>
56
+
57
+ <!-- VERB ROLE FORMS -->
58
+ <term name="editor" form="verb">edited by</term>
59
+ <term name="translator" form="verb">translated by</term>
60
+
61
+ <!-- LONG MONTH FORMS -->
62
+ <term name="month-01">January</term>
63
+ <term name="month-02">February</term>
64
+ <term name="month-03">March</term>
65
+ <term name="month-04">April</term>
66
+ <term name="month-05">May</term>
67
+ <term name="month-06">June</term>
68
+ <term name="month-07">July</term>
69
+ <term name="month-08">August</term>
70
+ <term name="month-09">September</term>
71
+ <term name="month-10">October</term>
72
+ <term name="month-11">November</term>
73
+ <term name="month-12">December</term>
74
+
75
+ <!-- SHORT MONTH FORMS -->
76
+ <term name="month-01" form="short">Jan</term>
77
+ <term name="month-02" form="short">Feb</term>
78
+ <term name="month-03" form="short">Mar</term>
79
+ <term name="month-04" form="short">Apr</term>
80
+ <term name="month-05" form="short">May</term>
81
+ <term name="month-06" form="short">Jun</term>
82
+ <term name="month-07" form="short">Jul</term>
83
+ <term name="month-08" form="short">Aug</term>
84
+ <term name="month-09" form="short">Sep</term>
85
+ <term name="month-10" form="short">Oct</term>
86
+ <term name="month-11" form="short">Nov</term>
87
+ <term name="month-12" form="short">Dec</term>
88
+ </locale>
89
+ </terms>
@@ -0,0 +1,96 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <terms xmlns="http://purl.org/net/xbiblio/csl">
3
+ <locale xml:lang="nl">
4
+ <info>
5
+ <translator>
6
+ <name>Johan Kool</name>
7
+ <email>johankool@users.sourceforge.net</email>
8
+ </translator>
9
+ <updated>2006-08-30T11:40:23+05:00</updated>
10
+ </info>
11
+ <term name="in">in</term>
12
+ <term name="ibid">ibid</term>
13
+ <term name="accessed">benaderd</term>
14
+ <term name="forthcoming">in voorbereiding</term>
15
+ <term name="references">Referenties</term>
16
+ <term name="and">en</term>
17
+ <term name="from">uit</term>
18
+ <term name="et-al">et al.</term>
19
+
20
+ <!-- LONG LOCATOR FORMS -->
21
+ <term name="page">
22
+ <single>pagina</single>
23
+ <multiple>pagina’s</multiple>
24
+ </term>
25
+ <term name="paragraph">
26
+ <single>paragraaf</single>
27
+ <multiple>paragrafen</multiple>
28
+ </term>
29
+ <term name="volume">volumen</term>
30
+ <term name="issue">deel</term>
31
+
32
+ <!-- SHORT LOCATOR FORMS -->
33
+ <term name="page" form="short">
34
+ <single>p.</single>
35
+ <multiple>p.</multiple>
36
+ </term>
37
+ <term name="paragraph" form="short">
38
+ <single>§</single>
39
+ <multiple>§</multiple>
40
+ </term>
41
+ <term name="volume" form="short">vol.</term>
42
+ <term name="issue" form="short">deel</term>
43
+
44
+ <!-- LONG ROLE FORMS -->
45
+ <term name="editor">
46
+ <single>redacteur</single>
47
+ <multiple>redacteuren</multiple>
48
+ </term>
49
+ <term name="translator">
50
+ <single>vertaler</single>
51
+ <multiple>vertalers</multiple>
52
+ </term>
53
+
54
+ <!-- SHORT ROLE FORMS -->
55
+ <term name="editor" form="short">
56
+ <single>red.</single>
57
+ <multiple>red.</multiple>
58
+ </term>
59
+ <term name="translator" form="short">
60
+ <single>vert.</single>
61
+ <multiple>vert.</multiple>
62
+ </term>
63
+
64
+ <!-- VERB ROLE FORMS -->
65
+ <term name="editor" form="verb">redactie door</term>
66
+ <term name="translator" form="verb">vertaald door</term>
67
+
68
+ <!-- LONG MONTH FORMS -->
69
+ <term name="month-01">januari</term>
70
+ <term name="month-02">februari</term>
71
+ <term name="month-03">maart</term>
72
+ <term name="month-04">april</term>
73
+ <term name="month-05">mei</term>
74
+ <term name="month-06">juni</term>
75
+ <term name="month-07">juli</term>
76
+ <term name="month-08">augustus</term>
77
+ <term name="month-09">september</term>
78
+ <term name="month-10">oktober</term>
79
+ <term name="month-11">november</term>
80
+ <term name="month-12">december</term>
81
+
82
+ <!-- SHORT MONTH FORMS -->
83
+ <term name="month-01" form="short">jan</term>
84
+ <term name="month-02" form="short">feb</term>
85
+ <term name="month-03" form="short">maa</term>
86
+ <term name="month-04" form="short">apr</term>
87
+ <term name="month-05" form="short">mei</term>
88
+ <term name="month-06" form="short">jun</term>
89
+ <term name="month-07" form="short">jul</term>
90
+ <term name="month-08" form="short">aug</term>
91
+ <term name="month-09" form="short">sep</term>
92
+ <term name="month-10" form="short">okt</term>
93
+ <term name="month-11" form="short">nov</term>
94
+ <term name="month-12" form="short">dec</term>
95
+ </locale>
96
+ </terms>
@@ -0,0 +1,184 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <style xmlns="http://purl.org/net/xbiblio/csl" class="in-text" xml:lang="en">
3
+ <info>
4
+ <title>American Medical Association</title>
5
+ <id>http://www.zotero.org/styles/ama</id>
6
+ <link href="http://www.zotero.org/styles/ama"/>
7
+ <author>
8
+ <name>Julian Onions</name>
9
+ <email>julian.onions@gmail.com</email>
10
+ </author>
11
+ <category term="numeric"/>
12
+ <category term="medicine"/>
13
+ <updated>2008-03-08T20:38:52+00:00</updated>
14
+ <summary>The American Medical Association style as used in JAMA.</summary>
15
+ <link href="http://www.samford.edu/schools/pharmacy/dic/amaquickref07.pdf" rel="documentation"/>
16
+ </info>
17
+ <macro name="editor">
18
+ <names variable="editor">
19
+ <name name-as-sort-order="all" sort-separator=" " initialize-with="" delimiter=", " delimiter-precedes-last="always"/>
20
+ <label form="short" prefix=", " text-case="lowercase" suffix="."/>
21
+ </names>
22
+ </macro>
23
+ <macro name="anon">
24
+ <text term="anonymous" form="short" text-case="capitalize-first"/>
25
+ </macro>
26
+ <macro name="author">
27
+ <group suffix=".">
28
+ <names variable="author">
29
+ <name name-as-sort-order="all" sort-separator=" " initialize-with=""
30
+ delimiter=", " delimiter-precedes-last="always"/>
31
+ <label form="short" prefix=" " suffix="" text-case="lowercase"/>
32
+ <substitute>
33
+ <names variable="editor"/>
34
+ <text macro="anon"/>
35
+ </substitute>
36
+ </names>
37
+ </group>
38
+ </macro>
39
+ <macro name="author-short">
40
+ <names variable="author">
41
+ <name form="short" and="symbol" delimiter=", " initialize-with="."/>
42
+ <substitute>
43
+ <names variable="editor"/>
44
+ <names variable="translator"/>
45
+ <text macro="anon"/>
46
+ </substitute>
47
+ </names>
48
+ </macro>
49
+ <macro name="access">
50
+ <group>
51
+ <text value="Available at:" suffix=" "/>
52
+ <text variable="URL"/>
53
+ <group prefix=" [" suffix="]">
54
+ <text term="accessed" text-case="capitalize-first" suffix=" "/>
55
+ <date variable="accessed">
56
+ <date-part name="month" suffix=" "/>
57
+ <date-part name="day" suffix=", "/>
58
+ <date-part name="year"/>
59
+ </date>
60
+ </group>
61
+ </group>
62
+ </macro>
63
+ <macro name="title">
64
+ <choose>
65
+ <if type="book">
66
+ <text variable="title" font-style="italic"/>
67
+ </if>
68
+ <else>
69
+ <text variable="title"/>
70
+ </else>
71
+ </choose>
72
+ </macro>
73
+ <macro name="publisher">
74
+ <group delimiter=": ">
75
+ <text variable="publisher-place"/>
76
+ <text variable="publisher"/>
77
+ </group>
78
+ </macro>
79
+ <macro name="year-date">
80
+ <group prefix=" ">
81
+ <choose>
82
+ <if variable="issued">
83
+ <date variable="issued">
84
+ <date-part name="year"/>
85
+ </date>
86
+ </if>
87
+ <else>
88
+ <text term="no date"/>
89
+ </else>
90
+ </choose>
91
+ </group>
92
+ </macro>
93
+ <macro name="edition">
94
+ <choose>
95
+ <if is-numeric="edition">
96
+ <group delimiter=" ">
97
+ <number variable="edition" form="ordinal"/>
98
+ <text term="edition" form="short" suffix="."/>
99
+ </group>
100
+ </if>
101
+ <else>
102
+ <text variable="edition" suffix="."/>
103
+ </else>
104
+ </choose>
105
+ </macro>
106
+ <citation>
107
+ <option name="collapse" value="citation-number"/>
108
+ <sort>
109
+ <key variable="citation-number"/>
110
+ </sort>
111
+ <layout delimiter="," vertical-align="sup">
112
+ <text variable="citation-number" />
113
+ <group prefix="(" suffix=")">
114
+ <label variable="locator" form="short"/>
115
+ <text variable="locator"/>
116
+ </group>
117
+ </layout>
118
+ </citation>
119
+ <bibliography>
120
+ <option name="hanging-indent" value="false"/>
121
+ <option name="et-al-min" value="6"/>
122
+ <option name="et-al-use-first" value="3"/>
123
+ <layout>
124
+ <text variable="citation-number" prefix="" suffix=". "/>
125
+ <text macro="author" suffix=""/>
126
+ <choose>
127
+ <if type="book">
128
+ <group suffix=".">
129
+ <text macro="title" prefix=" " suffix="."/>
130
+ <text macro="edition" prefix=" " />
131
+ <text macro="editor" prefix=" (" suffix=")"/>
132
+ </group>
133
+ <text prefix=" " suffix="" macro="publisher"/>
134
+ <group suffix="." prefix="; ">
135
+ <date variable="issued">
136
+ <date-part name="year"/>
137
+ </date>
138
+ <text variable="page" prefix=":"/>
139
+ </group>
140
+ </if>
141
+ <else-if type="chapter">
142
+ <text macro="title" prefix=" " suffix="."/>
143
+ <group class="container" prefix=" ">
144
+ <text term="in" text-case="capitalize-first" suffix=": "/>
145
+ <text macro="editor"/>
146
+ <text variable="container-title" font-style="italic" prefix=" " suffix="."/>
147
+ <text variable="volume" prefix="Vol " suffix="."/>
148
+ <text macro="edition" prefix=" "/>
149
+ <text variable="collection-title" prefix=" " suffix="."/>
150
+ <group suffix=".">
151
+ <text macro="publisher" prefix=" "/>
152
+ <group suffix="." prefix="; ">
153
+ <date variable="issued">
154
+ <date-part name="year"/>
155
+ </date>
156
+ <text variable="page" prefix=":"/>
157
+ </group>
158
+ </group>
159
+ </group>
160
+ </else-if>
161
+ <else>
162
+ <group suffix=".">
163
+ <text macro="title" prefix=" " />
164
+ <text macro="editor" prefix=" "/>
165
+ </group>
166
+ <group class="container" prefix=" " suffix=".">
167
+ <text variable="container-title" font-style="italic" form="short" suffix="."/>
168
+ <group delimiter=";" prefix=" ">
169
+ <date variable="issued">
170
+ <date-part name="year"/>
171
+ </date>
172
+ <group>
173
+ <text variable="volume" />
174
+ <text variable="issue" prefix="(" suffix=")"/>
175
+ </group>
176
+ </group>
177
+ <text variable="page" prefix=":"/>
178
+ </group>
179
+ </else>
180
+ </choose>
181
+ <text prefix=" " macro="access" suffix="."/>
182
+ </layout>
183
+ </bibliography>
184
+ </style>