In general it has been a godsend. Never again do I have to care about formatting while writing documents!! And when I do care about formatting there is a plethora of online materials online.
However, there was one niche where LaTeX didn't quite fit my ideal workflow: note taking.
I generally write my notes in a series of bullet points
LaTeX's sections, subsections, and their deeper sub counterparts revolutionized my organization. For the first time my notes were actually comprehensible upon returning to them, not just scattered asides with various whitespace between, now I could properly group them into their own sections. There was just one problem, once I went deeper in a section depth I couldn't go back to a higher level.
Lets say I am in a lecture about human prehistory. We are going over the initial discoveries of ancient relics, when we get to a series of slides about the Piltdown Man hoax. The next series of bullet points are all going to be related so I start a new subsection. Then a few slides later we go back to the discussion of non-hoaxed relics. Do I make a new subsection called "relics continued"? No, then the prior notes and current notes are at differing levels. Do I place all my notes above the Piltdown Man section? This works better, but is non-chronological and becomes tricky if there is another subsection I need to add later. Do I refactor my notes to completely change the grouping while struggling to add new notes at the same time? (No answer warranted)
I wanted a way to go back up a level and LaTeX's system didn't really allow it. There were also a few other things that bothered me. The indenting never really made sense in my notes pages, but I would never remember to set up no indentation in my template document. The whole concept of pages wasn't needed for something that would never be printed, and would leave my headings floating on the end of the previous page. The syntax was consistent, but clunky, and not necessarily easy to remember while also trying to pay attention in class.
For a semester I tried switching to markdown, but never loved the syntax and the lack of sections made me fall into bad habits of disorganization. Something about the asterisk being the way to start a bullet point never quite felt natural and needing to end each line that required a new line with two spaces was frustrating, not aided by not being able to see the spaces; At least with LaTeX I can see the \\ to signify the new line.
As I've been playing around more with HTML, I have realized how versatile it can be, even for non-web related documents. The only problem is that writing HTML by hand is not exactly comfortable, sure it can be made easier with Vim shortcuts, but it somewhat takes me out of the flow of writing when I have to think about which tag this should be in and all the various arguments. This is one of the major upsides of markdown after all, being able to write in more or less plain text but with the ability to easily convert to HTML.
A few weeks ago, around the start of the new semester, I decided to fix my problem. I started writing Notex (like "not LaTeX" and "notes" which is what it was originally designed for use with). I started with writing out a sample document, seeing what I liked in terms of syntax, thinking up new features as I was writing. When I landed on a nice balance of easy typability and parsability, I started writing the code. In a few days I had a mostly working version, just in time for class the next day to try it out.
I could not have made a better decision!! Immediately it became second nature for me, typing away my bullet points and making my new sections. I no longer had to think, which allowed me to stay focused and take better notes.
Any line that does not start with one of Notex's special characters will be put in an HTML p tag. If there is more than one newline between two lines of non-special-character-prefixed text, they will be separate p tags.
\ The same goes for lines that start with a \ character, but it will place the line verbatim. So if you wanted to write HTML for the end document, or wanted to start the line with a special character then it will be placed in the document.
- hyphens are used for unordered lists
. and periods for ordered lists
{
Anything between the braces will be in a subsection
{
And they can be infinitely nested
}
}
My favorite feature I've implemented are plugins. There are 3 different plugin scopes:
plugins can be called with /@pluginName:arguments or just /@pluginName, or for elements that effect the head section of the html document !key=@pluginName
For example with the theming of the document I have a document scope plugin named "dark" so to set the style I have !style=@dark. When it is called, it determines the deepest subsection level and it creates the relevant css, placing it in the style section in the head.
For images I use the single-line level plugin, "img", which is called by /@img:/path/to/image,extra_args=foo
And for generating timestamps I have the in-line plugin /@now
At first this was only going to be for notes, but with how much I enjoyed writing in Notex, I remembered my dissatisfaction with the current tooling for posting here. When I was still getting it ready for launch in the Winter 2023, I created a python script so I could automatically generate my RSS feed and home page. It served its purpose, but was kinda janky, post descriptions could only be updated after posting by modifying the CSV file that served as my "database", There was no differentiation between drafts and posts, you could very easily add duplicate entries by accident, just in general an unpolished turd.
I rewrote it to use a real database, cleaning up those duplication issues, and now have a separate drafts folder. Each draft is started from a template Notex document. I don't have to write out each tag by hand any more, letting me focus on writing. Additionally, with life being busier now, I can pick stop and pick back up on drafts, taking my time or bouncing between a few without needing to publish.
I regularly check my email, If I don't respond quickly, send me a poke:
jasco.website@pm.me