diff options
Diffstat (limited to 'Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex')
-rw-r--r-- | Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex | 1127 |
1 files changed, 968 insertions, 159 deletions
diff --git a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex index c92c6990af9..25eae1e525a 100644 --- a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex +++ b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex @@ -3,7 +3,7 @@ % | | % | Documentation de ChemFig | % | | -% | 24 avril 2011 | +% | 15 juin 2011 | % | | % |__________________________________________________________________| % @@ -57,9 +57,11 @@ \usepackage{textcomp} \usepackage{enumitem} \usepackage{chemfig} -\usepackage{siunitx} \usetikzlibrary{decorations.pathmorphing} +\usetikzlibrary{matrix} +\usepackage{siunitx} \usepackage{emerald} +\usepackage{xstring} \usepackage[protrusion=true,expansion,final,babel=true]{microtype} \usepackage{fancyhdr} \fancypagestyle{plain}{% @@ -80,7 +82,11 @@ \index{#1}% \print@or@not{#1}% \else - \expandafter\index\expandafter{\expandafter\@gobble\string#1@\protect\texttt{\protect\string\protect#1}}% + \saveexpandmode\expandarg + \StrSubstitute{\string#1}{\string @}{\@empty\protect\symbol{'100}}[\temp@]% + \StrGobbleLeft\temp@1[\temp@]% + \restoreexpandmode + \expandafter\index\expandafter{\temp@ @\protect\texttt{\protect\textbackslash\temp@}}% \print@or@not{\texttt{\string#1}}% \fi \else @@ -112,6 +118,8 @@ \make@car@active\^^M{\par\leavevmode}% \make@car@active\,{\leavevmode\kern\z@\string,}% \make@car@active\-{\leavevmode\kern\z@\string-}% + \make@car@active\>{\leavevmode\kern\z@\string>}% + \make@car@active\<{\leavevmode\kern\z@\string<}% \exemple@@{#1}{#2}% } @@ -175,7 +183,7 @@ \newcommand\falseverb[1]{{\ttfamily\detokenize{#1}}} \long\def\centerverb#1{% - \def\centerverb@i##1#1{##1\hfill\null\par\egroup} + \def\centerverb@i##1#1{##1\hfill\null\par\egroup}% \bgroup \ttfamily\@noligs \parskip3.5pt\par\hfill @@ -245,36 +253,32 @@ delim_2 "\\dotfill" \end{center} \vskip1.5cm \hfill - \hbox to 0pt{\hss - \scriptsize + \hbox to 0pt{\hss\scriptsize \setbondoffset{1pt} - \setatomsep{2em} - \chemfig{(-[:-150]R')(-[:-30]R)=[2]N-[:30]OH}% - \kern-1em - \chemrel[\chemfig{\chemabove{H}{\kern10pt\scriptstyle\oplus}}]{<>}% - \kern-0.5em - \chemfig{(-[@{a0}:-150]R')(-[:-30]R)=[2]@{a1}N-[@{b0}:30]@{b1}\chemabove{O}{\scriptstyle\oplus}H_2}% - \chemmove[red,-stealth,red,shorten <=2pt]{% - \draw(a0)..controls +(135:2mm) and +(215:4mm).. (a1); - \draw(b0)..controls +(120:2mm) and +(180:3mm).. ([yshift=7pt]b1.180); - } - \kern-1.5em - \chemrel[\chemfig{{-}H_2O}]{<>}% - $\left[\begin{tabular}{c} - \chemfig{R'-\lewis{2:,N}=@{a1}\chemabove{C}{\scriptstyle\oplus}-R}\\ - \tikz\draw[stealth-stealth](0,3mm)--(0,-3mm);\\ - \chemfig{R'-\chemabove{N}{\scriptstyle\oplus}~C-R} - \end{tabular}\right]$% - \chemrel[\chemfig{H_2@{a0}\lewis{0:2:,O}}]{<>}% - \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)}% - \chemrel[\chemfig{{-}\chemabove{H}{\kern10pt\scriptstyle\oplus}}]{<>}% - \chemfig{*6(R\rlap{$'$}-N=(-R)-OH)}% - \chemrel{-stealth}% - \chemfig{*6(R\rlap{$'$}-\chembelow{N}{H}-(-R)(=[2]O))}\par\bigskip - \hss}\hfill\null + \setatomsep{2.5em} + \setcompoundsep{5em} + \setarrowoffset{6pt} + \schemestart + \chemfig{(-[:-150]R')(-[:-30]R)=[2]N-[:30]OH} + \arrow{<=>[\chemfig{H^\oplus}]} + \chemfig{(-[@{a0}:-150]R')(-[:-30]R)=[2]@{a1}N-[@{b0}:30]@{b1}\chemabove{O}{\scriptstyle\oplus}H_2} + \chemmove[red,-stealth,red,shorten <=2pt]{ + \draw(a0)..controls +(135:2mm) and +(215:4mm).. (a1); + \draw(b0)..controls +(120:2mm) and +(180:3mm).. ([yshift=7pt]b1.180);} + \arrow{<=>[\chemfig{{-}H_2O}]}[,1.1] + \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] + \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)} + \arrow{<=>[\chemfig{{-}H^\oplus}]} + \chemfig{*6(R\rlap{$'$}-N=(-R)-OH)} + \arrow + \chemfig{*6(R\rlap{$'$}-\chembelow{N}{H}-(-R)(=[2]O))} + \schemestop\hss}\hfill\null \begin{center} \ECFAugie\small Réarrangement de Beckmann% \end{center} @@ -286,14 +290,14 @@ delim_2 "\\dotfill" \setitemize{leftmargin=3em,topsep=0pt,parsep=0pt,itemsep=0pt,label=--} \part{Introduction} -\section{Nouveautés de la version 0.4b} -Voici les nouveautés de la version 0.4b : -\begin{enumerate} - \item l'argument de la commande \verb-\chemfig- n'est plus sensible au régime courant des \idx{codes de catégories}. Par conséquent, la commande \verb-\chemfig- peut se trouver dans l'argument d'autres macros, même lorsque le code de la molécule contient des caractères ayant des codes de catégorie non inoffensifs : \verb-~-, \verb-!- ou \verb-?-. On peut donc sans problème écrire\footnote{La commande \texttt{\string\protect} ne sert ici qu'à rendre la commande \texttt{\string\chemfig} \emph{robuste}, c'est-à-dire capable d'être sauvegardée et conservée intacte par \texttt{\string\section} pour être réutilisée plus tard, dans la table des matières notamment.} dans un document \LaTeX : \verb-\section{La molécule \protect\chemfig{N~N}}-. - - Seul \og\verb-#-\fg{} est l'exception à cette règle. Pour mettre dans l'argument d'une macro la commande \texttt{\string\chemfig} dont le code de la molécule contient le caractère \verb-#-, il faut faire précéder le tout de \og\verb-\catcode`\#=12-\fg{} et le faire suivre de \og\verb-\catcode`\#=6-\fg. - \item La commande \idx{\setbondstyle} permet de régler le style des liaisons, voir page~\pageref{setbondstyle}. -\end{enumerate} +\section{Nouveautés de la version 1.0} +Voici les nouveautés de la version 1.0 : +\begin{itemize} + \item on peut désormais tracer des schémas réactionnels, voir page~\pageref{schemas}; + \item les macros \verb-\Chemabove- et \verb-\Chembelow- fonctionnent de la même façon que \verb-\chemabove- et \verb-\chembelow- mais modifient la boîte englobante, voir page~\pageref{Chemabove}; + \item la macro \verb-\Lewis- fonctionne de la même façon que \verb-\lewis- mais modifie la boîte englobante, voir page~\pageref{Lewis}; + \item les commandes \verb-\chemleft-, \verb-\chemright-, \verb-\chemup- et \verb-\chemdown- permettent de tracer des délimiteurs extensibles à gauche, à droite, au dessus ou au dessous d'un matériel quelconque. Voir page~\pageref{chemleft}. +\end{itemize} \section{Avant propos} Cette extension a pu voir le jour grâce à l'aide de Christophe \textsc{Casseau} qui en a eu l'idée après s'être confronté à la complexité de la syntaxe de l'extension \href{http://www.ctan.org/tex-archive/help/Catalogue/entries/ppchtex.html}{\texttt{\textbf{ppchtex}}}. @@ -316,7 +320,7 @@ Pour charger \CF, il faut écrire : \begin{itemize} \item {\color{blue}\verb-\input chemfig.tex-} avec $\varepsilon$\TeX\idx*\input; \item {\color{blue}\verb-\usepackage{chemfig}-} avec \LaTeX\idx*{Latex@\protect\LaTeX}\idx*\usepackage; - \item {\color{blue}\verb-\usemodule[chemfig]-} avec Con\TeX t\idx*{ConTeXt@Con\protect\TeX{}t}\idx*\usemodule. + \item {\color{blue}\verb-\usemodule[chemfig]-} avec Con\TeX t\idx*{ConTeXt@Con\protect\TeX{}t}\idx*\usemodule; \end{itemize} Dans tous les cas, le package \TIKZ\idx*{tikz}, s'il n'a pas été chargé auparavant, est chargé par \CF. @@ -402,7 +406,7 @@ Remarques : \end{itemize} \subsection{Représentation de CRAM} -\idx*{representation de Cram@représentation de Cram}Une autre façon d'indiquer l'angle de la liaison entre deux atomes. +\idx*{Cram (représentation)}Une autre façon d'indiquer l'angle de la liaison entre deux atomes. \exemple{Le méthane}|\chemfig{C(-[5]H)(-[2]H)(<[:-70]H)(<:[:-20]H)}| \subsection{Formule topologique} @@ -414,7 +418,7 @@ La liaison double est tracée de part et d'autre de la ligne de liaison simple. \chemfig{=[:-30]-[:30]=[:-30]} \chemfig{=_[:-30]-[:30]=^[:-30]}/ \subsection{Formule de Lewis} -\idx*{representation de Lewis@représentation de Lewis}La syntaxe est la suivante : +\idx*{Lewis (représentation)}La syntaxe est la suivante : \centerverb/\lewis{<indice de position><état électronique>,<atome>}/ \smallskip @@ -469,7 +473,7 @@ La commande \verb|\chemfig| vous place directement dans le mode mathématique\id Pour les puristes il est possible d'entourer la charge de l'ion en utilisant les commandes \verb|\ominus| et \verb|\oplus|\idx*{charge!\protect\texttt{\protect\string\protect\oplus}}\idx*{charge!\protect\texttt{\protect\string\protect\ominus}}. -Pour répondre à toutes les exigences, il existe deux autres commandes \idx{\chemabove} et \idx{\chembelow} qui permettent de placer les charges au dessus et en dessous de l'atome considéré.\idx*\lewis +\label{Chemabove}Pour répondre à toutes les exigences, il existe deux autres commandes \idx{\chemabove} et \idx{\chembelow} qui permettent de placer les charges au dessus et en dessous de l'atome considéré.\idx*\lewis \exemple{Quelques ions}|\chemfig{-(-[1]O^{\ominus})=[7]O} \hspace{1cm} @@ -485,7 +489,7 @@ Pour ceux qui font du zèle, les commandes \idx{\chemabove} et \idx{\chembelow} \section{Équations chimiques} \idx*{reaction chimique@réaction chimique}Voici un exemple de réaction chimique : \exemple*{Réaction chimique}/\chemfig{**6(------)} \hspace{.5cm} + \hspace{.5cm} \chemfig{H_3C-Cl} -\hspace{.5cm} $\xrightarrow{catalyseur}$ \hspace{.5cm} +\hspace{.5cm} $\xrightarrow{catalyseur}$ \hspace{.5cm} \chemfig{**6(---(-)---)} \hspace{.5cm} + \hspace{.5cm} \chemfig{H-Cl}/ \CF introduit également deux nouvelles commandes \idx{\chemsign} et \idx{\chemrel} qui permettent de simplifier légèrement la syntaxe précédente. @@ -567,7 +571,7 @@ Si deux liaisons se suivent, alors \CF insère un groupe vide \verb-{}-, et auto Par défaut, tous les atomes se trouvant dans les groupes d'atomes sont composés en mode mathématique\idx*{mode mathematique@mode mathématique} (les espaces sont ignorés). Ils peuvent donc contenir des caractères propres à ce mode comme la mise en indice ou en exposant\footnote{Il existe un problème de placement des groupes d'atomes contenant des exposants ou des indices. Voir page~\pageref{alignement.vertical}.}: \exemple{Mode mathématique}|\chemfig{A_1B^2-C _ 3 ^ 4}| -Il existe des réglages spécifiques aux liaisons de Cram\idx*{representation de Cram@représentation de Cram}\idx*\setcrambond. On utilise cette syntaxe :\label{setcrambond} +Il existe des réglages spécifiques aux liaisons de Cram\idx*{Cram (représentation)}\idx*\setcrambond. On utilise cette syntaxe :\label{setcrambond} \centerverb/\setcrambond{<dim1>}{<dim2>}{<dim3>}/ \smallskip @@ -744,7 +748,7 @@ où chaque champ prend sa valeur par défaut s'il est vide : \begin{itemize} \item le \verb-<nom>- est le nom du crochet : tous les caractères alphanumériques (a..z, A..Z, 0..9) sont admis\footnote{Ce n'est pas totalement exact. En réalité, tous les caractères pouvant être mis entre \texttt{\string\csname...\string\endcsname} sont autorisés.}. Ce nom vaut ``\verb-a-'' par défaut. Seul ce champ est pris en compte lors de la première occurrence de ce crochet portant ce nom. \item \verb-<liaison>- spécifie avec quelle liaison l'atome portant cette occurrence du crochet doit être reliée a l'atome portant la première occurrence. Deux cas de figure sont possibles; soit ce champ est un entier représentant le type de liaison voulu : 1=liaison simple, 2=liaison double, etc. Voir le tableau page~\pageref{types.liaisons} pour les codes des liaisons. - + Soit la \verb-<liaison>- est constituée des caractères codant la liaison, à condition que ces caractères soient \emph{entre accolades}; \item \verb-<tikz>- sera passé directement à \TIKZ comme on l'a vu avec les liaisons classiques. \end{itemize} @@ -996,7 +1000,7 @@ Il y a quelques contraintes avec cette commande. Pour en pendre conscience, mett \chemsign{+} \chemname{\chemfig{H_2O}}{Eau}/ -En fait, au dessous de la ligne de base de chaque molécule (en gris clair sur les exemples de ce manuel), pour écrire le \verb-<nom>-, la commande \idx{\chemname} insère 1.5ex${}+{}$\emph{la plus grande des profondeurs\footnote{En langage \TeX{}, la profondeur est la dimension qui s'étend verticalement sous la ligne de base.} des molécules rencontrées}. La macro \verb-\chemnameinit{<argument>}-\idx*{\chemnameinit} initialise cette plus grande profondeur avec le contenu de l'\verb-<argument>-. Il convient donc : +En fait, au dessous de la ligne de base de chaque molécule (en gris clair sur les exemples de ce manuel), pour écrire le \verb-<nom>-, la commande \idx{\chemname} insère 1.5ex${}+{}$\emph{la plus grande des profondeurs\footnote{En langage \TeX{}, la profondeur est la dimension qui s'étend verticalement sous la ligne de base.} des molécules rencontrées}. \label{chemnameinit}La macro \verb-\chemnameinit{<argument>}-\idx*{\chemnameinit} initialise cette plus grande profondeur avec le contenu de l'\verb-<argument>-. Il convient donc : \begin{itemize} \item d'écrire \verb-\chemnameinit{<plus profonde molécule>}- avant d'impliquer cette commande dans une réaction, sauf si cette réaction commence par la plus profonde molécule; \item d'écrire \verb-\chemnameinit{}- après avoir écrit tous les noms d'une réaction chimique afin d'éviter que la plus grande profondeur trouvée dans cette réaction n'interfère dans une réaction future. @@ -1217,7 +1221,7 @@ On va définir une séquence de contrôle \verb-\Me- pour ``méthyl'' de telle s \section{Décorations} \subsection{Formule de Lewis}\label{lewis} -\idx*{representation de Lewis@représentation de Lewis}La macro \idx{\lewis} permet de placer des paires d'électrons, des électrons ou une lacune. On utilise cette syntaxe : +\idx*{Lewis (représentation)}La macro \idx{\lewis} permet de placer des paires d'électrons, des électrons ou une lacune. On utilise cette syntaxe : \centerverb|\lewis{<n1><n2>...<ni>,<atome>}| \smallskip @@ -1237,10 +1241,12 @@ Ion oxonuim : \chemfig{H-\lewis{5|7,O^+}(-[2]H)-H}* Toutes les décorations dessinées par l'intermédiaire de \idx{\lewis} ne sont pas comptabilisées dans la boîte englobante\idx*{boite englobante@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. +\label{Lewis}Il faut noter que la macro \idx{\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. + On peut le constater de façon plus évidente en traçant une \verb-\fbox- autour des atomes décorés\idx*{\lewis} : \exemple{Boîte englobante et macro \string\lewis}*\fboxsep0pt -\fbox{\lewis{0.2.4.6.,A}}\par\medskip -\fbox{\lewis{13,B}}* +\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}}* \label{setlewis}On peut régler plusieurs paramètres à l'aide la macro\idx*\setlewis \centerverb|\setlewis[<dim1>]{<dim2>}{<dim3>}{<code tikz>}| @@ -1266,7 +1272,7 @@ et\idx*{\chembelow} \centerverb|\chembelow[<dim>]{<code>}{<matériel>}| \smallskip -placent le \verb-<matériel>- respectivement au dessus et au dessous du \verb-<code>- à une distance verticale \verb-<dim>-, et cela sans changer la \idx*{boite englobante@boîte englobante} du \verb-<code>-. La dimension \verb-<dim>- vaut 1.5pt par défaut. +placent le \verb-<matériel>- respectivement au dessus et au dessous du \verb-<code>- à une distance verticale \verb-<dim>-, et cela sans changer la boîte englobante\idx*{boite englobante@boîte englobante} du \verb-<code>-. La dimension \verb-<dim>- vaut 1.5pt par défaut. Ces commandes sont indépendantes de la macro \verb-\chemfig- et peuvent aussi bien être appelées à l'intérieur ou à l'extérieur de son argument. @@ -1276,6 +1282,8 @@ On peut les utiliser notamment dans les cycles en prenant soin de mettre des acc Elles sont parfois utiles pour placer des pseudo exposants tenant lieu de charge\idx*{cycle!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 \idx{\Chemabove} et \idx{\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. + \subsection{Réactions chimiques}\idx*{reaction chimique@réaction chimique} Pour écrire des réactions chimiques, \CF fournit une commande pour les signes et une commande pour les flèches. @@ -1672,39 +1680,728 @@ Molécule d'eau pivotée de +30\si\degree : \chemfig{[:30]@1H-[::37.775,2]@2O-[: \namebond12{\footnotesize0.9584\si\angstrom} \namebond23{\footnotesize0.9584\si\angstrom} \arclabel{0.5cm}{1}{2}{3}{\footnotesize104.45\si\degree}| +\newpage + +\part{Schémas réactionnels}\label{schemas} +\idx*{schéma réactionnel|(}Suite à plusieurs demandes d'utilisateurs et étant devenu évident que \CF présentait une faiblesse quant au tracé de schémas réactionnels, cette lacune est désormais comblée. Par conséquent, \CF passe en version 1.0 puisque je considère que les fonctionnalités principales que je souhaitais implémenter sont désormais disponibles. + +Je remercie Clemens \textsc{Niederberger} pour l'aide qu'il m'a apportée et les tests qu'il a effectués sur les nouvelles fonctionnalités présentées dans cette partie. +\section{Généralités}\label{schemestart} +Un schéma réactionnel doit être contenu entre les commandes ``\idx\schemestart'' et ``\idx\schemestop''. Comme on le constate sur cet exemple, des \idx{informations de débogage} ont été masquées puis rendues visibles pour aider à la compréhension avec la commande ``\idx\schemedebug'' et l'argument ``false'' ou ``true'' : +\exemple[50]{Exemple 1}/\schemedebug{false} +\schemestart + \chemfig{*6(-=-=-=)}\arrow + \chemfig{X=[1]Y}\arrow + \chemfig{S>T} +\schemestop +\bigskip + +\schemedebug{true} +\schemestart + \chemfig{*6(-=-=-=)}\arrow + \chemfig{X=[1]Y}\arrow + \chemfig{S>T} +\schemestop/ + +Quelques remarques : +\begin{itemize} + \item les commandes \idx{\arrow} tracent les flèches; + \item tout ce qui se trouve entre deux commande \idx{\arrow} est considéré comme étant un \idx{composé}. Le parti a été pris que tous les réglages possibles, qu'ils concernent les flèches ou les composés, le seront grâce aux arguments de la commande \idx{\arrow}, dont la syntaxe en devient assez complexe; + \item les flèches sont tracées horizontalement, ce qui est bien évidemment modifiable; + \item les flèches sont sur la ligne imaginaire reliant les centre des boîtes englobantes les composés (les points rouges et bleus sont les points d'attache des flèches). Ce comportement est également modifiable; + \item Les informations de débogage, qui sont rendues visibles ou pas avec la commande \idx{\schemedebug} sont : + \begin{itemize} + \item ce qui se trouve en vert au dessus des boîtes englobantes est le nom attribué par défaut par \CF aux composés et suit la progression "c1", "c2", etc. La numérotation repart à 1 pour un nouveau schéma réactionnel. + \item les boîtes englobantes des composés ont été tracées; + \item les extrémités des flèches sont matérialisés par des points rouge et les ancres par des points bleu; + \end{itemize} + \item la distance de bord à bord entre deux composés est définie avec la commande \idx*\setcompoundsep\verb-\setcompoundsep{<dim>}-\label{setcompoundsep} où l'argument est une dimension valide au sens de \TeX{}. Par défaut, et si l'argument est vide, cette dimension vaut 5em; + \item enfin, la distance entre les bords des composés et le début et la fin des flèches est défini avec la commande \idx*\setarrowoffset\verb-\setarrowoffset{<dim>}- où l'argument est une dimension valide au sens de \TeX{}. Par défaut, et si l'argument est vide, cette dimension vaut 4pt.\label{setarrowoffset} +\end{itemize} + +\section{Types de flèches}\label{arrow} +Lorsque la commande \idx{\arrow} est suivie d'un argument optionnel entre accolades (qui n'est donc pas obligatoire), cet argument contient le type de flèche\idx*{flèche!type} : +\exemple[50]{Types de flèches}|\schemestart A\arrow{->}B\schemestop\par % par défaut +\schemestart A\arrow{-/>}B \schemestop\par +\schemestart A\arrow{<-}B \schemestop\par +\schemestart A\arrow{<->}B \schemestop\par +\schemestart A\arrow{<=>}B \schemestop\par +\schemestart A\arrow{<->>}B \schemestop\par +\schemestart A\arrow{<<->}B \schemestop\par +\schemestart A\arrow{0}B \schemestop\par +\schemestart A\arrow{-U>}B \schemestop| +La flèche ``\verb/-U>/'' n'est pas dessinée de façon complète, un arc de cercle qui lui est tangent en son milieu peut être rajouté avec les arguments optionnels passés à cette flèche, voir page~\pageref{fleche.arg.optionnel}. Voici une flèche ``\verb/-U>/'' avec son arc de cercle : \schemestart A\arrow{-U>[$\scriptstyle x$][$\scriptstyle y$]}B\schemestop + +Par souci de concision, par la suite, sauf exemple spécial, des lettres majuscules seront mises au lieu de formules chimiques crées via la commande \idx\chemfig. Il est bien évident que les schémas réactionnels fonctionnent de façon identique avec des lettres ou des dessins de molécules. On peut voir dans la galerie plusieurs exemples où les schémas réactionnels entrent en jeu. + +\section{Caractéristiques des flèches} +Chaque \idx{flèche} est caractérisée par : +\begin{itemize} + \item \idx*{flèche!angle}un angle exprimé en degrés; + \item \idx*{flèche!coefficient}un coefficient qui spécifie la longueur de la flèche par multiplication de la valeur de l'espacement entre composés\idx*{composé!espacement} défini par \idx\setcompoundsep; + \item \idx*{flèche!style}un style qui contient des instructions \TIKZ qui vont permettre de personnaliser la couleur, l'épaisseur de la flèche ou un autre attribut graphique. +\end{itemize} + +On peut définir ces caractéristiques à l'aide de la commande \idx\setarrowdefault\verb-{angle,coeff,style}-\label{setarrowdefault}, et ce, à \emph{l'extérieur} d'un schéma réactionnel. Si l'angle est vide, il prend la valeur 0 et si le coeff est est vide, il vaut 1. Les caractéristiques ainsi définies sont valables pour tout le reste du document, à partir du moment où l'instruction est rencontrée. Pour revenir aux valeurs par défaut, il suffit d'entrer un argument vide. +\exemple[50]{Définition de valeurs par défaut}/\schemestart A\arrow B\arrow C\schemestop + +\setarrowdefault{15,1.5,red,thick} +\schemestart A\arrow B\arrow C\schemestop + +\setarrowdefault{,2.5,dashed} +\schemestart A\arrow B\arrow C\schemestop + +\setarrowdefault{} +\schemestart A\arrow B\arrow C\schemestop/ + +Pour modifier localement une, ou toutes ces valeurs par défaut, la commande \idx{\schemestart} admet un argument optionnel de la forme \verb-[angle,coeff,style]- qui change les caractéristiques par défaut à l'intérieur du schéma réactionnel concerné : +\exemple[50]{Argument optionnel}/\setarrowdefault{5,2.5,blue} +\schemestart A\arrow B\arrow C\schemestop + +\schemestart[0] A\arrow B\arrow C\schemestop + +\schemestart[0,1] A\arrow B\arrow C\schemestop + +\schemestart[0,1,thick] A\arrow B\arrow C\schemestop + +\schemestart[0,1,black] A\arrow B\arrow C\schemestop/ +Pour le style\idx*{flèche!style}, la règle est la suivante : le style spécifié dans l'argument entre crochets s'applique \emph{après} le style par défaut, sans l'écraser ! C'est pour cette raison que seul l'attribut de couleur ``black'' parvient à écraser celui par défaut qui est ``blue''. + +Enfin, la commande \idx{\arrow} admet un argument optionnel entre crochets de la forme \verb-[angle,coeff,style]- pour modifier les caractéristiques de la flèche concernée. Pour le style, comme précédemment, celui est-ci est appliqué \emph{après} le style par défaut et l'éventuel style spécifié dans l'argument optionnel de la commande \verb-\schemestart-, le tout sans écrasement. +\exemple[50]{Caractéristiques des flèches}/\schemestart + A\arrow[45]B\arrow[-20,2]C +\schemestop +\bigskip + +\schemestart + A\arrow[90,,thick]B\arrow[,2]C + \arrow[-45,,dashed,red]D +\schemestop/ + +\section{Nom des composés} +\idx*{composé!nom}On peut passer outre le mécanisme automatique qui nomme les composés ``c1'', ``c2'', etc. Pour cela, la commande \idx{\arrow} admet un argument entre parenthèses qui doit suivre immédiatement la commande. Cet argument est de la forme : \verb/(n1--n2)/. Il nomme ``\verb-n1-'' le \idx{composé} se trouvant à l'origine de la flèche et ``\verb-n2-'' celui se trouvant à sa fin. N'importe quelle chaîne de caractères alphanumériques peut être utilisée. La numérotation des noms "c<n>" continue en interne ce qui signifie que si un \idx{composé} porte un autre nom que celui par défaut, cela ne change pas le nom par défaut des composés suivants. + +Les noms sont facultatifs et l'argument peut aussi bien être \verb/(n1--)/ que \verb/(--n2)/. + +\exemple[50]{Nom des composés}/\schemedebug{true} +\schemestart + A\arrow(aa--bb)B\arrow(--cc)C\arrow(--dd)D\arrow E +\schemestop +\bigskip + +\schemestart + A\arrow(aa--)B\arrow(bb--)C\arrow(cc--dd)D\arrow E +\schemestop/ +On le voit, les deux méthodes sont équivalentes et l'on peut donc nommer un \idx{composé} avec la flèche qui le précède ou avec la flèche qui le suit. Par contre lorsqu'un \idx{composé} est entouré de deux flèches spécifiant son nom, le premier nom est ignoré et un warning est émis : +\exemple[50]{Noms surabondants}/\schemedebug{true} +\schemestart + A\arrow(--foo)B\arrow(bar--)C +\schemestop/ +Ici, le \idx{composé} ``B'' est nommé ``foo'' par la flèche qui lui arrive dessus et ``bar'' par celle qui en part. \CF émet donc le warning suivant annonçant que le nom "foo" sera ignoré : + +\hfill\verb-Package chemfig Warning: two names for the same node, first name "foo" ignored-\hfill\null + +\section{Ancres} +\idx*{composé!ancre}Comme on l'a vu, les flèches sont sur la ligne reliant les centre de boites englobant les composés. On peut spécifier un ancre autre que celui par défaut (qui, au sens de \idx*{tikz}\TIKZ, s'appelle ``center''). On utilise pour cela l'argument entre parenthèses : + +\hfill\verb/(n1.a1--n2.a2)/\hfill\null + +où l'ancre ''\verb-a1-`` ou ''\verb-a2-`` peut être : north west, north, north east, west, center, east, mid west, mid, mid east, base west, base, base east, south west, south, south east, text, ou n'importe quel angle. Voici un exemple du manuel de \TIKZ où les ancres sont placés sur la boîte englobante : +\exemple*{Ancres de tikz}|\Huge +\begin{tikzpicture}[baseline] +\node[anchor=base west,name=x,draw,inner sep=25pt] {\color{lightgray}Rectangle\vrule width 1pt height 2cm}; +\foreach \anchor/\placement in +{north west/above left, north/above, north east/above right,west/left, center/above, east/right, +mid west/left, mid/above, mid east/right,base west/left, base/below, base east/right, +south west/below left, south/below, south east/below right,text/below,10/right,45/above,150/left} +\draw[shift=(x.\anchor)] plot[mark=x] coordinates{(0,0)} +node[\placement,inner sep=0pt,outer sep=2pt] {\scriptsize\texttt{(\anchor)}}; +\end{tikzpicture}| +Comme les noms, les ancres de départ et de fin sont indépendants et facultatifs. + +Voici un exemple où l'alignement\idx*{schéma réactionnel!alignement} par défaut n'est pas bon car les deux ``A'' ne sont pas alignés verticalement. Les \idx{informations de débogage} ont été rendues visibles pour constater que les ancres ``center'' par défaut ne conviennent pas : +\exemple[50]{Problèmes d'alignement}/\schemedebug{true} +\schemestart + \chemfig{A*5(-----)} + \arrow + \chemfig{A*5(---(-)--)} +\schemestop/ +Pour que l'alignement\idx*{schéma réactionnel!alignement} soit correct, on va faire partir/arriver la flèche soit des ancres ``base east''/``base west'', soit des ancres ``mid east''/``mid west'' : +\exemple[50]{Problèmes d'alignement}/\schemedebug{true} +\schemestart + \chemfig{A*5(-----)} + \arrow(.base east--.base west) + \chemfig{A*5(---(-)--)} +\schemestop +\bigskip + +\schemestart + \chemfig{A*5(-----)} + \arrow(foo.mid east--bar.mid west) + \chemfig{A*5(---(-)--)} +\schemestop/ + +\idx*{composé!ancre}Un dernier ancre reste à spécifier, c'est celui du premier \idx{composé} par rapport à la \idx{ligne de base} du texte qui le précède, il s'agit du point vert de gauche sur le schéma qui suit : +\exemple[50]{Ancre initial}/\schemedebug{true} +Texte qui précède : +\schemestart + \chemfig{A*5(-----)}\arrow A +\schemestop/ + +L'emplacement de cet ancre sur la boîte contenant le premier \idx{composé} vaut par défaut ``text''. Il est réglable avec le second argument optionnel de la commande \idx{\schemestart} : +\exemple[50]{Réglage de l'ancre initial}/\schemedebug{true} +Texte qui précède : +\schemestart[][south] + \chemfig{A*5(-----)}\arrow A +\schemestop +\bigskip + +Texte qui précède : +\schemestart[][north west] + \chemfig{A*5(-----)}\arrow A +\schemestop +\bigskip + +Texte qui précède : +\schemestart[][west] + \chemfig{A*5(-----)}\arrow A +\schemestop/ + +\section{Style des composés} +\idx*{composé!style}Toujours par l'intermédiaire de l'argument entre parenthèses de la commande \idx{\arrow}, on peut spécifier avec des instructions de \TIKZ le style ``\verb-s-'' de la boîte englobante du \idx{composé} de départ ou de celui d'arrivée. La syntaxe complète de la commande \idx{\arrow} est donc la suivante, où chaque spécification est optionnelle et peut être omise : + +\hfill\verb/\arrow(n1.a1[s1]--n2.a2[s2]){type flèche}[angle,coeff,style flèche]/\hfill\null + +Tout comme les noms, si un style est spécifié à un composé par la flèche qui lui arrive dessus et par celle qui en part, le premier style sera ignoré avec un warning. + +\exemple[60]{Style des composés}/\schemestart + A + \arrow([red]--[fill=blue,semitransparent,text opacity=1, + inner sep=10pt,rounded corners=2mm]) + B +\schemestop +\bigskip + +\schemestart + A\arrow(--foo[yshift=5mm])B +\schemestop/ +\label{setcompoundstyle}La macro \idx\setcompoundstyle\verb-{<code tikz>}- permet de définir de façon générale le style des composés\idx*{composé!style} affichés par la suite. Il faut bien évidemment entrer un argument vide pour qu'aucun style ne soit appliqué, ce qui est le cas par défaut. + +Ici, nous allons définir un style en forme de boites aux coins arrondis, dont le fond sera semi transparent : +\exemple[50]{Styles globaux}/\setcompoundstyle{draw,line width=0.8pt,semitransparent, +text opacity=1,inner sep=8pt,rounded corners=1mm} +\schemestart + A\arrow([fill=red]--[fill=blue])[90] + B\arrow(--[fill=gray]) + C\arrow(--[fill=green])[-90] + D\arrow(--[draw=none])[-180] +\schemestop/ + +\section{Embranchements} +\idx*{schéma réactionnel!embranchements}Jusqu'à présent, on n'a pu tracer que des schémas réactionnels linéaires. On peut également faire des embranchements et c'est là que le nom des composés va prendre toute son importance. Dans l'argument entre parenthèses de la commande \idx{\arrow}, si un nom est précédé de \og\verb-@-\fg, cela signifie que ce \idx{composé} existe déjà. Plusieurs cas de figure peuvent se présenter : +\begin{itemize} + \item \verb/(@n1--n2)/ : la flèche sera tracée depuis le composé existant \og\verb-n1-\fg{} et le schéma continuera à la suite de cette flèche, créant donc un embranchement; + \item \verb/(@n1--@n2)/ : la flèche est tracée entre deux composés existants, qu'ils soient déjà définis ou qu'ils soient définis plus tard dans le schéma réactionnel : cette syntaxe peut donc se placer \emph{n'importe où} dans le code du schéma réactionnel; + \item \verb/(n1--@n2)/ : cette syntaxe n'est pas admise; +\end{itemize} + +Voici un exemple où 3 embranchements sont créés, l'un partant de ``B'', l'autre de ``D'' et le dernier de ``X''. À la fin, une flèche est tracée entre 2 composés existants \og XX\fg{} et \og D\fg{} : +\exemple[50]{Embranchements}/\schemestart + A\arrow(aa--bb)B\arrow(--cc)C\arrow D + \arrow(@bb--xx1)[-90]X\arrow[-90]Y% 1er embranchement + \arrow(@c4--)[-90]Z\arrow W% 2è embranchement + \arrow(@xx1--xx2)[-45]XX% 3è embranchement + \arrow(@xx2--@c4)% flèche XX à D +\schemestop/ + +On pourrait vouloir que ``Y'' et ``XX'' soient sur une même horizontale. Pour cela, on va tracer une liaison invisible horizontale de ``Y'' à ``XX'' et finir le schéma par une flèche entre les deux composés existants ``XX'' et ``D'' : +\exemple[50]{Embranchements}/\schemestart + A\arrow(aa--bb)B\arrow(--cc)C\arrow D + \arrow(@bb--xx1)[-90]X\arrow[-90]Y\arrow(--xx2){0}XX + \arrow(@c4--)[-90]Z\arrow W + \arrow(@xx1--@xx2)% flèche de X à XX + \arrow(@xx2--@c4)% flèche XX à D +\schemestop/ + +\section{Sous schéma}\label{subscheme} +\idx*{schéma réactionnel!sous schéma}On peut placer une partie d'un schéma réactionnel dans une boîte englobante unique, considérée par \CF comme un \idx{composé}. La commande \idx{\subscheme} dont l'argument obligatoire contient le sous schéma entre accolades permet de grouper un sous schéma comme un tout et lorsque \idx{\subscheme} se trouve après une flèche, la commande enveloppe ce sous schéma dans un \idx{composé} portant le nom ``c<n+1>'' : +\exemple[50]{Sous schéma}/\schemedebug{true} +\schemestart + A\arrow + \subscheme{B\arrow[-90,2]C} + \arrow + D +\schemestop/ +Bien que ça ne soit pas clair car les noms se superposent, la boîte contenant le sous schéma porte le nom ``c2'' et la numérotation se poursuit à l'intérieur du sous schéma ``c3'' pour B, ``c4'' pour C. Comme le premier \idx{composé} du sous schéma est ``B'', la ligne de base du sous schéma est celle de ``B''. On peut le mettre en évidence en précisant les ancres\idx*{schéma réactionnel!sous schéma!ancre} : +\exemple[50]{Sous schéma}/\schemedebug{true} +\schemestart + A\arrow(--.mid west) + \subscheme{B\arrow[-90,2]C} + \arrow + D +\schemestop/ +Il faut noter que la commande \idx\subscheme\verb-{<scheme>}- n'étant rien d'autre qu'un raccourci pratique pour \idx\schemestart\verb-<scheme>-\idx\schemestop, elle admet les mêmes arguments optionnels que \idx\schemestart. + +\idx*{schéma réactionnel!sous schéma!délimiteur|(}\label{chemleft}\CF fournit la paire de commandes \idx{\chemleft} et \idx{\chemright} qui permettent de placer des délimiteurs extensibles de part et d'autre d'un matériel. Ces commandes doivent être suivies de délimiteurs, tout comme on en mettrait à la suite des primitives de \TeX{} \verb-\left- et \verb-\right- : +\centerverb/\chemleft<car1><matériel>\chemright<car2>/ +où \verb-<car1>- et \verb-<car2>- sont ``('' et ``)'' ou ``['' et ``]'' ou tout autre délimiteur extensible accepté par les commandes \verb-\left- et \verb-\right-. +\exemple{Les macros \string\chemleft\ et \string\chemright}/\chemleft\lfloor\chemfig{A-[1]B}\chemright) + +\chemleft\{\chemfig{A-[1,1.25]B-[6,1.25]C}\chemright| + +\chemleft[\chemfig{H-[1]O-[7]H}\chemright]/ +Voici le code du schéma réactionnel vu précédemment où l'on utilise \idx{\chemleft} et \idx{\chemright} : +\exemple{Schéma réactionnel avec \string\chemleft\ et \string\chemright}/\schemestart + A\arrow + \chemleft[\subscheme{B\arrow[-90,2]C}\chemright] + \arrow + D +\schemestop/ +\label{chemup}Dans le même ordre d'idée, les macros \idx{\chemup} et \idx{\chemdown} fonctionnent de la même façon sauf que les délimiteurs extensibles sont positionnés au dessus et au dessous du matériel : +\centerverb/\chemup<car1><matériel>\chemdown<car2>/ +Voici un exemple : +\exemple{Les macros \string\chemup\ et \string\chemdown}/\schemestart[-90] +X\arrow +\chemup\{\chemfig{A-[1]B-[7]C}\chemdown\} +\arrow Y +\schemestop +\qquad +\schemestart[-90] +X\arrow +\chemup[\chemfig{A-[1]B-[7]C}\chemdown] +\arrow Y +\schemestop/ + +Avec les styles des composés, il est possible également possible de délimiter un composé quelconque (et donc un sous schéma) par des délimiteurs extensibles (parenthèses, crochets, accolades), ceci après avoir chargé la librairie de \TIKZ \og matrix\fg{} en mettant dans le préambule du document : + +\hfill\verb-\usetikzlibrary{matrix}-\hfill\null + +Comme les commandes \idx{\chemleft}, \idx{\chemright}, \idx{\chemup} et \idx{\chemdown} sont disponibles, l'extension \CF ne procède \emph{pas} à ce chargement, il appartient donc à l'utilisateur de le faire s'il souhaite avoir accès à ces délimiteurs. + +Voici le sous schéma précédent délimité par des crochets : +\exemple[50]{les délimiteurs de la librairie ``matrix''}/\schemestart + A\arrow(--[left delimiter={[}, right delimiter={]}]) + \subscheme{B\arrow[-90,2]C} + \arrow + D +\schemestop/ +Les délimiteurs étant tracés en dehors de la boîte englobante, il est souhaitable ici de raccourcir un peu les flèches arrivant et partant de ces délimiteurs : +\exemple[50]{Sous schéma}/\schemestart + A\arrow(--[left delimiter={[}, + right delimiter={]}])[,,shorten >=6pt] + \subscheme{B\arrow[-90,2]C} + \arrow[,,shorten <=6pt] + D +\schemestop/\idx*{schéma réactionnel!sous schéma!délimiteur|)} + +Les sous schémas doivent être utilisés à bon escient et peuvent parfois donner des résultats non désirés. Voici un exemple où l'on se sert d'un sous schéma pour aligner horizontalement 3 composés : +\exemple[50]{Sous schéma}/\schemedebug{true} +\schemestart + A + \arrow{0}[-90] + \subscheme{% + tagada\arrow{} + tsoin\arrow{} + fin} + \arrow(xx--yy){}E + \arrow(@c1--@c3){} + \arrow(@c1--@c5){} + \arrow(@c1--@c4){} +\schemestop/ +On constate que le centre du sous schéma est sur la même verticale que le centre du composé "A" puisqu'on a tracé une flèche invisible\idx*{flèche!invisible} avec un angle de $-90$. Par contre, la flèche entre deux composés existants \og A\fg{} et \og tsoin\fg{} n'est \emph{pas} verticale car \og tsoin\fg{} ne se trouve pas sous le centre du sous-schéma puisque "tagada" est plus large que "fin". Pour rendre cette flèche verticale, on ne peut pas s'en sortir avec un sous schéma, sauf à spécifier un angle trouvé en tâtonnant pour l'ancre d'arrivée de la flèche invisible. + +Il sera beaucoup plus simple de procéder sans sous-schéma et en utilisant un embranchement : tracer une flèche \emph{visible} entre \og A\fg{} et \og tsoin\fg{}, puis partir de \og tsoin\fg{} pour tracer de part et d'autre des flèches horizontales, en créant un embranchement pour les flèches vers la droite. +\exemple[50]{Sous schéma}/\schemedebug{true} +\schemestart + A + \arrow(--tsoin){->}[-90] + tsoin + \arrow{<-}[180] + tagada + \arrow(@tsoin--fin){} + fin + \arrow{} + E + \arrow(@c1--@c3){} + \arrow(@c1--@fin){} +\schemestop/ + +\section{Arguments optionnels des flèches}\label{fleche.arg.optionnel} +\idx*{flèche!argument optionnel}À l'intérieur de l'argument entre accolades de la commande \idx\arrow, le nom des flèches peut être suivi d'arguments optionnels placés entre crochets. Voici ces arguments optionnels et leur signification pour les flèches définies par \CF : +\begin{itemize} + \item les flèches ``\verb|->|'', ``\verb|<-|'', ``\verb|<->|'', ``\verb|<=>|'', ``\verb|<<->|'',``\verb|<->>|'', ``\verb|-/>|'' ont trois arguments optionnels : + \begin{itemize} + \item le premier contient le ``label'' qui sera placé au dessus de la flèche\idx*{flèche!label}; + \item le second contient le ``label'' qui sera placé sous la flèche. Ces deux labels sont orientés selon le même angle que la flèche. On peut régler le décalage perpendiculaire\idx*{flèche!label!décalage} entre la flèche et l'ancre\idx*{flèche!label!ancre} des labels avec la commande \idx*\setarrowlabelsep\verb-\setarrowlabelsep{<dim>}-\label{setarrowlabelsep}, où l'argument est une dimension valide au sens de \TeX{}. Par défaut, ou si l'argument est vide, cette distance vaut 3pt. Les labels contenus dans les deux arguments optionnels ne \emph{sont pas} composés en mode mathématique. + \item le troisième est une dimension qui correspond au décalage dans la direction perpendiculaire au sens de la flèche\idx*{flèche!décalage} que l'on veut lui faire subir : cette dimension sera positive pour un décalage de la flèche (et ses éventuels labels) vers le haut et négative si l'on souhaite un décalage vers le bas. + \end{itemize} + \item la flèche ``\verb|-U>|'' dispose de 5 arguments optionnels : + \begin{itemize} + \item les trois premiers sont identiques à ceux des autres types de flèches; + \item le quatrième est le coefficient (qui vaut 0.333 par défaut) qui multiplie la longueur de la flèche pour obtenir le rayon de l'arc de cercle; + \item le cinquième est le demi angle partant du centre de l'arc de cercle tracé, il vaut 60 degrés par défaut. + \end{itemize} + \item la flèche invisible\idx*{flèche!invisible} ``\verb-0-'' admet 2 arguments optionnels qui sont du même type que les deux premiers vus au dessus; +\end{itemize} +\exemple[50]{Arguments optionnels des flèches}/\schemedebug{false} +\schemestart A\arrow{->[sur][sous]}B \schemestop +\qquad +\schemestart A\arrow{->[sur][sous][4pt]}B \schemestop +\qquad +\schemestart A\arrow{->[sur][sous][-4pt]}B \schemestop +\medskip + +\schemestart A\arrow{<=>[sur][sous]}[30,1.5]B \schemestop +\medskip + +\schemestart[-20] + A\arrow{->}B\arrow{->[][][3pt]}C\arrow{->[][][-3pt]}D +\schemestop/ +Un problème survient lorsque les flèches sont verticales : +\exemple[50]{Flèches verticales}/\schemestart + A\arrow{->[sur][sous]}[-90]B +\schemestop/ +Par souci de lisibilité, il serait souhaitable que les \idx*{flèche!label}labels placés au dessus et au dessous soient horizontaux. On peut choisir l'angle selon lequel les labels sont affichés\idx*{flèche!label!angle}, la valeur par défaut étant l'angle de la flèche. Pour spécifier un autre angle, il suffit de placer au début des arguments optionnels \verb-*{<angle>}- : +\exemple[55]{Choix des angles}/\schemedebug{true} +\schemestart A\arrow{->[*{0}sur][*{0}sous]}[90]B\schemestop +\qquad +\schemestart A\arrow{->[*{0}sur][*{0}sous]}[45]B\schemestop +\qquad +\schemestart A\arrow{->[*{0}sur][*{0}sous]}[-45]B\schemestop +\qquad +\schemestart A\arrow{->[*{0}sur][*{0}sous]}[-90]B\schemestop/ +L'ancre par défaut où est attaché chaque label provoque parfois des affichages indésirables : +\exemple[50]{Ancres}/\schemedebug{true} +\schemestart + A\arrow{->[*{0}au-dessus][*{0}au-dessous]}[45,2]B +\schemestop/ +On peut spécifier également l'ancre d'attache\idx*{flèche!label!ancre} pour écraser celui choisi par \CF par défaut. Il suffit d'utiliser la syntaxe suivante : \verb-*{<angle>.<ancre>}-. +\exemple[50]{Ancres}/\schemedebug{true} +\schemestart + A\arrow{->[*{0.0}au-dessus][*{0.180}au-dessous]}[45,2]B +\schemestop +\qquad +\schemestart + A\arrow{->[*{0.south east}au-dessus]% + [*{0.north west}au-dessous]}[45,2]B +\schemestop/ + +Le cas particulier à envisager est la flèche ``\verb/-U>/''. Si l'un des deux labels contenus dans les deux premiers arguments optionnels est présent, l'arc de cercle correspondant est tracé : +\exemple[50]{La flèche \texttt{-U>}}/\schemestart A\arrow{-U>[123][456]}B\schemestop +\qquad +\schemestart A\arrow{-U>[123]}[30]B\schemestop +\qquad +\schemestart A\arrow{-U>[][456]}[-30]B\schemestop/ + +Le quatrième et cinquième argument optionnel changent les dimensions de l'arc de cercle, respectivement le coefficient qui multiplie la longueur de la flèche pour obtenir le rayon et l'angle correspondant au demi arc de cercle : +\exemple[50]{La flèche \texttt{-U>}}/\schemestart A\arrow{-U>[123][456][][0.25]}B\schemestop +\qquad +\schemestart A\arrow{-U>[123][456][][][90]}B\schemestop +\qquad +\schemestart A\arrow{-U>[123][456][][1][45]}B\schemestop/ +En mettant un rayon et un angle négatif, l'arc de cercle se situe sous la flèche : +\exemple[50]{La flèche \texttt{-U>}}/\schemestart + A\arrow{-U>[123][456][][-0.333][-60]}B +\schemestop/ +Les deux premiers arguments disposent des mêmes fonctionnalités concernant les angles d'affichage et les ancres paramétrables que ceux des autres flèches : +\exemple[50]{La flèche \texttt{-U>}}/\schemestart + A\arrow{-U>[123][456]}[-90]B +\schemestop +\qquad +\schemestart + A\arrow{-U>[*{0.180}123][*{0.180}456]}[-90]B +\schemestop/ + +\section{Créer ses propres flèches}\label{definearrow} +Cette section, assez technique et demandant des connaissances sur \TIKZ, n'intéressera que les utilisateurs confirmés ayant besoin de définir leur propres flèches. + +La commande \idx{\definearrow} permet de construire des flèches personnalisées. La syntaxe de cette commande est la suivante : -\section{Liste des commandes} +\hfill\verb-\definearrow{<nombre>}{<nom flèche>}{<code>}-\hfill\null + +où \verb-<nombre>- est le nombre d'arguments optionnels auxquels on fera référence dans le \verb-<code>- avec la syntaxe habituelle \verb-#1-, \verb-#2-, etc. On ne peut pas définir de valeur par défaut pour ces arguments optionnels, et s'ils sont absents lorsque l'utilisateur utilise la macro \verb-\arrow-, ils seront vides. + +Avant d'aller plus loin, examinons les macros disponibles en interne lors du tracé des flèches. Comme ces macros ont le caractère \verb-@- dans leur nom, on ne peut y accéder qu'entre les commandes \idx{\makeatletter} et \idx{\makeatother}. +\begin{itemize} + \item \idx{\CF@arrow@start@name} et \idx{\CF@arrow@end@name} contiennent les noms des composés (qui sont des nœuds pour \TIKZ) entre lesquels doit être tracée la flèche; + \item \idx{\CF@arrow@start@node} et \idx{\CF@arrow@end@node} contiennent les noms des nœuds où seront placés les extrémités des flèches. À la suite de ces noms viennent s'ajouter, s'ils ne sont pas vides, les ancres spécifiés par l'utilisateur dans l'argument entre parenthèses de la commande \idx\arrow; + \item \idx{\CF@arrow@current@style} et \idx{\CF@arrow@current@angle} contiennent le style et l'angle de la flèche devant être tracée\idx*{flèche!angle}\idx*{flèche!style}; + \item \idx{\CF@arrow@shift@nodes}\verb-{<dim>}- décale les nœuds ``\idx{\CF@arrow@start@node}'' et ``\idx{\CF@arrow@end@node}'' de la dimension contenue dans son argument et ce, dans la direction perpendiculaire à la flèche\idx*{flèche!décalage}; + \item \idx{\CF@arrow@display@label}\verb/{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}/ est la plus complexe et se charge de placer les labels\idx*{flèche!label} avec les arguments suivants : + \begin{itemize} + \item \verb-#1- et \verb-#5- sont les labels a écrire; + \item \verb-#2- et \verb-#6- sont des réels compris entre 0 et 1 spécifiant à quel endroit de la flèche ces labels doivent être écrits, 0 étant le début et 1 étant la fin,, le tout étant supposé que la flèche est \emph{rectiligne}; + \item \verb-#3- et \verb-#7- sont les caractères ``+'' ou ``-'', ``+'' affichant le label au dessus et ``-'' l'affichant au dessous + \item \verb-#4- et \verb-#8- sont les nom des nœuds correspondant au début et à la fin de la flèche. + \end{itemize} + \item les extrémités de flèches\idx*{flèche!extrémité} employées sont ``\verb-CF@full-''\footnote{cette extrémité ressemble à la flèche définie dans \TIKZ : \texttt{stealth}.} pour une flèche complète et ``\verb-CF@half-'' pour la demi flèche supérieure. +\end{itemize} + +\subsection{Une première flèche} +Pour créer un exemple, mettons que l'on veuille construire une flèche avec un disque en son milieu que l'on va appeler ``\verb/-.>/''. Décidons qu'elle admettra 4 arguments optionnels. Comme pour les flèches déjà définies, le premier et le second seront les labels à mettre au dessus et au dessous et le troisième sera le décalage de la flèche dans le sens perpendiculaire à sa direction. Enfin, le 4\ieme{} argument sera la taille du point que l'on prendra égale à 2pt si le 4\ieme{} argument est absent. + +Nous allons d'abord écrire \idx*\definearrow\verb/\definearrow{4}{-.>}/ pour déclarer que la flèche aura 4 arguments optionnels et s'appellera \verb/-.>/. Tout d'abord, il faut modifier les positions des nœuds entre lesquels doit être tracée la flèche pour tenir compte du décalage contenu dans le 3\ieme{} argument. Ceci est réalisé par la macro \idx{\CF@arrow@shift@nodes}, et il suffit donc de commencer le code de la flèche par : \idx{\CF@arrow@shift@nodes}\verb-{#3}%-. Ensuite, il faut tracer la flèche elle même et en profiter pour poser un nœud au milieu du segment que nous appelons "\verb-mid@point-", puis tracer un cercle dont le centre est ce dernier nœud. Tout ceci est fait par le code \idx*{tikz}\TIKZ suivant : + +{\hskip2em\verb-\edef\pt@radius{\ifx\@empty#4\@empty 2pt\else #4\fi}% rayon du point-\par\parskip0pt +\hskip2em\verb/\expandafter\draw\expandafter[\CF@arrow@current@style,-CF@full]/\par +\hskip4em\verb/(\CF@arrow@start@node)--(\CF@arrow@end@node)coordinate[midway](mid@point);/\par +\hskip2em\verb-\filldraw(mid@point)circle(\pt@radius);%-} + +Il ne nous reste plus qu'à placer les labels\idx*{flèche!label} s'ils existent avec la ligne suivante : + +\hskip2em\verb/\CF@arrow@display@label{#1}{0.5}{+}{\CF@arrow@start@node}{#2}{0.5}{-}{\CF@arrow@end@node}/ + +Voici notre flèche achevée : +\exemple*{Flèche ``-.>''}/\makeatletter +\definearrow4{-.>}{% + \edef\pt@radius{\ifx\@empty#4\@empty 2pt\else #4\fi}% rayon du point + \CF@arrow@shift@nodes{#3}% + \expandafter\draw\expandafter[\CF@arrow@current@style,-CF@full](\CF@arrow@start@node)--(\CF@arrow@end@node) + coordinate[midway](mid@point); + \filldraw(mid@point)circle(\pt@radius);% + \CF@arrow@display@label{#1}{0.5}{+}{\CF@arrow@start@node}{#2}{0.5}{-}{\CF@arrow@end@node} + } +\makeatother +\schemestart +A \arrow{-.>} B \arrow{-.>[sur][sous][][1pt]} C \arrow{-.>[][sous]}[30] D \arrow{-.>[sur][][5pt][1.5pt]} E +\schemestop/ + +\subsection{Une flèche courbe} +Pourquoi ne pas maintenant créer une flèche courbe ? Pour rendre les choses simples, mettons qu'elle n'aura qu'un seul argument optionnel contenant le code \TIKZ qui définira le (ou les) point de contrôle, et si cet argument est vide, une flèche du type ``\verb/->/'' sera tracée. + +Si l'argument \verb-#1- n'est pas vide, ce qui nous intéresse ne sont pas \idx{\CF@arrow@start@node} et \idx{\CF@arrow@end@node} qui contiennent les noms des nœuds où seront placés les extrémités des flèches parce que l'emplacement des ces nœuds est déjà déterminés par les ancres\idx*{flèche!ancre} qui sont calculés pour des flèches \emph{rectilignes} ! Nous allons plutôt prendre \idx{\CF@arrow@start@name} et \idx{\CF@arrow@end@name} qui contiennent les noms des composés (qui sont des nœuds pour \TIKZ) entre lesquels doit être tracée la flèche. Voici le code \TIKZ qui va tracer la ligne courbe entre ces deux composés : + +{\verb/\draw[shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset,\CF@arrow@current@style,-CF@full,/\par\parskip0pt +\verb/(\CF@arrow@start@name).. controls #1 ..(\CF@arrow@end@name);%/} + +On doit rajouter le code \TIKZ qui permet de raccourcir la flèche tracée de la valeur \idx{\CF@arrow@offset} définie par \idx{\setarrowoffset} puisqu'on ne part pas des nœuds correspondant aux flèches rectilignes \idx{\CF@arrow@start@node} et \idx{\CF@arrow@end@node}. Il faudra donc rajouter au début de \idx{\CF@arrow@current@style} le code suivant\idx*{\CF@arrow@offset}\idx*{\CF@arrow@offset} : +\centerverb/shorten <=\CF@arrow@offset, shorten >=\CF@arrow@offset/ +c'est ce que font les deux lignes qui suivent le \verb-\else-. + +Voici donc notre flèche : +\exemple*{Flèche courbe}/\makeatletter +\definearrow1{s>}{% +\ifx\@empty#1\@empty + \expandafter\draw\expandafter[\CF@arrow@current@style,-CF@full](\CF@arrow@start@node)--(\CF@arrow@end@node);% +\else + \def\curvedarrow@style{shorten <=\CF@arrow@offset,shorten >=\CF@arrow@offset,}% + \CF@expadd@tocs\curvedarrow@style\CF@arrow@current@style + \expandafter\draw\expandafter[\curvedarrow@style,-CF@full](\CF@arrow@start@name)..controls#1..(\CF@arrow@end@name); +\fi +} +\makeatother +\schemestart +A\arrow{s>} +B\arrow{s>[+(0.5cm,0.5cm)]} +C\arrow{s>[+(45:1cm)]} +D\arrow(.60--.120){s>[+(60:1cm) and +(-120:1cm)]} +E\arrow{s>[+(45:1) and +(-135:1)]} +F\arrow{s>[+(-30:1) and +(150:1)]}[,1.5] +G\arrow(.90--.90){s>[+(60:1)and+(120:1)]}[,2] +H +\schemestop + +\schemestart +A\arrow(.90--.180){s>[+(90:0.8) and +(180:0.8)]}[45]B +\arrow(.0--.90){s>[+(0:0.8) and +(90:0.8)]}[-45]C +\arrow(.-90--.0){s>[+(-90:0.8) and +(0:0.8)]}[-135]D +\arrow(.180--.-90){s>[+(180:0.8) and +(-90:0.8)]}[135] +\schemestop/ + +\section{La commande \protect\texttt{\textbackslash merge}} +La commande \idx{\merge} permet de tracer des flèches qui partent de plusieurs composés existants puis qui se rejoignent pour continuer le schéma réactionnel. + +Immédiatement après la commande \idx{\merge}, il faut spécifier dans quelle direction va se faire la progression. Pour cela, on utilise un des 4 caractères de direction : ``\verb->-'' (qui est celui par défaut si le caractère est absent), ``\verb-<-'', ``\verb-^-'' et ``\verb-v-''. + +La syntaxe devient ensuite : + +\hfill\verb/\merge{dir}(n1.a1)(n2.a2)(...)(ni.ai)--(n.a[s])/\hfill\null + +Où les noms ``\verb-ni-'' avant le double tiret sont ceux que des composés déjà existant que l'on veut joindre. On peut également préciser l'ancre ``\verb-ai-'' duquel doit partir la flèche si l'ancre par défaut ne convient pas. Comme pour la commande \idx\arrow, ``\verb-n.a[s]-'' contient le nom, l'ancre et le style du prochain composé. + +\exemple[50]{La commande \string\merge}/\schemestart +ABC\arrow[30]EFGHIJ\arrow[45]KLM\arrow[60]NO +\merge>(c1)(c2)(c3)--()suite 1 +\arrow suite 2 +\schemestop +\bigskip + +\schemestart +Foooo\arrow(foo--bar){<=>}Bar\arrow(--baz){<=>}Bz +\merge^(foo)(bar)(baz)--()suite +\schemestop +\bigskip + +\schemedebug{true} +\schemestart +A\arrow{<->}[90]B +\merge<(c1.120)(c2)--(foobar.45[circle,blue])CCC +\schemestop/ + +En ce qui concerne la géométrie de la flèche \idx{\merge}, celle-ci se compose de $n$ traits qui partent de chaque composé et vont jusqu'à la ligne de jonction qui leur est perpendiculaire : la longueur par défaut du plus court de ces traits est la moitié de l'espacement entre les composés défini avec \idx\setcompoundsep. La flèche tracée depuis la ligne de jonction jusqu'au composé suivant a également cette longueur par défaut, et elle part du milieu de la ligne de jonction. Ces 3 caractéristiques géométriques peuvent être modifiées au moyen de l'argument optionnel qui vient après le nom de composé suivant : + +\hfill\verb/\merge{dir}(n1.a1)(n2.a2)(...)(ni.ai)--(n.a[s])[c1,c2,c,style]/\hfill\null + +où : +\begin{itemize} + \item la longueur de trait le plus court entre les composés à joindre et la ligne de jonction s'obtient en multipliant l'espacement entre les composés défini avec \idx{\setcompoundsep} par le coefficient \verb-c1-, qui vaut 0.5 par défaut; + \item la longueur de la flèche entre la ligne de jonction et le composé suivant s'obtient en l'espacement entre les composés par le coefficient \verb-c2-, qui vaut 0.5 par défaut; + \item l'endroit d'où part la flèche depuis la ligne de jonction est déterminée par le coefficient \verb-c-, sachant que s'il vaut 0, la flèche partira de la gauche de la ligne de jonction (ou du haut si la direction est \verb-v- ou \verb-^-); + \item le style de la flèche tracée avec \idx{\merge} est défini par le dernier argument \verb-style-. +\end{itemize} + +\exemple*{Paramètres géométriques de \string\merge}/\schemestart A\arrow{<=>}[90]B\merge(c1)(c2)--()C\schemestop\qquad +\schemestart A\arrow{<=>}[90]B\merge(c1)(c2)--()[1]C\schemestop\qquad +\schemestart A\arrow{<=>}[90]B\merge(c1)(c2)--()[,1]C\schemestop\qquad +\schemestart A\arrow{<=>}[90]B\merge(c1)(c2)--()[,,0.2]C\schemestop\qquad +\schemestart A\arrow{<=>}[90]B\merge(c1)(c2)--()[,,0.9,red,thick]C\schemestop +\bigskip + +\schemestart A\arrow{<=>}B\merge^(c1)(c2)--()C\schemestop\qquad +\schemestart A\arrow{<=>}B\merge^(c1)(c2)--()[1]C\schemestop\qquad +\schemestart A\arrow{<=>}B\merge^(c1)(c2)--()[,1]C\schemestop\qquad +\schemestart A\arrow{<=>}B\merge^(c1)(c2)--()[,,0.2]C\schemestop\qquad +\schemestart A\arrow{<=>}B\merge^(c1)(c2)--()[,,0.9,red,thick]C\schemestop/ + +Enfin, il est possible d'écrire des labels au dessus ou au dessous de la flèche créée par la commande \idx{\merge}. Pour cela, le caractère définissant la direction admet deux arguments optionnels entre crochets, le premier contenant le label mis au dessus et le second celui mis au dessous de la flèche. La syntaxe complète de la commande \idx{\merge} est donc : + +\hfill\verb/\merge{dir}[labelup][labeldow](n1.a1)(n2.a2)(...)(ni.ai)--(n.a[s])[c1,c2,c,style]/\hfill\null + +Toutes les fonctionnalités déjà présentées pour les labels des flèches sont ici possibles, à savoir choisir l'angle de rotation et l'ancre avec la syntaxe \verb-*{angle.ancre}- placée juste avant le contenu du label. + +\exemple*{Labels de la commande \string\merge}/\schemestart +ABC\arrow{<=>}[90]DEF\merge>[sur][sous](c1)(c2)--()[0.25,1,0.75]GHIJ +\schemestop\qquad +\schemestart +ABC\arrow{<=>}[90]DEF\merge>[*{45.south west}sur][*{45.north east}sous](c1)(c2)--()[0.25,1,0.75]GHIJ +\schemestop\qquad +\schemestart +ABC\arrow{<=>}[90]DEF\merge>[*{90}sur][*{90}sous](c1)(c2)--()[0.25,1,0.75]GHIJ +\schemestop +\bigskip + +\schemestart +ABC\arrow{<=>}DEF\merge v[sur][sous](c1)(c2)--()[0.25,1,0.75]GHIJ +\schemestop\qquad +\schemestart +ABC\arrow{<=>}DEF\merge v[*{45.north west}sur][*{45.south east}sous](c1)(c2)--()[0.25,1,0.75]GHIJ +\schemestop\qquad +\schemestart +ABC\arrow{<=>}DEF\merge v[*{0}sur][*{0}sous](c1)(c2)--()[0.25,1,0.75]GHIJ +\schemestop/ + +\section{Le signe +}\label{signe+} +Entre les commandes \idx{\schemestart} et \idx{\schemestop}, on dispose de la macro ``\idx\+'' qui affiche un signe ${}+{}$. Elle admet un argument optionnel \emph{entre accolades} contenant 3 dimensions sous cette forme \verb-{<dim1>,<dim2>,<dim3>}- où : +\begin{itemize} + \item \verb-<dim1>- et \verb-<dim2>- sont les dimensions qui vont être insérées avant et après le signe ${}+{}$; + \item \verb-<dim3>- est le décalage vertical que l'on veut faire subir au signe.' +\end{itemize} +Si l'un des arguments est vide ou si l'argument entre accolades n'existe pas, les dimensions prennent leur valeur par défaut que l'on peut spécifier avec la commande \idx\setandsign\verb-{<dim1>,<dim2>,<dim3>}-\label{setandsign}. Si l'on spécifie un champ vide, \verb-<dim1>- et \verb-<dim2>- valent 0.5em tandisque que \verb-<dim3>- vaut 0pt s'il est vide. Les valeurs par défaut \verb-{0.5em,0.5em,0pt}- sont celles en vigueur si l'utilisateur n'en spécifie pas d'autres. + +\exemple[50]{La commande \string\+}/\schemestart +A\+B\+{2em,,5pt}C\+{0pt,0pt,-5pt}D\arrow E\+F +\schemestop + +\setandsign{1em,1em,0pt} +\schemestart +A\+B\+{2em,,5pt}C\+{0pt,0pt,-5pt}D\arrow E\+F +\schemestop/ + +Comme on le voit sur l'exemple ci-dessous, il faut comprendre que le signe ${}+{}$ inséré par la commande \idx{\+} fait partie du composé : +\exemple[50]{Les composés et \string\+}/\schemedebug{true} +\schemestart A\+ B\+{,,5pt}C\arrow D\+ E\schemestop/ +Il devient donc difficile de faire partir une flèche exactement sous la lettre``A'' puisque cette lettre n'est pas un composé unique aux yeux de \CF. On peut donc utiliser dans ce cas la commande \idx{\subscheme} pour envelopper dans un composé unique la lettre ``A'', voire même le signe lui même et pouvoir y faire référence par la suite avec le nom qui lui est attribué : +\exemple[50]{Sous composé et \string\+}/\schemedebug{true} +\schemestart +\subscheme{A}\+ B\arrow C +\arrow(@c2--)[-90]E +\schemestop +\medskip + +\schemestart +A\subscheme{\+}BCDEF \arrow G +\arrow(@c2--)[-90]H +\schemestop/% +\idx*{schéma réactionnel|)} +Il peut arriver que l'alignement du signe ``+'' avec les molécules qui précèdent ou qui suivent pose problème. Voici un exemple : +\exemple{Alignement du signe +}/\schemedebug{true} +\schemestart + \chemfig{C(<[:40])(<[:160])=[6]C(<[:-130])<[:-20]} + \+ + \chemfig{\lewis{246,Br}-\lewis{026,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- : +\exemple{Alignement du signe +}/\schemedebug{true} +\schemestart[][west] + \chemfig{C(<[:40])(<[:160])=[6]C(<[:-130])<[:-20]} + \arrow{0}[,0]\+ + \chemfig{\lewis{246,Br}-\lewis{026,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 +}/\schemedebug{true} +\schemestart[][west] + \chemfig{C(<[:40])(<[:160])=[6]C(<[:-130])<[:-20]} + \arrow(--[yshift=-10pt]){0}[,0]\+ + \chemfig{\lewis{246,Br}-\lewis{026,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}} +\schemestop/ +\newpage + +\part{Liste des commandes} Les commandes créées par \CF sont : \begin{center} \begin{longtable}{>\footnotesize l>\footnotesize p{9cm}}\\\hline \hfill\normalsize Commandes\hfill\null &\hfill\normalsize Description\hfill\null\\\hline -\verb-\chemfig<code>-\idx*\chemfig&dessine la molécule dont le dessin est décrit par le \verb-<code>-\\ -\verb-\printatom-\idx*\printatom & cette macro affiche les atomes dans les molécules. Elle peut être redéfinie pour personnaliser l'affichage, voir~\pageref{perso.affichage}\\ -\verb-\setnodestyle{<style tikz>}-\idx*\setnodestyle& à l'aide de la syntaxe de \TIKZ, cette macro définit le style de nœuds contenant les atomes, voir~\pageref{style.noeuds}\\ -\verb-\setbondestyle{<style tikz>}-\idx*\setbondstyle& à l'aide de la syntaxe de \TIKZ, cette macro définit le style des liaisons voir~\pageref{setbondstyle}\\ -\verb-\hflipnext-\idx*\hflipnext&la prochaine molécule sera inversée horizontalement\\ -\verb-\vflipnext-\idx*\vflipnext&la prochaine molécule sera inversée verticalement\\ -\verb-\definesubmol{<nom>}[code1]{<code2>}-\idx*\definesubmol & créé un alias \verb-!<nom>- que l'on peut placer dans le code des molécules à dessiner qui remplace le \verb-<code1>- ou le \verb-<code2>- selon l'inclinaison de la dernière liaison. Voir page~\pageref{definesubmol}\\ -\verb-\chemskipalign-\idx*\chemskipalign & Ignore le groupe d'atomes en cours pour le mécanisme d'alignement vertical. Voir page~\pageref{chemskipalign}.\\ -\verb-\redefinesubmol{<nom>}{<code>}-\idx*\redefinesubmol & remplace l'alias déjà existant \verb-!<nom>- par le nouveau \verb-<code>-. Voir page~\pageref{redefinesubmol}\\[2ex]\hline +\idx\chemfig\verb-<code>-&dessine la molécule dont le dessin est décrit par le \verb-<code>-\\ +\idx\printatom & cette macro affiche les atomes dans les molécules. Elle peut être redéfinie pour personnaliser l'affichage, voir page~\pageref{perso.affichage}\\ +\idx\setnodestyle\verb-{<style tikz>}-& à l'aide de la syntaxe de \TIKZ, cette macro définit le style de nœuds contenant les atomes, voir page~\pageref{style.noeuds}\\ +\idx\setbondestyle\verb-{<style tikz>}-& à l'aide de la syntaxe de \TIKZ, cette macro définit le style des liaisons voir page~\pageref{setbondstyle}\\ +\idx\hflipnext&la prochaine molécule sera inversée horizontalement\\ +\idx\vflipnext&la prochaine molécule sera inversée verticalement\\ +\idx\definesubmol\verb-{<nom>}[code1]{<code2>}- & créé un alias \verb-!<nom>- que l'on peut placer dans le code des molécules à dessiner qui remplace le \verb-<code1>- ou le \verb-<code2>- selon l'inclinaison de la dernière liaison. Voir page~\pageref{definesubmol}\\ +\idx\chemskipalign & Ignore le groupe d'atomes en cours pour le mécanisme d'alignement vertical. Voir page~\pageref{chemskipalign}.\\ +\idx\redefinesubmol\verb-{<nom>}{<code>}-& remplace l'alias déjà existant \verb-!<nom>- par le nouveau \verb-<code>-. Voir page~\pageref{redefinesubmol}\\[2ex]\hline &\\ -\verb-\setcrambond{<dim1>}{<dim2>}{<dim3>}-\idx*\setcrambond & règle les dimensions des triangles représentant les liaisons de Cram : \verb-<dim1>- est la largeur de la base, \verb-<dim2>- est l'espacement entre les pointillés et \verb-<dim3>- est la largeur des pointillés. Voir page~\pageref{setcrambond}\\ -\verb-\setatomsep{<dim>}>-\idx*\setatomsep & règle la distance interatome. Voir page~\pageref{setatomsep}\\ -\verb-\setbondoffset{<dim>}-\idx*\setbondoffset & règle l'espacement entre les atomes liés et la liaison. Voir page~\pageref{setbondoffset}\\ -\verb-\setdoublesep{<dim>}-\idx*\setdoublesep & règle l'espacement entre les deux traits d'une double liaison. Voir page~\pageref{setdoublesep}\\[2ex]\hline +\idx\setcrambond\verb-{<dim1>}{<dim2>}{<dim3>}-& règle les dimensions des triangles représentant les liaisons de Cram : \verb-<dim1>- est la largeur de la base, \verb-<dim2>- est l'espacement entre les pointillés et \verb-<dim3>- est la largeur des pointillés. Voir page~\pageref{setcrambond}\\ +\idx\setatomsep\verb-{<dim>}>-& règle la distance interatome. Voir page~\pageref{setatomsep}\\ +\idx\setbondoffset\verb-{<dim>}- & règle l'espacement entre les atomes liés et la liaison. Voir page~\pageref{setbondoffset}\\ +\idx\setdoublesep\verb-{<dim>}- & règle l'espacement entre les deux traits d'une double liaison. Voir page~\pageref{setdoublesep}\\[2ex]\hline &\\ -\verb-\lewis{<codes>,<atome>}-\idx*\lewis & 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-\setlewis{<dim1>}{<dim2>}{<code tikz>}-\idx*\setlewis & règle les décoration de Lewis; \verb-<dim1>- est la distance entre l'atome et la décoration, \verb-<dim2>- est la longueur du trait représentant la paire d'électrons et \verb-<code tikz>- est le code qui sera passé directement à \TIKZ. Voir page~\pageref{setlewis}\\[2ex]\hline +\idx\lewis\verb-{<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}\\ +\idx\Lewis\verb-{<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}\\ +\idx\setlewis\verb-{<dim1>}{<dim2>}{<code tikz>}- & règle les décoration de Lewis; \verb-<dim1>- est la distance entre l'atome et la décoration, \verb-<dim2>- est la longueur du trait représentant la paire d'électrons et \verb-<code tikz>- est le code qui sera passé directement à \TIKZ. Voir page~\pageref{setlewis}\\[2ex]\hline &\\ -\verb-\chemmove[<options tikz>]<code tikz>-\idx*\chemmove & 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}.\\ -\verb-\chemsign[<dim>]<signe>-\idx*\chemsign & affiche le \verb-<signe>- en plaçant avant et après un espace insécable de longueur \verb-<dim>-. Voir page~\pageref{chemsign}\\ -\verb-\chemrel[<txt1>][<txt2>]{<code fleche>}-\idx*\chemrel & affiche une flèche décrite par son \verb-<code fleche>- en positionnant les textes optionnels \verb-<txt1>- et \verb-<txt2>- respectivement au dessus et au dessous de la flèche. Voir page~\pageref{chemrel}\\ -\verb-\setchemrel{<dim1>}{<dim2>}{<dim3>}-\idx*\setchemrel & règle les dimensions des flèches dessinées avec la commande \verb-\chemrel- : \verb-<dim1>- est l'espacement vertical entre la flèche et les textes optionnels, \verb-<dim2>- est l'espacement horizontal insécable inséré avant et après la flèche et \verb-<dim3>- est la longueur de la flèche. Voir page~\pageref{setchemrel}\\[2ex]\hline +\idx\chemmove\verb-[<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}.\\ +\idx\chemsign\verb-[<dim>]<signe>-& affiche le \verb-<signe>- en plaçant avant et après un espace insécable de longueur \verb-<dim>-. Voir page~\pageref{chemsign}\\ +\idx\chemrel\verb-[<txt1>][<txt2>]{<code fleche>}-& affiche une flèche décrite par son \verb-<code fleche>- en positionnant les textes optionnels \verb-<txt1>- et \verb-<txt2>- respectivement au dessus et au dessous de la flèche. Voir page~\pageref{chemrel}\\ +\idx\setchemrel\verb-{<dim1>}{<dim2>}{<dim3>}-& règle les dimensions des flèches dessinées avec la commande \verb-\chemrel- : \verb-<dim1>- est l'espacement vertical entre la flèche et les textes optionnels, \verb-<dim2>- est l'espacement horizontal insécable inséré avant et après la flèche et \verb-<dim3>- est la longueur de la flèche. Voir page~\pageref{setchemrel}\\[2ex]\hline &\\ -\verb-\chemabove[<dim>]{<txt1>}{txt2}-\idx*\chemabove & é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}\\ -\verb-\chembelow[<dim>]{<txt1>}{txt2}-\idx*\chembelow & écrit le \verb-{txt1}- et positionne le \verb-<txt2>- au dessous en laissant \verb-<dim>- d'espacement vertical. Cette commande ne change pas la boîte englobante de \verb-<txt1>-. Voir page~\pageref{chemabove}\\ -\verb-\chemname[<dim>]{<molécule>}{<nom>}-\idx*\chemname & Affiche le \verb-<nom>- sous la \verb-<molécule>-\\ -\verb-\chemnameinit-\idx*\chemnameinit & Initialise la plus grande profondeur des molécules rencontrées pour avoir un alignement correct de leurs noms\\\hline +\idx\chemabove\verb-[<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}\\ +\idx\chembelow\verb-[<dim>]{<txt1>}{txt2}- & écrit le \verb-{txt1}- et positionne le \verb-<txt2>- au dessous en laissant \verb-<dim>- d'espacement vertical. Cette commande ne change pas la boîte englobante de \verb-<txt1>-. Voir page~\pageref{chemabove}\\ +\idx\Chemabove\verb-[<dim>]{<txt1>}{txt2}- & écrit le \verb-<txt1>- et positionne le \verb-<txt2>- au dessus en laissant \verb-<dim>- d'espacement vertical. Voir page~\pageref{Chemabove}\\ +\idx\Chembelow\verb-[<dim>]{<txt1>}{txt2}- & écrit le \verb-{txt1}- et positionne le \verb-<txt2>- au dessous en laissant \verb-<dim>- d'espacement vertical. Voir page~\pageref{Chemabove}\\ +\idx\chemname\verb-[<dim>]{<molécule>}{<nom>}-\idx*\chemname & Affiche le \verb-<nom>- sous la \verb-<molécule>-. Voir page~\pageref{chemname}\\ +\idx\chemnameinit & initialise la plus grande profondeur des molécules rencontrées pour avoir un alignement correct de leurs noms. Voir page~\pageref{chemnameinit}\\[2ex]\hline +&\\ +\idx\schemestart\dots\idx\schemestop& balises entre lesquelles un schéma réactionnel est tracé. Voir page~\pageref{schemestart}.\\ +\idx\arrow& trace une flèche dans un schéma réactionnel (la commande n'est définie que dans un schéma réactionnel). Voir page~\pageref{arrow} et suivantes.\\ +\idx\+ & affiche un signe $+$ dans un schéma réactionnel (la commande n'est définie que dans un schéma réactionnel). Voir page~\pageref{signe+}.\\ +\idx\subscheme\verb-{<code>}- & trace un sous schéma réactionnel (la commande n'est définie que dans un schéma réactionnel). Voir page~\pageref{subscheme}.\\ +\idx\definearrow & définit une flèche. Voir page~\pageref{definearrow}.\\ +\idx\chemleft\verb-<car1><matériel>-\idx\chemright\verb-<car1>-& trace des delimiteurs extensibles définis par \verb-<car1>- et \verb-<car2>- à gauche et à droite du \verb-<matériel>-, voir page~\pageref{chemleft}.\\ +\idx\chemup\verb-<car1><matériel>-\idx\chemdown\verb-<car1>-& trace des delimiteurs extensibles définis par \verb-<car1>- et \verb-<car2>- au dessus et au dessous du \verb-<matériel>-, voir page~\pageref{chemup}.\\ +\idx\setcompoundsep\verb-{<dim>}-& définit l'espacement de bord à bord des composés dans un schéma réactionnel. Voir page~\pageref{setcompoundsep}.\\ +\idx\setarrowoffset\verb-{<dim>}-&définit l'espacement entre le bord d'un composé et le début et la fin d'une flèche. Voir page~\pageref{setarrowoffset}.\\ +\idx\setarrowdefault\verb-{angle,coeff,style}-&définit les caractéristiques par défaut d'une flèche. Voir page~\pageref{setarrowdefault}.\\ +\idx\setcompoundstyle\verb-{<code tikz>}-&définit le style par défaut des composés. Voir page~\pageref{setcompoundstyle}.\\ +\idx\setarrowlabelsep\verb-{<dim>}-&définit l'espacement entre la flèche et l'ancre des labels qui sont placés au dessus et au dessous. Voir page~\pageref{setarrowlabelsep}.\\ +\idx\setandsign\verb-{<dim1>,<dim2>,<dim3>}-&définit les caractéristiques du signe $+$ où \verb-<dim1>- et \verb-<dim2>- sont les espaces laissés avant et près le signe et \verb-<dim3>- est le décalage vertical. Voir page~\pageref{setandsign}.\\\hline \end{longtable} \end{center} \newpage @@ -1714,7 +2411,7 @@ Ce manuel s'achève avec des dessins de molécules plus ou moins complexes. L'utilisateur curieux pourra s'intéresser au \verb-<code>- de chaque molécule, bien que celui-ci devienne parfois rebutant lorsqu'elles deviennent complexes. En effet, au delà d'un certain niveau de complexité, bien qu'il soit est assez facile d'écrire un \verb-<code>- pour dessiner une molécule, il est assez ardu de relire ce \verb-<code>- pour l'analyser a posteriori. On atteint rapidement les limites de la lisibilité immédiate du code d'un dessin complexe. -Quoi qu'il en soit, j'espère que cette extension aidera tous les utilisateurs de \LaTeX{} qui souhaitent dessiner des molécules chimiques. Compte tenu de la jeunesse de cette extension, j'espère que vous serez indulgent quant aux bugs rencontrés. Un \href{mailto:unbonpetit@gmail.com}{\texttt{\textbf{email}}} pour me signaler tout dysfonctionnement ou toute proposition d'amélioration sera bienvenu.\nobreak +Quoi qu'il en soit, j'espère que cette extension aidera tous les utilisateurs de \LaTeX{} qui souhaitent dessiner des molécules chimiques. Bien que \CF ait été testé de façon approfondie et que le numéro de version soit supérieur à 1.0, j'espère que vous serez indulgent quant aux bugs rencontrés. Un \href{mailto:unbonpetit@gmail.com}{\texttt{\textbf{email}}} pour me signaler tout dysfonctionnement ou toute proposition d'amélioration sera bienvenu.\nobreak \hfill Christian \textsc{Tellechea} \bigskip @@ -1815,13 +2512,15 @@ $\star\quad\star$ -[::-150,1.5](-[:20]CH(-[1]CH_3)(-[7]CH_3))(-[6]H)-[::-90,2]-[::+60]?)}/ \idx*\chembelow -\idx*\chemsign -\idx*\chemrel -\exemple*{Synthèse de Fischer de l'indole}/\chemfig{*6(=-*6(-\chembelow{N}{H}-NH_2)=-=-)} -\chemsign+ -\chemfig{(=[:-150]O)(-[:-30]R_2)-[2]-[:150]R_1} -\chemrel[$\mathrm{H^+}$]{-stealth} -\chemfig{*6(-=*5(-\chembelow{N}{H}-(-R_2)=(-R_1)-)-=-=)}/ +\idx*\+ +\idx*\schemestart +\exemple*{Synthèse de Fischer de l'indole}/\schemestart + \chemfig{*6(=-*6(-\chembelow{N}{H}-NH_2)=-=-)} + \+ + \chemfig{(=[:-150]O)(-[:-30]R_2)-[2]-[:150]R_1} + \arrow(.mid east--.mid west){->[\chemfig{H^+}]} + \chemfig{*6(-=*5(-\chembelow{N}{H}-(-R_2)=(-R_1)-)-=-=)} +\schemestop/ \idx*\chemabove \idx*\chemrel @@ -1854,58 +2553,105 @@ $\star\quad\star$ }/ \idx*\lewis -\idx*\chemsign \idx*\chemabove \idx*\chemmove -\idx*\chemrel +\idx*\arrow\idx*\+\idx*\schemestart\idx*\schemestop \idx*{"@} \idx*\chembelow \idx*{charge!\protect\texttt{\protect\string\protect\oplus}} -\exemple*{Addition nucléophile. Amines primaires}/\chemfig{R-@{aton}\lewis{2,N}H_2} -\chemsign{+} +\exemple*{Addition nucléophile. Amines primaires}/\setatomsep{2.5em} +\setcompoundsep{5em} +\schemestart +\chemfig{R-@{aton}\lewis{2,N}H_2} +\+ \chemfig{@{atoc}C([3]-CH_3)([5]-CH_3)=[@{atoo1}]O} -\hspace{1cm} \chemfig{@{atoo2}\chemabove{H}{\scriptstyle\oplus}} \chemmove[-stealth,shorten <=3pt,dash pattern= on 1pt off 1pt,thin]{ \draw[shorten >=2pt](aton) ..controls +(up:10mm) and +(left:5mm)..(atoc); \draw[shorten >=8pt](atoo1) ..controls +(up:10mm) and +(north west:10mm)..(atoo2);} -\chemrel[\tiny addition]{<>} +\arrow{<=>[\tiny addition]} \chemfig{R-@{aton}\chembelow{N}{\scriptstyle\oplus}H([2]-[@{sb}]H)-C(-[2]CH_3)(-[6]CH_3)-OH} -\par +\schemestop \chemmove{ \draw[-stealth,dash pattern= on 1pt off 1pt,shorten <=3pt, shorten >=2pt] (sb)..controls +(left:5mm) and +(135:2mm)..(aton);} -\chemrel{<>} +\par +\schemestart +\arrow{<=>} \chemfig{R-@{aton}\lewis{2,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); \draw(sbh) ..controls +(left:5mm) and +(south west:5mm)..(aton); \draw(sbo) ..controls +(up:5mm) and +(north west:5mm)..(atoo);} -\chemrel[\tiny élimination]{<>} -\chemfig{R-N=C(-[1]CH_3)(-[7]CH_3)} -\chemsign{+} -\chemfig{H_3\chemabove{O}{\scriptstyle\oplus}}/ +\arrow{<=>[\tiny élimination]}\chemfig{R-N=C(-[1]CH_3)(-[7]CH_3)} +\+ +\chemfig{H_3\chemabove{O}{\scriptstyle\oplus}} +\schemestop/ + +\idx*\setatomsep +\idx*\schemestart\idx*\arrow\idx*\merge\idx*\schemestop +\exemple*{Schéma réactionnel}/\setatomsep{2em} +\schemestart[-90] + \chemfig{**6(---(-NH _2)---)}\arrow{0}\chemfig{HNO_2} + \merge(c1)(c2)--() + \chemfig{**6(---(-N_2|{}^\oplus)---)}\arrow{0}\chemfig{**6(---(-NH _2)---)} + \merge(c3)(c4)--() + \chemfig{**6(---(-N=[::-30]N-[::-30]**6(---(-NH_2)---))---)} +\schemestop/ + +\idx*\setatomsep +\idx*\schemestart\idx*\arrow\idx*\subscheme\idx*\schemestop\idx*\chemleft\idx*\chemright +\idx*{charge!\protect\texttt{\protect\string\protect\oplus}} +\exemple*{Réaction d'addition}/\setatomsep{2.5em} +\schemestart + \chemfig{*6(=-(-)(=[2]O))} + \arrow{->[\+\chemfig{H^\oplus}]} + \chemleft[\subscheme[90]{% + \chemfig{*6((-[2,0.33,,,draw=none]\scriptstyle\oplus)-=(-)-OH)} + \arrow{<->} + \chemfig{*6(=-(-)(-[6,0.33,,,draw=none]\scriptstyle\oplus)-OH)}}\chemright] + \arrow(@c3--)\chemfig{*6((-[2]R)-=(-)-OH)} + \arrow(@c4--)\chemfig{*6(=-(-)(-[6]R)-OH)} +\schemestop/ + +\idx*\setatomsep +\idx*\schemestart\idx*\arrow\idx*\subscheme\idx*\schemestop\idx*\chemname\idx*\definesubmol\idx*\chemleft\idx*\chemright +\idx*{charge!\protect\texttt{\protect\string\protect\oplus}} +\idx*{charge!\protect\texttt{\protect\string\protect\ominus}} +\exemple*{Substitution aromatique éléctrophile}Z\setatomsep{1.5em}% +\definesubmol{+}{-[,-0.4,,,draw=none]\oplus}% +\schemestart + \arrow{0}[,0] + \chemleft[\subscheme{\chemfig{*6(=-=-(-[:120]Br)(-[:60]H)-(!+)-)} + \arrow{<->} + \chemfig{*6(-(!+)-=-(-[:120]Br)(-[:60]H)-=)} + \arrow{<->} + \chemfig{*6(-=-(!+)-(-[:120]Br)(-[:60]H)-=)}}\chemright] + \arrow(@c2--){<-[*0\chemfig{{-}AlBr_4|^\ominus}][*0\chemfig{Br_2/Al_2Br_3}]}[90,1.5] + \chemname{\chemfig{*6(-=-=-=-)}}{Benzène 1} + \arrow(@c4--){->[*0\chemfig{{-}H^\oplus}]}[90,1.5] + \chemname{\chemfig{*6(-=-=(-Br)-=-)}}{Bromobenzène 2} + \arrow(@c5.mid east--@c6.mid west) +\schemestop Z \idx*\setbondoffset \idx*\setatomsep \idx*\lewis -\idx*\chemrel -\idx*\chemsign +\idx*\arrow\idx*\+\idx*\schemestart\idx*\schemestop\idx*\setcompoundsep \idx*\chemmove \idx*{"@} -\exemple*{Mécanismes réactionnels de la chloration}/\scriptsize -\setbondoffset{1pt}\setatomsep{2em} -\chemfig{Cl-[4]@{a0}(=[@{a1}:120]@{a2}O)-[:-120](=[:-60]O)-[4]Cl}\chemsign{+} -\chemfig{*6(-=-=(-@{oh1}OH)-=)}\chemrel{-stealth} +\exemple*{Mécanismes réactionnels de la chloration}/\scriptsize\setbondoffset{1pt}\setatomsep{2em}\setcompoundsep{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)=-=-=-)} -\chemrel{-stealth}\chemfig{*6((-O-[:150](=[2]O)-[:-150](=[6]O)-[:150]Cl)=-=-=-)}\chemsign{+} -\chemfig{HCl}\par -\chemfig{*6(-=*6(-O-*6(-@{o2}(=[@{o3}]@{o4}O)-Cl)=)-=-=)}\chemsign{+} -\chemfig{*6(-=-=(-@{oh2}OH)-=)}\chemrel{-stealth} +\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(=-=-=-))=)-=-=)} -\kern-3em \chemrel{-stealth}\chemfig{[:30]*6(=-(-O-[:-60](=O)-[:-120](=[4]O)-[:-60]O-*6(=-=-=-))=-=-)} -\kern-3em \chemsign{+}\chemfig{HCl} +\kern-3em \arrow\chemfig{[:30]*6(=-(-O-[:-60](=O)-[:-120](=[4]O)-[:-60]O-*6(=-=-=-))=-=-)} +\kern-3em \+\chemfig{HCl} +\schemestop \chemmove[line width=0.2pt,-stealth,dash pattern = on 2pt off 1pt]{ \draw[shorten <=2pt](a1)..controls+(200:5mm)and+(200:5mm)..(a2); \draw[shorten >=2pt](oh1.west)..controls+(180:15mm)and+(60:5mm)..(a0); @@ -1947,68 +2693,133 @@ $\star\quad\star$ \catcode`;=12 \idx*\setbondoffset \idx*\setatomsep -\idx*\chemrel \idx*{"@} \idx*\chemabove \idx*\chemmove \idx*\lewis \idx*{charge!\protect\texttt{\protect\string\protect\oplus}} -\exemple*{Réarrangement de Beckmann}/ -\setbondoffset{1pt} +\idx*\schemestart\idx*\arrow\idx*\setcompoundsep\idx*\setarrowoffset\idx*\subscheme\idx*\chemleft\idx*\chemright +\exemple*{Réarrangement de Beckmann}/\setbondoffset{1pt} \setatomsep{2.5em} -\chemfig{(-[:-150]R')(-[:-30]R)=[2]N-[:30]OH} -\kern-1em -\chemrel[\chemfig{\chemabove{H}{\kern10pt\scriptstyle\oplus}}]{<>} -\kern-0.5em -\chemfig{(-[@{a0}:-150]R')(-[:-30]R)=[2]@{a1}N-[@{b0}:30]@{b1}\chemabove{O}{\scriptstyle\oplus}H_2} -\chemmove[red,-stealth,red,shorten <=2pt]{ - \draw(a0)..controls +(135:2mm) and +(215:4mm).. (a1); - \draw(b0)..controls +(120:2mm) and +(180:3mm).. ([yshift=7pt]b1.180); -} -\kern-1.5em -\chemrel[\chemfig{{-}H_2O}]{<>} -$\left[\begin{tabular}{c} - \chemfig{R'-\lewis{2:,N}=@{a1}\chemabove{C}{\scriptstyle\oplus}-R}\\ - \tikz\draw[stealth-stealth](0,3mm)--(0,-3mm);\\ +\setcompoundsep{5em} +\setarrowoffset{6pt} +\schemestart + \chemfig{(-[:-150]R')(-[:-30]R)=[2]N-[:30]OH} + \arrow{<=>[\chemfig{H^\oplus}]} + \chemfig{(-[@{a0}:-150]R')(-[:-30]R)=[2]@{a1}N-[@{b0}:30]@{b1}\chemabove{O}{\scriptstyle\oplus}H_2} + \chemmove[red,-stealth,red,shorten <=2pt]{ + \draw(a0)..controls +(135:2mm) and +(215:4mm).. (a1); + \draw(b0)..controls +(120:2mm) and +(180:3mm).. ([yshift=7pt]b1.180);} + \arrow{<=>[\chemfig{{-}H_2O}]}[,1.1] + \chemleft[\subscheme[90]{% \chemfig{R'-\chemabove{N}{\scriptstyle\oplus}~C-R} -\end{tabular}\right]$ -\chemrel[\chemfig{H_2@{a0}\lewis{0:2:,O}}]{<>}\par -\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)} -\chemrel[\chemfig{{-}\chemabove{H}{\kern10pt\scriptstyle\oplus}}]{<>} -\chemfig{*6(R\rlap{$'$}-N=(-R)-OH)} -\chemrel{-stealth} -\chemfig{*6(R\rlap{$'$}-\chembelow{N}{H}-(-R)(=[2]O))} -/ + \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] + \chemmove[red,-stealth,red,shorten <=3pt]{ + \draw(a0)..controls+(90:10mm)and+(45:10mm)..([yshift=6pt]a1.45);} + \arrow(@c1--){0}[-90,0.333] + \chemfig{*6(R\rlap{$'$}-N=(-R)-\chemabove{O}{\scriptstyle\oplus} H_2)} + \arrow{<=>[\chemfig{{-}H^\oplus}]} + \chemfig{*6(R\rlap{$'$}-N=(-R)-OH)} + \arrow + \chemfig{*6(R\rlap{$'$}-\chembelow{N}{H}-(-R)(=[2]O))} +\schemestop/ \endgroup +\idx*\setatomsep +\idx*\setcompoundsep +\idx*\schemestart\idx*\schemestop\idx*\arrow\idx*\+ +\exemple*{Schéma réactionnel}/\setatomsep{1.5em} +\setcompoundsep{4em} +\schemestart + \chemfig{-[::30]=_[::-60](-[:: -60])-[::60]} + \arrow{->[\chemfig{HCl}]} + \chemfig{-[::30]-[::-60](-[::120]Cl)(-[::-60])-[::60]}\+\chemfig{-[::30](-[::60]Cl)-[::-60](-[::-60])-[::60]} + \arrow(@c1--.north west){->[\chemfig{H_2O}]}[-45,1.7] + \chemfig{-[::30]-[::-60](-[::120]OH)(-[::-60])-[::60]}\+\chemfig{-[::30](-[::60]OH)-[::-60](-[::-60])-[::60]} +\schemestop/ + +\idx*\tikzset\idx*\schemestart\idx*\arrow\idx*\chemmove\idx*\schemestop +\idx*{charge!\protect\texttt{\protect\string\protect\oplus}} +\exemple*{Estérification de l'acide formique}Z\tikzset{obrace/.style={left delimiter={[},inner sep=3pt}, + cbrace/.style={right delimiter={]},inner sep=3pt}, + braces/.style={left delimiter={[},right delimiter={]},inner sep=3pt}} +\setatomsep{2em} +\schemestart + \chemfig{H-C(=[:60]O)-[:-60]O-H} + \arrow(--M1[obrace]){-U>[\scriptsize\chemfig{H_2SO_4^{}}][\scriptsize\chemfig{HSO_4^\ominus}][][.25]}% + [,1.5,shorten >=6pt] + \chemfig{H-@{a2}C(-[:60]O-H)(-[:30,.5,,,draw=none]{\scriptstyle\oplus})-[:-60]O-H} + \arrow(--[cbrace]){<->} + \chemfig{H-C(=[:60]\chemabove{O}{\scriptstyle\oplus}-H)-[:-60]O-H} + \arrow(@M1--){<=>[*{0}\scriptsize\chemfig{H-[:120]@{a1}O-[:60]CH_3}][*{0}\tiny addition]}[-90,1.33] + \chemfig{H-C(-[2]O-[:30]H)(-\chemabove{O}{\scriptstyle\oplus}(-[:60]CH_3)-[:-60]H)-[6]O-[:-30]H} + \arrow{<=>[\tiny protolysis]}[180] + \chemfig{H-C(-[2]O-[:30]H)(-O-CH_3)-[@{b1}6]@{a3}\chemabove{O}{\kern-4mm\scriptstyle\oplus}(-[:-150]H)-[:-30]H} + \arrow(--[obrace]){<=>[*{0}\scriptsize\chemfig{{-}H_2O}][*{0}\tiny elimination]}[-90,,shorten >=6pt] + \chemfig{H-C(-[:60]O-H)(-[,.5,,,draw=none]{\scriptstyle\oplus})-[:-60]O-CH_3} + \arrow(--[cbrace]){<->} + \chemfig{H-C(=[:60]\chemabove{O}{\scriptstyle\oplus}-H)-[:-60]O-CH_3} + \arrow{-U>[\scriptsize\chemfig{HSO_4^\ominus}][\scriptsize\chemfig{H_2SO_4^{}}][][.25]}[,1.5] + \chemfig{H-C(=[:60]O)-[:-60]O-CH_3} + \arrow(@M1--[yshift=-5pt]){0}[180,.5]{\tiny protolysis} + \chemmove[->,red,shorten <=3pt,shorten >=1pt]{ + \draw(a1)..controls +(0:1.5cm)and+(0:3cm).. (a2); + \draw(b1)..controls +(0:5mm)and+(20:5mm)..(a3);} +\schemestop Z + +\idx*\schemestart\idx*\subscheme\idx*\arrow\idx*\lewis\idx*\+\idx*\arrow +\idx*\chemname\idx*\vflipnext\idx*\chemmove\idx*\chemabove\idx*\llap +\idx*{charge!\protect\texttt{\protect\string\protect\oplus}} +\idx*{charge!\protect\texttt{\protect\string\protect\ominus}} +\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(@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])-)}} + {bromonium ion} + \arrow(--carbeniumA){<<->}[,1.5] + \chemname[12pt]{\chemfig{-[:-30]\chemabove{C}{\scriptstyle\oplus}(-[:30])-[6]C(<:[:-150])(<[:-100])-[:-30] + \lewis{157,Br}}}{carbenium ion} + \arrow(@bromonium--carbeniumB){<<->}[180,1.5] + \chemname[12pt]{\vflipnext\chemfig{-[:-30]\chembelow{C}{\scriptstyle\oplus}(-[:30])-[6]C(<[:-150]) + (<:[:-100])-[:-30]\lewis{137,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}} + \arrow(@olefin--[left]){0}[180,0] + $\pi$ complexe + \arrow(@carbeniumA--@olefin){<=>[lent, \chemfig{{-}Br^\ominus}]} + \arrow(@carbeniumB--@olefin){<=>[lent, \chemfig{{-}Br^\ominus}]} + \chemmove[-stealth,red,shorten <=3pt,shorten >=2pt]{ + \draw(db) .. controls +(20:5mm) and +(135:5mm) .. (Br1); + \draw(b2) .. controls +(-90:5mm) and +(-120:5mm) .. (Br2);} +\schemestop/ + \idx*\definesubmol \idx*\setatomsep \idx*\chemname -\idx*\chemsign -\idx*\chemrel \idx*\chemmove +\idx*\schemestart\idx*\arrow\idx*\+\idx*\schemestop \idx*{charge!\protect\texttt{\protect\string\protect\oplus}} -\exemple*{Sulfonation de la naphtalène}/\newcommand\putchemnode[1]{\begin{tikzpicture}[remember picture]\node(#1){};\end{tikzpicture}} -\definesubmol\cycleoplus{-[,0.25,,,draw=none]\oplus} +\exemple*{Sulfonation de la naphtalène}/\definesubmol\cycleoplus{-[,0.25,,,draw=none]\oplus} \definesubmol{so2oh}{S(=[::90]O)(=[::-90]O)-OH} -\footnotesize \setatomsep{2.5em} -\begin{tabular}{ll} -&\putchemnode{l1}\chemname{\chemfig{*6(=-*6(-=-(!\cycleoplus)-(-SO_3H)-)=-=-)}}{Ion 1-arenium} -\chemrel{-stealth} -\chemname{\chemfig{*6(=-*6(-=-=(-!{so2oh})-)=-=-)}}{Acide 1-naphthalenesulfonique}\\ -\chemname{\chemfig{*6(=-*6(-=-=-)=-=-)}}{Naphtalène} -\chemsign{+} -\chemfig{H_2SO_4}\putchemnode{a}\kern1cm&\\[-5ex] -&\putchemnode{l2}\chemname{\chemfig{*6(=-*6(-=-(-SO_3H)-(!\cycleoplus)-)=-=-)}}{Ion 2-arenium}\kern-3em -\chemrel{-stealth} -\chemname{\chemfig{*6(=-*6(-=-(-!{so2oh})=-)=-=-)}}{Acide 2-naphthalenesulfonique} -\end{tabular} -\chemmove[-stealth,yshift=1cm]{ - \draw(a)--node[sloped,above]{80\degre C}(l1);\draw(a)--node[sloped,above]{160\degre C}(l2);}/ +\schemestart[,1.5] + \chemname{\chemfig{*6(=-*6(-=-=-)=-=-)}}{Naphtalène}\+\chemfig{H_2SO_4} + \arrow(nph.mid east--.south west){->[80\degres C]}[45] + \chemname{\chemfig{*6(=-*6(-=-(!\cycleoplus)-(-SO_3H)-)=-=-)}}{Ion 1-arenium} + \arrow(.mid east--.mid west) + \chemname{\chemfig{*6(=-*6(-=-=(-!{so2oh})-)=-=-)}}{Acide 1-naphthalenesulfonique} + \arrow(@nph.mid east--.north west){->[160\degres C]}[-45] + \chemname{\chemfig{*6(=-*6(-=-(-SO_3H)-(!\cycleoplus)-)=-=-)}}{Ion 2-arenium}\kern-4em + \arrow(.mid east--.mid west) + \chemname{\chemfig{*6(=-*6(-=-(-!{so2oh})=-)=-=-)}}{Acide 2-naphthalenesulfonique} +\schemestop/ \begingroup\catcode`;12 \idx*\chemname @@ -2076,13 +2887,11 @@ $\left[\begin{tabular}{c} \idx*{*|see{cycle}} \idx*{**|see{cycle/cercle intérieur}} \idx*{\protect\symbol{'0174}@\protect\texttt{\protect\symbol{'0174}}|see{découpage en atomes}} -\idx*{>, <, >\protect\symbol{'0174}, <\protect\symbol{'0174}, >:, <:@\protect\texttt>, \protect\texttt<, \protect\texttt{>\protect\symbol{'0174}}, \protect\texttt{<\protect\symbol{'0174}}, >\protect\string:, <\protect\string:|see{représentation de Cram}} +\idx*{>, <, >\protect\symbol{'0174}, <\protect\symbol{'0174}, >:, <:@\protect\texttt>, \protect\texttt<, \protect\texttt{>\protect\symbol{'0174}}, \protect\texttt{<\protect\symbol{'0174}}, >\protect\string:, <\protect\string:|see{Cram (représentation)}} \idx*{-, =, \protect\string\protect~@\protect\texttt-, \protect\texttt=, \protect\texttt{\protect\string~}|see{liaison/types}} \idx*{=\protect\string_, =\protect\string^@\protect\texttt{=\protect\string_}, \protect\texttt{=\protect\string^}|see{liaison/déportées}} \idx*{"!|see{sauvegarde d'une molécule}} -\idx*{Cram|see{représentation de Cram}} -\idx*{Lewis|see{représentation de Lewis}} -\clearpage +\newpage \phantomsection \addcontentsline{toc}{part}{Index} \printindex |