Sha256: 8ea7656f1363b52d6b4122983d75a99f0b09fc65938ecc68e1a9571724dc7796
Contents?: true
Size: 1.49 KB
Versions: 2
Compression:
Stored size: 1.49 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 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.1 | lib/asciidoctor-bibliography/databases/bibtex.rb |
asciidoctor-bibliography-0.0.1.dev | lib/asciidoctor-bibliography/databases/bibtex.rb |