Множественные скобки в Chemfig Polymer - от ошибок не избавиться

Aug 17 2020

Я изо всех сил пытаюсь получить Reaktion, показывающий, как chemfigправильно используется процесс полимеризации .

Вот код, который я использую:

\begin{figure}[htb!]
\centering
\schemestart
\chemfig{R-C(-[2])(-[6])-C(-[2])(-[6])-C(-[2])(-[6])-\lewis{0.,C}(-[2])(-[6])}
\+
\chemfig{[@{left,0.5}]C(-[2])(-[6])=C(-[2])(-[6])[@{right,0.5}]}
%\polymerdelim[delimiters ={[]}, height = 40pt, indice = n]{left}{right}
\arrow
\chemfig{R-C(-[2])(-[6])-C(-[2])(-[6])-[@{left,0.5}]C(-[2])(-[6])-C(-[2])(-[6])-[@{right,0.5}]C(-[2])(-[6])-\lewis{0.,C}(-[2])(-[6])}
\polymerdelim[delimiters ={[]}, height = 40pt, indice = n]{left}{right}
\schemestop
\caption{}
\label{}
\end{figure}

Это текущий результат:

Почему-то мне нужна вторая скобка, а вот первая - нет. Похоже, что он не получает спецификации, сделанные \polymerdelim, поэтому я подумал, что мне может потребоваться добавить строку также к \chemfigвышеупомянутому.

Если я активирую линию

%\polymerdelim[delimiters ={[]}, height = 40pt, indice = n]{left}{right}

Я получаю это сообщение об ошибке:

! Package pgf Error: No shape named left is known.See the pgf package documentation for explanation.Type H <return> for immediate help.... \chemfig

Кто-нибудь может мне помочь?

Спасибо!

Ответы

2 muzimuzhiZ Aug 17 2020 at 10:43

Из документации в chemfigРазделе 13 синтаксис @{<name>, <coeff>}можно использовать только в начале необязательного аргумента связи. Во втором \chemfigвашем примере

\chemfig{[@{left,0.5}]C(-[2])(-[6])=C(-[2])(-[6])[@{right,0.5}]}

необязательные аргументы [@{left,0.5}]и [@{right,0.5}]не имеет соответствующих связей, поэтому узлы leftи rightникогда не создаются.

Опция 1

Если вас устраивают начальные и конечные связи, используйте

\chemfig{C(-[2])(-[6])(-[@{left,0.5}4])=C(-[2])(-[6])-[@{right,0.5}]}
\polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n]{left}{right}

Вариант 2

Если вы хотите сохранить стиль без привязки, вы можете использовать его @{<name>}<atom>для добавления узла к атому, а также использовать \polymerdelimпараметры open xshiftи close xshiftотрегулировать положение разделителей. Обратите внимание, что в этом случае левое и правое пространство не регулируются автоматически.

\chemfig{@{left}C(-[2])(-[6])=@{right}C(-[2])(-[6])}
\polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n, 
  open xshift=-8pt, close xshift=]{left}{right}

Вариант 3

Это вариант варианта 1, в котором начальная и конечная облигации указаны, но не нарисованы (по варианту облигации [,,,draw=none]). Чтобы улучшить горизонтальный интервал, эти две связи также укорачиваются (с помощью параметра связи [,0.5,,,]) and the position of nodes are adjusted (from @ {left, 0.5} to@ {left, 1} `).

\chemfig{C(-[2])(-[6])(-[@{left,1}4,.5,,,draw=none])=C(-[2])(-[6])-[@{right,1},.5,,,draw=none]}
\polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n]{left}{right}

Полный пример:

\documentclass[margin=20pt]{standalone}
\usepackage{chemfig}

\begin{document}

\schemestart
  \chemfig{R-C(-[2])(-[6])-C(-[2])(-[6])-C(-[2])(-[6])-\lewis{0.,C}(-[2])(-[6])}
  \+
  %% option 1
  % \chemfig{C(-[2])(-[6])(-[@{left,0.5}4])=C(-[2])(-[6])-[@{right,0.5}]}
  % \polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n]{left}{right}
  %
  %% option 2
  % \chemfig{@{left}C(-[2])(-[6])=@{right}C(-[2])(-[6])}
  % \polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n, 
  %   open xshift=-8pt, close xshift=]{left}{right}
  %% option 3
  \chemfig{C(-[2])(-[6])(-[@{left,1}4,.5,,,draw=none])=C(-[2])(-[6])-[@{right,1},.5,,,draw=none]}
  \polymerdelim[delimiters={[]}, height=40pt, depth=, indice=n]{left}{right}
  \arrow
  \chemfig{R-C(-[2])(-[6])-C(-[2])(-[6])-[@{left,0.5}]C(-[2])(-[6])-C(-[2])(-[6])-[@{right,0.5}]C(-[2])(-[6])-\lewis{0.,C}(-[2])(-[6])}
  \polymerdelim[delimiters ={[]}, height=40pt, depth=, indice=n]{left}{right}
\schemestop

\end{document}