将反应机制的弯曲箭头的头部稍微放置在加号上方

将反应机制的弯曲箭头的头部稍微放置在加号上方

我的代码是:

\documentclass[12pt,letterpaper]{report}
\usepackage{blindtext}
\usepackage[utf8]{inputenc}

\usepackage{chemfig}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\tikzset{
  elmove/.style={-{Stealth[#1]},shorten >=3pt,shorten <=2pt}
}

\begin{document}
\begin{center}
\schemestart
\chemfig{@{Cl}\lewis{0.2:4:6:,Cl}}
\chemsign{+}\arrow(--nb){0}[,.2]
 \mbox{}
 \arrow{0}[,.2]\chemfig{H-[@{b}]@{C}CH_3}
 \schemestop
\chemmove{
 \draw[elmove=right, bend right]
  (Cl) ..controls +(30:7mm) and +(115:7mm) .. (nb) ;
 \draw[elmove=left]
  (b) ..controls +(90:7mm) and +(75:7mm) .. (nb) ;
  \draw[elmove=right]
  (b) ..controls +(-90:7mm) and +(-90:7mm) .. (C) ;
 }
 \end{center}\par
 \end{document}

我想重现这一点: 在此处输入图片描述

我目前得到这个:

在此处输入图片描述

答案1

我可能会这样做:您已经了解了0箭头。它可以与以下事实相结合:两个箭头之间的所有内容都是可以引用的节点。chemfig连续命名它们c1,, ...(您可以在方案开始之前c2检查节点及其名称的位置)。但是,宏也允许为它们提供自定义名称:\schemedebug{true}\arrow

\arrow(name1--name2)

命名箭头前的节点name1和后面的节点name2

我们可以使用它将加号放在节点本身中并在其中引用它\chemmove

\documentclass{article}

\usepackage{chemfig}
% \usepackage{tikz}
\usetikzlibrary{arrows.meta}
\tikzset{
  elmove/.style={-{Stealth[#1]},shorten >=3pt,shorten <=2pt}
}

\begin{document}

\begin{center}
  \schemestart
    \chemfig{@{Cl}\lewis{0.2:4:6:,Cl}}
    \arrow(--plus){0}[,0]% empty error with 0 length
    \+
    \arrow{0}[,0]
    \chemfig{H-[@{b}]@{C}CH_3}
  \schemestop
  \chemmove{
    \draw[elmove=right, bend right]
      (Cl) ..controls +(10:2mm) and +(100:10mm) .. (plus) ;
    \draw[elmove=left]
      (b) ..controls +(90:7mm) and +(80:7mm) .. (plus) ;
    \draw[elmove=right]
      (b) ..controls +(-90:7mm) and +(-90:7mm) .. (C) ;
 }
\end{center}

\end{document}

在此处输入图片描述

这可以很容易地扩展为在 + 上方或以某个角度添加另一个空复合符号,方法是\arrow(@plus--nb){0}[45,.05]\null向方案中添加(或类似方法)。这将创建一个不可见的箭头,该箭头plus从 45 度角的节点开始,长度为通常长度的 0.05,结束于名为 的节点nb(这\null是另一种写法\mbox{},之所以需要这样做,是因为如果您想引用空复合符号,它就不能完全为空。)这样,就可以相当轻松地到达 + 附近的任何点。

另一种更简单的到达节点附近的方法plus是使用类似

\path (plus) ++(45:4mm) coordinate (nb) ;

在内部\chemmove命名相对于节点的点(使用++坐标语法)plus

现在,两种变体中nb都有位于 + 右上方的节点。

\documentclass{article}

\usepackage{chemfig}
% \usepackage{tikz}
\usetikzlibrary{arrows.meta}
\tikzset{
  elmove/.style={-{Stealth[#1]},shorten >=3pt,shorten <=2pt}
}

\begin{document}

\begin{center}
  \schemestart
    \chemfig{@{Cl}\lewis{0.2:4:6:,Cl}}
    \arrow(--plus){0}[,.1]% empty error
    \+
    \arrow{0}[,.1]
    \chemfig{H-[@{b}]@{C}CH_3}
  \schemestop
  \chemmove{
    \path (plus) ++(45:4mm) coordinate (nb) ;
    \draw[elmove=right]
      (Cl) ++(.25,0) ..controls +(90:4mm) and +(100:12mm) .. (nb) ;
    \draw[elmove=left]
      (b) ..controls +(90:7mm) and +(80:7mm) .. (nb) ;
    \draw[elmove=right]
      (b) ..controls +(-90:7mm) and +(-90:7mm) .. (C) ;
 }
\end{center}

\end{document}

在此处输入图片描述

相关内容