Guide

Markdown for Academic Writing: Citations, Footnotes and When to Use LaTeX

Published July 30, 2026

Academic writing has requirements most document formats never encounter: precise citation formatting in one of dozens of styles, footnotes that renumber themselves, cross-references that survive reordering, and departmental submission rules about margins and line spacing. Markdown handles some of this well, some of it through extensions, and some of it not at all.

This guide covers what works, what needs tooling, and — importantly — where you should stop fighting Markdown and use LaTeX instead.

Footnotes

Footnotes are not in the original Markdown spec but are supported by nearly every modern parser through a widely-adopted extension syntax:

The replication crisis has reshaped methodology in psychology.[^replication]

[^replication]: Open Science Collaboration, "Estimating the reproducibility
    of psychological science," *Science* 349, no. 6251 (2015).

The identifier is arbitrary — [^replication], [^1], [^note-a] — and never appears in output. The parser assigns sequential numbers based on the order references appear in the text, not the order definitions appear. This is the property that makes footnotes worth using: reorder your paragraphs and the numbering fixes itself.

Definitions can live anywhere in the document. Keeping them immediately after the paragraph that references them makes editing easier; collecting them at the end makes the prose cleaner to read in source. Either works.

Multi-paragraph footnotes need indentation on continuation lines:

[^method]: The sample was drawn from undergraduate volunteers.

    This is a limitation we return to in section 4. Convenience samples
    systematically over-represent certain demographics.

Four spaces of indentation continues the footnote. A blank line without indentation ends it.

Footnotes versus endnotes in PDF

Here the distinction becomes real. A footnote appears at the bottom of the page where its reference occurs. An endnote appears in a collected list at the end of the document. Markdown’s footnote extension produces endnotes — the parser emits a <section class="footnotes"> at the end of the HTML.

Turning endnotes into true per-page footnotes requires the CSS Generated Content for Paged Media module, which is only implemented in Paged.js, WeasyPrint and PrinceXML:

.footnote-ref {
  float: footnote;
}

@page {
  @footnote {
    border-top: 0.5pt solid #ccc;
    padding-top: 4pt;
    margin-top: 8pt;
    font-size: 8.5pt;
    line-height: 1.35;
  }
}

::footnote-call {
  vertical-align: super;
  font-size: 0.75em;
}

::footnote-marker {
  font-weight: 600;
}

float: footnote is the key declaration: it removes the element from normal flow and places it in the @footnote area of whichever page its reference lands on. The engine handles the case where a footnote is too long for the remaining space by splitting it across pages.

This does not work in Chrome’s print pipeline or in Puppeteer. On those engines, endnotes are what you get. For many submissions that is acceptable — check your style guide, since some require footnotes specifically.

Numbering style

Academic conventions vary. Symbols (*, , ) for sparse footnotes, superscript numbers for dense ones, per-chapter restarts for books:

/* Restart footnote numbering each chapter. */
.chapter { counter-reset: footnote; }

/* Roman numerals instead of arabic. */
::footnote-marker {
  content: counter(footnote, lower-roman) ". ";
}

Citations

This is the part that genuinely requires tooling. Markdown has no citation syntax, and formatting references correctly in APA, MLA, Chicago, Vancouver or a journal’s house style by hand is both tedious and error-prone.

The standard solution is Pandoc’s citation extension plus a bibliography file and a CSL style.

The Pandoc workflow

Citations use an @key syntax inside square brackets:

Recent work challenges this assumption [@smith2024; @jones2023].

Smith argues the opposite [-@smith2024, pp. 45-47].

As @jones2023 demonstrates, the effect is smaller than reported.

Three forms worth knowing:

  • [@key] — full parenthetical citation: (Smith, 2024)
  • @key — narrative citation, author outside the parentheses: Smith (2024)
  • [-@key] — suppresses the author, for when you have just named them: (2024)

Locators go after the key: [@smith2024, pp. 45-47], [@smith2024, ch. 3].

Your bibliography is a BibTeX, CSL-JSON or YAML file:

@article{smith2024,
  author  = {Smith, Jane and Patel, Ravi},
  title   = {Revisiting the Attentional Blink},
  journal = {Journal of Cognitive Science},
  year    = {2024},
  volume  = {41},
  number  = {2},
  pages   = {112--134},
  doi     = {10.1234/jcs.2024.0112}
}

Then Pandoc assembles everything:

pandoc paper.md \
  --citeproc \
  --bibliography=references.bib \
  --csl=apa-7th-edition.csl \
  --pdf-engine=xelatex \
  -o paper.pdf

--citeproc activates citation processing. --csl points at a Citation Style Language file — there are over 10,000 in the Zotero Style Repository, covering essentially every journal that exists. Swapping styles is a one-flag change, which is the entire point: reformatting a paper from APA to Chicago for a different journal takes seconds instead of an afternoon.

The reference list is generated automatically wherever you place a # References heading, or appended at the end if you do not.

