publist manual

Markus Hoenicka


publist is a tool to create a publication list (a list of your publications that usually accompanies your CV) from data stored in a RefDB ( database. As you have to add your own publications to the database anyway (who doesn't cite himself as often as possible?), a publication list can be automatically created from these data instead of maintaining the list manually like in the days of yore.

Table of Contents

Package Contents
Getting Started
Detailed Instructions
How it works
Mandatory Modifications
Bibliographic Data
Optional Modifications


  • RefDB

  • XML toolchain. You need an xinclude-aware XSLT processor (like xsltproc) for HTML output and additionally a FO processor (like Fop) to create printable output.

Package Contents

Unpack the archive into a convenient directory, e.g. your home directory. This will create the subdirectory ~/publist-1.1. You'll find the following files here:


The skeleton document. This is a simple DocBook XML document that you can adapt to your needs.


This is a makefile for GNU make (called gmake on some systems) which drives the transformation of the document. Please see the comments in the Makefile for a few modifications which you will have to make.


A bibliography style which is well suited for publication lists. Among other things, the bibliographies are listed by date, most recent first. You can of course tweak the style to your needs, or use a completely different style.


This is a translation of the above style into German. Styles in other languages can be derived just as easily.


This subdirectory contains the documentation that you're just about to read.

Getting Started

In brief, the following steps are required to get you up and running:

  1. Add the provided publication style to RefDB:

    	  user:~/publist-1.1# refdba -C addstyle styles/publist-style.xml
  2. Copy the files of the work subdirectory into a new working directory:

    	  user:~/publist-1.1# mkdir ~/mypublist
    	  user:~/publist-1.1# cp work/* ~/mypublist
  3. Customize the skeleton document in your working directory (~/mypublist/publist.xml) to your needs.

  4. Customize the Makefile in your working directory (~/mypublist/Makefile).

  5. Add your own publications to the database, or modify existing ones appropriately. You may want to tag your publications with additional information, e.g. to tell apart oral presentations from poster presentations and peer-reviewed articles from invited publications.

  6. Run make in your working directory to transform your publication list to HTML or to printable output, e.g.:

    	  user:~/mypublist# make html
    	  user:~/mypublist# make xhtml
    	  user:~/mypublist# make pdf

Detailed Instructions

This section provides all the information you need to set up your publication list appropriately.

How it works

publist is nothing but a slight modification of the Makefile created by the refdbnd tool (distributed with RefDB), along with a skeleton publication list document and a bibliography style suitable for publication lists. The Makefile is set up to create several bibliographies, one for each publication type that you want listed separately. By default, the following types are used:

  • Peer-reviewed publications

  • Invited publications

  • Abstracts

  • Oral Presentations

  • Books

  • Thesis

These bibliographies are included into the publication list as external entities. When you transform the document, you'll get your publication list, with the publications listed by type and sorted by date, most recent first.

Mandatory Modifications

Before you can use the publist tool successfully, you need to customize at least two of the provided files. This is why it is recommended to copy them to a working directory, in order to keep the original versions intact. The required changes are discussed below.


Query section

Define a query for each of the reference types that you want to use in your publication list. Each query must retrieve exactly the references that you want to be included in the particular section. It is recommended to dry-run the queries using a RefDB client until you get the desired results.

Titles section

Define titles for the sections corresponding to the reference types. The default titles are in English, but you can easily translate them to your native language. If you need your publication list in two or more languages, work in separate subdirectories.

Document processing section

Set the name of the database that contains your references.


You should at least enter your name and the date. If the publication list is not supposed to be in English, you should set the lang attribute of the article element appropriately.

Bibliographic Data

The bibliographic data may need some slight modifications to work with publist. The bibliographic data in RefDB do not distinguish between peer-reviewed and invited papers, and there's actually no reference type to hold oral presentations. It is recommended to use the ABST type for the latter.

One way to deal with this is to use labels in one of the user-defined fields to distinguish the types. The predefined queries in the Makefile use the labels "peer" and "invited" in the U1 field to distinguish peer-reviewed from invited papers, and the labels "printed" and "oral" to distinguish published abstracts (both from poster and oral presentations) from unpublished oral presentations. You may figure out your own scheme as long as your queries retrieve the appropriate references.

Optional Modifications

The Makefile is derived from the ones created by refdbnd and allows the same customizations. These are documented in the Makefile itself. If you see a reason to do so, you can change the default character encoding from UTF-8 to something else, or you can provide a custom CSS stylesheet to customize the (X)HTML output.

You can rearrange the sections by moving around the entity references in the publist.xml file. If you want to include additional reference types, you'll have to make the following modifications:


Define a new query in the query section, add a title in the titles section, and define new targets and type.bib$(extension). The latter is a matter of copyediting one of the existing definitions. You'll also have to add the ID file and the bibliography file to the bibids and bibs variables, respectively.


Add a new xi:include element to your document which includes the additional bibliography.