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:
-
Even more complex tool chain than latex: pandoc is written in Haskell and I say, with a degree in computer science, it’s a pain in the *** to install. Different repositories, different install tool chains (cabal vs. stack), different versions, different binary versions in debian repositories, differences everywhere! Try to keep that up-to-date or try to follow one of those tutorials written a year ago and you’ll end up in haskell hell.
-
I really couldn’t get the cross-referencing within an essay to work properly. The Pandoc universe of packages has nice features for on-screen publishing and basic to somewhat advanced writing. But at the time of this writing it really lacks the typesetting features of LaTex. I.e. how can I do the following in pandoc: “please see section 2.1 on page 45”? I was able to get section cross references to work, but failed on page referencing. I didn’t bother about figures.
-
Lack of a user friendly editor, like LyX. With LaTex, I use LyX as my editor of choice. I don’t have to bother with latex syntax while writing, I don’t see those control commands, but they are all there under the hood. Not seeing any markup, but seeing proper headers, bullet points, bold, italic, headings in larger fonts, seeing the document structure on the left hand side, etc. really helps to focus on what I intend to do: Writing. I do like the sublime editor, but I learned that seeing the syntax or markdown - although somewhat enriched in sublime - does not contribute to crafting a good article.
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.