
Entonces quiero hacer mis formularios químicos en TikZ y tengo esto ahora mismo:
Mi problema es que quiero curvar la línea amarilla debajo de la molécula para hacer el texto más visible y no cortar la molécula por la mitad. Ya leí el manual de chemfig y encontré los enlaces curvos, pero no entiendo bien la sintaxis ni cómo agregar otro punto de control.
Mi otro problema es que quiero agregar un texto flotante con una flecha flotante que apunte a un átomo específico.
Al final quiero que se vea así: (He añadido otra línea naranja y morada para mostrar qué tipo de líneas quiero)
Este es mi código:
\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}
Se agradecería la ayuda, ¡gracias!
Respuesta1
Aquí hay dos opciones y hay al menos una más.
chemfig
está basado en Tikz
, por lo que también puedes usar los comandos de Tikz. que hiciste por
- dando ciertos nombres de coordenadas
(a) .. (f)
- proporcionando
\draw
caminos
Usar controls
es una forma de especificar curvas Bezier en Tikz. Los parámetros me resultan difíciles de imaginar, aunque si puedes, es una manera perfecta de crear curvas elegantes.
Sin embargo, ofrezco dos alternativas:
% ~~~ straight forward replacement ~~~~~~~~~~~~~
\draw[orange,shorten >=4pt]
(f) -- ++(0,-1.7)
-- node[pos=.5,below]{Rückseitenangriff} ++(-3.5,0)
-- (e);
\draw
de (f) -- (e)- pero antes de terminar este camino por
;
- coloque dos nuevas coordenadas (
++
) para los escalones hacia abajo y hacia los lados, descritos como pasos relativos - coloque a
node
en la nueva ruta inferior (observe lo que falta\
) // úselopos=
para realizar ajustes adicionales - sin curvas sofisticadas, simplemente dibuja como se especifica
% ~~~ an alternative ~~~~~~~~~~~~~~~~~~~~~~~
\draw[green,shorten >=4pt,rounded corners]
(f.230) -- ++(0,-1.5)
-- ++(-3.2,0)
-- (e);
- la misma idea
- omitió el
node
, ya que el dibujo no se expandirá por alguna razón - opción usada
rounded corners
deTikz
- desplazó el punto de partida un poco hacia la izquierda, usando coordenadas polares
(f.230)
También puedes reemplazar todas o algunas de las --
declaraciones por to[in=,out=]
, así:
(f.230) to[out=300,in=45] ++(0,-1.5) ...
para empezar con una reverencia (con suerte) hacia la derecha.
Como también puedes ver puse el paquete de idiomas babel
para mayor comodidad.
\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}
Respuesta2
Otro enfoque
\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}