Wie kann ich in Chemfig die Linie um ein Molekül krümmen und eine schwebende Linie hinzufügen?

Wie kann ich in Chemfig die Linie um ein Molekül krümmen und eine schwebende Linie hinzufügen?

Ich möchte also meine chemischen Formeln in TikZ erstellen und habe derzeit Folgendes:

Mein Problem ist, dass ich die gelbe Linie unter dem Molekül krümmen möchte, um den Text besser sichtbar zu machen und das Molekül nicht in der Mitte zu schneiden. Ich habe das Chemfig-Handbuch bereits durchgelesen und die gekrümmten Bindungen gefunden, aber ich verstehe die Syntax nicht ganz und weiß nicht, wie ich einen weiteren Kontrollpunkt hinzufügen kann.

Mein anderes Problem ist, dass ich einen schwebenden Text mit einem schwebenden Pfeil hinzufügen möchte, der auf ein bestimmtes Atom zeigt.

Am Ende soll es ungefähr so ​​aussehen: (Ich habe eine weitere orange und violette Linie hinzugefügt, um zu zeigen, welche Art von Linien ich möchte)

Dies ist mein Code:

\documentclass[border=3mm]{standalone}

\usepackage{chemfig}

\setchemfig{debug=false}
\setchemfig{scheme debug=false}

\begin{document}
    \schemestart
        \subscheme{
            \chemfig{([::+90]C(-[::+135]H)(-[::+225]H)=C(-[::+45]H)(-[::+315]H))}
        }
        \+
        \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,270=\|}{Br}}
        \arrow(.east--.west){<=>}
        \subscheme{
            \chemfig{([::+90]C(-[::+135]H)(-[::+225]H)=[@{a}]C(-[::+45]H)(-[::+315]H))}
        }
        \chemfig{@{b}\charge{90=\|,180=\|,270=\|,45[red,anchor=180+\chargeangle]=$\delta^+$}{Br}-[@{c}]@{d}\charge{0=\|,90=\|,270=\|,45[blue,anchor=180+\chargeangle]=$\delta^-$}{Br}}
        \arrow(@c2--)[-90]
        \chemfig{([::-90]C(-[::+90]H)(-[::+180]H)(-[::+270]\charge{90=\|,180=\|,270=\|}{Br})-C(-[::+0]H)(-[::+90]\charge{0=\|,90=\|,270=\|}{Br})(-[::+270]H))}
        \arrow(@c4--){<=>}[-90]
        \hflipnext
        \chemfig{\charge{180[red,circle,anchor=180+\chargeangle]=$\oplus$}{Br}(-[1,,,,dash pattern=on 2pt off 2pt]@{e}C?(-[::+0]H)(-[::+90]H))(-[7,,,,dash pattern=on 2pt off 2pt]C?(-[::+0]H)(-[::+270]H))}
        \quad
        \quad
        \chemfig{@{f}\charge{0=\|,90=\|,180=\|,270=\|,45[blue,circle,anchor=180+\chargeangle]=$\ominus$}{Br}}
        \arrow(@[email protected]){<=>}
    \schemestop
    \chemmove{
        \draw[red,shorten >=4pt] (a).. controls +(0:1cm) and +(225:1cm).. (b);
        \draw[red,shorten >=4pt] (c).. controls +(270:1cm) and +(270:1cm).. (d);
        \draw[orange,shorten >=4pt] (f).. controls +(255:1cm) and +(225:1cm).. node[below] {Rueckseitenangriff} (e);
    }
\end{document}

Hilfe wäre willkommen, danke!

Antwort1

Hier sind zwei Optionen, und es gibt mindestens noch eine weitere.

chemfigbasiert auf Tikz, sodass Sie auch Tikz-Befehle verwenden können. Was Sie getan haben, indem Sie

  • bestimmten Koordinaten Namen geben(a) .. (f)
  • Bereitstellung \drawvon Pfaden

Mit können Sie controlsBézierkurven in Tikz festlegen. Ich finde die Parameter schwer vorstellbar, aber wenn Sie es können, ist es eine perfekte Möglichkeit, ausgefallene Kurven zu erstellen.

Ich biete jedoch zwei Alternativen an:

        % ~~~ straight forward replacement ~~~~~~~~~~~~~
        \draw[orange,shorten >=4pt] 
                    (f) -- ++(0,-1.7) 
                        -- node[pos=.5,below]{Rückseitenangriff} ++(-3.5,0)
                        --  (e);
  • \drawvon (f) – (e)
  • aber bevor wir diesen Weg beenden,;
  • Platzieren Sie zwei neue Koordinaten ( ++) für die Abwärts- und Seitwärtsschritte, die als relative Schritte bezeichnet werden
  • setze ein nodeam unteren neuen Pfad (achte auf das fehlende \) // benutze es pos=für weitere Feinabstimmung
  • keine ausgefallenen Kurven, einfach wie angegeben zeichnen
        % ~~~ an alternative ~~~~~~~~~~~~~~~~~~~~~~~
        \draw[green,shorten >=4pt,rounded corners] 
                    (f.230) -- ++(0,-1.5) 
                        --  ++(-3.2,0)
                        --  (e);
  • gleiche Idee
  • habe das weggelassen node, da sich die Zeichnung aus irgendeinem Grund nicht erweitern lässt
  • verwendete rounded cornersOption vonTikz
  • den Startpunkt etwas nach links verschoben, mit Polarkoordinaten(f.230)

Sie können auch alle oder einige der --Anweisungen durch ersetzen to[in=,out=], etwa so:

(f.230) to[out=300,in=45] ++(0,-1.5) ...

