LaTeX and Neovim for technical note-taking

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • typst

    A new markup-based typesetting system that is powerful and easy to learn.

  • I'd personally consider using Typst (https://typst.app) instead of LaTeX. It has a much more readable syntax and you don't need as much snippets to write it.

    You can use in on their website or run the compiler locally just like LaTeX

  • fsrs4anki

    A modern Anki custom scheduling based on Free Spaced Repetition Scheduler algorithm

  • For note-taking specifically, I've tried everything from plain old pen and paper to more modern solutions like Evernote and emacs (if you can call that modern), but nothing I've come across really beats Anki.

    Although its main selling point is as a program for flashcards with spaced repetition, it comes with pretty much all the features of a good note-taking app, like tags, easy to organize, synchronization across devices (you can set up your own server), good interface for searching through your notes (which are stored in an Sqlite db if that matters), and yes, LaTeX. Not only that, it's also highly extendable with third-party plugins, so if there are features that you miss chances are there's a plugin for it. In other words, you can use it perfectly fine just taking notes. However, where it really shines is in all of this in combination the spaced repetition algorithm, which is now on steroids with FSRS[1][2]. The downside is that for this to be effective for the things you want to memorize, you'll have to write your notes to be suitable for a flashcard, but if you do it consistently you'll soon notice that you can store most of your notes in your head (needless to say, any student would greatly benefit from this). Now, if that's too much work, you can still just use the scheduling to have it remind you of your notes. Either way, even as someone who sometimes goes out of his way to shoehorn everything into Emacs, I can't see a reason not to use anki for note-taking.

    [1]https://github.com/open-spaced-repetition/fsrs4anki/blob/mai...

    [2]https://www.youtube.com/watch?v=OqRLqVRyIzc

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • djot

    A light markup language

  • I know this doesn't solve your problem directly, but I recommend people to try out Djot[0], a markup language from the author of CommonMark.

    Djot has a single well-defined spec, and most of the basic formatting has the same syntax as (a) Markdown, so switching is pretty painless. It has as a main goal to be legible and visually aesthetic as-is, just like Markdown.

    What Djot adds is its _predictability_. Nested formatting, precedence order, line breaks behavior, nested blocks, mixed inline and block formatting, custom attributes are all laid out precisely in the spec in a thought-out manner. Till this day I still can't remember how to put line break within a list item in Markdown (and I'm sure there're more than one way).

    [0]: https://djot.net/

  • datasette

    An open source multi-tool for exploring and publishing data

  • I use Anki the exact same way. After a lifetime of learning I have accepted that I will never read over anything I write for myself voluntarily - so my two options are:

    1. Write an article so good I can publish it and look it over myself later on. I did this last year with https://andrew-quinn.me/fzf/, for example.

    2. Create Anki cards out of the material. Use the builtin Card Browser or even https://datasette.io/ on the underlying SQLite database in a pinch to search for my notes any time I have to.

  • heynote

    A dedicated scratchpad for developers

  • Most of my technical note-taking these days happens inside VS Code. I already have it running, so opening a new window and stripping out the chrome (closing other stuff, hiding sidebars, etc. gives me all I need, _plus_ optional preview depending on on what I'm writing (mostly Markdown these days).

    Another option some of my friends like is Heynote (https://heynote.com), but, again, I can do the same with VS Code...

  • ox-pandoc

    Another org-mode exporter via pandoc.

  • You can use the ox-pandoc library to export from Org Mode in Emacs to 65 different formats (at time of writing) including all the ones you mention.

    For some formats that pandoc does not output, there are also specialised ox-format libraries.

    There are even several exporters to Github-flavoured markdown. I personally find both ox-pandoc and ox-gfm very useful for that purpose.

    https://github.com/kawabata/ox-pandoc

  • ultisnips

    UltiSnips - The ultimate snippet solution for Vim. Send pull requests to SirVer/ultisnips!

  • I always like people's LaTeX-based note taking setups. I'm a mathematician, so I write a lot of LaTeX too. (And I use vim, so I really like vim+Latex workflows).

    It's interesting that this post (or rather, the later post that discusses this) talks about the advantages of UltiSnips. The well-known vim-LaTeX posts written by Gilles Castel (RIP) relied pivotally on UltiSnips.

    It's not just that UltiSnips is a snippet engine. There are many of those (including LuaSnip, the other snippet engine mentioned in the OP series of articles). It's that UltiSnips can dispatch arbitrary expressions to short python code sections, and python has a great scientific library. For example, it's trivial to write a `sympy` snippet that will simplify or compute a given expression and write the output in latex for you.

    But UltiSnips works *terribly* with neovim [1] [2]. Why? Because UltiSnips uses python, and neovim's python interface is 100x slower than vim's python interface. There are design decisions for this and I'm not trying to say that neovim is bad. I use both vim and neovim. But I use vim+UltiSnips+vimtex for writing LaTeX.

    LuaSnip has interpolation too. I suppose it would be possible to write more code that calls from LuaSnip to a system like sympy (or other). But that's work. On the other hand, I think it takes a true power user to actually want or use the fancy interpolation functions.

    [1]: https://github.com/SirVer/ultisnips/issues/974

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
  • FastFold

    Speed up Vim by updating folds only when called-for.

  • Just be aware that the marker based folding can be annoying to collaborators if you are working on documents with other authors. With a plugin like FastFold [0] you should be able to have fast folding with the expr foldtype.

    [0]: https://github.com/Konfekt/FastFold

  • dotnvim

    Personal neovim configuration (by lervag)

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts