我有一个 chemfig 结构,我想通过在原子位置画一个简单的圆圈来突出显示某些位置。到目前为止,这种方法有效,但我还想将新节点放在结构顶部。我尝试了https://tex.stackexchange.com/a/20426/12740,但它不起作用。
梅威瑟:
\documentclass[12pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage{chemfig}
\pgfdeclarelayer{front}
\pgfsetlayers{main,front}
\makeatletter
\pgfkeys{%
/tikz/on layer/.code={
\pgfonlayer{#1}\begingroup
\aftergroup\endpgfonlayer
\aftergroup\endgroup
},
/tikz/node on layer/.code={
\gdef\node@@on@layer{%
\setbox\tikz@tempbox=\hbox\bgroup\pgfonlayer{#1}\unhbox\tikz@tempbox\endpgfonlayer\egroup}
\aftergroup\node@on@layer
},
/tikz/end node on layer/.code={
\endpgfonlayer\endgroup\endgroup
}
}
\def\node@on@layer{\aftergroup\node@@on@layer}
\makeatother
\newcommand*\ca{%
\tikz\draw[fill,opacity=0.5,draw=none,color=red,on layer=front] circle (.1);%
}
\newcommand*\cb{%
\tikz\draw[fill,opacity=0.9,draw=none,color=blue,on layer=front] circle (.15);%
}
\begin{document}
\setatomsep{2em}
\setdoublesep{.3em}
\begin{tikzpicture}
\node {%
\chemfig[line width=1pt]{%
[:-60]O-(-[::60]*6((\cb)-(\ca)=(\ca)-(\cb)(-([:60]=O)-[:-60]O)=(\ca)-(\ca)=))=[:-120]O}%
};
\end{tikzpicture}
\end{document}
我怀疑问题出在\ca
和的定义上\cb
,因为它使用了自己的\tikz
命令,但我不知道如何解决这个问题。
答案1
就像这个答案,您可以使用 来绘制 chemfig remember picture
,overlay
并用 命名坐标@{}
。
\documentclass[border=7mm]{standalone}
\usepackage{chemfig}
\setatomsep{2em}
\setdoublesep{.3em}
\begin{document}
\chemfig[remember picture, line width=1pt]{
[:-60]O-(-[::60]*6(@{cb1}-@{ca1}=@{ca2}-@{cb2}(-([:60]=O)-[:-60]O)=@{ca3}-@{ca4}=))=[:-120]O
}
\begin{tikzpicture}[remember picture,overlay]
\foreach \i in {1,...,4}
\fill[opacity=0.5,color=red] (ca\i) circle (.1);
\foreach \i in {1,2}
\fill[opacity=0.5,color=blue] (cb\i) circle (.15);
\end{tikzpicture}
\end{document}