bibtexbrowser: publication lists with bibtex and PHP

by Martin Monperrus
bibtexbrowser is a PHP script that creates publication lists from Bibtex files.
bibtexbrowser is stable, mature and easy to install. It is used in 60+ different universities around the globe.

Major features
Other features
Download
Bibtexbrowser Ecosystem
Demo and screenshot
Basic installation
UTF-8 support / ISO-8859-1 support
How to embed your publication list in your home page
Sectioning in academic mode
How to tailor bibtexbrowser?
  By modifying the CSS
  By modifying the bibliography style
  By creating a bibtexbrowser.local.php
How to add links to the slides of a conference/workshop paper?
Related tools
Copyright

Major features

* (11/2009) bibtexbrowser generates Google Scholar metadata so as to improve the visibility of your papers on Google Scholar. Since Google has now documented this feature, as of version ≥20100621, Google Scholar Metadata should be completely correct.
* (11/2009) More and more academics use bibliographic software like Zotero or Mendeley. bibtexbrowser generates COinS for automatic import of bibliographic entries with Zotero and Mendeley.
* (10/2009) People can subscribe to the RSS publication feed of an individual or a group so as to being kept up-to-date: bibtexbrowser generates RSS feeds for all queries (simply add &rss at the end of the URL)! demo
* (02/2009) bibtexbrowser can display all entries for an author with an academic style (i.e book, articles, conference, workshop): demo
* (05/2008): bibtexbrowser can be used to embed a publication list into another page: demo
* (04/2007): bibtexbrowser is easy to install: just a single file.

Other features

