Chemfig 中路易斯电子的相对定位

Chemfig 中路易斯电子的相对定位

我正在 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}

在此处输入图片描述

相关内容