Múltiples brackets en Chemfig Polymer: no se pueden eliminar los errores

Aug 17 2020

Estoy luchando por obtener un Reaktion que muestre un proceso de polimerización usando chemfigcorrectamente.

Este es el código que estoy usando:

\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}

Este es el resultado actual:

Por alguna razón, el segundo corchete es como yo lo quiero, pero el primero no. Parece como si no estuviera obteniendo las especificaciones hechas por \polymerdelim, así que pensé que podría necesitar agregar la línea también a lo \chemfiganterior.

Si activo la linea

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

Recibo este mensaje de error:

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

¿Alguien me puede ayudar?

¡Gracias!

Respuestas

2 muzimuzhiZ Aug 17 2020 at 10:43

De la documentación de la chemfigSección 13, la sintaxis @{<name>, <coeff>}solo se puede usar al comienzo del argumento opcional de un enlace. En el segundo \chemfigde tu ejemplo

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

argumentos opcionales [@{left,0.5}]y [@{right,0.5}]no tiene enlaces correspondientes, por lo tanto, los nodos lefty rightnunca se crean.

Opción 1

Si está de acuerdo con los vínculos iniciales y finales, utilice

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

opcion 2

Si desea mantener el estilo sin enlaces, puede usar @{<name>}<atom>para agregar un nodo a un átomo, usar \polymerdelimopciones open xshifty close xshiftajustar la posición de los delimitadores. Tenga en cuenta que en este caso, el espacio izquierdo y derecho no se ajusta automáticamente.

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

Opción 3

Esta es una variante de la opción 1, en la que los bonos iniciales y finales se especifican pero no se extraen (por opción de bonos [,,,draw=none]). Para obtener un mejor espaciado horizontal, esos dos enlaces también se acortan (mediante la opción de enlace [,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}

Ejemplo completo:

\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}