* (10/2011) if a bibtex entry contains a field gsid (like Google Scholar ID), bibtexbrowser includes a link [cites] to the cited-by page of Google Scholar (e.g. http://scholar.google.com/scholar?cites=15080874515065717592)
* (03/2011) bibtexbrowser includes a hide/show mechanism for bibtex entries (in Javascript, see configuration variable BIBTEXBROWSER_USE_PROGRESSIVE_ENHANCEMENT)
* (10/2010) bibtexbrowser now supports cross-references (Bibtex crossref)
* (09/2010) bibtexbrowser now supports multiple bibtex files (bibtexbrowser.php?bib=file1.bib;file2.bib)
* (05/2010) bibtexbrowser adds links to your co-author pages if you define the corresponding @string (see function addHomepageLink)
* (01/2010) bibtexbrowser can handle user-defined bibliographic styles
* (10/2009) bibtexbrowser is able to generate a bibtex file containing only the selected entries (simply add &astext at the end of the link)
* (10/2009) bibtexbrowser is now independent of the configuration of register_globals
* (01/2009) bibtexbrowser allows multi criteria search, e.g. demo
* bibtexbrowser replaces constants defined in @STRING
* bibtexbrowser is very fast because it keeps a compiled version of the bibtex file (PHP object serialized)
* bibtexbrowser is compatible with PHP 4.x and PHP 5.x
* bibtexbrowser can display the menu and all entries without filtering from the file name passed as parameter demo
* bibtexbrowser can display all entries out of a bibtex file demo
* bibtexbrowser can display all entries for a given year demo
* bibtexbrowser can display a single bibtex entry demo
* bibtexbrowser can display found entries with a search word (it can be in any bib field) demo
* bibtexbrowser can display all entries with a bib keyword
* bibtexbrowser outputs valid XHTML 1.0 Transitional
* bibtexbrowser can display all entries for an author demo
* bibtexbrowser can be used with different encodings (change the default iso-8859-1 encoding if your bib file is in UTF-8 define('ENCODING','UTF-8') )


Download

For feature requests, bug reports, or patch proposals, please drop me an email or comment this page. Don't hesitate to contact me to be added in the lists of bibtexbrowser users :-)

You may try bibtexbrowser without installation by uploading your bibtex file at http://my.publications.li.

Download bibtexbrowser

Bibtexbrowser Ecosystem


The following uses bibtexbrowser under the hood:
* Generating publication lists in Latex using http://www.monperrus.net/martin/bibtex2latex
* Feeding a MySQL database from the content of a bibtex file
* Publication lists in Wordpress with wp-publications
* Hosted publication lists at http://my.publications.li

Demo and screenshot


Demo: Here, you can browse a bibtex file dedicated to software metrics

bibtexbrowser screenshot

Basic installation

Create a bib file with the publication records (e.g. csgroup2008.bib) and upload it to your server.
* Use the link bibtexbrowser.php?bib=csgroup2008.bib (frameset based view)
* Use the link bibtexbrowser.php?bib=csgroup2008.bib&all (pub list sorted by year)
* Use the link bibtexbrowser.php?bib=csgroup2008.bib&all&academic (pub list sorted by publication type, then by year, see "Sectioning in academic mode" below)

Warning : bibtexbrowser maintains a cached version of the parsed bibtex, for high performance, check that PHP can write in the working directory of PHP.

Handling mutliple bibtex files: If you want to include several bibtex files, just give bibtexbrowser the files separated by semi-columns e.g:
bibtexbrowser.php?bib=strings.bib;csgroup2008.bib

UTF-8 support / ISO-8859-1 support


By default, bibtexbrowser assumes that the bibtex file is UTF-8 encoded. If you want to change it to e.g. ISO-8859-1, add define('ENCODING','ISO-8859-1'); into bibtexbrowser.local.php (see below). Note that if the bibtex only contains latex-encoded diacritics (e.g. \'e), it does not matter.

How to embed your publication list in your home page

Sorted by year Sorted by publication type
For a group/team/lab <?php
$_GET['bib']='csgroup2008.bib';
$_GET['all']=1;
include( 'bibtexbrowser.php' );
?>
<?php
$_GET['bib']='csgroup2008.bib';
$_GET['all']=1;
define('ABBRV_TYPE','year');
$_GET['academic']=1;
include( 'bibtexbrowser.php' );
?>
For an individual <?php
$_GET['bib']='mybib.bib';
$_GET['author']='Martin Monperrus';
include( 'bibtexbrowser.php' );
?>
<?php
$_GET['bib']='mybib.bib';
$_GET['author']='Martin Monperrus';
define('ABBRV_TYPE','year');
$_GET['academic']=1;
include( 'bibtexbrowser.php' );
?>

Sectioning in academic mode


The default academic mode creates four sections :
- books
- articles and book chapters
- workshop papers (for entries containing "workshop" in the field booktitle)
- others.

You may create your own one in bibtexbrowser.local.php (see also "By creating a bibtexbrowser.local.php" below):
define('BIBLIOGRAPHYSECTIONS','my_sectioning');
function my_sectioning() {
return  
  array(
  // Books
    array(
      'query' => array(Q_TYPE=>'book'),
      'title' => 'Books'
    ),
  // Articles
    array(
      'query' => array(Q_TYPE=>'article'),
      'title' => 'Refereed Articles'
    ),
  // Conference and Workshop papers
    array(
      'query' => array(Q_TYPE=>'inproceedings'),
      'title' => 'Conference and Workshop  Papers'
    ),
  // others
    array(
      'query' => array(Q_TYPE=>'misc|phdthesis|mastersthesis|bachelorsthesis|techreport'),
      'title' => 'Other Publications'
    )
  );
}

How to tailor bibtexbrowser?


By modifying the CSS

If bibtexbrowser.css exists, it is used, otherwise bibtexbrowser uses its own embedded CSS style (see function bibtexbrowserDefaultCSS). An example of CSS tailoring is:
.date {   background-color: blue; }
.rheader {  font-size: large }
.bibref {  padding:3px; padding-left:15px;  vertical-align:top;}
.bibtitle { font-weight:bold; }
.bibbooktitle { font-style:italic; }

By modifying the bibliography style

The bibliography style is encapsulated in a function. If you want to modify the bibliography style, you can copy the default style (source) in a new file, say bibtexbrowser-yourstyle.php, and rename the function DefaultBibliographyStyle in say MyFancyBibliographyStyle.
Then, add in the file bibtexbrowser.local.php (see below):
<?php
include( 'bibtexbrowser-yourstyle.php' );
define('BIBLIOGRAPHYSTYLE','MyFancyBibliographyStyle');
?>
Janos Tapolcai contributed with this style, which looks like IEEE references.
For contributing with a new style, please drop me an email

By creating a bibtexbrowser.local.php

All the variable parts of bibtexbrowser can be modified with a file called bibtexbrowser.local.php.

<?php
// ------------------------------- NOVICE LEVEL
// if your bibtex file is UTF-8 encodedd
// define("ENCODING","UTF-8");

// number of bib items per page
// define('PAGE_SIZE',50);

// disable Javascript progressive enhancement
// define('BIBTEXBROWSER_USE_PROGRESSIVE_ENHANCEMENT',false);

// may be default/year/x-abbrv
// default => [1] The essence of metamodeling
// year => [2005] The essence of metamodeling
// x-abbrv => [SoSyM] The essence of metamodeling if the bibtex entry contains a field x-abbrv
//define('ABBRV_TYPE','default');

// see the other define(...) in the source, they are all overridable

// ------------------------------- INTERMEDIATE LEVEL

// if you are not satisifed with the default style
// define('BIBLIOGRAPHYSTYLE','MyFancyBibliographyStyle');
function MyFancyBibliographyStyle() {
   // see function DefaultBibliographyStyle
}

// if you are not satisifed with the default sections
// define('BIBLIOGRAPHYSECTIONS','mySections');
function mySections() {
return  
  array(
  // Books
    array(
      'query' => array(Q_TYPE=>'book'),
      'title' => 'Cool Books'
    ),
  // .. see function DefaultBibliographySections
);
}


// ------------------------------- EXPERT LEVEL
// define('BIBTEXBROWSER_URL','path/to/bibtexbrowser.php'); // if bibtexbrowser.php is in another directory in embedded mode
// define('BIBTEXBROWSER_URL',''); // to get the individual bib pages embedded as well

?>

How to add links to the slides of a conference/workshop paper?


You can simply fill the comment field of the bib entry with an HTML link:
@inproceedings{foo,
author="Jean Dupont",
title="Bibtexbrowser",
year=2009,
booktitle="Proceedings of the BIB conference",
comment={<a href="myslides.pdf">[slides]</a>}
}
This comment field can also be used to add acceptance rates and impact factors.

Related tools


Old-fashioned:
bibhtml, bib2html, bibtohtml, bibtextohtml, bibtex2html, bibtex2web, stratego bibtex module
Unlike them, bibtexbrowser is dynamic.i.e.; generates the HTML pages on the fly. Thus, you do not need to regenerate the static HTML files each time the bib file is changed.

Heavyweight:
PHP BibTeX Database Manager, bibadmin, basilic, phpbibman, aigaion, refbase, wikindx, refdb
Unlike them, bibtexbrowser does not need a MySQL database


Main competitor:
SimplyBibtex has the same spirit, but the project seems dead since 2006

Misc:
This matlab script is similar

Copyright


This script is a fork from an excellent script of the University of Texas at El Paso.

(C) 2006-2011 Martin Monperrus
(C) 2005-2006 The University of Texas at El Paso / Joel Garcia, Leonardo Ruiz, and Yoonsik Cheon
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 2 of the
License, or (at your option) any later version.