如何减少 chemfig 中化合物之间的垂直距离

如何减少 chemfig 中化合物之间的垂直距离

当使用子方案在 chemfig 中写出反应机理时,两种化合物之间存在较大的垂直间隙,如附图所示。 在此处输入图片描述

如何才能达到图中所示的所需位置。迄今为止的尝试

documentclass{book}
\usepackage[version=4,arrows=pgf-filled]{mhchem}
\usepackage{chemfig,chemmacros}
\setatomsep{1.5em}
\setbondoffset{0pt}
\begin{document}
\schemestart
\subscheme[-90]{
\chemfig{CH_3CH=[@{d}]CH_2}
\arrow{0[][][-10pt]}
\chemfig{@{e}Br-[@{f}]@{g}Br}
}
\ce{->}
\chemfig{CH_3\chemabove{C}{\scrp}HCH_2Br} \+ \chemfig{Br^{-}} 
\schemestop
\chemmove[cyan,>=latex,shorten <=2pt,shorten >=2pt]{ 
\draw[shorten >=1pt,->] (d) ..controls +(-90:1cm) and +(135:1cm) .. (e) ;} 
\chemmove[red,>=latex,shorten <=1pt,shorten >=2pt]{ 
\draw[shorten >=0pt,->] (f) ..controls +(-90:.5cm) and +(-90:1cm) .. (g) 
;}
\end{document}

答案1

调整丙烯和溴之间的不可见箭头的尺寸应该会让你更接近预期的输出。

我还替换了弃用的

\setatomsep{1.5em}
\setbondoffset{0pt}

命令

\setchemfig{atom sep=1.5em,
            bond offset=0pt}

使代码可以与chemfig1.3 版(自 2018 年 3 月起)以上的版本编译。

最后,我为反应添加了另一种布局,因为试剂通常画在反应物旁边或反应箭头上方,而不是反应物下方的某处。

在此处输入图片描述

\documentclass{book}
\usepackage[version=4,arrows=pgf-filled]{mhchem}
\usepackage{chemfig,chemmacros}

\setchemfig{atom sep=1.5em,
            bond offset=0pt}
\begin{document}
\schemestart
\subscheme[-90]{
\chemfig{CH_3CH=[@{d}]CH_2}
\arrow{0}[-90,0.25]
\chemfig{@{e}Br-[@{f}]@{g}Br}
}
\ce{->}
\chemfig{CH_3\chemabove{C}{\scrp}HCH_2Br} \+ \chemfig{Br^{-}} 
\schemestop
\chemmove[cyan,>=latex,shorten <=2pt,shorten >=2pt]{ 
\draw[shorten >=1pt,->] (d) ..controls +(-90:.75cm) and +(135:1cm) .. (e) ;} 
\chemmove[red,>=latex,shorten <=1pt,shorten >=2pt]{ 
\draw[shorten >=0pt,->] (f) ..controls +(-90:.5cm) and +(-90:1cm) .. (g) 
;}

\vspace{3cm}


\schemestart
\chemfig{CH_3CH=[@{d}]CH_2}
\arrow{->[\chemfig{@{e}Br-[@{f}]@{g}Br}]}
\chemfig{CH_3\chemabove{C}{\scrp}HCH_2Br} \+ \chemfig{Br^{-}} 
\schemestop
\chemmove[cyan,>=latex,shorten <=2pt,shorten >=2pt]{ 
\draw[shorten >=1pt,->] (d) ..controls +(90:.75cm) and +(135:.75cm) .. (e) ;} 
\chemmove[red,>=latex,shorten <=1pt,shorten >=2pt]{ 
\draw[shorten >=0pt,->] (f) ..controls +(90:.5cm) and +(90:.5cm) .. (g) 
;}
\end{document}

答案2

两种方法,仅使用“chemfig”包中的命令

  1. 化学反应结束后定位Br2:

    \setchemfig{atom sep=1.5em,bond offset=0pt}
    
    \begin{document}
    
    \schemestart
    
    \chemfig{CH_3CH=[@{a},1.5]CH_2}
    
    \arrow{->} 
    
    \chemfig{CH_3\chemabove{C}{\scriptstyle+}HCH_2Br} 
    
    \+ \chemfig{Br^{-}}
    
    \arrow(@{a}--){0}[320,.6]\chemfig{@{b}Br-[@{c},1.5]@{d}Br}
    
    %---------------------------------------------------------------
    
    \chemmove{
    
        \draw[red,shorten <=2pt,shorten >=1pt](a).. controls +(270:8mm) and +(90:8mm)..(b);
    
        \draw[red,shorten <=1pt,shorten >=1pt](c).. controls +(90:6mm) and +(90:6mm)..(d);
    
     }
    
    \schemestop
    
    \end{document}
    
  2. 或者将 Br2 放在开头,但你需要重新定位反应箭头

     \begin{document}
    
     \schemestart
    
     \chemfig{CH_3CH=[@{a},1.5]C@{z}H_2}
    
     \arrow(@{a}--){0}[320,.6]\chemfig{@{b}Br-[@{c},1.5]@{d}Br}
    
     \arrow(@{z}--){->} 
    
     \chemfig{CH_3\chemabove{C}{\scriptstyle+}HCH_2Br}
    
     \+ \chemfig{Br^{-}}
    
     %---------------------------------------------------------------
    
     \chemmove{
    
     \draw[red,shorten <=2pt,shorten >=1pt](a).. controls +(270:8mm) and +(90:8mm)..(b); 
    
     \draw[red,shorten <=1pt,shorten >=1pt](c).. controls +(90:6mm) and +(90:6mm)..(d);
    
     }
    
     \schemestop
    
     \end{document}
    

两者的结果非常相似。

在此处输入图片描述

溴与 270 度角

\begin{document}
    \schemestart
    %
    \chemfig{CH_3CH=[@{a},1.5]C@{z}H_2}
    %
    \arrow(@{a}--){0}[320,.6]\chemfig{@{b}Br-[@{c},1.5]@{d}Br}
    %
    \arrow(@{z}--){->}
    %
    \chemfig{CH_3@{y}\chemabove{C}{\scriptstyle+}HCH_2Br}
    %
    \arrow(@{y}--){0}[-90,.3]\+ \chemfig{Br^{-}}
    %
    %---------------------------------------------------------------
    \chemmove{
        \draw[red,shorten <=2pt,shorten >=1pt](a).. controls +(270:8mm) and +(90:8mm)..(b);
        \draw[red,shorten <=1pt,shorten >=1pt](c).. controls +(90:6mm) and +(90:6mm)..(d);  
    }
\schemestop

\end{document}

在此处输入图片描述

相关内容