bib2sx is a command-line tool (written in Racket) for parsing
BibTeX files (by default) into S-Expressions.
It captures the (potentially recursive) structure of quoting in BibTeX, which is is important for capitalization.
It also supports outputing to JSON, XML and (back to canonicalized) BibTeX.
A blog post explaining bib2sx covers the tool in much more detail.
It will parse name fields (author, editor) into first, von, last
and jr with --parse-names.
You will need an installation of the Racket programming language.
To build bib2sx, run make.
To install to ~/bin/, run make install.
$ bib2sx [ --inline ] [ --flatten ] [ --parse-names ] [ --texenize ]
[ --in sx|bib ] [ --out sx|bib|json|xml ]
[ --json | --bib | --xml ]
[ <input-file> ]
where:
--inlinewill expand variables into definitions from @string--flattenwill convert values into properly-quoted BibTeX strings--parse-nameswill parse names according to BibTeX's rules--texenizewill tokenize values into lexemes meaningful to TeX--in <format>will set the input format:sxorbiballowed;bibis default--out <format>will set the output format;sx,bib,json, orxmlallowed;sxis default--jsonwill output JSON; same as--out json--bibwill output canonicalized BibTeX; same as--out bib--xmlwill output XML; same as--out xml
If you want to render the output in a format other than LaTeX (such as HTML), you will need to interpret the TeX.
To make this easier, the --texenize flag will parse a value into lexemes
meaningful to LaTeX.
For instance, \foo{bar} will become "\foo" '("b" "a" "r").
bib2sx: A bibtex parser and transformer
Copyright (©) 2015 Matthew Might
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.