我想在我的论文中重现这组步骤,但我不知道哪个软件包可以做到这一点。我是几周前才开始使用 latex 的新手。
答案1
正如我在评论中所说:chemfig
可以使用。但有一个缺点:在尝试掌握时,有一个无法避免的学习曲线chemfig
。这需要练习和时间。想想看,这并不是一个真正的缺点:每个软件都一样。:)
让我们尝试逐步构建第一个反应。开头应该很清楚:
\begin{center}
\schemestart
\chemfig{Cl-Cl}
\arrow
2\,[Cl]
\schemestop
\end{center}
现在,下一步是使用chemfig
命令\lewis
和添加电子\Lewis
。两者的区别在于,第一个命令中的点不会扩展相应原子的边界框,而第二个命令中的点会扩展相应原子的边界框。它们的语法相同:
\lewis{<electron spec>,<atom>}
其中,<electron spec>
您可以使用数字 0 到 7 来确定 45° 倍数的逆时针角度,从原子的右侧开始。每个数字后面可以跟一个:
(电子对)、一个.
(单个电子)、一个|
(缺失电子)或什么都没有(用一条线表示的电子对)。让我们试试:
\begin{center}
\schemestart
\chemfig{\lewis{2:4:6:,Cl}-\lewis{0:2:6:,Cl}}
\arrow
2\,[\Lewis{0.2:4:6:,Cl}]
\schemestop
\end{center}
现在到了最难的部分:箭头代表电子运动。为此,必须具备 TikZ 的基本知识。(无论如何,在使用时,应该了解 TikZ 基础知识chemfig
。)
电子运动箭头的想法如下:
- 在分子中箭头开始或结束的位置标记某些节点
tikzpicture
使用选项绘制一个remember picture,overlay
(它们允许引用先前定义的节点,从而可以将这些箭头添加到反应中)。为了使这更方便,chemfig
提供了\chemmove
宏,它只不过是所述 的包装器tikzpicture
。
chemfig
使用符号可以标记 的分子中的节点@
。其语法在一定程度上取决于您是否要标记原子或键。对于标记原子,它有一个强制参数,该参数采用节点的名称,并且必须在相关原子之前使用:标记包含名为的原子的\chemfig{@{xxx}A}
节点。对于键,它必须作为键的可选参数中的第一项使用,并且再次有一个用于节点名称的强制参数:。这会将节点放置在从到 的键的中间。可以扩展参数以改变键上的位置::节点位于键的 20% 之后,即更靠近。A
xxx
\chemfig{A-[@{xxx}]B}
xxx
A
B
\chemfig{A-[@{xxx,.2}]B}
A
我们来试试这个:
\begin{center}
\schemestart
\chemfig{@{Cl1}\lewis{2:4:6:,Cl}-[@{b}]@{Cl2}\lewis{0:2:6:,Cl}}
\arrow
2\,[\Lewis{0.2:4:6:,Cl}]
\schemestop
\end{center}
现在应该可以用 来引用第一个氯Cl1
,用 来引用第二个氯Cl2
,用 来引用键b
。如果我们改编手册中的示例,chemfig
我们会得到如下内容:
\begin{center}
\schemestart
\chemfig{@{Cl1}\lewis{2:4:6:,Cl}-[@{b}]@{Cl2}\lewis{0:2:6:,Cl}}
\arrow
2\,[\Lewis{0.2:4:6:,Cl}]
\schemestop
\chemmove{
\draw[->]
(b) ..controls +(-90:7mm) and +(-90:7mm) .. (Cl1) ;
\draw[->]
(b) ..controls +(90:7mm) and +(90:7mm) .. (Cl2) ;
}
\end{center}
经过两次编译后,它看起来如下所示:
语法..controls <coord1> and <coord2> ..
在pgf 手册。当你像我一样使用时+(<angle>:<radius>)
,你可以将这两个坐标视为相对于曲线将“附近”经过的箭头的起点和终点坐标的两个点。
还剩下什么?我们需要半个箭头(因为这是单个电子的运动),并且箭头的起点和终点不应该像现在这样接近:
- 使用新的 TikZ 库 ,第一件事很容易
arrows.meta
。使用 加载后,\usetikzlibrary{arrows.meta}
我们可以使用-Stealth
而不是->
。更重要的是:Stealth
接受一个可选参数,您可以选择仅绘制尖端的左半部分或右半部分:-Stealth[left]
或-Stealth[right]
。在 的可选参数中使用可选参数\draw
需要我们将整个尖端放在括号中:-{Stealth[left]}
。 - 对于第二点,我们可以使用 TikZ 语法
shorten >=<dim>
来缩短右端和shorten <=<dim>
左端附近的箭头。
为了让我们的生活更舒适一点,我现在定义一个 TikZ 风格:
\tikzset{
elmove/.style={-{Stealth[#1]},shorten >=3pt,shorten <=2pt}
}
这样我们就可以使用elmove=left
或elmove=right
作为 TikZ 选项,箭头在末尾缩短 3pt,在开头缩短 2pt(从箭头的角度来看):
现在完整的例子
\documentclass{article}
\usepackage{chemfig}
\usetikzlibrary{arrows.meta}
\tikzset{
elmove/.style={-{Stealth[#1]},shorten >=3pt,shorten <=2pt}
}
\begin{document}
\begin{center}
\schemestart
\chemfig{@{Cl1}\lewis{2:4:6:,Cl}-[@{b}]@{Cl2}\lewis{0:2:6:,Cl}}
\arrow
2\,[\Lewis{0.2:4:6:,Cl}]
\schemestop
\chemmove{
\draw[elmove=left]
(b) ..controls +(-90:7mm) and +(-90:7mm) .. (Cl1) ;
\draw[elmove=left]
(b) ..controls +(90:7mm) and +(90:7mm) .. (Cl2) ;
}
\end{center}
\end{document}
给出
我希望这能帮助你入门。:)