Chemtool is a small program for drawing chemical structures on Linux and Unix systems using the GTK toolkit under X11. A short and possibly outdated description of the available functions is available here.
Chemtool relies on transfig by Brian Smith for postscript printing and exporting files in PicTeX and EPS formats. Its companion program, XFig, is recommended for enhancing the output of chemtool, and for creation of 2D diagrams and schematics in general. Both are included with most distributions of Linux, and are available through a number of websites including www.xfig.org. If you want to import chemtool drawings into word processing programs other than LaTeX, you will probably want to add a preview bitmap to them, as neither StarOffice/OpenOffice nor that software from Redmond seem to be able to display postscript inserts on screen without them. For this purpose, using either ps2epsi, which comes with ghostscript, or epstool, a part of gsview is recommended. Since chemtool-1.6, this option is supported directly (through the equivalent function offered by recent versions of transfig).
Chemtool was originally written by Thomas Volk, then a student of chemistry and biology at the university of Ulm, Germany. His version, which was described in an article in the german periodical LinuxMagazin, was using plain X11.
I became involved in development shortly after reading this article, adding a few bond types and such, and gradually took over from him as he was lacking time due to his exams drawing near, and probably generally moving on to other things. Note that i am not doing this alone - much of the progress is due to contributions of code, translations, examples or just ideas.
A more recent review of chemtool appeared in Nachr. Chem. Tech. Lab.
49 (2001) 1310-1314.
As Thomas Volk continued to host the project web pages for a long time, this page here is still a poor excuse for a webpage, mainly just a point to gather new versions. This will change... i promise. :-)
The "development snapshots" at the bottom of this page are usually not (intended to be) less reliable than the "released" version - they just may contain incomplete new features, or features that may be gone again in the next snapshot if they prove to be unnecessary or too hard to implement correctly.
Please contact me at
firstname.lastname@example.org if you have any questions or suggestions.
History of pre-1.5 changes
This is just an interim release to fix a crash bug in all output modes based on fig2dev. Also included is an update to the build scripts to facilitate building on ARM64 targets, and autodetection of recent versions of openbabel for im/export should work again.
This release consists mainly of fixes for bugs that were exposed by recent versions of the gcc compiler, linker and X11 libraries - failures to build the program or to enable translations with the generated Makefile, and most importantly a bug that led to an immediate crash at startup on at least Fedora16. Also included is a new export module for the asymptote program and smaller fixes (entering Unicode symbol characters by cut-and-paste, saving/exporting to file paths containing spaces).
This release contains another round of fixes for label positioning and clipping of bonds around labels. The pen color button has been replaced by a drop-down menu, and a "white" pen for drawing on colored backgrounds has been added. Chemtool now automatically resizes its main window on small (netbook) screens, and it can also be used in an non-interactive mode to create postscript (etc.) output from previously created chemtool structure files. The Polish translation has been updated, and a new Bulgarian translation has been added.
This release contains numerous fixes for label positioning and sub/superscript kerning. Bond length and zoom factor are now stored with the drawing, bond clipping of multiple bonds was improved and new special key sequences for circled plus and minus symbols were added. The configuration dialog now lists gtklp among the supported print commands. Source layout and build system were reorganized to make addition of translations easier, and a Portuguese localization file was added.
This release adds PNG export, round brackets, text output in east-european locales and some new templates. Several bugs related to special character handling in GTK2, screen display of labels and exporting to EPS and SVG have been fixed. The configuration dialog has been redone and now includes support for kprinter, and the labeling shortcuts no longer interfere with
This release adds PNG export, round brackets, text output in east-european locales and some new templates. Several bugs related to special character handling in GTK2, screen display of labels and exporting to EPS and SVG have been fixed. The configuration dialog has been redone and now includes support for kprinter, and the labeling shortcuts no longer interfere with GTK's menu accelerators.
This release fixes several issues with right-justified labels and drawing of triple and quadruple bonds.
This release fixes a bug (crash on startup) that was exposed by gcc 4. It also adds detection of the recently released OpenBabel 2.0 and the ability to use Openbabel for exporting to foreign file formats. Subscript encoding in the SVG export was tweaked again to work around current limitations in the SVG support of Firefox 1.5 and Konqueror 3.x.chemtool-1.6.8, sourcecode in tar.gz format
This release fixes several serious bugs related to label rendering and printing that occured (only) when chemtool was built with GTK 2 instead of GTK 1.2 (characters being invisible or printed on top of each others)
To make this more than just another bugfix release, and because the development cycle for 1.7 is taking longer than intended, i have added some of the improvements from the 1.7 alphas:
NOTE: gcc 4.0.x apparently miscompile chemtool when the "-O2" optimizing option is used (as it is by default) - the resulting binary will crash on startup. If you need to use gcc-4, either compile it without optimization (remove the "-O2" option from the Makefile before running "make") or change the declaration of "const char *fontsizelabel" in line 2983 of file main.c to a "static const char*" UPDATE: This is actually not a gcc bug, but an error on my part that somehow did not usually lead to failures with older compilers. Instead of changing the declaration of fontsizelabel, change the "15" in the declaration of the bondnums array (line 2981) to a "22" or wait for 1.6.8 (thanks to Richard Guenther / Michal Marek).
chemtool-1.6.7, sourcecode in tar.gz format
chemtool-1.6.7-1.src.rpm, source rpm package
chemtool-1.6.7-1.i586.rpm, SuSE 9.1 binary rpm package (using GTK 1.2)
chemtool-1.6.7-1.i386.rpm, SuSE 8.2 binary rpm package (using GTK 1.2)
chemtool-1.6.7-1.x86_64.rpm, SuSE 9.2 binary rpm package for AMD64(using GTK 2)
This release fixes the stupid bug that made the molfile preview crash immediately. It also corrects the rendering of wiggly (unknown stereochemistry) bonds and adds a sample .sdf file.
chemtool-1.6.6, sourcecode in tar.gz format
chemtool-1.6.6-1.src.rpm, source rpm package
chemtool-1.6.6-1.i586.rpm, SuSE 9.1 binary rpm package (using GTK 1.2)
chemtool-1.6.6-1.i386.rpm-SuSE81, SuSE 8.1 binary rpm package (using GTK 1.2)
This release fixes several issues with MDL molfile im- and export, adds sdf file reading/browsing, v3000 molfile format reading and molfile preview as well as a Dutch translation (Myckel Habets) and FreeBSD portability fixes in the configure script.NOTE: due to a silly last-minute editing blunder, loading any mdl molfile (except V3000 format) will cause an immediate crash in the previewer code with this version.
This version adds support for compiling with GTK 2.x and fixes a few issues with arrowhead sizing on curved arrows and some more cases of bad label placement. Also, a set of amino acids has been added to the template widget.chemtool-1.6.4, sourcecode in tar.gz format
This adds portability fixes for 64 bit systems (particularly AMD64) and OS X (Darwin). Also, the sum formula / molecular weight calculator has been updated to handle the second and third row of transition elements.
chemtool-1.6.3, sourcecode in tar.gz format
chemtool-1.6.3-1.src.rpm, source rpm package
chemtool-1.6.3-1.i586.rpm.SuSE91, SuSE 9.1 binary rpm package
chemtool-1.6.3-1.i586.rpm.SuSE90, SuSE 9.0 binary rpm package
chemtool-1.6.3-1.i386.rpm.SuSE82, SuSE 8.2 binary rpm package
chemtool-1.6.3-1.i386.rpm.SuSE81, SuSE 8.1 binary rpm package
more rpm packages will follow soon
This is basically a re-release of 1.6.1 with the bugfix for exporting
right-justified labels applied. (The last two items on the list of changes
below are specific to 1.6.2., however).
As there had already been quite a number of downloads by the time the bug was noticed, this seems to me to be the cleanest solution. (Even with rpm's versioning, having both good and bad packages circulating via local mirrors would be a bad idead, and the problem is even more pronounced with the simple tar archive.)
chemtool-1.6.2, sourcecode in tar.gz format
chemtool-1.6.2-1.src.rpm, source rpm package
chemtool-1.6.2-1.i586.rpm, SuSE 9.0 binary rpm package
chemtool-1.6.2-1.i386.rpm.SuSE80, SuSE 8.0 binary rpm package
Fixes and enhancements in chemtool 1.6.2 over 1.6
chemtool-1.6, sourcecode in tar.gz format
chemtool-1.6-1.src.rpm, source rpm package
chemtool-1.6-1.i386.rpm, SuSE 8.0 binary rpm package
chemtool-1.6-1_rh9.i386.rpm, Red Hat 9.0 binary rpm package
chemtool-1.6-1_rh9.src.rpm, Red Hat 9.0 source rpm package
Debian package (at packages.debian.org)
package for Russian ALT linux distribution (Russian language page at altlinux.ru) package for Russian ALT linux distribution (English language page at altlinux.org)
chemtool-1.5, sourcecode in tar.gz format
chemtool-1.5-1.src.rpm, source rpm package
chemtool-1.5-1.i386.rpm, SuSE 8.0 binary rpm package
chemtool-1.5-1mdk.i686.rpm, Mandrake 8.1 binary provided by Dominique Burget
This adds a proper configuration dialog for the database settings.
This adds runtime support for fig2sxd (export to OpenOffice Drawing format) and reading and presenting of optional property data (typically CAS numbers) found in sdf files.
This version fixes a (harmless?) gdk assertion in the query result preview, and adds a preview dialog for browsing MySQL results (SDF browsing was already in a1). It is now possible to redisplay the results of the most recent search.
Molfiles were exported upside down in some cases, and hydrogen count was off by one. The sdf preview was counting one entry beyond the end of the file.
There is now a new export option to append to existing sdf files. Adding and removing of (sdf) properties is now possible.
Made MySQL result preview actually work. Added automatic retrieval of all property entries from table "mol" of the database when a result is chosen. Fixed compilation without MySQL. Corrected several memory overflow bugs in the database access code.
Added a menu option to save molecules in a MySQL database - this automatically brings up the property dialog with all the fields in the "mol" table and uses checkmol to fill in the fingerprint data in the "molstat" and "molfg" tables.
Added a MySQL database creation dialog. Fixed a bug that caused properties to always be retieved from the first database. The spacing between the lines of a double (triple,...) bond is now configurable.
Fixed non-MySQL build. Fixed xfig/eps/sxd exports when compiled with GTK2 (character width was reported as zero, resulting in all characters being placed on top of each other). Made color button image wider. Export modes now report the actual number of bonds and labels written, previously the total was given even if only parts were marked.
Fixed the screen rendering of multi-character subscripts in the gtk2 build. Corrected vertical placement of labels. Fixed a crash in the database creation function. Added "update entry" menu option for replacing the most recent hit in the database.
Modified the database insertion functions to not leak mysql handles on error, and to store (or replace) the corresponding molfile only after all database operations completed successfully. Property names are no longer displayed as editable in the 'show properties' window. Updated the INSTALL document.
Added more MySQL data types to the database creation dialog. Added a simple property search widget.
Combined all search widgets into a single menu option and dialog for searching any of the available sources for the current fragment and/or a database-specific property.
Added xmlns specification to the svg file header. Moved superscripts a bit farther up in the xfig and xfig-based output formats. Fixed misdetection of fig2dev version that could lead to the generation of full-page Postscript instead of EPS files with gtk2 in some locales.
GTK2 fixes for screen rendering of symbol characters and for a GTK2 color selector crash. New keyboard shortcut Shift+Keypad to draw electron pairs as pairs of dots. Fixed several multi-line format strings that modern gcc refuses to handle. Corrected SVG output of 'radical dot'.
Added two new bondtypes for drawing filled and unfilled p orbital lobes.