Sha256: 2f27650beca72563baddd858096d2f2daf9b642937b6f56f277a93fa96279761
Contents?: true
Size: 1.53 KB
Versions: 2
Compression:
Stored size: 1.53 KB
Contents
require 'bibtex' require 'bibtex/filters' require 'latex/decode/base' require 'latex/decode/maths' require 'latex/decode/accents' require 'latex/decode/diacritics' require 'latex/decode/punctuation' require 'latex/decode/symbols' require 'latex/decode/greek' module AsciidoctorBibliography module Databases module BibTeX EXTENSIONS = %w[.bib .bibtex].freeze def self.load(filename) ::BibTeX.open(filename, filter: [LatexFilter]).to_citeproc end # This filter extends the original latex filter in bibtex-ruby to handle # unknown latex macros more gracefully. We could have used latex-decode # gem together with our custom replacement rules, but latex-decode eats up # all braces after it finishes all decoding. So we hack over the # LaTeX.decode function and insert our rules before `strip_braces`. class LatexFilter < ::BibTeX::Filter def apply(value) text = value.to_s LaTeX::Decode::Base.normalize(text) LaTeX::Decode::Maths.decode!(text) LaTeX::Decode::Accents.decode!(text) LaTeX::Decode::Diacritics.decode!(text) LaTeX::Decode::Punctuation.decode!(text) LaTeX::Decode::Symbols.decode!(text) LaTeX::Decode::Greek.decode!(text) text.gsub!(/\\url\{(.+?)\}/, ' \\1 ') text.gsub!(/\\\w+(?=\s+\w)/, '') text.gsub!(/\\\w+(?:\[.+?\])?\s*\{(.+?)\}/, '\\1') LaTeX::Decode::Base.strip_braces(text) LaTeX.normalize_C(text) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
asciidoctor-bibliography-0.2.1 | lib/asciidoctor-bibliography/databases/bibtex.rb |
asciidoctor-bibliography-0.2.0 | lib/asciidoctor-bibliography/databases/bibtex.rb |