I have already written about the writing process of a diploma thesis. In this post, I want to focus on some tools I consider necessary. My recommendations have no special order and only stem from personal experience. This post could easily be summarized as Use the right tool for the right job.

Use LaTeX: When writing a thesis, you should focus on the content first before thinking about the layout. LaTeX frees your mind from tedious layout settings. It makes creating consistent layouts easy. I would not recommend using Microsoft Word for creating longer documents. Unless you really know what you are doing, chances are that you will spend a lot of time fiddling around with Word's settings, trying to find out where your graphics went, and so on… If you are not convinced, read Allin Cottrell's article on word processors and John D. Cook's post on contrasting Microsoft Word and LaTeX.

If possible, use vector graphics: With vector graphics (as opposed to bitmap graphics), your document scales better. As a bonus, you don't have to think about the proper resolutions any more. I found Inkscape a very valuable tool. Recent versions (0.48 and newer) even have built-in support for rendering LaTeX markup, which facilitates integration. For a more fine-grained control over the graphics, I used TikZ, a TeX package for procedural graphics creation. In retrospect, I could have done the same things quicker with Inkscape, so be aware that TikZ might be rather time-consuming. I would not recommend using GIMP because it forces you to work with bitmap graphics. Likewise, using Xfig is simply not worth the bother any more. At least for me, everything Xfig does, Inkscape does better (and quicker).

For plotting functions, nothing beats gnuplot and its various terminal settings. Investing some hours to learn the basics of gnuplot is well worth the time, in my opinion. For my diploma thesis, I found the epslatex terminal to produce better results than the pdf terminal, as I did not have to worry about the proper font settings. gnuplot directly leads to my next recommendation:

Use scripts to create scientific graphics: gnuplot allows you to store all commands that are necessary to create a graphic in a simple control file. In conjunction with a data file (of a certain mathematical function, for example), this allows you to create a very flexible graphics workflow:

  • Your graphics remain consistent
  • You only need to do backups of the control files because the graphics can easily be generated
  • The appearance of each graphic remains changeable at all times

Most plotting tools are capable of scripting. If yours is not and you have enough time, it might be worth the hassle to look for another one.

Use a version control system: It might seem like overkill, but a version control system like git frees your mind. When you remove or rewrite a section in your document, the content does not get irretrievably lost. You don't need to create copies of your document for keeping different versions (believe me, I have seen this in practice). In addition, your backup strategy becomes very easy: Simply copy your folder or (in the case of git) create a remote repository. I found the branching features of git particularly useful when giving out parts of my thesis to proofreaders. For each of the readers, I created a new branch. I then proceeded to work again with the master branch, knowing full well that I would be able to merge the changes later on.

Don't worry about the extra overhead imposed by a VCS: Since you are probably the only person working on your thesis, your commit messages don't need to be verbose. Heck, they don't even need to make sense. In the later stages of my diploma thesis, my commit messages sometimes only consisted of a single ..