Erik's Paper Writing Workflow


When I write a paper, it begins as a largely creative processes where I'm trying to effectively convey my scientific contribution. By submission time, I feel like a typesetter tracking down TeX errors, fixing broken references, and changing my figures to f1.eps, f2.eps, etc (James adds: which one can do using this script). I find the typesetting aspect distracting and I put it off as long as possible.


I like to quickly hammer out a rough draft of a paper in a no-frills text editor. I like EverNote because it's easy to throw figures into the document, and since your note is on the cloud, you can work on your paper from any computer.

Move into TeX

Once the paper is nearly done, I'll move it into a TeX document. I like to use TeXShop for Mac because it updates the PDF view of the paper with every compile. I use pdfTeX since I've found it's easier to throw in different sorts of files (.jpg, .png, .pdf). I also like to have these packages in the preamble.

\usepackage{\ensuremath}   % user-defined commands will be typeset in math-mode in text- and math-mode.
\usepackage{\xspace}       % intelligently puts spaces after mathmode.
\usepackage[T1]{fontenc}   % greater-than and less-than symbols don't turn into upside-down question marks

% For example:
%\Rsun Gives the right symbol in text and math-mode.

Version control

I track the TeX source documents (.tex & .bib) and all figures with. The

git diff --color-words

command shows the specific words (not just the lines that were changed).


I use BibDesk to manage my references. Note: this only works on Macs. It's pretty easy to import the bibTeX citation directly from ADS into BibDesk.

Nathan adds: There exists a nice tool to simultaneously import the bibTeX citation and download the associated pdf in one step, called ADS to Bibdesk ( It works on the command line out of the box, but you can easily turn it into a service that you call from a web browser. This package also comes with a script that can update all pre-prints in a bibliography by adding the references to their peer-reviewed versions and downloading those new journal articles, if they have become available on ADS.


This obviously depends on how savvy your collaborators are. I'll email a .zip file of my TeX source to my collaborators and instruct them to edit the TeX source directly, reminding them that I've got version control running so I'll see all their changes. I'm keeping an eye on the ShareLaTeX product. It promisses to make working collaboratively on a TeX doc like a working on a Google doc. I'm not quite ready to use it yet, but I think it has promise.

Josiah's Paper Writing Workflow


Workflows are personal. The two factors that most strongly shape my own workflow is that my editor of choice is emacs and that I do not work in large collaborations. (It doesn't hurt that I like to tinker.) The emacs learning curve can be quite steep, but because I do so many different things in it, small increases in proficieny have a magnified impact. Also, I tend to be easily distracted, so the fewer times I switch between apps, the better. Instead of desribing things in gory detail, I just tried to give a general overview. If you have specific questions, or want to see something in action, swing by my cube, D-343. I'm usually happy to talk about such things.

Write an Outline

The first thing I do is write an outline using [org-mode]. This is a a plain text draft of the paper, though I do write the equations using TeX. Once things are reasonably converged, I export my org-mode file to TeX, using built-in exporter. This converts my outline headings into LaTeX sections, among other nifty things.


Use Version Control

I start a git repository with the rough draft TeX file from the previous step. When I send a draft to a co-author, I make a branch for him/her, incoportate the comments when I get them back, and then merge this back into my master branch.

TeX Editing in emacs

I use [AUCTeX] which the default emacs TeX editing mode. It has all sorts of goodies: easy math-mode editing, cross reference support, commands for creating environments, etc.



I do not have a solution I'm completely happy with here. I tend to make an ADS private library for each paper and then export to BibTeX occasionally. I've played with both BibDesk and Papers and not been all that happy with either (though I do like Papers for reading/emailing).