我正在寻找一种方法,通过 chemfig 将分子绘制为骨架结构,并在其中包含一些原子轨道(即 s、p 和 d 轨道以及一些 sp 杂化轨道)(在 chemfig 放置原子标签的位置,即键的末端)。我给你举个例子:
不同轨道所需的形状基本上可以归结为以下几点
然后可以通过旋转和缩放这些轨道来实现正确的外观。理想情况下,这应该使用一个简单的命令,该命令指示chemfig
在原子位置插入某种类型(即 s、p、d、...)的轨道,以及如何旋转、缩放或着色该轨道以及它应该具有哪个相位。这可行吗?或者是否有提供此类功能的软件包?
答案1
这chemmacros
软件包提供 s、p 和 sp 杂化轨道(基于 TikZ),d 轨道缺失(目前)。以下是文档中的示例:
\documentclass{article}
\usepackage{chemfig,chemmacros}
\begin{document}
\setbondoffset{0pt}
\chemsetup[orbital]{
overlay ,
opacity = .75 ,
p/scale = 1.6 ,
s/color = blue!50 ,
s/scale = 1.6
}
\chemfig{\orbital{s}-[:-20]{\orbital[scale=2]{p}}{\orbital[half,angle=0]{p}}{\orbital[angle=170,half]{p}}{\orbital[angle=-150,half]{p}}(-[:-150]\orbital{s})-\orbital{s}}
\end{document}
\documentclass{article}
\usepackage{chemfig,chemmacros}
\begin{document}
\chemsetup[orbital]{
overlay,
p/color = black!70
}
\setbondoffset{0pt}
\chemfig{?\orbital{p}-[,1.3]{\orbital[phase=-]{p}}-[:30,1.1]\orbital{p}-[:150,.9]{\orbital[phase=-]{p}}-[4,1.3]\orbital{p}-[:-150,1.1]{\orbital[phase=-]{p}}?}
\end{document}
答案2
关于 dz2 轨道问题,我找到了使用 tikz 的穷人解决方案(我无法让球阴影更亮,就像在 chemmacros 中一样。我不是乳胶专家,只是收集其他人的东西。希望能有更好的结果):
\documentclass{standalone}
% tikz packages
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.15}
\usetikzlibrary{shapes}
% chemistry packages
\usepackage{chemfig,chemmacros}
\usechemmodule{all}
\chemsetup[orbital]{
overlay,
p/color = black!70
}
% defining orbitals in boxes to put chemfig inside tikz environment
\newsavebox\UpBox
\sbox\UpBox{\orbital[half,angle=90,scale=3]{p}}
\newsavebox\DownBox
\sbox\DownBox{\orbital[half,angle=270,scale=3]{p}}
\begin{document}
\begin{tikzpicture}
%back axis
\draw[dashed] (0,0) -- (-2,0) node[anchor=north west] {};
\draw[dashed] (0,0) -- (0,-2.5) node[anchor=south east] {};
\draw[dashed] (0,0) -- (1.5,1.5) node[anchor=north west] {};
% orbital p (half) down
\draw (0,0) node {\usebox\DownBox};
% drawing simple torus
\fill[ball color=white] (0,0) ellipse (1 and .55);
\begin{scope}
\clip (0,-.9) ellipse (1 and 1.1);
\path[draw](0,1.1) ellipse (1 and 1.1);
\end{scope}
% orbital p (half) up
\draw (0,0) node {\usebox\UpBox};
%front axis
\draw[thick,->] (.85,0) -- (2,0) node[anchor=north west] {$x$};
\draw[thick,->] (0,1.4) -- (0,2.5) node[anchor=south east] {$z$};
\draw[thick,->] (-.4,-.4) -- (-1.5,-1.5) node[anchor=north west] {$y$};
\end{tikzpicture}
\end{document}