Plusieurs crochets dans Chemfig Polymer - Impossible d'éliminer les erreurs

Aug 17 2020

J'ai du mal à obtenir une Reaktion montrant un processus de polymérisation en utilisant le chemfigdroit.

Voici le code que j'utilise:

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

Voici le résultat actuel:

Pour une raison quelconque, le deuxième support est ce que je veux, mais le premier ne l'est pas. Il semble qu'il n'obtient pas les spécifications faites par \polymerdelim, alors j'ai pensé que je devrais peut-être ajouter la ligne également à ce qui \chemfigprécède.

Si j'active la ligne

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

Je reçois ce message d'erreur:

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

Est-ce que quelqu'un peut m'aider?

Je vous remercie!

Réponses

2 muzimuzhiZ Aug 17 2020 at 10:43

D'après la documentation de chemfig, Section 13, la syntaxe @{<name>, <coeff>}ne peut être utilisée qu'au début de l'argument optionnel d'une liaison. Dans le second \chemfigde votre exemple

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

arguments optionnels [@{left,0.5}]et [@{right,0.5}]n'a pas de liaisons correspondantes, donc les nœuds leftet rightne sont jamais créés.

Option 1

Si vous êtes d'accord avec les liaisons de début et de fin, utilisez

\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

Si vous souhaitez conserver le style sans liaison, vous pouvez utiliser @{<name>}<atom>pour ajouter un nœud à un atome, utiliser des \polymerdelimoptions open xshiftet close xshiftajuster la position des délimiteurs. Notez que dans ce cas, les espaces gauche et droit ne sont pas réglés automatiquement.

\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

Il s'agit d'une variante de l'option 1, dans laquelle les obligations de début et de fin sont spécifiées mais non tirées (par option d'obligation [,,,draw=none]). Pour obtenir un meilleur espacement horizontal, ces deux liaisons sont également raccourcies (par l'option de liaison [,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}

Exemple complet:

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