# Byrne's Euclid rebuilt in MetaPost, with the diagrams still editable

> byrne-euclid is a MetaPost and TeX rendition of the first six books of Oliver Byrne's coloured Elements of Euclid. The project is explicit that it is not a facsimile, and the interesting part is the reusable LaTeX package behind it, which is designed so that anyone can make new geometric proofs in the same visual language.

**jemmybutton/byrne-euclid** — MetaPost + TeX rendition of Oliver Byrne's "The first six books of the Elements of Euclid"

- Repository: https://github.com/jemmybutton/byrne-euclid
- Stars: 1,313 · Forks: 128
- Language: TeX
- License: GPL-3.0
- Published: 2026-10-19 · Updated: 2026-10-19 · Language: en
- Canonical page: https://hysenlabs.com/projects/jemmybutton-byrne-euclid

## A reconstruction, and the project says so first

byrne-euclid is a MetaPost and TeX rendition of Oliver Byrne's The first six books of the Elements of Euclid, the famous edition that printed its diagrams and proofs in colour instead of leaving the figures to the reader.

The README sets expectations in its second paragraph, and that paragraph is the right place to start. This project is not intended to create the exact copy of the original, but rather is an attempt to implement all its most important features in a way that would allow easy modification and creation of similarly styled geometric proofs.

That is a different goal from facsimile reproduction, and a more useful one for anyone still working in TeX. Byrne's design is a system, not a set of pictures: colour carries the meaning of a proof, a figure is composed from a small vocabulary of marks, and the letters that label a point are part of the drawing rather than a caption. Reproducing the pages as images would preserve the look and lose everything that makes the approach reusable. Rebuilding the system in MetaPost gives you the look and the system, and accepts that some of the original's quirks will not survive.

The audience is therefore the person who wants to write a new proof in that style, or to typeset an existing one, rather than the collector who wants the original volume.

## The package is the product and the book is the demonstration

The most important structural fact about the repository is that the code has been factored out. At the moment, all the code for this purpose exists as a standalone LaTeX package, byrne-latex, it is on CTAN, and it can be used by employing \usepackage{byrne}.

That changes what the repository is for. The book files, byrne-en-latex.tex and byrne-ru-latex.tex, are an application of the package rather than the package itself. Anyone can take the package and typeset their own geometry, and the Euclid edition is the worked example that proves the package can carry a whole book.

The naming follows the convention of LaTeX packages: the package is byrne, the class is byrnebook.cls, and the MetaPost library is byrne.mp, with a separate lettrines directory holding the initials generator. The top level also holds books11-13-en-latex.tex, which is the material for the later books, and a deprecated directory for files kept for reference.

The author is explicit about the reuse case, describing the project as an attempt to implement all its most important features in a way that would allow easy modification and creation of similarly styled geometric proofs. That is the same sentence that tells you the project is unfinished in the right way: the parts that are not yet general are the parts that are still tied to the book, and the parts that are general have been pushed into the package.

## Tufte's small letters, and the layout cost they carry

Beyond merely reproducing Byrne's original design elements, this version features some improvements over the original, and the first one is a specific suggestion from Edward Tufte in Envisioning Information.

The improvement is a mechanism to add small letters to Byrne's colourful diagrams. In the original, a point in a figure is identified by a letter that is part of the drawing's visual language, large and coloured to match the construction. Tufte's argument is that a reader can follow a diagram more easily when the points are also labelled in small text, so the figure carries its own key instead of requiring the reader to hold a correspondence in their head.

The implementation detail is the interesting part. This feature is turned on by default in the Russian version and can be turned on with one line in the English version, save for some layout changes which arise due to letter designations taking more space.

So the toggle exists in both editions, and the reason the English version is not on by default is not reluctance but geometry. Adding labels to a point consumes space in a figure that was already laid out for a specific shape, and in the English edition the original layout does not always have room to spare. The Russian edition was set with the labels on from the start, so the figures were drawn to accommodate them.

That is a nice illustration of what this project actually is. A diagram in Byrne's style is not an image with a caption; it is a construction whose geometry, colour choices and label placement are all decided together, and adding a feature means re-solving the layout rather than overlaying a layer.

## Generated initials, so no two are the same

The second improvement is typographic, and it is the more unusual one. This edition features generated initials and vignettes, so there are no two identical initials in the whole book.

Book initials, the decorated capital letter at the opening of a book or a part, are normally one of a small number of drawn designs reused throughout the edition. Generating them means the code draws a new one for each occurrence, and the vignettes, the small ornamental marks, are produced the same way.

The status of the feature is stated honestly. It is pretty much work-in-progress, and, when ready, that is when it starts producing satisfactory results, it is likely to become a part of the fiziko library, the author's own library for this kind of generated graphical work.

The directory layout backs that up. The initials generator is lettrines.mp, it lives in its own lettrines directory with its own build step, and it is a separate artefact from byrne.mp, the MetaPost library that draws the diagrams themselves. The split is logical: one generates ornamental letterforms for the book, the other provides the geometric vocabulary, and the plan is to fold the former into a general purpose library once it is good enough.

