Заполните фон функциональных групп в chemfig

Заполните фон функциональных групп в chemfig

Я хочу заполнить фон некоторых функциональных групп или атомов, включая связи, чтобы подчеркнуть их. Например, чтобы подчеркнуть карбонильную группу в кетоне, заполните фон C=O следующим образом:

введите описание изображения здесь

Я использую chemfig для рисования химических уравнений, и у меня есть обходной путь, который заключается в наложении (chemmove):

\chemfig{R|_1-@{kc}C(=[:90]O)-R|_2}
\chemmove{
    \node[fill=purple!20,anchor=text,inner sep=0.1em]
        at (kc.text) {\chemfig{C(=[:90]O)}};
}

Однако мне нужен более простой и умный способ, поскольку в этом случае мне придется писать один и тот же код дважды (что может быть очень долго, если атомы и связи длинные и сложные), и это время от времени не работает из-за неправильной привязки.

решение1

Вы могли бы отметитьдваузлы с @{<name>}синтаксисом, а затем нарисуйте прямоугольник с помощью fill opacity=.2(или как вам больше подходит):

\documentclass{article}
\usepackage{chemfig,tikz}
\begin{document}
\chemfig{R_1-@{C}C(=[:90]@{O}O)-R_2}
\chemmove{
  \draw[
    fill=purple,
    draw=purple,
    fill opacity=.2,
    rounded corners=2pt
  ]
    ([xshift=-3pt,yshift=-1pt]C.south west)
    rectangle
    ([xshift=3pt,yshift=3pt]O.north east) ;
}
\end{document}

результат

Связанный контент