Open Source tools for academic writing

Image from <https://pixabay.com/photos/books-library-education-literature-768426/>

There are a number of blog posts detailing individual setups for academic study using only Open Source software. I found many of them useful, but, as is the nature of Open Source tools, ended up with my own workflow using Markdown, Atom, Pandoc, Zotero, Git and Syncthing.

I almost entirely use Open Software in my work as a web developer and my studies in philosophy. This means the instructions here are Linux centric; specifically, Ubuntu Linux with the Gnome desktop. Most of the tools listed here are cross-platform, so this shouldn't be much of an issue, but some of the specifics might not work if you're running MacOS or Windows.

Markdown

Markdown is not software, but a simple markup format for writing plaintext documents. It is designed to be easy to read and write, but also easily parsed by software so it can be converted to different formats.

Writing in a plaintext format is the key using Open Source software for academic purposes. You are no longer tied to propriety software like MS Office or Apple Pages; which are fine if everyone is using one of them, but not when different people are using different operating systems with different software packages. Using a plaintext format also allows the use of tools like Git that don't handle binary files too well.

Markdown is one of the easiest markup formats to learn and very simple to write. There are plenty of sites giving details on how to write in Markdown, some good ones are:

Atom

To write Markdown you need an editor that can save plaintext files. Any editor should be able to do this and there are a number of editors specifically designed for writing Markdown, but the Atom editor (https://atom.io/) is a very good cross-platform editor that is extremely customisable.

Atom is designed as a general purpose text editor, so it benefits from some customisation. To get it functioning nicely as an academic Markdown editor I use the following extra packages:

  • Atom Shell Commands – for running commands to compile Markdown into other formats without having to move to a command line.
  • File Icons – which provides nicer icons in the tree view.
  • Git-plus – for running git commands without having to move to a command line.
  • PFM – Pandoc Flavoured Markdown support.
  • Markdown Preview Plus - to preview Markdown files.
  • Markdown Writer – provides extra features, such as shortcuts and automatic continuation of lists, for writing in Markdown.
  • Wordcout – does what it says: it counts words.
  • Zen – for distraction free writing.

On top of this I use the Pen Paper Coffee theme. Although I have found a number of annoyances with the theme, so I'm currently using a forked version which contains some changes I made: https://github.com/stephen-cox/pen-paper-coffee-syntax (such is the beauty of Open Source – if you want to tweak something you can).

If you find Atom too fiddly to get working you could try an editor designed specifically for writing Markdown. A couple with good reviews are:

Pandoc

While writing in Markdown is great, there are times when you'll need to convert the text files into a different format; perhaps assignment submissions need to be in Word format or you need a PDF for printing. This is where Pandoc (https://pandoc.org/) comes in. This command line tool converts between many different formats, but the ones I'm interested here are converting plaintext Markdown files to binary formats like DOCX and PDF.

One of the key features of Pandoc is its support for many Markdown language extensions. Key to its use in academic writing is the ability to handle citations and footnotes. The citation management allows the inclusion of references in Markdown text and have them rendered according to a specified citation style with a bibliography included at the end of the page. For this a CSL file (specifying the citation style) and a bibliography file need to be passed to Pandoc, Zotero is able to provide these. Markdown footnotes are included in the text, but are rendered at the bottom of the page, with the numbering being handled automatically.

Zotero

Everyone studying lots of different texts needs some way to manage them and produce bibliographies for an essay or paper. Zotero ttps://www.zotero.org/ is an Open Source citation manager. On top of this is allows you to manage your papers and references along with annotations to these. When working with lots of papers having a way to manage them all, add notes and then generate bibliographies is invaluable.

There are a number of plugins for different editors that help add citations into a paper and then generate the bibliography. But you can also export a collection in BibteX format and have Pandoc read this to generate citations and a bibliography according to style defined in a CSL files and provided by Zotero.

Zotero does far more than just manage citations and bibliographies. A nice feature is the ability to automatically download and store PDF articles directly from a publishers website. Meaning you can download a PDF, categorise it, send it to a tablet to read and annotate, extract the annotations and store them with any notes. Zotero will then synchronise your references and notes with a central store. It will also synchronize all the files using Webdav or there's a paid option to store files with Zotero.

Syncthing

To allow Zotero to send files to a tablet there needs to be some way to transfer them. There are plenty of services that do this sort of thing, such as Dropbox and Google Drive, but for an Open Source solution Syncthing https://syncthing.net/ works well. It doesn't need a central file store and there are apps for most systems; although not Apple devices.

Git

Git https://git-scm.com/ is a version manager for source code, but it will happily work with any plaintext files. It allows keeping a revision of work done. It's easy to push the latest changes to a remote repository meaning there's a backup of it. It also aids collaborative working; no more emailing different versions of files backwards and forwards, just pull the latest changes and push any new edits.

Similar posts

This post as outlined the tools I use when writing, specifically for an academic audience. This is just one way of doing things. Other posts which cover similar ground are:

7th October 2019