YAML-embedded BibTeX files in Pandoc

hannah

26th September, 2024

Recently I’ve been writing documents with LaTeX again. It’s a lot of fun, and very rewarding — I highly recommend it. LaTeX doesn’t lend itself to editing on a smartphone, however, and that’s where I do a lot of note-taking. But Markdown is perfect for the task.

Inspired by John Godlee’s post (Godlee 2019), I’ve created a build file that reads in a regular old .md note and uses a combination of xelatex, pandoc and some templates to create PDF and HTML copies. Titles, authors, and bibliographies are all specified in a YAML block at the top, e.g.

---
title: Some very important note
author: hannah
date: 2024-09-26
bib: references.bib
---

This is some other important note [@hannah20240925].

Pandoc has a few ways to handle citations:

  1. --citeproc works, but the resulting .tex file uses \citep sequences: I’d rather use vanilla \cite, right?1

  2. The citations extension to Markdown also works, but I would have to pass in the bibliography as a parameter to Pandoc. I could do that with some grep magic, but it seems fragile

My ideal workflow is that Pandoc converts [@hannah20240925] to \cite{hannah20240925}, with my LaTeX template handling the actual citation process. And I found it: --biblatex does exactly that. My build file contains the line

pandoc -o $OUTPUT --biblatex -s --template=$TEMPLATES/template.tex $INPUT

and the LaTeX template handles citations like so:

[...]
$if(bib)$
    \usepackage{biblatex}
    \addbibresource($bib$)
$endif$
[...]
$if(bib)$
    \printbibliography
$endif$
\end{document}

My Markdown notes are converted into LaTeX, and from there into a PDF2, a standalone HTML file and a partial “bare” file for HD-DN.

References

Godlee, John. 2019. “A Pandoc Template for Converting Markdown Letters to LaTeX PDFs.” https://johngodlee.xyz/posts/2019-10-10-md-letter/.