How I Write - My Writing Software

Mon, Oct 9, 2017

Are you ready to learn about the overly complicated system I use for my writing? I’m not sure that I would be, but apparently a few of you are desperate to find out. At least, that’s what I’m led to believe by the overwhelming number of requests (there were three) I’ve had to write this series of articles.

The plan is to talk through some software and hardware that I use for writing. There will also be some bits on motivation and inspiration. I hope that it might prove useful to other budding writers (and be vaguely interesting to everyone else).

Today we are going to look at Emacs, the software in which I do my writing. Whenever I tell people this, I usually get asked one of two questions: “What’s Emacs?” or “Why don’t you just use Word?” We shall endeavour to answer both these questions but do keep in mind that these are my personal opinions and that I’m not an Emacs expert.

Let’s start with the second question first, “Why don’t you just use Word?”

Word is a perfectly fine program. I have friends that have written entire books and PhD theses in Word. In no way am I denigrating Microsoft Word. Now that we’ve cleared that up, let’s talk about why I don’t want to use it.

I have used word processors in the past to do writing. Microsoft Word was one of them. I also used OpenOffice and LibreOffice. LibreOffice was my preferred word processor, but I found that none of them satisfied my writing needs. My main issue was with planning. I don’t feel that Word Processors are set up for planning out stories. My solution had been to create a ‘master document’ that listed the names of other documents in the project. These documents included location descriptions, character sheets, story notes and the story file itself. This way of doing things worked well for me, but I found that doing it in a word processor was usually quite slow.

Another problem I had with word processors is that I could never get documents to look truly professional.

This led to my next experiment. Instead of doing everything in a word processor (which is both for writing and formatting), I tried to use different programs for different parts of the writing process. I continued to use LibreOffice for planning, but I tried to do my actual writing in a ‘distraction free text editor.’ These are minimalist text editors that generally take up your whole screen and try to keep you focused on writing. I was never totally sold on this concept, but I gave it a go using a program called OmmWriter. Once I had written my text, I would then manually format it in a typesetting program, called LaTeX.

I found that distraction free writing did not particularly improve my writing speed or enjoyment (though many people swear by this sort of tool). The typesetting was fantastic though. LaTeX is an incredibly powerful tool and I have a deep love for it. Amazingly, it is free software. However, it is also essentially a programming language and has a steep learning curve. I consider myself quite technically minded and it still took me the better part of a year to feel totally comfortable with it.

So, for a while, I started writing directly in LaTeX. I even wrote most of my PhD thesis this way. This isn’t a great idea. It’s not an awful idea, but it’s not a great idea. The problem with writing directly in LaTeX is that it splits up the text with a lot of programming code. This makes it unpleasant to edit and time-consuming to cleanly convert to other formats. For example, if I want to publish a story on a website, I need to manually convert all the text from LaTeX into something the website will accept. There are automated programs for LaTeX that attempt to do this, but I did not have great success with them. LaTeX also isn’t great for planning anything. I was getting increasingly fed up with having to open word processors and LaTeX at the same time and having to switch between them and really just wanted one program that could do everything.

The first program I tried to use for this was Scrivener. Scrivener is a fantastic program. I would say that most writers should probably just buy Scrivener and use that. It does everything that I can imagine most writers would want. It has perhaps the best story planning features of any program I’ve used, it can output to various formats, and it is a joy to write in (even including a distraction free mode if that’s your sort of thing). I used Scrivener quite happily for several years and even wrote the first drafts of a couple of novels in it. For most of that time, my only real issue with it was that I still preferred the typeset output of LaTeX and would often manually convert these large swathes of text once I was done with a draft. This was quite time-consuming. The same was also true of publishing to the web. But I was willing to forgive all that because Scrivener was so enjoyable to plan and write in.

So why did I change?

Eventually there were two issues that made me leave Scrivener and they are probably not important to most writers. The first is that Scrivener stores your work not as one file but as a series of files in a folder. This makes it a bit more of a hassle to back up and keep different drafts. One day, one of the files in a project became corrupted and Scrivener was unable to recover, requiring me to go through all the files in a different editor, manually extract all the text, then start a new Scrivener project and rebuild everything.

The second issue I had is that Scrivener only runs on MacOS and Windows. I was becoming increasingly inclined to do my writing on the move. In fact, as you’ll find out in a later post, finding a great portable writing computer has been a dream of mine since I was very young. As I attempted to use smaller and smaller computers for writing, I was finding that they generally didn’t run Windows or MacOS. I boldly attempted to write in whatever text editor these computers had available (manually adding the text back into Scrivener when I returned home) but it was a painful operation. Also, not having access to my planning documents while writing on the move proved to be very unproductive.

So, after this long journey, I had discovered my what I needed from my writing tool:

  • It must work on most operating systems
  • It must output to any format I choose with minimal manual input (write once, publish anywhere)
  • It should include good features for planning
  • It should be enjoyable to write in
  • It should be contained within one interface

Scrivener was certainly the tool that came the closest to achieving these rather demanding goals, but it was still short on the first two. I think we have also fully answered the question of why I didn’t just use Word.

Now onto the second question: What’s Emacs?

Emacs is a tool I was already loosely familiar with, but not for writing. During my degree in Computing Science, we had been given a brief introduction into two text editors called Emacs and Vim. We had been told that both could be used for programming and that, although they each had a steep learning curve, we could assume they would work on any computer that we were ever likely to use. As such, we were encouraged to learn them to ‘future/past proof’ our programming tool-set. I, like most of my fellow students, learnt them well enough to prove I could use them, then never used them again. It’s not that these tools are bad (far from it), but they take a significant amount of time to learn. Once you know them well your efficiency is likely to be extremely high, but in the middle of a degree with coursework constantly looming over you, you don’t feel you have time to muck about with that sort of thing.

When searching for a new tool to satisfy the conditions above, Emacs and Vim floated back into my mind. I read up on them (more so than I had done at University) and found that they dated back to the earliest days of computing, had been worked on and improved for just as long, and were now extremely powerful and efficient tools (once you got to know them). Also, they both seemed to work on most computers that ever existed or were ever likely to exist. Each of them has various pros and cons over the other, but it was a particular feature of Emacs that intrigued me.

Emacs has a feature called OrgMode that makes it act a bit like a Wiki. You can easily create hyperlinks between documents and structure text with headings and basic formatting. More interestingly, this is all done in pure text, with OrgMode simply interpreting the results for display. Emacs itself also features the ability to have multiple files on screen at once. Taken together, this meant that I could still use my ‘master document’ system from years ago, but now I could actually click on the names of files to have them immediately open in another pane in the same program. This may seem like a small victory, but the potential power underlying OrgMode goes far beyond this. With a bit of setup for each project (which Scrivener would have done for me automatically I suppose), I could mimic all of Scrivener’s features and be using a system that worked on most operating systems.

The last part of the puzzle was getting Emacs and OrgMode to output to other formats. Well, it turns out OrgMode has a bunch of exporters built in to do most of the heavy lifting for me. The only problem is that my master document setup made it difficult for OrgMode to know which files to include in the output and how they should be merged together.

This is where things get even more insane. Emacs has a programming language built right into it at a fundamental level. In fact, most of Emacs is actually just smaller programs written in that language, all working together to make the larger program that is Emacs. Therefore, I could just learn that programming language, write a few programs of my own to deal with the output formatting and voila: all my criteria were met.

I have attempted to avoid getting too technical in this article about how my Emacs/OrgMode setup works. As this series of articles progresses, you will eventually have enough information to mimic my entire writing setup (if you really want to). I think that’s enough for one article though.