LaTeX Stuff



Many logicians have a section on their homepage where they offer unsolicited remarks about LaTeX. Here are my unsolicited remarks about LaTeX.

LaTeX Projects

My love for LaTeX started in 2016, when Bas van Fraassen asked me to digitize his Formal Semantics and Logic, which was quite a task. Of course, if I were to do it today I would do it differently. I still have the source files somewhere, but I am afraid to look back at them. What a project to learn LaTeX with. Perhaps at some point I should put the project on GitHub.

And here is some other stuff since: I have a few other little projects/experiments in the works, but which are currently in private repositories. I'm happy to share in person, but also, some will likely be made public soon enough—when I am less embarrassed about their condition.

LaTeX Workflows

I have a fairly advanced LaTeX workflow, about which I have sometimes been asked. I here offer some remarks that may be of use to someone either getting started or thinking about modifying their workflow.

Level 0. For beginners, I always recommend Overleaf, which is by far the easiest entrypoint—no installation, thousands of templates, cloud storage and compiling, etc. Let a LLM hold your hand through it and you can get far. I know people writing dissertations with Overleaf.

Level 1. For people who would rather work locally, I always recommend TeXstudio, which offers lots of useful menus and toolbars and buttons. In order to work locally – i.e., compile locally – you need to install TeX Live on your local machine. I recommend installing using the curl command, because then, at least on Linux, you get access to tlmgr, the TeX Live Package Manager. Other people get quite far with other editors, like Texmaker, LyX, and others, but I always preferred TeXstudio.

In my own case, I found two reasons not to use Overleaf: I sometimes work without an internet connection, and I need my custom macro files stored in one place. Overleaf requires that you copy your macros into each separate project, and things can get out of hand fast (see the README here). And I found two reasons not to use TeXstudio: I no longer had (much) use for the toolbars (and I wanted better keybindings), and I was tired of keeping track of whether my flash drive was in my laptop or desktop (again, see here). TeXstudio does not provide easy cloud integration, and at the time I was not super proficient at Git.

I use Linux (see here for more on that), so of course most of my problems could have been solved in MacOS or Windows, with iCloud or OneDrive, or else with another Linux-compatible cloud storage service. But the ability to publicly host stuff especially weighs in favor of GitHub, as do version control and collaboration management. Plus, as I am already hosting my personal website on GitHub Pages, it just makes sense to keep everything in one place.

Level 2. For a good while I used VS Code with the LaTeX Workshop extension (plus others) – which works much the same as TeXstudio but without so many toolbars, and with the possibility of more keyboard shortcuts and customizations. VS Code also has an excellent GitHub syncing feature, which makes syncing repositories just a few clicks away, in both directions. Also, when signed in to GitHub in VS Code, all your customizations sync across any machines you're signed in on. My LaTeX projects (including my homepage!) could live in various private GitHub repositories, and on each of my computers my GitHub repositories could be cloned on my desktop. This way, when I would sit down to work, I would just open VS Code, sync anything that was unsynced, and get to work; and when I was done, I could sync again back to remote. And whenever there was a chance I would have to work without an internet connection, I would just sync my laptop before.

But once again, in my own case, I started to feel VS Code's limitations. It's clunky and cluttered, I found myself discovering bugs in my favorite extensions (which I did not have the time or inclination to get involved in fixing), and the GitHub syncing feature is still not as smooth as it should be. Eventually, I just decided to construct GitHub syncing scripts that I could run in the terminal (see here); and by that point, I was actually just getting tired of needing a mouse or trackpad at all.

Level 3. As of the Fall of 2025, I am tinkering more and more with both Emacs (with AUCTeX) and Neovim (with VimTeX). This was prompted by conversations with Ed Zalta about his Emacs workflow, during which I experienced profound jealousy. I am deep enough in that I can see the light. I don't want to need a mouse or trackpad anymore. Yes, I have many custom keybindings in VS Code, and it's a big time investment to learn and configure Emacs and Neovim, but over time these do actually promise to eliminate years worth of petty frustration. I have my bash scripts for syncing, and I am locked in. My working Neovim configuration is here, and at some point I'll likely publish the Emacs one, too—although at this point I appear to be favoring Neovim.

Level 4. I'm aware of editors like Helix, which, like so much software coming out of the Rust Revolution, do promise big gains along several dimensions. I'll also mention Typst here, which a student with the most beautiful homework submissions you've ever seen recently told me about. But they're all still too immature to be all that useful for a specialized workflow like my own. If I didn't have time to fix VS Code extensions, I definitely do not have time to learn Rust. At least Elisp and Lua promise to be robust against the plate tectonics of C and Rust, however the Rust Revolution ends up shaking out.

Level 5. Vi.