Introduction to Org Mode

Note: This article is part of my complete Emacs For Writers series. You are welcome to start here or jump back to the beginning for the full effect. You have the power!

Org Mode is a complete productivity suite integrated into Emacs. Remember when I said in the intro to this course that Emacs is a living environment for manipulating text? Org Mode is a prime example of that. The same text buffers you use to write your text are used for storing and retrieving organizational information from across a series of files.

Imagine having Emacs parse through a series of files for you and give you relevant details about projects, tasks, schedules, deadlines, and calendars.

The full capabilities of Org Mode are far outside the scope of this Emacs For Writers series, but rest assured, you don’t need to know everything about Org Mode to start using it in your writing process. There are a few functions of Org Mode we will take specific interest in. And that’s all we need. These are: the outliner, the syntax, and the exporter.

The outliner

The argument for outlining versus not outlining continues to rage for writers.

  • “Is it better to outline first?”
  • “Is it better to just write and organize it later?”

Org Mode gives you the best of both worlds. You can write, organize, outline, re-arrange, all at the same time. Or you can one, and not the others. Or, you can just write. It’s your choice.

Org Mode uses headings to organize your document. Headings can also be nested under other headings, just like a hierarchical outline. (That’s exactly what it is.) Headings are denoted by asterisks. (And, if you don’t like asterisks, that can be changed.)

* Heading level 1
** Heading level 2
*** Heading level 3

And so forth. Of course, make sure you always nest child headings under a parent heading (obviously). Don’t put a level 2 out there on its own.

Org Mode syntax

Org Mode offers the critical formatting options you will need to make your document more text stand out when necessary. But instead of highlighting and re-formatting text via the interface, you use specific characters to denote changes in style.

For italics, you can use forward slashes like this: I want to /italicize/ that word. In this case, the word “italicized” will be italicized.

For bold, you can use asterisks. I want make the word *bold* stand out. The word “bold” will thus be bolded.

You can also do underlining with underscores. Let's get this _underlined_.

The Org Mode exporter

The world doesn’t want your Org Mode file. In virtually every case, you will want to do some textual alchemy to convert your Org Mode document into some other deliverable format. This is fine. Org Mode can handle that.

You can export to HTML, PDF, Open Office, Microsoft Word, Rich Text Format (RTF), Markdown, LaTex, and more. You can even export an Org Mode document to Org Mode (that’s right).

We will go into more depth on the various export options at a later time. For now, you can see your onboard export options by C-c C-e. This will bring up the “export dispatcher.” Remember the options you see here are only the ones that been pre-selected to appear here. More can be added to this list, and some can be taken away. More on that later.

The tag system

You will often find it helpful, or even necessary, to give additional context to headings in your Org Mode document.

This is why the tag feature exist. Not only can tags be used to give context to headings within your document, you can also use this as a sorting criteria in the document itself, or in your agenda view. (Org Mode agendas are outside of the scope of the Emacs For Writers tutorial, but if you’d like some more information you can check out my video.)

We will be using tags later in this series to “ignore” headings in our exported documents. More on that to come.

For now, just know you can add tags to an Org Mode heading by pressing C-c C-q. You will be prompted for a tag in your mini-buffer.

In the example below, I have two headings, one tagged “rewrite” and the other tagged “noexport.” The “noexport” is a special tag that will exclude that entire section from the final export.

* Spider pit sequence                                               :rewrite:
* Original ending                                                  :noexport:


Now that you’re more familiar with Org Mode, we can proceed to some scary stuff, coding your own configuration file.