I’m a week into my senior year, and I’ve gotten sick of using OneNote for note taking. As a linux user, I’m pretty much limited to the web interface or WINE, and I’d really prefer neither. I’ve also had plenty of issues with notes not syncing / getting lost in the cloud, which is more than enough of a reason to switch to something else.

Last semester I tried taking notes in markdown, then translating them into HTML using hugo or grip.

I had one issue with markdown though, and that’s how it handles whitespace. The way it ignores leading whitespace and is slow to add newlines is great when I am writing blog posts, but when I take notes I use spacing to group information. My notes are full of things like:

Regular Expressions
	They are cool
	There is this thing called the Kleene Star
		L("it*") = {i, it, itt, ...}
		r** = r*
	Epsilon is a valid regular expression
		2 * 2 = 4 * 1

which renders like this in markdown:

Regular Expressions They are cool There is this thing called the Kleene Star L(“it*“) = {i, it, itt, …} r** = r* Epsilon is a valid regular expression 2 * 2 = 4 * 1

which is no good. I could just use plain text, but when I’m reading my notes, I’d like for things like \epsilon to render as an epsilon. So, ultimately I decided to throw together my own little markup language and a python script to convert it to HTML. It was done in under an hour, and is pretty lazy (to make whitespace nice it just sticks a <pre> at the start…), but it does what I need it to.

This input:

Test Header
==========
Part 1
------
This text is normal
	And white space is safe from distress
	*and you can make text bold*
	_or underline it_
	And you can `toggle *bold* for when you need it`
	You can also escape stars\*
	But a lone backslash doesn't need escaping \
	Nor does a double backslash \\
	And you can use a few math symbols
	r = `"a*"`
		\epsilon \isin L(r)
		"a" \isin L(r)
		\pi is a number

will produce this output:

Test Header

Part 1

This text is normal And white space is safe from distress and you can make text bold or underline it And you can toggle *bold* for when you need it You can also escape stars* But a lone backslash doesn't need escaping \ Nor does a double backslash \\ And you can use a few math symbols r = "a*" ε ϵ L(r) "a" ϵ L(r) π is a number

which is good enough for me. The source is available in my blogwork repo.

Tags: Projects
Part of a series on School.

Leave a comment below! For issues with this website itself, please describe the problem to issues at johnwesthoff dot com.
For urgent questions or comments, shoot me an email (address provided on my GitHub profile).