chemfig 与 MolDraw:粘贴 chemfig、可视化编辑、导出 LaTeX

发布:2026年10月17日 · 作者:Scidart Academy · 阅读时间:约 9 分钟
深色代码面板中的咖啡因 chemfig 代码,旁边是 MolDraw 据此画出的咖啡因结构,并标有 Paste chemfig 和 Download .tex
粘贴 chemfig 即可绘图,在画布上编辑,再下载为 .tex 文件。

简短回答:复制你的 \chemfig{…} 代码(或整个 \schemestart … \schemestop 反应式,或完整的 .tex 文件),打开 MolDraw 编辑器并按 Ctrl+V。MolDraw 会把它画出来,包括弯箭头。用鼠标编辑后,选择 Download → chemfig (.tex) 得到可用 pdflatex 编译的文件,或选择 Copy as chemfig (LaTeX) 复制代码,粘贴到你的论文中。

适用人群

chemfig 是在 LaTeX 中绘制分子的标准方式。它的输出很漂亮,而且与正文写在同一个文件里,但编写起来很慢:你要输入 -[:30] 和 =[::-60],编译、查看、再调整角度。修改别人写的 chemfig 更难,而 \chemmove 中的一个弯箭头可能要试很多次。

现在 MolDraw 可以读写 chemfig。你继续使用 chemfig 格式,同时用画布来绘图:

  • 查看一段 chemfig 代码画出来是什么样,无需编译。
  • 用鼠标修改:移动原子、翻转双键、添加电荷或弯箭头。
  • 导出回 chemfig,可用 pdflatex 编译,角度与屏幕上看到的一致。
  • 从其他格式开始(SMILES、MOL、ChemDraw 文件、化合物名称),输出 chemfig。

一切都在你的浏览器中运行,你的代码不会被发送到服务器进行转换。

把 chemfig 粘贴到画布上

MolDraw 编辑器中显示从 chemfig 粘贴的 SN2 反应式:氢氧根加溴甲烷,反应箭头上方标 SN2、下方标 acetone,生成甲醇和溴离子,带两个弯箭头,每个化合物下方有名称
用 Ctrl+V 粘贴的 chemfig 反应式。名称、箭头文字和两个弯箭头都完整保留。
  1. 从你的编辑器或 Overleaf 中复制代码。单个 \chemfig{…}、多个 \chemfig、一个 \schemestart … \schemestop 块或完整文档都可以。
  2. 打开 MolDraw 编辑器,点击画布空白处并按 Ctrl+V(Mac 上为 Cmd+V)。也可以使用 Paste 按钮,或右键 → Paste。
  3. 图形出现时处于选中状态,位于画布上已有内容的旁边。把它拖到你想要的位置。

用这个反应式试试:

\schemestart
  \chemname{\chemfig{*6(=-=-=-)}}{benzene}
  \+
  \chemfig{Br-Br}
  \arrow{->[FeBr$_3$][CH$_2$Cl$_2$]}
  \chemname{\chemfig{*6(=-=(-Br)-=-)}}{bromobenzene}
\schemestop

MolDraw 保留你写的键角和键长,所以图形与 PDF 中的形状相同。H_3C、NH_2 或 {CO_2Me} 等标签、电荷、来自 \lewis 或 \charge 的孤对电子,以及 @{name} 节点都会保留下来。

像普通图形一样编辑

粘贴的图形就是普通的 MolDraw 结构,所有工具都可以使用:

  • 拖动原子,或选中一组原子并旋转;
  • 鼠标悬停在键上按 1、2 或 3 可改为单键、双键或三键;用双键工具点击双键可把第二条线移到另一侧;
  • 从工具栏或右键菜单添加电荷、孤对电子和自由基;
  • 用箭头工具画弯箭头和鱼钩箭头。它们会附着在孤对电子、键和电荷上,移动原子时仍保持附着;
  • 双击反应箭头上方和下方的文字即可编辑。

你还能获得 chemfig 无法提供的化学检查:价态警告、分子式和质量、SMILES,以及每个结构的 3D 视图。

把 chemfig 导出回 LaTeX

打开的 MolDraw Download 菜单,含 Image、Chemistry 和 Text 分组;Text 分组的最后一项 chemfig .tex 被高亮
Download → chemfig (.tex),位于 Text 分组末尾。

有两种导出方式:

  • Download → chemfig (.tex) 保存一个完整、独立的 LaTeX 文件。单独编译即可得到该图形的 PDF,或在文档中用 \includegraphics 插入这个 PDF。
  • Copy as chemfig (LaTeX)(位于 Copy 菜单和右键 Copy as 菜单中)只复制图形代码,不含 \documentclass。可以直接粘贴到你的论文中。

对于复制的代码,请在导言区中添加以下两行(只需一次):

\usepackage{chemfig}
\usetikzlibrary{arrows.meta,decorations.pathmorphing}

