summaryrefslogtreecommitdiff
path: root/macros/generic/chemfig/chemfig-fr.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/generic/chemfig/chemfig-fr.tex')
-rw-r--r--macros/generic/chemfig/chemfig-fr.tex614
1 files changed, 330 insertions, 284 deletions
diff --git a/macros/generic/chemfig/chemfig-fr.tex b/macros/generic/chemfig/chemfig-fr.tex
index c0b65b52d1..392f6dd8f8 100644
--- a/macros/generic/chemfig/chemfig-fr.tex
+++ b/macros/generic/chemfig/chemfig-fr.tex
@@ -126,7 +126,7 @@
\if\string b\detokenize\expandafter{\f@series}%
\lower0.01em\hbox{\itshape f}\kern-0.06em
\else
- \lower0.045em\hbox{\kern-0.05em \itshape f}\kern0.026em
+ \lower0.048em\hbox{\kern-0.04em \itshape f}\kern0.03em
\fi ig%
}%
\xspace
@@ -144,6 +144,7 @@
\newcommand*\CFval[1]{{\color{teal}\textlangle\textit{#1}\textrangle}}
\newcommand*\CFkv[2]{\CFkey{#1}{\color{teal}${}={}$}\CFval{#2}}
\newcommand*\CFparam[1]{\CFkey{#1}&\ifcat\relax\detokenize\expandafter\expandafter\expandafter{\useKV[chemfig]{#1}}\relax \textlangle\textit{vide}\textrangle\else\texttt{\detokenize\expandafter\expandafter\expandafter{\useKV[chemfig]{#1}}}\fi\\}
+\newcommand*\Chargeparam[1]{\CFkey{#1}&\ifcat\relax\detokenize\expandafter\expandafter\expandafter{\useKV[charge]{#1}}\relax \textlangle\textit{vide}\textrangle\else\texttt{\detokenize\expandafter\expandafter\expandafter{\useKV[charge]{#1}}}\fi}
\newcommand*\CFdelimparam[1]{\CFkey{#1}&\ifcat\relax\detokenize\expandafter\expandafter\expandafter{\useKV[CFdelimiters]{#1}}\relax \textlangle\textit{vide}\textrangle\else\texttt{\detokenize\expandafter\expandafter\expandafter{\useKV[CFdelimiters]{#1}}}\fi}
\usepackage[plainpages=false,pdfpagelabels,bookmarks=true,bookmarksopen=true,colorlinks=true,hyperfootnotes=false,filecolor=black,linkcolor=blue,urlcolor=magenta,pdfauthor={Christian TELLECHEA},pdftitle={ChemFig},pdfsubject={Dessiner des molécules 2D avec LaTeX},pdfkeywords={ChemFig},pdfcreator={LaTeX}]{hyperref}
@@ -194,8 +195,8 @@
\chemleft[{\subscheme[90]{%
\chemfig{R'-\chemabove{N}{\scriptstyle\oplus}~C-R}
\arrow{<->}[,0.75]
- \chemfig{R'-\lewis{2:,N}=@{a1}\chemabove{C}{\scriptstyle\oplus}-R}}}\chemright]
- \arrow{<=>[\chemfig{H_2@{a0}\lewis{0:2:,O}}]}[,1.1]
+ \chemfig{R'-\charge{90=\:}{N}=@{a1}\chemabove{C}{\scriptstyle\oplus}-R}}}\chemright]
+ \arrow{<=>[\chemfig{H_2@{a0}\charge{0=\:,90=\:}{O}}]}[,1.1]
\chemmove[red,-stealth,red,shorten <=3pt]{
\draw(a0)..controls+(90:10mm)and+(45:10mm)..([yshift=6pt]a1.45);}
\chemfig{*6(R\rlap{$'$}-N=(-R)-\chemabove{O}{\scriptstyle\oplus} H_2)}
@@ -215,54 +216,42 @@
\setitemize{leftmargin=3em,topsep=0pt,parsep=0pt,itemsep=0pt,label=--}
\part{Introduction}
-\section{Nouveau dans la v1.4}
-\subsection{Primitive \texttt{\textbackslash expanded}}
-\fbox{\vbox{\hsize\dimexpr\linewidth-2\fboxsep-2\fboxrule\relax\textbf{Important} : à partir de la version 1.41, \CF nécessite un moteur \TeX{} fournissant la primitive \texttt{\string\expanded}. Si ce n'est pas le cas, un message d'erreur sera émis et la version 1.4 sera chargée (dernière version fonctionnant sans la primitive \texttt{\string\expanded}) : il est vivement conseillé de mettre à jour sa distribution \LaTeX{} afin de profiter d'un moteur \TeX{} récent permettant l'utilisation de cette nouvelle primitive.}}\medbreak
-
-\subsection{Position et rotation des délimiteurs}
-La nouvelle clé \CFkey{h align} pour les délimiteurs permet, lorsqu'elle est mise à \CFval{false} de ne plus aligner automatiquement les délimiteurs horizontalement. Lorsque les délimiteurs ne sont plus sur une même horizontale, on peut les faire pivoter automatiquement en rendant la clé \CFkey{auto rotate} égale à \CFval{true}. On peut passer outre ce réglage automatique et choisir l'angle de rotation avec la clé \CFkey{rotate}. Voir page~\pageref{polymerdelim}.
-
-\subsection{Caractère privé}
-Dans le code de \CF, le caractère utilisé dans le nom des macros privées est «\verb|_|» (underscore) et non plus «\verb|@|» (arobe) : le préfixe des macros privées de \CF est «\verb|\CF_|». La majorité des utilisateurs de \CF ne doit pas devrait pas être concernée par ce changement, mais l'élaboration ou la maintenance de codes spécifiques tel que ceux présentés à la section «Créer ses propres flèches» à la page~\pageref{definearrow} qui font appel à des macros privées doit conduire à tenir compte de ce changement de catcode; cela va donc nécessiter une \emph{mise à jour du nom des macros} pour ceux qui ont eu recours aux macros privées de \CF. Pour rendre possible l'utilisation de «\verb|_|» dans les noms des macros, on doit exécuter l'ordre «\verb|\catcode`\_=11|» et pour revenir à un l'état normal «\verb|\catcode`\_=8|».
-
-\subsection{Caractère \#}
-Tous ceux qui programment en \TeX{} connaissent les extrêmes précautions qui doivent être prises avant d'utiliser le caractère «\verb|#|». Ce caractère est autorisé dans le code représentant la molécule, mais pour des raisons de fonctionnement interne à \TeX, il sera doublé si la commande \verb|\chemfig| se trouve dans l'argument d'une macro (comme \verb|\fbox| dans l'exemple ci-dessous). Pour éviter ce doublement, on peut écrire \verb|\#| ou avoir recours à la macro \verb|\CFhash| :
-
-\exemple{Caractère \#}/\setchemfig{atom sep=5em}\fboxsep=1pt
-1) \chemfig{A#-B_#-C^#}\par
-2) \fbox{\chemfig{A#-B_#-C^#}}\par
-3) \fbox{\chemfig{A\#-B_\#-C^\#}}\par
-4) \fbox{\chemfig{A\CFhash-B_\CFhash-C^\CFhash}}/
-
-Pour la macro \verb|\definesubmol|, le caractère \verb|#| est également autorisé, mais son emploi est plus complexe car il recouvre plusieurs cas qui sont examinés à la page~\pageref{definesubmol}.
-
-\subsection{Anciennes macros, nouvelle syntaxe}
-Les macros auparavant utilisées pour régler les paramètres de \CF sont abandonnées, ne sont plus définies et donc, \emph{produiront à une erreur de compilation} si elles sont exécutées:
-\begin{center}
- \begin{tabular}{*3l}
- \verb-\setcrambond-&\verb-\setatomsep-&\verb-\enablefixedbondlength-\\
- \verb-\disablefixedbondlength-&\verb-\setbondoffset-&\verb-\setdoublesep-\\
- \verb-\setangleincrement-&\verb-\setnodestyle-&\verb-\setbondstyle-\\
- \verb-\setlewis-&\verb-\setlewisdist-&\verb-\setstacksep-\\
- \verb-\setcompoundstyle-&\verb-\setarrowdefault-&\verb-\setandsign-\\
- \verb-\setarrowoffset-&\verb-\setcompoundsep-&\verb-\setarrowlabelsep-\\
- \verb-\enablebondjoin-&\verb-\disablebondjoin-&\verb-\schemedebug-
- \end{tabular}
-\end{center}
-Désormais, pour régler les paramètres de \CF on a le choix entre :
+\section{Nouveau dans la v1.5}
+\subsection{La macro \texttt{\protect\textbackslash charge}}
+La version 1.5 met en place les macros \verb|\charge| et \verb|\Charge| (voir page~\pageref{charge}) dont le but est de placer atour d'un atome des éléments arbitraires avec une grande précision. Ces macros remplaceront, à terme, les macros \verb|\lewis| et \verb|\Lewis| car elles sont bien plus puissantes et configurables, même si plus verbeuses quant à leur emploi. Il est donc important de noter que les macros \verb|\lewis| et \verb|\Lewis| \textcolor{red}{\bfseries ne sont plus documentées et seront supprimées de l'extension \CF}.
+
+\exemple{La macro \string\charge}/Charges simples autour de A :
+\Charge{0=\:,
+ 0:3pt[anchor=180]=$\color{red}\scriptstyle\delta^+$,
+ 120={\"["width=2pt,"style={draw=green,fill=gray}]},
+ 210=\|
+ }{A}
+\par
+Charges complexes autour de "B" :
+\Charge{%
+ 30:10pt={\chemfig[atom sep=6pt,double bond sep=1.5pt]{[:20]*6(=-=-=-)}},
+ 120:5pt[scale=0.4,rotate=30,anchor=center]=\chemfig{CH_2=CH_2},
+ -45[anchor=west,rotate=\chargeangle]={%
+ \begin{tikzpicture}
+ \node[anchor=mid west](a){$\oplus$};\draw[-stealth](a)--(-.5,0);
+ \end{tikzpicture}}%
+ }{B}/
+
+\subsection{Liaisons jointives}
+À partir de la version 1.5, deux liaisons sont jointives si l'atome qui se trouve entre-elles a toutes ses dimensions nulles (c'est-à-dire sa largeur, sa hauteur et sa profondeur au sens de \TeX). Auparavant, deux liaisons étaient jointives si l'atome était \emph{vide}, ce qui était plus restrictif.
+
+Conjointement à l'utilisation de la macro \verb|\charge|, cette nouvelle fonctionnalité rend possible de placer des charges dans une chaine sans avoir recours à des liaisons invisibles.
+\exemple{Liaisons jointives}/\chemfig{[:30]-\charge{90=\:}{}
+-[:-30]\charge{-90=\"}{}-\charge{90:2pt=$\delta^+$}{}-[:-30]}/
+
+\subsection{Mise à jour du manuel}
+Des explications plus détaillées sont données sur:
\begin{itemize}
- \item la macro \Verb|\setchemfig{<clés>=<valeurs>}| règle les paramètres selon la méthode de clés/valeurs pour le reste du document;
- \item la macro \Verb|\chemfig[<clés>=<valeurs>]| reçoit dans son argument optionnel les paramètres valables uniquement pour cette molécule;
- \item la macro \verb|\resetchemfig| restaure les paramètres à leurs valeurs par défaut.
+ \item le rôle que joue le premier atome rencontré dans le placement de la molécule dans son ensemble (page~\pageref{premieratome1} et \pageref{premieratome});
+ \item la façon dont \CF place les atomes dans un groupe d'atome (page~\pageref{placementatomes});
+ \item comment une liaison joint deux atomes (page~\pageref{liaisonentreatomes}).
\end{itemize}
-La liste des paramètres et leurs valeurs par défaut est présentée à la page~\pageref{listeparametres}.
-
-La syntaxe étoilée \verb|\chemfig*| n'est plus autorisée. Pour spécifier une longueur constante de liaisons, il faut utiliser la clé \CFkey{fixed length} et la positionner à \CFval{true}, voir page~\pageref{longueur.liaison}.
-
-\subsection{Les macros \texttt{\textbackslash lewis} et \texttt{\textbackslash Lewis}}
-Ces deux macros subissent également un léger changement de syntaxe. Leur argument optionnel entre crochets n'est plus destiné à recevoir le coefficient d'espacement diagonal, mais des \Verb|<clés>=<valeurs>| afin que les paramètres puissent être spécifiés individuellement pour chaque appel de la macro \verb|\lewix| ou \verb|\Lewis|. Voir page~\pageref{lewis}.
-
\section{Présentation}
Pour charger \CF, il faut écrire :
\begin{itemize}
@@ -359,8 +348,6 @@ Le \Verb|<code molécule>| contient les instructions pour tracer la molécule se
\item des macros.
\end{itemize}
-Dans tous les cas, \CF placera \emph{sur la ligne de base courante le premier atome rencontré}, qu'il soit vide ou pas. Dans les exemples figurant dans ce document, la ligne de base est tracée en gris clair.
-
\section{Groupes d'atomes}
Intrinsèquement, le dessin d'une molécule chimique consiste à relier par des traits de différents types des groupes d'atomes. Ainsi, dans la molécule \chemfig{O=O}, il y a 2 groupes d'atomes, chacun constitué d'un seul atome «O».
@@ -375,6 +362,13 @@ Par conséquent, le premier groupe d'atomes «$\mathrm{H_3C}$» est découpé en
Un espace est ignoré s'il est au début d'un groupe d'atomes.
+\section{Rôle du premier atome}\label{premieratome1}
+Il est important de comprendre que le placement de la molécule entière dépend du premier atome placé, c'est-à-dire le premier atome du premier groupement d'atomes. Pour ce premier atome, l'ancre d'attache de \TIKZ «\verb|base east|» est placé sur la ligne de base de la ligne en cours (représentée en gris dans les exemples de ce manuel).
+
+\exemple{Influence du premier atome}/\chemfig{A-B}\qquad
+\chemfig{-B}\qquad
+\chemfig{A^1-B}/
+
\section{Différents types de liaisons}
Pour \CF, les liaisons entre 2 atomes sont de 9 types, correspondant aux caractères \boxedfalseverb-, \boxedfalseverb=, \boxedfalseverb~, \boxedfalseverb>, \boxedfalseverb<, \boxedfalseverb{>:}, \boxedfalseverb{<:}, \boxedfalseverb{>|} et \boxedfalseverb{<|} :\label{types.liaisons}
\begin{center}
@@ -824,7 +818,7 @@ Pour fixer les idées prenons l'exemple d'un effet mésomère impliquant une dou
Les macros \verb|\schemestart|, \verb|\schemestop|, \verb|\arrow| et \verb|\+| sont exposées au chapitre \ref{schemas}, à partir de la page \pageref{schemas}.
\exemple{Effet mésomère 1}/\schemestart
- \chemfig{@{a1}=_[@{db}::30]-[::-60]\lewis{2,X}}
+ \chemfig{@{a1}=_[@{db}::30]-[::-60]\charge{90=\|}{X}}
\arrow{<->}
\chemfig{\chemabove{\vphantom{X}}{\ominus}-[::30]=_[::-60]
\chemabove{X}{\scriptstyle\oplus}}
@@ -840,7 +834,7 @@ Pour relier les nœuds «db» et «a1», nous avons utilisé la syntaxe suivante
Le style de flèche par défaut dans \verb|\chemmove| est «CF». Dans cet exemple nous demandons une flèche (\verb/[->]/) et nous utilisons 2 points de contrôle\footnote{Pour connaître toutes les façons de relier deux nœuds avec \TIKZ, lire la documentation de ce package.}. Ceux-ci seront situés en coordonnées polaires à 100\degres{} et 5~mm de «db» pour le premier et à 145\degres{} et 5~mm de «a1» pour le second. Il ne faut pas être effrayé par cette syntaxe qui peut paraître compliquée en première lecture car son utilisation se réduit dans la plupart des cas à un simple copier-coller dans lequel on modifie juste le nom des nœuds et les coordonnées polaires des points de contrôle. Ce que nous allons vérifier tout de suite avec l'ajout d'une flèche partant du doublet non liant (nœud «dnl») vers la liaison simple (nœud «sb»).
\exemple{Effet mésomère 2}/\schemestart
- \chemfig{@{a1}=_[@{db}::30]-[@{sb}::-60]@{dnl}\lewis{2,X}}
+ \chemfig{@{a1}=_[@{db}::30]-[@{sb}::-60]@{dnl}\charge{90=\|}{X}}
\arrow{<->}
\chemfig{\chemabove{\vphantom{X}}{\ominus}-[::30]=_[::-60]
\chemabove{X}{\scriptstyle\oplus}}
@@ -851,7 +845,7 @@ Le style de flèche par défaut dans \verb|\chemmove| est «CF». Dans cet exemp
Pour notre nouvelle flèche nous avons fixé les points de contrôle comme suit : un angle de 90\degres{} à 4~mm de «dnl» et un angle de 45\degres{} à 4~mm de «sb». Mais nous ne sommes pas entièrement satisfaits car nous aimerions que la flèche ne touche pas le trait représentant le doublet non liant. Pour cela nous allons ajouter quelques options à notre flèche.
\exemple{Effet mésomère 3}/\schemestart
- \chemfig{@{a1}=_[@{db}::30]-[@{sb}::-60]@{dnl}\lewis{2,X}}
+ \chemfig{@{a1}=_[@{db}::30]-[@{sb}::-60]@{dnl}\charge{90=\|}{X}}
\arrow{<->}
\chemfig{\chemabove{\vphantom{X}}{\ominus}-[::30]=_[::-60]
\chemabove{X}{\scriptstyle\oplus}}
@@ -865,7 +859,7 @@ L'option «\verb|shorten <=3pt|» indique que le point de départ de la flèche
On peut utiliser toute la puissance des instructions de \TIKZ pour modifier le dessin de la flèche. Ici, nous changeons l'extrémité de la flèche partant de la double liaison en «\verb|-stealth|», nous la dessinons en pointillés d'épaisseur fine et rouge. Nous rajoutons également la lettre $\pi$ au dessus de la flèche en son milieu :
\exemple{Effet mésomère 4}/\schemestart
- \chemfig{@{a1}=_[@{db}::30]-[@{sb}::-60]@{dnl}\lewis{2,X}}
+ \chemfig{@{a1}=_[@{db}::30]-[@{sb}::-60]@{dnl}\charge{90=\|}{X}}
\arrow{<->}
\chemfig{\chemabove{\vphantom{X}}{\ominus}-[::30]=_[::-60]
\chemabove{X}{\scriptstyle\oplus}}
@@ -878,25 +872,25 @@ On peut utiliser toute la puissance des instructions de \TIKZ pour modifier le d
(dnl).. controls +(90:4mm) and +(45:4mm).. (sb);}/
Dans l'exemple suivant nous allons voir comment indiquer la position de l'ancre de départ ou d'arrivée. Si nous écrivons
-\exemple{Ancre de départ et d'arrivée 1}/\chemfig{@{x1}\lewis{1:,X}}
+\exemple{Ancre de départ et d'arrivée 1}/\chemfig{@{x1}\charge{45=\:}{X}}
\hspace{2cm}
-\chemfig{@{x2}\lewis{2|,X}}
+\chemfig{@{x2}\charge{90=\|}{X}}
\chemmove{
\draw[shorten >=4pt](x1).. controls +(90:1cm) and +(90:1cm).. (x2);}/
Nous constatons que l'ancre de départ de notre flèche ne pointe pas correctement sur nos électrons. La flèche part du milieu du bord supérieur du nœud. En effet, nous avons choisi un angle de départ de 90\degres{} et \TIKZ fait donc partir la flèche de l’ancre «x1.90» qui correspond à l’intersection de la demi droite partant du centre du nœud «x1» et faisant un angle avec l’horizontale de 90\degres{} avec le bord du nœud qui est un rectangle. Pour obtenir le départ de la flèche d’où nous voulons, nous devons spécifier sa position. Après quelques tâtonnements, c’est «x1.57» :
-\exemple{Ancres de départ et d'arrivée 2}/\chemfig{@{x1}\lewis{1:,X}}
+\exemple{Ancres de départ et d'arrivée 2}/\chemfig{@{x1}\charge{45=\:}{X}}
\hspace{2cm}
-\chemfig{@{x2}\lewis{2|,X}}
+\chemfig{@{x2}\charge{90=\|}{X}}
\chemmove[shorten <=4pt,shorten >=4pt]{
- \draw(x1.57).. controls +(60:1cm) and +(120:1cm).. (x2);}/
+ \draw(x1.57).. controls +(60:1cm) and +(120:1cm).. (x2.90);}/
Dans certains cas il sera plus facile d'utiliser les coordonnées cartésiennes pour les points de contrôle. Ici, nous n'utilisons qu'un seul point de contrôle situé à 1~cm horizontalement de «x1» et 1,5~cm verticalement :
-\exemple{Un seul point de contrôle}/\chemfig{@{x1}\lewis{1:,X}}
+\exemple{Un seul point de contrôle}/\chemfig{@{x1}\charge{45=\:}{X}}
\hspace{2cm}
-\chemfig{@{x2}\lewis{2|,X}}
+\chemfig{@{x2}\charge{90=\|}{X}}
\chemmove[shorten <=4pt,shorten >=4pt]{
- \draw(x1.57).. controls +(1cm,1.5cm).. (x2);}/
+ \draw(x1.57).. controls +(1cm,.8cm).. (x2.90);}/
Dans ce cas nous plaçons un point de contrôle à 1~cm horizontalement et 2~cm verticalement de «x1». Tous les objets graphiques dessinées par l’intermédiaire de la commande \verb|\chemmove| sont faits en surimpression et ne seront pas comptés dans les boîtes englobantes. On peut le constater sur l’exemple précédent.
@@ -904,18 +898,18 @@ Dans ce cas nous plaçons un point de contrôle à 1~cm horizontalement et 2~cm
Grâce à l'option \verb|remember picture| qui est passée à tous les environnements «tikzpicture» nous pouvons facilement dessiner les flèches indiquant les mécanismes réactionnels. Prenons comme exemple la première étape de la réaction d'estérification.
\exemple*{Estérification: étape 1}/\setchemfig{atom sep=7mm}
\schemestart
- \chemfig{R-@{dnl}\lewis{26,O}-H}
+ \chemfig{R-@{dnl}\charge{90=\|,-90=\|}{O}-H}
\+
\chemfig{R-@{atoc}C([6]-OH)=[@{db}]O}
\arrow(.mid east--){<->[\chemfig{@{atoh}\chemabove{H}{\scriptstyle\oplus}}]}
\schemestop
\chemmove[shorten <=2pt]{
- \draw(dnl)..controls +(90:1cm)and+(north:1cm)..(atoc);
- \draw[shorten >=6pt](db)..controls +(north:5mm)and+(100:1cm)..(atoh);}/
+ \draw(dnl)..controls +(90:1cm)and+(north:1cm)..(atoc);
+ \draw[shorten >=6pt](db)..controls +(north:5mm)and+(100:1cm)..(atoh);}/
L'utilisation de la commande \Verb|\chemabove{<code>}{<matériel>}| ne change pas les dimensions de la boîte englobante du \Verb|<code>|. Pour cette raison on peut rencontrer certaines difficultés pour pointer sur le matériel indiquant la charge portée ($\oplus$ ou $\ominus$). Dans l'exemple ci-dessus la solution est de créer un point de contrôle avec un angle de 110\degres{} à 1~cm de «atoh» et de raccourcir la flèche de 6pt. Dans l'exemple suivant, seconde étape de la réaction d'estérification, on peut voir que la flèche peut prendre des formes plus compliquées sans forcément surcharger le code.
\exemple{Estérification: étape 2}/\setchemfig{atom sep=7mm}
-\chemfig{R-O-C(-[2]R)(-[6]OH)-@{dnl}\lewis{26,O}H}\hspace{1cm}
+\chemfig{R-O-C(-[2]R)(-[6]OH)-@{dnl}\charge{90=\|,-90=\|}{O}H}\hspace{1cm}
\chemfig{@{atoh}\chemabove{H}{\scriptstyle\oplus}}
\chemmove{
\draw[shorten <=2pt, shorten >=7pt]
@@ -1037,65 +1031,7 @@ Avec \CFkey{node style}, on peut choisir la couleur des nœud dessinés par \TIK
\setchemfig{atom style={rotate=20}}\chemfig{A-B-[2]C}\par\medskip
\setchemfig{atom style={scale=0.5}}\chemfig{A-B-[2]C}/
-\section{Alignement vertical}\label{alignement.vertical}
-Dans certains cas de molécules semi développées dont les liaisons sont horizontales, le placement des groupes d'atomes est incorrect.
-
-Un examen attentif de l'exemple suivant révèle que les groupes d'atomes ne sont pas correctement alignés sur la \falseverb{ligne de base} :
-\exemple*{Placement horizontal}/\Huge\setchemfig{atom sep=2em}
-\chemfig{A^1-B-C-D}\qquad
-\chemfig{E_1-F-G-H}/
-
-Il est étonnant que le deuxième atome soit correctement aligné alors que les deux derniers subissent un décalage vertical qui semblent être la conséquence de la hauteur différente de la boîte englobant le premier atome «\verb-A^1-» et «\verb-E_1-».
-
-Pour comprendre ce phénomène, il faut examiner comment \CF place les groupes d'atomes les uns par rapport aux autres. Pour cela, limitons nous aux liaisons horizontales ce qui permet d'employer un vocabulaire particulier, mais l'algorithme est le même pour les autres inclinaisons. En fait, une liaison horizontale part du milieu du côté droit de la boîte englobant l'atome d'où part cette liaison. L'atome d'arrivée est positionné de telle sorte que le milieu du côté gauche de sa boîte englobante soit à l'extrémité de la liaison. Il en découle que le placement vertical de l'atome d'arrivée dépend de l'encombrement vertical de l'atome de départ. Pour limiter ce phénomène, \CF ajoute devant chaque atome d'arrivée le \falseverb{\vphantom} de l'atome de départ, mais sans l'inclure dans le contenu de cet atome d'arrivée : ce \falseverb{\vphantom} n'est donc pas destiné à se répercuter sur les atomes suivants. Les atomes qui restent dans chaque groupe sont alignés de telle sorte que leur ligne de base coïncide avec la ligne de base de l'atome précédent.
-
-On peut donc mieux expliquer l'alignement défectueux constaté. Les atomes «\verb-B-» et «\verb-F-» sont correctement alignés car ils tiennent compte de la hauteur des atomes qui les précèdent grâce à leur \falseverb\vphantom. Pour les atomes «\verb-C-» et «\verb-F-», la hauteur des atomes précédents est prise en compte, mais celle des atomes «\verb-A^1-» et «\verb-E_1-» est oubliée ! Il en résulte que, dépendant de l'altitude de ces liaisons, ces atomes sont un peu trop haut ou trop bas.
-
-On peut mettre en évidence ce phénomène en rendant visible les boîtes englobantes des atomes où l'on voit clairement que les atomes «\verb-B-» et «\verb-F-» ont des boîtes englobantes dont la hauteur qui tient compte des hauteurs des atomes précédents :
-\exemple*{Placement horizontal et boîtes englobantes}/\Huge\setchemfig{atom sep=2em}
-\fboxsep=0pt
-\renewcommand\printatom[1]{\fbox{\ensuremath{\mathrm#1}}}
-\chemfig{A^1-B-C-D}\qquad
-\chemfig{E_1-F-G-H}/
-
-Aucune solution automatique n'étant satisfaisante, on peut contourner manuellement ce problème en plaçant \emph{à l'intérieur} du troisième atome un \falseverb{\vphantom} ayant la même hauteur que le premier pour que cette hauteur se répercute sur les suivants :
-\exemple*{Contournement du placement vertical}/\Huge\setchemfig{atom sep=2em}
-\chemfig{A^1-B-{\vphantom{A^1}C}-D}\qquad
-\chemfig{E_1-F-{\vphantom{E_1}G}-H}/
-
-\label{chemskipalign}Il est possible pour n'importe quel groupe d'atomes de désactiver momentanément le mécanisme d'ajustement d'alignement et neutraliser le \falseverb\vphantom. Il suffit pour cela de placer dans le groupe d'atomes la commande \falseverb{\chemskipalign} : l'alignement reprendra au groupe d'atomes suivant comme si le groupe d'atome contenant \falseverb{\chemskipalign} n'avait pas existé. On peut se rendre compte sur l'exemple suivant de l'effet de cette instruction qui a pour effet de placer le point de référence de la boîte contenant le premier atome au niveau de la liaison qui arrive de gauche. Les boîtes englobant les atomes ont été dessinées à la seconde ligne :
-
-\exemple[60]{Désactivation du mécanisme d'alignement}/\large
-\chemfig{A-.-B}\quad
-\chemfig{A-\chemskipalign.-B}\par\bigskip
-\fboxsep=0pt
-\renewcommand\printatom[1]{\fbox{\ensuremath{\mathrm{#1}}}}
-\chemfig{A-.-B}\quad
-\chemfig{A-\chemskipalign.-B}/
-
-Cette commande est à utiliser avec précaution car l'alignement des atomes dans le groupe d'atomes à venir peut être perturbé. En règle générale, tout se passera bien si le groupe d'atomes dans lequel figure \falseverb{\chemskipalign} contient \emph{un seul atome} dont la hauteur et la profondeur sont \emph{inférieures} à celles de l'atome qui précède et qui suit, et si les atomes qui précèdent et suivent ont leur profondeur et hauteur égales. Voici par exemple la mésaventure qui arrive lorsque le groupe d'atomes contient 2 atomes, ici «\verb-\chemskipalign.-» et «\verb-B-» :
-\exemple{Conséquence de la commande \string\chemskipalign}/\large
-\fboxsep=0pt
-\renewcommand\printatom[1]{\fbox{\ensuremath{\mathrm{#1}}}}
-\chemfig{A-\chemskipalign.B-C}/
-
-Cette fonctionnalité peut parfois s'avérer utile. Mettons que l'on veuille dessiner la molécule
-\begin{center}
- \catcode`;12
- \def\emptydisk{\chemskipalign\tikz\draw(0,0)circle(2pt);}%
- \def\fulldisk{\chemskipalign\tikz\fill(0,0)circle(2pt);}%
- \chemfig{A-#(,0pt)\emptydisk-#(0pt,0pt)\fulldisk-#(0pt)B}%
-\end{center}
-On peut définir les commandes qui vont dessiner les disques vides et pleins avec \TIKZ. Afin que ces disques soit à la bonne hauteur, c'est-à-dire à la hauteur de la liaison qui leur arrive dessus, on se servira de la commande \falseverb{\chemskipalign}. Pour que, à la deuxième ligne de l'exemple ci dessous, les liaisons «collent» aux disques, nous utiliserons la possibilité de modifier le retrait d'une liaison avec le caractère «\verb-#-»\, fonctionnalité qui a été vue à la page~\pageref{modif.retrait}. Pour les utilisateurs ayant chargé le package babel avec l'option «frenchb», il est nécessaire de désactiver le caractère actif «\verb-;-» qui marque la fin d'une instruction \TIKZ et qui sinon ne serait pas reconnu en tant que tel. C'est pourquoi on se place dans un groupe où l'on écrit l'instruction \verb-\shorthandoff{;}- :
-\begingroup\catcode`;12 \catcode`#12
-\exemple{Utilisation de \string\chemskipalign\ et #}/\begingroup
-\shorthandoff{;}
-\def\emptydisk{\chemskipalign\tikz\draw(0,0)circle(2pt);}
-\def\fulldisk{\chemskipalign\tikz\fill(0,0)circle(2pt);}
-\chemfig{A-\emptydisk-\fulldisk-B}\par
-\chemfig{A-#(,0pt)\emptydisk-#(0pt,0pt)\fulldisk-#(0pt)B}
-\endgroup/\endgroup
-
+definesubmol
\section{Liaisons doubles déportées}
Toutes les liaisons doubles sont composées de 2 traits et ces traits sont tracés de part et d'autre de la ligne théorique que prendrait la liaison simple. Il est possible de déporter cette liaison double de telle sorte qu'un des deux traits soit sur cette ligne théorique. L'autre trait étant alors au dessus ou au dessous de la liaison. En fait, il est plus rigoureux de dire «à gauche» ou «à droite» de la ligne théorique lorsqu'on parcourt la liaison dans le sens du tracé.
@@ -1200,89 +1136,228 @@ En dehors des cas où le caractère «\verb|#|» est suivi d'un chiffre compris
Dans cet exemple, seuls \verb|#1| et \verb|#2| sont compris comme les arguments de la sous molécule \verb|\X|. Les autres «\verb|#|» sont affichés tels quels dans la molécule (cas de \verb|#3| et \verb|#4|) ou compris comme le caractère spécifiant le réglage fin du retrait des liaisons.
-\section{Décorations}
-\subsection{Formule de Lewis}\label{lewis}
-La macro \falseverb{\lewis} permet de placer des paires d'électrons, des électrons ou une lacune. On utilise cette syntaxe :
+\section{Placement des atomes}
+\subsection{Premier atome}\label{premieratome}
+Comme expliqué à la page~\pageref{premieratome1}, le premier atome rencontré (qu'il soit vide ou pas) est celui qui est placé sur la ligne de base, représentée en gris sur les exemples de ce manuel. Le choix de ce premier atome conditionne donc le placement de tous les autres relativement à lui et influe souvent sur le placement de la molécule toute entière.
+
+\exemple{Premier atome}/\chemfig{H-[7]C(-[5]H)=C(-[1]H)-[7]H}\qquad
+\chemfig{C(-[3]H)(-[5]H)=C(-[1]H)-[7]H}/
+
+\subsection{Groupe d'atomes}\label{placementatomes}
+Dans un groupe d'atomes, les atomes sont placés les uns après les autres, dans un ordre bien établi:
+\begin{itemize}
+ \item le premier qui est placé (que l'on va appeler «atome référence») est celui sur lequel arrive la liaison; dans le cas du début de la molécule, c'est l'atome de gauche est l'atome référence;
+ \item les atomes se trouvant à droite de l'atome référence sont ensuite placés de gauche à droite;
+ \item les atomes se trouvant à gauche de l'atome de référence sont finalement placés de droite à gauche.
+\end{itemize}
+
+Dans le groupe d'atomes ainsi formé, les lignes de base de chaque atome sont sur \emph{une même horizontale}, autrement dit, les atomes sont tous alignés sur une même ligne horizontale.
+
+Dans l'exemple ci-dessous dont le code serait «\verb|\chemfig{A[:-60,,,3]BCDEF}|» l'atome de référence du 2\ieme{} groupe d'atomes est «D» car on demande que la liaison arrive sur le 3\ieme{} atome. Sous chaque atome de ce groupe figure le numéro d'ordre dans lequel l'atome est affiché:
\begin{center}
- \Verb|\lewis{<n1><n2>...<ni>,<atome>}|
+ \def\0#1#2{%
+ \vtop{%
+ \def\tempprintatom##1{\ensuremath{\mathrm{##1}}}%
+ \setbox0\hbox{\tempprintatom{#1}}%
+ \def\tempvrule{\vrule height.33ex width.4pt}%
+ \offinterlineskip\copy0 \kern2pt
+ \hbox to\wd0{\kern.5pt \tempvrule\hrulefill\tempvrule\kern.5pt}\kern2pt
+ \hbox to\wd0{\hss$\scriptstyle#2$\hss}}}
+ \chemfig{A-[:-60,,,3]\0{B}{5}|\0{C}{4}|\0{D}{1}|\0{E}{2}|\0{F}{3}}
\end{center}
-où les \Verb-<n1>-\ldots\Verb-<ni>- représentent les positions (en multiples de 45\degres) désirées autour de l'\Verb-<atome>-. Ces entiers doivent être compris entre 0 et 7.
-Cette commande peut également être utilisée en dehors de l'argument de \verb-\chemfig- :
-\exemple{La macro \string\lewis}|\lewis{0246,A}\par\medskip
-\lewis{1357,B}\par\medskip
-\chemfig{H-\lewis{26,O}-S(=[2]\lewis{13,O})
-(=[6]\lewis{57,O})-\lewis{26,O}-H}|
+\subsection{Liaisons entre atomes}\label{liaisonentreatomes}
+Une liaison partant d'un atome passerait, si on la prolongeait, par le centre de sa boite englobante. L'atome d'arrivée est placé au bout de la liaison de telle sorte que le centre de sa boite englobante soit dans le prolongement de la liaison. Par conséquent, une liaison entre deux atomes passe, par prolongement, par les centres de leurs boites englobantes, comme l'illustre cet exemple:
+\begin{center}
+\fboxsep=.25pt
+\renewcommand\printatom[1]{\fbox{\ensuremath{\mathrm{#1}}}}
+\setchemfig{chemfig style={line width=1pt}}
+\Large
+\chemfig{A@ABC-[:65,,2,3]DE@BFG}
+\chemmove{%
+ \draw[red,fill=red] (A.center)circle(.2ex);
+ \draw[blue,fill=blue](B.center)circle(.2ex);
+ \draw[gray,-,dashed,shorten <=-1.5em, shorten >=-1.5em](A.center)--(B.center);
+}
+\end{center}
+Ce mécanisme peut créer des défauts d'alignements entre groupes d'atomes, particulièrement visibles lorsque les liaisons sont horizontales. Tout se passe bien lorsque les atomes ont les mêmes dimensions verticales; en revanche, il suffit qu'un atome de départ soit haut (avec exposant) ou profond (avec indice) et que l'atome d'arrivée ait une dimension verticale différente pour que l'alignement soit cassé.
+\exemple*{Placement horizontal}/\Huge\setchemfig{atom sep=2em}
+\chemfig{A^1-B-C-D}\qquad
+\chemfig{E_1-F-G-H}/
+
+Il est étonnant que le deuxième atome soit correctement aligné alors que les deux derniers subissent un décalage vertical. L'explication tient au fait que \CF ajoute devant chaque atome d'arrivée le \falseverb{\vphantom} de l'atome de départ, mais sans l'inclure dans le contenu de cet atome d'arrivée : ce \falseverb{\vphantom} n'est donc pas destiné à se répercuter sur les atomes suivants. On peut mettre en évidence ce phénomène en rendant visible les boîtes englobantes des atomes où l'on voit clairement que les atomes «\verb-B-» et «\verb-F-» ont des boîtes englobantes dont la hauteur qui tient compte des hauteurs des atomes précédents :
+\exemple*{Placement horizontal et boîtes englobantes}/\Huge\setchemfig{atom sep=2em}
+\fboxsep=0pt
+\renewcommand\printatom[1]{\fbox{\ensuremath{\mathrm#1}}}
+\chemfig{A^1-B-C-D}\qquad
+\chemfig{E_1-F-G-H}/
-Si au lieu d'une paire représentée par une ligne, on souhaite deux points, on fait suivre l'entier par «\verb-:-». Si on veut dessiner un électron, il suffit de le faire suivre par un «\verb-.-». Pour dessiner une lacune, on le fait suivre d'un «\verb-|-» :
-\exemple{Décorations de Lewis}*\lewis{0:2:4:6:,C}\qquad\lewis{1:3:5:7:,C}\par\bigskip
-\lewis{0.2.4.6.,C}\qquad\lewis{1.3.5.7.,C}\par\bigskip
-\lewis{0:2.4|,X}\par\bigskip
-Ion oxonuim : \chemfig{H-\lewis{5|7,O^+}(-[2]H)-H}*
+Aucune solution automatique n'étant satisfaisante, on peut contourner manuellement ce problème en créant un atome de fin étant un «strut» égal à \verb|\vphantom{X}|: ainsi, l'atome de départ a une hauteur «normale» et aucun décalage ne se répercutera sur le groupe d'atomes suivant. On utilise ici une sous-molécule pour plus de concision.
+\exemple*{Contournement du placement vertical}/\Huge\setchemfig{atom sep=2em}
+\definesubmol\I{\vphantom{X}}
+\chemfig{A^1|!\I-B-C-D}\qquad
+\chemfig{E_1|!\I-F-G-H}/
+L'inconvénient est que la première liaison est trop longue car l'atome de départ a désormais une dimension horizontale nulle.
+
+Si l'on est \emph{vraiment certain} de mesurer les conséquences que cela aura sur la molécule et surtout si elle s'y prête, on peut redéfinir \verb|\printatom| pour qu'il force la boite englobante de l'atome a avoir des dimensions verticales fixées; par exemple celle de «$\mathrm{X^1_1}$».
+\exemple*{Redéfinition de \string\printatom}/\Huge\setchemfig{atom sep=2em}
+\let\oldprintatom\printatom
+\renewcommand\printatom[1]{%
+ \begingroup
+ \setbox0\hbox{\oldprintatom{X^1_1}}%
+ \edef\tmp{\ht0=\the\ht0\relax\dp0=\the\dp0\box0 }%
+ \setbox0\hbox{\oldprintatom{#1}}%
+ \ifnum1\ifdim\ht0=0pt0\fi\ifdim\dp0=0pt0\fi\ifdim\wd0=0pt0\fi<1000
+ \tmp
+ \fi
+ \endgroup
+}
+\chemfig{A^1-B-C-D}\qquad
+\chemfig{E_1-F-G-H}/
-Toutes les décorations dessinées par l'intermédiaire de \falseverb{\lewis} ne sont pas comptabilisées dans la boîte englobante de l'atome. Les décorations sont faites en surimpression. On en voit une conséquence dans les deux exemples ci-dessus où les cadre ne semblent ne plus être correctement ajustés au dessin de la molécule qui dépasse légèrement vers le bas. Ceci sera parfois observable dans ce chapitre «Décorations» où l'on présente des commandes qui ne modifient pas la boîte englobante.
+\subsection{La macro \texttt{\char`\\chemskipalign}}\label{chemskipalign}
+Il est possible pour n'importe quel groupe d'atomes de désactiver momentanément le mécanisme d'ajustement d'alignement et neutraliser le \falseverb\vphantom. Il suffit pour cela de placer dans le groupe d'atomes la commande \falseverb{\chemskipalign} : l'alignement reprendra au groupe d'atomes suivant comme si le groupe d'atome contenant \falseverb{\chemskipalign} n'avait pas existé. On peut se rendre compte sur l'exemple suivant de l'effet de cette instruction qui a pour effet de placer le point de référence de la boîte contenant le premier atome au niveau de la liaison qui arrive de gauche. Les boîtes englobant les atomes ont été dessinées à la seconde ligne :
-\label{Lewis}Il faut noter que la macro \falseverb{\Lewis} fonctionne de la même façon que la macro \verb-\lewis- mais les décorations seront \emph{prises en compte} dans la boîte englobante.
+\exemple[60]{Désactivation du mécanisme d'alignement}/\large
+\chemfig{A-.-B}\quad
+\chemfig{A-\chemskipalign.-B}\par\bigskip
+\fboxsep=0pt
+\renewcommand\printatom[1]{\fbox{\ensuremath{\mathrm{#1}}}}
+\chemfig{A-.-B}\quad
+\chemfig{A-\chemskipalign.-B}/
-On peut le constater de façon plus évidente en traçant une \verb-\fbox- autour des atomes décorés :
-\exemple{Boîte englobante et macro \string\lewis}*\fboxsep0pt
-\fbox{\lewis{0.2.4.6.,A}}\quad\fbox{\Lewis{0.2.4.6.,A}}\par\medskip
-\fbox{\lewis{13,B}}\quad\fbox{\Lewis{13,B}}*
+Cette commande est à utiliser avec précaution car l'alignement des atomes dans le groupe d'atomes à venir peut être perturbé. En règle générale, tout se passera bien si le groupe d'atomes dans lequel figure \falseverb{\chemskipalign} contient \emph{un seul atome} dont la hauteur et la profondeur sont \emph{inférieures} à celles de l'atome qui précède et qui suit, et si les atomes qui précèdent et suivent ont leur profondeur et hauteur égales. Voici par exemple la mésaventure qui arrive lorsque le groupe d'atomes contient 2 atomes, ici «\verb-\chemskipalign.-» et «\verb-B-» :
+\exemple{Conséquence de la commande \string\chemskipalign}/\large
+\fboxsep=0pt
+\renewcommand\printatom[1]{\fbox{\ensuremath{\mathrm{#1}}}}
+\chemfig{A-\chemskipalign.B-C}/
-\label{setlewis}On peut régler plusieurs paramètres à l'aide des \chevrons{clés} suivantes :
-\begin{itemize}
- \item \CFkv{lewis | width}{dim} : est la largeur du rectangle représentant une lacune obtenue avec «|». Elle vaut \CFval{0.3ex} par défaut;
- \item \CFkv{lewis sep}{dim}: est la distance entre la boîte englobant l'atome et la décoration. Elle vaut \CFval{0.4ex} par défaut;
- \item \CFkv{lewis length}{dim} : est la longueur du trait représentant la paire d'électrons. Elle vaut \CFval{1.5ex} par défaut;
- \item \CFkv{lewis style}{code tikz} : est le code qui sera passé directement à \TIKZ. Ce code est \CFval{vide} par défaut;
- \item \CFkv{lewis dist}{dim} : est la distance entre les deux disques dessinés avec «\string:». Cette distance vaut \CFval{0.3em} par défaut;
- \item \CFkv{lewis radius}{dim} : est le rayon du disque d'une décoration de Lewis «.» ou «\string:». Il vaut \CFval{0.15ex} par défaut;
- \item \CFkv{lewis diag coeff}{décimal} : est le coefficient d'espacement diagonal qui vaut \CFval{1} par défaut.
-\end{itemize}
+Cette fonctionnalité peut parfois s'avérer utile. Supposons que l'on veuille dessiner la molécule
+\begin{center}
+ \catcode`;12
+ \def\emptydisk{\chemskipalign\tikz\draw(0,0)circle(2pt);}%
+ \def\fulldisk{\chemskipalign\tikz\fill(0,0)circle(2pt);}%
+ \chemfig{A-#(,0pt)\emptydisk-#(0pt,0pt)\fulldisk-#(0pt)B}%
+\end{center}
+On peut définir les commandes qui vont dessiner les disques vides et pleins avec \TIKZ. Afin que ces disques soit à la bonne hauteur, c'est-à-dire à la hauteur de la liaison qui leur arrive dessus, on se servira de la commande \falseverb{\chemskipalign}. Pour que, à la deuxième ligne de l'exemple ci dessous, les liaisons «collent» aux disques, nous utiliserons la possibilité de modifier le retrait d'une liaison avec le caractère «\verb-#-»\, fonctionnalité qui a été vue à la page~\pageref{modif.retrait}.
+\begingroup\catcode`;12 \catcode`#12
+\exemple{Use of \string\chemskipalign\ and #}/\def\emptydisk{\chemskipalign\tikz\draw(0,0)circle(2pt);}
+\def\fulldisk{\chemskipalign\tikz\fill(0,0)circle(2pt);}
+\chemfig{A-\emptydisk-\fulldisk-B}\par
+\chemfig{A-#(,0pt)\emptydisk-#(0pt,0pt)\fulldisk-#(0pt)B}
+/\endgroup
-Il faut noter que les paramètres spécifiques aux décorations de Lewis peuvent être passées par
+\section{La macro \texttt{\char`\\charge}}\label{charge}
+\subsection{Présentation}
+La macro \verb|\charge|, qui requiert deux argument obligatoires, permet de disposer des éléments ---~que l'on appellera \chevrons{charges}~--- autour d'un \chevrons{atome}; sa syntaxe est la suivante
+\begin{center}
+ \Verb|\charge{[<paramètres généraux>]<position>[<code tikz>]=<charge>}{<atome>}|
+\end{center}
+où:
\begin{itemize}
- \item \Verb|\setchemfig{<clés>=<valeurs>}| afin qu'ils perdurent pour la suite du document;
- \item \Verb|\chemfig[<clés>=<valeurs>]| et dans ce cas, les réglages sont effectifs dans la molécule en cours;
- \item \Verb|\lewis[<clés>=<valeurs>]| pour que les paramètres soient spécifiques à cette exécution de la macro \verb|\lewis|.
+ \item l'\chevrons{atome} est à priori constitué d'une ou deux lettres, mais peut également être vide;
+ \item la \chevrons{charge} est un contenu \emph{arbitraire} qui sera placé autour de l'\chevrons{atome}. Peu de contraintes existent sur cette \chevrons{charge}, il peut donc être du texte (en mode math si besoin), voire même du code \TIKZ ou une molécule dessinée avec \verb|\chemfig|;
+ \item les \chevrons{paramètres généraux>} (optionnels) sont une liste de \chevrons{clés}${}={}$\chevrons{valeurs} spécifiant les options que doit satisfaire cette exécution de la macro \verb|\charge|. Ces \chevrons{clés} et \chevrons{valeurs} sont décrites plus bas;
+ \item la \chevrons{position} est de la forme \chevrons{angle}\verb-:-\chevrons{décalage}, mais il est possible de ne spécifier que l'\chevrons{angle}, auquel cas, le \chevrons{décalage} sera pris égal à \verb|0pt|;
+ \item le \chevrons{code tikz}, optionnel, contient les options passées à la macro \verb|\node| de \TIKZ, chargée de placer la \chevrons{charge}.
\end{itemize}
-La dernière façon de faire, certes permet des réglages individuels, mais doit être utilisée avec précaution lorsque la macro \verb|\lewis| se trouve dans l'argument de \verb|\chemfig|. En effet, les signes \verb-=- des \Verb|<clés>=<valeurs>| ne doivent pas être interprétés comme double liaison et pour ce faire, la macro \verb|\lewis|, son argument optionnel et obligatoire \emph{doivent} être entre accolades:
+\subsection{Paramètres}
+Les \chevrons{clés}${}={}$\chevrons{valeurs} disponibles dans les \chevrons{paramètres généraux} sont:
+
+\begin{longtable}{rlp{8.5cm}}\hline
+ \chevrons{clés} & \chevrons{valeurs} par défaut & Description\\\hline\endhead
+ \Chargeparam{debug}& Booléen qui lorsque \CFval{true}, dessine les contours du nœud recevant l'\chevrons{atome} (en vert), de celui où sont placées les \chevrons{charges} (en bleu) et ceux recevant les \chevrons{charges} (en rouge).\\
+ \Chargeparam{macro atom}&Macro qui prend comme argument l'\chevrons{atome}.\\
+ \Chargeparam{circle}&Booléen qui lorsque \CFval{true}, met l'\chevrons{atome} dans un nœud circulaire; dans le cas contraire, le nœud est rectangulaire.\\
+ \Chargeparam{macro charge}&Macro (\verb|\printatom| ou \verb|\ensuremath|, par exemple) qui prend comme argument chaque charge.\\
+ \Chargeparam{extra sep}&Augmentation de la taille du nœud (cercle ou rectangle) pour la position des charges: c'est la valeur passée à la clé \CFkey{inner sep} de \TIKZ.\\
+ \Chargeparam{overlay}&Booléen qui lorsque \CFval{true}, dessine les charges en «surimpression», c'est-à-dire hors de la boite englobante finale.\\
+ \Chargeparam{shortcuts}&Booléen qui lorsque \CFval{true}, active les raccourcis «\verb|\.|», «\verb|\:|», «\verb-\|- et «\verb-\"-» pour tracer des formules de Lewis.\\
+ \Chargeparam{lewisautorot}&Booléen qui lorsque \CFval{true}, effectue une rotation automatique de «\verb|\:|» et «\verb-\"-».\\
+ \Chargeparam{.radius}&Rayon du point utilisé pour tracer «\verb|\.|» et «\verb|\:|»\\
+ \Chargeparam{:sep}&Séparation entre les deux points de «\verb|\:|».\\
+ \Chargeparam{.style}&Style \TIKZ utilisé pour tracer les points «\verb|\.|» et «\verb|\:|».\\
+ \Chargeparam{"length}&Longueur du rectangle \verb-\"-. et de la ligne \verb-\|-\\
+ \Chargeparam{"width}&Largeur du rectangle \verb-\"-.\\
+ \Chargeparam{"style}&Style \TIKZ utilisé pour tracer le rectangle \verb-\"-.\\
+ \Chargeparam{|style}&Style \TIKZ utilisé pour tracer la ligne \verb-\|-.\\\hline
+\end{longtable}
+
+Il est possible de modifier certains de ces paramètres (ou tous) par l'exécution de la macro
+\begin{center}
+ \Verb|\setcharge{<clés>=<valeurs>}|
+\end{center}
+et réinitialiser tous les paramètres à leurs valeurs par défaut avec
+\begin{center}
+ \verb|\resetcharge|
+\end{center}
+La macro \verb|\charge| place les \chevrons{charges} hors de la boite englobante (sauf spécification contraire dans les \chevrons{paramètres}) alors que \verb|\Charge| les place \emph{dans} la boite englobante.
+\medbreak
+
+L'\chevrons{angle} est l'endroit sur la frontière du nœud où sera placée la \chevrons{charge}. Cet \chevrons{angle} peut-être exprimé en degrés ou bien être un ancre de frontière au sens de \TIKZ, comme «\verb|south east|». Le \chevrons{décalage} est une dimension au sens de \TeX{} et représente une longueur additionnelle entre la frontière du nœud contenant l'\chevrons{atome} et l'endroit où est placé la \chevrons{charge}. Sauf indication contraire dans le \chevrons{code tikz}, le placement concerne le \emph{centre} du nœud contenant la charge.
+\medbreak
+
+Dans les deux exemples qui suivent, \CFkey{debug} sera mise à \CFval{true} afin de mieux percevoir les changements induits par la modification des paramètres. De plus, la macro \verb|\Charge| sera utilisée afin que les boites englobantes tiennent compte des charges. On voit ici l'influence de la forme du nœud sur le placement des charges:
+\exemple{Exemple générique}|\setcharge{debug}
+Défaut puis cercle :
+\Charge{30=\:,120=$\ominus$,210=$\delta^+$}{Fe}\qquad
+\Charge{[circle]30=\:,120=$\ominus$,210=$\delta^+$}{Fe}|
-\exemple*{Argument optionnel de \string\lewis}/\chemfig{{\lewis[lewis style=red]{1:3:5:7:,X}}-{\lewis[lewis style=blue]{0:2:4:6:,Y}}}/
+Pour éloigner les charges $\ominus$ et $\delta^+$, on peut jouer sur le \chevrons{décalage} ou mieux, sur l'ancre d'attache : l'\chevrons{angle} où est placé la \chevrons{charge} est stocké dans la macro \verb|chargeangle|; il est donc judicieux de choisir l'ancre d'attache égal à \verb|180+\chargeangle|. Il est également possible de spécifier un nœud circulaire pour y placer la \chevrons{charge}.
-Voici quelques exemple de personnalisation:
+\exemple{Position fine}|\setcharge{debug}
+\Charge{30=\:,120:3pt=$\ominus$,210:5pt=$\delta^+$}{Fe}\qquad
+\Charge{[circle]30=\:,
+ 120[circle,anchor=180+\chargeangle]=$\ominus$,
+ 210[anchor=180+\chargeangle]=$\delta^+$}{Fe}|
-\exemple{Les paramètres de la macro \string\lewis}*\setchemfig{lewis sep=4pt,lewis length=1.5em,lewis style=red}
-\chemfig{A-\lewis{26,B}-C}\bigbreak
+Il est important de noter que les nœuds circulaires ont des encombrements \emph{parfois très différents} des nœuds «classiques» rectangulaires, notamment en ce qui concerne l'étendue horizontale et verticale. Il convient donc de rendre \CFval{true} la clé booléenne \CFkey{circle} en connaissance de cause.
-\chemfig[lewis style={line width=0.4pt}]{A-\lewis{2|,B}-C}\bigbreak
+\exemple{Nœuds circulaires}/\chemfig{\charge{90=\.}{N}H_3} : nœud rectangulaire\smallbreak
+\chemfig{\charge{[circle]90=\.}{N}H_3} : nœud circulaire/
-\Lewis{1:3:5:7:,X}\qquad\Lewis{0:2:4:6:,X}\bigbreak
+\subsection{Formules de Lewis}
+Lorsque le booléen \CFkey{shortcut} est \CFval{true}, les raccourcis «\verb|\.|», «\verb|\:|», «\verb-\|- et «\verb-\"-» sont disponibles pour tracer les formules de Lewis respectives {\setcharge{extra sep=0pt}«\Charge{0=\.}{\vphantom{A}}», «\Charge{0=\:}{\vphantom{A}}», «\Charge{0=\|}{\vphantom{A}}» et «\Charge{0=\"}{\vphantom{A}}»}. On peut à tout moment les désactiver avec la macro \verb|\disableshortcuts| et les ré-activer avec \verb|\enableshortcuts|.
-\Lewis[lewis dist=0.2em]{1:3:5:7:,X}\qquad
-\Lewis[lewis dist=0.2em]{0:2:4:6:,X}\bigbreak
+Lorsque le booléen \CFkey{shortcut} est \CFval{false} ou que les raccourcis ont été désactivés avec \verb|\disableshortcuts|, «\verb|\.|», «\verb|\:|», «\verb-\|- et «\verb-\"-» ne sont plus programmés pour tracer les formules de Lewis et il faut alors leur substituer les macros \verb|\chargedot|, \verb|\chargeddot|, \verb|\chargeline| et \verb|\chargerect|.
+\medbreak
-\Lewis[lewis dist=4pt,lewis radius=1.5pt]{1:3:5:7:,X}\qquad
-\Lewis[lewis dist=4pt,lewis radius=1.5pt]{0:2:4:6:,X}*
+La clé \CFkey{lewisautorot}, qui est \CFval{true} par défaut agit sur {\setcharge{extra sep=0pt}«\Charge{0=\:}{\vphantom{A}}», «\Charge{0=\|}{\vphantom{A}}» et «\Charge{0=\"}{\vphantom{A}}»} et les tourne de telle sorte que leur axe longitudinal soit perpendiculaire au vecteur d'inclinaison \chevrons{angle} avec l'horizontale.
-Un problème concernant les décorations de Lewis dans les directions obliques peut parfois survenir. Pour l'atome «O» dans l'exemple ci-dessous, il semble que la décoration en position 1 soit plus éloignée de l'atome que celle en position 4 :
-\exemple{Directions obliques}/\huge
-\Lewis{1|4|,O}/
-Or, il n'en en rien comme on peut le voir en traçant la boîte englobante de l'atome :
-\exemple{Illusion d'optique}/\huge
-\fboxsep0pt
-\def\printatom#1{\fbox{$\mathrm{#1}$}}
-\Lewis{1|4|,O}/
-\label{opt.lewis}L'impression de plus grand éloignement est dû au fait que les contours de la lettre «O» sont plus éloignés de ceux de la boîte englobante dans les coins, c'est-à-dire dans les directions impaires.
+\exemple{Autorot}/\Charge{60=\:,150=\"}{A} et
+\Charge{[lewisautorot=false]60=\:,150=\"}{A}/
-Pour rapprocher (ou éloigner) les décorations de Lewis dans les directions impaires, la \chevrons{clé} \CFkv{lewis diag coeff}{decimal} spécifie le coefficient qui vient multiplier le décalage entre la boite englobante et la décoration de Lewis. Pour la lettre «O», il semble que la valeur 0.5 soit satisfaisante pour ce coefficient :
-\exemple*{Argument optionnel de \string\lewis}/\huge
-\Lewis{1|4|,O}\quad \Lewis[lewis diag coeff=0.5]{1|4|,O}
+Les macros \verb|\lewis| et \verb|\Lewis| sont encore fonctionnelles, mais ne sont plus maintenues ni documentées et \textcolor{red}{\bfseries seront retirées dans une future version}; il est donc conseillé de leur préférer les macros \verb|\charge| et \verb|\Charge| qui donnent des résultats comparables comme on le voit ci-dessous, tout en étant bien plus puissantes et configurables:
-\Lewis{0:5:,O}\quad \Lewis[lewis diag coeff=2]{0:5:,O}\quad \Lewis[lewis diag coeff=0.5]{0:5:,O}/
+\exemple{Comparaison avec \string\Lewis}/\Lewis{1:3.5|,X}\quad\Lewis{0:2.3|,X}\qquad(avec \string\Lewis)\par
+\Charge{45=\:,135=\.,225=\"}{X}\quad\Charge{0=\:,90=\.,135=\"}{X}%
+\qquad(avec \string\Charge)/
-\subsection{Empilement de caractères}
+La personnalisation des formules de Lewis s'effectue via la macro \verb|\setcharge| ou par l'intermédiaire de l'argument optionnel de \verb|\charge| en agissant sur les clés \CFkey{.radius}, \CFkey{:sep}, \CFkey{.style}, \CFkey{|style}, \CFkey{"length}, \CFkey{"width} et \CFkey{"style}. Il est également possible de modifier ces clés pour chaque formule avec leur argument optionnel qui reçoit une liste de \chevrons{clés}${}={}$\chevrons{valeurs}.
+
+\exemple{Personnalisation}/\Charge{[.radius=1.5pt,.style={draw=gray}]
+ 45 =\.[{.style={draw=none,fill=red}}],
+ 135 =\.[{.style={draw=none,fill=blue}}],
+ -45 =\.[{.style={draw=none,fill=green}}],
+ -135=\.}{A}\quad
+\Charge{
+ 45 =\"[{"style={draw=red,fill=gray}}],
+ 135=\"[{"width=3pt,"style={line width=.8pt,draw=blue,fill=cyan}}]}{A}/
+
+\subsection{Intégration dans \CF}
+Une macro \verb|\charge| peut tenir lieu d'atome, tout comme c'était le cas avec \verb|\lewis|.
+
+\exemple{Charge dans \CF}*\chemfig{H-\chemabove{\lewis{5|7,O}}{\quad\scriptstyle+}(-[2]H)-H}
+\qquad
+\chemfig{H-\charge{45:1.5pt=$\scriptstyle+$,-45=\|,-135=\"}{O}(-[2]H)-H}*
+
+Cependant, \CF a été modifié pour que les liaisons soient \emph{jointives} lorsque l'encombrement d'un atome est nul, c'est-à-dire si sa largeur, hauteur et profondeur sont toutes nulles. Ce n'était le cas auparavant que si l'atome était vide. Cette nouvelle fonctionnalité permet de placer facilement des charges dans des chaines.
+
+\exemple{Charge dans chaine}/\chemfig{[:30]-\charge{90=\:}{}
+-[:-30]\charge{-90=\"}{}-\charge{90:2pt=$\delta^+$}{}-[:-30]}/
+
+\section{Empilement de caractères}
Les macros\label{chemabove}
\begin{center}
\Verb|\chemabove[<dim>]{<code>}{<matériel>}|
@@ -1298,11 +1373,18 @@ Ces commandes sont indépendantes de la macro \verb-\chemfig- et peuvent aussi b
On peut les utiliser notamment dans les cycles en prenant soin de mettre des accolades autour des lettres A, B, C et D pour éviter que \CF ne stoppe la lecture de l'atome sur ces lettres :
\exemple{Superposition dans les cycles}|\chemfig{*5(-\chembelow{A}{B}--\chemabove{C}{D}--)}|
-Elles sont parfois utiles pour placer des pseudo exposants tenant lieu de charge qui ne changent pas la boîte englobante de l'atome, de façon à ce que les liaisons n'en soient pas trop éloignées :
-\exemple{ion oxonium}*\chemfig{H-\chemabove{\lewis{5|7,O}}{\quad\scriptstyle+}(-[2]H)-H}*
-
Les commandes \falseverb{\Chemabove} et \falseverb{\Chembelow} fonctionnent de la même façon sauf que la boîte englobante \emph{tient compte} du \Verb-<matériel>- placé au dessus ou au dessous.
+Quelle différence y a-t-il entre \verb|\chemabove| et \verb|\charge| lorsqu'il s'agit de placer un contenu au-dessus ou au-dessous d'un autre?
+\exemple{\string\chemabove\space ou \string\charge}/\chemfig{*5(----\chemabove{A}{\oplus}-)}
+\chemfig{*5(----\charge{90[anchor=-90]=$\oplus$}{A}-)}/
+
+Par défaut, les deux macros donnent des résultats très proches. Des différences quant à leur utilisation existent cependant:
+\begin{itemize}
+ \item \verb|\chemabove| et \verb|\chemabelow| ne peuvent être utilisées que dans l'argument de \verb|\chemfig|, ce qui n'est pas le cas de \verb|\charge|;
+ \item la macro \verb|\charge| requiert l'extension \TIKZ alors que \verb|\chemabove| et \verb|\chemabelow| sont codées avec des primitives de bas niveau de \TeX{} et sont donc \emph{rapides} et indépendantes de toute extension.
+\end{itemize}
+
\section{Utilisation de {\protect\ttfamily\protect\textbackslash chemfig} dans l'environnement \protect\ttfamily tikzpicture}
Il est possible d'appeler la commande \falseverb{\chemfig} à l'intérieur d'un environnement {\ttfamily\falseverb{tikzpicture}} :
\exemple{\textbackslash chemfig dans tikzpicture}|\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
@@ -1313,23 +1395,6 @@ Il est possible d'appeler la commande \falseverb{\chemfig} à l'intérieur d'un
\node[draw,red,anchor=base] at(3,2){\chemfig{X>[2,,,,blue]Y}};
\end{tikzpicture}|
-\section{Au delà de la chimie}\label{style.noeuds}
-Intrinsèquement, \CF est un outil pour tracer des graphes, et cet outil a été programmé pour qu'il soit adapté à la chimie. Dans une certaine mesure, il est possible de détourner \CF de son usage premier pour tracer des organigrammes ou autres schémas se ramenant à des graphes.
-
-Chaque atome est contenu dans un nœud de \TIKZ. Par défaut, ces nœuds ont un «inner sep» et un «outer sep» égal à 0pt. Ils sont rectangulaires comme on l'a vu page~\pageref{longueur.liaison}. Ces valeurs par défaut peuvent être écrasées avec la \chevrons{clé} \CFkey{node style} dont l'argument est passé à \TIKZ et spécifie le style des nœuds contenant les atomes.
-
-Dans cet exemple, on spécifie simplement «draw,inner sep=2pt» ce qui a pour effet de tracer le contour des nœuds et espacer de 2pt leur contour de leur contenu. On spécifie également \CFkv{bond offset}{0pt} pour que les liaisons touchent les frontières des nœuds. L'espace interatome est allongé à 75pt. Enfin, la commande \falseverb{\printatom} est réduite à sa plus simple expression de façon à ne plus se placer en mode mathématique pour afficher les atomes et donc tenir compte des espaces :
-\exemple*{Un organigramme}/\setchemfig{node style={draw,inner sep=2pt},bond offset=0pt,atom sep=75pt}
-\renewcommand\printatom[1]{#1}
-\chemfig{Le chef-[6]Moi(-[4]Eux(-[6]Les autres)(-[7,2]Groupe 1))-Toi(-[:-120,0.5]Lui)(-[:-60,0.5]Elle)}/
-
-Voici un autre organigramme où les nœuds sont circulaires et colorés en bleu cyan :
-\exemple*{Schéma de famille}/\setchemfig{bond offset=0pt,atom sep=80pt,node style={draw,circle,fill=cyan,minimum size=25pt}}
-\renewcommand\printatom[1]{\textsf{#1}}
-\chemfig{Moi(-[:-50,1.2]Frère)(-[:-10]Frère(-[:15]Nièce)(-[:-35]Nièce))
-(-[:-155,0.8]Sœur-[:-80]Neveu)(-[:95,1.25]Père(-[:-25,0.8]Oncle)(-[:-65,0.8]Tante))
-(-[:135]Mère-[:-95,0.5]Oncle)}/
-
\section{Exemples commentés}\label{exemples.commentes}
Dans ce chapitre, plusieurs molécules seront dessinées en mettant en œuvre les méthodes précédemment exposées. Le but recherché ici est de montrer dans quel ordre logique peut se construire une molécule de façon à ce que l'utilisateur peu familier avec \CF acquière une méthode pour construire des molécules complexes. Pour l'y aider, les étapes de la construction seront montrées.
@@ -1511,15 +1576,13 @@ Ajouter une \falseverb{charge} sous forme d'exposant mathématique à un atome i
\exemple{Charge et liaison}/\chemfig{A^+-[2]B}
\qquad
\chemfig{A\rlap{${}^+$}-[2]B}/
-Si l'on veut utiliser la commande \verb-\oplus- qui affiche «$\oplus$», on peut trouver que la charge est trop basse : $\mathrm{A^\oplus}$. Dans ce cas, pourquoi ne pas se servir de \falseverb{\chemabove} pour placer aussi précisément que l'on veut, aussi bien verticalement qu'horizontalement la charge :
-\exemple{Charge et \string\chemabove}/\chemfig{\chemabove[0.5pt]{A}{\scriptstyle\hspace{3.5mm}\oplus}-[2]B}
-\qquad
-\chemfig{{\chemabove[-0.5pt]{A}{\scriptstyle\hspace{3.5mm}\oplus}}-[2]B}/
-On remarque un niveau d'accolades supplémentaire pour la seconde molécule. En effet, comme on spécifie «\verb/-0.5pt/» pour l'argument optionnel de \falseverb{\chemabove} pour descendre la charge, il faut éviter que \CF ne comprenne ce signe «\verb/-/» comme une liaison simple.
-Pour ajouter une charge près du sommet d'un cycle, la meilleure méthode est de créer une liaison invisible qui parte de ce sommet, ce qu'on fait ici avec \falseverb\definesubmol{} avec une liaison ayant un coefficient de longueur égal à 0.2 :
-\exemple{Charges et cycles}/\definesubmol\nobond{-[,0.2,,,draw=none]}
-\chemfig{*5(---(!\nobond\scriptstyle\oplus)-(!\nobond\scriptstyle{-})-)}/
+La macro \verb|\charge| permet d'effectuer cette tâche de façon simple et précise.
+\exemple{Placement de charges}/\chemfig{\charge{[extra sep=0pt]45[anchor=180+\chargeangle]=%
+$\scriptstyle\oplus$}{A}-[2]B}
+\qquad
+\chemfig{*5(---\charge{90:2pt=$\scriptstyle\oplus$}{}-%
+\charge{135:2pt=$\scriptstyle-$}{}-)}/
\subsection{Dessiner une liaison courbe}
Nous avons déjà vu qu'avec la librairie «\verb-decorations.pathmorphing-» de \TIKZ, on peut dessiner une liaison ondulée :
@@ -1647,39 +1710,6 @@ Molécule d'eau pivotée de +30\textdegree : \chemfig{[:30]@1H-[::37.775,2]@2O-[
\namebond23{\footnotesize0,9584 \angstrom}
\arclabel{0.5cm}{1}{2}{3}{\footnotesize104,45\textdegree}|
-\subsection{Schéma de Lewis à l'angle près}
-Pour quelques cas très particuliers, il est parfois nécessaire de positionner des schémas de Lewis au degrés près et non plus à des multiples de 45 degrés.
-
-Pour cela, il est relativement facile d'écrire une macro \verb-\mylewis-, admettant un argument optionnel (la longueur du doublet) qui vaut ici 2ex et deux arguments obligatoires; le premier étant le nom de l'atome et le second étant la liste des angles séparés par des virgules.
-
-L'astuce consiste à créer un n\oe ud invisible circulaire qui contient l'atome et tracer les doublets aux angles désirés de façon à ce qu'ils soient tangents à ce cercle :
-
-\exemple*{Doublets au degrés prés}|\catcode`\_11
-\newcommand\mylewis[3][2ex]{% #1=longueur, #2=atome #3=liste des angles
- \tikzpicture[baseline,anchor=base]%
- \node[inner sep=0pt,outer sep=1pt,circle,overlay](atom@@)at(0,0){\phantom{#2}};%
- \node[inner sep=0pt,outer sep=0pt]at(0,0){#2};%
- \def\list_angle{#3,}%
- \loop
- \expandafter\grab_angle\list_angle\_nil
- \pgfextractx\CF_dim{\pgfpointanchor{atom@@}\current_angle}\edef\CF_dimax{\the\CF_dim}%
- \pgfextracty\CF_dim{\pgfpointanchor{atom@@}\current_angle}\edef\CF_dimay{\the\CF_dim}%
- \pgfmathparse{#1*sin(\current_angle)/2}\let\offset_xx\pgfmathresult
- \pgfmathparse{#1*cos(\current_angle)/2}\let\offset_yy\pgfmathresult
- \draw[line width=.4pt,overlay]
- (\CF_dimax-\offset_xx,\CF_dimay+\offset_yy)--(\CF_dimax+\offset_xx,\CF_dimay-\offset_yy);%
- \unless\ifx\empty\list_angle
- \repeat
- \endtikzpicture
-}
-\def\grab_angle#1,#2\_nil{\def\current_angle{#1}\def\list_angle{#2}}
-\catcode`\_8
-Essai : \mylewis{Cl}{15}\qquad \mylewis[3ex]{Cl}{-60}\qquad \mylewis[1.5ex]{Cl}{60,120,240,300}
-\bigskip
-
-\chemfig{P(-[:72]\mylewis{Cl}{-18,72,162})(-[:-72]Cl)
-(-[:144]Cl)(-[:-144]Cl)-\mylewis{Cl}{0,90,-90}}|
-
\subsection{Dessiner des liaisons multiples}
Là encore, la librairie «decorations.markings» permet de tracer des liaisons multiples :
@@ -2369,28 +2399,28 @@ Il peut arriver que l'alignement du signe «+» avec les molécules qui précèd
\schemestart
\chemfig{C(<[:40])(<[:160])=[6]C(<[:-130])<[:-20]}
\+
- \chemfig{\lewis{246,Br}-\lewis{026,Br}}
+ \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,-90=\|}{Br}}
\schemestop/
-Ce qui se passe est que le signe «+» est sur la même ligne de base que le composé qui précède, et cette ligne de base est celle de l'atome «C» du haut. On pourrait bien sûr décaler le signe «+» mais cela ne changerait pas la position verticale de «\kern0.3333em\chemfig{\lewis{246,Br}-\lewis{026,Br}}\kern0.3333em». En fait, le signe «+» ne stoppe pas la lecture d'un composé pour \CF ce que l'on constate dans l'exemple ci-dessus où tout est englobé dans le composé «c1». On va donc être obligé de stopper le composé après la première molécule avec un \verb-\arrow{0}[,0]- qui produira une flèche invisible de longueur nulle. Pour centrer verticalement le tout, on va également préciser que l'ancre du premier composé doit être «west» (ou «180» qui est un synonyme) avec le deuxième argument optionnel de la commande \verb-\schemestart- :
+Ce qui se passe est que le signe «+» est sur la même ligne de base que le composé qui précède, et cette ligne de base est celle de l'atome «C» du haut. On pourrait bien sûr décaler le signe «+» mais cela ne changerait pas la position verticale de «\kern0.3333em\chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,-90=\|}{Br}}\kern0.3333em». En fait, le signe «+» ne stoppe pas la lecture d'un composé pour \CF ce que l'on constate dans l'exemple ci-dessus où tout est englobé dans le composé «c1». On va donc être obligé de stopper le composé après la première molécule avec un \verb-\arrow{0}[,0]- qui produira une flèche invisible de longueur nulle. Pour centrer verticalement le tout, on va également préciser que l'ancre du premier composé doit être «west» (ou «180» qui est un synonyme) avec le deuxième argument optionnel de la commande \verb-\schemestart- :
\exemple{Alignement du signe +}/\setchemfig{scheme debug=true}
\schemestart[][west]
\chemfig{C(<[:40])(<[:160])=[6]C(<[:-130])<[:-20]}
\arrow{0}[,0]\+
- \chemfig{\lewis{246,Br}-\lewis{026,Br}}
+ \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,-90=\|}{Br}}
\schemestop/
De cette façon, le premier composé «c1» est la première molécule et le second composé est le reste, c'est-à-dire le signe «+» et la seconde molécule. On aurait pû jouer sur les ancres ou les styles via la commande \verb-\arrow- pour placer le second composé à un autre endroit. Ici, par exemple on décale le second composé de 10pt vers le bas dans le premier cas et on fait coïncider l'ancre «south east» du premier composé avec l'ancre «south west» du second dans le deuxième cas :
\exemple{Alignement du signe +}/\setchemfig{scheme debug=true}
\schemestart[][west]
\chemfig{C(<[:40])(<[:160])=[6]C(<[:-130])<[:-20]}
\arrow(--[yshift=-10pt]){0}[,0]\+
- \chemfig{\lewis{246,Br}-\lewis{026,Br}}
+ \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,-90=\|}{Br}}
\schemestop
\medskip
\schemestart[][west]
\chemfig{C(<[:40])(<[:160])=[6]C(<[:-130])<[:-20]}
\arrow(.south east--.south west){0}[,0]\+
- \chemfig{\lewis{246,Br}-\lewis{026,Br}}
+ \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,-90=\|}{Br}}
\schemestop/
\newpage
@@ -2416,12 +2446,12 @@ Les commandes créées par \CF sont :
\item \CFkv{angle increment} {45}: incrément de l'angle des liaisons
\item \CFkv{node style} {{}}: style des atomes
\item \CFkv{bond style} {{}}: style des liaisons
- \item \CFkv{lewis | width} {0.3ex}: largeur du rectangle pour la décoration | de Lewis
- \item \CFkv{lewis sep} {0.4ex}: espacement entre l'atome et les décorations de Lewis
- \item \CFkv{lewis length} {1.5ex}: longueur des décorations de Lewis
- \item \CFkv{lewis style} {{}}: style des décorations de Lewis
- \item \CFkv{lewis dist} {0.3em}: espacement entre les disques pour la décoration «\string:»
- \item \CFkv{lewis radius} {0.15ex}: rayon des disques des décorations de Lewis
+ \item \CFkv{lewis | width} {0.3ex}: largeur du rectangle pour la formules | de Lewis
+ \item \CFkv{lewis sep} {0.4ex}: espacement entre l'atome et les formule de Lewis
+ \item \CFkv{lewis length} {1.5ex}: longueur des formule de Lewis
+ \item \CFkv{lewis style} {{}}: style des formules de Lewis
+ \item \CFkv{lewis dist} {0.3em}: espacement entre les disques pour la formule «\string:»
+ \item \CFkv{lewis radius} {0.15ex}: rayon des disques des formules de Lewis
\item \CFkv{lewis diag coeff} {1}: coefficient multiplicatif de la distance dans les directions impaires
\item \CFkv{cycle radius coeff} {0.75}: coefficient du cercle ou de l'arc de cercle tracé dans les cycles
\item \CFkv{stack sep} {1.5pt}: espacement vertical pour les arguments des macros \verb-\chemabove- et \verb-\chembelow-
@@ -2449,8 +2479,8 @@ Les commandes créées par \CF sont :
\falseverb\chemskipalign & Ignore le groupe d'atomes en cours pour le mécanisme d'alignement vertical. Voir page~\pageref{chemskipalign}.\\
\Verb-\redefinesubmol{<nom>}<n>[<code1>]{<code2>}-& remplace l'alias déjà existant \Verb-!<nom>- par le nouveau \Verb-<code>-. Voir page~\pageref{redefinesubmol}\\[2ex]\hline
&\\
-\Verb-\lewis[<paramètres>]{<codes>,<atome>}-& affiche l'\Verb-<atome>- et positionne les décorations de Lewis selon ce qui est spécifié dans le \Verb-<code>-. Les décorations dessinées ne modifient pas la boîte englobante de l'\Verb-<atome>-. Voir page~\pageref{lewis}\\
-\Verb-\Lewis[<paramètres>]{<codes>,<atome>}-& affiche l'\Verb-<atome>- et positionne les décorations de Lewis selon ce qui est spécifié dans le \Verb-<code>-. Voir page~\pageref{Lewis}\\
+\Verb-\charge{[<paramètres>]<pos>[<tikz>]}{<atome>}-& affiche l'\Verb-<atome>- et positionne les charges selon leurs \Verb-<positions>-. Les charges dessinées sont hors de la boîte englobante de l'\Verb-<atome>-. Voir page~\pageref{charge}\\
+\Verb-\Charge{[<paramètres>]<pos>[<tikz>]}{<atome>}-& Identique à \verb|\charge|, mais les charges sont comptabilisées dans la boite englobante.\\
\Verb-\chemmove[<options tikz>]<code tikz>-& Ouvre un environnement \verb-tikzpicture- en y ajoutant à celles qui existent déjà les \Verb-<options tikz>-, et relie avec le \Verb-<code tikz>- les nœuds posés dans les molécules à l'aide du caractère «\verb-@-». Voir page~\pageref{mecanismes-reactionnels}.\\[2ex]\hline
&\\
\Verb-\chemabove[<dim>]{<txt1>}{txt2}- & écrit le \Verb-<txt1>- et positionne le \Verb-<txt2>- au dessus en laissant \Verb-<dim>- d'espacement vertical. Cette commande ne change pas la boîte englobante de \Verb-<txt1>-. Voir page~\pageref{chemabove}\\
@@ -2559,11 +2589,28 @@ $\star\quad\star$
\exemple*{Codéïne}/\chemfig{[:-30]**6(-(-OH)-?-*6(-(-[3]-[2,2]-[0,.5])*6(-(<:[:-150,1.155]O?)
-(<:OH)-=-)-(<:[1]H)-(-[2]NCH_3)--)---)}/
-\exemple*{Colorant(rouge)}/\chemfig{**6(--*6(-(-NO_2)=-(-\lewis{26,O}-[0]H)=(-\lewis{4,N}=[0]\lewis{2,N}-[0]Ar)-)----)}/
+\exemple*{Colorant(rouge)}/\chemfig{**6(--*6(-(-NO_2)=-(-\charge{90=\|,-90=\|}{O}-[0]H)=(-\charge{180=\|}{N}=[0]\charge{90=\|}{N}-[0]Ar)-)----)}/
-\exemple*{Menthone}/\chemfig{CH_3-?(-[2]H)(-[::-30,2]-[::+60](=[1]\lewis{20,O})
+\exemple*{Menthone}/\chemfig{CH_3-?(-[2]H)(-[::-30,2]-[::+60](=[1]\charge{0=\|,90=\|}{O})
-[::-150,1.5](-[:20]CH(-[1]CH_3)(-[7]CH_3))(-[6]H)-[::-90,2]-[::+60]?)}/
+\exemple*{Fullerène}/\definesubmol\fragment1{
+ (-[:#1,0.85,,,draw=none]
+ -[::126]-[::-54](=_#(2pt,2pt)[::180])
+ -[::-70](-[::-56.2,1.07]=^#(2pt,2pt)[::180,1.07])
+ -[::110,0.6](-[::-148,0.60](=^[::180,0.35])-[::-18,1.1])
+ -[::50,1.1](-[::18,0.60]=_[::180,0.35])
+ -[::50,0.6]
+ -[::110])
+}
+\chemfig{
+ !\fragment{18}
+ !\fragment{90}
+ !\fragment{162}
+ !\fragment{234}
+ !\fragment{306}
+}/% https://tex.stackexchange.com/questions/506293/how-to-draw-a-fullerene
+
\exemple*{Synthèse de Fischer de l'indole}/\schemestart
\chemfig{*6(=-*6(-\chembelow{N}{H}-NH_2)=-=-)}
\+
@@ -2572,29 +2619,28 @@ $\star\quad\star$
\chemfig{*6(-=*5(-\chembelow{N}{H}-(-R_2)=(-R_1)-)-=-=)}
\schemestop/
-\exemple*{Mécanisme réactionnel : groupement carbonyle}/
-\schemestart
- \chemfig{C([3]-)([5]-)=[@{db,.5}]@{atoo}\lewis{06,O}}
+\exemple*{Mécanisme réactionnel : groupement carbonyle}/\schemestart
+ \chemfig{C([3]-)([5]-)=[@{db,.5}]@{atoo}\charge{0=\|,-90=\|}{O}}
\arrow(.mid east--.mid west){<->}
- \chemfig{\chemabove{C}{\scriptstyle\oplus}([3]-)([5]-)-\chemabove
- {\lewis{026,O}}{\hspace{5mm}\scriptstyle\ominus}}
+ \chemfig{\charge{90:3pt=$\scriptstyle\oplus$}{C}([3]-)([5]-)-%
+ \charge{0=\|,90=\|,-90=\|,45:3pt=$\scriptstyle\ominus$}{O}}
\schemestop
\chemmove{\draw[shorten <=2pt, shorten >=2pt](db) ..controls +(up:5mm) and +(up:5mm)..(atoo);}/
\exemple*{Mécanismes réactionnels : dérivés nitrés}/\schemestart
- \chemfig{R-\chembelow{N}{\hspace{-5mm}\scriptstyle\oplus}([1]=[@{db}]@{atoo1}O)([7]-[@{sb}]@{atoo2}
- \chemabove{\lewis{157,O}}{\hspace{7mm}\scriptstyle\ominus})}
+ \chemfig{R-\charge{225:3pt=$\scriptstyle\oplus$}{N}([1]=[@{db}]@{atoo1}O)([7]-[@{sb}]@{atoo2}
+ \charge{45=\|,-45=\|,-135=\|,45:5pt=$\scriptstyle\ominus$}{O})}
\arrow(.mid east--.mid west){<->}
- \chemfig{R-\chemabove{N}{\hspace{-5mm}\scriptstyle\oplus}([1]-\chemabove{O}{\scriptstyle\ominus})([7]=O)}
+ \chemfig{R-\charge{135:3pt=$\scriptstyle\oplus$}{N}([1]-\charge{90:3pt=$\scriptstyle\ominus$}{O})([7]=O)}
\schemestop
\chemmove{
- \draw[shorten <=2pt, shorten >=2pt](db) ..controls +(120:5mm) and +(120:5mm)..(atoo1);
+ \draw[shorten <=2pt, shorten >=2pt](db) ..controls +(120:5mm) and +(120:7mm)..(atoo1);
\draw[shorten <=3pt, shorten >=2pt](atoo2) ..controls +(225:10mm) and +(225:10mm)..(sb);
}/
\exemple*{Addition nucléophile. Amines primaires}/\setchemfig{atom sep=2.5em,compound sep=5em}
\schemestart
- \chemfig{R-@{aton}\lewis{2,N}H_2}
+ \chemfig{R-@{aton}\charge{90=\|}{N}H_2}
\+
\chemfig{@{atoc}C([3]-CH_3)([5]-CH_3)=[@{atoo1}]O}
\chemfig{@{atoo2}\chemabove{H}{\scriptstyle\oplus}}
@@ -2610,7 +2656,7 @@ $\star\quad\star$
\par
\schemestart
\arrow{<=>}
- \chemfig{R-@{aton}\lewis{2,N}([6]-[@{sbh}]H)-[@{sb}]C(-[2]CH_3)(-[6]CH_3)-[@{sbo}]@{atoo}
+ \chemfig{R-@{aton}\charge{90=\|}{N}([6]-[@{sbh}]H)-[@{sb}]C(-[2]CH_3)(-[6]CH_3)-[@{sbo}]@{atoo}
\chemabove{O}{\scriptstyle\oplus}(-[1]H)(-[7]H)}
\chemmove[-stealth,shorten <=3pt,shorten >=2pt,dash pattern= on 1pt off 1pt,thin]{
\draw(aton) ..controls +(up:5mm) and +(up:5mm)..(sb);
@@ -2662,11 +2708,11 @@ $\star\quad\star$
\exemple*{Mécanismes réactionnels de la chloration}/\scriptsize\setchemfig{bond offset=1pt,atom sep=2em,compound sep=4em}
\schemestart
\chemfig{Cl-[4]@{a0}(=[@{a1}:120]@{a2}O)-[:-120](=[:-60]O)-[4]Cl}\+\chemfig{*6(-=-=(-@{oh1}OH)-=)}\arrow
- \chemfig{*6((-O-[:150](-[@{o0}:150]@{o1}\lewis{6.,O})(-[@{cl0}:60]@{cl1}Cl)-[:240](-[4]Cl)=[6]O)=-=-=-)}
+ \chemfig{*6((-O-[:150](-[@{o0}:150]@{o1}\charge{-90=\.}{O})(-[@{cl0}:60]@{cl1}Cl)-[:240](-[4]Cl)=[6]O)=-=-=-)}
\arrow\chemfig{*6((-O-[:150](=[2]O)-[:-150](=[6]O)-[:150]Cl)=-=-=-)}\+\chemfig{HCl}
\arrow(@c1--){0}[-90,0.5]
\chemfig{*6(-=*6(-O-*6(-@{o2}(=[@{o3}]@{o4}O)-Cl)=)-=-=)}\+\chemfig{*6(-=-=(-@{oh2}OH)-=)}\arrow
- \chemfig{*6(-=*6(-O-(-(-[@{cl2}:60]@{cl3}Cl)(-[@{o5}:-120]@{o6}\lewis{6.,O})-O-[::-40]*6(=-=-=-))=)-=-=)}
+ \chemfig{*6(-=*6(-O-(-(-[@{cl2}:60]@{cl3}Cl)(-[@{o5}:-120]@{o6}\charge{-90=\.}{O})-O-[::-40]*6(=-=-=-))=)-=-=)}
\kern-3em \arrow\chemfig{[:30]*6(=-(-O-[:-60](=O)-[:-120](=[4]O)-[:-60]O-*6(=-=-=-))=-=-)}
\kern-3em \+\chemfig{HCl}
\schemestop
@@ -2718,8 +2764,8 @@ $\star\quad\star$
\chemleft[\subscheme[90]{%
\chemfig{R'-\chemabove{N}{\scriptstyle\oplus}~C-R}
\arrow{<->}[,0.75]
- \chemfig{R'-\lewis{2:,N}=@{a1}\chemabove{C}{\scriptstyle\oplus}-R}}\chemright]
- \arrow{<=>[\chemfig{H_2@{a0}\lewis{0:2:,O}}]}[,1.1]
+ \chemfig{R'-\charge{90=\:}{N}=@{a1}\chemabove{C}{\scriptstyle\oplus}-R}}\chemright]
+ \arrow{<=>[\chemfig{H_2@{a0}\charge{0=\:,90=\:}{O}}]}[,1.1]
\chemmove[red,-stealth,red,shorten <=3pt]{
\draw(a0)..controls+(90:10mm)and+(45:10mm)..([yshift=6pt]a1.45);}
\arrow(@c1--){0}[-90,0.333]
@@ -2770,21 +2816,21 @@ $\star\quad\star$
\exemple*{Addition électrophile d'halogène sur l'oléfine}/\schemestart
\subscheme{%
\chemfig{C(<[:40])(<[:160])=[6]C(<[:-130])<[:-20]}
- \arrow{0}[,0]\+\chemfig{\lewis{246,Br}-\lewis{026,Br}}}
+ \arrow{0}[,0]\+\chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{90=\|,0=\|,270=\|}{Br}}}
\arrow(@c1--olefin){<=>[*{0}rapide]}[-90]
\chemfig{>[:-20]C(<[:40])=[@{db}6]C(<[:-130])<[:-20]}
\arrow(--bromonium){0}[-90]
- \chemname{\chemfig{C*3((<)(<:[:-155])-\raise1.5pt\llap{$\scriptstyle\oplus$}\lewis{17,Br}-C(<:)(<[:155])-)}}
+ \chemname{\chemfig{C*3((<)(<:[:-155])-\charge{45=\|,-45=\|,180:3pt=$\scriptstyle\oplus$}{Br}-C(<:)(<[:155])-)}}
{bromonium ion}
\arrow(--carbeniumA){<<->}[,1.5]
\chemname{\chemfig{-[:-30]\chemabove{C}{\scriptstyle\oplus}(-[:30])-[6]C(<:[:-150])(<[:-100])-[:-30]
- \lewis{157,Br}}}{Xarbenium ion}
+ \charge{45=\|,-45=\|,225=\|}{Br}}}{Xarbenium ion}
\arrow(@bromonium--carbeniumB){<<->}[180,1.5]
\chemname{\chemfig{-[:-30]\chemabove{C}{\scriptstyle\oplus}(-[:30])-[6]C(<[:-150])
- (<:[:-100])-[:-30]\lewis{137,Br}}}{carbenium ion}
+ (<:[:-100])-[:-30]\charge{45=\|,-45=\|,135=\|}{Br}}}{carbenium ion}
\arrow(@olefin--){0}[,.25]
- \chemfig{@{Br1}\chemabove[3pt]{\lewis{246,Br}}{\scriptstyle\delta\oplus}-[@{b2}]@{Br2}
- \chemabove[3pt]{\lewis{026,Br}}{\scriptstyle\delta\ominus}}
+ \chemfig{@{Br1}\charge{90=\|,180=\|,270=\|,90:5pt=$\scriptstyle\delta\oplus$}{Br}-[@{b2}]@{Br2}
+ \charge{90=\|,0=\|,270=\|,90:5pt=$\scriptstyle\delta\ominus$}{Br}}
\arrow(@olefin--[left]){0}[180,0]
$\pi$ complexe
\arrow(@carbeniumA--@olefin){<=>[lent, \chemfig{{-}Br^\ominus}]}
@@ -2816,8 +2862,8 @@ $\star\quad\star$
\hspace{10em}
\tikz[remember picture]\node(n0){\chemname{}{Attaques\\nucléophiles}};\par
\vspace{2ex}\hspace{15em}
- \chemfig{R^2-(-[:-60]@{m3}H)-[:60]@{m0}(-[:120]R^1)(-[1,0.25,,,draw=none]\scriptstyle\color{red}\delta+)
- =[@{m1}]@{m2}\lewis{1:7:,O}-[1,0.5,,,draw=none]\scriptstyle\color{red}\delta{-}}
+ \chemfig{R^2-(-[:-60]@{m3}H)-[:60]@{m0}\charge{45:5pt=$\scriptstyle\color{red}\delta+$}{}(-[:120]R^1)
+ =[@{m1}]@{m2}\charge {45=\:,-45=\:,45:7pt=$\scriptstyle\color{red}\delta-$}{O}}
\hspace{5em}
\chemname[-15ex]{}{\tikz[remember picture]\node(n1){};Réactions d'addition}\kern1em
\chemname{}{\tikz[remember picture]\node(n2){};Propriétés basiques}\par