GK Logo 003 350 x 100

For a while I have been blogging on various bibtex related topics. My interest in parsing bibtex sfiles started a long when I was looking for a way to automatically generate my publications web page, rather than having to update the raw HTML every time I published a new paper. There are a few free options around which enable you to do this but all those I looked at had some shortcomings, as far as I was concerned.

In the end, I found a PHP system from Andreas Classen. This system does just about everything I want it to do and, being written in PHP, it is also extendible. The other benefit, although it did not seem like it at the time, was the fact that it forced me to learn PHP. I am really glad I did now as it has proven to be invaluable in many projects that I am working on.

I have already made a number of changes to the system supplied by Andreas, just so that I can do things were not available out of the box. Not that this was a problem. Andreas was not selling a software package and it was good of him to make the software he had written as open source.

The approach I have taken is to split lots of the functions into smaller functions and also put them into a class just to try and make things easier and tidier. The overall aim being that I should be able to string these functions together (in true mash up style) to provide additional functionality.

As an example of this, I have recently added some functionality (albeit, quite specific)  that was not available before now in the original system, and would not have been easy to incorporate into the software as it arrived.

This new functionality enables you to show all the papers that have been published by a single author. That is, I take a bibtex files, generate one record for each author/paper. So if you have a paper that is written by two authors, this will generate two records; one for each author.

The process is as follows:

  1. Read in the bibtex file into an array.
  2. Process each record and extract each author as a separate record (along with some information about the paper). All of this is placed into another array.
  3. Sort this new array by the author family name.
  4. Once you have this array, you can display it as you see fit.

You can see what I do with it here. Note, this is not a page at my web site, but this functionality was developed for the MISTA conference series that I have chaired since 2003.

If you look at this page, you’ll also see I generate a separate menu for each author so that somebody could explore a specific author without having to continually scroll through the page. It also makes it easier to see how many publications a particular person has published.

Whether the system is really needed for the MISTA conference series is open to debate. The conference has published around 500 papers so it is possible to simply scan the papers, but as the conference publishes even more papers it will become increasingly useful, rather than having to look through every paper.

Probably of more use, at least to me, is that the various PHP support functions that I have developed now enables me to develop even more bibtex functionality, which make various other projects I have in mind a realistic possibility.