我怎样才能绘制如附图所示的有机机制箭头?
以下是答案中经过编辑的 MWE:
\documentclass[a4paper, 10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{graphicx}
\usepackage{array}
\usepackage{chemfig}
\begin{document}
\schemestart
\chemfig{H-C(-[2]H)([6]-[@{sb1}]H)-[@{sb2}]\charge{0:3pt=$\scriptstyle\oplus$}{C}(-[2]H)(-[6]H)}
\chemmove[-stealth, shorten >=2pt, shorten <=2pt, red]
{\draw (sb1)..controls +(right:2mm) and +(down:3mm)..(sb2);}
\arrow(.mid east--.mid west)
\chemfig{H-C(-[2]H)=C(-[2]H)-H} + \chemfig{H^+}
\schemestop
\end{document}
答案1
关于有机反应机理:从我拥有的有机化学书籍来看,全部使用箭头来表示电子的运动,即电子去的地方。
上图的作者使用箭头表示将从分子中“移除”的原子。我以前从未见过这种情况。如果我需要绘制此反应,我会这样做:
\documentclass[a4paper, 10pt]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{graphicx}
\usepackage{array}
\usepackage{chemfig}
\begin{document}
\schemestart
\chemfig{-CH_2(-[@{a}2]@{e}H)-[@{b}]CH_2(-[@{c}2]@{d}\charge{0=\:,90=\:,180=\:}{Br})-}
\arrow
\chemfig{-CH_2=CH_2-}
\+
\chemfig{HBr}
%------------------------------------------------------------------------------------
\chemmove[-stealth,red]{
\draw[shorten <=1pt,shorten >=1pt](a).. controls +(0:4mm) and +(90:4mm)..(b);
\draw[shorten <=1pt,shorten >=1pt](c).. controls +(180:4mm) and +(240:4mm)..(d);
\draw[shorten <=3pt,shorten >=1pt](d).. controls +(180:8mm) and +(60:8mm)..(e);
}
\schemestop
\end{document}
答案2
我对这样的反应方案一无所知,但您不仅可以为键添加标记(例如,在 MWE 中使用-[@{sb1}]
),还可以为原子添加标记,方法是在代表该原子的相关字母前面添加这样的标记,例如使用@{sb3}H
。使用这些标记,您可以使用宏\draw
内的宏添加箭头\chemmove
:
\documentclass[border=10pt]{standalone}
\usepackage{chemfig}
\begin{document}
\schemestart
\chemfig{H-C(-[2]H)([6]-[@{sb1}]@{sb3}H)-[@{sb2}]\charge{0:3pt=$\scriptstyle\oplus$}{C}(-[2]H)(-[6]H)}
\chemmove[-stealth, shorten >=2pt, shorten <=2pt, red]{
\draw (sb1) to[out=0, in=270] (sb2);
\draw ([shift={(10pt,-10pt)}]sb3.center) to[out=90, in=90, looseness=3.5]
([shift={(-10pt,-10pt)}]sb3.center);
}
\arrow(.mid east--.mid west)
\chemfig{H-C(-[2]@{sb1}H)=C(-[2]@{sb2}H)-H}
\chemmove[-stealth, shorten >=2pt, shorten <=2pt, red]{
\draw ([shift={(20pt,0pt)}]sb2.center) to[out=210, in=300, looseness=1.5]
([shift={(-20pt,0pt)}]sb1.center);
}
\+
\chemfig{H^+}
\schemestop
\end{document}