Can you create diagrams of chemical structures in LaTeX?
Example(s) of "chemical structure diagrams":
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It only takes a minute to sign up.
Sign up to join this communityThe answer is: yes. There is actually more than one package to do that:
I have used all but XyMTeX
and PPCHTeX
myself but nowadays only use chemfig
any more.
XyMTeX
is in my opinion far from being intuitive so I never bothered learning it. It also is not regularly updated to CTAN and not part of TeX Live. CTAN has v4.06 but the newest version is v5.00.
ochem
nearly offers all one needs but 1) is not available from either major free distribution and 2) the work is done by a Perl script that translates formulae and reaction schemes into PostScript, which means it doesn't work with pdflatex.
streeTeX
is just too limited in its capabilities besides the fact that it is rather old, is not available from either major free distribution and also doesn't work with pdflatex.
chemfig
is a rather new and actively maintained package that not only allows to draw skeletal formulae but also has commands for creating whole reaction schemes. It uses TikZ for the drawing.
PPCHTeX
is ConTeXt's chemistry module but it can actually be used with LaTeX, too. I have never used it before and trying to typeset the examples below with it has proven to be more complicated than I thought. That's why I simply copied an example from the conTeXtgarden.
So if you want to draw your formulas and schemes with LaTeX rather than an external program like ChemDraw
I can only recommend chemfig
.
A chemfig
example:
\documentclass{article}
\usepackage{chemfig}
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}
\begin{document}
\setcrambond{2pt}{}{}
\chemfig{
HO-[2,.5,2]?<[7,.7](-[2,.5]OH)-[,,,,line width=2.4pt](-[6,.5]OH)>[1,.7]
(-[:-65,.7]O-[:65,.7]?[b](-[2,.7]CH_2OH)<[:-60,.707](-[6,.5]OH)
-[,,,,line width=2.4pt](-[2,.5,,2]HO)>[:60,.707](-[6,.5]CH_2OH)-[:162,.9]O?[b])
-[3,.7]O-[4]?(-[2,.3]-[3,.5]HO)}
\setatomsep{2em}
\chemfig{
H_3C-[:72]{\color{blue}N}
*5(-
*6(-(={\color{red}O})-{\color{blue}N}(-CH_3)-(={\color{red}O})-{\color{blue}N}(-CH_3)-=)
--{\color{blue}N}=-)}
\end{document}
An ochem
example:
\documentclass{article}
\usepackage{ochem}
\begin{document}
\begin{chemistry}
set("rLenN",20)
formula(L,R)
{
ring(,,H1=)
{
0: bond(r,=C) atom("O") ;
3: atom("N") bond(r) atom("C",C,R) atom("H$_3$",L) ;
4: bond(r,=C) atom("O") ;
5: atom("N") bond(r) atom("CH$_3$",L) ;
vertex(,1,4,H2=,5)
{
1: atom("N") bond(r) atom("C",C,L) atom("H$_3$",R) ;
3: atom("N") ;
} ;
}
}
\end{chemistry}
\end{document}
A streetex
example:
\documentclass{article}
\usepackage{stree}
\begin{document}
\sffamily
\stree{0[2N[0{CH$_3$}]4[=2O]6N[4{CH$_3$}]8[=6O]10]/10N=75N[/7{H$_3$C}]/2}
\end{document}
A XyMTeX
example:
\documentclass{article}
\usepackage{xymtex}
\let\substfont\sffamily
\begin{document}
\sixheterovi[{f\fivefusev[d]{1==N;4==N}{1S==CH$_3$}{b}}e]
{2==N;4==N}
{1D==O;3D==O;4S==CH$_3$}
\end{document}
A PPCHTeX
example
\documentclass{article}
\usepackage{m-pictex}
\usepackage{m-ch-en}% or `m-ch-de' if you like a German interface
\begin{document}
\startchemical
\chemical[FIVE,FRONT,BB125,+SB3,-SB4,Z4][O]
\chemical[FIVE,FRONT,+R1235,+RZ1235][H,H,\SR{HOH_2C},OH]
\chemical[FIVE,FRONT,-R1235,-RZ1235][H,OH,H,H]
\stopchemical
\end{document}
chemfig
or one of the others i don't know seems the way to go.
Nov 25, 2012 at 15:02
XyMTeX
is its documentation, actually. I find it very hard to deduce which commands are available (and what they do) and what options they have (and what they do). Otherwise it seems to be a very capable and complete bundle.
chemfig
is the only one I'd actually use at all for 'real' work (although I personally do use a graphical tool for most of my work).
obabel
(Open Babel) executable.
Jan 29, 2020 at 20:38
For the purpose of rational comparison, more and updated information on XyMTeX would be desirable, because the example shown in the preceding answer has been drawn by the plain mode of XyMTeX (providing slightly poor printing quality within the picture enviroment of LaTeX) and because the comment on the availability of XyMTeX would provide readers with a misleading impression.
The latest version (Version 5.00a) of XyMTeX is available from the XyMTeX homepage (http://xymtex.com/):
http://xymtex.com/fujitas3/xymtex/indexe.html
The two structural formulas shown in the question can be drawn by using the PostScript-compatible mode (as well as the PDF-compatible mode) of XyMTeX.
(1) Disaccharide
\documentclass{article}
\usepackage{xymtexps}%PostScript Mode
%\usepackage{xymtexpdf}%PDF Mode
\begin{document}
\changeunitlength{0.08pt}
\utrigonal{0==O;2==%
\furanose{4==(yl);1Sa==CH$_{2}$OH;2Sb==\lmoiety{HO};%
2Sa==H;3Sb==H;3Sa==OH;4Sb==HOC\rlap{H$_{2}$}};%
3==\pyranose{1==(yl);2Sa==OH;3Sb==OH;4Sa==HO;5Sb==CH$_{2}$OH}}
\hskip4cm
\utrigonal{0==O;2==%
\fivesugarh{5==O;%
1s==\WedgeAsSubst(0,0)(-3,-5){120};%
4s==\WedgeAsSubst(0,0)(3,-5){120};%
3s==\PutBondLine(-15,0)(305,0){3.2pt}%
}{4==(yl);1Sa==CH$_{2}$OH;2Sb==\lmoiety{HO};2Sa==H;%
3Sb==H;3Sa==OH;4Sb==HOC\rlap{H$_{2}$}}[abc];%
3==\sixsugarh{6==O;1s==\WedgeAsSubst(0,0)(-3,-5){120};%
4s==\WedgeAsSubst(0,0)(3,-5){120};%
3s==\PutBondLine(-15,0)(305,0){3.2pt}%
}{1==(yl);2Sa==OH;3Sb==OH;4Sa==HO;5Sb==CH$_{2}$OH}[abc]}
\end{document}
(2) Caffeine
\documentclass{article}
\usepackage{xymtexps}%PostScript Mode
%\usepackage{xymtexpdf}%PDF Mode
\usepackage{graphicx}
%\pagestyle{empty}
\begin{document}
\changeunitlength{0.08pt}
\sixheterov[e{e\fivefusev[d]{1==\bluex{N};4==\bluex{N}}{1==CH$_{3}$}{b}}]
{1==\bluex{N};3==\bluex{N}}
{1==CH$_{3}$;3==CH$_{3}$;2D==\redx{O};4D==\redx{O}}
\\ \vskip0.5cm
{%
\let\substfont=\sffamily
\purinev[aj]{3==CH$_{3}$;%
4D==\addbscolor{\green}{\redx{O}};5==CH$_{3}$;%
6D==\addbscolor{\green}{\redx{O}};7==CH$_{3}$}
\quad
\def\grayx#1{\xymcolor{gray}{#1}}
\nonaheterov[aj]{1==\bluex{N};3==\bluex{N};5==\bluex{N};7==\bluex{N}}%
{3==\addbscolor{\red}{\grayx{CH$_{3}$}};%
4D==\addbscolor{\green}{\redx{O}};5==\addbscolor{\red}{\grayx{CH$_{3}$}};%
6D==\addbscolor{\green}{\redx{O}};7==\addbscolor{\red}{\grayx{CH$_{3}$}}}
}
\end{document}
For further information, please see XyMTeX-tips in the XyMTeX homepage (http://xymtex.com/):
http://xymtex.com/fujitas3/xymtex-tips/indexe.html
The present topic has been deposited as 130208a-ps.pdf, 130208b-ps.pdf etc.
As for a tool for publishing a book on organic chemistry, the combination of XyMTeX-LaTeX has been used to publish the following book:
S. Fujita, "Organic Chemistry of Photography", Springer-Verlag (2004),
in which all of the structural formulas (among 480 illustrations) have been drawn by using XyMTeX.
ctan@dante.de
if you have queries of detail.
Feb 11, 2013 at 10:17
chemfig
package.