The following code generates the sequence of reactions for formation of specific products.

start chain = going below,
block/.style = {text width=2em,
    font=\linespread{1.5}\selectfont, align=center,
    on chain, join=by line},
line/.style = {-Stealth, semithick}
\begin{scope}[every node/.style = {block}]
\node (start) {CaCl$_{2}$} ; 
\node (c1) [below=of start, suspend join] {CaOHCl} ;
\node (c2) [left=of start, suspend join] {H$_{2}$O} ;
\node (c3) [below =of c2, suspend join] {CaO} ; 
\node (c4) [right=of start, suspend join] {CaCl$_2$.2H$_2$O} ; 
\node (c5) [below=of c4, suspend join] {Ca(OH)$_2$} ; 
\node (c6) [below =of c5, suspend join] {HCl} ; 
\draw[line] (start) -- (c1) ; 
\draw[line] (start) -- (c2) ; 
\draw[line] (c2) -- (c3) ; 
\draw[line] (c2) -- (c5) ; 
\draw[line] (c5) -- (start) ; 
\draw[line] (c5) -- (c4) ; 
\draw[line] (c4) -- (c1) ; 
\draw[line] (c5) -- (c6) ; 
\draw[line] (c6) -- (c1) ;  

I would like to use tikzcd package to re-draw the sequence as a commutative diagram using curved arrows as shown in the attached image. Itried modifying the code available at http://ctan.math.washington.edu/tex-archive/graphics/pgf/contrib/tikz-cd/tikz-cd-doc.pdf

I am not sure how does the command \arrow[bend left] works, and how to modify it accordingly to the image requirements. Is there a possible solution?

enter image description here

  • 2
    Unrelated you should probably have a look at mhchem or chemmacros (I think that is that is how the latter is spelled), they provide help with formatting the names of compounds. There are much easier methods than what you do here
    – daleif
    Commented Apr 9, 2020 at 16:46
  • Additionally please provide a full minimal example others can copy and work with as is. Sniplets like this aren't useful.
    – daleif
    Commented Apr 9, 2020 at 16:48
  • Please also rethink the representation of your scheme as reactants and products are completely mixed. As an example, an arrow from H2O to CaO would imply that H2O is a reactant which which one can produce CaO...
    – leandriis
    Commented Apr 9, 2020 at 16:52
  • You can use tikz-cd here and just bend the arrows. Also putting all nodes on a chain, but suspending the chain for all but one of them isn't very useful. (I know of course why that happens ... ;-)
    – user194703
    Commented Apr 9, 2020 at 18:41

1 Answer 1


You can use tikz-cd here. Whether it is worthwhile I do not know, nor whether the content makes sense. As suggested by daleif, you may want to use some tool that allows you to typeset the molecules. As for what seems to be the main question, you can use bend left and bend right, and add a bending angle where needed, e.g. bend left=20. You can also redefine the arrow head.

\begin{tikzcd}[/tikz/>=stealth,/tikz/column 1/.style={column sep=2em}]
 & & &  \ch{H2O} \arrow[dr,->,bend left] \arrow[dddr,->,bend left=20] & \\
 & & &   & \ch{CaO}\\
 & & \ch{CaCl2} \arrow[uur,->,bend left] \arrow[dll,->,bend right] &   & \\
 \ch{CaOHCl} & & & & \ch{Ca(OH)2} \arrow[ddll,->,bend left] \arrow[dll,->] 
 & &  \ch{CaCl2. 2 H2O}\arrow[ull,->,bend right]  & &\\ 
 & &  \ch{HCl} \arrow[uull,->,bend left] & &\\ 

enter image description here

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .