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 benefit greatly 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.
Edit: I should probably mention that I primarily use Anki on my desktop. The smartphone app might not be as good, though I wouldn't know because I haven't given it a good try yet.
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 online. 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.
That looks really nice!
However, for me a flashcard app is one of the apps where I don't want to use commercial offerings if the source code isn't available as well. It involves just too much set up time to have it vanish one day.
I totally agree with the idea of having it all vanish. I’m still building it out, but I’m working towards an ‘eject button’ where you can download all of your notes into a CSV and get out of dodge if you choose!
This won't really help. The point of an SRS is the scheduling information. Even then, you may not have a compatible system to make use of the scheduling info. The switching cost is immense, and I would personally need an ironclad guarantee that the tool cannot be taken from me, such as by having the source code. Never going to be using a non-self hosted SaaS for this, sorry. There is a lot to dislike about Anki but the good thing is it will be only taken from my cold dead hands.
I'll give it a test run :) I probably will not be a convert, but I love seeing people spin up new SRSes. It's a surprisingly vast design space, and Anki is pretty maximalist within it.
Pohtia also means to ponder in Finnish, not just Norwegian, fun fact!
Very surprising… never thought this this way. How can you guy even thought of this. Using anki for language learning and latex, vim … how can this even occur to your mind … really wonder.
I actually did use Anki for Vim, lol. I started by putting the tips in Practical Vim in, then a few easy Vim Golf questions to remember how to do some advanced maneuvers.
I use this approach also and it has served me well now for many years. What I really like is that you can break out of the classic 'flashcards' mindset and don't even necessarily need to have it 'test' you for anything all that difficult. Often times, I want the note to mostly capture my thinking and be available for later reference, so I cloze out a simple word that I'll always recall. Then it's not hard to go through during my reviews, and even if I don't remember exactly what it said without prompting, I'll know I can find the note with a quick search.
I have never heard of Anki used for live notes in class. I find that surprising because Anki cards are said to be good if you use them to capture quanta of understanding. While you can make cards on whatever facts or understanding statements made explicitly in class, I find it hard to believe that you would be able to create those novel long range understanding cards during class.
And you can't create those cards for existing cards. You need more comprehensive notes (like your class notes) to create those cards.
I use both Vim (with wiki.vim, a plugin I've made based on Vimwiki) and Anki. I find the combination is very powerful!
I keep a journal for work related stuff and a wiki/personal knowledge base for everything (both work and personal). I use Anki to memorize things I believe may be useful to have readily available and I use my wiki as an extended "long-term memory", sort of.
I'm interested in learning this workflow... are there any YT examples that you know of? I just can't see how it would work in my head. Are you using the "Add" screen to constantly add cards using hotkeys?
My workflow will probably seem a bit clunky since I try to make the notes as good as possible. That can mean spending anywhere from 10 seconds to 3 minutes writing a note if I intend to memorize it. And yes, this is all through the "Add" screen.
Obviously, if you're in class, you can't really spend that long on a single note. So in class I would usually just take notes (in Anki) without thinking about it too much, then rewrite them when I got home.
When browsing the web, I'll usually take screenshots (not bookmarks! though there are benefits to those too) when I see something interesting if I don't feel like putting it into Anki immediately. Then once or twice a week I'll go through my screenshots folder and either make proper flashcards or one-sided notes (which sometimes just means dragging the screenshot to the add window and pressing "add") of the stuff in there.
When watching a tutorial, I'll pause often and take my time writing notes if I feel like it's important. Otherwise I'll just take screenshots and decide later what I'll do with it, like above.
When it comes to tags, I'm hesitant to recommend the following because it's probably not "objectively" the best practice, but I organize my notes mainly by decks, and I don't bother at all with tagging them. I just found that it was too much of a hassle having to tag every card with multiple tags.
The key is really about finding joy in making the cards. I agree that the "Add" window isn't the most joyful experience, but I can live with it. Oh and I'll sometimes play around with stable diffusion to generate images to help me remember some of the stuff. Of course this will make creating cards take even longer, but it certainly adds to the fun!
The pitfall to watch out for with Anki is that it can become very time-consuming and feel like a burden when you have too many reviews. This might be something everyone has to figure out for themselves by trial and error, but if you're just using it to take notes without trying to memorize them, it's not something to worry about.
While I don't know of any Youtube videos dealing with this very specific thing, I think The Anking[1] has some of the higher-quality videos when it comes to Anki in general.
Either way, I'd love to hear about other people's workflows.
I’m speculating there could be a more ergonomic workflow combining the vim-latex flow from op and this comment(and the reply). I know you can import anki decks like a .txt(?)(or similar), so I’m imaginig a ‘flow where you live write notes in the ~.txt file and later just import it to anki. It might be a hassle to set it up all but seems way better than using the Add interface, and also I prefer latex over screenshots (but I get that ss is just more convenient for some situations)
I love Anki, but my main gripe is the UI is just so bad. That said I truly believe I would not have graduated from college without it, and I'm forever grateful.
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.
> 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.
I'm using neovim with UltiSnips (and VimTeX), and I don't really have any big issues with it. I'm not saying you are wrongm but I do think the problem may be somewhat exagerated.
That's interesting. My problem is very similar to the issue I labelled [2] above --- where there would be more than a second of delay in interacting with some snippets.
But somehow this suggests to me that I might have been doing something wrong. I use vim+ultisnips+(your excellent vimtex) while you use neovim. Out of curiousity, do you specifically set your python provider for your neovim in your config?
> But somehow this suggests to me that I might have been doing something wrong. I use vim+ultisnips+(your excellent vimtex) while you use neovim. Out of curiousity, do you specifically set your python provider for your neovim in your config?
Yes, I do. I use a dedicated virtual environment for neovim which I create with the following snippet; then I set the `g:python3_host_prog` accordingly [0].
I'll go ahead and say that neovim is bad. Any reason to use neovim has long since past.
I didn't start the editor wars, but the neovim team jumped in with both feet. They deserve the ire of those of us who never wanted to see vim forked in the first place, let alone a half-assed broken "neo" version.
Taking notes in math courses in Vim on a netbook (remember those?) is what made me switch to Emacs! I tried taking notes both in LaTeX and in Markdown with syntax highlighting for embedded LaTeX math formulas, and Vim just lagged behind my typing —and I'm not that fast a typist. In the case of LaTeX this is a well-known problem that's addressed in the manual (see :help tex-slow). I tried all the tips the manual suggested and Vim still lagged, the only thing that fixed it was turning off syntax-highlighting completely. On a whim I tried Emacs, saw it was perfectly snappy (like Vim with non-LaTeX files) and switched.
This is a serious problem with some Vim plugins and plugin interactions; the user doesn't feel like they've done anything wrong, and yet text insertion is absolutely sluggish. Tex plugins in particular combined with text folding seem prone to this problem.
For the record though, this slowness has nothing to do with Vim itself, or the low power of the netbook; it is purely due to inauspicious interaction between specific plugins and can be fixed at the .vimrc level if you are willing to debug.
I was using a third-party plugin for markdown (I think it was called pandoc.vim), but for LaTeX files I was using only plugins that come with Vim. The documentation in :help tex-slow did suggest things to put in .vimrc to help make syntax-highlighting faster and I did try all of them. The only thing that solved the lag was disabling syntax highlighting for LaTeX completely.
The slowness I experienced for LaTeX files happened even without any third-party plugins installed, using a one-line .vimrc that only turned on syntax highlighting. So I think it is unfair to say "the slowness has nothing to do with Vim itself". Probably also "or the low power of the netbook" is unjustified, in the sense that the tips in :help tex-slow do likely solve the problem on computers a little beefier than my old netbook (which is probably more than 15 years old at this point). I mean, those suggestions are in the official Vim documentation presumably because they did work for someone.
Think of it this way: if the slowness of LaTeX syntax-highlighting were not a problem in Vim itself (where by "Vim itself" I'm including the vimscript files that ship with Vim, not just the executable), would it be documented in the official Vim documentation?
As the link shows, the syntax section of the Vim manual offers suggestions to increase speed on slow computers for all syntax categories, tex being one of them. That does not mean all those categories are a problem in Vim itself.
However, I do not mean to deny your actual experiences; I have seen all sorts of performance-related craziness that doesn't make sense, and I fully believe you when you say you had slow editing with near-empty .vimrc. I just find it baffling; for instance, here is a sample of my using vim in an older tablet, with latex syntax highlighting, UltiSnips, builtin terminal and w3m browser without any lag:
> As the link shows, the syntax section of the Vim manual offers suggestions to increase speed on slow computers for all syntax categories, tex being one of them. That does not mean all those categories are a problem in Vim itself.
Oh, absolutely! I should have said before that I edited many file types in Vim on that netbook and syntax highlighting was lighting fast on all types except LaTeX. Sorry if I gave the wrong impression. Unfortunately for me, LaTeX is by far what I most wrote at the time, so it was an annoying problem.
> So, baffling discrepancies; I wish software performance was more predictable.
Amen to that! I've even been on the other side of this issue, with some Emacs packages I've written. I've received reports of some operations being very slow that I've been unable to reproduce (even though I continue to use underpowered hardware because I value battery life more than speed —I'm typing this, in Emacs, on a 10 year old Chromebook!).
I don't think this is a big problem with VimTeX; I've worked quite a lot on these things, and my personal experience is that VimTeX is now quite fast both with syntax highlighting and with folding; although for folding, you do want to use the various "hacks" like the manual fold option or a plugin like FastFold.
I started using manual folds with latex. Works fine esp if you have a hotkey/snip for inserting these. % {{{ and % }}} for begin/end for instance. Much faster!
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.
I have always found latex to be a wonderful way to present data, notes, or research but an imperfect way to capture it.
With mathjax, markdown is a near-ideal 80/20. Lately, just firing up Hugo (or any refreshable web interface to markdown) and scribbling away in markdown has been wonderful.
The problem I have with Markdown is its lack of standardization. I know there is CommonMark but CommonMark is a classic case of https://xkcd.com/927/
Every Markdown spec differs from others in one way or the other and there is no way to tell that if the Markdown documents I am writing today will convert to PDF, HTML, etc. in exactly the same way 10 years later as they are converting today.
Two Markdown specs may end up converting the Markdown into different types of HTML and PDF -- sometimes even with semantic changes like nested lists in one spec is broken list in another one. Nothing is more displeasing than seeing a carefully written nested lists appear as ugly code blocks within lists because a different Markdown spec does not support nested lists the same way as the first Markdown spec I was using. This is just one of many examples where Markdown for one spec can break in another spec.
If you are strictly going to stick with Hugo forever, then that's fine. But how many of us can guarantee that we want to keep using the same tool to render our Markdown for ever? I certainly can't! I really wish there was a simple documentation format that with a single spec with a large number of implementations -- something like the C89 of text formats. Is there one?
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).
I have been keeping markdown notes for 10 years and have never had issues. I suspect the last 10 years is a decent predictor for the next 10 years, given the existence of github as a fairly strong touchstone.
I have lately been rendering everything as HTML using hugo + mathjax.
> If you are strictly going to stick with Hugo forever, then that's fine. But how many of us can guarantee that we want to keep using the same tool to render our Markdown for ever? I certainly can't!
The problem I have is that I don't want to lock myself into one single Markdown renderer like Hugo or whatever it uses internally. I'd like the flexibility to change tools later without worrying that the new tool may break the rendered output.
Like I said, not even something as basic as nested lists are rendered the same way by all tools. What is rendered as nested list by one tool is rendered as a broken list with unexpected code blocks interspersed between them.
A single spec consistently implemented by all tools could fix these issues. Sadly such a spec does not exist in the Markdown world. That's really why I was looking for something like C89 of the Markdown world.
That makes sense. I did ninja edit, probably as you were commenting, about how I've been using 10 years and only lately like hugo, but have no issues regardless.
Github has been fairly stable as a markdown center of gravity. That works fine for me too.
For me, I don't find the need for 100 year compatibility to be a stopping point. 10-20 years is far away enough for me, otherwise the perfect becomes the enemy of good.
That presentation is based on Gilles Castel's approach to snippet design. Mine has a fairly different philosophy with greater emphasis on visual representation. For example, my snippets for inverse limit and the empty set:
snippet lim<- "inverse limit" iA
\varprojlim
endsnippet
snippet o/ "Empty set" wA
\emptyset
endsnippet
However, whichever you prefer, I highly recommend looking into the following two snippet classes of mine:
snippet !! "inline math mode postfix" A
\$$0\$
endsnippet
snippet "(\S+)!!" "inline math mode postfix" Ar
\$`!p snip.rv = match.group(1)`\$
endsnippet
snippet "([A-Za-z]+)@@" "Autoformatting common functions" rA
\\`!p snip.rv = match.group(1)`{$0}
endsnippet
Although they are very simple, I am extremely proud of them because they make math insertion so much easier: they turn math mode and calling macros into a postfix call, which is very natural for most of us. Try them and I promise they will help.
To see how nice they are, to display $\log{\log{\log{x+1}}}$:
As a fellow Nord color theme enthusiast and evil moder, I approve of this project!
How do you do the free body diagrams though?
I couldnt see a section for those in the write-up.
I tried something like this when I was in university for Mech Eng.
In the end blasting through 1000’s of pages of paper notes and working examples by hand is what made things stick and helped me pass exams.
Its sort of like the saying “the ability to do the thing but the wisdom not to do it”
I cycled through every notetaking app and ended up on org-mode in end. Fancy tools don’t make you fundamentally better.
And I don’t think beautifully typeset LaTeX will help you learn better. (Although I love LaTeX and my bachelors and masters thesis were written in it.)
Do you review/puruse/read all your org-mode notes straight from within Emacs itself? Do you ever convert them to HTML, PDF, EPUB, etc.? If you do, what tools do you use to convert org-mode to these alternative formats? If you don't, it's alright. Just want to understand your usage pattern.
Where I'm coming from: I used to take org-mode notes sometime back and push them to GitHub. Everyone told me GitHub can render org-mode, so it is going to be a great experience when I want to read my notes later and when I want to share the notes with others. But sadly the GitHub org-mode parser is terrible. Instead of just using Emacs itself to parse org-mode files, GitHub has reimplemented some half-baked org-mode parser in Ruby that breaks in all sorts of edge cases. So I can still write my org-mode notes in Emacs and review them in Emacs but I cannot really share them easily with other GitHub users as the initial claims promised it to be.
I just view in emacd org mode and make use of org-agenda. My notes are only for me. My notes are backed in github but I’ve never wanted to read them on the site.
For documents that others should read and write, I use something else (ms word/ppt/Figma.
For note-taking, I have given up on pure LaTeX. I like to think I am reasonably ok with LaTeX, but if I am trying to be quick, it’s too cumbersome for me. Having to remember “ vs backticks and begin and end tags with lists is frustrating when I am trying to quickly do notes.
I feel that Pandoc+Markdown is pretty much what I want. Markdown is quick at taking notes with a syntax far easier to use on the fly, and I have the ability to use LaTeX math and render with LaTeX if I need it.
I know Markdown has a million standards but I just stick with “Pandoc flavored markdown”.
I hope in a couple of years we start seeing posts like these with Typst instead of LaTeX. It seems like setting this up would be a bit easier since Typst is much more concise than LaTeX.
Typst is likely in a place of needing to convince journals to adopt first. Most of the audience for TeX/LaTeX/etc. are academics. I've noticed a curious pattern in the corporate world of the end product dictating tool usage backwards, even if it isn't best.
For example, I've been in plenty of meetings where an individual will open Outlook or PowerPoint to take notes because deliveries tend to be presentations or emails. Nothing requires this, of course, but the fixed format tends to reach backwards and influence the choice other tools.
As a result, I imagine that note-takers in an academic setting will continue to use LaTeX for notes until the end product can be submitted in something else.
I think it’s this that keeps LaTeX alive, and the fact that as academics we already know it but Typst is a new DSL to learn on top of everything else that our job requires us to do.
There’s also some tooling that makes LaTeX not wholly unpleasant to use like in-buffer previews in Emacs and Detexify for symbol search:
Indeed. It took me less than half hour to go zero-to-hero, with neovim. Incremental preview is absolutely awesome and the syntax is much less \{}\{}\{}\{}\{}.
> The excellent VimTeX plugin is the reason to use Vim over another LaTeX editor.
I agree that the plugin is best-in-class. Whenever I write LaTeX in Vim without the plugin installed I feel incredibly handicapped. (Also the documentation of the plugin is fantastic.)
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...
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
Pretty cool...but I could barely get through the class just from writing with a pencil. I can't imagine trying to take notes AND remember formatting notation and making sure you get everything right while typing, as a little slip and it may not be right and the lecture is already moving on and wait wait wait...don't don't move the board up..awww, now it's behind the...wait, what the hell did I just type. Hang on, what is that notation again, oh right...wait...(backspace 10 times)...okay. Okay, now I'm lost, wtf is he talking about now?
Yeah, this is a "me" problem for sure. But the above scenario was nearly like that when it was just a pencil and paper for me.
I have been using Typst[1] for taking notes on machine learning. The web based editor is fast (updates are instantaneous). The syntax is almost like Markdown. I tried to learn LaTeX but Typst seems to have an easier learning curve.
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 benefit greatly 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.
Edit: I should probably mention that I primarily use Anki on my desktop. The smartphone app might not be as good, though I wouldn't know because I haven't given it a good try yet.
[1]https://github.com/open-spaced-repetition/fsrs4anki/blob/mai...
[2]https://www.youtube.com/watch?v=OqRLqVRyIzc