0

I need to create a reaction scheme where a single molecule is hit by light generating 2 states each evolving to one state(refer to picture) Since merge don't work in reverse (connect one molecule to 2 )

\documentclass[12pt]{article}


    \usepackage[italian]{babel}
    \usepackage{floatrow}
    \usepackage{wrapfig}
    \usepackage{hyperref}
    \usepackage{etoolbox}
    \usepackage{cmbright}
    \usepackage{geometry}
    \usepackage{tikz}
\usepackage{amsmath}
\usepackage{chemfig}
\usepackage{graphicx}
\usepackage{imakeidx}
\makeindex
\usepackage[colorlinks=true,     allcolors=blue]{hyperref}
\usepackage{pict2e}
\usepackage{float}
    \usetikzlibrary{positioning, calc, arrows.meta}
    \begin{document}
        \begin{figure}
                \schemestart
                \chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}
                \arrow[->]{$h\nu$}
                \chemleft[\chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}\chemright{]^{S_1}}\arrow{->[ISC]}[-90] \chemleft[\chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}\chemright{]^{T_1}} \merge(c1)(c2)--()\chemfig{R_1-[:40]\Charge{[.radius=1.5pt,.style={draw=gray}] 0 =\.[{.style={draw=none,fill=black}}]}{C} =[:90]O}  \+ \Charge{[.radius=1.5pt,.style={draw=gray}]
                180 =\.[{.style={draw=none,fill=black}}]}{R_2}
                \schemestop
                \caption{ My Caption}
            
            \end{figure}
    \end{document}

sample image Also how to align the last 2 molecules, the one on the right with dots.

1

4 Answers 4

0

After a bit of trial and error I came up with the following solution:

\documentclass[a4paper,12pt]{article}

\usepackage{chemfig}
\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}
\setchemfig{bond style={line width=1pt},atom sep=2.1em}

\usepackage[body={17.0cm,26cm},top=2.0cm,left=2.0cm]{geometry}

\usetikzlibrary{matrix}

\begin{document}

\newsavebox\keto
\sbox\keto{\chemfig{C(=[:90]O) (-[:-140]R_1) (-[:-40]R_2)}} % needed to save inner box from outer box parameters in TikZ
\centering
\schemestart
        \chemleft[\chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}\chemright{]^{S_1}}
    \arrow{->[ISC]}[-90]
        \chemleft[\chemfig{R_1-[:40](=[:90]O)-[:-40]R_2}\chemright{]^{T_1}}
     \merge(c1)(c2)--()
        \chemfig{\charge{[circle,.radius=1.5pt,.style={draw=gray,fill=gray}] 0 =\.}{C}(-[:-140]R_1) =[:90]O} 
    \+ 
        \charge{[circle,.radius=1.5pt,.style={draw=gray,fill=gray}]180 =\.}{R_2}
    \chemmove{
        \node[] at (-10.8,-0.15) {\usebox\keto};
        \draw[thick,red,-{stealth},shorten >= 2pt] (-9.5,0) -- node[above,rotate=50,yshift=2mm] {$h\nu$} (c1.west);
        \draw[thick,red,-{stealth},shorten >= 2pt] (-9.5,0) -- node[below,rotate=-50,yshift=-2mm] {$h\nu$} (c2.west);
        }
\schemestop 
    
\end{document}

Since chemfig relies on TikZ you can use tikz commands in the \chemmove environment. In this case I had to start with the two states and the last part of the reaction scheme. The first part had to be entered using \chemmove. Special care must be taken with placing a \chemfig molecule in a TikZ node. See Proper nesting of tikzpicture environments: Reset all PGF values to their defaults .

You may need to play around a bit with the parameters in the \chemmove part of this scheme. Note: because the origin of the first \chemfig{} entry lies to the right, you need to use negative values in the x-coordinate, which can lead to dropping of the page. Hence the \centering command.

Edit Changing the \chemmove part in

\chemmove{
    \node[] at (-10.8,0) {\usebox\keto};
    \draw[-{stealth},shorten >= 2pt] (-8.5,0) |- (c1.west);
    \draw[-{stealth},shorten >= 2pt] (-8.5,0) |- (c2.west);
    \draw[-] (-9.5,0.2) -- node[above, yshift=2mm] {$h\nu$} (-8.5,0.2);
}

will give the same arrows on the left side as the merge on the right side and as is proposed by ChocoDuck.

enter image description here

1

The arrow also works backwards, use \arrow{<-}

1

You can simulate a reverse arrow merge using the "chemfig" and "arrow" commands. Just adjust the parameters to get the "reverse merge" you need.

\documentclass[margin={2mm 2mm}]{standalone}
\usepackage[utf8x]{inputenc}
\usepackage{chemfig}
\begin{document}
\schemestart
\chemfig{-[0,1,,,red,thick](-[2,1,,,red,thick]@{z})(-[6,1,,,red,thick]@{x})}
\arrow(@{z}--){->[$h\nu$]}[00,1,shorten <=-10pt,red,thick]
\arrow(@{x}--){->[$h\nu$]}[00,1,shorten <=-10pt,red,thick]
\schemestop
\end{document}

enter image description here

1
\documentclass[border=5mm]{standalone}
\usepackage{chemfig}
\begin{document}
    \schemestart
    \chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}
    \arrow(a--)[,1.5,,,draw=none]
    \subscheme{
        \charge{30:4pt=$\mathrm{S}_1$}{\chemleft{[}\chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}\chemright{]}}
        \arrow(b--c){->[*{0}ISC]}[-90,1.5]
        \charge{30:4pt=$\mathrm{T}_1$}{\chemleft[\chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}\chemright{]}}
    }
    \arrow(--d)[,1.5,,,draw=none]
    \chemfig{(-[:210]R_2)(-[:330,0.1,,,draw=none]\charge{330:-1pt=\.\,}{})=[2]O}
    \+
    \chemfig{\charge{90:1pt=\.\,}{R}_1}
    \schemestop
    \chemmove{
        \draw[thick,shorten >=10pt] (a.east) -- ++(1,0) |- (b.west);
        \draw[thick,shorten >=10pt] (a.east) -- ++(1,0) |- (c.west);
        \draw[-,thick,shorten >=15pt,shorten <=8pt] (b.east) -- ++(1.3,0) |- (d.west);
        \draw[thick,shorten >=10pt,shorten <=8pt] (c.east) -- ++(1.3,0) |- (d.west);
    }
\end{document}

enter image description here

You must log in to answer this question.

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