The parts of a book

A finished book carries parts its manuscript does not: a title page, a dedication, an index, a list of sources, a note on the author. Press builds some of them from configuration and typesets the rest from Markdown you write.

To see these parts assembled into very different finished books, browse the gallery: a field guide, a poetry chapbook, a monograph, a novella, and a cookbook, each the same pipeline with different config.

Every part is one of two kinds, and the kind tells you where it lives.

A book, front to back

Front matter

  • Half-title & title pageconfig/front-matter.yaml
  • Copyright & colophonconfig/front-matter.yaml
  • Dedicationconfig/front-matter.yaml
  • Epigraphconfig/front-matter.yaml
  • Acknowledgementsconfig/front-matter.yaml

The book

  • Preface or forewordbook/chapters/00-*.md
  • Chaptersbook/chapters/*.md

Back matter

  • About the authorbook/appendices/*.md
  • Also by & further readingbook/appendices/*.md
  • Glossarybook/appendices/*.md
  • Indexconfig/index-terms.yaml
  • Sources & authoritiesconfig/authorities.yaml

Cinnabar marks generated matter; graphite marks the pages you author.

Setting a value

There are two ways to set any configured value. The easy one:

press config set <path> <value>     # validated before it is written
press config list                   # every field and its current value
press config validate               # check the whole configuration

press config set checks your edit against the same typed model that validates a build, so press refuses a bad value before writing anything. The other way is editing the YAML under config/ by hand: same result, but nothing checks it. List and mapping values arrive as JSON, with --json; plain text needs no flag. The configuration reference lists every field.

The byline generated

Who wrote the book. It feeds the title page, the EPUB metadata, and the landing page. author is a list, so pass it as JSON:

press config set author '["Jane Roe"]' --json

Two authors, in the order they print:

press config set author '["Jane Roe", "Sam Okafor"]' --json

The generated front matter generated

Setting any front-matter field creates config/front-matter.yaml, and its presence tells press to generate the title page, colophon, and the pages below. Turning it on makes three identity facts required alongside the title and author — set them together:

press config set copyright "© 2026 Jane Roe" && \
press config set publisher "Old Street Press" && \
press config set publisher-place "London"

Then add the pages you want. Each is optional; a field you never set does not render:

press config set dedication "For my mother, who kept every letter." && \
press config set acknowledgements "Thanks to the librarians of the Bodleian, and to R., who read every draft."

An epigraph is a quote and its attribution; without the quote, the page does not render:

press config set epigraph.quote "We are what we pretend to be." && \
press config set epigraph.attribution "Kurt Vonnegut"

The colophon — the note at the back on how the book was made — has its own optional lines:

press config set edition-note "First edition" && \
press config set manufacture "Printed on acid-free paper." && \
press config set colophon-note "Set in Libertinus." && \
press config set rights-notice "All rights reserved." && \
press config set contact "hello@example.test" && \
press config set motto "Made slowly."

Press lays out the title page, half-title, copyright page, and table of contents; you do not write them. For complete control, an optional tex/title-page.tex replaces the generated front matter. Most books never need it.

The author’s photograph generated

Put a photograph at art/author-photo.jpg. Press engraves it into an author portrait plate in the house style rather than printing the snapshot, so it matches the book’s other art. Set the treatment:

press config set portrait.style "three-quarter engraving, plain ground"

Run the art-direction workflow inside the book to commission the plate, then convert the result to house format:

press art accept art/portrait.png --as portrait

Without a photograph, press still commissions a portrait, but it invents a face from the book’s description; the photograph is what makes the portrait the author. Covers, interior plates, and the logomark follow the same path and have their own guide.

An “about the author” page authored

Press has no about-the-author field: you write this one. Ask press for a back-matter page and it typesets the file with the book:

press add appendix about-the-author     # -> book/appendices/z-about-the-author.md

Files in book/appendices/ merge in filename order, and press add appendix owns the leading letter that places the page — the first back-matter part it makes lands at z- to keep it last, the next at y-, and so on. It refuses to overwrite a page you have already drafted, so running it twice never eats your work. Open the new file, replace the placeholder line, and write. If you commissioned a portrait plate, reference it here as you would any figure.

Also by this author, and further reading authored

Also authored, and a stated gap: press has no “also by” field yet — a cross-book catalogue is planned but not built. Make it a short back-matter page and press places it by filename; add --front if you would rather it sort ahead of the other appendices:

press add appendix also-by              # -> book/appendices/y-also-by.md

A preface, foreword, or introduction authored

These are chapters, not front-matter pages. Ask press for one with --front and it sorts before the numbered chapters:

press add chapter preface --front       # -> book/chapters/00-preface.md

Chapters merge in filename order, so the 00- prefix --front assigns runs ahead of 01- and the rest. Without --front, press add chapter takes the next numbered slot:

press add chapter "The Long Winter"     # -> the next NN- chapter

The title can carry spaces and apostrophes; press makes the filename from it and seeds the heading, so you never quote Markdown into a shell.

Footnotes authored

Footnotes are part of the Markdown you write. Use the standard syntax anywhere in a chapter:

The press was proven on one book first.[^scars]

[^scars]: Every scar in the pipeline was paid for by that first production.

Press renders them per format: the PDF sets them at the foot of the page; the EPUB and web reader collect them as linked notes. There is no separate endnote setting — the format decides where a note sits, and the same Markdown produces both.

The index generated

A page-accurate subject index, generated on every build. You curate the terms; press finds the locations. Create config/index-terms.yaml — a list of terms, each with the patterns that count as a mention:

- term: "movable type"
  match: ["movable type", "moveable type"]
- term: "verification"
  match: ["verif", "proof-read"]

Press searches the manuscript for those patterns and builds the index from what it finds. Delete the file to remove the index.

Press will not print a wrong page number. A term that matches nothing in the text fails the build. Fix the patterns or remove the term; press will not skip it silently.

A glossary authored

Authored, and a gap like “also by”: press does not generate or check a glossary the way it does the index. Make one as a back-matter page and fill it with a Markdown definition list:

press add appendix glossary             # -> book/appendices/x-glossary.md

Not generated yet. Press cannot build or check a glossary against the text today. A generated glossary that works like the index — curated terms, a build that fails on a term it defines but never uses — is a feature to ask for.

The bibliography: sources and authorities generated

Press’s bibliography is a table of authorities: a ledger mapping each claim of fact in the book to the source that warrants it. It lives in config/authorities.yaml, one entry per claim:

- claim: "industrialize verification"
  file: "book/chapters/02-copy.md"
  authority: "Moxon, Mechanick Exercises (1683)"
  url: "https://archive.org/details/..."
  note: "establishes the shop practice the chapter draws on"

The claim is an exact fragment of your text. On every build press confirms each claim still appears — once, in its declared file — and regenerates a standalone Sources and authorities document published beside the book (<slug>-sources.md). Reword or cut a claim’s sentence and the build fails, naming where the claim went, so the bibliography always matches the current text.

Populate it with the authorities-research workflow, run inside the book: it extracts the claims, researches each against web sources, audits them, and writes the ledger. It verifies a sources ledger; it is not a BibTeX or CSL citation engine.

Store and format metadata generated

The small facts that ride into the EPUB, the landing page, and the stores:

press config set description "A short history of proof-reading, and why it still matters." && \
press config set keywords '["printing", "proof-reading", "book history"]' --json && \
press config set lang "en-GB"

description is the one-sentence blurb; keywords is a list, so --json; lang is a BCP-47 tag passed to the formats.

At a glance

Byline

Who wrote the book; feeds the title page, EPUB, and landing page.

config/metadata.yaml

Front matter

Dedication, epigraph, acknowledgements, and the colophon.

config/front-matter.yaml

Author portrait

An engraved portrait plate made from your photograph.

art/author-photo.jpg

Index

A page-accurate subject index; press checks every term against the text.

config/index-terms.yaml

Sources & authorities

Each claim mapped to its source, rechecked on every build.

config/authorities.yaml

Preface / foreword

A chapter that sorts before the numbered ones.

book/chapters/00-*.md

About the author

A back-matter page you write.

book/appendices/z-*.md

Also by / further reading

A short list, placed by filename.

book/appendices/*.md

Glossary

A definition list; authored, not checked.

book/appendices/*.md

Footnotes

Standard [^1] footnotes, in any chapter.

inline Markdown

Checking your work

After any change, three commands show where you stand:

press config list && \
press config validate && \
press check

press config list shows every field with its value, press config validate runs the typed model over the configuration, and press check runs the verifiers — including the index and authorities checks that hold the generated matter to your text.