Going in a circle, from latex+bibtex to pandoc to latex+bibulous

May 23, 2018

So, today’s the day I finish my pandoc experiment of writing my academic essays in markdown and pandoc. You might wonder why. The most important reasons where:

Hence, I revert back to my old tool chain, but found a great replacement for bibtex: bibulous. BibTex was among the main reasons why I switched to Pandoc, its over-engineered bibtex style file format is close to unmaintainable for people who didn’t learn Cobol at university! Bibulous works exactly like bibtex, it sits at the same place in the latex typesetting tool chain, take a standard bibliography file as input, etc. The only difference: it’s written in python and its bibliography style definitions are human readable! As an example, let’s have a brief look at the bibtex definition of how to format the bibliography entry of an article:

FUNCTION 
{ output.bibitem
  list.label.output
  " (" list.year * ") " * write$
  author "author" item.check
  title.field field.used =
    
    
  if$
  crossref missing$
    { journal emphasize "journal" duplicate$ item.check
      ", " * format.vol.num.pages * output
    }
    { format.article.crossref output.nonnull
      format.pages output
    }
  if$
  "" publisher * output
  new.block
  note missing$
  {
        skip$
  }
  {
        note output
  }
  if$
  fin.entry
}

… somewhere I read that this is written in a Polish notation, meaning, it’s not read from left to right, but the other way round. Also, there’s a complicated stack based system underneath. Well, it comes from the times when assembler was considered a mainstream language, I presume. Now, here’s the same in bibulous format:

# Article
article = <au> (<year>) \enquote{<title>}, \textit{<journal>}, <volume>[ (<number>)|] ...
             [, pp.~<startpage>--<endpage>|, <startpage>|, <eid>|].[ <note>.]

Doesn’t it look much more readable? Thank you bibulous team. The bibulous web page says something about limitations, but I couldn’t find any yet. I’ll post when I stumble into some.

In conclusion, I say Pandoc is great and I really like the principles of simplicity behind markdown. But unless there’s a good editor like LyX, proper - and I mean proper and not half heartedly - support for referencing, cross referencing and the like, it’s not ready for academic writing. It still rules large parts of web publishing and that’s where it’s absolutely awesome at: I stick with pandoc for the web, and latex+bibulous for academic writing.