![将反应机制的弯曲箭头的头部稍微放置在加号上方](https://linux22.com/image/297369/%E5%B0%86%E5%8F%8D%E5%BA%94%E6%9C%BA%E5%88%B6%E7%9A%84%E5%BC%AF%E6%9B%B2%E7%AE%AD%E5%A4%B4%E7%9A%84%E5%A4%B4%E9%83%A8%E7%A8%8D%E5%BE%AE%E6%94%BE%E7%BD%AE%E5%9C%A8%E5%8A%A0%E5%8F%B7%E4%B8%8A%E6%96%B9.png)
我的代码是:
\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}