如果图形中有弯箭头或聚合物括号,请编译两次。chemfig 根据第一次运行时保存的位置绘制它们。如果先选中画布的一部分,则只导出选中的内容。

导出的代码是什么样的

这是 MolDraw 为第一张截图中的 SN2 反应式写出的文件:

% Exported from MolDraw — compile with pdflatex / lualatex (twice: arrows and brackets use positions from the first run)
\documentclass[border=22pt,varwidth=60cm]{standalone}
\usepackage{chemfig}
\usetikzlibrary{arrows.meta,decorations.pathmorphing}
\begin{document}
\setchemfig{+ sep left=2em, + sep right=2em, arrow offset=6pt}
{\centering \textbf{SN2 of bromomethane}\par}
\par\bigskip
\schemestart
  \chemname[2em]{\chemfig{@{a1}HO^{-}}}{hydroxide}
  \+
  \chemname[2em]{\chemfig{@{a2}-[@{b1}:90]@{a3}Br}}{bromomethane}
  \arrow{->[SN2][acetone]}
  \chemname[2em]{\chemfig{-[:90,,,1]OH}}{methanol}
  \+
  \chemfig{Br^{-}}
\schemestop
\chemmove{
  \draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(1.07em,0.77em)}]a1) to[bend right=47] ([shift={(-0.39em,-0.23em)}]a2);
  \draw[-{Stealth[length=4pt,inset=1.5pt]}]([shift={(0.21em,-0.36em)}]b1) to[bend right=77] ([shift={(0.64em,-0.23em)}]a3);
}
\end{document}

有几点值得注意:

  • 键使用绝对角度(-[:90]),所以每根键的方向与画布上一致。长度不标准的键会带上长度系数,例如 -[:30,1.2]。
  • 弯箭头涉及的原子和键会获得节点名称(@{a1}、@{b1})。\chemmove 在它们之间绘制每个箭头,bend 角度与画布上的弧度一致。
  • 化合物名称位于结构下方,并为向下弯曲的弯箭头留出空间。
  • 环键用钩子(?[a])闭合,每个双键都带有 =^ 或 =_,使第二条线与 MolDraw 中位于同一侧;对环而言即位于环内。
同一个 E2 消除画了两次:上方是 MolDraw 画布,下方是用 pdflatex 编译导出的 chemfig 得到的同一反应式,键角、弯箭头、标题和条件都相同
画布上的 E2 消除(上)与导出的 chemfig 经 pdflatex 编译后的结果(下)。

从 SMILES、MOL 或 ChemDraw 文件得到 chemfig

由于 MolDraw 能读取多种格式,它也可以用作chemfig 转换器:

  1. 导入结构:粘贴 SMILES 或 InChI,在 PubChem 搜索框中检索化合物名称,或打开 MOL、SDF、RXN、CDXML 或 CDX(ChemDraw)文件。
  2. 如有需要,先整理一下。整理(Clean up)和旋转功能都在工具栏中。
  3. 选择 Download → chemfig (.tex)。

这是把一组 ChemDraw 图转移到 LaTeX 论文中最快的方法:逐个打开文件,下载为 chemfig。

反应机理与弯箭头

弯箭头是 chemfig 中最难手写的部分。在 MolDraw 中,你可以用鼠标画出它们,或让 AI 助手画出机理,导出时会自动为你写好 @{…} 名称和 \chemmove 块。

当你粘贴已含 \chemmove 箭头的 chemfig 时,MolDraw 会读取每个箭头连接哪些原子或键,以及其 bend 弯向哪一侧。然后按自己的绘图规则放置箭头:箭尾从孤对电子、电荷或键出发,箭头在目标前稍稍停住。你不必照搬精确的 TikZ 曲线。

完整示例请参阅 chemfig 机理示例:带鱼钩箭头的自由基链反应和多步极性机理,每个都可以下载为 .tex 文件。

询问 AI 助手

编辑器中的聊天助手懂 chemfig。例如,你可以这样问:

  • “Export this as chemfig.”(把这个导出为 chemfig。)它会返回画布上内容的代码。
  • “Draw this: \chemfig{H_3C-C(=[:60]O)-[:-60]OH}.”(画出这个。)它会把结构放到画布上。
  • “画出酸催化酯水解的机理,然后给我 chemfig 代码。”

双向都能保留的内容

下面每一项都经过导出、用 pdflatex 编译、再读回 MolDraw,并与原图核对。

键单键 -、双键 =、三键 ~;凯库勒式芳香环;双键第二条线所在的一侧(=^ / =_);楔形键和虚楔键及其方向(< > <: >:)。
键的样式波浪键、粗键、点线键和配位键,以及键的颜色,以 TikZ 选项的形式写在键上。
原子含隐式 H 的标签、缩写基团(CO2Me、Ph)、电荷、带圈电荷(\oplus)、同位素、D 和 T、孤对电子和自由基点(\charge、\lewis)、原子颜色。
环任意环和稠环;导入时还支持 *6(…)、**6(…) 和嵌套环。
反应式->、<-、平衡 <=>、半平衡 <->>、共振 <->、逆合成箭头;箭头上下的多行条件;\+;\chemname;分多行排列的反应式。
文本反应式上方的标题和下方的注释。
方括号带 ‡ 的过渡态括号(\chemleft[ … \chemright])和聚合物重复单元(\polymerdelim)。
弯箭头命名原子和键之间的双电子箭头和单电子鱼钩箭头(\chemmove)。

