Skip to content
SPDF 5.0

How to cite

How to cite the SPDF specification in your own work, and how SPDF cites the documents it holds, with the exact folio, second or verse.

Reviewed Markdown

Citing the specification

If SPDF is useful in your research, please cite the specification itself, with the version you used. Suggested citation:

Saorín Ferrer, José Luis. 2026. SPDF: Semantic Processed Document Format. Specification, version 5.0. https://spdf.joseluissaorin.com/spec

@techreport{spdf-5.0,
  author      = {Saor{\'\i}n Ferrer, Jos{\'e} Luis},
  title       = {{SPDF}: Semantic Processed Document Format. Specification, version 5.0},
  year        = {2026},
  institution = {spdf.joseluissaorin.com},
  url         = {https://spdf.joseluissaorin.com/spec},
  note        = {CC BY 4.0}
}
[
  {
    "id": "spdf-5.0",
    "type": "report",
    "title": "SPDF: Semantic Processed Document Format. Specification, version 5.0",
    "author": [
      {
        "family": "Saorín Ferrer",
        "given": "José Luis"
      }
    ],
    "issued": {
      "date-parts": [
        [
          2026
        ]
      ]
    },
    "URL": "https://spdf.joseluissaorin.com/spec",
    "version": "5.0",
    "language": "en"
  }
]
cff-version: 1.2.0
message: "If you use SPDF, please cite its specification as below."
title: "SPDF: Semantic Processed Document Format. Specification"
version: "5.0"
date-released: 2026-10-07
authors:
  - family-names: "Saorín Ferrer"
    given-names: "José Luis"
url: "https://spdf.joseluissaorin.com/spec"
license: CC-BY-4.0

A DOI will be minted for each released version of the specification; until then, please cite the URL and the version.

How SPDF cites what it holds

The point of the format is that a citation is computed from the stored anchor, never generated. Every implementation has the same cite function, tested by the conformance suite, which takes an anchor, the document's CSL record and a locale:

AnchorEnglishSpanish
page, printed folio read from the page(Darwin, 1859, p. 21)(Darwin, 1859, p. 21)
page, folio inferred from its neighbours(Darwin, 1859, p. [21])(Darwin, 1859, p. [21])
page, roman folio(Woolf, 1929, p. xiv)(Woolf, 1929, p. xiv)
leaf foliation(Cervantes, 1605, fol. 1r)(Cervantes, 1605, fol. 1r)
a page without a printed number(Darwin, 1859, n. pag.)(Darwin, 1859, s. p.)
range(Darwin, 1859, pp. 21-22)(Darwin, 1859, pp. 21-22)
time in a recording(Cortázar, 1977, 1:09:20)(Cortázar, 1977, 1:09:20)
slide(Gould, 2024, slide 3)(Gould, 2024, diap. 3)
verse(Milton, 1667, vv. 234-240)(Milton, 1667, vv. 234-240)
canonical reference (CSL year −375)(Plato, 375 BC, 514a)(Plato, 375 a. C., 514a)

Two authors are joined with and in English and y in Spanish (e before the sound /i/, as the Spanish norm asks); three or more become et al. A page without a printed folio is never cited by its position in the file disguised as a page number.

Full bibliographic references are exported as CSL-JSON (always) and BibTeX, so any CSL style (Chicago, APA, MLA, ISO 690…) can be applied with citeproc, Zotero or Pandoc.

Anchor URIs

Every passage can be pointed at with a portable URI that survives renaming and copying the file, because it names the document by the SHA-256 of its original bytes:

spdf:sha256-3f2a9c…#p=29&f=21&char=118,301

The parameters follow W3C Media Fragments and RFC 5147 where they overlap: p physical page, f printed folio, t seconds, s section path, sl slide, v verse, ref canonical reference, char character range, xywh region in percent. The full grammar is in the specification.

Citing from your writing tools

  • Pandoc: write [@spdf:sha256-3f2a9c…#p=29] in Markdown and the Pandoc filter turns it into a real citation with the printed folio, in any CSL style.
  • Zotero: the Zotero plugin imports the CSL record of an SPDF as an item, attaches the file and copies a citation with the folio.
  • Agents: the MCP server gives any agent a cite tool that returns the citation, the anchor URI and the quoted text together, so it cannot cite a page that does not say what it claims.