
Я хочу окрасить простые функциональные группы в органических молекулах с помощью пакета chemfig
. Я придумал решение, которое достигает того, что я хочу (MWE), но я считаю, что этооченьгромоздко. Я думал, что можно было бы обернуть целую группу в один единственный color
оператор.Этот вопрос о раскрашивании фонагруппы атомов chemfig
также дает четкое графическое выделение группы атомов.
Является ли мое решение и решение вопроса выше самым простым способом раскрасить или пометить группы атомов (включая связи) в chemfig
? Сейчас у меня нет необходимости легко воспроизводить множество цветных функциональных групп, но я хотел бы узнать, есть ли более простые способы решить эту проблему без предварительного определения макросов для каждой группы.
Я полагаю, что понимаю, что основная проблема заключается в способе chemfig
использования TiкZ-узлы для рисования структур, но я не могу не думать, что должен быть способ определить некоторую цветовую среду, которая применима ко всем TiкZ-узлы, созданные chemfig
.
МВЭ:
\documentclass{article}
\usepackage{chemfig}
\begin{document}
\chemfig{H-C(-[2]H)(-[6]H)-C(-[2]H)(-[6]H)-{\color{blue}C}(=[1,,,,blue] {\color{blue}O})(-[7,,,,blue] {\color{blue}OH})}
\end{document}
Производство
решение1
Относится кэта почта.
\documentclass{article}
\usepackage{chemfig}
\begin{document}
\def\RED{\gdef\printatom##1{\color{red}\ensuremath{\mathrm{##1}}}}
\def\BLACK{\gdef\printatom##1{\color{black}\ensuremath{\mathrm{##1}}}}
\noindent
\chemfig{H-C(-[2]H)(-[6]H)-C(-[2]H)(-[6]H)(-[,,,,draw=none]\RED)([,,,,,red]-[,,,,black]C(=[1]O)(-[7]OH))}\BLACK \\[1cm]
\chemfig{H-C(-[2]H)(-[6]H)-C(-[2]H)(-[6]H)(-C(=[1]O)(-[7]OH))}
\end{document}
Где
[,,,,red]
заключается в установке цвета связей внутри COOH.[,,,,black]
заключается в установке цвета связи между C2H5 и COOH.(-[,,,,draw=none]\RED)
заключается в создании специального атома для изменения цвета.- Вы можете изменить цвет в любом месте, но иногда это может привести к неправильному размещению/расстоянию.
- (например,
chemfig
читается\RED COOH
как пять атомов, при этом первый атом имеет нулевую ширину.)