Legal citations are a major challenge in MultiMarkdown.

MultiMarkdown allows for citations, but it’s focused on academic citations, rather than legal citations. And it’s not clear whether these citations can be adapted for legal purposes.

In MultiMarkdown, the syntax for marking up citations is fairly straightforward: [citation text][#cited source nickname] followed by (somewhere) a [#cited source nickname]: Full Source Name. (You could also add the full source inline, but that can get unweildy).

The difference between academic and legal citations is important. In legal writing, the source is usually explicit and included right in the text itself. E.g., ABC Inc. v. XYZ, LLC, 123 F3d 456, 458 (13th Cir. 2025). And that case (or statute or rule) is listed in the Table of Authorities, with a reference indicating on which page or pages it appears.

Ideally, we’d like to mark that up as follows:

(in the table of authorities):

[#ABCvXTZ]: _ABC Inc. v. XYZ, LLC_, 123 F3d 456 (13th Cir. 2025)....[page number(s)]

(in the text):

[_ABC Inc. v. XYZ, LLC_, 123 F3d 456, 458 (13th Cir. 2025)][#ABCv.XYZ].

In short, a Table of Authorities is a one-to-many listing, where you start with the “one,” and use it to look up the “many.”

Academic citations are the opposite. While there is still only a single source listed in an academic bibliography, the text contains multiple citations. As you read a paper, you may want to tap on the citation to see the full source citation. But you don’t start with the bibiliography and work backwards. Academic bibliographies are a many-to-one listing, and it does not appear capable of generating links back to the places in the text that a given source is cited.

The academic equivalent of a table of authorities would be something more akin to an index than a bibiliography. But, alas, there is no “index” equivalent in MMD, (other than a table of contents for headings).

Still, at a meta-level, the MMD syntax for citations gives us nearly everything we would need to generate a table of authorities. So perhaps we can do some processing of a MMD file to get what we need.

Ciaran Connelly @ciaran