-
Notifications
You must be signed in to change notification settings - Fork 0
Home
I've always felt the need to journal my progress in the vast field of mathematics. Back in middle/high school, I could still vaguely remember which theorems I've proved and how, and that helped me navigate homework problems with confidence. But as I moved on to university, new proofs appeared all day every day and each result feels less and less memorable. Yet, I had to somehow remember all of them, lest I'll start doubting claims and spiral into a string of googles trying to figure out why they were true.
The solution seems straightforward: just make notes.
But what form should my notes take? Handwritten? LaTeX? Pandoc or some mix of Markdown and TeX? Should it be deployed on a website? After much consideration, I've distilled a few key criteria for the notes;
-
🧭 Navigable. Jumping to different locations in the notes should be as effortless as possible. Ideally there should be a table of contents, and every written mention of a proof should be supported with a clickable link. Bonus points if there's a way to navigate back to the location before jumping.
-
🔁 Reproducible. It must be easy for anyone to clone these notes and rebuild it to produce the exact same output PDF. This helps with future-proofing it and also sets it up well for community adoption.
-
📈 Scalable. As content is added, the build size of the notes should scale reasonably along with it. While it's definitely linear, we try to minimize the coefficient.
-
🎨 Aesthetic. No compromises on the quality of math typesetting. The closer to vanilla LaTeX, the better.
-
✏ Appendable. Adding more content should be a breeze. No matter how big the project becomes, it should be just as easy to drop in anywhere and continue writing.
For years, I've experimented with different ways of combining Markdown with MathJax or KaTeX into a static website. This design choice was motivated primarily by navigability, since it's very natural to create links in HTML. This also allowed me dynamic control over the content, which can be rather useful.
But scaling was a huge issue. The content transfer size of the webpage grew too fast for comfort. With every paragraph I wrote, I always had my mind on how slow the page-load times would get. Just loading the JavaScript framework was >1MB, and any MathJax I wrote on top of that had to be rendered on every page load, so just weeks in it started to creep above 10MB.
Fast-forward to today's mode of writing: LaTeX (pdfTeX to be exact)
assisted by an obsessively complete string-processing tool.
Navigability is achieved through extensive use of LaTeX's built-in
hyperref
pacakge. Reproducibility comes from the timelessness
of the LaTeX project, as with the permanence of the PDF file format. Though as
long as mathematics continue to exist, there will always be a way to convert
plain TeX into a readable format. Scalability is amazing; today,
the book stands at 400+ B5 pages of content but still compiles to just 1.9MB.
Math typesetting is beautiful, since we're dealing with
pure LaTeX (and also committing to using the absolute minimum set of packages).
And finally the ease of writing more is achieved through
scripting.
And so I present, after many failed iterations of the same idea, the math textbook I proudly call ✨minimath✨: a big LaTeX project compiled down to a single PDF, filled with clickable links that point you to where you need to go.