![Как переместить позицию связи с помощью пакета Chemfig?](https://rvso.com/image/286994/%D0%9A%D0%B0%D0%BA%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BC%D0%B5%D1%81%D1%82%D0%B8%D1%82%D1%8C%20%D0%BF%D0%BE%D0%B7%D0%B8%D1%86%D0%B8%D1%8E%20%D1%81%D0%B2%D1%8F%D0%B7%D0%B8%20%D1%81%20%D0%BF%D0%BE%D0%BC%D0%BE%D1%89%D1%8C%D1%8E%20%D0%BF%D0%B0%D0%BA%D0%B5%D1%82%D0%B0%20Chemfig%3F.png)
Я использую этот код для генерации химической структуры с помощью chemfig
пакета:
\documentclass[12pt,a4paper]{standalone}
\usepackage{chemfig}
\begin{document}
\setatomsep{2.5em}
\chemfig{B(-[:35]N*5(=(-*6(=-=(-OH)-(-NO_2)=-))-=(-Ph)-(=N?[o])-))(-[:145]N*5(-?[o]=(-Ph)-=(-*6(=-=(-O-[7]-[1](=[:65]O)(-[:15]NH(-{(CH_2CH_2O)_nH})))-=-))-))(<[:225]F)(<:[:-45]F)}
\end{document}
Я не доволен тем, как chemfig
происходит соединение, которое пересекается с красным. Мне нужно, чтобы связь шла от N
первого C
атома, а не от второго.
Как следует изменить код, чтобы избежать этой проблемы.
решение1
Вот еще одна идея: если вы поместите каждую из скобок между фигурными скобками ( {(}
и {)}
), они будут рассматриваться как атом (т.е. как C
или H
), и вы можете использовать необязательный аргумент связей, чтобы определить, куда поступает связь:
<bond>[<angle>,<length factor>,<departure atom>,<arrival atom>,<TikZ options>]
Где <departure atom>
и < arrival atom>
— номера позиций атомов, где связь должна начинаться или заканчиваться соответственно.
В вашем случае следующий фрагмент (остальная часть MWE без изменений)
-[,,,2]{(}CH_2CH_2O{)}_nH
дает
решение2
Это можно сделать так:
\documentclass[12pt,a4paper]{standalone}
\usepackage{chemfig}
\newcommand\setpolymerdelim[2]{\def\delimleft{#1}\def\delimright{#2}}
\def\makebraces[#1,#2]#3#4#5{%
\edef\delimhalfdim{\the\dimexpr(#1+#2)/2}%
\edef\delimvshift{\the\dimexpr(#1-#2)/2}%
\chemmove{%
\node[at=(#4),yshift=(\delimvshift)]
{$\left\delimleft\vrule height\delimhalfdim depth\delimhalfdim
width0pt\right.$};%
\node[at=(#5),yshift=(\delimvshift)]
{$\left.\vrule height\delimhalfdim depth\delimhalfdim
width0pt\right\delimright_{\rlap{$\scriptstyle#3$}}$};}}
\begin{document}
\setpolymerdelim()
\setatomsep{2.5em}
\chemfig{B(-[:35]N*5(=(-*6(=-=(-OH)-(-NO_2)=-))-=(-Ph)-(=N?[o])-))(-[:145]N*5(-?[o]=(-Ph)-=(-*6(=-=(-O-[:-45]-[:10](=[:65]O)(-[:-15]NH(-[@{op,.85}:1]CH_2CH_2O-[@{cl,0.15}:0,.7]H)(-[5,0.5,,,white])))-=-))-))(<[:225]F)(<:[:-45]F)}
\makebraces[5pt,5pt]{\!n}{op}{cl}
\end{document}