
Então, quero fazer meus formulários químicos no TikZ e tenho isso agora:
Meu problema é que quero curvar a linha amarela abaixo da molécula para tornar o texto mais visível e não cortar a molécula no meio. Já li o manual do chemfig e encontrei as ligações curvas, mas não entendo muito bem a sintaxe e como adicionar outro ponto de controle.
Meu outro problema é que quero adicionar um texto flutuante com uma seta flutuante que aponta para um átomo específico.
No final quero que fique assim: (adicionei outra linha laranja e roxa para mostrar que tipo de linhas eu quero)
Este é o meu 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}
Ajuda seria apreciada, obrigado!
Responder1
Aqui estão duas opções e há pelo menos mais uma.
chemfig
é construído em Tikz
, então você também pode usar comandos Tikz. O que você fez por
- dando nomes a certas coordenadas
(a) .. (f)
- fornecendo
\draw
caminhos
Usar controls
é uma forma de especificar curvas de Bézier no Tikz. Acho os parâmetros difíceis de imaginar, mas se você puder, é uma maneira perfeita de criar curvas sofisticadas.
No entanto, forneço duas 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)- mas antes de terminar este caminho
;
- coloque duas novas coordenadas (
++
) para os passos para baixo e para os lados, descritas como passos relativos - coloque
node
a no novo caminho inferior (observe o que falta\
) // usepos=
para ajuste fino adicional - sem curvas extravagantes, apenas desenhe conforme especificado
% ~~~ an alternative ~~~~~~~~~~~~~~~~~~~~~~~
\draw[green,shorten >=4pt,rounded corners]
(f.230) -- ++(0,-1.5)
-- ++(-3.2,0)
-- (e);
- mesma ideia
- deixou de fora o
node
, pois o desenho não se expandirá por algum motivo - opção usada
rounded corners
deTikz
- mudou o ponto inicial um pouco para a esquerda, usando coordenadas polares
(f.230)
Você também pode substituir todas ou algumas das --
instruções por to[in=,out=]
, assim:
(f.230) to[out=300,in=45] ++(0,-1.5) ...
para começar com uma reverência (espero) para a direita.
Como você também pode ver, coloquei o pacote de idiomas babel
por conveniência.
\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}
Responder2
Outra abordagem
\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}