Foadsf/vintage-latex: Twenty LuaLaTeX and MetaPost Examples of the Old Scientific-Paper Look
Twenty LuaLaTeX and MetaPost (fiziko) examples of the old scientific-paper aesthetic: engraved plates, star charts, computed log tables, knots, telescopes
At a glance
- What is it?
- A set of standalone .tex and .mp files that reproduce engraved plates, computed log tables, star charts and knots. Each example is meant to be copied and compiled on its own, not installed as a package.
- Who is it for?
- Adopt this if you want to study or borrow individual mechanisms for a vintage-looking page and you already have a working TeX Live with LuaLaTeX, MetaPost and the external fiziko library. Do not adopt it if you were looking for a LaTeX style or class package you can load with a single usepackage line, or if you need a documented, versioned interface: the README says each file is deliberately standalone and tells you to copy one and remove effects.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 43 days ago.
- What is it written in?
- Mainly PowerShell, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 22, 2026, and from our analysis. They are not legal advice.
Star history
- Foadsf/vintage-latex438 ★ · +22
| Repository | 2026-09-21 | 2026-10-22 |
|---|---|---|
| Foadsf/vintage-latex | 416 | 438 |
22 Stars in the last 31 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What the twenty examples are actually for
This is not a template you fill in. It is a reference collection: twenty small files, each isolating one mechanism behind a convincing old-scientific-paper aesthetic. The README states that every file is deliberately standalone, and that the intended workflow is to copy one, compile it, and remove individual effects to see what they contribute. That framing matters more than the gallery. If you want a finished document, this is the wrong shape of project. If you want to know how a nineteenth-century logarithm table gets its ruling, or how a star chart maps right ascension and declination onto a polar grid, the answer is sitting in a single file you can read end to end.
The audience is narrow and specific: people who already write LaTeX and want period typography and period illustration in the same document, without leaving the TeX toolchain. The examples split into three groups, and the split is the most useful thing in the README. Files 1, 2, 4, 5, 6 and 10 to 14 are pure LaTeX pages. Files 3, 7, 8 and 9 are standalone fiziko MetaPost figures. Files 15 to 20 are LaTeX pages with fiziko figures drawn inside them by LuaTeX's built-in MetaPost. Those three groups have different build requirements, and mixing them up is the first thing that will waste your afternoon.
How the layers fit together: LaTeX, Lua, TikZ and fiziko
Three distinct rendering paths appear in the repository, and they are not interchangeable.
The first is ordinary LaTeX plus TikZ. Example 02 builds deterministic irregular strokes and line hatching in TikZ, with the labels kept as real searchable text rather than baked into the drawing. Example 12 grows snow crystals from TikZ Lindenmayer-system grammars, using six rotated copies of one arm to supply the hexagonal symmetry. Example 14 hatches sections at forty-five degrees and draws numbered leader lines. Nothing here needs Lua or MetaPost; it is TikZ doing what TikZ does.
The second path is Lua computing content at compile time. Example 10 is the clearest case: a five-place table of logarithms whose every digit is computed by a Lua function during compilation, set in lining tabular figures with the ruling of a nineteenth-century table. Example 11 converts right ascension and declination to chart coordinates for thirty-four catalogued stars through one macro, with hour circles lettered in roman numerals and magnitude-graded discs. The data flow is one-directional: source values in, typeset output out, no external data files mentioned.
The third path is fiziko, the external MetaPost library by jemmybutton. In the standalone .mp files, fiziko draws the figure and you get a graphic. In files 15 to 20, fiziko runs inside LuaLaTeX, so the figure is drawn by LuaTeX's built-in MetaPost and its labels are set in the page's own text and math fonts. Example 07 is the one worth reading closely: the ray paths through a glass lens are computed by fiziko's refraction macro rather than drawn to a predetermined focal point. Example 16 does the same for a Keplerian telescope, where the focus and the exit pupil are found where computed rays cross the axis. That is a real difference in kind. The figure is a consequence of the geometry, not an illustration of it.
Installing nothing, compiling one file
The repository has no install step, because there is no package. Top-level entries are build.ps1, build.sh, examples/ and preview/, plus the usual metadata files. The README does not document a TeX Live package name, a tlmgr invocation or a release archive, so treat the source tree as the distribution.
You need a TeX distribution with LuaLaTeX, and for the fiziko examples you need the external fiziko MetaPost library available to your TeX installation. Start by compiling a pure LaTeX example, since it has the fewest dependencies. Run it from inside the examples directory; you should get a PDF whose optics plate is hatched in TikZ and whose labels remain selectable text in a PDF reader, which is the point the README makes about keeping labels searchable.
For the standalone MetaPost figures, the input is a .mp file rather than a .tex file, so the compile command is different. The output is a figure, not a page. The repository also ships build.ps1 and build.sh at the top level; the README does not describe their flags or behaviour, so read the script before running it rather than assuming it takes arguments.
The most interesting first real use is one of the integrated examples, where fiziko draws inside the document. Here the wooden wedge, the shaded ball and the resolved weight are drawn by fiziko during the LuaLaTeX run, and the labels come out in the page's text and math fonts. If that compiles, your fiziko setup is correct and the remaining integrated examples should behave the same way. If it fails on a missing MetaPost macro, the problem is fiziko, not the example.
Where this collection will fight you
The standalone-by-design rule is a strength for reading and a liability for maintenance. Twenty files means twenty places where a font choice, a colour definition or a margin setting lives. There is no shared preamble to fix once. If you build a real document by copying mechanisms out of several examples, you own the reconciliation work, and the repository offers no guidance on combining them.
Dependency weight is the second constraint, and it is uneven. The pure LaTeX examples need a normal TeX Live. The fiziko examples need an external library that this repository does not vendor. That library is a separate project with its own release cadence, so a change there can break examples 3, 7, 8, 9 and 15 to 20 without anything changing in this repository. The README points to it as an external link and gives no version pin, which means there is no stated compatibility contract to check against.
Then there is the licence. The repository is reported as NOASSERTION, and a LICENSE file exists at the top level. NOASSERTION is a scanner result, not a licence term. Before you lift code from an example into something you ship, open that file and read it, because the README says nothing about licensing and the examples are meant to be copied.
Finally, consider the failure mode of the aesthetic itself. These are period pastiches. Example 01 reaches for OpenType old-style figures, historical ligatures and an explicit long s. That is a deliberate choice with a cost: long s in body text is unreadable to most modern readers, and old-style figures in a data table can be the wrong call. The README's advice to remove effects one at a time is really advice to decide which ones earn their place. Treat every mechanism here as opt-in.
Alternatives, and why you might pick one
The obvious alternative is plain TikZ with a manual preamble. TikZ is already a dependency of several examples here, including 02, 12 and 14, so if your needs are hatching, leader lines and geometric construction, you are not gaining much from this repository beyond the worked examples. The difference is that TikZ gives you a drawing language and leaves the period look to you, while these files encode specific decisions about stroke irregularity, hatching angle and label treatment. You are borrowing taste, not capability.
A second alternative is a dedicated LaTeX document class for historical or book-style typography. That inverts the trade-off: you get a maintained interface with options and documentation, and you give up the ability to see exactly which primitive produces which effect. This project has no class, no options and no documented interface, which is precisely why its examples are readable and precisely why they are hard to maintain.
The third alternative is a general scientific-plotting library, for example pgfplots, which one example here already uses. Example 13 is a pgfplots chart on sepia graph paper. If your goal is a correct chart with a retro palette, pgfplots plus styling gets you there. What it will not do is compute a refracted ray path the way fiziko's tracing macro does in example 16, where the focus is found where computed rays cross the axis. That is the case where this repository is doing something the alternatives are not.
Maintenance, licence and what to check before you depend on it
The repository is not archived, and the last push was on 2026-09-09. There are no retrieved releases, so there is no version number to pin against and no changelog to read. If you vendor a copy of an example into your own project, you are taking a snapshot of a working tree rather than a release, and you should record the commit you took it from.
Upgrade cost is dominated by the external dependencies, not by this repository. A TeX Live upgrade can change font handling, and a fiziko update can change MetaPost macro behaviour. Both sit underneath the examples. The practical check is to recompile the examples you actually use after any toolchain change, starting with 15, since it exercises the integrated LuaLaTeX plus fiziko path in one file.
On licensing: the repository is reported as NOASSERTION and ships a LICENSE file. That combination means you cannot infer terms from the metadata. Read the file itself, and if the terms are unclear for your intended use, ask someone qualified rather than guessing. The README does not discuss licensing at all, and the examples are explicitly presented as things to copy, which is exactly the situation where you want the terms settled before you build on them.
Editorial conclusion
Adopt this if you want to study or borrow individual mechanisms for a vintage-looking page and you already have a working TeX Live with LuaLaTeX, MetaPost and the external fiziko library. Do not adopt it if you were looking for a LaTeX style or class package you can load with a single usepackage line, or if you need a documented, versioned interface: the README says each file is deliberately standalone and tells you to copy one and remove effects. Before committing, verify which example actually compiles in your TeX Live, confirm the LICENSE file's terms since the repository is reported as NOASSERTION, and check that fiziko is installed for examples 3, 7, 8, 9 and 15 to 20.
Frequently asked questions
Is Foadsf/vintage-latex a LaTeX package I can install?
No. The README describes twenty deliberately standalone files that you copy and compile individually, and the repository has no package installation step. You work from the source tree.
What do I need to compile the fiziko examples in Foadsf/vintage-latex?
The fiziko MetaPost library, which the README links as an external project. Examples 3, 7, 8 and 9 are standalone .mp files, and examples 15 to 20 draw fiziko figures inside LuaLaTeX, so both paths need that library present.
Can I combine several Foadsf/vintage-latex examples into one document?
Nothing in the README describes a shared preamble or a supported way to merge them. Because each file is standalone, combining them means reconciling their font, colour and margin settings yourself.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/foadsf-vintage-latex)Star history chart for your README
[](https://hysenlabs.com/projects/foadsf-vintage-latex)