Research and Publication Tools

Here I will cover my favorite set of tools to do research and development, and also generate high quality publications. I do most of my development work on Mac OS X, but most of the tools are cross-platform to some degree. I use a lot of open source tools, the open source model is well suited to certain types of software, although in some cases the commercial tools are superior. You will have to judge if the benefits justify the costs. In many instances the communities that are built around a tool is a significant benefit, either open source or commercial. For document publishing, I fully embrace the PDF format and vector graphics, when at all possible. There are several advantages to using vector based content and it would make many people’s lives easier if people got into the habit of providing content in this format. That being said, rasterized graphics have their place, especially in web content as SVG is not ideal and not fully supported yet, and photographic images. For rasterized graphics I tend to use the PNG format.

Firstly, typesetting: I use the MacTeX distribution of . This is really the most popular distribution for Mac and comes with just about everything you will need to work with latex. It is built upon TeX Live, which is available for most operating systems, and also includes a collection of useful tools. Latex provides consistently good looking text, graphics, and layout with superior mathematical typesetting and a plethora of packages to add functionality. The learning curve is not incredibly steep, but is very long. To get up a going with latex is not too difficult, you can create a nice looking paper or article with knowledge of just a few commands. The downside to being so consistent is that it is somewhat difficult to tweak the way that things are laid out or rendered. The syntax and semantics are somewhat unusual for people with a background in modern programming, however, it is not too difficult to pick up. The latex site provides links to a few good resources. I also recommend getting a reference to the symbols and a cheat sheet to quickly look things up once you are comfortable with the language.

There are several ways to go about editing your latex documents. I am a fan of the TeXShop program for Mac. It is a simplistic editor, but it has a few useful features, such as easy access to documentation, a panel to easily insert symbols, the ability to create and use macros and templates, and some others you might find useful. I have also been using the texmaker IDE. If you are used to the WYSIWYG paradigm and do not want change, LyX is an excellent tool. Also, if you can bear to use emacs (*shudder*) then check out TeXmacs or AUCTex. LaTeXiT is a great Mac tool for quickly rendering a chunk of latex to copy into your PowerPoint/Keynote (Till Tantau would be disappointed), or anything else that supports PDF. There are numerous other tools out there, and numerous other reviews.

Latex also makes managing your references easy. The BibTex format and tools provide a convenient way to organize your references into a pseudo-database and use them in your latex documents. I use the BibDesk tool for Mac. The JabRef tool is also a nice cross-platform tool.

Microsoft Word 2008 deserves a mention here. It has a new symbolic typesetting engine that is vastly improved and quite good. It also has good support for managing references, although I have not used it much. It also has the advantage of integration with other Office tools and the WYSIWYG interface, if you prefer that. TextWrangler is another great, all-purpose text editor for Mac.

Another very important part of publishing is the creation and editing of graphics. As I said before I prefer to use the PDF and PNG file formats. Mac is convenient for manipulating PDFs since PDF is a native copy format allowing you to copy and paste vector content between programs. Also the Preview program that comes with OS X allows you to easily extract content from PDFs and generate new PDFs and PNGs. Depending on the type of graphics you will be generating, different tools may suit your needs. For data plotting gnuplot is the standard. Gnuplot can read large amounts of data from files and plot them in a variety of styles. It can also plot functions inline and annotate plots. Gnuplot can output to a variety of formats including several that are directly (or indirectly) usable in latex documents. Although OS X supports X11, there is a tool called AquaTerm which is able to act as a front end for rendering plots. At the time of this writing it is not able to interact with gnuplot to rotate plots with the mouse, etc. If statistics or data manipulation is critical, you may want to check out R and Grace as well.

The MATLAB environment is a good tool for manipulating matrices of data, especially useful for engineering and signal processing. However, the cost of MATLAB is prohibitively high for me, so I use the open source alternative Octave. Octave is a great tool that rivals the power of MATLAB in many respects. It uses gnuplot as its plotting engine and provides some higher level functionality for plotting, at the cost of some flexibility. As this will most likely be my primary tool for signal processing, I will surely have more on this later.

There are also several packages that allow drawing from within latex. The state of this area is not too good. PdfLaTeX has been around for quite some time, however, many tools still rely on packages like pstricks to generate postscript content. It can be a real pain converting back and forth between file formats, so I tend to avoid it whenever possible. The PGF/Tikz packages provide an excellent environment for drawing within your latex document. It is a very powerful tool that produces very nice looking graphics. The learning curve is a bit steep, but the paradigm is similar to latex. The project distribution comes with a manual which is invaluable, I recommend reading through the tutorials, start-to-finish. Once you have a grasp on the environment, texample.net has a decent collection of examples with code.

If drawing graphs (not plots) is something that you may find useful, the Graphviz suite is the standard for graph layout. The syntax is fairly simple and easy to pick up, however a pretty thorough knowledge is required if you really want to tweak the layouts. The dot2tex tool allows you to convert graphviz graphs into PFG/Tikz code which can be embedded in a latex document. This is great for embedding graphs in your document or typesetting the graph labels in latex. Also, the dot2texi package allows you to embed your graphviz code directly in the latex document.

Inkscape and Adobe Illustrator are good tools for editing vector based graphics directly. I prefer to use Inkscape. ImageMagick is also a good tool for doing some basic image manipulation operations directly on files and converting between formats. It is also a dependency for a few other tools.

Jon