chemfig 机理示例:多步机理、弯箭头和自由基鱼钩箭头
简短回答:下面是五个用 chemfig 写成的完整机理:两个用单电子鱼钩箭头绘制的自由基链反应,三个用双电子弯箭头绘制的极性机理。每个都是可下载的 .tex 文件,可用 pdflatex 编译(运行两次)。想要修改,把文件粘贴到 MolDraw 画布上,用鼠标编辑,然后选择 Download → chemfig (.tex)。
五个示例
| 甲烷的自由基氯代 | 链引发、两步链增长和链终止,每步都有标题。均裂,以及在新键处相遇的鱼钩箭头。radical-chlorination-of-methane.tex |
|---|---|
| HBr 的反马氏加成 | 分四步表示的过氧化物效应:过氧化物均裂、溴原子生成、对丙烯的加成和夺氢。键线式碳上的自由基点。anti-markovnikov-hbr-addition.tex |
| 碱催化的羟醛加成 | 烯醇负离子的生成(平衡)、C–C 键的形成和质子化。从电荷和 π 键出发的箭头。base-catalysed-aldol-addition.tex |
| 叔丁醇的 E1 脱水 | 分四行排列的单个反应式,每个箭头上方标有条件,并含碳正离子。e1-dehydration-of-tert-butanol.tex |
| 苯的溴代 | 经 σ 络合物进行的芳香亲电取代,箭头上方标有催化剂。bromination-of-benzene.tex |
下面每一步都包含三部分:chemfig 代码(使用 Copy 按钮复制)、pdflatex 由该代码生成的 PDF,以及把同一段代码粘贴后 MolDraw 画出的图形。两张图都完全由所示代码生成,你可以核对粘贴后的布局、间距和弯箭头是否与 PDF 一致。
如果想描述化学过程而不是图形,可以用 MolScript 书写机理:物种用 SMILES 表示,每个弯箭头写一行。MolDraw 会自动排版,并能给出相同的 chemfig 代码。
chemfig 中弯箭头的写法
chemfig 借助 TikZ 在原子之间画箭头,分三部分:
- 为两端命名。在原子前面加
@{a1},或写在键的选项中(-[@{b1}:0]),为其命名。 - 在
\chemmove中绘制。在反应式之后,\chemmove{ \draw[…] (a1) to[bend left=50] (a2); }从一个名称向另一个名称画箭头。 - 编译两次。chemfig 在第一次运行时保存命名原子的位置,第二次运行时使用这些位置。
示例遵循以下规则,与 MolDraw 画布上箭头的外观一致:
| 两个电子 | 完整箭头:-{Stealth[length=4pt,inset=1.5pt]}。 |
|---|---|
| 一个电子 | 鱼钩箭头,即半个箭头:-{Straight Barb[left,length=4pt]}。[left] 或 [right] 只保留曲线外侧的倒钩。 |
| 箭尾的起点 | 位于提供电子的孤对电子、负电荷、自由基点或键的中点。[shift={(…em,…em)}] 把箭尾从原子中心移到该位置。 |
| 箭头的终点 | 在接受电子的原子前稍稍停住;形成新键时则位于两个原子之间。 |
| 比例 | \setchemfig{atom sep=2.5em, …} 设定键长。所有以 em 为单位的 shift 都以它为基准,所以复制代码时请保留这一行。 |
| 弧度 | bend left / bend right 加上角度,深弧再加 looseness。角度是相对于两端连线的,所以即使 chemfig 对反应式的排布与画布不同,曲线也能保持形状。 |
五个文件都加载相同的两行;如果把代码复制到自己的文档中,也需要这两行:
\usepackage{chemfig}
\usetikzlibrary{arrows.meta,decorations.pathmorphing}
1. 甲烷的自由基氯代
自由基链反应的经典入门示例,分四步:
- 链引发:光使 Cl–Cl 键均匀断裂(均裂)。两个鱼钩箭头从键出发,分别指向两个氯原子。
- 链增长 1:氯原子从甲烷夺取一个氢。Cl• 的一个电子和 C–H 键的一个电子形成新的 H–Cl 键;C–H 的另一个电子留在碳上,成为甲基自由基。
- 链增长 2:甲基自由基从 Cl2 夺取一个氯原子,并重新生成 Cl•,使循环再次开始。
- 链终止:两个自由基结合,此处为 CH3• 和 Cl•。
每一步都是独立的 \schemestart … \schemestop。链终止步骤展示了最难手写的部分:两个鱼钩箭头在它们所形成的键的中点相遇。
链引发
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{@{a1}Cl-[@{b1}:0]@{a2}Cl}
\arrow{->[h$\nu$]}
\chemfig{\charge{90=\.}{Cl}}
\+
\chemfig{\charge{90=\.}{Cl}}
\schemestop
\chemmove{
\draw[-{Straight Barb[left,length=4pt]}]([shift={(0.25em,-0.27em)}]b1) to[bend left=77,looseness=1.4] ([shift={(0.23em,-0.63em)}]a1);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(-0.25em,0.27em)}]b1) to[bend left=77,looseness=1.4] ([shift={(-0.23em,0.63em)}]a2);
}
链增长 1:夺氢
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{@{a1}\charge{90=\.}{Cl}}
\+
\chemfig{@{a2}H-[@{b1}:0]@{a3}CH_3}
\arrow{->}
\chemfig{HCl}
\+
\chemfig{\charge{90=\.}{C}H_3}
\schemestop
\chemmove{
\path (a2) -- (a1) coordinate[pos=0.5] (m1);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(0em,1.71em)}]a1) to[bend left=65,looseness=1.2] ([shift={(0em,1.64em)}]m1);
\path (a2) -- (a1) coordinate[pos=0.5] (m2);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(0em,-0.33em)}]b1) to[bend left=57,looseness=1.1] ([shift={(0em,-1.64em)}]m2);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(-0.45em,0.33em)}]b1) to[bend left=65,looseness=1.2] ([shift={(-0.83em,0.78em)}]a3);
}
链增长 2:氯转移
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{@{a1}\charge{90=\.}{C}H_3}
\+
\chemfig{@{a2}Cl-[@{b1}:0]@{a3}Cl}
\arrow{->}
\chemfig{H_3C-[:0]Cl}
\+
\chemfig{\charge{90=\.}{Cl}}
\schemestop
\chemmove{
\path (a2) -- (a1) coordinate[pos=0.5] (m1);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(-0.55em,1.36em)}]a1) to[bend left=57,looseness=1.1] ([shift={(0em,0.87em)}]m1);
\path (a2) -- (a1) coordinate[pos=0.5] (m2);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(0em,-0.27em)}]b1) to[bend left=57,looseness=1.1] ([shift={(0em,-0.87em)}]m2);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(-0.45em,0.27em)}]b1) to[bend left=77,looseness=1.4] ([shift={(-0.23em,0.63em)}]a3);
}
链终止
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{@{a1}\charge{90=\.}{C}H_3}
\+
\chemfig{@{a2}\charge{90=\.}{Cl}}
\arrow{->}
\chemfig{H_3C-[:0]Cl}
\schemestop
\chemmove{
\path (a2) -- (a1) coordinate[pos=0.58] (m1);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(-0.55em,1.36em)}]a1) to[bend left=57,looseness=1.1] ([shift={(0em,0em)}]m1);
\path (a1) -- (a2) coordinate[pos=0.5] (m2);
\draw[-{Straight Barb[right,length=4pt]}]([shift={(0em,1.37em)}]a2) to[bend right=57,looseness=1.1] ([shift={(0em,1.31em)}]m2);
}
在链终止的代码中,\path … coordinate 行在两个自由基之间设定一个点。由于它取的是两者距离的一个比例,即使你修改 + sep left 或键长,鱼钩箭头仍会在间隙中相遇。如果用相对于某个原子的固定偏移量,间距一变就会偏离间隙。
自由基点用 \charge{90=\.}{Cl} 书写:在 90° 方向、原子上方放一个单电子。对于 CH3•,点放在碳上,即 \charge{90=\.}{C}H_3,而不是放在整个基团上。
2. HBr 的反马氏加成(过氧化物效应)
有过氧化物存在时,HBr 以“相反”的方向加成到丙烯上:溴连在末端碳上。原因是链由 Br• 传递,它加成的位置会留下更稳定的仲自由基。
- 链引发 1:二叔丁基过氧化物在较弱的 O–O 键处断裂。
- 链引发 2:叔丁氧基自由基从 HBr 夺取 H,释放出 Br•。
- 链增长 1:Br• 加成到 C=C 的 CH2 端。一个 π 电子进入新的 C–Br 键,另一个留在中间的碳上。
- 链增长 2:该仲自由基从 HBr 夺取 H,生成 1-溴丙烷,并再次生成 Br•。
链引发:过氧化物均裂
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{-[:23](-[:-69]@{a2}O-[@{b1}:-3]@{a1}O-[:-52](-[:43])(-[:-75])-[:-161])(-[:47])-[:133]}
\arrow{->[h$\nu$ or $\Delta$]}[,1.3]
\chemfig{\charge{90=\.}{O}-[:-12](-[:-36])(-[:82])-[:-122]}
\+
\chemfig{\charge{90=\.}{O}-[:-12](-[:-36])(-[:82])-[:-122]}
\schemestop
\chemmove{
\draw[-{Straight Barb[left,length=4pt]}]([shift={(-0.24em,0.28em)}]b1) to[bend left=77,looseness=1.4] ([shift={(-0.23em,0.62em)}]a1);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(0.24em,-0.28em)}]b1) to[bend left=77,looseness=1.4] ([shift={(0.23em,-0.62em)}]a2);
}
链引发:溴原子的生成
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{@{a1}\charge{90=\.}{O}-[:-12](-[:-36])(-[:82]@{a3})-[:-122]}
\+
\chemfig{@{a2}H-[@{b1}:0,0.8]@{a4}Br}
\arrow{->}
\chemfig{HO-[:-12](-[:-36])(-[:82])-[:-122]}
\+
\chemfig{\charge{90=\.}{Br}}
\schemestop
\chemmove{
\path (a2) -- (a3) coordinate[pos=0.7] (m1);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(0em,1.36em)}]a1) to[bend left=65,looseness=1.2] ([shift={(-0.08em,-0.19em)}]m1);
\path (a2) -- (a1) coordinate[pos=0.5] (m2);
\draw[-{Straight Barb[right,length=4pt]}]([shift={(0em,0.27em)}]b1) to[bend right=57,looseness=1.1] ([shift={(0em,0em)}]m2);
\draw[-{Straight Barb[right,length=4pt]}]([shift={(-0.36em,-0.27em)}]b1) to[bend right=77,looseness=1.4] ([shift={(-0.11em,-0.63em)}]a4);
}
链增长 1:Br• 加成到取代较少的碳上
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{@{a1}\charge{90=\.}{Br}}
\+
\chemfig{@{a2}=[@{b1}:0]@{a3}-[:-60]}
\arrow{->}
\chemfig{-[:0]\charge{90=\.}{}-[:-60]-[:0]Br}
\schemestop
\chemmove{
\path (a2) -- (a1) coordinate[pos=0.5] (m1);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(0em,1.37em)}]a1) to[bend left=65,looseness=1.2] ([shift={(-0.12em,0.87em)}]m1);
\path (a2) -- (a1) coordinate[pos=0.5] (m2);
\draw[-{Straight Barb[right,length=4pt]}]([shift={(0em,0.48em)}]b1) to[bend right=57,looseness=1.1] ([shift={(-0.12em,0.87em)}]m2);
\draw[-{Straight Barb[right,length=4pt]}]([shift={(-0.45em,-0.48em)}]b1) to[bend right=65,looseness=1.2] ([shift={(-0.44em,-0.53em)}]a3);
}
链增长 2:从 HBr 夺氢
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{-[:0]@{a1}\charge{90=\.}{}-[:-60]-[:0]Br}
\+
\chemfig{@{a2}H-[@{b1}:0,0.8]@{a3}Br}
\arrow{->}
\chemfig{-[:0]-[:-60]-[:0]Br}
\+
\chemfig{\charge{90=\.}{Br}}
\schemestop
\chemmove{
\path (a2) -- (a1) coordinate[pos=0.58] (m1);
\draw[-{Straight Barb[left,length=4pt]}]([shift={(0em,1.36em)}]a1) to[bend left=57,looseness=1.1] ([shift={(0em,0em)}]m1);
\path (a2) -- (a1) coordinate[pos=0.5] (m2);
\draw[-{Straight Barb[right,length=4pt]}]([shift={(0em,0.27em)}]b1) to[bend right=57,looseness=1.1] ([shift={(0.05em,0.43em)}]m2);
\draw[-{Straight Barb[right,length=4pt]}]([shift={(-0.36em,-0.27em)}]b1) to[bend right=77,looseness=1.4] ([shift={(-0.11em,-0.63em)}]a3);
}
链增长 2 中的自由基位于键线式的碳上,没有可以挂点的字母。chemfig 用 \charge{90=\.}{} 处理这种情况:对空原子使用 \charge,键仍在顶点处相交。
鱼钩箭头既可以从点出发,也可以从键出发。在链增长 1 中,箭头从 C=C 键出发,该键用 =[@{b3}:0] 命名。
3. 碱催化的羟醛加成
使用双电子箭头的极性机理,分三步:
- 氢氧根夺取丙酮的 α-氢,生成烯醇负离子。这一步是平衡(
\arrow{<=>})。 - 烯醇负离子的碳进攻乙醛的羰基碳,C=O 的 π 电子移到氧上。
- 烷氧负离子从水中夺取质子,生成 β-羟基酮并重新生成氢氧根。
1. 烯醇负离子的生成
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{@{a1}HO^{-}}
\+
\chemfig{-[:0](-[:-60]@{a3}-[@{b1}:0,0.8]@{a2}H)=[:60]O}
\arrow{<=>}
\chemfig{-[:0](-[:-60]\charge{300:4pt=$\scriptstyle-$}{})=[:60]O}
\+
\chemfig{H_2O}
\schemestop
\chemmove{
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(1.88em,0em)}]a1) to[bend right=47] ([shift={(-0.69em,-0.4em)}]a2);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.2em,0.27em)}]b1) to[bend right=65,looseness=1.2] ([shift={(0.17em,0.47em)}]a3);
}
2. 对醛的亲核加成
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{-[:0](-[:-60]@{a1}\charge{300:4pt=$\scriptstyle-$}{})=[:60]O}
\+
\chemfig{@{a3}O=[@{b1}:60]@{a2}-[:0]}
\arrow{->}
\chemfig{O=[:0](-[:-60])-[:60]-[:0](-[:60])-[:-60]O^{-}}
\schemestop
\chemmove{
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.39em,1.07em)}]a1) to[bend left=57,looseness=1.1] ([shift={(-0.65em,0.38em)}]a2);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.64em,0.15em)}]b1) to[bend left=77,looseness=1.4] ([shift={(0.64em,0em)}]a3);
}
3. 烷氧负离子的质子化
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{O=[:0](-[:-60])-[:60]-[:0](-[:60])-[:-60]@{a1}O^{-}}
\+
\chemfig{@{a3}HO-[@{b1}:90,0.8,2]@{a2}H}
\arrow{->}
\chemfig{O=[:0](-[:-60])-[:60]-[:0](-[:60])-[:-60]OH}
\+
\chemfig{HO^{-}}
\schemestop
\chemmove{
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.62em,1.07em)}]a1) to[bend left=40] ([shift={(-0.72em,0.26em)}]a2);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.27em,0.36em)}]b1) to[bend left=77,looseness=1.4] ([shift={(1.01em,0.11em)}]a3);
}
这里每个箭头都是完整箭头。每一步有两个箭头:一个形成键,另一个断裂键并把电子带到原子上。第二种箭头从键(b1)出发,终止于原子。
烯醇负离子的负电荷位于键线式的碳上。它的写法与示例 2 中的自由基相同,即对空原子使用 \charge,这样键就不会因为“−”标签而被截短。
4. 叔丁醇的 E1 脱水:分多行排列的单个反应式
前三个示例把每一步放在各自的标题下。你也可以像许多教材那样,把整个机理画成一个连续的反应式,并自动换行:
- OH 基团从 H3O+ 获得一个质子。
- 水离去,生成叔丁基碳正离子。这是慢步骤。
- 水从与 C+ 相邻的碳上夺取一个质子,C–H 的电子形成 2-甲基丙烯的 C=C 键。
在 chemfig 中,每一行都是以箭头开头的独立反应式,因此条件始终和所属的箭头在一起:
完整反应式
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
{\centering \textbf{Acid-catalysed dehydration of tert-butanol (E1)}\par}
\par\bigskip
\vspace{0.9em}
\schemestart
\chemfig{@{a1}H\charge{90=\:,-90=\:}{O}-[:-12](-[:-36])(-[:82])-[:-122]}
\+
\chemfig{@{a3}H_2O^{+}-[@{b1}:90,0.8,2]@{a2}H}
\schemestop
\par\bigskip
\schemestart
\arrow{->[protonation]}[,1.6]
\chemfig{@{a4}H_2O^{+}-[@{b2}:-12](-[:-36])(-[:82])-[:-122]}
\+
\chemfig{H_2O}
\schemestop
\par\bigskip
\schemestart
\arrow{->[$-$H$_{2}$O][slow]}
\chemfig{-[:0]\charge{120:4pt=$\scriptstyle+$}{}(-[@{b4}:-60]-[@{b3}:0,0.8]@{a6}H)-[:60]}
\+
\chemfig{@{a5}H_2\charge{90=\:,-90=\:}{O}}
\schemestop
\par\vspace{1.2em}
\par\bigskip
\schemestart
\arrow{->[$-$H$^{+}$]}
\chemfig{-[:0](=[:-60])-[:60]}
\+
\chemfig{H_3O^{+}}
\schemestop
\chemmove{
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.37em,1.21em)}]a1) to[bend left=40] ([shift={(-0.67em,0.56em)}]a2);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.27em,0.36em)}]b1) to[bend left=77,looseness=1.4] ([shift={(1.19em,0.11em)}]a3);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.19em,-0.31em)}]b2) to[bend left=77,looseness=1.4] ([shift={(0.66em,-0.63em)}]a4);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.55em,-1.21em)}]a5) to[bend left=47] ([shift={(0.69em,-0.4em)}]a6);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0em,0.27em)}]b3) to[bend right=77,looseness=1.4] ([shift={(0.08em,0.33em)}]b4);
}
两个值得借鉴的细节:
[,1.6]使箭头长度变为正常的 1.6 倍,这样 protonation 一词能放在箭头上方,而不会碰到下一个结构。- 碳正离子写作
\charge{120:4pt=$\scriptstyle+$}{}:在距顶点 4 pt、键之间最宽的空隙处放一个小“+”。
5. 苯的亲电溴代
苯的 π 电子进攻(被 FeBr3 活化的)溴,生成 σ 络合物。随后溴离子夺取 sp3 碳上的质子,C–H 的电子使芳环恢复。
下载 bromination-of-benzene.tex1. 进攻溴(σ 络合物)
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{?[a]-[:90]=_[@{b1}:30]-[:-30]=_[:-90]-[:-150]?[a,{=_}]}
\+
\chemfig{@{a1}Br-[@{b2}:0]@{a2}Br}
\arrow{->[FeBr$_{3}$]}[,1.1]
\chemfig{?[a]=_[:90]-[:30](-[:90]Br)-[:-30]\charge{30:4pt=$\scriptstyle+$}{}-[:-90]=_[:-150]?[a]}
\+
\chemfig{Br^{-}}
\schemestop
\chemmove{
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(-0.13em,0.23em)}]b1) to[bend left=74,looseness=1.34] ([shift={(-0.13em,0.73em)}]a1);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(-0.25em,-0.27em)}]b2) to[bend right=77,looseness=1.4] ([shift={(-0.23em,-0.63em)}]a2);
}
2. 失去 H⁺ 使环恢复
\setchemfig{atom sep=2.5em, + sep left=0.7em, + sep right=0.7em, compound sep=4em, arrow offset=6pt}
\schemestart
\chemfig{?[a]=_[:90]-[:30](-[:90]Br)(-[@{b2}:-30]\charge{30:4pt=$\scriptstyle+$}{}-[:-90]=_[:-150]?[a])-[@{b1}:30,0.8]@{a2}H}
\+
\chemfig{@{a1}Br^{-}}
\arrow{->}
\chemfig{?[a]-[:90]=_[:30](-[:90]Br)-[:-30]=_[:-90]-[:-150]?[a,{=_}]}
\+
\chemfig{HBr}
\schemestop
\chemmove{
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(-1.55em,0em)}]a1) to[bend right=51] ([shift={(0.73em,0.13em)}]a2);
\draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(-0.04em,-0.33em)}]b1) to[bend left=51] ([shift={(0.51em,-0.02em)}]b2);
}
环使用绝对键角和钩子(?[a])书写,而不是 *6(…),因此每个环的朝向与画布上完全一致,每根环键都可以带一个 @{…} 名称供箭头使用。FeBr3 中的下标在 MolDraw 中输入为 FeBr₃,导出为 FeBr$_{3}$。
绘制你自己的机理
- 在 MolDraw 编辑器中画出各物种和反应箭头,或从其中一个文件开始:打开文件,全部复制,然后用 Ctrl+V 粘贴到画布上。
- 选择弯箭头工具。从孤对电子、电荷、自由基点或键拖动到接受电子的原子或键。对于单电子步骤,在箭头选项中选择 Fishhook (1e⁻)。
- 用文本工具在每一行上方添加步骤标题。
- 选择 Download → chemfig (.tex),或选择 Copy as chemfig (LaTeX),把代码粘贴到你自己的文档中。
- 编译两次。
你也可以询问编辑器中的 AI 助手,例如:“用鱼钩箭头画出甲苯苄位的自由基溴代,链引发、链增长和链终止分别放在标题下。”它会在画布上画出各步骤,你可以用同样的方式导出。
当你把 chemfig 粘贴回来时,MolDraw 会读取每个 \chemmove 箭头起止于哪个原子或键、是完整箭头还是鱼钩箭头、bend 弯向哪一侧以及弧度有多深。终止于两个原子之间 \path … coordinate 点的箭头会变成成键箭头,因此鱼钩箭头仍会在间隙中相遇。间距取自 \setchemfig(atom sep、compound sep、+ sep left/right、arrow offset),文字和线条以类似 LaTeX 的衬线字体和 chemfig 的细线宽绘制。MolDraw 仍会按自己的规则调整每个箭头,所以手写的 \draw 不必完美。
手动调整导出的代码
- 弧度更平或更深:修改弯曲角度(用
bend left=40代替57),或删除looseness。 - 曲线弯向另一侧:交换
bend left和bend right。对于鱼钩箭头,还要同时交换箭头中的[left]和[right],使倒钩保持在外侧。 - 移动箭尾或箭头:编辑以 em 为单位的
shift。(0em,1em)表示原子中心上方 1 em。 - 鱼钩箭头的相遇点:修改
pos=0.58。0.5正好位于两个原子的中点。 - 行上方的空间:每个反应式前的
\vspace{…em}为向上弯曲的箭头留出空间。如果箭头碰到标题,请把它调大。
常见问题
如何在 chemfig 中画鱼钩箭头?
用 @{…} 为两端命名,然后在 \chemmove 中用半箭头画出箭头:\draw[-{Straight Barb[left,length=4pt]}] (a1) to[bend left=50] (a2); 使用 [left] 或 [right],让倒钩位于曲线外侧。需要加载 TikZ 库 arrows.meta。
如何让两个鱼钩箭头在新键的中点相遇?
在 \chemmove 中用 \path (a1) -- (a2) coordinate[pos=0.5] (m1); 在两个原子之间设一个点,然后让两个鱼钩箭头都终止于 (m1)。无论 chemfig 如何排布反应式,这个点都会随原子移动。
在 chemfig 中如何在键线式的碳上加自由基点?
对空原子使用 \charge:\charge{90=\.}{}。键仍在顶点处相交,点位于顶点上方。对于有标签的原子,写成 \charge{90=\.}{Cl}。
为什么 PDF 中弯箭头的位置不对?
\chemmove 使用第一次 LaTeX 运行时保存的位置。请再编译一次。
我可以编辑这些示例吗?
可以。打开 .tex 文件,复制其内容并粘贴到 MolDraw 画布上。用鼠标修改结构或箭头,然后再次下载 chemfig (.tex)。
这些示例可以免费使用吗?
可以。可用于笔记、习题、学位论文和期刊论文。