mit einer Verbeugung (hoffentlich) nach rechts zu beginnen.

babelWie Sie auch sehen, habe ich der Einfachheit halber das Sprachpaket eingefügt .

Ergebnis

\documentclass[border=3mm]{standalone}
\usepackage[ngerman]{babel}     % <<<
\usepackage{chemfig}

%\setchemfig{debug=false}
%\setchemfig{scheme debug=false}

\begin{document}
    \schemestart
        \subscheme{
            \chemfig{([::+90]C(-[::+135]H)(-[::+225]H)=C(-[::+45]H)(-[::+315]H))}
        }
        \+
        \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,270=\|}{Br}}
        \arrow(.east--.west){<=>}
        \subscheme{
            \chemfig{([::+90]C(-[::+135]H)(-[::+225]H)=[@{a}]C(-[::+45]H)(-[::+315]H))}
        }
        \chemfig{@{b}\charge{90=\|,180=\|,270=\|,45[red,anchor=180+\chargeangle]=$\delta^+$}{Br}-[@{c}]@{d}\charge{0=\|,90=\|,270=\|,45[blue,anchor=180+\chargeangle]=$\delta^-$}{Br}}
        \arrow(@c2--)[-90]
        \chemfig{([::-90]C(-[::+90]H)(-[::+180]H)(-[::+270]\charge{90=\|,180=\|,270=\|}{Br})-C(-[::+0]H)(-[::+90]\charge{0=\|,90=\|,270=\|}{Br})(-[::+270]H))}
        \arrow(@c4--){<=>}[-90]
        \hflipnext
        \chemfig{\charge{180[red,circle,anchor=180+\chargeangle]=$\oplus$}{Br}(-[1,,,,dash pattern=on 2pt off 2pt]@{e}C?(-[::+0]H)(-[::+90]H))(-[7,,,,dash pattern=on 2pt off 2pt]C?(-[::+0]H)(-[::+270]H))}
        \quad
        \quad
        \chemfig{@{f}\charge{0=\|,90=\|,180=\|,270=\|,45[blue,circle,anchor=180+\chargeangle]=$\ominus$}{Br}}
        \arrow(@[email protected]){<=>}
    \schemestop
    \chemmove{
        \draw[red,shorten >=4pt] (a).. controls +(0:1cm) and +(225:1cm).. (b);
        \draw[red,shorten >=4pt] (c).. controls +(270:1cm) and +(270:1cm).. (d);
%        \draw[orange,shorten >=4pt] (f).. controls +(255:1cm) and +(225:1cm).. node[below] {Rueckseitenangriff} (e);
        % ~~~ straight forward replacement ~~~~~~~~~~~~~
        \draw[orange,shorten >=4pt] 
                    (f) -- ++(0,-1.7) 
                        -- node[pos=.5,below]{Rückseitenangriff} ++(-3.5,0)
                        --  (e);
        % ~~~ an alternative ~~~~~~~~~~~~~~~~~~~~~~~
        \draw[green,shorten >=4pt,rounded corners] 
                    (f.230) -- ++(0,-1.5) 
                        --  ++(-3.2,0)
                        --  (e);
    }
\end{document}

Antwort2

Ein anderer Ansatz

\documentclass[border={5mm 12mm 5mm 5mm}]{standalone}
\usepackage{chemfig}
\tikzset{mybond/.style={dash pattern=on 2pt off 2pt}}
\begin{document}
\schemestart
\chemfig{C(-[5]H)(-[7]H)=[2]C(-[1]H)(-[3]H)}
\arrow{0}[,0]
\+
\chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,270=\|}{Br}}
\arrow{<=>}
\chemfig{C(-[5]H)(-[7]H)=[@{a}2]C(-[1]H)(-[3]H)}
\arrow{0}[,0.2]
\chemfig{@{b}\charge{90=\|,180=\|,270=\|,45[red,anchor=180+\chargeangle]=$\delta^+$}{Br}-[@{c}]@{d}\charge{0=\|,90=\|,270=\|,45[blue,anchor=180+\chargeangle]=$\delta^-$}{Br}}
\arrow(@c3--){<=>}[-90]
\arrow(@c1--)[-90]
\chemfig{H-[2]C(-\charge{0=\|,90=\|,270=\|}{Br})(-[4]H)-[2]C(-H)(-[4]\charge{90=\|,180=\|,270=\|}{Br})-[2]H}
\arrow{<=>}[,2.03]
\chemfig{C?[db1](-[5]H)(-[7]H)(-[2,0.75,,,draw=none]-[,0.8,,,draw=none]@{g}\charge{180[red,circle,anchor=180+\chargeangle]=$\oplus$}{Br}?[db1,,mybond]?[db2]-[,,,,draw=none]@{f}\charge{0=\|,90=\|,180=\|,270=\|,45[blue,circle,anchor=180+\chargeangle]=$\ominus$}{Br})-[2,1.5]@{e}C?[db2,,mybond](-[1]H)(-[3]H)}
\schemestop
\chemmove{%
    \draw[red, shorten >=4pt] (a) .. controls +(0:8mm) and +(225:12mm).. (b);
    \draw[red, shorten >=4pt] (c) .. controls +(270:1cm) and +(270:1cm).. (d);
    \draw[orange, shorten >=4pt, shorten <=4pt] (f) .. controls +(255:3.5cm) and +(225:4cm).. (e) node[pos=0.35, below=1pt] {Rueckseitenangriff};
    \draw[<-, shorten <=4pt, blue] (g) -- ++(60:1) node[above] {Text};
}
\end{document}

Bildbeschreibung hier eingeben

verwandte Informationen