asciidoctor-bibtex 0.5.0 → 0.8.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cad05b0990309ce242e6f8e83a5a5c0122f07f5a23130d77f740d8c635611162
4
- data.tar.gz: '01323158119adf765dfa92c09e0e4a4da63a3bf4ca2b7390a47d687c1b4b2855'
3
+ metadata.gz: 6d1f03803a062ef4e551b3b974200595dd61e1b79d5b1e55f476b4aa9191abdb
4
+ data.tar.gz: edcba2be0db713c30e82b155cb350e70fc3ffe64db6709d7ab3740251ccb8e37
5
5
  SHA512:
6
- metadata.gz: c52687565a3ac2de6a25cf020eabcf3a13732b693ec34bcc0d60c17cd2e526c53e528a08fe7a809a89604f88a027a362e526d769537e363b7de841ed7018178b
7
- data.tar.gz: bdd90bb7544d361890da697587c0d2be118a03f7b894e579fd80bdea3d85eefa124f58e605dfcfdf895bde8ef7acc6cfaad4b41838ac9e5d13c005c540794cde
6
+ metadata.gz: 7ddbc0f7c25bc17f2bf25eb6e4711bbab5583a1e1ea472e911cacd04798a345c5bb6cf5a44bcf8504db65b4bb1efbf4a883c9f552d1fa40a9a94ea283c999c65
7
+ data.tar.gz: df997b1243e28c0f42e13083df3a6f57b7afadca8895d08268d4ede6ceba48ad34e1cd70b9948b247cda6e400aa61aa25c8b88d90f04a7b5d5937a6a0328de5e
@@ -0,0 +1,151 @@
1
+ = asciidoctor-bibtex: bibtex integration for AsciiDoc
2
+ // Settings:
3
+ :idprefix:
4
+ :idseparator: -
5
+ ifndef::env-github[:icons: font]
6
+ ifdef::env-github,env-browser[]
7
+ :toc: macro
8
+ :toclevels: 1
9
+ endif::[]
10
+ ifdef::env-github[]
11
+ :!toc-title:
12
+ :status:
13
+ endif::[]
14
+ // URLs:
15
+ :url-asciidoctor: http://asciidoctor.org
16
+ :url-asciidoctor-mathematical: https://github.com/asciidoctor/asciidoctor-mathematical
17
+ :url-asciidoctor-pdf: https://github.com/asciidoctor/asciidoctor-pdf
18
+ :url-asciidoctor-latex: https://github.com/asciidoctor/asciidoctor-latex
19
+ :url-asciidoc-bib: https://github.com/petercrlane/asciidoc-bib
20
+ :url-gem: https://rubygems.org/gems/asciidoctor-bibtex
21
+
22
+ ifdef::status[]
23
+ image:https://img.shields.io/travis/asciidoctor/asciidoctor-bibtex/master.svg[Build Status (Travis CI),link=https://travis-ci.org/asciidoctor/asciidoctor-bibtex]
24
+ image:https://img.shields.io/gem/v/asciidoctor-bibtex.svg[Latest Release, link=https://rubygems.org/gems/asciidoctor-bibtex]
25
+ endif::[]
26
+
27
+ asciidoctor-bibtex adds bibtex integration to AsciiDoc documents by introducing three new macros: `cite:[KEY]`, `bibitem:[KEY]` and `bibliography::[]`. Citations are parsed and replaced with formatted inline texts, and reference lists are automatically generated and inserted into where `bibliography::[]` is placed. `bibitem:[KEY]` will insert a rendered bibliography item directly into the text.
28
+
29
+ asciidoctor-bibtex is designed to be used as an extension to {url-asciidoctor}[Asciidoctor]. Thus this extension can be used together with other asciidoctor extensions such as {url-asciidoctor-mathematical}[asciidoctor-mathematical] and {url-asciidoctor-pdf}[asciidoctor-pdf] to enrich your AsciiDoc experience.
30
+
31
+ NOTE: asciidoctor-bibtex no longer supports AsciiDoc-to-AsciiDoc conversion.
32
+
33
+ == History
34
+
35
+ asciidoctor-bibtex starts as a fork of {url-asciidoc-bib}[asciidoc-bib] and goes along a different path.
36
+ The major reason for the fork at the time was the differences in citation and bibliography macros.
37
+ asciidoc-bib failed to follow the grammar of macros in AsciiDoc and thus caused problems with existing documents and extensions.
38
+ Thus, a fork was needed.
39
+ Another reason was the inability to pass configuration via AsciiDoc attributes.
40
+
41
+ While {url-asciidoc-bib}[asciidoc-bib] focuses on replacing citations in the original documents and produces new AsciiDoc documents, asciidoctor-bibtex focuses on compatibility with Asciidoctor and other Asciidoctor extensions at the very beginning.
42
+ As time passes, asciidoctor-bibtex diverges significantly from its ancesstor.
43
+ For example, asciidoctor-bibtex now supports generating real bibtex citations and bibliography, so it can be used together with {url-asciidoctor-latex}[asciidoctor-latex] for native bibtex support.
44
+
45
+ == Install
46
+
47
+ $ gem install asciidoctor-bibtex
48
+
49
+ asciidoctor-bibtex depends on https://github.com/inukshuk/bibtex-ruby[bibtex-ruby], https://github.com/inukshuk/citeproc-ruby[citeproc-ruby], and https://github.com/inukshuk/csl-styles[csl-styles].
50
+ Ensure the `ruby-dev` and `libxslt1-dev` packages are installed on your machine so the dependencies will compile properly.
51
+
52
+ {url-asciidoctor}[Asciidoctor] must also be installed for 'asciidoctor-bibtex' to work.
53
+ Asciidoctor version 2.0.0 or higher is required.
54
+
55
+ == Usage
56
+
57
+ First, you need to have a valid bibtex file.
58
+ You specify the location to this file using the `bibtex-file` document attribute.
59
+
60
+ === Macros
61
+
62
+ Syntax for inserting a citation is the following inline macro:
63
+
64
+ cite|citenp:[ref(pages), ...]
65
+
66
+ where '(pages)' is optional.
67
+
68
+ Examples of "chicago-author-date" style:
69
+
70
+ * `cite:[Lane12]` becomes "(Lane 2012)"
71
+ * `citenp:[Lane12]` becomes "Lane (2012)"
72
+ * `cite:[Lane12(59)]` becomes "(Lane 2012, 59)"
73
+
74
+ For *apa* (Harvard-like) style:
75
+
76
+ * `cite:[Lane12]` becomes "(Lane, 2012)"
77
+ * `citenp:[Lane12]` becomes "Lane (2012)"
78
+ * `cite:[Lane12(59)]` becomes "(Lane, 2012, p.59)"
79
+
80
+ For *ieee*, a numeric style:
81
+
82
+ `cite:[Lane12,Lane11]` becomes "[1, 2]"
83
+
84
+ To add a list of formatted references, place `bibliography::[]` on a line by itself.
85
+
86
+ One can use `bibitem:[Lane12]` to insert a rendered bibliography item inline, maybe to generate a cv. For example:
87
+
88
+ [source, asciidoc]
89
+ ----
90
+ = My CV
91
+
92
+ == Publications
93
+
94
+ === 2019
95
+
96
+ - bibitem:[Me2019a]
97
+ - bibitem:[Me2019b]
98
+ - bibitem:[Me2019c]
99
+ ----
100
+
101
+ === Configuration
102
+
103
+ Configuration is applied in the form of AsciiDoc document attributes, which must be defined in the document header.
104
+
105
+ |===
106
+ | Attribute Name | Description | Valid Values | Default Value
107
+
108
+ | bibtex-file
109
+ | Bibtex database file
110
+ | any string, or empty
111
+ | Automatic searching
112
+
113
+ | bibtex-style
114
+ | Reference formatting style
115
+ | any style supported by csl-styles
116
+ | ieee
117
+
118
+ | bibtex-order
119
+ | Order of citations
120
+ | `appearance` or `alphabetical`
121
+ | `appearance`
122
+
123
+ | bibtex-format
124
+ | Formatting of citations and bibliography
125
+ | `asciidoc`, `bibtex` or `biblatex`
126
+ | `asciidoc`
127
+
128
+ | bibtex-throw
129
+ | Throw an error on unknown references
130
+ | `true` or `false`
131
+ | `false`
132
+
133
+ | bibtex-citation-template
134
+ | Custom citation template for numeric style
135
+ | Any string matching `/(.+?)\$id(.+)/`
136
+ | `[$id]`
137
+ |===
138
+
139
+ === Commandline
140
+
141
+ Use asciidoctor-bibtex as an extension with the CLI:
142
+
143
+ $ asciidoctor -r asciidoctor-bibtex sample.adoc
144
+
145
+ == License
146
+
147
+ The files within this project may be distributed under the terms of the http://owl.apotheon.org[Open Works License].
148
+
149
+ == Links
150
+
151
+ See {url-asciidoc-bib} for the original asciidoc-bib source.
@@ -0,0 +1,53 @@
1
+ #
2
+ # BibitemMacro.rb
3
+ #
4
+ # Copyright (c) Zhang Yang, 2020.
5
+ #
6
+ # Released under Open Works License, 0.9.2
7
+ #
8
+
9
+ module AsciidoctorBibtex
10
+ # BibitemMacro
11
+ #
12
+ # Class to hold information about a bibitem macro. A bibtem macro has
13
+ # only text and key
14
+ #
15
+ # This class also provides a class method to extract macros from a line of
16
+ # text.
17
+ #
18
+ class BibitemMacro
19
+ #
20
+ # Grammar for the bibitem macro: bibitem:[key]
21
+ #
22
+
23
+ # matches a bibitem key
24
+ BIBITEM_KEY = /[^\s\]]+/.freeze
25
+ # matches the full macro
26
+ BIBITEM_MACRO = /bibitem:\[(#{BIBITEM_KEY})\]/.freeze
27
+
28
+ # Given a line, return a list of BibitemMacro instances
29
+ def self.extract_macros(line)
30
+ result = []
31
+ full = BIBITEM_MACRO.match line
32
+ while full
33
+ text = full[0]
34
+ key = full[1]
35
+ result << BibitemMacro.new(text, key)
36
+ # look for next citation on line
37
+ full = BIBITEM_MACRO.match full.post_match
38
+ end
39
+ result
40
+ end
41
+
42
+ attr_reader :text, :key
43
+
44
+ # Create a BibitemMacro object
45
+ #
46
+ # text: the full macro text matched by BIBITEM_MACRO
47
+ # key: bibitem key
48
+ def initialize(text, key)
49
+ @text = text
50
+ @key = key
51
+ end
52
+ end
53
+ end
@@ -54,7 +54,7 @@ module AsciidoctorBibtex
54
54
 
55
55
  # Given a line, return a list of CitationData instances
56
56
  # containing information on each set of citation information
57
- def self.extract_citations(line)
57
+ def self.extract_macros(line)
58
58
  result = []
59
59
  full = CITATION_MACRO.match line
60
60
  while full
@@ -7,8 +7,8 @@ require 'asciidoctor/extensions'
7
7
  require 'asciidoctor/reader'
8
8
  require 'asciidoctor/parser'
9
9
 
10
- require_relative 'PathUtils'
11
- require_relative 'Processor'
10
+ require_relative 'path_utils'
11
+ require_relative 'processor'
12
12
 
13
13
  module AsciidoctorBibtex
14
14
  module Asciidoctor
@@ -67,10 +67,14 @@ module AsciidoctorBibtex
67
67
  bibtex_order = ((document.attr 'bibtex-order') || 'appearance').to_sym
68
68
  bibtex_format = ((document.attr 'bibtex-format') || 'asciidoc').to_sym
69
69
  bibtex_throw = ((document.attr 'bibtex-throw') || 'false').to_s.downcase
70
+ bibtex_citation_template = ((document.attr 'bibtex-citation-template') || '[$id]').to_s
70
71
 
71
72
  # Fild bibtex file automatically if not supplied.
72
73
  if bibtex_file.empty?
73
- bibtex_file = AsciidoctorBibtex::PathUtils.fild_bibfile '.'
74
+ bibtex_file = AsciidoctorBibtex::PathUtils.find_bibfile document.base_dir
75
+ end
76
+ if bibtex_file.empty?
77
+ bibtex_file = AsciidoctorBibtex::PathUtils.find_bibfile '.'
74
78
  end
75
79
  if bibtex_file.empty?
76
80
  bibtex_file = AsciidoctorBibtex::PathUtils.find_bibfile "#{ENV['HOME']}/Documents"
@@ -84,23 +88,32 @@ module AsciidoctorBibtex
84
88
  prose_blocks = document.find_by do |b|
85
89
  (b.content_model == :simple) ||
86
90
  (b.context == :list_item) ||
87
- (b.context == :table_cell)
91
+ (b.context == :table_cell) ||
92
+ (b.title?)
88
93
  end
89
94
  return nil if prose_blocks.nil?
90
95
 
91
96
  processor = Processor.new bibtex_file, true, bibtex_style, bibtex_locale,
92
97
  bibtex_order == :appearance, bibtex_format,
93
- bibtex_throw == 'true'
98
+ bibtex_throw == 'true', custom_citation_template: bibtex_citation_template
94
99
 
95
100
  # First pass: extract all citations.
96
101
  prose_blocks.each do |block|
97
102
  if block.context == :list_item || block.context == :table_cell
98
- line = block.text
99
- processor.process_citation_macros line
100
- else
103
+ # NOTE: we access the instance variable @text for raw text.
104
+ # Otherwise the footnotes in the text will be pre-processed and
105
+ # ghost footnotes will be inserted (as of asciidoctor 2.0.10).
106
+ line = block.instance_variable_get(:@text)
107
+ unless line.nil? || line.empty?
108
+ processor.process_citation_macros line
109
+ end
110
+ elsif block.content_model == :simple
101
111
  block.lines.each do |line|
102
112
  processor.process_citation_macros line
103
113
  end
114
+ else
115
+ line = block.instance_variable_get(:@title)
116
+ processor.process_citation_macros line
104
117
  end
105
118
  end
106
119
  # Make processor finalize macro processing as required.
@@ -109,14 +122,25 @@ module AsciidoctorBibtex
109
122
  # Second pass: replace citations with citation texts.
110
123
  prose_blocks.each do |block|
111
124
  if block.context == :list_item || block.context == :table_cell
112
- line = block.text
113
- line = processor.replace_citation_macros(line)
114
- block.text = line
115
- else
125
+ # NOTE: we access the instance variable @text for raw text.
126
+ line = block.instance_variable_get(:@text)
127
+ unless line.nil? or line.empty?
128
+ line = processor.replace_citation_macros(line)
129
+ line = processor.replace_bibitem_macros(line)
130
+ block.text = line
131
+ end
132
+ elsif block.content_model == :simple
116
133
  block.lines.each_with_index do |line, index|
117
134
  line = processor.replace_citation_macros(line)
135
+ line = processor.replace_bibitem_macros(line)
118
136
  block.lines[index] = line
119
137
  end
138
+ else
139
+ # NOTE: we access the instance variable @text for raw text.
140
+ line = block.instance_variable_get(:@title)
141
+ line = processor.replace_citation_macros(line)
142
+ line = processor.replace_bibitem_macros(line)
143
+ block.title = line
120
144
  end
121
145
  end
122
146
 
@@ -16,10 +16,11 @@ require 'latex/decode/symbols'
16
16
  require 'latex/decode/greek'
17
17
  require 'set'
18
18
 
19
- require_relative 'CitationMacro'
20
- require_relative 'CitationUtils'
21
- require_relative 'StringUtils'
22
- require_relative 'StyleUtils'
19
+ require_relative 'citation_macro'
20
+ require_relative 'citation_utils'
21
+ require_relative 'bibitem_macro'
22
+ require_relative 'string_utils'
23
+ require_relative 'style_utils'
23
24
 
24
25
  module AsciidoctorBibtex
25
26
  # This filter extends the original latex filter in bibtex-ruby to handle
@@ -49,7 +50,7 @@ module AsciidoctorBibtex
49
50
  class Processor
50
51
  def initialize(bibfile, links = false, style = 'ieee', locale = 'en-US',
51
52
  numeric_in_appearance_order = false, output = :asciidoc,
52
- throw_on_unknown = false)
53
+ throw_on_unknown = false, custom_citation_template: '[$id]')
53
54
  raise "File '#{bibfile}' is not found" unless FileTest.file? bibfile
54
55
 
55
56
  bibtex = BibTeX.open bibfile, filter: [LatexFilter]
@@ -62,6 +63,13 @@ module AsciidoctorBibtex
62
63
  @filenames = Set.new
63
64
  @output = output
64
65
  @throw_on_unknown = throw_on_unknown
66
+ @bibtex_ob = '['
67
+ @bibtex_cb = ']'
68
+ match = custom_citation_template.match(/^(.+?)\$id(.+)$/)
69
+ unless match.nil?
70
+ @bibtex_ob = match[1]
71
+ @bibtex_cb = match[2]
72
+ end
65
73
 
66
74
  if (output != :latex) && (output != :bibtex) && (output != :biblatex)
67
75
  @citeproc = CiteProc::Processor.new style: @style, format: :html, locale: @locale
@@ -75,7 +83,7 @@ module AsciidoctorBibtex
75
83
  # processor will build a list of all citation keys in the same order as they
76
84
  # appear in the original document.
77
85
  def process_citation_macros(line)
78
- CitationMacro.extract_citations(line).each do |citation|
86
+ CitationMacro.extract_macros(line).each do |citation|
79
87
  @citations += citation.items.collect(&:key)
80
88
  end
81
89
  end
@@ -97,7 +105,10 @@ module AsciidoctorBibtex
97
105
  # Remove { } from grouped names for sorting.
98
106
  author = bibitem.author
99
107
  author = bibitem.editor if author.nil?
100
- CitationUtils.author_chicago(author).collect { |s| s.upcase.gsub('{', '').gsub('}', '') } + [bibitem.year]
108
+ year = bibitem.year
109
+ sortable = CitationUtils.author_chicago(author).map { |s| s.upcase.delete '{}' }
110
+ sortable << year if year
111
+ sortable
101
112
  end
102
113
  end
103
114
  nil
@@ -107,19 +118,29 @@ module AsciidoctorBibtex
107
118
  #
108
119
  # Return new text with all macros replaced.
109
120
  def replace_citation_macros(line)
110
- CitationMacro.extract_citations(line).each do |citation|
121
+ CitationMacro.extract_macros(line).each do |citation|
111
122
  line = line.gsub(citation.text, build_citation_text(citation))
112
123
  end
113
124
  line
114
125
  end
115
126
 
127
+ # Replace bibitem macros with rendered bibitem.
128
+ #
129
+ # Return new text with all macros replaced.
130
+ def replace_bibitem_macros(line)
131
+ BibitemMacro.extract_macros(line).each do |item|
132
+ line = line.gsub(item.text, build_bibitem_text(item.key))
133
+ end
134
+ line
135
+ end
136
+
116
137
  # Build the bibliography list just as bibtex.
117
138
  #
118
139
  # Return an array of texts representing an asciidoc list.
119
140
  def build_bibliography_list
120
141
  result = []
121
- @citations.each do |ref|
122
- result << build_bibliography_item(ref)
142
+ @citations.each_with_index do |ref, index|
143
+ result << build_bibliography_item(ref, index)
123
144
  result << ''
124
145
  end
125
146
  result
@@ -129,17 +150,42 @@ module AsciidoctorBibtex
129
150
  # Internal functions
130
151
  #
131
152
 
153
+ # Build the asciidoc text for a single bibliography item
154
+ def build_bibitem_text(key)
155
+ begin
156
+ if @biblio[key].nil?
157
+ puts "Unknown reference: #{key}"
158
+ cptext = key
159
+ else
160
+ cptext = @citeproc.render :bibliography, id: key
161
+ cptext = cptext.first
162
+ end
163
+ rescue Exception => e
164
+ puts "Failed to render #{key}: #{e}"
165
+ cptext = key
166
+ end
167
+ StringUtils.html_to_asciidoc(cptext)
168
+ end
169
+
132
170
  # Build bibliography text for a given reference
133
- def build_bibliography_item(key)
171
+ def build_bibliography_item(key, index = 0)
172
+ index += 1
134
173
  result = ''
135
- result << '. ' if StyleUtils.is_numeric? @style
136
174
 
137
175
  begin
138
- cptext = @citeproc.render :bibliography, id: key
176
+ cptext = if @biblio[key].nil?
177
+ nil
178
+ else
179
+ @citeproc.render :bibliography, id: key
180
+ end
139
181
  rescue Exception => e
140
182
  puts "Failed to render #{key}: #{e}"
141
183
  end
184
+
142
185
  result << "[[#{key}]]" if @links
186
+ if StyleUtils.is_numeric? @style
187
+ result << "#{@bibtex_ob}#{index}#{@bibtex_cb} "
188
+ end
143
189
  if cptext.nil?
144
190
  return result + key
145
191
  else
@@ -174,8 +220,8 @@ module AsciidoctorBibtex
174
220
  else
175
221
  result = ''
176
222
  if StyleUtils.is_numeric? @style
177
- ob = '+[+'
178
- cb = '+]+'
223
+ ob = "+#{@bibtex_ob}+"
224
+ cb = "+#{@bibtex_cb}+"
179
225
  separator = ','
180
226
  elsif macro.type == 'cite'
181
227
  ob = '('
@@ -197,14 +243,14 @@ module AsciidoctorBibtex
197
243
  # if found, insert reference information
198
244
  if @biblio[cite.key].nil?
199
245
  if @throw_on_unknown
200
- raise "Unknown reference: #{cite.ref}"
246
+ raise "Unknown reference: #{cite.key}"
201
247
  else
202
- puts "Unknown reference: #{cite.ref}"
203
- cite_text = cite.ref.to_s
248
+ puts "Unknown reference: #{cite.key}"
249
+ cite_text = cite.key.to_s
204
250
  end
205
251
  else
206
252
  cite_text = citation_text(macro, cite)
207
- end
253
+ end
208
254
 
209
255
  result << StringUtils.html_to_asciidoc(cite_text)
210
256
  result << '>>' if @links
@@ -226,13 +272,13 @@ module AsciidoctorBibtex
226
272
  result << ' '
227
273
  # use p.x for single numerical page and pp.x for all others. This will
228
274
  # produce pp. 1 seq for complex locators, which is the correct behavior.
229
- if @style.include? 'chicago'
230
- result << cite.locator
231
- elsif /^\d+$/ =~ cite.locator
232
- result << "p.&#160;#{cite.locator}"
233
- else
234
- result << "pp.&#160;#{cite.locator}"
235
- end
275
+ result << if @style.include? 'chicago'
276
+ cite.locator
277
+ elsif /^\d+$/ =~ cite.locator
278
+ "p.&#160;#{cite.locator}"
279
+ else
280
+ "pp.&#160;#{cite.locator}"
281
+ end
236
282
  end
237
283
 
238
284
  result
@@ -263,7 +309,7 @@ module AsciidoctorBibtex
263
309
  cite_text = @citeproc.render :citation, id: cite.key
264
310
  cite_text = cite_text.gsub('(', '')
265
311
  cite_text = cite_text.gsub(')', '')
266
- cite_text = cite_text + format_locator(cite)
312
+ cite_text += format_locator(cite)
267
313
  year = @biblio[cite.key].year
268
314
  if !year.nil? && macro.type == 'citenp'
269
315
  segs = cite_text.partition(year.to_s)
@@ -1,3 +1,3 @@
1
1
  module AsciidoctorBibtex
2
- VERSION = '0.5.0'
2
+ VERSION = '0.8.0'
3
3
  end
metadata CHANGED
@@ -1,49 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: asciidoctor-bibtex
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Zhang YANG
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-11 00:00:00.000000000 Z
11
+ date: 2020-07-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: asciidoctor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: 2.0.0
20
- - - "<"
17
+ - - "~>"
21
18
  - !ruby/object:Gem::Version
22
- version: 3.0.0
19
+ version: '2.0'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - ">="
28
- - !ruby/object:Gem::Version
29
- version: 2.0.0
30
- - - "<"
24
+ - - "~>"
31
25
  - !ruby/object:Gem::Version
32
- version: 3.0.0
26
+ version: '2.0'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: bibtex-ruby
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
- version: '4'
33
+ version: '5.1'
40
34
  type: :runtime
41
35
  prerelease: false
42
36
  version_requirements: !ruby/object:Gem::Requirement
43
37
  requirements:
44
38
  - - "~>"
45
39
  - !ruby/object:Gem::Version
46
- version: '4'
40
+ version: '5.1'
47
41
  - !ruby/object:Gem::Dependency
48
42
  name: citeproc-ruby
49
43
  requirement: !ruby/object:Gem::Requirement
@@ -92,63 +86,50 @@ dependencies:
92
86
  requirements:
93
87
  - - "~>"
94
88
  - !ruby/object:Gem::Version
95
- version: '5'
96
- type: :development
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '5'
103
- - !ruby/object:Gem::Dependency
104
- name: bundler
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '2'
89
+ version: 5.11.0
110
90
  type: :development
111
91
  prerelease: false
112
92
  version_requirements: !ruby/object:Gem::Requirement
113
93
  requirements:
114
94
  - - "~>"
115
95
  - !ruby/object:Gem::Version
116
- version: '2'
96
+ version: 5.11.0
117
97
  - !ruby/object:Gem::Dependency
118
98
  name: rake
119
99
  requirement: !ruby/object:Gem::Requirement
120
100
  requirements:
121
101
  - - "~>"
122
102
  - !ruby/object:Gem::Version
123
- version: '12'
103
+ version: 12.3.0
124
104
  type: :development
125
105
  prerelease: false
126
106
  version_requirements: !ruby/object:Gem::Requirement
127
107
  requirements:
128
108
  - - "~>"
129
109
  - !ruby/object:Gem::Version
130
- version: '12'
131
- description: |
132
- asciidoctor-bibtex adds bibtex support for asciidoc documents by introducing
133
- two new macros: `cite:[KEY]` and `bibliography::[]`. Citations are parsed and
134
- replaced with formatted inline texts, and reference lists are automatically
135
- generated and inserted into where `bibliography::[]` is placed. The
136
- references are formatted using styles provided by CSL.
137
- email: zyangmath@gmail.com
110
+ version: 12.3.0
111
+ description: 'asciidoctor-bibtex is an Asciidocotor extension that adds bibtex support
112
+ for AsciiDoc documents. It does so by introducing two new macros: `cite:[KEY]` and
113
+ `bibliography::[]`. Citations are parsed and replaced with formatted inline text,
114
+ and reference lists are automatically generated and inserted where the `bibliography::[]`
115
+ macro is placed. The references are formatted using styles provided by CSL.'
116
+ email:
117
+ - zyangmath@gmail.com
138
118
  executables: []
139
119
  extensions: []
140
120
  extra_rdoc_files: []
141
121
  files:
142
122
  - LICENSE.txt
143
- - README.md
123
+ - README.adoc
144
124
  - lib/asciidoctor-bibtex.rb
145
- - lib/asciidoctor-bibtex/CitationMacro.rb
146
- - lib/asciidoctor-bibtex/CitationUtils.rb
147
- - lib/asciidoctor-bibtex/PathUtils.rb
148
- - lib/asciidoctor-bibtex/Processor.rb
149
- - lib/asciidoctor-bibtex/StringUtils.rb
150
- - lib/asciidoctor-bibtex/StyleUtils.rb
125
+ - lib/asciidoctor-bibtex/bibitem_macro.rb
126
+ - lib/asciidoctor-bibtex/citation_macro.rb
127
+ - lib/asciidoctor-bibtex/citation_utils.rb
151
128
  - lib/asciidoctor-bibtex/extensions.rb
129
+ - lib/asciidoctor-bibtex/path_utils.rb
130
+ - lib/asciidoctor-bibtex/processor.rb
131
+ - lib/asciidoctor-bibtex/string_utils.rb
132
+ - lib/asciidoctor-bibtex/style_utils.rb
152
133
  - lib/asciidoctor-bibtex/version.rb
153
134
  homepage: https://github.com/asciidoctor/asciidoctor-bibtex
154
135
  licenses:
@@ -160,17 +141,17 @@ require_paths:
160
141
  - lib
161
142
  required_ruby_version: !ruby/object:Gem::Requirement
162
143
  requirements:
163
- - - "~>"
144
+ - - ">="
164
145
  - !ruby/object:Gem::Version
165
- version: '2.0'
146
+ version: 2.4.0
166
147
  required_rubygems_version: !ruby/object:Gem::Requirement
167
148
  requirements:
168
149
  - - ">="
169
150
  - !ruby/object:Gem::Version
170
151
  version: '0'
171
152
  requirements: []
172
- rubygems_version: 3.0.3
153
+ rubygems_version: 3.1.2
173
154
  signing_key:
174
155
  specification_version: 4
175
- summary: Adding bibtex functionality to asciidoc
156
+ summary: An Asciidoctor extension that adds bibtex integration to AsciiDoc
176
157
  test_files: []
data/README.md DELETED
@@ -1,104 +0,0 @@
1
- # asciidoctor-bibtex: add bibtex functionality to asciidoc
2
-
3
- asciidoctor-bibtex adds bibtex support for asciidoc documents by introducing
4
- two new macros: `cite:[KEY]` and `bibliography::[]`. Citations are parsed and
5
- replaced with formatted inline texts, and reference lists are automatically
6
- generated and inserted into where `bibliography::[]` is placed.
7
-
8
- asciidoctor-bibtex is designed to be used as an extension to
9
- [asciidoctor](http://asciidoctor.org). Thus this extension can be used
10
- together with other asciidoctor extensions such as
11
- [asciidoctor-mathematical][] and [asciidoctor-pdf][] to enrich your
12
- asciidoc experience. Note that asciidoctor-bibtex no longer support asciidoc-to-asciidoc conversion.
13
-
14
- [asciidoctor-mathematical]: https://github.com/asciidoctor/asciidoctor-mathematical
15
- [asciidoctor-pdf]: https://github.com/asciidoctor/asciidoctor-pdf
16
-
17
- ## History
18
-
19
- asciidoctor-bibtex starts as a fork of [asciidoc-bib][] and goes along a
20
- different way. The major reason for the fork at the time was the differences in
21
- citation and bibliography macros. asciidoc-bib failed to follow the grammar of
22
- macros in asciidoc, thus to avoid breaking existing documents, a fork is
23
- inevitable. Other reasons include the inability to use asciidoctor arguments
24
- in asciidoc-bib.
25
-
26
- While [asciidoc-bib][] focuses on replacing citations in the original
27
- documents and produces new asciidoc documents, asciidoctor-bibtex focuses on
28
- compatibility with asciidoctor and other asciidoctor extensions at the very
29
- beginning. As time passes, asciidoctor-bibtex diverges significantly from its
30
- ancesstor. For example, asciidoctor-bibtex now supports generating real bibtex
31
- citations and bibliography, so it can be used together with
32
- [asciidoctor-latex][] for native bibtex support.
33
-
34
- [asciidoc-bib]: https://github.com/petercrlane/asciidoc-bib
35
- [asciidoctor-latex]: https://github.com/asciidoctor/asciidoctor-latex
36
-
37
- ## Install
38
-
39
- gem install asciidoctor-bibtex
40
-
41
- asciidoctor-bibtex depends on
42
- [bibtex-ruby](http://github.com/inukshuk/bibtex-ruby),
43
- [citeproc-ruby](http://github.com/inukshuk/citeproc-ruby) and
44
- [csl-styles](http://github.com/inukshuk/csl-styles). (Ensure 'ruby-dev' and
45
- 'libxslt1-dev' are installed, so the dependencies will compile.)
46
-
47
- [asciidoctor](https://github.com/asciidoctor/asciidoctor) must also be
48
- installed for 'asciidoctor-bibtex' to work. asciidoctor version 1.5.2 or
49
- higher is required.
50
-
51
- ## Usage
52
-
53
- ### Macros
54
-
55
- Syntax for inserting a citation is the following inline macro:
56
-
57
- cite|citenp:[ref(pages), ...]
58
-
59
- where '(pages)' is optional.
60
-
61
- Examples of "chicago-author-date" style:
62
-
63
- - `cite:[Lane12]` becomes "(Lane 2012)"
64
- - `citenp:[Lane12]` becomes "Lane (2012)"
65
- - `cite:[Lane12(59)]` becomes "(Lane 2012, 59)"
66
-
67
- For *apa* (Harvard-like) style:
68
-
69
- - `cite:[Lane12]` becomes "(Lane, 2012)"
70
- - `citenp:[Lane12]` becomes "Lane (2012)"
71
- - `cite:[Lane12(59)]` becomes "(Lane, 2012, p.59)"
72
-
73
- For *ieee*, a numeric style:
74
-
75
- `cite:[Lane12,Lane11]` becomes "[1, 2]"
76
-
77
- To add a list of formatted references, place `bibliography::[]` on a line by itself.
78
-
79
- ### Document Attributes
80
-
81
- | Attribute Name | Description | Valid Values | Default Value |
82
- | -------------- | --------------- | ---------- | -------------- |
83
- | bibtex-file | Bibtex database file | any string, or empty | Automatic searching |
84
- | bibtex-style | Reference formatting style | any style supported by csl-styles | ieee |
85
- | bibtex-order | Order of citations | `appearance` or `alphabetical` | `appearance` |
86
- | bibtex-format | Formatting of citations and bibliography | `asciidoc`, `bibtex` or `biblatex` | `asciidoc` |
87
- | bibtex-throw | Throw an error on unknown references | `true` or `false` | `false` |
88
-
89
- ### Commandline
90
-
91
- Use asciidoctor-bibtex as an extension:
92
-
93
- ```bash
94
- asciidoctor -r asciidoctor-bibtex sample.adoc
95
- ```
96
-
97
- ## License
98
-
99
- The files within this project may be distributed under the terms of
100
- the Open Works License: http://owl.apotheon.org
101
-
102
- ## Links
103
-
104
- See https://github.com/petercrlane/asciidoc-bib for the original asciidoc-bib.