Múltiplos colchetes no polímero Chemfig - Impossível se livrar dos erros

Aug 17 2020

Estou lutando para obter um Reaktion mostrando um processo de polimerização usando a chemfigdireita.

Este é o código que estou 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 é o resultado atual:

Por algum motivo, o segundo colchete é do jeito que eu quero, mas o primeiro não é. Parece que ele não está obtendo as especificações feitas por \polymerdelim, então achei que talvez fosse necessário adicionar a linha \chemfigacima.

Se eu ativar a linha

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

Recebo esta mensagem de erro:

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

Alguém pode me ajudar?

Obrigado!

Respostas

2 muzimuzhiZ Aug 17 2020 at 10:43

A partir da documentação da chemfigSeção 13, a sintaxe @{<name>, <coeff>}só pode ser usada no início do argumento opcional de um vínculo. No segundo \chemfigde seu exemplo

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

argumentos opcionais [@{left,0.5}]e [@{right,0.5}]não tem ligações correspondentes, portanto, os nós lefte rightnunca são criados.

Opção 1

Se estiver tudo bem para começar e terminar ligações, use

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

opção 2

Se você quiser manter o estilo sem vínculo, pode usar @{<name>}<atom>para adicionar um nó a um átomo e usar \polymerdelimopções open xshifte close xshiftajustar a posição dos delimitadores. Observe que, neste caso, os espaços esquerdo e direito não são ajustados automaticamente.

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

Opção 3

Esta é uma variante da opção 1, em que os títulos inicial e final são especificados, mas não sacados (por opção de título [,,,draw=none]). Para obter um melhor espaçamento horizontal, essas duas ligações também são reduzidas (pela opção de ligação [,0.5,,,]) and the position of nodes are adjusted (from @ {esquerda, 0,5} to@ {esquerda, 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}

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