chemfig 与 MolDraw:粘贴 chemfig、可视化编辑、导出 LaTeX
简短回答:复制你的 \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 粘贴到画布上
- 从你的编辑器或 Overleaf 中复制代码。单个
\chemfig{…}、多个 \chemfig、一个\schemestart … \schemestop块或完整文档都可以。 - 打开 MolDraw 编辑器,点击画布空白处并按 Ctrl+V(Mac 上为 Cmd+V)。也可以使用 Paste 按钮,或右键 → Paste。
- 图形出现时处于选中状态,位于画布上已有内容的旁边。把它拖到你想要的位置。
用这个反应式试试:
\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
有两种导出方式:
- 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 中位于同一侧;对环而言即位于环内。
从 SMILES、MOL 或 ChemDraw 文件得到 chemfig
由于 MolDraw 能读取多种格式,它也可以用作chemfig 转换器:
- 导入结构:粘贴 SMILES 或 InChI,在 PubChem 搜索框中检索化合物名称,或打开 MOL、SDF、RXN、CDXML 或 CDX(ChemDraw)文件。
- 如有需要,先整理一下。整理(Clean up)和旋转功能都在工具栏中。
- 选择 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 账户。