Metadata in YAML

Rather than passing flags every time, put them in the document’s front matter:

---
title: "Revisiting the Attentional Blink in Naturalistic Settings"
author:
  - name: Jane Smith
    affiliation: Department of Psychology, University of Example
    email: j.smith@example.edu
date: 2026-04-23
bibliography: references.bib
csl: apa-7th-edition.csl
link-citations: true
linkReferences: true
abstract: |
  Prior work on the attentional blink has relied almost exclusively on
  laboratory paradigms. We report three experiments extending the
  phenomenon to naturalistic viewing conditions.
keywords: [attention, temporal processing, ecological validity]
---

link-citations: true makes in-text citations hyperlink to their reference-list entry, which is genuinely useful in a PDF read on screen.

Browser-based pipelines and citations

Be clear-eyed about this: browser-based Markdown-to-PDF converters do not process citations. Citation processing requires a CSL engine and access to your bibliography file; it is not a rendering concern, it is a text transformation that happens before rendering.

If your work is citation-heavy, the realistic workflow is:

  1. Write in Markdown.
  2. Run Pandoc with --citeproc to resolve citations, outputting Markdown or HTML with citations already formatted.
  3. Convert that output to PDF by whatever means you prefer.

Or simply let Pandoc go all the way to PDF. A browser-based tool is the right choice for coursework, notes and drafts where you are citing a handful of sources by hand — not for a journal submission with 80 references.

Zotero and live libraries

Maintaining a .bib file by hand does not scale. Zotero, with the Better BibTeX plugin, solves this properly.

Better BibTeX gives every item a stable, human-readable citation key (smith2024revisiting rather than an opaque hash) and can keep a .bib file continuously synchronised with a Zotero collection. You add a paper to Zotero; the .bib file updates; your Markdown can cite it immediately.

Setup, briefly:

  1. Install Zotero and the Better BibTeX plugin.
  2. Right-click a collection → Export Collection.
  3. Choose format Better BibTeX, tick Keep updated.
  4. Save as references.bib next to your Markdown.

The “keep updated” option is what makes this work — the file rewrites itself whenever the collection changes.

Better BibTeX’s key format is configurable. The default authEtal2Lower + year + shorttitle pattern produces keys you can guess while writing, which matters more than it sounds: it means you can cite from memory rather than looking things up.

Zotero’s own PDF export

Worth noting for completeness: Zotero can export a bibliography directly to a formatted document, and its Word/LibreOffice plugins insert live citations. If your entire workflow is inside Word, that path exists and works well. The Markdown route is for people who want plain text and version control.

Cross-references

Numbered figures, tables, sections and equations with automatic cross-references (“as shown in Figure 3”) need pandoc-crossref, a Pandoc filter:

