The bibtex2web package creates webpages from BibTeX bibliography files. It can be downloaded from http://pag.csail.mit.edu/~mernst/software/#bibtex2web.
Contents:
It is convenient to produce webpages from BibTeX files, because you only need to keep one set of (BibTeX) sources up to date, thus avoiding skew between your webpages and bibliographies.
Given a collection of BibTeX files, bibtex2web creates
Each of these webpages is built from a template that you can customize to your liking; see below.
Here are two examples of sets of webpages that were created by bibtex2web:
The bibtex2web package consists of three programs:
For examples of how to call these programs, see file examples/README in this distribution.
To install bibtex2web, unpack the distribution, and then set your BPHOME environment variable to point to its lib/ directory. For example, in csh, add something like
setenv BPHOME ${HOME}/bibtex2web/lib
to your .cshrc file. You may need to log out and log back in for this to take effect.
Then, you can run the programs in bin/. (You may add that directory to your path if you wish, but it is not required.)
Files examples/README and examples/Makefile in this distribution for examples of how to run bibtex2web and examples of the various command-line arguments that bibtex2web's program accept. The easiest way to use bibtex2web is to follow the instructions in examples/README and modify examples/Makefile to fit your goals. More details will be added to this manual later.
bibtex2web works with ordinary BibTeX files, but it can take advantage of several additional BibTeX fields:
supersededby = "ConfVer An extended version",to ensure that the BibTeX entry with key “ConfVer” remains the canonical version.
You can also define your own additional fields. For instance, the example Makefile that is distributed with bibtex2web uses the “-filter” argument to the programs to make them ignore any article containing an “omitfromcv” field. Additionally, it ignores any entry containing an “onlycrossref” field (unless that field was inherited via a crossref); this permits info about just the conferences from appearing. Another use of the “-filter” argument is to create a separate webpage for any article containing an “underreview” field.
The main program of the bibtex2web package is bwconv.pl. You can supply it a variety of command-line arguments.
-format=bibtex,htmlpubs -format=bibtex,htmlsummary -format=bibtex -outformat=htmlabstract
The output formats supported by bibtex2web are as follows.
Creates one page per publication, giving the abstract and other details and links to the paper itself.
If the “-linknames link-names-file” command-line argument is also given, then each author name (or conference name, etc.) may be replaced by a link to that author's homepage.
By contrast, if the linkauthors option is given, then author names on abstract pages are linked to the authors' publications lists. Here is how to
The htmllist output format generates a list of entry titles, each of which links to the abstract page for that entry, separated by <br /> line breaks. This is useful to generate a list of “recent publications” on a home page. For example, see “Selected Publications” list on http://pmg.csail.mit.edu/.
Example make rule:
index.html: ${BWBIN}/bwconv.pl -format=bibtex,htmllist -outopts=limit:5\ abstract_dir:pubs -headfoot index-headfoot.html -copyright ../copyright -to $@ $(FILTER) ${BIBFILES}
The “limit” output option limits the list to the specified number of entries (without this option, list is unlimited). The “abstract_dir” option specifies the relative directory containing the per-entry abstract files (default “../pubs”).
You can specify how the generated webpages look by supplying templates. The most common of these is supplied by the -headfoot argument to the bwconv.pl program.
A template turns into the final webpage, but certain special strings are replaced replaced first:
This page was generated $timestamp by bibtex2webwhere $timestamp is the local time in ctime(3) format.
bibtex2web has built-in support for many LaTeX commands, but you may find additional commands that are not supported. A common symptom of an unsupported command in an abstract is the warning
bp warning (main): Unknown TeX characters (backslashes) in ...
To support a new LaTeX command, you need to add information about how to convert it to bibtex2web's internal representation (based on Unicode) and from that representation to HTML and other formats. A good way to find the places you need to change is to grep for “017C”, which is the Unicode code for a z with a dot above it (ż), or for “21D2”, which is a right arrow (⇒), and then mimic one or the other of them.
You can find Unicode character codes (and HTML equivalents) at http://www.fileformat.info/info/unicode/char/search.htm. Two other lists of HTML character codes are http://www.w3.org/TR/REC-html40/sgml/entities.html and http://www.alanwood.net/unicode/arrows.html.
If you have any problems or questions, please contact Michael Ernst (mernst@csail.mit.edu). I will do my best to help, though I cannot make any guarantee.
bibtex2html was written by Michael Ernst, with contributions by Sameer Ajmani.
bibtex2html builds on the bp library by Dana Jacobsen.
David Andersen contributed patches and suggestions.
bibtex2web is built on the bp Perl library. The bibtex2web distribution is simply the bp distribution, with corrections and enhancements. bp-README is the original README file for the bp Perl library, and other files and directories have been similarly prefixed with “bp-” to avoid confusion to users of bibtex2web. bp documentation appears at http://www.ecst.csuchico.edu/~jacobsd/bib/bp/index.html (but unfortunately isn't packaged with bp itself). bp has not been supported since December 1996, but it works well enough for me, particularly with my enhancements. (Another library is btool, but bp is better.) Other systems exist, but did not have the features I needed.
Under both Netscape and Internet Explorer, <br /> needs to be at the end of a line rather than at the beginning of the next line, because otherwise there can be two line breaks (i.e., a blank line) rather than just a single line break.
Permit multiple categories per entry, because some entries span categories. How to do this without overhauling bwconv.pl?
Add additional cross-reference types (beyond supersededby), such as permitting a later technical report that is linked from the page. Examples: http://www.pag.csail.mit.edu/~mernst/pubs/instantiating-generics-oopsla2004-abstract.html, http://pag.csail.mit.edu/pubs/deadlock-library-ecoop2005-abstract.html.
Create a shared utility package for duplicated subroutines like read_link_names. Also, some code for the linkauthors option was copied from make-author-pages.pl; this should be consolidated.
Permit printing superseded articles rather than suppressing them (but do add links to the subsequent version); this gives a list of all publications, including duplicates.
The Perl expressions in -filter arguments are starting to get out of hand; permit simplifying them. For examples, add a -omitiffield[exists] and/or an -includeiffield[exists]?
Add a field to indicate awards or other notes to add on the webpage.
Add a noabstractpage field, to replace the old nobasefilename field.
htmllist output format : generates too much space in the HTML. A newline is generated for each entry, even if it's omitted! Is there a way to tell the system to stop processing entries?