The licence split follows the same logic, which is worth noting before you copy anything.

## Building the book, and the package version trap

Building is two commands, and there is a catch in the second one that the README goes out of its way to explain.

To build the book, you run lualatex byrne-en-latex.tex or lualatex byrne-ru-latex.tex within the book directory, and to generate the initials you run mpost lettrines.mp within the \lettrines directory.

```bash
lualatex byrne-en-latex.tex
mpost lettrines.mp
```

So the pipeline is LuaLaTeX for the text and the layout, and MetaPost for the graphics, which is the natural pairing: MetaPost produces PostScript that LaTeX includes, and it is the standard tool for mathematics typesetting with computed figures.

The catch is the package version. You need the latest version of the byrne LaTeX package to build the book, since the CTAN version is somewhat old and the author says a new one will be uploaded. The fix is given explicitly: clone the byrne-latex repository and copy the byrne.* files to the book directory.

That instruction is the whole deployment story, and it tells you where the project actually lives. CTAN holds a frozen copy that lags the working repository, and the book in this repository depends on the newer one. If you take the package from CTAN you get a version that works for small documents and may not build the book.

For the outputs, the README points in two directions. Prepared PDFs are in the releases, and it notes that at the moment they are an older ConTeXt version, which is a leftover from an earlier implementation of the book. Fresher PDFs are produced by the GitHub Actions workflow, unless they are expired, which is the usual fate of artefacts in a CI run.

## Two licences in one repository, and they are not interchangeable

The licence situation is split, and the split follows the code rather than the book.

The book itself, byrne-en-latex.tex, and its Russian translation, byrne-ru-latex.tex, are licensed under CC-BY-SA 4.0. The MetaPost library, byrne.mp, and the initials generator, lettrines.mp, are licensed under GPLv3 or later. There is a COPYING file at the root of the repository, and the README states the two terms separately.

The reason the split is sensible is that the two halves have different shapes of reuse. A book file is content: you can read it, translate it, adapt it, and publish it under the same terms with attribution and share-alike, which is what a Creative Commons licence is designed for. A MetaPost library is code, and it is the part you would embed in a document class, redistribute inside a template, or modify for your own geometric vocabulary, which is what a copyleft licence addresses.

The practical advice for anyone who wants to use this in their own work is to decide which half you are taking. If you are writing your own proofs in Byrne's style with the package, the GPLv3 terms on byrne.mp and lettrines.mp apply to the code you redistribute, and the CC-BY-SA terms apply only if you reuse the book files themselves, which would carry the share-alike obligation to the derived book.

The repository is licensed GPL-3.0 in the metadata as well, which reflects the code side. Nobody involved in the project describes this as an oversight, and the two paragraphs in the README are clear enough to act on, but it is the kind of detail that is easy to miss and awkward to discover later.

## Conclusion

This repository fits a typesetter or educator who wants Byrne's visual language for their own geometric proofs, and it is the LaTeX package rather than the book that carries the long term value. It does not fit someone who wants a faithful scan of the original volume, since the README says the opposite explicitly, and the Russian edition and the initials generator are both works in progress. Before you start, clone byrne-latex and copy the current byrne.* files into the book directory, because the CTAN version is old enough that the book will not build against it as it stands.

## FAQ

### Is byrne-euclid a faithful reproduction of Oliver Byrne's Elements of Euclid?

No. The README says the project is not intended to create the exact copy of the original, but rather is an attempt to implement all its most important features in a way that would allow easy modification and creation of similarly styled geometric proofs.

### How do I use Byrne's diagrams in my own LaTeX document?

The code exists as a standalone LaTeX package called byrne, published on CTAN, and it is used by employing \usepackage{byrne}. The latest development version is in the separate byrne-latex repository, and the CTAN version is described as somewhat old.

### How do I build the English and Russian editions?

Run lualatex byrne-en-latex.tex or lualatex byrne-ru-latex.tex within the book directory, and run mpost lettrines.mp within the \lettrines directory to generate the initials. You need the latest byrne package files copied into the book directory, because the CTAN version is old.

### What licences apply to the book and the code?

The book files byrne-en-latex.tex and byrne-ru-latex.tex are under CC-BY-SA 4.0, while the MetaPost library byrne.mp and the initials generator lettrines.mp are under GPLv3 or later.

### What does the small letter feature in the diagrams do?

It adds small letters to Byrne's colourful diagrams, a mechanism inspired by Edward Tufte's suggestion in Envisioning Information. It is on by default in the Russian version and can be turned on with one line in the English version, save for layout changes caused by the letters taking more space.

## Sources

- [Issues](https://github.com/jemmybutton/byrne-euclid/issues)
- [jemmybutton/byrne-euclid on GitHub](https://github.com/jemmybutton/byrne-euclid)
- [License: GPL-3.0](https://github.com/jemmybutton/byrne-euclid/blob/master/LICENSE)
- [README](https://github.com/jemmybutton/byrne-euclid/blob/master/README.md)
- [Releases](https://github.com/jemmybutton/byrne-euclid/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/jemmybutton-byrne-euclid
