Staffe multiple in polimero Chemfig - Impossibile eliminare gli errori

Aug 17 2020

Sto lottando per ottenere una Reaktion che mostri un processo di polimerizzazione usando chemfigright.

Questo è il codice che sto 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}

Questo è il risultato attuale:

Per qualche motivo la seconda parentesi è come la voglio io, ma la prima non lo è. Sembra che non stia ottenendo le specifiche fornite da \polymerdelim, quindi ho pensato di dover aggiungere la riga anche a quanto \chemfigsopra.

Se attivo la linea

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

Ricevo questo messaggio di errore:

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

Qualcuno mi può aiutare?

Grazie!

Risposte

2 muzimuzhiZ Aug 17 2020 at 10:43

Dalla documentazione della chemfigSezione 13, la sintassi @{<name>, <coeff>}può essere utilizzata solo all'inizio dell'argomento opzionale di un'obbligazione. Nel secondo \chemfigdel tuo esempio

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

argomenti opzionali [@{left,0.5}]e [@{right,0.5}]non ha legami corrispondenti, da qui i nodi lefte rightnon vengono mai creati.

opzione 1

Se ti va bene l'inizio e la fine dei legami, allora usa

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

opzione 2

Se si desidera mantenere lo stile senza vincoli, è possibile utilizzare @{<name>}<atom>per aggiungere un nodo a un atomo e utilizzare le \polymerdelimopzioni open xshifte close xshiftper regolare la posizione dei delimitatori. Nota in questo caso, lo spazio sinistro e destro non viene regolato automaticamente.

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

Opzione 3

Questa è una variante dell'opzione 1, in cui le obbligazioni iniziali e finali sono specificate ma non prelevate (dall'opzione obbligazionaria [,,,draw=none]). Per ottenere una migliore spaziatura orizzontale, anche questi due legami vengono accorciati (tramite l'opzione bond [,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}

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