粘贴时,MolDraw 还能理解带 !{name} 的 \definesubmol、\chemfig{[:30]…} 这样的起始角度、隐形键(draw=none)、\arrow{->}[-90] 这样的倾斜箭头(下一个化合物位于下方)、\subscheme,以及 red、blue 等颜色名称。

chemfig 无法容纳的内容

MolDraw 画布上的某些内容在 chemfig 中没有对应形式:粘贴的图片、形状和实验玻璃仪器、手绘笔迹、轨道、环填充和高亮。它们不会被导出;每次下载或复制后,提示栏都会告诉你省略了什么,所以不会有内容悄无声息地消失。

弯曲或 S 形的反应式箭头会变成直的 chemfig 箭头。放在图形旁边(而不是上方或下方)的文字会作为 % 注释保留在文件中。

chemfig 速查

你最常遇到的 chemfig 语法片段,以及 MolDraw 为每种片段画出的内容:

A-B=C~D单键、双键和三键。不指定角度时,键朝右。
-[2], -[:30], -[::60]以 45° 为步长的角度、绝对角度,或相对于前一根键的角度。
-[:30,1.5]角度和长度系数(正常键长的 1.5 倍)。
< <: > >:楔形键和虚楔键。< 在起始原子处较窄。
C(-[2]H)(-[6]H)括号中的支链。
*6(=-=-=-)六元环,此处为苯。**6(------) 会在环内画一个圆;MolDraw 将其读作单双键交替的苯环。
?[a] … ?[a]钩子:把带相同字母的两个原子连起来(闭合成环)。
=^, =_第二条线位于前进方向左侧或右侧的双键。
\charge{90=\:}{O}O 上 90° 方向的一对孤对电子。\. 表示单个电子。
@{a1}为原子或键命名,以便 \chemmove 向它画箭头。
\arrow{->[above][below]}上下带文字的反应式箭头。

故障排除

  • 粘贴后没有反应。文本中必须包含 \chemfig 或 \schemestart。请先点击画布,使粘贴作用于图形而不是文本框。
  • PDF 中弯箭头的位置不对。再编译一次。
  • “I do not know the key /tikz/Stealth”。在导言区中添加 \usetikzlibrary{arrows.meta,decorations.pathmorphing}。
  • 粘贴后结构看起来被压扁了。如果 chemfig 把两个原子放在同一位置,MolDraw 会重新排布该结构,并在提示栏中说明。可用整理(Clean up)按钮把它整理好。
  • “B”或“D”变成了硼或氘。MolDraw 把原子标签当作化学符号读取。chemfig 手册中的占位字母,只要有对应元素,就会被读成元素。

常见问题

可以把 chemfig 代码转换成图形吗?

可以。把 \chemfig{…} 代码、\schemestart 反应式或整个 .tex 文件粘贴到 MolDraw 画布上。MolDraw 会读取键、角度、环、电荷、孤对电子、箭头、化合物名称和 \chemmove 弯箭头,并将它们画出来。

MolDraw 能导出 chemfig 代码吗?

能。Download → chemfig (.tex) 保存为独立的 LaTeX 文件,Copy as chemfig (LaTeX) 则只复制图形代码,供你粘贴到自己的文档中。代码可以用 pdflatex 和 lualatex 编译。

需要哪些 LaTeX 宏包?

chemfig,以及 TikZ 库 arrows.meta 和 decorations.pathmorphing:\usepackage{chemfig} 和 \usetikzlibrary{arrows.meta,decorations.pathmorphing}。下载的文件中已经包含这些行。

为什么编译后弯箭头的位置不对?

chemfig 的 \chemmove 根据第一次 LaTeX 运行时保存的位置绘制弯箭头。再编译一次,箭头就会落在对应的原子和键上。

可以把 ChemDraw 或 MOL 文件转换成 chemfig 吗?

可以。在 MolDraw 中打开 MOL、SDF、CDXML 或 CDX 文件,或粘贴 SMILES,然后选择 Download → chemfig (.tex)。

哪些内容无法转换为 chemfig?

图片、形状和玻璃仪器、手绘笔迹、轨道、环填充和高亮在 chemfig 中没有对应形式。下载或复制后,MolDraw 会在提示栏中列出被省略的内容。

免费吗?

免费。在浏览器中粘贴和编辑 chemfig 是免费的。下载文件需要一个免费的 MolDraw 账户。

相关指南

最后更新: