Scientific Document Creation with Linux: Notes and Suggestions

by Soren Harward

Work in Progess; last updated 3 Jan 2007

I'm a graduate student in biochemistry, so my research procedures are going to be influenced by the field.

Several of the tools here are written in or otherwise based on Python. Though you don't have to know how to program in Python to use them, I will say that having a good working knowledge of the language has permitted me to make a lot of tweaks to the programs that make my life just that much easier. You will probably find the same; Python's such a useful language that any effort you spend learning it will certainly pay off.


I use pybliographer to keep track of all my research papers. I've found that it helps immensely to store the filename of the PDF (or a URL to its location) in the bibliographic record; just create a new field called “filename” or something like that in the entry. I hope to write a plugin/patch for pybliographic that will launch the appropriate viewer directly from the bibliographic entry, but I haven't gotten around to it yet. I also have a custom field called “tags” where I put my own keywords for the entry. Then I can search through the entries according to keywords I think are important.

When it actually comes time to creating the paper, presentation, or poster, I use FreeMind to do my brainstorming and prewriting organization. It's a lot more flexible than an outline, and looks a lot more impressive when you show someone else how your writing is going.

Text Creation / Layout / Publishing


There is really only one tool for serious [scientific] document creation with Linux: LyX. If you really like typing LaTeX by hand, you're welcome to do so, but LyX has a lot of really nice features that make creating and managing LaTeX documents much more pleasant.

One of the useful LyX features not mentioned in Renker's article above is multiple files. This is a great way to split your really long documents (like a thesis or proposal) into manageable chunks, and then put it back together when you're finished. See section 3.3 of the “Extended Features” help file in LyX.

Also, install RCS and use LyX's built-in version control features (c.f. section 6.3 of “Extended Features”). This is an invaluable feature when your dissertation committee decides that you need to put back in the seventeen pages you chopped out six months ago.


Use the Beamer class for LaTeX to make presentations. It plays nicely with LyX, and helps you give better presentations in the first place.


Posters are a significantly different beast from articles or presentations primarily because you have only one page to work with. I've made a few with Inkscape, but for text-heavy posters I prefer Scribus.

Figure Creation


I have yet to find a really good, easy plotting program. gnuplot is the classic, but it has some annoying limitations (like no error bars on bar charts) that I can't forego. Unfortunately, PyXPlot, gnuplot's heir apparent, doesn't support them either, even though PyXPlot's underlying plotting library, PyX, does support them. I finally just wrote my own python script that reads in a text file and makes a bar chart with error bars. One of these days, someone (maybe me) will submit a patch to PyXPlot to add this feature.

If you don't need this functionality and still dislike gnuplot and PyXPlot, look at HippoDraw. It's a little crankier about the input file format, but has some decent interactive features.


Inkscape is spectacular for creating publication-quality diagrams. Almost every one of my articles and presentations has a figure in it which was made in inkscape, and I've even used it to do the complete layout for a couple of posters.

If your diagrams need to be more flow-chart-ish, take a look at Dia.

Chemical Structures

I use bkchem to draw the basic structures, and then I export to SVG and open the drawing in Inkscape for tweaking. gchempaint is showing some promise, however.


The GIMP. 'nuff said.