![Response times by condition](rt-plot.svg){#fig:rt}

As @fig:rt shows, the effect is monotonic.

: Participant demographics {#tbl:demo}

| Group | n | Mean age |
| --- | --- | --- |
| Control | 42 | 21.4 |

Table @tbl:demo summarises the sample.
pandoc paper.md --filter pandoc-crossref --citeproc \
  --bibliography=references.bib -o paper.pdf

The filter resolves @fig:rt to “Figure 1” and keeps numbering consistent when you reorder. This is another capability that exists only in the Pandoc pipeline.

Markdown versus LaTeX

An honest comparison, because the answer is genuinely “it depends” and most write-ups on this are advocacy.

Markdown (+ Pandoc)LaTeX
Learning curveAn hourWeeks to be productive
Source readabilityReads as proseDense markup
MathGood via KaTeX/MathJaxThe reference implementation
CitationsExcellent via citeprocExcellent via BibTeX/biblatex
Cross-referencesGood via pandoc-crossrefNative, comprehensive
Figure placementPoor — no float algorithmSophisticated float placement
TablesSimple tables onlyArbitrary complexity
Journal templatesRareNearly universal
Index generationNonemakeindex, mature
Output typographyGoodExceptional
Multiple output formatsExcellent (HTML, DOCX, PDF, EPUB)PDF-centric
Error messagesClearNotoriously opaque

Choose Markdown when

  • The document is prose-dominant with moderate math.
  • You need output in more than one format — a PDF for submission and HTML for a preprint server.
  • Collaborators are not LaTeX users. A Markdown diff is reviewable by anyone.
  • You are writing coursework, a literature review, notes, or a thesis chapter draft.
  • You want to focus on writing and defer formatting.

Choose LaTeX when

  • The journal supplies a LaTeX template and expects submission in it. This is common in physics, mathematics and much of computer science, and it settles the question — fighting the template costs more than learning LaTeX.
  • Math is the substance of the document, not decoration. Multi-line aligned derivations, commutative diagrams, custom operators.
  • You need precise float placement, wrapped figures, or complex multi-part tables.
  • The document needs an index, a table of authorities, or extensive cross-referencing.
  • Typographic quality is being judged — LaTeX’s line-breaking and hyphenation algorithms remain better than any browser’s.

The pragmatic middle

Many people write in Markdown and compile through LaTeX, which is exactly what --pdf-engine=xelatex does: Pandoc converts your Markdown to LaTeX, then LaTeX typesets it. You get Markdown’s authoring experience and LaTeX’s output quality.

You can inject LaTeX where you need it, since Pandoc passes raw LaTeX through untouched:

Ordinary Markdown prose here.

\begin{align}
\nabla \times \mathbf{E} &= -\frac{\partial \mathbf{B}}{\partial t} \\
\nabla \times \mathbf{B} &= \mu_0\mathbf{J} + \mu_0\varepsilon_0\frac{\partial \mathbf{E}}{\partial t}
\end{align}

Back to prose.

The cost is that the document is no longer portable — those blocks produce nothing meaningful in an HTML or DOCX conversion. It is a reasonable trade if PDF is the only target that matters.

You can also supply a LaTeX preamble for full typographic control:

pandoc paper.md --citeproc --bibliography=refs.bib \
  --pdf-engine=xelatex \
  --include-in-header=preamble.tex \
  -V documentclass=article \
  -V fontsize=12pt \
  -V geometry:margin=1in \
  -V linestretch=2 \
  -o paper.pdf

Those -V variables cover most submission requirements directly — see below.

Coursework, notes and study material

Not all academic writing is a journal submission, and for the rest Markdown is often simply the better tool.

Lecture notes. Typing Markdown in a lecture is fast because you never leave the keyboard for formatting. Headings for topics, nested lists for structure, $...$ for the occasional formula. Exporting to PDF afterwards gives you something readable and printable.

Problem sets. Math delimiters plus fenced code blocks cover most STEM coursework. A KaTeX-capable browser converter handles this well and needs no toolchain.

Study sheets. A two-column layout is dense and effective for revision material:

@page { size: A4; margin: 12mm; }

.study-sheet {
  column-count: 2;
  column-gap: 8mm;
  column-rule: 0.5pt solid #ddd;
  font-size: 9.5pt;
}

.study-sheet h2 {
  column-span: all;
  font-size: 12pt;
  border-bottom: 1pt solid #333;
  padding-bottom: 2pt;
}

.study-sheet h3 {
  font-size: 10pt;
  break-after: avoid;
}

Literature reviews. These benefit most from the Pandoc workflow, because they are citation-dense by nature. A review with 60 sources is exactly the case where hand-formatting stops being viable.

Meeting submission requirements

Departments and journals specify formatting precisely. Most requirements map directly onto CSS or Pandoc variables.

RequirementCSSPandoc
Double spacingline-height: 2-V linestretch=2
1 inch margins@page { margin: 1in }-V geometry:margin=1in
12pt Times New Romanfont: 12pt "Times New Roman"-V fontsize=12pt -V mainfont="Times New Roman"
Page numbers, top right@page { @top-right { content: counter(page) } }Handled by document class
Anonymous for reviewOmit author from front matter-V author=""
Word countpandoc paper.md --lua-filter=wordcount.lua

A double-spaced CSS example, since it is the most common requirement:

@media print {
  @page {
    size: letter;
    margin: 1in;
    @top-right {
      content: "Smith " counter(page);
      font-size: 12pt;
    }
  }

  body {
    font-family: "Times New Roman", Times, serif;
    font-size: 12pt;
    line-height: 2;
  }

  /* Indent paragraphs rather than spacing them — MLA/Chicago style. */
  p {
    margin: 0;
    text-indent: 0.5in;
  }

  p:first-of-type,
  h1 + p, h2 + p {
    text-indent: 0;
  }

  blockquote {
    margin-left: 0.5in;
    line-height: 1;   /* block quotes are single-spaced in most styles */
    font-style: normal;
  }
}

The text-indent handling is worth noting: MLA and Chicago indent the first line of each paragraph except the first in a section, and use no vertical space between paragraphs. That is the opposite of web convention and needs explicit CSS.

Try it yourself

For coursework, notes, problem sets and drafts, the editor here handles Markdown with KaTeX math and footnotes, and exports a paginated PDF with no toolchain to install. You can apply the double-spacing and margin CSS above directly.

For citation-heavy work — anything with a bibliography and a required style — use Pandoc with --citeproc. That is the honest recommendation, and the Pandoc comparison guide covers when each approach fits.

Related: tables, math and diagrams for the rendering details, and print CSS for layout control.

About this guide

Written and maintained by the developer of MarkdownToFile — the browser-based converter this site runs on. Techniques described here are tested against the engines named in the text (Chromium's print pipeline, Paged.js, WeasyPrint), and engine limitations are stated rather than glossed over. Corrections are welcome via the contact page; more about the project on the about page.

Try it yourself — free, no signup

Convert your Markdown to a polished PDF right in your browser.

Open the editor