我正在 chemfig (2,2'-联吡啶) 中定义一个子分子,我想显示两个氮上的孤对电子。(对于那些关心的人,我希望显示孤对电子和金属之间的配位键,但这是下一个问题!)
我已经定义了子分子,当我旋转显示它时,孤对电子的定位不会旋转,因为命令\lewis
使用的是绝对位置而不是相对位置。
是否有可能存在相对路易斯位置,从而允许整个分子旋转?(我将节点附加到 Ns,以便稍后可以从它们中绘制配位键......)
下面的 MWE...
\documentclass{article}
\usepackage{chemfig}
\definesubmol{bipy}{*6(-=-(-*6(-=-=-@{datN1}\lewis{3:,N}=))=@{datN2}\lewis{2:,N}-=)}
\begin{document}
\chemfig{!{bipy}}
\vspace{1cm}%just for clarity
\chemfig{[:60]!{bipy}}\\
Should have the lone pair of electrons on the lower N in position 4 and on the upper N in position 5 according to \verb|\lewis{}| command in chemfig
\end{document}
答案1
这是一个不完美的想法。当前到达原子的键的角度可以通过 获得\CF@current@angle
。下面的建议用它来计算孤对的位置。
\documentclass{article}
\usepackage{chemfig}
% this is far from perfect, the most obvious restriction is that it only allows
% to place _one_ electron pair.
\makeatletter
\def\rellewis@stripdecimals#1.#2\q@stop{#1}
\def\rellewis#1{\rel@lewis#1\q@stop}
\def\rel@lewis#1#2,#3\q@stop{%
\pgfmathparse{mod(#1+round(\CF@current@angle/45),8)}%
\edef\rellewis@pos{\expandafter\rellewis@stripdecimals\pgfmathresult\q@stop}%
\expandafter\lewis\expandafter{\rellewis@pos#2,#3}%
}
\makeatother
\definesubmol{bipy}{*6(-=-(-*6(-=-=-\rellewis{6:,N}=))=\rellewis{7:,N}-=)}
\begin{document}
\chemfig{!{bipy}}
\quad
\chemfig{[:60]!{bipy}}
\quad
\chemfig{[:-30]!{bipy}}
\chemfig{[:90]!{bipy}}
\quad
\chemfig{[:-90]!{bipy}}
\quad
\chemfig{[:45]!{bipy}}
\end{document}