<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">% !TeX TS-program = lualatex
\documentclass[10pt,french]{article}
\usepackage[a4paper,margin=2.5cm,footskip=10mm]{geometry}
\usepackage[bottom]{footmisc}
\usepackage{libertine,amsmath,array,longtable,xspace,fancybox,boites,textcomp,enumitem,chemfig,fancyhdr,multicol}
\usetikzlibrary{decorations.pathmorphing}
\usetikzlibrary{decorations.markings}
\usetikzlibrary{matrix}
\usepackage[protrusion=true,expansion,final,babel=true]{microtype}
\fancypagestyle{plain}{%
	\fancyhead[L]{}
	\fancyhead[C]{}
	\fancyhead[R]{}
	\fancyfoot[l]{\tiny CompilĂ© le \today.}
	\fancyfoot[c]{}
	\fancyfoot[r]{\thepage}}
\renewcommand\headrulewidth{0pt}

\makeatletter
\usepackage[scaled=0.8]{GoMono}
\newcommand\make@car@active[1]{%
	\catcode`#1\active
	\begingroup
		\lccode`\~`#1\relax
		\lowercase{\endgroup\def~}%
}

\newif\if@exstar

\newcommand\exemple{%
	\begingroup
	\parskip\z@
	\@makeother\;\@makeother\!\@makeother\?\@makeother\:% neutralise french
	\@ifstar{\@exstartrue\exemple@}{\@exstarfalse\exemple@}}

\newcommand\exemple@[2][65]{%
	\medbreak\noindent
	\begingroup
		\let\do\@makeother\dospecials
		\make@car@active\ { {}}%
		\make@car@active\^^M{\par\leavevmode}%
		\make@car@active\^^I{\space\space}%
		\make@car@active\,{\leavevmode\kern\z@\string,}%
		\make@car@active\-{\leavevmode\kern\z@\string-}%
		\make@car@active\&gt;{\leavevmode\kern\z@\string&gt;}%
		\make@car@active\&lt;{\leavevmode\kern\z@\string&lt;}%
		\exemple@@{#1}{#2}%
}

\newcommand\exemple@@[3]{%
	\def\@tempa##1#3{\exemple@@@{#1}{#2}{##1}}%
	\@tempa
}

\newcommand\exemple@@@[3]{%
	\xdef\the@code{#3}%
	\endgroup
	\if@exstar
		\begingroup
			\fboxrule0.4pt
			\let\breakboxparindent\z@
			\def\bkvz@bottom{\hrule\@height\fboxrule}%
			\let\bkvz@before@breakbox\relax
			\def\bkvz@set@linewidth{\advance\linewidth\dimexpr-2\fboxrule-2\fboxsep}%
			\def\bkvz@left{\vrule\@width\fboxrule\hskip\fboxsep}%
			\def\bkvz@right{\hskip\fboxsep\vrule\@width\fboxrule}%
			\def\bkvz@top{\hbox to \hsize{%
				\vrule\@width\fboxrule\@height\fboxrule
				\leaders\bkvz@bottom\hfill
				\sffamily
				\fboxsep\z@
				\colorbox{black}{\kern0.25em\color{white}\footnotesize\lower0.5ex\hbox{\strut#2}\kern0.25em}%
				\leaders\bkvz@bottom\hfill
				\vrule\@width\fboxrule\@height\fboxrule}}%
			\breakbox
				\kern.5ex\relax
				\ttfamily\footnotesize\the@code\par
				\normalfont
				\kern3pt
				\hrule height0.1pt width\linewidth depth0.1pt
				\vskip5pt
				\rightskip0pt plus 1fill
				\everypar{{\color{lightgray}\rlap{\vrule height0.1pt width\linewidth depth0.1pt}}\hskip0pt plus 1fill}%
				\newlinechar`\^^M\everyeof{\noexpand}\scantokens{#3}\par
			\endbreakbox
		\endgroup
	\else
		\vskip0.5ex
		\boxput*(0,1)
			{\fboxsep\z@
			\hbox{\sffamily\colorbox{black}{\leavevmode\kern0.25em{\color{white}\footnotesize\strut#2}\kern0.25em}}%
			}%
			{\fboxsep5pt
			\fbox{%
				$\vcenter{\hsize\dimexpr0.#1\linewidth-\fboxsep-\fboxrule\relax
					\kern5pt\parskip0pt \ttfamily\footnotesize\the@code}%
				\vcenter{\kern5pt\hsize\dimexpr\linewidth-0.#1\linewidth-\fboxsep-\fboxrule\relax
					\everypar{{\color{lightgray}\rlap{\vrule height0.1pt width\dimexpr\linewidth-0.#1\linewidth-\fboxsep-\fboxrule depth0.1pt}}}%
					\footnotesize\newlinechar`\^^M\everyeof{\noexpand}\scantokens{#3}}$%
				}%
			}%
	\fi
	\medbreak
	\endgroup
}

\begingroup
	\catcode`\&lt;13 \catcode`\&gt;13
	\gdef\Verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
		\bgroup
			\verb@eol@error \let\do\@makeother \dospecials
			\verbatim@font\@noligs
			\catcode`\&lt;13 \catcode`\&gt;13 \def&lt;{\begingroup$\langle$\itshape}\def&gt;{\/$\rangle$\endgroup}%
			\@ifstar\@sverb\@verb}
\endgroup

\newcommand\falseverb[1]{{\ttfamily\detokenize\expandafter{\string#1}}}

\def\CFfrdate@i#1/#2/#3\@nil{\number#3\relax\ifnum#3=1 \noexpand\ier{}\fi\space \ifcase#2 \or janvier\or fĂ©vrier\or mars\or avril\or mai\or juin\or juillet\or aout\or septembre\or octobre\or novembre\or dĂ©cembre\fi\space#1}
\edef\CFfrdate{\expandafter\CFfrdate@i\CFdate\@nil}

\DeclareRobustCommand\CF{%
	\textsf{%
		chem%
		\if\string b\detokenize\expandafter{\f@series}%
			\lower0.01em\hbox{\itshape f}\kern-0.06em
		\else
			\lower0.048em\hbox{\kern-0.04em \itshape f}\kern0.03em
		\fi ig%
		}%
		\xspace
}
\makeatother

\usepackage{babel}
\frenchbsetup{StandardLists=true,og=Â«,fg=Â»}
\newcommand\TIKZ{ti\textit kz\xspace}
\newcommand\molht[1]{\begingroup\parskip3.5pt\par\hfill\chemfig{#1}\hfill\null\par\endgroup}
\newcommand\boxednode[2]{\fbox{$\mathrm{#1}\vphantom{M_1}$}_{#2}}
\newcommand\boxedfalseverb[1]{{\fboxsep0pt\fbox{\vphantom|\falseverb{#1}}}}
\newcommand*\chevrons[1]{\textlangle\textit{#1}\textrangle}
\newcommand*\CFkey[1]{{\color{teal}\texttt{\detokenize{#1}}}}
\newcommand*\CFval[1]{{\color{teal}\textlangle\textit{#1}\textrangle}}
\newcommand*\CFkv[2]{\CFkey{#1}{\color{teal}${}={}$}\CFval{#2}}
\newcommand*\CFparam[1]{\CFkey{#1}&amp;\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}&amp;\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}&amp;\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}

\csname @addtoreset\endcsname{section}{part}
\usepackage{titlesec}
\titleformat{\part}[display]{\normalfont\filcenter\sffamily\bfseries}{}{0pt}{\Huge}

\begin{document}
\topsep=3pt plus5pt minus2pt\relax
\begin{titlepage}
	\catcode`!12
	\begin{tikzpicture}[remember picture,overlay]
		\shade [left color=blue,right color=white]([yshift=2cm]current page.west) rectangle ([xshift=-1cm]current page.south);
		\shade [left color=white,right color=blue] ([xshift=1cm]current page.south) rectangle ([yshift=2cm]current page.east);
		\filldraw[black](current page.north west) rectangle ([yshift=7cm]current page.east);
		\shade[top color=black,bottom color=blue]([yshift=7cm]current page.east)rectangle([yshift=2.5cm]current page.west);
		\filldraw[black!55!blue!100]([yshift=2.5cm]current page.east)rectangle([yshift=2cm]current page.west);
	\end{tikzpicture}
	\begin{center}
		\color{white}\sffamily\fontsize{50pt}{50pt}\selectfont\CF\par
		\Large v\CFver\par
		\CFfrdate\par\bigbreak
		\normalsize Christian Tellechea\smallbreak
		\href{mailto:unbonpetit@netc.fr}{\texttt{unbonpetit@netc.fr}}\par\vskip1.5cm
		\huge Une extension \TeX{} pour dessiner des molĂ©cules%
	\end{center}
	\vskip4cm
	\begin{center}
		\scriptsize
		\setchemfig{atom sep=3em}%
		\chemfig{-[::-30](-[5])(-[7])-[::+60]-[::-60]O-[::+60](=[::-45]O)-[::+90]HN&gt;:[::-60](-[::+60]**6(------))-[::-30](&lt;:[2]OH)-[::-60](=[6]O)-[::+60]O&gt;:[::-60]*7(---?(&lt;[::-120]OH)-(&lt;|[1]CH_3)(&lt;:[::-90]CH_3)-(-[1](&lt;[::+80]HO)-[0](=[::+60]O)-[7](&lt;|[::+130]CH_3)(-[::+75](&lt;|[2]OH)-[::-60]-[::-60](&lt;[::+30]O-[::-90])-[::-60](&lt;[::+90])(&lt;:[::+30]O-[7](-[6]CH_3)=[0]O)-[::-60])-[6]-[5,1.3]?(&lt;:[7]O-[5](=[::-60]O)-[6]**6(------)))=(-[2]CH_3)-)}%
		\par
		{\sffamily\small Le taxotĂ¨re}%
	\end{center}
	\vskip1.5cm
	\hfill
	\hbox to 0pt{\hss\scriptsize
		\setchemfig{bond offset=1pt,atom sep=2.5em,compound sep=5em,arrow offset=6pt}
		\schemestart
		  \chemfig{(-[:-150]R')(-[:-30]R)=[2]N-[:30]OH}
		  \arrow{&lt;=&gt;[\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 &lt;=2pt]{
		      \draw(a0)..controls +(135:2mm) and +(215:4mm).. (a1);
		      \draw(b0)..controls +(120:2mm) and +(180:3mm).. ([yshift=7pt]b1.180);}
		  \arrow{&lt;=&gt;[\chemfig{{-}H_2O}]}[,1.1]
		  \chemleft[{\subscheme[90]{%
		    \chemfig{R'-\chemabove{N}{\scriptstyle\oplus}~C-R}
		    \arrow{&lt;-&gt;}[,0.75]
		    \chemfig{R'-\charge{90=\:}{N}=@{a1}\chemabove{C}{\scriptstyle\oplus}-R}}}\chemright]
		  \arrow{&lt;=&gt;[\chemfig{H_2@{a0}\charge{0=\:,90=\:}{O}}]}[,1.1]
		  \chemmove[red,-stealth,red,shorten &lt;=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{&lt;=&gt;[\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}
		\sffamily\small RĂ©arrangement de Beckmann%
	\end{center}
\end{titlepage}
\parindent0pt\pagestyle{plain}
\tableofcontents
\parskip\medskipamount
\newpage

\setitemize{leftmargin=3em,topsep=0pt,parsep=0pt,itemsep=0pt,label=--}
\part{Introduction}
\section{Nouveau dans la v1.6}
\subsection{Formules de Lewis}
Comme annoncĂ© depuis la version 1.5 du 5/3/2020, les macros dĂ©prĂ©ciĂ©es \verb|\lewis| et \verb|Lewis| ne sont plus disponibles dans le package \CF. La mĂ©thode recommandĂ©e pour tracer des formules de Lewis passe dĂ©sormais par les macros \verb|\charge| et \verb|\Charge|, voir pages~\pageref{charge} et suivantes.

Si l'utilisation des macros \verb|\lewis| et \verb|Lewis| est indispensable, leur code a Ă©tĂ© placĂ© dans le fichier \verb|chemfig-lewis.tex| qu'il est possible de charger Ă&nbsp; l'aide de \verb|\input|, aprĂ¨s avoir chargĂ© le package \CF.

\subsection{ClĂ© debug}
Une nouvelle clĂ© boolĂ©enne \CFkey{debug} est disponible; elle est fausse par dĂ©faut. Lorsque sa valeur est \verb|true|, le contour (rectangulaire) de chaque groupe d'atomes est tracĂ© en rouge et le contour de chaque atome est tracĂ© en gris. Au-dessus du rectangle rouge se trouve le numĂ©ro du groupe d'atomes et de mĂŞme, au-dessous de chaque atome figure son numĂ©ro (les atomes sont numĂ©rotĂ©s de gauche Ă&nbsp; droite, en partant de 1). Ces numĂ©ros permettent de connaitre le nom du nĹ“ud de chaque atome dont la syntaxe est \verb|n&lt;a&gt;-&lt;b&gt;| oĂą \verb|&lt;a&gt;| est le numĂ©ro du groupe d'atome et \verb|&lt;b&gt;| celui de l'atome.

Sur cet exemple, l'atome \verb|n1-3| qui est Â«C2Â» est reliĂ© par une flĂ¨che bleue Ă&nbsp; l'atome \verb|n2-4| qui est Â«GzÂ».
\exemple{Nom des nĹ“uds}/\setchemfig{debug=true}
\chemfig{A1BC2-[:30]DxEyFGz-H3I}
\chemmove{\draw[blue](n1-3)to[out=75,in=90](n2-4);}/

\subsection{Token \texttt\# dans les schĂ©mas}
Dans un schĂ©ma rĂ©actionnel, le token \verb|#| est dĂ©sormais permis lorsqu'il se trouve dans l'argument de la commande \verb|\chemfig|. Voir  page~\pageref{modif.retrait}.

\subsection{ClĂ© gchemname}
Cette clĂ©, vraie par dĂ©faut, rend globales les assignations de profondeur faites par \verb|\chemnameinit| et \verb|\chemname|.

\subsection{ClĂ©s Â«schemestart codeÂ» et Â«schemestop codeÂ»}
Les valeurs, vides par dĂ©faut, contenues dans ces deux clĂ©s sont exĂ©cutĂ©es au tout dĂ©but (immĂ©diatement aprĂ¨s le \verb|begingroup|) et Ă&nbsp; la toute fin (juste avant le \verb|endgroup|) d'un schĂ©ma rĂ©actionnel. Elles ne sont pas exĂ©cutĂ©es si le schĂ©ma rĂ©actionnel est imbriquĂ© dans un autre.

On peut, par exemple, Ă©crire Â«\verb|schemestart code=\chemnameint{}|Â» pour rĂ©initialiser la profondeur des noms au dĂ©but de chaque schĂ©ma rĂ©actionnel.

\subsection{ClĂ© Â«baselineÂ»}
La valeur passĂ©e Ă&nbsp; cette clĂ© permet de contrĂ´ler la position verticale de la molĂ©cule tracĂ©e par rapport Ă&nbsp; la ligne de base. Voir page~\pageref{baseline}.

\subsection{Raccord avec les liaisons de Cram}
Lorsque \CFkey{bond join} est \CFval{true}, les liaisons de Cram se raccordent plus esthĂ©tiquement entre-elles et aux liaisons simples. Voir page~\pageref{joinCram}.

\section{PrĂ©sentation}
Pour charger \CF, il faut Ă©crire :
\begin{itemize}
	\item {\color{blue}\verb-\input chemfig.tex-} avec $\varepsilon$\TeX;
	\item {\color{blue}\verb-\usepackage{chemfig}-} avec \LaTeX;
\end{itemize}

Dans tous les cas, le package \TIKZ, s'il n'a pas Ă©tĂ© chargĂ© auparavant, est chargĂ© par \CF.

La commande principale permettant de dessiner les molĂ©cules est \Verb|\chemfig{&lt;code&gt;}|. L'argument \Verb|&lt;code&gt;| est la suite de caractĂ¨res dĂ©crivant le dessin de la molĂ©cule selon les rĂ¨gles qui seront exposĂ©es dans ce manuel.

Tout a Ă©tĂ© fait pour qu'il soit possible de dessiner le plus grand nombre de configurations de molĂ©cules chimiques, tout en privilĂ©giant une syntaxe simple, souple et intuitive. MalgrĂ© tout, le \Verb-&lt;code&gt;- qui dĂ©crit le dessin en 2D de la molĂ©cule voit sa complexitĂ© augmenter proportionnellement Ă&nbsp; celle de la molĂ©cule Ă&nbsp; dessiner.

La commande \verb|\chemfig| dessine une molĂ©cule en se servant de commandes de l'extension \TIKZ, placĂ©es Ă&nbsp; l'intĂ©rieur de l'environnement \verb|tikzpicture|. Le choix de \TIKZ implique que:
\begin{itemize}
\item l'utilisateur a le choix pour le moteur de compilation : pdf\LaTeX{} peut indiffĂ©remment ĂŞtre utilisĂ© en mode dvi (tex $\longrightarrow$ dvi $\longrightarrow$ ps $\longrightarrow$ pdf) ou en mode pdf (tex $\longrightarrow$ pdf). En effet, \TIKZ, via la sous-couche \falseverb{pgf}, donne des rĂ©sultats graphiques identiques dans les deux modes;
\item la boĂ®te englobante est automatiquement calculĂ©e par \TIKZ et l'utilisateur n'a pas Ă&nbsp; se prĂ©occuper d'Ă©ventuels chevauchements avec le texte. En revanche il faut faire attention Ă&nbsp; la rĂ©gularitĂ© des interlignes lorsque la molĂ©cule est dessinĂ©e dans un paragraphe. Ă€ titre d'exemple, on a tracĂ© la boĂ®te englobante pour cette molĂ©cule : {\fboxsep0pt \fbox{\chemfig{H_3C-C(-[:-30]OH)=[:30]O}}}.
\end{itemize}

\section{Remerciements}
Cette extension a pu voir le jour grĂ˘ce Ă&nbsp; l'aide de Christophe \textsc{Casseau} qui en a eu l'idĂ©e. Je le remercie pour l'aide qu'il m'a apportĂ©e en amont de l'Ă©criture du code ainsi que pour les tests qu'il a effectuĂ©s.
\bigbreak
Enfin, je tiens Ă&nbsp; chaleureusement remercier Theo \textsc{Hopman} qui m'a spontanĂ©ment proposĂ© d'effectuer la traduction de ce manuel en anglais.
\newpage

\part{Fonctionnement de \protect\CF}
Cette partie est consacrĂ©e Ă&nbsp; la description des fonctionnalitĂ©s les plus courantes de \CF. L'utilisateur trouvera ici les explications suffisantes pour dessiner la plupart des molĂ©cules. La prĂ©sentation des fonctionnalitĂ©s est faite sous un angle thĂ©orique, et le but de cette partie n'est pas de dessiner de vraies molĂ©cules chimiques mais de donner Ă&nbsp; l'utilisateur une description formelle des fonctionnalitĂ©s de \CF. La partie Â«Utilisation avancĂ©eÂ», page~\pageref{utilisation.avancee}, sera plus pratique et dĂ©voilera des fonctionnalitĂ©s plus avancĂ©es pour les utilisations les plus pointues. On y mettra aussi en avant des mĂ©thodes pour construire de vraies molĂ©cules chimiques, page \pageref{exemples.commentes}. Enfin, la derniĂ¨re partie prĂ©sentera des molĂ©cules chimiques et le code utilisĂ© pour les dessiner.

\section{La macro \texttt{\textbackslash chemfig}}
La macro \verb|\chemfig| a la syntaxe suivante
\begin{center}
	\Verb|\chemfig[liste de &lt;clĂ©s&gt;=&lt;valeurs&gt;]{&lt;code molĂ©cule&gt;}|
\end{center}
L'argument optionnel entre crochets spĂ©cifie les rĂ©glages des paramĂ¨tres qui seront utilisĂ©s pour le tracĂ© de la molĂ©cule. Il est Ă&nbsp; noter que les paramĂ¨tres ainsi modifiĂ©s ne le sont \emph{que pour la molĂ©cule en cours} et seront restaurĂ©s Ă&nbsp; leurs valeurs prĂ©cĂ©dentes une fois la macro terminĂ©e. Pour modifier de faĂ§on durable des paramĂ¨tres, il faut passer par la macro \Verb|\setchemfig{&lt;clĂ©s&gt;=&lt;valeurs&gt;}|.

Voici la liste exhaustive des paramĂ¨tres ainsi que leurs valeurs par dĂ©faut\label{listeparametres}. Il faut noter que les \chevrons{clĂ©s} depuis \CFkey{scheme debug} inclus jusqu'Ă&nbsp; la fin de la liste concernent les schĂ©mas rĂ©actionnels et n'ont pas de sens dans l'argument optionnel de la macro \verb|\chemfig| oĂą elles sont simplement ignorĂ©es :\par
\leavevmode\hfill
\begin{minipage}[t]{.45\linewidth}
	\begin{longtable}{rl}\hline
		\chevrons{clĂ©s} &amp; \chevrons{valeurs} par dĂ©faut\\\hline\endhead
		\CFparam{chemfig style}
		\CFparam{atom style}
		\CFparam{bond join}
		\CFparam{fixed length}
		\CFparam{cram rectangle}
		\CFparam{cram width}
		\CFparam{cram dash width}
		\CFparam{cram dash sep}
		\CFparam{atom sep}
		\CFparam{bond offset}
		\CFparam{double bond sep}
		\CFparam{angle increment}
		\CFparam{node style}
		\CFparam{bond style}
		\CFparam{baseline}
		\CFparam{debug}
		\CFparam{cycle radius coeff}
		\CFparam{stack sep}
		\CFparam{show cntcycle}
		\CFparam{autoreset cntcycle}\hline
	\end{longtable}
\end{minipage}\hfill
\begin{minipage}[t]{.45\linewidth}
	\begin{longtable}{rl}\hline
		\chevrons{clĂ©s} &amp; \chevrons{valeurs} par dĂ©faut\\\hline\endhead
		\CFparam{gchemname}
		\CFparam{schemestart code}
		\CFparam{schemestop code}
		\CFparam{scheme debug}
		\CFparam{compound style}
		\CFparam{compound sep}
		\CFparam{arrow offset}
		\CFparam{arrow angle}
		\CFparam{arrow coeff}
		\CFparam{arrow style}
		\CFparam{arrow double sep}
		\CFparam{arrow double coeff}
		\CFparam{arrow double harpoon}
		\CFparam{arrow label sep}
		\CFparam{arrow head}
		\CFparam{+ sep left}
		\CFparam{+ sep right}
		\CFparam{+ vshift}\hline
	\end{longtable}
\end{minipage}\hfill\null\bigbreak

Le \Verb|&lt;code molĂ©cule&gt;| contient les instructions pour tracer la molĂ©cule selon une syntaxe qui sera expliquĂ©e dans ce document. Il n'y a pas de restriction a priori sur les caractĂ¨res acceptĂ©s dans ce code :
\begin{itemize}
	\item tous les caractĂ¨res de catcode 11 ou 12, c'est-Ă&nbsp;-dire les lettres majuscules ou minuscules, les chiffres, les opĂ©rateurs mathĂ©matiques (\texttt+ \texttt- \texttt* \texttt/ \texttt=), les signes de ponctuation qu'ils soient actifs ou non (\verb|.| \verb|,| \verb|;| \verb|:| \verb|!| \verb|?| \verb|'| \verb|`| \verb|"| \verb-|-), les parenthĂ¨ses et les crochets;
	\item les caractĂ¨res plus spĂ©ciaux tels que Â«\verb|~|Â», Â«\verb|#|Â»\footnote{Pour Ă©viter que \texttt\# ne soit doublĂ© lorsque la macro \texttt{\textbackslash chemfig} se trouve dans l'argument d'une macro, on peut utiliser Ă&nbsp; la place \texttt{\textbackslash\#} ou la macro \texttt{\textbackslash CFhash}.} ainsi que Â«\verb|^|Â» et Â«\verb|_|Â» qui ont leur propriĂ©tĂ©s normales du mode mathĂ©matique;
	\item les espaces, mais ceux-ci sont ignorĂ©s par dĂ©faut car les atomes sont composĂ©s en mode mathĂ©matique;
	\item les accolades Â«\verb|{|Â» et Â«\verb|}|Â» qui ont leur comportement normal de marqueurs de groupe ou dĂ©limiteurs d'argument de macro;
	\item des macros.
\end{itemize}

\section{Groupes d'atomes}
IntrinsĂ¨quement, le dessin d'une molĂ©cule chimique consiste Ă&nbsp; 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Â».

{\fboxsep1pt
Mais dans cette molĂ©cule
\molht{H_3C-C(-[:-30]OH)=[:30]O}
on compte 4 groupes d'atomes : Â«$\mathrm{H_3C}$Â», Â«CÂ», Â«OÂ» et Â«OHÂ». Pour des raisons que nous verrons plus tard, \CF examine chaque groupe d'atomes et le dĂ©coupe en atomes. Chaque atome s'Ă©tend jusqu'Ă&nbsp; rencontrer une lettre majuscule ou un de ces caractĂ¨res spĂ©ciaux : {\ttfamily \boxedfalseverb{-} \boxedfalseverb{=} \boxedfalseverb{~} \boxedfalseverb{(} \boxedfalseverb{!} \boxedfalseverb{*} \boxedfalseverb{&lt;} \boxedfalseverb{&gt;} \boxedfalseverb{@}}. Pour \CF, tous les caractĂ¨res entre accolades sont ignorĂ©s pour le dĂ©coupage en atomes.

Par consĂ©quent, le premier groupe d'atomes Â«$\mathrm{H_3C}$Â» est dĂ©coupĂ© en 2 atomes : $\boxednode{H_3}{}$ et $\boxednode C{}$. Chimiquement, il arrive que ce ne soient pas de vrais atomes puisque $\mathrm{H_3}$ par exemple, est constituĂ© de 3 atomes d'hydrogĂ¨ne. Par abus de langage, on parlera d'atomes par la suite. Par consĂ©quent, \CF voit la molĂ©cule prĂ©cĂ©dente ainsi :
\renewcommand*\printatom[1]{\fbox{\ensuremath{\mathrm{#1}}}}
\molht{H_3C-C(=[:30]O)(-[:-30]OH)}}

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-Ă&nbsp;-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}/

Pour spĂ©cifier un dĂ©calage vertical arbitraire ou placer sur la ligne de base un groupe d'atome, il faut utiliser la clĂ© \CFkey{baseline} (voir page~\pageref{baseline}).

\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&gt;, \boxedfalseverb&lt;, \boxedfalseverb{&gt;:}, \boxedfalseverb{&lt;:}, \boxedfalseverb{&gt;|} et \boxedfalseverb{&lt;|} :\label{types.liaisons}
\begin{center}
\begin{tabular}{&gt;{\centering\arraybackslash}m{1.7cm}&gt;{\centering\arraybackslash}m{3cm}&gt;{\centering\arraybackslash}m{2cm}m{4cm}}
\hline
\No{} liaison&amp;Code                 &amp;RĂ©sultat      &amp;Type de liaison\\\hline
1            &amp;\verb+\chemfig{A-B}+ &amp;\chemfig{A-B} &amp;Simple\\
2            &amp;\verb+\chemfig{A=B}+ &amp;\chemfig{A=B} &amp;Double\\
3            &amp;\verb+\chemfig{A~B}+ &amp;\chemfig{A~B} &amp;Triple\\
4            &amp;\verb+\chemfig{A&gt;B}+ &amp;\chemfig{A&gt;B} &amp;Cram pleine droite\\
5            &amp;\verb+\chemfig{A&lt;B}+ &amp;\chemfig{A&lt;B} &amp;Cram pleine gauche\\
6            &amp;\verb+\chemfig{A&gt;:B}+&amp;\chemfig{A&gt;:B}&amp;Cram pointillĂ©e droite\\
7            &amp;\verb+\chemfig{A&lt;:B}+&amp;\chemfig{A&lt;:B}&amp;Cram pointillĂ©e gauche\\
8            &amp;\verb+\chemfig{A&gt;|B}+&amp;\chemfig{A&gt;|B}&amp;Cram Ă©vidĂ©e droite\\
9            &amp;\verb+\chemfig{A&lt;|B}+&amp;\chemfig{A&lt;|B}&amp;Cram Ă©vidĂ©e gauche\\\hline
\end{tabular}
\end{center}
\label{double bond sep}La \chevrons{clĂ©} \CFkv{double bond sep}{dim} permet de rĂ©gler l'espacement entre les traits des liaisons doubles ou triples. Cet espacement vaut 2pt par dĂ©faut.

\label{longueur.liaison}Lorsqu'une liaison est faite entre 2 atomes, il faut comprendre que ces atomes sont contenus dans des boĂ®tes invisibles rectangulaires. Les centres des deux rectangles sont sĂ©parĂ©s par une distance rĂ©glable $\Delta$, appelĂ©e Â«distance interatomeÂ». De plus, les liaisons ne relient pas exactement les frontiĂ¨res des rectangles : une distance $\delta$, rĂ©glable elle aussi, sĂ©pare le bord des rectangles du dĂ©but et de la fin de la liaison. Pour aider Ă&nbsp; la comprĂ©hension, les boĂ®tes rectangulaires sont rendues visibles dans ce schĂ©ma :
\begin{center}
\begin{tikzpicture}[every node/.style={anchor=base,inner sep=1.5pt,outer sep=0pt,minimum size=0pt},baseline]
	\node[draw] at(0,0)(aa){\huge A};
	\node[draw]at(4,0)(bb){\huge B};
	\path[shorten &lt;=10pt,shorten &gt;=10pt,draw](aa)--(bb)coordinate[pos=0](al) coordinate[pos=1](bl);
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at(al){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at([xshift=10pt]al){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at(bl){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at([xshift=-10pt]bl){};
	\draw[blue,dash pattern=on 1pt off 1pt](bl)--([yshift=0.7cm]bl);
	\draw[blue,dash pattern=on 1pt off 1pt]([xshift=-10pt]bl)--([xshift=-10pt,yshift=0.7cm]bl);
	\draw[stealth-stealth]([yshift=0.6cm]bl.center)--([xshift=-10pt,yshift=0.6cm]bl.center) node [midway,above,draw=none]{$\delta$};
	\draw[blue,dash pattern=on 1pt off 1pt](al)--([yshift=0.7cm]al);
	\draw[blue,dash pattern=on 1pt off 1pt]([xshift=10pt]al)--([xshift=10pt,yshift=0.7cm]al);
	\draw[stealth-stealth]([yshift=0.6cm]al.center)--([xshift=10pt,yshift=0.6cm]al.center) node [midway,above,draw=none]{$\delta$};
	\node[draw,circle,fill,red,minimum size=2pt,inner sep=0pt]at(aa){};
	\node[draw,circle,fill,red,minimum size=2pt,inner sep=0pt]at(bb){};
	\draw[stealth-stealth]([yshift=1cm]aa.center)--([yshift=1cm]bb.center) node [midway,above,draw=none] {$\Delta$} ;
	\draw[red,dash pattern=on 2pt off2pt](aa.center)--([yshift=1.1cm]aa.center);
	\draw[red,dash pattern=on 2pt off2pt](bb.center)--([yshift=1.1cm]bb.center);
\end{tikzpicture}
\end{center}

\label{atom sep}La \chevrons{clĂ©} \CFkv{atom sep}{dim} rĂ¨gle cette distance interatome $\Delta$. Ce paramĂ¨tre, comme tous les paramĂ¨tres, agit sur toutes les molĂ©cules qui vont suivre.

\exemple{Distance interatome}|\chemfig[atom sep=2em]{A-B}\par
\chemfig[atom sep=50pt]{A-B}|

\label{bond offset}La \chevrons{clĂ©} \CFkv{bond offset}{dim} permet de rĂ©gler l'espacement $\delta$ entre le trait reprĂ©sentant la liaison et l'atome. Sa valeur par dĂ©faut est 2pt.
\exemple{Retrait des liaisons}|\chemfig[bond offset=0pt]{A-B}\par
\chemfig[bond offset=5pt]{A-B}|

Si deux liaisons se suivent, alors \CF insĂ¨re un groupe vide \verb-{}-, et autour de ce groupe vide, l'espacement $\delta$ est nul :
\exemple{Groupes vides}/\chemfig{A-B=-=C}/

\label{bond style}La \chevrons{clĂ©} \CFkv{bond style}{code tikz} dĂ©finit le style de toutes les liaisons qui seront dessinĂ©es par la suite. Le \CFval{code tikz} est vide par dĂ©faut. Pour personnaliser les liaisons une par une, voir page~\pageref{perso-liaisons}.
\exemple{Style des liaisons}/\chemfig[bond style={line width=1pt,red}]{A-B=C&gt;|D&lt;E&gt;:F}/

\label{modif.retrait}On peut spĂ©cifier l'espacement $\delta$ pour une seule liaison avec un marqueur qui est, au choix, le caractĂ¨re \verb-#-, la macro \verb|\#| ou \verb|\CFhash|. Attention, si la macro \verb|\chemfig| se trouve dans l'argument d'une autre macro, il \emph{faut} utiliser la macro \verb|\#| ou \verb|\CFhash| au lieu du caractĂ¨re \verb|#|.

Ce marqueur doit se situer \emph{immĂ©diatement} aprĂ¨s le signe de liaison et dispose d'un argument obligatoire entre parenthĂ¨ses de la forme Â«\Verb-(&lt;dim1&gt;,&lt;dim2&gt;)-Â», oĂą \Verb-&lt;dim1&gt;- reprĂ©sente l'espacement $\delta$ au dĂ©but de la liaison et \Verb-&lt;dim2&gt;- celui de la fin. Si \Verb-&lt;dim2&gt;- est omis, l'espacement en fin de liaison prend la valeur de $\delta$ en vigueur Ă&nbsp; ce moment. On peut observer sur cet exemple comment le retrait, rĂ©glĂ© Ă&nbsp; 4pt pour ĂŞtre plus visible, est rendu nul pour la liaison arrivant sur Â«BÂ», puis partant de Â«BÂ» et enfin pour les deux Ă&nbsp; la fois :
\begingroup
\catcode`\#12
\exemple{RĂ©glage fin du retrait des liaisons}/\setchemfig{bond offset=4pt}
\chemfig{A-B-C}\par
\chemfig{A-#(,0pt)B-C}\par
\chemfig{A-B-#(0pt)C}\par
\chemfig{A-#(,0pt)B-#(0pt)C}/
\endgroup

Par dĂ©faut, tous les atomes se trouvant dans les groupes d'atomes sont composĂ©s en mode mathĂ©matique (les espaces sont ignorĂ©s). Ils peuvent donc contenir des caractĂ¨res propres Ă&nbsp; 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.}:
\exemple{Mode mathĂ©matique}|\chemfig{A_1B^2-C _ 3 ^ 4}|

Il existe des rĂ©glages spĂ©cifiques aux liaisons de Cram:
\begin{itemize}
	\item \CFkv{cram width}{dim} est la largeur de la base des triangles et vaut 1.5ex par dĂ©faut;
	\item \CFkv{cram dash width}{dim} est l'Ă©paisseur des pointillĂ©s et vaut 1pt par dĂ©faut;
	\item \CFkv{cram dash sep}{dim} est l'espacement entre les pointillĂ©s et vaut 2pt par dĂ©faut.
\end{itemize}

Voici un exemple oĂą les 3 dimensions sont modifiĂ©es :

\exemple{Liaison de Cram modifiĂ©e}-\chemfig[cram width=10pt,
         cram dash width=0.4pt,
         cram dash sep=1pt]{A&gt;B&gt;:C&gt;|D}-

\section{Angle d'une liaison}
Chaque liaison admet un argument optionnel qui se met entre crochet. Le contenu de cet argument optionnel permet de rĂ©gler tout ce dont on a besoin pour la liaison. Cet argument optionnel est constituĂ© de 5 champs sĂ©parĂ©s par des virgules qui sont autant d'arguments optionnels pour la liaison. Le premier de ces arguments dĂ©finit l'angle optionnel de la liaison. Les angles vont croissant dans le sens trigonomĂ©trique et sont dĂ©finis par rapport Ă&nbsp; l'horizontale. Si l'argument optionnel est vide, alors l'angle par dĂ©faut vaut 0\degres. Nous verrons plus loin comment modifier cet angle par dĂ©faut.

Il y a plusieurs faĂ§ons de spĂ©cifier l'angle d'une liaison.
\subsection{Angle prĂ©dĂ©fini}
Lorsque l'argument optionnel contient un entier celui-ci reprĂ©sente l'angle que fait la liaison avec l'horizontale, en multiples de 45\degres. Ainsi, \verb-[0]- spĂ©cifie un angle de 0\degres, \verb-[1]- de 45\degres, etc.

\exemple{Angles prĂ©dĂ©finis}|\chemfig{A-B-[1]C-[3]-D-[7]E-[6]F}|

Ces angles restent valable si les atomes sont vides et il en sera de mĂŞme par la suite pour toutes les fonctionnalitĂ©s que nous verrons :
\exemple{Angles prĂ©dĂ©finis, groupes vides}|\chemfig{--[1]-[3]--[7]-[6]}|

\label{angle increment}La \chevrons{clĂ©} \CFkv{angle increment}{angle} permet de choisir un autre angle que celui de 45\degres{} sĂ©lectionnĂ© par dĂ©faut :

\exemple{Modification de l'angle prĂ©dĂ©fini}/Par dĂ©faut (45) : \chemfig{-[1]-[-1]-[1]-[-1]}

Angle de 30 : \chemfig[angle increment=30]{-[1]-[-1]-[1]-[-1]}/

\subsection{Angle absolu}
Si on veut spĂ©cifier un angle en degrĂ©s avec l'horizontale, alors l'argument optionnel doit prendre cette forme : \Verb-[:&lt;angle absolu&gt;]-. S'il le faut, l'\Verb-&lt;angle absolu&gt;- est ramenĂ© dans l'intervalle $[0\;;\;360]$ :
\exemple{Angles absolus}/\chemfig{A-[:30]B=[:-75]C-[:10]D-[:90]&gt;|[:60]-[:-20]E-[:0]~[:-75]F}/

\subsection{Angle relatif}\label{angle.relatif}
Il est souvent intĂ©ressant de spĂ©cifier pour une liaison l'angle qu'elle fera relativement Ă&nbsp; la prĂ©cĂ©dente. On doit alors employer cette syntaxe pour l'argument optionnel : \Verb-[::&lt;angle relatif&gt;]-. Le signe de l'\Verb-&lt;angle relatif&gt;- peut ĂŞtre omis s'il s'agit d'un \verb-+-.

Voici une molĂ©cule oĂą les angles des liaisons augmentent de 20\degres{} Ă&nbsp; chacune aprĂ¨s la premiĂ¨re dont l'angle est absolu de $-5\degres$ :
\exemple{Suite d'angles relatifs}|\chemfig{A-[:-5]-[::+20]-[::20]B-[::+20]-[::20]C-[::20]}|

On peut Â«casserÂ» un enchaĂ®nement d'angles relatifs en mettant un angle absolu ou prĂ©dĂ©fini lorsqu'on le souhaite. Ici, c'est Ă&nbsp; l'atome Â«BÂ» dont la liaison suivante un angle absolu de 315\degres.
\exemple{Suite d'angles relatif puis angle absolu}|\chemfig{A-[:-5]-[::20]-[::20]B-[7]-[::20]C-[::20]}|

\section{Longueur d'une liaison}
En fait, il faudrait plutĂ´t parler d'espace interatome que de longueur d'une liaison. En effet, seul l'espace interatome est rĂ©glable avec \CFkey{atom sep} comme on l'a vu page~\pageref{longueur.liaison}. Une fois ce paramĂ¨tre fixĂ©, la longueur d'une liaison dĂ©pend du contenu des atomes et, dans une moindre mesure, de l'angle que fait la liaison avec l'horizontale. Il est bien Ă©vident que deux atomes peu Â«encombrantsÂ» auront leurs bords plus lointains que s'il avaient Ă©tĂ© encombrants. On s'en rend trĂ¨s bien compte sur cet exemple oĂą les atomes Â«IÂ» sont plus Ă©troits que les atomes Â«MÂ» ce qui entraĂ®ne que la liaison entre les Â«IÂ» est plus longue que celle entre les Â«MÂ» :
\exemple{Influence de la largeur de l'atome}|\chemfig{I-I}\par
\chemfig{M-M}|

Cet aspect de l'encombrement des atomes se fait particuliĂ¨rement sentir lorsqu'ils comportent les exposants ou des indices. Dans cet exemple, la liaison est bien plus courte, au point de se confondre avec un signe mathĂ©matique $-$ :
\exemple{Liaison trop courte}|\chemfig{A^{++}_{2}-B^{-}_3}|

Il est important de remarquer que l'exposant Â«\verb+-+Â» est \emph{mis entre accolades}. En effet si ce n'Ă©tait pas le cas, \CF stopperait l'atome sur ce caractĂ¨re qui est un caractĂ¨re de liaison. L'atome serait donc Â«\verb-B^-Â», ce qui conduirait Ă&nbsp; des rĂ©sultats inattendus.

Il est possible de changer le comportement de \CF quant Ă&nbsp; l'espace interatome. En effet, lorsque la \chevrons{clĂ©} \CFkey{fixed legnth} est mise Ă&nbsp; \CFval{true}, la \chevrons{clĂ©} \CFkey{atom sep} ne spĂ©cifie plus la distance entre les centres des atomes, notĂ©e $\Delta$, mais \emph{la longueur des liaisons}. DĂ¨s lors, les liaisons ont des longueurs fixes tandis que la distance entre les centres des atomes devient variable et dĂ©pend de leur encombrement. Voici les deux configurations du schĂ©ma de la page~\pageref{longueur.liaison} avec les deux valeurs boolĂ©ennes de \CFkey{fixed length} :

\begin{center}
\begin{tabular}{c@{\kern2cm}c}
	\CFkv{fixed length}{false}&amp;\CFkv{fixed length}{true}\\[2ex]
	\begin{tikzpicture}[every node/.style={anchor=base,inner sep=1.5pt,outer sep=0pt,minimum size=0pt},baseline]
	\node[draw] at(0,0)(aa){\huge A};
	\node[draw]at(4,0)(bb){\huge B};
	\path[shorten &lt;=10pt,shorten &gt;=10pt,draw](aa)--(bb)coordinate[pos=0](al) coordinate[pos=1](bl);
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at(al){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at([xshift=10pt]al){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at(bl){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at([xshift=-10pt]bl){};
	\draw[blue,dash pattern=on 1pt off 1pt](bl)--([yshift=0.7cm]bl);
	\draw[blue,dash pattern=on 1pt off 1pt]([xshift=-10pt]bl)--([xshift=-10pt,yshift=0.7cm]bl);
	\draw[stealth-stealth]([yshift=0.6cm]bl.center)--([xshift=-10pt,yshift=0.6cm]bl.center) node [midway,above,draw=none]{$\delta$};
	\draw[blue,dash pattern=on 1pt off 1pt](al)--([yshift=0.7cm]al);
	\draw[blue,dash pattern=on 1pt off 1pt]([xshift=10pt]al)--([xshift=10pt,yshift=0.7cm]al);
	\draw[stealth-stealth]([yshift=0.6cm]al.center)--([xshift=10pt,yshift=0.6cm]al.center) node [midway,above,draw=none]{$\delta$};
	\node[draw,circle,fill,red,minimum size=2pt,inner sep=0pt]at(aa){};
	\node[draw,circle,fill,red,minimum size=2pt,inner sep=0pt]at(bb){};
	\draw[stealth-stealth]([yshift=1cm]aa.center)--([yshift=1cm]bb.center) node [midway,above,draw=none] {$\Delta$} ;
	\draw[red,dash pattern=on 2pt off2pt](aa.center)--([yshift=1.1cm]aa.center);
	\draw[red,dash pattern=on 2pt off2pt](bb.center)--([yshift=1.1cm]bb.center);
	\end{tikzpicture}
	&amp;
	\begin{tikzpicture}[every node/.style={anchor=base,inner sep=1.5pt,outer sep=0pt,minimum size=0pt},baseline]
	\node[draw] at(0,0)(aa){\huge A};
	\node[draw]at(5,0)(bb){\huge B};
	\path[shorten &lt;=10pt,shorten &gt;=10pt,draw](aa)--(bb)coordinate[pos=0](al) coordinate[pos=1](bl);
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at(al){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at([xshift=10pt]al){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at(bl){};
	\node[draw,circle,fill,blue,minimum size=1.5pt,inner sep=0pt]at([xshift=-10pt]bl){};
	\draw[blue,dash pattern=on 1pt off 1pt](bl)--([yshift=0.7cm]bl);
	\draw[blue,dash pattern=on 1pt off 1pt]([xshift=-10pt]bl)--([xshift=-10pt,yshift=0.7cm]bl);
	\draw[stealth-stealth]([yshift=0.6cm]bl.center)--([xshift=-10pt,yshift=0.6cm]bl.center) node [midway,above,draw=none]{$\delta$};
	\draw[blue,dash pattern=on 1pt off 1pt](al)--([yshift=0.7cm]al);
	\draw[blue,dash pattern=on 1pt off 1pt]([xshift=10pt]al)--([xshift=10pt,yshift=0.7cm]al);
	\draw[stealth-stealth]([yshift=0.6cm]al.center)--([xshift=10pt,yshift=0.6cm]al.center) node [midway,above,draw=none]{$\delta$};
	\draw[stealth-stealth]([yshift=1cm]al)--([yshift=1cm]bl) node [midway,above,draw=none] {$\Delta$} ;
	\draw[red,dash pattern=on 2pt off2pt](al)--([yshift=1.1cm]al);
	\draw[red,dash pattern=on 2pt off2pt](bl)--([yshift=1.1cm]bl);
	\end{tikzpicture}
\end{tabular}
\end{center}

Afin que les cycles soient des polygones rĂ©guliers, le comportement par dĂ©faut est rĂ©tabli pour les liaisons des cycles, mĂŞme si \CFkv{fixed length}{true}.

\exemple{Liaisons de longueur fixe}/\chemfig{Cl-Cl}\par
\chemfig[fixed length=true]{Cl-Cl}/

Notamment lorsque le comportement par dĂ©faut est en vigueur et pour se prĂ©munir de liaisons trop courtes, il est parfois nĂ©cessaire de pouvoir augmenter (ou parfois rĂ©duire) la distance interatome. Pour cela, l'argument optionnel des liaisons est en rĂ©alitĂ© constituĂ© de plusieurs champs sĂ©parĂ©s par des virgules. Comme on l'a vu, le premier champ spĂ©cifie l'angle. Le deuxiĂ¨me champ, s'il est non vide, est un coefficient qui multipliera la distance interatome $\Delta$ par dĂ©faut. Ainsi, Ă©crire \verb+-[,2]+ demandera Ă&nbsp; ce que cette liaison ait l'angle par dĂ©faut (1\ier{} champ vide) et que les atomes qu'elle relie soit espacĂ©s d'une distance double de celle par dĂ©faut.
\exemple{Longueur de liaison modifiĂ©e}/\chemfig{A^{++}_{2}-[,2]B^{-}_3}\par
\chemfig{A-B-[,2]C=[,0.5]D}\par
\chemfig{-=[,1.5]-[,0.75]=[:-20,2]}/

On peut modifier la taille des molĂ©cules en jouant sur la taille de la police ou sur la \chevrons{clĂ©} \CFkey{atom sep}, Ă©ventuellement sur les deux, en prenant soin de confiner ces changements Ă&nbsp; l'intĂ©rieur d'un groupe si on veut en limiter la portĂ©e :
\exemple{Modifier la taille des molĂ©cules}/\normalsize       \chemfig{H-[:30]O-[:-30]H}\par
\setchemfig{atom sep=2.5em}
\chemfig{H-[:30]O-[:-30]H}\par
\small            \chemfig{H-[:30]O-[:-30]H}\par
\footnotesize     \chemfig{H-[:30]O-[:-30]H}\par
\scriptsize       \chemfig{H-[:30]O-[:-30]H}\par
\tiny             \chemfig{H-[:30]O-[:-30]H}/

\section{Atome de dĂ©part et d'arrivĂ©e}
Un groupe d'atomes peut contenir plusieurs atomes. Mettons que l'on veuille relier le groupe Â«ABCDÂ» au groupe Â«EFGÂ» avec une liaison. \CF calcule quel atome du premier groupe et quel atome de second groupe il faut relier en fonction de l'angle que fait la liaison avec l'horizontale. Si l'angle est compris entre $-90\degres$ et 90\degres{} (modulo 360\degres) ces valeurs Ă©tant \emph{non comprises}, alors, la liaison se fait entre le dernier atome du premier groupe et de premier atome du second groupe. Dans tous les autres cas, la liaison se fait par dĂ©faut entre le premier atome du premier groupe et le dernier atome du second groupe.

Voici des exemples oĂą les angles sont dans l'intervalle $]-90\;;90[$, et oĂą la liaison se fait donc entre D et E :
\exemple{Atomes liĂ©s par dĂ©faut}|\chemfig{ABCD-[:75]EFG}\quad
\chemfig{ABCD-[:-85]EFG}\quad
\chemfig{ABCD-[1]EFG}|

Dans les exemples suivants, les angles appartiennent Ă&nbsp; $[90\;;270]$ et donc la liaison se fait entre A et G :
\exemple[60]{Atomes liĂ©s par dĂ©faut}|\chemfig{ABCD-[:100]EFG}\quad
\chemfig{ABCD-[:-110]EFG}\quad
\chemfig{ABCD-[5]EFG}|

Dans certains cas, on peut dĂ©sirer qu'une liaison parte d'autres atomes que ceux calculĂ©s par \CF  On peut forcer un atome de dĂ©part ou un atome d'arrivĂ©e avec l'argument optionnel de la liaison. Il faut Ă©crire :
\begin{center}
	\Verb/[,,&lt;entier 1&gt;,&lt;entier 2&gt;]/
\end{center}
oĂą \Verb-&lt;entier 1&gt;- et \Verb-&lt;entier 2&gt;- sont les numĂ©ros des atomes de dĂ©part et d'arrivĂ©e souhaitĂ©s. Il faut que ces atomes existent, sinon, un message d'erreur sera Ă©mis.
\exemple{Atomes liĂ©s forcĂ©s}|\chemfig{ABCD-[:75,,2,3]EFG}\qquad
\chemfig{ABCD-[:75,,,2]EFG}\qquad
\chemfig{ABCD-[:75,,3,2]EFG}|

\section{Personnalisation des liaisons}\label{perso-liaisons}
Il existe un 5\ieme{} et dernier argument optionnel pour les liaisons qui se trouve Ă&nbsp; droite de la 4\ieme{} virgule :
\begin{center}
	\Verb/[,,,,&lt;code tikz&gt;]/
\end{center}

Ce \Verb-&lt;code tikz&gt;- est passĂ© directement Ă&nbsp; \TIKZ lorsque la liaison est tracĂ©e. On peut y mettre des attributs de couleur comme Â«\verb-red-Â», de pointillĂ©s comme Â«\verb-dash pattern=on 2pt off 2pt-Â», d'Ă©paisseur comme Â«\verb-line width=2pt-Â» ou mĂŞme de dĂ©coration si on a chargĂ© une librairie de dĂ©coration de \TIKZ. On peut aussi rendre une liaison invisible en Ă©crivant Â«\verb-draw=none-Â». Si on veut spĂ©cifier plusieurs attributs, on utilise la syntaxe de \TIKZ en les sĂ©parant par une virgule :
\exemple{Passage de code tikz}|\chemfig{A-[,,,,red]B}\par
\chemfig{A-[,,,,dash pattern=on 2pt off 2pt]B}\par
\chemfig{A-[,,,,line width=2pt]B}\par
\chemfig{A-[,,,,red,line width=2pt]B}|

On peut ainsi avoir accĂ¨s aux nombreuses librairies de dĂ©coration de \TIKZ. On peut par exemple utiliser la librairie Â«\verb-pathmorphing-Â» en Ă©crivant \verb-\usetikzlibrary{decorations.pathmorphing}- dans le prĂ©ambule pour tracer des liaisons ondulĂ©es :
\exemple{Liaison ondulĂ©e}|\chemfig{A-[,3,,,decorate,decoration=snake]B}|

Les liaisons de Cram sont insensibles aux attributs d'Ă©paisseur et de pointillĂ©s.

\section{Raccord entre liaisons}
Par dĂ©faut, les lignes reprĂ©sentant les liaisons simples ne se raccordent pas, ce qui peut ĂŞtre trop visible et inesthĂ©tique lorsque les Ă©paisseurs des lignes sont importantes.

Pour ceux qui trouvent cela Â« affreux\footnote{Voir \texttt{\detokenize{http://tex.stackexchange.com/questions/161796/ugly-bond-joints-in-chemfig}}} Â», il est dĂ©sormais possible de raccorder les liaisons simples entres-elles moyennant un temps de compilation lĂ©gĂ¨rement augmentĂ©. La \chevrons{clĂ©} boolĂ©enne \CFkv{bond join}{boolĂ©en} permet, lorsqu'elle est \CFval{true} d'activer cette fonctionnalitĂ©. La valeur par dĂ©faut est \CFval{false} qui est le comportement prĂ©fĂ©rable.

\exemple{Raccord entre liaisons simples}/\setchemfig{bond style={line width=3pt}}
\chemfig{-[1]-[7]} et
\chemfig[bond join=true]{-[1]-[7]}/

Le problĂ¨me est encore plus Ă©vident avec les liaisons de Cram pleines lorsqu'elles se connectent Ă&nbsp; une liaison simple ou Ă&nbsp; une autre liaison de Cram. LĂ&nbsp; encore, mettre \CFkey{bond join} Ă&nbsp; \CFval{true} permet des raccords plus esthĂ©tiques.\label{joinCram}

\exemple{Raccord avec liaisons de Cram}/
\chemfig{&lt;[:-20]&gt;[:50]}\qquad
\chemfig[bond join]{&lt;[:-20]&gt;[:50]}
\medbreak
\setchemfig{cram width=5pt}
\chemfig{&lt;[:-45]-[:30,,,,line width=5pt]&gt;[:-10]}\qquad
\chemfig[bond join]{&lt;[:-45]-[:30,,,,line width=5pt]&gt;[:-10]}/

Il est important de noter que les deux points suivants
\begin{itemize}
	\item lorsque \CFkey{bond join} est \CFval{true}, la liaison de Cram est tracĂ©e sans contour : elle paraitra donc lĂ©gĂ¨rement plus fine (l'importance dĂ©pendant du paramĂ¨tre \CFval{line width});
	\item \CFkey{bond join} est sans effet entre une liaison simple et une liaison de Cram lorque les 2 sommets qui forment la base du triangle de la liaison de Cram sont au dehors de l'espace dĂ©limitĂ© par les 2 bords parallĂ¨les de la liaison simple. MathĂ©matiquement, c'est la cas lorsque $d \cos\alpha&gt;w$, oĂą $d$ est la valeur de \CFval{cram width}, $w$ est l'Ă©paisseur de la liaison simple et $\alpha$ est l'angle entre les 2 liaisons.
\end{itemize}

\exemple{Raccord avec liaisons de Cram}/
\setchemfig{cram width=5pt, bond join}
\chemfig{-[,,,,line width=3pt]&gt;[:30]}\qquad
\chemfig{-[,,,,line width=3pt]&gt;[:65]}/

\section{Valeurs par dĂ©faut}
Au dĂ©but de chaque molĂ©cule, les valeurs par dĂ©faut des arguments optionnels des liaisons sont initialisĂ©es. Elles valent :
\begin{itemize}
	\item 0\degres{} pour l'angle des liaisons;
	\item 1 pour le coefficient multiplication des longueurs;
	\item \Verb-&lt;vide&gt;- pour les  numĂ©ros de dĂ©part et d'arrivĂ©e des atomes, ce qui laisse Ă&nbsp; \CF le soin de calculer ceux-ci en fonction de l'angle de la liaison;
	\item \Verb-&lt;vide&gt;- pour le paramĂ¨tre passĂ© Ă&nbsp; \TIKZ.
\end{itemize}

On peut changer ces valeurs par dĂ©faut pour toute la molĂ©cule en dĂ©butant le code de la molĂ©cule par
\begin{center}
	\Verb/[&lt;angle&gt;,&lt;coeff&gt;,&lt;n1&gt;,&lt;n2&gt;,&lt;code tikz&gt;]/
\end{center}

Ainsi, si le code de la molĂ©cule commence par \verb-[:20,1.5]-, alors toutes les liaisons auront un angle de 20\degres{} par dĂ©faut et les distances interatomes une longueur qui vaut 1,5 fois la distance interatomes par dĂ©faut. On peut Ă&nbsp; tout moment ignorer ces valeurs par dĂ©faut en spĂ©cifiant un argument optionnel, comme pour la liaison qui suit l'atome Â«CÂ» de cet exemple :
\exemple{Ă‰crasement des valeurs par dĂ©faut}|\chemfig{[:20,1.5]A-B-C-[:-80,0.7]D-E-F}|

Si on Ă©crit un improbable \verb-[1,1.5,2,2,red,thick]-, sauf indication contraire, toutes les liaisons auront un angle de 45\degres{} avec l'horizontale, les distances interatomes vaudront 1,5 fois la distance par dĂ©faut, les liaisons partiront et arriveront sur le deuxiĂ¨me atome de chaque groupe et seront rouges et Ă©paisses :
\exemple{Valeurs par dĂ©faut}|\chemfig{[1,1.5,2,2,red,thick]ABC-DEF=GHI}|

\section{Ramifications}
\subsection{Principe}
Jusqu'Ă&nbsp; prĂ©sent, toutes les molĂ©cules Ă©taient linĂ©aires, ce qui est rare. On peut attacher une sous molĂ©cule Ă&nbsp; un atome faisant suivre cet atome d'un \Verb-&lt;code&gt;- entre parenthĂ¨ses. Ce \Verb-&lt;code&gt;- est le code d'une sous molĂ©cule qui viendra d'attacher sur l'atome.

Dans cet exemple, la sous molĂ©cule Â«\verb/-[1]W-X/Â» vient s'attacher sur l'atome Â«BÂ» :
\exemple{Ramification}|\chemfig{A-B(-[1]W-X)-C}|

On peut avoir plusieurs sous molĂ©cules qui viennent s'attacher sur un mĂŞme atome. Il suffit de le faire suivre de plusieurs parenthĂ¨ses contenant le code de chaque sous molĂ©cule :
\exemple{Ramifications multiples}|\chemfig{A-B(-[1]W-X)(-[6]Y-[7]Z)-C}|

Le code de chaque sous molĂ©cule peut dĂ©finir ses propres valeurs par dĂ©faut qui seront valables dans toute l'Ă©tendue de la sous molĂ©cule. Ici, on attache sur Â«BÂ» une sous molĂ©cule Â«\verb/[:60]-D-E/Â» dont l'angle par dĂ©faut vaut 60\degres{} absolus. On attache Ă©galement sur Â«BÂ» une sous molĂ©cule Â«\verb/[::-30,1.5]-X-Y/Â» dont l'angle par dĂ©faut vaut 30\degres{} de moins que celui de la liaison prĂ©cĂ©dente (qui Ă©tait celle qui allait de Â«AÂ» Ă&nbsp; Â«BÂ») et dont la distance interatome est 1,5 fois celle par dĂ©faut :
\exemple{Valeur par dĂ©faut dans les ramifications}|\chemfig{A-B([:60]-D-E)([::-30,1.5]-X-Y)-C}|

Maintenant, que se passe t-il si au dĂ©but de la molĂ©cule principale, on Ă©crit Â«\verb/[:-45]/Â» :
\exemple{Influence de l'angle par dĂ©faut}|\chemfig{[:-45]A-B([:60]-D-E)([::-30,1.5]-X-Y)-C}|

On constate que l'angle entre la liaison \verb/B-C/ et la liaison \verb/B-X/ reste de 30\degres{} puisqu'il s'agissait d'un angle relatif pour la sous molĂ©cule Â«\verb/-X-Y/Â». Par contre, la branche Â«\verb/-D-E/Â» reste inclinĂ©e Ă&nbsp; 60\degres{} avec l'horizontale et n'a pas suivi le mouvement de rotation imprimĂ© par l'angle de $-45\degres$ du dĂ©but, ce qui est normal puisque Â«\verb/-D-E/Â» a un angle absolu. Pour faire pivoter la totalitĂ© d'une molĂ©cule il est donc important que tous les angles soient relatifs.

\subsection{Imbrication}
Les sous molĂ©cules peuvent ĂŞtre imbriquĂ©es, et les rĂ¨gles vues au paragraphe prĂ©cĂ©dent restent valables :
\exemple{Ramifications imbriquĂ©es}|\chemfig{A-B([1]-X([2]-Z)-Y)(-[7]D)-C}|

\subsection{MĂ©thode}
Mettons maintenant que nous voulions dessiner la molĂ©cule d'anhydride d'acide :
\chemfig{R-C(=[::+60]O)-[::-60]O-[::-60]C(=[::+60]O)-[::-60]R}

La meilleure mĂ©thode pour y arriver est de choisir le plus long chemin. Ici nous pouvons par exemple dessiner le chemin \verb/R-C-O-C-R/ en tenant compte des angles et en n'utilisant que les angles relatifs :
\exemple{Structure de l'anhydride d'acide}|\chemfig{R-C-[::-60]O-[::-60]C-[::-60]R}|

Partant de cette structure, il suffit de rajouter deux sous molĂ©cules Â«\verb/=O/Â» sur les atomes de carbone :
\exemple{Anhydride d'acide}|\chemfig{R-C(=[::+60]O)-[::-60]O-[::-60]C(=[::+60]O)-[::-60]R}|

N'ayant utilisĂ© que des angles relatifs, on peut faire pivoter cette molĂ©cule, en spĂ©cifiant un angle par dĂ©faut de 75\degres{} par exemple :
\exemple[70]{Rotation de la molĂ©cule}|\chemfig{[:75]R-C(=[::+60]O)-[::-60]O-[::-60]C(=[::+60]O)-[::-60]R}|

\section{Lier des atomes Ă©loignĂ©s}
Nous avons vu comment relier des atomes \emph{qui se suivent dans le code}. Il est parfois indispensable de relier entre-eux des atomes ne se suivant pas dans le code. Appelons Â«liaisons distantesÂ» ces liaisons particuliĂ¨res.

Prenons cette molĂ©cule :
\exemple{Structure ramifiĂ©e}|\chemfig{A-B(-[1]W-X)(-[7]Y-Z)-C}|

Et mettons que l'on veuille relier les atomes \verb/X/ et \verb/C/. Dans ce cas, \CF permet de poser un Â«crochetÂ» \emph{immĂ©diatement} aprĂ¨s l'atome qui nous intĂ©resse. Le caractĂ¨re utilisĂ© pour poser ce crochet est Â«\verb-?-Â», pour sa ressemblance avec un crochet. Ainsi, si l'on Ă©crit \verb/X?/, alors, l'atome \verb/X/ portera ce crochet. Par la suite dans le code, tous les atomes suivis d'un \verb-?- seront reliĂ©s Ă&nbsp; \verb/X/ :
\exemple{Liaison Ă©loignĂ©e}|\chemfig{A-B(-[1]W-X?)(-[7]Y-Z)-C?}|

On aurait pu relier d'autres atomes Ă&nbsp; X en les faisant suivre de \verb-?-. Ici, ce sont les atomes \verb-C- et \verb-Z- :
\exemple{Plusieurs liaisons Ă©loignĂ©es}|\chemfig{A-B(-[1]W-X?)(-[7]Y-Z?)-C?}|

Maintenant, imaginons que nous devions laisser ces liaisons distantes \verb/X-C/ et \verb/X-Z/, tout en ajoutant une autre : \verb/A-W/. Il faut donc poser deux crochets \emph{diffĂ©rents}, l'un sur \verb/A/ et l'autre sur \verb/X/. En fait, le caractĂ¨re \verb/?/ a un argument optionnel :
\begin{center}
	\Verb/?[&lt;nom&gt;,&lt;liaison&gt;,&lt;tikz&gt;]/
\end{center}
oĂą chaque champ prend sa valeur par dĂ©faut s'il est vide :
\begin{itemize}
	\item le \Verb-&lt;nom&gt;- 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-&lt;liaison&gt;- 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-&lt;liaison&gt;- est constituĂ©e des caractĂ¨res codant la liaison, Ă&nbsp; condition que ces caractĂ¨res soient \emph{entre accolades};
	\item \Verb-&lt;tikz&gt;- sera passĂ© directement Ă&nbsp; \TIKZ comme on l'a vu avec les liaisons classiques.
\end{itemize}

Voici notre molĂ©cule avec les liaisons distantes requises, puis avec les liaisons \verb/A-W/ et \verb/X-C/ personnalisĂ©es :
\exemple{Plusieurs liaisons Ă©loignĂ©es}|\chemfig{A?[a]-B(-[1]W?[a]-X?[b])(-[7]Y-Z?[b])-C?[b]}\par\medskip
	\chemfig{A?[a]-B(-[1]W?[a,2,red]-X?[b])(-[7]Y-
	Z?[b,1,{line width=2pt}])-C?[b,{&gt;},blue]}|

On peut Ă©crire plusieurs crochets diffĂ©rents aprĂ¨s un atome. Mettons que dans ce pentagone incomplet, on veuille relier \verb/A-E/, \verb/A-C/ et \verb/E-C/ :
\exemple{Un cycle incomplet}|\chemfig{A-[:-72]B-C-[:72]D-[:144]E}|

Alors, il faut procĂ©der de cette faĂ§on :
\exemple{Plusieurs liaisons Ă©loignĂ©es}|\chemfig{A?[a]-[:-72]B-C?[a]?[b]-[:72]D-[:144]E?[a]?[b]}|

\section{Cycles}
L'exemple prĂ©cĂ©dent montre comment tracer un polygone rĂ©gulier, mais la mĂ©thode est fastidieuse puisque les angles dĂ©pendent du nombre de cĂ´tĂ© du polygone.

\subsection{Syntaxe}
\CF peut tracer des polygones rĂ©guliers facilement. L'idĂ©e est d'attacher un cycle Ă&nbsp; un \Verb/&lt;atome&gt;/ extĂ©rieur Ă&nbsp; ce cycle avec cette syntaxe :
\begin{center}
	\Verb/&lt;atome&gt;*&lt;n&gt;(&lt;code&gt;)/
\end{center}
\Verb/&lt;n&gt;/ est le nombre de cĂ´tĂ©s du polygone et le \Verb/&lt;code&gt;/ reprĂ©sente les liaisons et les groupes d'atomes qui constituent ses sommets et arĂŞtes. Ce code \emph{doit} commencer par une liaison puisque l'atome se trouve Ă&nbsp; l'extĂ©rieur du cycle.

Voici un 5-cycle, attachĂ© a l'atome Â«\verb/A/Â» :
\exemple{5-cycle}|\chemfig{A*5(-B=C-D-E=)}|

On peut Ă©galement dessiner un cycle avec un, plusieurs, ou tous les groupes d'atomes vides, comme c'est le cas pour les dessins hors des cycles :
\exemple{5-cycle avec groupes vides}|\chemfig{*5(-=--=)}|

Un cycle peut ĂŞtre incomplet :
\exemple{5-cycle incomplet}|\chemfig{*5(-B=C-D)}|
Si un cycle a un code qui contient trop de liaisons et de groupes d'atomes pour le nombre de sommets spĂ©cifiĂ©s, toutes les liaisons et les groupes au delĂ&nbsp; du maximum admissible sont ignorĂ©s :
\exemple{5-cycle tronquĂ©}|\chemfig{A*5(-B=C-D-E=F-G=H-I)}|

Il est possible de dessiner un cercle ou un arc de cercle Ă&nbsp; l'intĂ©rieur d'un cycle. Pour cela, on utilise cette syntaxe :
\begin{center}
	\Verb/&lt;atome&gt;**[&lt;angle 1&gt;,&lt;angle 2&gt;,&lt;tikz&gt;]&lt;n&gt;(&lt;code&gt;)/
\end{center}
oĂą chaque champ de l'argument optionnel prend sa valeur par dĂ©faut s'il est vide :
\begin{itemize}
	\item \Verb/&lt;angle 1&gt;/ et \Verb/&lt;angle 2&gt;/ sont les angles absolus de dĂ©part et de fin de l'arc de cercle. Ceux-ci valent 0\degres{} et 360\degres{} de telle sorte qu'un cercle complet est tracĂ© par dĂ©faut;
	\item \Verb/&lt;tikz&gt;/ est le code qui sera passĂ© Ă&nbsp; \TIKZ pour le dessin de l'arc de cercle.
\end{itemize}

\exemple{Cycles et arcs de cercle}|\chemfig{**6(------)}\quad
\chemfig{**[30,330]5(-----)}\quad
\chemfig{**[0,270,dash pattern=on 2pt off 2pt]4(----)}|

\subsection{Position angulaire}
\subsubsection{Au dĂ©part}
Comme on le voit dans les exemples ci-dessous, la rĂ¨gle est que l'atome d'attache Â«\verb/A/Â» se trouve toujours au sud ouest du cycle. De plus, le cycle est toujours construit dans le sens trigonomĂ©trique et la derniĂ¨re liaison tombe verticalement sur l'atome de rattachement :
\exemple{Position angulaire des cycles}|\chemfig{A*4(-B-C-D-)}\qquad\chemfig{A*6(------)}|

Si cette position angulaire ne convient pas, il est possible de spĂ©cifier via l'argument optionnel du dĂ©but de la molĂ©cule un autre angle par dĂ©faut. Voici un 6-cycle qui a Ă©tĂ© pivotĂ© de $+30\degres$, de $-30\degres$ puis de $+60\degres$ :
\exemple[55]{Rotation des cycles}|\chemfig{[:30]A*6(------)}\qquad
\chemfig{[:-30]A*6(------)}\qquad
\chemfig{[:60]A*6(------)}|

\subsubsection{AprĂ¨s une liaison}
Lorsqu'un cycle ne commence pas une molĂ©cule et qu'une (ou plusieurs) liaisons ont Ă©tĂ© auparavant tracĂ©es, la position angulaire par dĂ©faut change : le cycle est tracĂ© de telle sorte que la liaison qui arrive sur l'atome de rattachement soit la bissectrice du premier et du dernier cĂ´tĂ© du cycle.

Voici un  cas simple :
\exemple{Liaison arrivant sur un cycle}|\chemfig{A-B*5(-C-D-E-F-)}|

La rĂ¨gle reste valable, quelque soit l'angle de la liaison prĂ©cĂ©dente :
\exemple{Liaisons arrivant sur un cycle}|\chemfig{A-[:25]B*4(----)}\vskip5pt
\chemfig{A=[:-30]*6(=-=-=-)}|

\subsection{Ramifications partant d'un cycle}
Pour faire partir une ramification d'un des sommets du cycle, on emploie la syntaxe dĂ©jĂ&nbsp; vue :
\begin{center}
	\Verb/&lt;atome&gt;(&lt;code&gt;)/
\end{center}
oĂą le \Verb/&lt;code&gt;/ est celui de la sous molĂ©cule et l'\Verb-&lt;atome&gt;- occupe le sommet. Une chose particuliĂ¨re aux cycles est que l'angle par dĂ©faut de la sous molĂ©cule n'est pas 0\degres{} mais est calculĂ© de telle sorte qu'il soit la bissectrice des cĂ´tĂ©s partant du sommet :
\exemple{Ramification partant d'un cycle}|\chemfig{X*6(-=-(-A-B=C)=-=-)}|

On peut faire partir une sous molĂ©cule du premier sommet du cycle, ainsi que de tous les autres sommets :
\exemple{Cycle et ramifications}|\chemfig{*5((-A=B-C)-(-D-E)-(=)-(-F)-(-G=)-)}|

Si on souhaite que la liaison partant d'un sommet ne soit pas la bissectrice de ses cĂ´tĂ©s, on peut jouer sur le paramĂ¨tre optionnel global ou le paramĂ¨tre optionnel de la liaison :
\exemple[50]{Ramifications et angles spĂ©cifiĂ©s}|\chemfig{*5(---([:90]-A-B)--)}\qquad
\chemfig{*5(---(-[:90]A-B)--)}\qquad
\chemfig{*5(---([::+0]-A-B)--)}|

Il est intĂ©ressant de constater au troisiĂ¨me exemple que si on spĂ©cifie un angle relatif de 0\degres, la liaison se fait dans le prolongement de la liaison qui prĂ©cĂ©dait dans le cycle. C'est la rĂ¨gle de la page \pageref{angle.relatif} qui spĂ©cifiait que l'angle de rĂ©fĂ©rence Ă©tait celui de la derniĂ¨re liaison tracĂ©e.

On peut dĂ©sormais lier des cycles entre eux par des liaisons :
\exemple{Cycles liĂ©s}|\chemfig{*6(--(-*5(----(-*4(----))-))----)}|

\subsection{Cycles emboĂ®tĂ©s}
Pour Â«collerÂ» 2 cycles entre eux, la syntaxe est lĂ©gĂ¨rement diffĂ©rente : on identifie le sommet d'oĂą va commencer l'autre cycle. Il suffit de faire suivre ce sommet par la syntaxe habituelle d'un cycle. Voici par exemple un 5-cycle qui part du deuxiĂ¨me sommet d'un 6-cycle :
\exemple{Cycles imbriquĂ©s}|\chemfig{A*6(-B*5(----)=-=-=)}|

On remarque que le cycle qui vient se greffer sur le cycle principal a une position angulaire telle que deux de leurs cĂ´tĂ© coĂŻncident. De plus, le 5-cycle n'a que 4 liaisons Â«\verb/----/Â». En effet, la 5\ieme{} serait inutile puisqu'il s'agit du deuxiĂ¨me cĂ´tĂ© du 6-cycle qui est dĂ©jĂ&nbsp; tracĂ©.

Il est bien entendu possible de coller plusieurs cycles entre eux :
\exemple{Plusieurs cycles imbriquĂ©s}|\chemfig{*5(--*6(-*4(-*5(----)--)----)---)}|

Il y a un cas oĂą on doit employer une ruse. On voit sur cet exemple que le quatriĂ¨me cĂ´tĂ© du deuxiĂ¨me 5-cycle vient boucler sur le centre de l'atome Â«\verb-E-Â».
\exemple{Dessin non parfait}|\chemfig{A-B*5(-C-D*5(-X-Y-Z-)-E-F-)}|

Ceci est normal puisque le deuxiĂ¨me 5-cycle (qui part de l'atome Â«\verb-D-Â») est dessinĂ© \emph{avant} que \CF n'ait pris connaissance de l'atome Â«\verb-E-Â». Dans ce cas, il faut se servir de deux crochets pour tracer la liaison \verb/Z-E/ :
\exemple{Liaison distante et cycle}|\chemfig{A-B*5(-C-D*5(-X-Y-Z?)-E?-F-)}|

On aurait aussi pu utiliser un \verb-\phantom{E}- au dernier sommet du 5-cycle :
\exemple{Utilisation de \string\phantom}/\chemfig{A-B*5(-C-D*5(-X-Y-Z-\phantom{E})-E-F-)}/

\subsection{Cycles et groupes d'atomes}
Il faut prendre des prĂ©cautions avec les cycles lorsque un ou plusieurs sommets sont constituĂ©s de plusieurs atomes :
\exemple{Cycle et groupes d'atomes}|\chemfig{AB*5(-CDE-F-GH-I-)}|

Pour que le cycle ait une forme rĂ©guliĂ¨re, il faut passer outre le mĂ©canisme de \CF qui calcule automatiquement les atomes de dĂ©part et d'arrivĂ©e des liaisons. Ici, il faut relier \verb/C-F/ et \verb/F-G/ en le spĂ©cifiant avec l'argument optionnel de ces liaisons :
\exemple{Atomes de dĂ©part et d'arrivĂ©e imposĂ©s}|\chemfig{AB*5(-CDE-[,,1]F-[,,,1]GH-I-)}|

\subsection{Centre du cycle}\label{centre_cycle}
Chaque cycle porte en son centre un nĹ“ud de dimension nulle dont le nom est \Verb|centrecycle&lt;n&gt;| oĂą \Verb|&lt;n&gt;| est le numĂ©ro du cycle, entendu que les cycles sont numĂ©rotĂ©s dans l'ordre oĂą ils sont tracĂ©s. Il est possible d'afficher le numĂ©ro de chaque cycle en mettant Ă&nbsp; vrai la \chevrons{clĂ©} boolĂ©enne \CFkey{show cntcycle}.

La \chevrons{clĂ©} boolĂ©enne \CFkey{autoreset cntcycle}, vraie par dĂ©faut, remet Ă&nbsp; 0 le compteur de cycle au dĂ©but de chaque molĂ©cule tracĂ©e (c'est-Ă&nbsp;-dire Ă&nbsp; chaque appel de \verb|\chemfig|).

\exemple{Centre de cycle}/\chemfig{*5(---(-*3(---))--)}
\chemmove{\draw[red](cyclecenter1)to[out=20,in=-45](cyclecenter2);}
\qquad
\chemfig{*6(-=-=-=)}
\chemmove{%
	\node[at=(cyclecenter1)](){.+}
	node [at=(cyclecenter1),shift=(120:1.75cm)](end){\printatom{R^1}};
	\draw[-,shorten &lt;=.5cm](cyclecenter1)--(end);
}/

\section{ReprĂ©sentation des dĂ©placements d'Ă©lectrons}\label{mecanismes-reactionnels}
Depuis la version 0.3 de \CF, on peut reprĂ©senter les dĂ©placements d'Ă©lectrons des effets mĂ©somĂ¨res ou des mĂ©canismes rĂ©actionnels. Cela est rendu possible en marquant le point de dĂ©part et le point d'arrivĂ©e de la flĂ¨che que l'on utilise pour indiquer la migration des Ă©lectrons Ă&nbsp; l'aide de la syntaxe Â«\Verb-@{&lt;argument&gt;}-Â». Cette syntaxe permet de poser un nĹ“ud (au sens de \TIKZ) en rendant ce nĹ“ud accessible en dehors de l'argument de la commande \verb-\chemfig- grĂ˘ce Ă&nbsp; l'option Â«\texttt{remember picture}Â» qui est passĂ©e Ă&nbsp; tous les environnements Â«\falseverb{tikzpicture}Â». Cela suppose que le visualiseur prenne en charge le Â«\falseverb{picture remembering}Â» et que la compilation soit lancĂ©e deux fois.

Deux cas de figure peuvent se prĂ©senter, on peut poser :
\begin{itemize}
	\item un nĹ“ud de dimension nulle sur une liaison en utilisant la syntaxe Â«\Verb-@{&lt;nom&gt;,&lt;coeff&gt;}-Â» placĂ©e immĂ©diatement au dĂ©but de l'argument optionnel de la liaison concernĂ©e sans ĂŞtre suivi d'une virgule s'il y a un premier argument optionnel. Dans ce cas, le nĹ“ud portera le nom Â«\Verb-&lt;nom&gt;-Â» et le \Verb-&lt;coeff&gt;-, compris entre 0 et 1, dĂ©terminera oĂą le nĹ“ud se situera sur la liaison. Si on utilise Â«\Verb-@{&lt;nom&gt;}-Â», le \Verb-&lt;coeff&gt;- prend la valeur de 0.5 par dĂ©faut ce qui signifie que le nĹ“ud est posĂ© au milieu de la liaison;
	\item un nĹ“ud sur un atome en utilisant la syntaxe Â«\Verb-@{&lt;nom&gt;}-Â» immĂ©diatement avant l'atome concernĂ©. Dans ce cas, le nĹ“ud a exactement le mĂŞme encombrement que l'atome, il peut notamment ĂŞtre vide et donc avoir des dimensions nulles.
\end{itemize}
Une fois que la commande \falseverb{\chemfig} a dessinĂ© la (ou les) molĂ©cule(s) et a posĂ© les nĹ“uds avec la syntaxe dĂ©crite ci dessus, on peut relier ces nĹ“uds entre eux avec les instructions de \TIKZ. Ces instructions seront placĂ©es dans l'argument de la commande \verb-\chemmove-\footnote{En rĂ©alitĂ©, la commande \texttt{\string\chemmove} place son argument dans un environnement Â«\falseverb{tikzpicture}Â» dans lequel les options sont Â«\texttt{remember picture,overlay}Â».} et auront la syntaxe suivante si par exemple, on doit relier un nĹ“ud portant le nom Â«\Verb-&lt;nom1&gt;-Â» au nĹ“ud portant le nom Â«\Verb-&lt;nom2&gt;-Â» :
\begin{center}
	\Verb|\chemmove[&lt;opt&gt;]{\draw[&lt;opt tikz&gt;](&lt;nom1&gt;)&lt;link tikz&gt;(&lt;nom2&gt;);}|
\end{center}

L'argument optionnel \Verb-&lt;opt&gt;- de la commande \verb-\chemmove- sera ajoutĂ© Ă&nbsp; l'argument de l'environnement \falseverb{tikzpicture} dans lequel seront tracĂ©es les liaisons entre les nĹ“uds. Les instructions \Verb-&lt;opt tikz&gt;- et \Verb-&lt;link tikz&gt;- sont exhaustivement dĂ©crites dans la documentation de l'extension \TIKZ.

\subsection{Effets mĂ©somĂ¨res}
Pour fixer les idĂ©es prenons l'exemple d'un effet mĂ©somĂ¨re impliquant une double liaison et un doublet non liant conjuguĂ©s. CommenĂ§ons par la possible dĂ©localisation des Ă©lectrons de la double liaison. On va poser un nĹ“ud nommĂ© Â«dbÂ» (double bond) au milieu de la double liaison et un nĹ“ud nommĂ© Â«a1Â» sur l'extrĂ©mitĂ© de la double liaison.

Les macros \verb|\schemestart|, \verb|\schemestop|, \verb|\arrow| et \verb|\+| sont exposĂ©es au chapitre \ref{schemas}, Ă&nbsp; partir de la page \pageref{schemas}.

\exemple{Effet mĂ©somĂ¨re 1}/\schemestart
	\chemfig{@{a1}=_[@{db}::30]-[::-60]\charge{90=\|}{X}}
	\arrow{&lt;-&gt;}
	\chemfig{\chemabove{\vphantom{X}}{\ominus}-[::30]=_[::-60]
	\chemabove{X}{\scriptstyle\oplus}}
\schemestop
	\chemmove{\draw(db).. controls +(100:5mm) and +(145:5mm).. (a1);}/

Comme on l'a dit, on remarque qu'il n'y pas de virgule derriĂ¨re le nĹ“ud posĂ© dans les arguments optionnels d'une liaison. On Ă©crit Â«\verb|=_[@{db}::30]|Â» et non pas Â«\verb|=_[@{db},::30]|Â» comme on serait tentĂ© de le faire.

Pour relier les nĹ“uds Â«dbÂ» et Â«a1Â», nous avons utilisĂ© la syntaxe suivante :
\begin{center}
	\Verb|\chemmove{\draw(db)..controls +(100:5mm) and +(145:5mm)..(a1);}|
\end{center}

Le style de flĂ¨che par dĂ©faut dans \verb|\chemmove| est Â«CFÂ». Dans cet exemple nous demandons une flĂ¨che (\verb/[-&gt;]/) 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 Ă&nbsp; 100\degres{} et 5~mm de Â«dbÂ» pour le premier et Ă&nbsp; 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 Ă&nbsp; 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}\charge{90=\|}{X}}
	\arrow{&lt;-&gt;}
	\chemfig{\chemabove{\vphantom{X}}{\ominus}-[::30]=_[::-60]
	\chemabove{X}{\scriptstyle\oplus}}
\schemestop
\chemmove{
    \draw(db)..controls +(100:5mm) and +(145:5mm)..(a1);
    \draw(dnl)..controls +(90:4mm) and +(45:4mm)..(sb);}/

Pour notre nouvelle flĂ¨che nous avons fixĂ© les points de contrĂ´le comme suit : un angle de 90\degres{} Ă&nbsp; 4~mm de Â«dnlÂ» et un angle de 45\degres{} Ă&nbsp; 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 Ă&nbsp; notre flĂ¨che.
\exemple{Effet mĂ©somĂ¨re 3}/\schemestart
	\chemfig{@{a1}=_[@{db}::30]-[@{sb}::-60]@{dnl}\charge{90=\|}{X}}
	\arrow{&lt;-&gt;}
	\chemfig{\chemabove{\vphantom{X}}{\ominus}-[::30]=_[::-60]
	\chemabove{X}{\scriptstyle\oplus}}
\schemestop
\chemmove[-&gt;]{% change le style de flĂ¨che
    \draw(db).. controls +(100:5mm) and +(145:5mm).. (a1);
    \draw[shorten &lt;=3pt,shorten &gt;=1pt](dnl) .. controls +(90:4mm)
          and +(45:4mm) .. (sb);}/

L'option Â«\verb|shorten &lt;=3pt|Â» indique que le point de dĂ©part de la flĂ¨che doit ĂŞtre raccourci de 3~pt de mĂŞme Â«\verb|shorten &gt;=2pt|Â» indique que le point d'arrivĂ© doit ĂŞtre raccourci de 2~pt.

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}\charge{90=\|}{X}}
	\arrow{&lt;-&gt;}
	\chemfig{\chemabove{\vphantom{X}}{\ominus}-[::30]=_[::-60]
	\chemabove{X}{\scriptstyle\oplus}}
\schemestop
\chemmove{
    \draw[-stealth,thin,dash pattern= on 2pt off 2pt,red]
        (db).. controls +(100:5mm) and +(145:5mm)..
        node[sloped,above] {$\pi$} (a1);
    \draw[shorten &lt;=3pt, shorten &gt;= 1pt]
        (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}\charge{45=\:}{X}}
\hspace{2cm}
\chemfig{@{x2}\charge{90=\|}{X}}
\chemmove{
    \draw[shorten &gt;=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 Ă&nbsp; 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}\charge{45=\:}{X}}
\hspace{2cm}
\chemfig{@{x2}\charge{90=\|}{X}}
\chemmove[shorten &lt;=4pt,shorten &gt;=4pt]{
    \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Ă© Ă&nbsp; 1~cm horizontalement de Â«x1Â» et 1,5~cm verticalement :
\exemple{Un seul point de contrĂ´le}/\chemfig{@{x1}\charge{45=\:}{X}}
\hspace{2cm}
\chemfig{@{x2}\charge{90=\|}{X}}
\chemmove[shorten &lt;=4pt,shorten &gt;=4pt]{
    \draw(x1.57).. controls +(1cm,.8cm).. (x2.90);}/

Dans ce cas nous plaĂ§ons un point de contrĂ´le Ă&nbsp; 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.

\subsection{MĂ©canismes rĂ©actionnels}
GrĂ˘ce Ă&nbsp; l'option \verb|remember picture| qui est passĂ©e Ă&nbsp; 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}\charge{90=\|,-90=\|}{O}-H}
	\+
	\chemfig{R-@{atoc}C([6]-OH)=[@{db}]O}
	\arrow(.mid east--){&lt;-&gt;[\chemfig{@{atoh}\chemabove{H}{\scriptstyle\oplus}}]}
\schemestop
\chemmove[shorten &lt;=2pt]{
	\draw(dnl)..controls +(90:1cm)and+(north:1cm)..(atoc);
	\draw[shorten &gt;=6pt](db)..controls +(north:5mm)and+(100:1cm)..(atoh);}/

L'utilisation de la commande \Verb|\chemabove{&lt;code&gt;}{&lt;matĂ©riel&gt;}| ne change pas les dimensions de la boĂ®te englobante du \Verb|&lt;code&gt;|. 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{} Ă&nbsp; 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}\charge{90=\|,-90=\|}{O}H}\hspace{1cm}
\chemfig{@{atoh}\chemabove{H}{\scriptstyle\oplus}}
\chemmove{
    \draw[shorten &lt;=2pt, shorten &gt;=7pt]
        (dnl).. controls +(south:1cm) and +(north:1.5cm).. (atoh);}/

Nous laissons le soin au lecteur d'Ă©crire la suite\ldots

\section{Ă‰crire un nom sous une molĂ©cule}\label{chemname}
Pour plus de commoditĂ©, \CF permet d'Ă©crire le nom d'une molĂ©cule sous celle-ci avec la commande
\begin{center}
	\Verb/\chemname[&lt;dim&gt;]{\chemfig{&lt;code de la molĂ©cule&gt;}}{&lt;nom&gt;}/
\end{center}

La \Verb-&lt;dimension&gt;-, qui vaut 1.5ex par dĂ©faut, sera insĂ©rĂ©e verticalement entre la \falseverb{ligne de base} de la molĂ©cule et le haut des lettres du \Verb-&lt;nom&gt;-. Le \Verb-&lt;nom&gt;- sera centrĂ© par rapport Ă&nbsp; la molĂ©cule mais ce \Verb-&lt;nom&gt;- ne peut pas contenir plusieurs paragraphes. Comme on le voit sur cet exemple : \chemname{\chemfig{H-O-H}}{\scriptsize\bfseries La molĂ©cule d'eau : $\mathrm{\mathbf{H_2O}}$}, le \Verb-&lt;nom&gt;- qui est affichĂ© sous la molĂ©cule est pris en compte dans la boĂ®te englobante mais uniquement en ce qui concerne sa dimension \emph{verticale}. L'encombrement horizontal du \Verb-&lt;nom&gt;- est toujours nul.

Voici une rĂ©action avec les noms sous les molĂ©cules :
\exemple*{Affichage du nom des molĂ©cules}/\schemestart
	\chemname{\chemfig{R-C(-[:-30]OH)=[:30]O}}{Acide carboxylique}
	\+
	\chemname{\chemfig{R'OH}}{Alcool}
	\arrow(.mid east--.mid west)
	\chemname{\chemfig{R-C(-[:-30]OR')=[:30]O}}{Ester}
	\+
	\chemname{\chemfig{H_2O}}{Eau}
\schemestop
\chemnameinit{}/

Il y a quelques contraintes avec cette commande. Pour en pendre conscience, supposons que l'on ait inversĂ© l'acide et l'alcool dans le membre de gauche :
\exemple*{Alignement des noms 1}/\schemestart
	\chemname{\chemfig{R'OH}}{Alcool}
	\+
	\chemname{\chemfig{R-C(-[:-30]OH)=[:30]O}}{Acide carboxylique}
	\arrow(.mid east--.mid west)
	\chemname{\chemfig{R-C(-[:-30]OR')=[:30]O}}{Ester}
	\+
	\chemname{\chemfig{H_2O}}{Eau}
\schemestop
\chemnameinit{}/

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-&lt;nom&gt;-, la commande \falseverb{\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{&lt;argument&gt;}- initialise cette plus grande profondeur avec le contenu de l'\Verb-&lt;argument&gt;-. Il convient donc :
\begin{itemize}
	\item d'Ă©crire \Verb-\chemnameinit{&lt;plus profonde molĂ©cule&gt;}- 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.
\end{itemize}

Il faut noter que les assignations concernant la plus grande profondeur sont globales si \CFkv{gchemname}{true}, ce qui est le comportement par dĂ©faut. Elles sont locales sinon.

Le code correct est donc d'utiliser \falseverb{\chemnameinit} avant et aprĂ¨s la rĂ©action :
\exemple*{Alignement des noms 2}/\chemnameinit{\chemfig{R-C(-[:-30]OH)=[:30]O}}
\schemestart
	\chemname{\chemfig{R'OH}}{Alcool}
	\+
	\chemname{\chemfig{R-C(-[:-30]OH)=[:30]O}}{Acide carboxylique}
	\arrow(.mid east--.mid west)
	\chemname{\chemfig{R-C(-[:-30]OR')=[:30]O}}{Ester}
	\+
	\chemname{\chemfig{H_2O}}{Eau}
\schemestop
\chemnameinit{}/

Enfin, pour Ă©crire un nom sur plusieurs lignes, la commande \verb|\\| rencontrĂ©e dans un \Verb-&lt;nom&gt;- effectue un retour Ă&nbsp; la ligne\footnote{Par contre, la commande \texttt{\textbackslash par} est interdite et provoquera une erreur Ă&nbsp; la compilation.} :
\exemple*{Nom sur 2 lignes}/\schemestart
	\chemname{\chemfig{R-C(-[:-30]OH)=[:30]O}}{Acide\\carboxylique}
	\+
	\chemname{\chemfig{R'OH}}{Alcool}
	\arrow(.mid east--.mid west)
	\chemname{\chemfig{R-C(-[:-30]OR')=[:30]O}}{Ester}
	\+
	\chemname{\chemfig{H_2O}}{Eau}
\schemestop
\chemnameinit{}/

Si l'on Ă©crit \Verb|\chemname*{&lt;nom&gt;}|, alors la macro ne tient pas compte des noms rencontrĂ©s prĂ©cĂ©demment.
\newpage

\part{Utilisation avancĂ©e}\label{utilisation.avancee}
\section{DĂ©coupage des atomes}\label{decoupage.atomes}
Le mĂ©canisme de dĂ©coupage en atomes, dĂ©jĂ&nbsp; dĂ©crit auparavant, fait s'Ă©tendre chaque atome jusqu'Ă&nbsp; la prochaine lettre majuscule ou l'un des caractĂ¨res {\ttfamily \boxedfalseverb{-} \boxedfalseverb{=} \boxedfalseverb{~} \boxedfalseverb{(} \boxedfalseverb{!} \boxedfalseverb{*} \boxedfalseverb{&lt;} \boxedfalseverb{&gt;} \boxedfalseverb{@}}

Dans certains cas, ce dĂ©coupage automatique produit des atomes incorrects ce qui peut se traduire par un affichage imparfait. Prenons cette molĂ©cule par exemple oĂą l'on remarquera que le caractĂ¨re Â«\texttt(Â» est mis entre accolade de faĂ§on Ă&nbsp; Ă©viter que \CF ne comprenne Ă&nbsp; tort qu'une ramification est crĂ©Ă©e :

\exemple*{AlcĂ¨ne}/\chemfig{CH_3CH_2-[:-60,,3]C(-[:-120]H_3C)=C(-[:-60]H)-[:60]C{(}CH_3{)}_3}/

On constate que la liaison qui arrive sur l'atome de carbone en haut Ă&nbsp; droite est trop courte. Cela se produit car, si l'on applique les rĂ¨gles de dĂ©coupage de \CF dans le groupe d'atomes en haut Ă&nbsp; droite, les atomes sont dĂ©coupĂ©s de cette faĂ§on : Â«\texttt{\detokenize{C{(}}}Â», Â«\texttt{\detokenize{C}}Â», Â«\texttt{\detokenize{H_3{)}_3}}Â». On comprend alors qu'en mode math, le premier atome qui contient une parenthĂ¨se ait une profondeur trop importante comme on le voit en rendant visibles les boĂ®tes contenant les atomes :
\begin{center}
\fboxsep=0pt
\renewcommand*\printatom[1]{\fbox{\ensuremath{\mathrm{#1}}}}%
\chemfig{CH_3CH_2-[:-60,,3]C(-[:-120]H_3C)=C(-[:-60]H)-[:60]C{(}CH_3{)}_3}%
\end{center}
Le caractĂ¨re Â«|Â» provoque la coupure de l'atome en cours Ă&nbsp; l'endroit oĂą il est rencontrĂ©. Ainsi, on peut Ă©crire \texttt{C\textcolor{red}{|}\detokenize{{(CH_3)_3}}} pour faire en sorte que \CF ne dĂ©coupe que 2 atomes ici : Â«\texttt{\detokenize{C}}Â» et Â«\texttt{\detokenize{{(CH_3)_3}}}. Le problĂ¨me de la liaison trop courte est ainsi rĂ©solu :

\exemple*{AlcĂ¨ne}/\chemfig{CH_3CH_2-[:-60,,3]C(-[:-120]H_3C)=C(-[:-60]H)-[:60]C|{(CH_3)_3}}/

\section{Affichage des atomes}\label{perso.affichage}
Une fois le dĂ©coupage en atomes effectuĂ©, la macro \falseverb{\printatom} est appelĂ©e de faĂ§on interne par \CF pour afficher chaque atome. Son unique argument est le code produisant l'affichage de l'atome (par exemple Â«\verb-H_3-Â»). Par dĂ©faut, cette macro se place en mode mathĂ©matique et affiche son argument avec la police mathĂ©matique Â«rmÂ». Elle est dĂ©finie par le code suivant :
\begin{itemize}
	\item \verb|\newcommand*\printatom[1]{\ensuremath{\mathrm{#1}}}|\qquad en compilant avec \LaTeX{}
	\item \verb|\def\printatom#1{\ifmmode\rm#1\else$\rm#1$\fi}|\qquad en compilant avec $\varepsilon$\TeX{} ou Con\TeX tX.
\end{itemize}\medskip

On peut modifier le code de cette macro pour personnaliser l'affichage de atomes. Dans l'exemple ci-dessous, on redĂ©finit \falseverb{\printatom} de faĂ§on Ă&nbsp; ce que chaque atome soit contenu dans une boĂ®te rectangulaire :
\exemple{RedĂ©finition de \string\printatom}/\fboxsep=1pt
\renewcommand*\printatom[1]{\fbox{\ensuremath{\mathrm{#1}}}}
\chemfig{H_3C-C(=[:30]O)(-[:-30]OH)}/

Voici comment la redĂ©finir pour utiliser de la police Â«sfÂ» du mode math :
\exemple{Atomes affichĂ©s en police Â«sfÂ»}/\renewcommand*\printatom[1]{\ensuremath{\mathsf{#1}}}
\chemfig{H_3C-C(=[:30]O)(-[:-30]OH)}/

\section{ParamĂ¨tres passĂ©s Ă&nbsp; tikz}\label{arguments.optionnels}
La \chevrons{clĂ©} \CFkey{chemfig style} contient des instructions \TIKZ qui seront passĂ©es Ă&nbsp; l'environnement \falseverb{tikzpicture} dans lequel est dessinĂ©e la molĂ©cule. Par ailleurs, la \chevrons{clĂ©} \CFkey{atom style} contient des instructions \TIKZ qui seront exĂ©cutĂ©es lors du dessin de chaque nĹ“ud; ces instructions sont ajoutĂ©es Ă&nbsp; la fin de \texttt{every node/.style\{&lt;argument&gt;\}}, c'est-Ă&nbsp;-dire aprĂ¨s les instructions suivantes : Â«{\ttfamily anchor=base,inner sep=0pt,outer sep=0pt,minimum size=0pt}Â».

Par l'intermĂ©diaire de \CFkey{chemfig style}, on peut choisir par exemple la couleur gĂ©nĂ©rale ou l'Ă©paisseur des lignes :
\exemple{Choix du style}/\chemfig{A-B-[2]C}\par\medskip
\chemfig[chemfig style={line width=1.5pt}]{A-B-[2]C}\par\medskip
\chemfig[chemfig style=red]{A-B-[2]C}/

Avec \CFkey{node style}, on peut choisir la couleur des nĹ“ud dessinĂ©s par \TIKZ, modifier l'inclinaison du dessin ou changer l'Ă©chelle :
\exemple{Choix des styles}/\chemfig{A-B-[2]C}\par\medskip
\setchemfig{atom style=red}\chemfig{A-B-[2]C}\par\medskip
\setchemfig{atom style={rotate=20}}\chemfig{A-B-[2]C}\par\medskip
\setchemfig{atom style={scale=0.5}}\chemfig{A-B-[2]C}/

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 Â«Ă&nbsp; gaucheÂ» ou Â«Ă&nbsp; droiteÂ» de la ligne thĂ©orique lorsqu'on parcourt la liaison dans le sens du tracĂ©.

Pour dĂ©porter la liaison vers la gauche, il suffit d'Ă©crire Â«\verb-=^-Â» et pour la dĂ©porter vers la droite Â«\verb-=_-Â» :
\exemple{Liaisons doubles dĂ©portĂ©es}/\chemfig{A-=-B}\par
\chemfig{A-=^-B}\par
\chemfig{A-=_-B}/

Dans les cycles, les liaisons doubles sont automatiquement dĂ©portĂ©es vers la gauche. On peut cependant les dĂ©porter vers la droite en le spĂ©cifiant avec Â«\verb-=_-Â» :
\exemple{Liaisons doubles dĂ©portĂ©es et cycles}/\chemfig{*6(-=-=-=)}\qquad
\chemfig{*6(-=_-=_-=_)}/

Les liaisons dĂ©portĂ©es sont particuliĂ¨rement utiles dans le tracĂ© de formules topologiques de molĂ©cules comprenant chaĂ®nes carbonĂ©es avec des liaisons doubles. Elles permettent d'avoir une ligne brisĂ©e continue, alors que cette ligne brisĂ©e serait discontinue avec les liaisons doubles normales :
\exemple{Liaisons dĂ©portĂ©es et formules topologiques}/\chemfig{-[:30]=[:-30]-[:30]=[:-30]-[:30]}\par
\chemfig{-[:30]=^[:-30]-[:30]=^[:-30]-[:30]}\par
\chemfig{-[:30]=_[:-30]-[:30]=_[:-30]-[:30]}/

\section{Liaisons doubles dĂ©localisĂ©es}
Il est parfois nĂ©cessaire de tracer une liaison double dont un trait serait plein et l'autre en pointillĂ©. Cette fonctionnalitĂ© n'est pas codĂ©e en dur dans \CF puisque \TIKZ, avec sa librairie Â«decorations.markingsÂ» le rend possible.

\exemple*{Liaisons dĂ©localisĂ©es}|\catcode`\_=11
\tikzset{
	ddbond/.style args={#1}{
		draw=none,
		decoration={%
			markings,
			mark=at position 0 with {
				\coordinate (CF_startdeloc) at (0,\dimexpr#1\CF_doublesep/2)
				coordinate (CF_startaxis) at (0,\dimexpr-#1\CF_doublesep/2);
				},
			mark=at position 1 with {
				\coordinate (CF_enddeloc) at (0,\dimexpr#1\CF_doublesep/2)
				coordinate (CF_endaxis) at (0,\dimexpr-#1\CF_doublesep/2);
				\draw[dash pattern=on 2pt off 1.5pt] (CF_startdeloc)--(CF_enddeloc);
				\draw (CF_startaxis)--(CF_endaxis);
				}
			},
		postaction={decorate}
	}
}
\catcode`\_8
\chemfig{A-[,,,,ddbond={+}]B-[,,,,ddbond={-}]C}|

\section{Sauvegarde d'une sous molĂ©cule}\label{definesubmol}
\CF est capable de sauvegarder un \Verb-&lt;code&gt;- sous forme d'un alias pour le rĂ©utiliser sous forme compacte dans le code d'une molĂ©cule. Ceci est particuliĂ¨rement utile lorsque le \Verb-&lt;code&gt;- apparaĂ®t plusieurs fois.

Pour cela, on dispose de la commande
\begin{center}
	\Verb|\definesubmol{&lt;nom&gt;}{&lt;code&gt;}|
\end{center}
qui sauvegarde le \Verb/&lt;code&gt;/ de faĂ§on Ă&nbsp; l'appeler dans le code de la molĂ©cule par le raccourci Â«\Verb/!{&lt;nom&gt;}/Â». Ce \Verb-&lt;nom&gt;- peut ĂŞtre :
\begin{itemize}
	\item une suite de caractĂ¨res : tous les caractĂ¨res alphanumĂ©riques pouvant se trouver entre \texttt{\string\csname} et \texttt{\string\endcsname} sont acceptĂ©s;
	\item une sĂ©quence de contrĂ´le.
\end{itemize}

Dans tous les cas, si l'alias est dĂ©jĂ&nbsp; dĂ©fini il est dĂ©conseillĂ© de l'Ă©craser avec une nouvelle dĂ©finition faite avec \falseverb{\definesubmol}, d'ailleurs, un Â«warningÂ» sera Ă©mis avertissant l'utilisateur que cet alias sera Ă©crasĂ© par le nouveau. Pour Ă©craser la dĂ©finition d'un alias faite au prĂ©alable, il faut utiliser :\label{redefinesubmol}
\begin{center}
	\Verb|\redefinesubmol{&lt;nom&gt;}{&lt;code&gt;}|
\end{center}

Voici un code qui dessine la molĂ©cule de pentane. On a pris soin auparavant de dĂ©finir un alias Â«\verb/xy/Â» pour le code \verb/CH_2/ :
\exemple{Pentane}|\definesubmol{xy}{CH_2}
\chemfig{H_3C-!{xy}-!{xy}-!{xy}-CH_3}|

Ici, la manĹ“uvre n'est pas trĂ¨s intĂ©ressante puisque Â«\verb/!{xy}/Â» est aussi long Ă&nbsp; taper que le code qu'il remplace.

Mais dans certains cas, cette fonctionnalitĂ© fait gagner beaucoup de place dans le code de la molĂ©cule et en amĂ©liore la lisibilitĂ©. Dans l'exemple suivant, on dessine la molĂ©cule dĂ©veloppĂ©e de butane. Pour cela, on va dĂ©finir un alias avec la sĂ©quence de contrĂ´le Â«\verb/\xx/Â» pour la sous molĂ©cule $\mathrm{CH_2}$. Comme on n'emploie que des angles relatifs, il est possible de faire pivoter la molĂ©cule entiĂ¨re de l'angle que l'on veut via l'angle du paramĂ¨tre optionnel global qui spĂ©cifie l'angle par dĂ©faut des liaisons de la molĂ©cule principale. On met ici 15\degres :
\exemple{Butane}|\definesubmol\xx{C(-[::+90]H)(-[::-90]H)}
\chemfig{[:15]H-!\xx-!\xx-!\xx-!\xx-H}|

La commande \falseverb{\definesubmol} admet un argument optionnel et sa syntaxe est la suivante :
\begin{center}
	\Verb/\definesubmol{&lt;nom&gt;}[&lt;code1&gt;]{&lt;code2&gt;}/
\end{center}

Dans le cas oĂą l'argument optionnel est prĂ©sent, l'alias Â«\Verb-!&lt;nom&gt;-Â» sera remplacĂ© par \Verb'&lt;code1&gt;' si la liaison qui arrive sur l'alias vient de droite, c'est Ă&nbsp; dire si l'angle que fait la liaison entrante est compris entre $-90$\degres{} et 90\degres{}, ces valeurs Ă©tant non comprises. Pour tous les autres cas oĂą la liaison arrive de gauche ou verticalement, l'alias sera remplacĂ© par \Verb-&lt;code2&gt;-.

On va dĂ©finir une sĂ©quence de contrĂ´le \verb-\Me- pour Â«mĂ©thylÂ» de telle sorte que l'alias Â«\verb-!\Me-Â» soit remplacĂ© par Â«\verb-H_3C-Â» lorsque la liaison arrive de droite et par Â«\verb-CH_3-Â» lorsqu'elle arrive de gauche. Avec cet alias, on peut observer sur l'exemple que l'on n'a plus Ă&nbsp; s'occuper de l'angle (que dans certaines molĂ©cules plus complexes on ne connaĂ®t mĂŞme pas) :
\exemple{Alias dual}/\definesubmol\Me[H_3C]{CH_3}
\chemfig{*6((-!\Me)=(-!\Me)-(-!\Me)=(-!\Me)-(-!\Me)=(-!\Me)-)}/

\label{definesubmolarg}La sous-molĂ©cule sauvegardĂ©e via un \Verb|&lt;nom&gt;| n'admet pas d'argument lorsqu'elle est appelĂ©e aprĂ¨s Â«\verb|!|Â». Pour dĂ©finir une sous-molĂ©cule admettant un ou plusieurs argument, il faut Ă©crire ce \Verb|&lt;nombre&gt;| d'arguments juste aprĂ¨s le \Verb|&lt;nom&gt;|. La syntaxe complĂ¨te de \verb|\definesubmol| est donc:
\begin{center}
	\Verb/\definesubmol{&lt;nom&gt;}&lt;nombre&gt;[&lt;code1&gt;]{&lt;code2&gt;}/
\end{center}

Dans les \Verb|&lt;codes&gt;|, les arguments doivent figurer sous leur forme habituelle Â«\Verb|#&lt;n&gt;|Â» oĂą \Verb|&lt;n&gt;| est le numĂ©ro de l'argument.

\exemple{\texttt{\string\definesubmol} avec arguments}/\definesubmol\X1{-[,-0.2,,,draw=none]{\scriptstyle#1}}
\chemfig{*6((!\X A)-(!\X B)-(!\X C)-(!\X D)-(!\X E)-(!\X F)-)}

\definesubmol{foo}3[#3|\textcolor{#1}{#2}]{\textcolor{#1}{#2}|#3}
\chemfig{A(-[:135]!{foo}{red}XY)-B(-[:45]!{foo}{green}{W}{zoo})}/

Il est Ă&nbsp; noter que si le \Verb|&lt;nombre&gt;| d'arguments est incorrect (nĂ©gatif ou supĂ©rieur Ă&nbsp; 9), un message d'erreur sera Ă©mis et \CF considĂ¨rera que la sous molĂ©cule n'admet pas d'argument.

En dehors des cas oĂą le caractĂ¨re Â«\verb|#|Â» est suivi d'un chiffre compris entre 1 et \Verb|&lt;nombre&gt;| auquel cas il reprĂ©sente un argument, les Â«\verb|#|Â» sont autorisĂ©s dans les codes des sous molĂ©cules.

\exemple{Utilisation de \#}/\definesubmol\X2{#1-#2-#3-#(3pt,3pt)#4}
\chemfig{A-!\X{M}{N}-B}/

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{Placement des atomes}
\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 Ă&nbsp; droite de l'atome rĂ©fĂ©rence sont ensuite placĂ©s de gauche Ă&nbsp; droite;
	\item les atomes se trouvant Ă&nbsp; gauche de l'atome de rĂ©fĂ©rence sont finalement placĂ©s de droite Ă&nbsp; 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}
	\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}

\subsection{Alignement vertical}\label{baseline}
La clĂ© \CFkey{baseline} permet de contrĂ´ler finement le placement vertical de la molĂ©cule par rapport Ă&nbsp; la ligne de base du paragraphe en cours.

Elle vaut \CFval{0pt} par dĂ©faut et dans ce cas, le premier atome rencontrĂ© (qu'il soit vide ou pas) est celui qui est placĂ© sur la ligne de base du paragraphe en cours, 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 Ă&nbsp; 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}/

On peut spĂ©cifier une dimension arbitraire pour dĂ©caler verticalement la molĂ©cule de cette valeur avec la syntaxe \CFkv{baseline}{dimension} :

\exemple{DĂ©calage vertical}/\chemfig{A(-[:-60]-[:30]C)-[:45]B}\qquad
\chemfig[baseline=5pt]{A(-[:-60]-[:30]C)-[:45]B}\qquad
\chemfig[baseline=-5pt]{A(-[:-60]-[:30]C)-[:45]B}/

Avec la syntaxe \CFkv{baseline}{(nom)} (le nom doit se trouver entre parenthĂ¨ses), on spĂ©cifie que la ligne de base de la molĂ©cule est sur le nĹ“ud nommĂ© \chevrons{nom} Le nom de l'atome peut ĂŞtre celui attribuĂ© automatiquement par \CF (de la forme \Verb|n&lt;a&gt;-&lt;b&gt;|) ou bien un nom donnĂ© par l'utilisateur par la syntaxe \Verb|@{&lt;nom&gt;}| (voir page~\pageref{mecanismes-reactionnels}).

\exemple*{Alignement sur des atomes}/Alignement par dĂ©faut :     \chemfig{A(-[:-60]-[:30]C)-[:45]B}\medbreak
Alignement sur B :          \chemfig[baseline=(b.base)]{A(-[:-60]-[:30]C)-[:45]@{b}B}\medbreak
Alignement sur atome vide : \chemfig[baseline=(vide)]{A(-[:-60]@{vide}-[:30]C)-[:45]B}\medbreak
Alignement sur C :          \chemfig[baseline=(c.base)]{A(-[:-60]-[:30]@{c}C)-[:45]B}/

Il est possible de nommer de nĹ“uds de \TIKZ. Ainsi, si l'on veut centrer verticalement plusieurs molĂ©cules sur la ligne de base courante, met la valeur \CFval{(current bounding box.center)} dans la clĂ© \CFkey{baseline}.

\exemple*{Alignement centrĂ©}/1) \chemfig{A-[:-45]B} et 2) \chemfig{B-[:45]C}\bigbreak

\setchemfig{baseline=(current bounding box.center)}% centrage vertical de toutes les molĂ©cules
1) \chemfig{A-[:-45]B} et 2) \chemfig{B-[:45]C}
\setchemfig{baseline=0pt}% retour Ă&nbsp; la valeur par dĂ©faut/

\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 &lt;=-1.5em, shorten &gt;=-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Ă© Ă&nbsp; 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}/

Aucune solution automatique n'Ă©tant satisfaisante, on peut contourner manuellement ce problĂ¨me en crĂ©ant un atome de fin Ă©tant un Â«strutÂ» Ă©gal Ă&nbsp; \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&lt;1000
			\tmp
		\fi
	\endgroup
}
\chemfig{A^1-B-C-D}\qquad
\chemfig{E_1-F-G-H}/

\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 Ă&nbsp; 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 Ă&nbsp; utiliser avec prĂ©caution car l'alignement des atomes dans le groupe d'atomes Ă&nbsp; 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} Ă&nbsp; 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. 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 Ă&nbsp; la bonne hauteur, c'est-Ă&nbsp;-dire Ă&nbsp; la hauteur de la liaison qui leur arrive dessus, on se servira de la commande \falseverb{\chemskipalign}. Pour que, Ă&nbsp; 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 Ă&nbsp; 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

\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{[&lt;paramĂ¨tres gĂ©nĂ©raux&gt;]&lt;position&gt;[&lt;code tikz&gt;]=&lt;charge&gt;}{&lt;atome&gt;}|
\end{center}
oĂą:
\begin{itemize}
	\item l'\chevrons{atome} est Ă&nbsp; 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&gt;} (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 Ă&nbsp; \verb|0pt|;
	\item le \chevrons{code tikz}, optionnel, contient les options passĂ©es Ă&nbsp; la macro \verb|\node| de \TIKZ, chargĂ©e de placer la \chevrons{charge}.
\end{itemize}

\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} &amp; \chevrons{valeurs} par dĂ©faut &amp; Description\\\hline\endhead
	\Chargeparam{debug}&amp; 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}&amp;Macro qui prend comme argument l'\chevrons{atome}.\\
	\Chargeparam{circle}&amp;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}&amp;Macro (\verb|\printatom| ou  \verb|\ensuremath|, par exemple) qui prend comme argument chaque charge.\\
	\Chargeparam{extra sep}&amp;Augmentation de la taille du nĹ“ud (cercle ou rectangle) pour la position des charges: c'est la valeur passĂ©e Ă&nbsp; la clĂ© \CFkey{inner sep} de \TIKZ.\\
	\Chargeparam{overlay}&amp;BoolĂ©en qui lorsque \CFval{true}, dessine les charges en Â«surimpressionÂ», c'est-Ă&nbsp;-dire hors de la boite englobante finale.\\
	\Chargeparam{shortcuts}&amp;BoolĂ©en qui lorsque \CFval{true}, active les raccourcis Â«\verb|\.|Â», Â«\verb|\:|Â», Â«\verb-\|- et Â«\verb-\"-Â» pour tracer des formules de Lewis.\\
	\Chargeparam{lewisautorot}&amp;BoolĂ©en qui lorsque \CFval{true}, effectue une rotation automatique de Â«\verb|\:|Â» et Â«\verb-\"-Â».\\
	\Chargeparam{.radius}&amp;Rayon du point utilisĂ© pour tracer Â«\verb|\.|Â» et Â«\verb|\:|Â»\\
	\Chargeparam{:sep}&amp;SĂ©paration entre les deux points de Â«\verb|\:|Â».\\
	\Chargeparam{.style}&amp;Style \TIKZ utilisĂ© pour tracer les points Â«\verb|\.|Â» et Â«\verb|\:|Â».\\
	\Chargeparam{"length}&amp;Longueur du rectangle \verb-\"-. et de la ligne \verb-\|-\\
	\Chargeparam{"width}&amp;Largeur du rectangle \verb-\"-.\\
	\Chargeparam{"style}&amp;Style \TIKZ utilisĂ© pour tracer le rectangle \verb-\"-.\\
	\Chargeparam{|style}&amp;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{&lt;clĂ©s&gt;=&lt;valeurs&gt;}|
\end{center}
et rĂ©initialiser tous les paramĂ¨tres Ă&nbsp; 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 Ă&nbsp; \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}|

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 Ă&nbsp; \verb|180+\chargeangle|. Il est Ă©galement possible de spĂ©cifier un nĹ“ud circulaire pour y placer la \chevrons{charge}.

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

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.

\exemple{NĹ“uds circulaires}/\chemfig{\charge{90=\.}{N}H_3} : nĹ“ud rectangulaire\smallbreak
\chemfig{\charge{[circle]90=\.}{N}H_3} : nĹ“ud circulaire/

\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 Ă&nbsp; tout moment les dĂ©sactiver avec la macro \verb|\disableshortcuts| et les rĂ©-activer avec \verb|\enableshortcuts|.

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

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.

\exemple{Autorot}/\Charge{60=\:,150=\"}{A} et
\Charge{[lewisautorot=false]60=\:,150=\"}{A}/

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.

\exemple{Charge dans \CF}*\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-Ă&nbsp;-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[&lt;dim&gt;]{&lt;code&gt;}{&lt;matĂ©riel&gt;}|
\end{center}
et\label{chembelow}
\begin{center}
	\Verb|\chembelow[&lt;dim&gt;]{&lt;code&gt;}{&lt;matĂ©riel&gt;}|
\end{center}
placent le \Verb-&lt;matĂ©riel&gt;- respectivement au-dessus et au-dessous du \Verb-&lt;code&gt;- Ă&nbsp; une distance verticale \Verb-&lt;dim&gt;-, et cela sans changer la boĂ®te englobante du \Verb-&lt;code&gt;-. L'argument optionnel permet si on le souhaite, de spĂ©cifier cette dimension Ă&nbsp; chaque appel. Si l'argument optionnel n'est pas utilisĂ©, une dimension par dĂ©faut sera prise : elle vaut \CFval{1.5pt} mais peut ĂŞtre modifiĂ©e avec \chevrons{clĂ©} \CFkv{stack sep}{dim}.

Ces commandes sont indĂ©pendantes de la macro \verb-\chemfig- et peuvent aussi bien ĂŞtre appelĂ©es Ă&nbsp; l'intĂ©rieur ou Ă&nbsp; l'extĂ©rieur de son argument.

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

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-&lt;matĂ©riel&gt;- 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 Ă&nbsp; 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} Ă&nbsp; l'intĂ©rieur d'un environnement {\ttfamily\falseverb{tikzpicture}} :
\exemple{\textbackslash chemfig dans tikzpicture}|\begin{tikzpicture}[help lines/.style={thin,draw=black!50}]
\draw[help lines] (0,0) grid (4,4);
\draw(0,0) -- (2,1);
\draw(2,2) circle (0.5);
\node at (1,3) {\chemfig{A=B-[:30]C}};
\node[draw,red,anchor=base] at(3,2){\chemfig{X&gt;[2,,,,blue]Y}};
\end{tikzpicture}|

\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 Ă&nbsp; 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.

De plus, on mettra en Ă©vidence que plusieurs possibilitĂ©s s'offrent Ă&nbsp; l'utilisateur pour un mĂŞme rĂ©sultat graphique, certaines intuitives et d'autres beaucoup moins, l'essentiel Ă©tant de montrer que \CF permet une certaine souplesse dans le codage des molĂ©cules. Ă€ chacun ensuite de se construire et s'approprier les mĂ©thodes avec lesquelles il est le plus Ă&nbsp; l'aise.

\subsection{L'Ă©thanal}
On va ici dessiner la molĂ©cule d'Ă©thanal : \chemfig{H-C(-[2]H)(-[6]H)-C(-[7]H)=[1]O}

La meilleure mĂ©thode pour les molĂ©cules non cycliques est de choisir la plus longue chaĂ®ne. Ici on peut prendre Â«\verb|H-C-C=O|Â» par exemple. Il faut incliner la liaison \verb|C=O| de 45\degres{} en utilisant l'angle prĂ©dĂ©fini Â«\verb-[1]-Â». On obtient la Â«structureÂ» de la molĂ©cule sur laquelle il suffira de rajouter les ramifications :
\exemple{Structure de l'Ă©thanal}|\chemfig{H-C-C=[1]O}|

Il reste Ă&nbsp; placer 3 atomes d'hydrogĂ¨ne avec les bonnes inclinaisons Ă&nbsp; l'aide des angles prĂ©dĂ©finis. Le premier Ă&nbsp; 90\degres{} avec la ramification Â«\verb/(-[1]H)/Â», le second Ă&nbsp; 270\degres{} avec Â«\verb/(-[6]H)/Â» et celui de droite Ă&nbsp; 315\degres{} avec Â«\verb/(-[7]H)/Â» :
\exemple{Ethanal}|\chemfig{H-C(-[2]H)(-[6]H)-C(-[7]H)=[1]O}|

\subsection{L'acide 2-amino-4-oxohexanoĂŻque}
Voici la molĂ©cule Ă&nbsp; dessiner : \chemfig{-[::+30]-[::-60](=[:-90]O)-[::+60]-[::-60](-[:-90]NH_2)-[::+60](=[:90]O)-[::-60]OH}

Il existe ---~comme c'est le souvent cas pour la plupart des molĂ©cules~--- plusieurs mĂ©thodes, et pour chacune, plusieurs faĂ§ons diffĂ©rentes d'arriver au rĂ©sultat. Ici, nous allons examiner 4 mĂ©thodes diffĂ©rentes.

\subsubsection{Angles absolus}
On va tout d'abord tracer la chaĂ®ne mĂ©diane avec des angles absolus. On rĂ¨gle l'angle par dĂ©faut Ă&nbsp; $+30\degres$ avec l'argument optionnel, ainsi seules les liaisons Â«descendantesÂ» auront besoin que l'on spĂ©cifie leur angle absolu de $-30\degres$ :
\exemple{Structure (angles absolus)}|\chemfig{[:30]--[:-30]--[:-30]--[:-30]OH}|

Il reste Ă&nbsp; ajouter les ramifications Â«\verb/(=[6]O)/Â», Â«\verb/(-[6]NH_2)/Â» et Â«\verb/(=[2]O)/Â» sur les bons sommets :
\exemple{MolĂ©cule (angles absolus)}|\chemfig{[:30]--[:-30](=[6]O)--[:-30](-[6]NH_2)-(=[2]O)-[:-30]OH}|

\subsubsection{Angles relatifs}
Une approche plus gĂ©nĂ©rale aurait Ă©tĂ© de n'utiliser que des angles relatifs. Il aurait fallu procĂ©der de cette faĂ§on :
\exemple{Structure (angles relatifs)}|\chemfig{[:30]--[::-60]--[::-60]--[::-60]OH}|

puis
\exemple{MolĂ©cule (angles relatifs)}|\chemfig{[:30]--[::-60](=[::-60]O)--[::-60](-[::-60]NH_2)
-(=[::60]O)-[::-60]OH}|

\subsubsection{Cycle}
Les angles entre les liaisons Ă©tant de 120\degres{}, on peut penser Ă&nbsp; utiliser un 6-cycle, quoique cette mĂ©thode soit moins naturelle. Il faut ici profiter du fait qu'un cycle peut ĂŞtre incomplet. Il est Ă©galement nĂ©cessaire de faire pivoter le cycle de 120\degres{} pour que le premier sommet soit au sud-est du cycle :
\exemple{Structure}|\chemfig{[:120]NH_2*6(---=O)}|

Il faut maintenant faire partir les ramifications des sommets adĂ©quats :
\exemple{MolĂ©cule (cycle)}|\chemfig{[:120]NH_2*6(-(-(=[::60]O)-[::-60]OH)--(--[::60])=O)}|

\subsubsection{Cycles imbriquĂ©s}
En approfondissant la mĂ©thode avec les cycles, on peut aussi penser Ă&nbsp; imbriquer des 6-cycles incomplets. On pourrait partir de cette structure :
\exemple{Structure}|\chemfig{*6(--*6(--=O))}|

Et ensuite ajouter les liaisons qui partent des sommets des ces cycles. Il n'y a pas Ă&nbsp; se prĂ©occuper des angles puisque les liaisons qui partent des cycles sont les bissectrices des cĂ´tĂ©s du cycle, ce que justement, on cherche ici :
\exemple{MolĂ©cule (cycles imbriquĂ©s)}|\chemfig{*6((-)-(=O)-*6(-(-NH_2)-(-OH)=O))}|

Un examen attentif rĂ©vĂ¨le cependant que la seconde double liaison vers l'atome d'oxygĂ¨ne se trouve \emph{Ă&nbsp; l'intĂ©rieur} du 6-cycle incomplet\footnote{C'Ă©tait aussi le cas pour la mĂ©thode prĂ©cĂ©dente avec un seul cycle.}. MalgrĂ© sa concision, ce code ne conduit donc pas Ă&nbsp; un dessin parfait. On peut bien sĂ»r corriger ce dĂ©faut en allongeant un peu le code :
\exemple{MolĂ©cule (cycles imbriquĂ©s corrigĂ©s)}|\chemfig{*6((-)-(=O)-*6(-(-NH_2)-(-OH)(=[::60]O)))}|

\subsection{Glucose}
Le but ici est de reprĂ©senter selon diffĂ©rentes conventions la molĂ©cule de glucose.

\subsubsection{Formule topologique}
Le code ressemble ici Ă&nbsp; celui de l'acide 2-amino-4-oxohexanoĂŻque. On obtient quasiment la mĂŞme structure avec des angles absolus sauf qu'ici, l'angle par dĂ©faut est de $-30\degres$ :
\exemple[60]{Structure}|\chemfig{[:-30]HO--[:30]--[:30]--[:30]-H}|

Et l'ajout des ramifications ne pose pas de problĂ¨me particulier. On utilise des angles absolus :
\exemple[60]{Fructose, formule topologique}|\chemfig{[:-30]HO--[:30](&lt;[2]OH)-(&lt;:[6]OH)
-[:30](&lt;:[2]OH)-(&lt;:[6]OH)-[:30](=[2]O)-H}|

\subsubsection{Projection de Fisher}
Le but est d'obtenir la molĂ©cule ci dessous :
\begin{center}
	\definesubmol{x}{(-[4]H)(-[0]OH)}
	\definesubmol{y}{(-[0]H)(-[4]OH)}
	\chemfig{[2]OH-[3]-!x-!x-!y-!x-=[1]O}
\end{center}
L'idĂ©e est de commencer Ă&nbsp; dessiner la plus longue chaĂ®ne verticale en indiquant un angle Â«\verb-[2]-Â» par dĂ©faut. Voici la structure oĂą l'on met volontairement des lettres minuscules au bout de chaque liaison verticale :
\exemple{Structure}|\chemfig{[2]OH-[3]-a-b-c-d-=[1]O}|

Ensuite, on dĂ©finit deux alias pour les liaisons horizontales et les atomes qui les termineront. Prenons Â«\verb-x-Â» que nous mettrons Ă&nbsp; la place des minuscules a, c et d et Â«\verb-y-Â» qui prendra la place de la lettre c. Comme les alias ne comportent qu'un seul caractĂ¨re, on peut se passer d'accolade et Ă©crire Â«\verb-!x-Â» au lieu de Â«\verb-!{x}-Â» :
\exemple{Glucose (projection de Fisher)}|\definesubmol{x}{(-[4]H)(-[0]OH)}
\definesubmol{y}{(-[0]H)(-[4]OH)}
\chemfig{[2]OH-[3]-!x-!x-!y-!x-=[1]O}|

\subsubsection{ReprĂ©sentation "chaise"}
On va reprĂ©senter cette molĂ©cule d'$\alpha$-D-glucose :
\chemfig{?(-[:190]OH)-[:-50](-[:170]OH)-[:10](-[:-55,0.7]OH)-[:-10](-[6,0.7]OH)-[:130]O-[:190]?(-[:150,0.7]-[2,0.7]OH)}

Pour cela, on va tout d'abord tracer 5 cĂ´tĂ©s de la chaise et relier le premier sommet au dernier avec un crochet Â«\verb-?-Â». On adopte les angles absolus suivants, donnĂ©s dans l'ordre de parcourt trigonomĂ©trique : $-50\degres$, $10\degres$, $-10\degres$, $130\degres$, $190\degres$.
\exemple{Structure}|
\chemfig{?-[:-50]-[:10]-[:-10]-[:130]O-[:190]?}|

Maintenant, il suffit de rajouter les ramifications entre parenthĂ¨ses. Les angles sont choisis au mieux pour rendre une impression de perspective, et certaines liaisons sont raccourcis d'un coefficient de 0,7 :
\exemple{ReprĂ©sentation chaise}|\chemfig{?(-[:190]OH)-[:-50](-[:170]OH)-[:10](-[:-55,0.7]OH)
-[:-10](-[6,0.7]OH)-[:130]O-[:190]?(-[:150,0.7]-[2,0.7]OH)}|

\subsubsection{Projection de Haworth}
Le but est de reprĂ©senter cette molĂ©cule de D-glucopyranose :
\chemfig[cram width=2pt]{HO-[2,0.5,2]?&lt;[7,0.7](-[2,0.5]OH)-[,,,,line width=2pt](-[6,0.5]OH)&gt;[1,0.7](-[6,0.5]OH)-[3,0.7]O-[4]?(-[2,0.3]-[3,0.5]OH)}

Tout d'abord, on va choisir la plus longue chaĂ®ne qui part du groupe Â«HOÂ» de gauche et continue sur 5 cĂ´tĂ©s du cycle. Le cycle sera fermĂ© avec un crochet. Pour la liaison verticale qui part du premier groupe Â«HOÂ», il faut spĂ©cifier qu'elle doit partir du second atome avec l'argument optionnel. De plus, elle sera raccourcie avec un coefficient de 0,5. Son argument optionnel sera donc Â«\verb/[2,0.5,2]/Â».

Ensuite, pour donner une impression de perspective au cycle, les liaisons inclinĂ©es seront rĂ©duites d'un coefficient de 0,7. Pour les traits gras inclinĂ©s, on va se servir des liaisons de Cram en ayant redĂ©fini la largeur de la base des triangles Ă&nbsp; 2pt. Pour la liaison horizontale en trait gras, il faudra la tracer  avec une Ă©paisseur de 2pt et son argument optionnel sera donc Â«\verb/[0,,,,line width=2pt]/Â». Voici la structure de la molĂ©cule :
\exemple{Structure}|\chemfig[cram width=2pt]{HO-[2,0.5,2]?&lt;[7,0.7]-[,,,,
line width=2pt]&gt;[1,0.7]-[3,0.7]O-[4]?}|

Il ne reste plus qu'Ă&nbsp; rajouter les ramifications, mises au bon endroit, en spĂ©cifiant des angles absolus correctement choisis et des longueurs parfois rĂ©duites pour mieux donner l'illusion de la perspective :
\exemple{Projection de Haworth}|\chemfig[cram width=2pt]{HO-[2,0.5,2]?&lt;[7,0.7](-[2,0.5]OH)-[,,,,
line width=2pt](-[6,0.5]OH)&gt;[1,0.7](-[6,0.5]OH)-[3,0.7]
O-[4]?(-[2,0.3]-[3,0.5]OH)}|

\subsection{AdrĂ©naline}
On cherche Ă&nbsp; dessiner la molĂ©cule d'adrĂ©naline :
\chemfig{*6((-HO)-=-(-(&lt;[::60]OH)-[::-60]-[::-60,,,2]HN-[::+60]CH_3)=-(-HO)=)}

Nous allons utiliser deux mĂ©thodes diffĂ©rentes.

\subsubsection{Utilisation d'un cycle}
Tout d'abord, on part du 6-cycle et nous dessinons le dĂ©but des ramifications qui en partent :
\exemple[60]{Structure de l'adrĂ©naline}|\chemfig{*6((-HO)-=-(-)=-(-HO)=)}|

Il faut maintenant complĂ©ter la ramification de droite en utilisant, par exemple, des angles relatifs :
\exemple[60]{AdrĂ©naline, Ă©tape 2}|\chemfig{*6((-HO)-=-(--[::-60]-[::-60]
HN-[::+60]CH_3)=-(-HO)=)}|

Puis, il faut rajouter la liaison de Cram vers \verb-OH- et spĂ©cifier que la liaison qui arrive sur Â«\verb-NH-Â» le fait sur le second atome Â«NÂ». Nous utilisons le 4\ieme{} argument optionnel de la liaison :
\exemple[60]{AdrĂ©naline}|\chemfig{*6((-HO)-=-(-(&lt;[::60]OH)-[::-60]-[::-60,,,2]
HN-[::+60]CH_3)=-(-HO)=)}|

\subsubsection{Utilisation de 2 cycles}
Cette mĂ©thode est moins naturelle, mais le but est ici d'expliquer comment rendre une liaison invisible.

On pourrait amĂ©liorer ce code en considĂ©rant que le dessin de la molĂ©cule d'adrĂ©naline est constituĂ© de deux 6-cycles accolĂ©s l'un Ă&nbsp; l'autre :
\exemple[60]{AdrĂ©naline, structure 2 cycles}|\chemfig{*6((-HO)-=*6(--HN---)-=-(-HO)=)}|

Il faut donc rendre invisible les deux premiĂ¨res liaisons du cycle de droite. Pour cela, on se sert de l'argument qui est passĂ© Ă&nbsp; \TIKZ en spĂ©cifiant Â«\verb-draw=none-Â». Ces liaisons ont donc ce code : Â«\verb/-[,,,,,draw=none]/Â». Pour que le code reste lisible, on dĂ©finit un alias nommĂ© Â«\verb-&amp;-Â» pour ces liaisons :
\exemple[60]{AdrĂ©naline, Ă©tape 2}|\definesubmol{&amp;}{-[,,,,draw=none]}
\chemfig{*6((-HO)-=*6(!&amp;!&amp;HN---)-=-(-HO)=)}|

Le reste devient facile, il suffit d'ajouter les ramification aux bons sommets :
\exemple[60]{AdrĂ©naline, Ă©tape 3}|\definesubmol{&amp;}{-[,,,,draw=none]}
\chemfig{*6((-HO)-=*6(!&amp;!&amp;HN(-CH_3)--(&lt;OH)-)-=-(-HO)=)}|

Pour finir, on spĂ©cifie que les liaisons qui \emph{arrivent et partent} de Â«\verb-HN-Â» doivent le faire sur deuxiĂ¨me atome. On dĂ©finit donc un autre alias pour la liaison invisible qui arrive sur Â«\verb-HN-Â» :
\exemple[60]{AdrĂ©naline}|\definesubmol{&amp;}{-[,,,,draw=none]}
\definesubmol{&amp;&amp;}{-[,,,2,draw=none]}
\chemfig{*6((-HO)-=*6(!&amp;!{&amp;&amp;}HN(-CH_3)-[,,2]-(&lt;OH)-)-=-(-HO)=)}|

\subsection{Guanine}
Nous allons dessiner la molĂ©cule de guanine :
\chemfig{*6((-H_2N)=N-*6(-\chembelow{N}{H}-=N?)=?-(=O)-HN-[,,2])}\medskip

Tout d'abord, commenĂ§ons par dessiner les cycles imbriquĂ©s en mettant seulement les atomes d'azote aux sommets :
\exemple{Guanine, structure}|\chemfig{*6(=N-*6(-N-=N)=--N-)}|

Puis nous allons tracer la liaison horizontale dans le cycle de droite avec un crochet. Nous allons aussi positionner un atome d'hydrogĂ¨ne sous l'atome d'azote du 5-cycle avec la commande \verb-\chembelow{N}{H}-. Il faut aussi Ă©crire Â«\verb-HN-Â» au lieu de Â«\verb-N-Â» au sommet en haut Ă&nbsp; gauche de la molĂ©cule :
\exemple{Guanine, Ă©tape 2}|\chemfig{*6(=N-*6(-\chembelow{N}{H}-=N?)=?--HN-)}|

On constate qu'une liaison part du mauvais atome\footnote{Ceci semble illogique puisque l'angle de la liaison du groupe \texttt{HN} vers le premier sommet du 6-cycle est comprise entre $-90\degres$ et $90\degres$; \CF devrait donc partir du 2\ieme{} atome. Pour expliquer cette contradiction, il faut savoir que dans les cycles, la derniĂ¨re liaison relie toujours le dernier sommet au premier sommet en ignorant l'angle \emph{calculĂ© thĂ©orique} de cette liaison (qui est ici de $-90\degres{}$). \CF utilise cet angle thĂ©orique pour dĂ©terminer les atomes de dĂ©part et d'arrivĂ©e, mais ne s'en sert pas pour tracer la liaison puisque les deux extrĂ©mitĂ©s sont dĂ©jĂ&nbsp; dĂ©finies. L'atome de dĂ©part de la derniĂ¨re liaison est donc le \no1.} ! Il faut corriger le mĂ©canisme de calcul automatique pour que la liaison parte du 2\ieme{} atome Â«\verb-N-Â» au lieu du premier. Pour cela, on spĂ©cifie un argument optionnel pour la derniĂ¨re liaison du premier 6-cycle Â«\verb-[,,2]-Â» :
\exemple{Guanine, Ă©tape 3}|\chemfig{*6(=N-*6(-\chembelow{N}{H}-=N?)=?--HN-[,,2])}|

Il suffit de rajouter les ramifications aux bons sommets. On peut notamment remarquer la ramification qui part du premier sommet du premier 6-cycle Â«\verb/(-H_2N)/Â» :
\exemple{Guanine}|\chemfig{*6((-H_2N)=N-*6(-\chembelow{N}{H}-=N?)=?-(=O)-HN-[,,2])}|

On aurait aussi pu dessiner cette mĂŞme molĂ©cule avec un 5-cycle \emph{rĂ©gulier}, comme cela se fait parfois :
\exemple{Guanine avec 5-cycle}|\chemfig{*6((-H_2N)=N-*5(-\chembelow{N}{H}-=N-)=-(=O)-HN-[,,2])}|

\section{Comment faire\protect\ldots}
\subsection{Ă‰crire un atome en couleur}
Comme le package \verb-xcolor- est chargĂ© par \TIKZ, lui mĂŞme chargĂ© par \CF, on peut donc mettre dans le code d'une molĂ©cule des instructions de couleur, principalement \falseverb{\color} et \falseverb{\textcolor}. Les atomes Ă©tant affichĂ©s dans des nĹ“uds de \TIKZ qui se comportent comme des boĂ®tes de \TeX{}, tout se passe comme si ces atomes Ă©taient confinĂ©s dans un groupe ce qui fait que le changement de couleur reste local Ă&nbsp; l'atome.

\exemple{Couleurs}/\chemfig{C\color{blue}H_3-C(=[1]O)-[7]O\color{red}H}/

On constate que ce code ne fonctionne pas, toujours Ă&nbsp; cause de la rĂ¨gle de  qu'utilise \CF : ici, le premier atome de la molĂ©cule commence Ă&nbsp; Â«\verb-C-Â» et s'Ă©tend jusqu'Ă&nbsp; la prochaine lettre majuscule. Cet atome est donc Â«\verb-C\color{blue}-Â» et donc, le changement de couleur se fait en fin d'atome et reste sans effet. Il faut forcer \CF Ă&nbsp; couper le premier atome juste aprĂ¨s Â«\verb-C-Â» avec le caractĂ¨re Â«\verb-|-Â» et ensuite, englober \verb-\color{blue}H_3- entre accolades de faĂ§ons Ă&nbsp; ce que \CF ne stoppe pas l'atome \no2 avant le Â«\verb-H-Â» ce qui laisserait le changement de couleur seul et donc inefficace dans un atome :

\exemple{Couleurs}/\chemfig{C|{\color{blue}H_3}-C(=[1]O)-[7]O|{\color{red}H}}/

On peut obtenir le mĂŞme effet avec \verb-\textcolor- :

\exemple{Couleurs}/\chemfig{C|\textcolor{blue}{H_3}-C(=[1]O)-[7]O|\textcolor{red}{H}}/

Le principal inconvĂ©nient est qu'il faut rĂ©pĂ©ter l'opĂ©ration pour chaque atome que l'on veut colorer, mĂŞme si ceux-ci sont contigus.

\subsection{Ajouter un exposant sans influer sur une liaison}
Ajouter une \falseverb{charge} sous forme d'exposant mathĂ©matique Ă&nbsp; un atome implique que la boĂ®te (et donc le nĹ“ud de \TIKZ) le contenant aura ses dimensions modifiĂ©es. Cela n'a guerre d'importance si l'atome est un fin de chaĂ®ne mais l'esthĂ©tique peut ĂŞtre compromise si une liaison doit en partir. Le premier rĂ©flexe est de mettre l'exposant dans une boĂ®te de \TeX{} de dimensions nulles et donc d'utiliser la macro\falseverb\rlap\footnote{Si l'on doit mettre la charge a gauche de l'atome, il faut employer la commande \texttt{\string\llap}.}, ce qui donne des rĂ©sultats souvent satisfaisants. On voit ici que grĂ˘ce Ă&nbsp; \falseverb\rlap, l'\falseverb{alignement horizontal} des atomes est prĂ©servĂ© :
\exemple{Charge et liaison}/\chemfig{A^+-[2]B}
\qquad
\chemfig{A\rlap{${}^+$}-[2]B}/

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Ă&nbsp; vu qu'avec la librairie Â«\verb-decorations.pathmorphing-Â» de \TIKZ, on peut dessiner une liaison ondulĂ©e :

\exemple{Liaison ondulĂ©e}|\chemfig{A-[,3,,,decorate,decoration=snake]B}

\chemfig{A-[,3,,,decorate,decoration={snake,amplitude=1.5mm,
    segment length=2.5mm}]B}|

Pour plus de souplesse, on peut aussi poser des nĹ“uds avec le marqueur Â«\verb-@-Â» et rĂ©utiliser ces nĹ“uds aprĂ¨s que la molĂ©cule ait Ă©tĂ© tracĂ©e pour les relier avec une ligne courbe Ă&nbsp; l'aide de \falseverb{\chemmove} :

\exemple{Liaisons courbes}/\chemfig{@{a}A-[,,,,draw=none]@{b}B}
\chemmove{\draw[-](a)..controls +(45:7mm) and +(225:7mm)..(b);}
\bigskip

\chemfig{*6(@{a}---@{b}---)}
\chemmove{\draw[-](a)..controls +(60:3em) and +(240:3em)..(b);}
\quad
\chemfig{*6(@{a}---@{b}---)}
\chemmove{\draw[-](a)..controls +(60:3em) and +(30:1em)..
    ++(20:2em) ..controls +(210:3em) and +(-120:4em) ..(b);}/

\subsection{Dessiner un Ă©lĂ©ment de polymĂ¨re}\label{polymerdelim}
La macro \verb|\polymerdelim|, jusqu'alors non documentĂ©e et en phase de test, fait avec la version 1.33 son entrĂ©e officielle dans le package \CF. Sa syntaxe est la suivante :
\begin{center}
	\Verb|\polymerdelim[&lt;clĂ©s&gt;=&lt;valeurs&gt;]{&lt;nĹ“ud1&gt;}&lt;nĹ“ud2&gt;}|
\end{center}

L'effet, aprĂ¨s Ă©ventuellement \emph{deux} compilations, est de positionner des dĂ©limiteurs verticaux aux nĹ“uds spĂ©cifiĂ©s : par dĂ©faut, le 1\ier{} dĂ©limiteur est placĂ© sur le premier nĹ“ud et le second sur la mĂŞme horizontale que le premier, mais Ă&nbsp; l'abscisse du second. Les paramĂ¨tres sont spĂ©cifiĂ©s via les \chevrons{clĂ©s} et les \chevrons{valeurs} dont voici la liste, les valeurs par dĂ©faut et les actions.
\begin{center}
\begin{tabular}{rlp{8cm}}\hline
	\chevrons{clĂ©s} &amp; \chevrons{valeurs} par dĂ©faut &amp; Action\\\hline
	\CFdelimparam{delimiters} &amp; DĂ©finit les dĂ©limiteurs. Si ces dĂ©limiteurs sont des crochets, il faut Ă©crire \verb|delimiters={[]}|.\\
	\CFdelimparam{height} &amp; DĂ©finit la hauteur (au-dessus du nĹ“ud) des dĂ©limiteurs.\\
	\CFdelimparam{depth}  &amp; DĂ©finit la profondeur (au-dessous du nĹ“ud) des dĂ©limiteurs. Si la \chevrons{valeur} est vide, alors la profondeur est Ă©gale Ă&nbsp; la hauteur.\\
	\CFdelimparam{h align}&amp;BoolĂ©en qui lorsqu'il est \CFval{false}, place le 2\ieme{} dĂ©limiteur sur le 2\ieme{} nĹ“ud, au risque que les dĂ©limiteurs ne soient pas sur une mĂŞme ligne horizontale.\\
	\CFdelimparam{auto rotate}&amp;BoolĂ©en qui, lorsqu'il est \CFval{true} et \CFkv{h align}{false}, tourne automatiquement les dĂ©limiteurs pour qu'ils soient perpendiculaires Ă&nbsp; la ligne qui relie les deux nĹ“uds.\\
	\CFdelimparam{rotate}&amp;Lorsque \CFkv{h align}{false} et \CFkv{auto rotate}{false}, spĂ©cifie l'angle de rotation des deux dĂ©limiteurs.\\
	\CFdelimparam{open xshift}&amp; DĂ©finit le dĂ©calage horizontal du dĂ©limiteur ouvrant.\\
	\CFdelimparam{close xshift}&amp; DĂ©finit le dĂ©calage horizontal du dĂ©limiteur fermant. Si la \chevrons{valeur} est vide, alors ce dĂ©calage devient opposĂ© au dĂ©calage du dĂ©limiteur ouvrant.\\
	\CFdelimparam{indice} &amp; DĂ©finit l'indice qui sera placĂ© en bas Ă&nbsp; droite du dĂ©limiteur fermant.\\\hline
\end{tabular}
\end{center}
\exemple*{PolymĂ¨res}|PolyĂ©thylĂ¨ne:
\chemfig{\vphantom{CH_2}-[@{op,.75}]CH_2-CH_2-[@{cl,0.25}]}
\polymerdelim[height = 5pt, indice = \!\!n]{op}{cl}
\bigskip

Polyvinyl chloride:
\chemfig{\vphantom{CH_2}-[@{op,1}]CH_2-CH(-[6]Cl)-[@{cl,0}]}
\polymerdelim[height = 5pt, depth = 25pt, open xshift = -10pt, indice = \!\!n]{op}{cl}
\bigskip

Nylon 6:
\chemfig{\phantom{N}-[@{op,.75}]{N}(-[2]H)-C(=[2]O)-{(}CH_2{)_5}-[@{cl,0.25}]}
\polymerdelim[height = 30pt, depth = 5pt, indice = {}]{op}{cl}
\bigskip

Polycaprolactame:
\chemfig[atom sep = 2em]{[:-30]-[@{left,.75}]N(-[6]H)-[:30](=[2]O)--[:30]--[:30]--[@{right,0.25}:30]}
\polymerdelim[height = 5pt, indice = \!\!n]{left}{right}
\bigskip

PolyphĂ©nylĂ¨ne sulfide:
\chemfig{\vphantom{S}-[@{op,.75}]S-(**6(---(-[@{cl,0.25}])---))}
\polymerdelim[delimiters = (), height = 15pt, indice = {}]{op}{cl}
\bigskip

\chemfig{-CH_2-CH([6]-CO-NH-CH_2-NH-CO-CH([4]-CH_2-)([0]-[@{downleft,0.8},2]CH_2
-CH([2]-CO-NH_2)-[@{downright,0.3},2]CH_2-[,1.5]C?H-))-[@{upleft,0.8},2]CH_2
-CH([6]-CO-NH_2)-[@{upright,0.3},2]CH_2-[,1.5]CH([6]-CO-NH-CH_2-NH-C?O)-}
\polymerdelim[delimiters ={[]}, height = 5pt, depth = 40pt, indice = n]{upleft}{upright}
\polymerdelim[delimiters ={[]}, height = 40pt, depth = 5pt, indice = n]{downleft}{downright}

\chemfig{-[@{op,.5}:-30]O-[::60](=[::60]O)-[::-60]*6(-=-(-(=[::-60]O)-[::60]O-[::-60]-[::60]-[@{cl,.5}::-60])=-=)}
\polymerdelim[height=6ex, indice=n, h align=false]{op}{cl}|

\subsection{Dessiner le symĂ©trique d'une molĂ©cule}\label{retournement}
Il existe deux commandes \falseverb{\hflipnext} et \falseverb{\vflipnext} qui permettent de tracer le symĂ©trique de la prochaine molĂ©cule par rapport Ă&nbsp; un axe horizontal ou vertical. Si on souhaite construire le symĂ©trique de plusieurs molĂ©cules, il faut Ă©crire les commandes avant chaque molĂ©cule concernĂ©e.

\exemple{SymĂ©triques}/\chemfig{H_3C-C(=[:30]O)-[:-30]OH}% original

\vflipnext% dessine le symĂ©trique vertical de :
\chemfig{H_3C-C(=[:30]O)-[:-30]OH}\medskip

\chemfig{H_3C-C(=[:30]O)-[:-30]OH}% original
\hflipnext% dessine le symĂ©trique horizontal de :
\chemfig{H_3C-C(=[:30]O)-[:-30]OH}/

\subsection{Ajouter du texte au dessus des liaisons et coder les angles}
Une fois que l'on a compris que le caractĂ¨re Â«\verb-@-Â» permet de poser un nĹ“ud Â«globalÂ» pour \TIKZ, c'est-Ă&nbsp;-dire accessible aprĂ¨s que la molĂ©cule ait Ă©tĂ© dessinĂ©e, tout ce qui est possible avec \TIKZ et les nĹ“uds (c'est-Ă&nbsp;-dire beaucoup de choses) devient envisageable.

Pour Ă©crire quelque chose au-dessus ou au-dessous d'une liaison, on peut donc poser des nĹ“uds Â«globauxÂ» sur les atomes situĂ©s aux extrĂ©mitĂ©s de cette liaison et Ă©crire Ă&nbsp; mi-chemin de ces deux nĹ“uds un texte que l'on aura soin d'Ă©lever ou d'abaisser pour qu'il se situe juste au dessus ou au dessous de la liaison. C'est ce que fait la commande \verb-\bondname- dans le code ci-dessous.

Pour les angles entre deux liaisons partant d'un atome, 3 atomes sont impliquĂ©s et il faudra poser un nĹ“ud global sur chacun d'eux. On peut aisĂ©ment calculer l'angle entre deux lignes issues d'un mĂŞme nĹ“ud, c'est ce que fait la commande \verb-\arcbetweennodes-. Ensuite, la macro \verb-\arclabel- trace un arc de cercle entre deux liaisons et Ă©crit un texte Ă&nbsp; cĂ´tĂ© de cet arc : l'argument optionnel de cette macro est le code passĂ© Ă&nbsp; \TIKZ. L'argument \no2 est le rayon de l'arc tandis que les trois arguments suivants sont les noms des nĹ“uds globaux entre lesquels doit ĂŞtre tracĂ© l'arc, le nom du milieu devant ĂŞtre celui du sommet de l'angle. Enfin, le dernier argument est le texte Ă&nbsp; Ă©crire.

\exemple*{Angles et texte sur les liaisons}|\newcommand\angstrom{\mbox{\normalfont\AA}}
\newcommand\namebond[4][5pt]{\chemmove{\path(#2)--(#3)node[midway,sloped,yshift=#1]{#4};}}

\newcommand\arcbetweennodes[3]{%
  \pgfmathanglebetweenpoints{\pgfpointanchor{#1}{center}}{\pgfpointanchor{#2}{center}}%
  \let#3\pgfmathresult}

\newcommand\arclabel[6][stealth-stealth,shorten &lt;=1pt,shorten &gt;=1pt]{%
  \chemmove{%
    \arcbetweennodes{#4}{#3}\anglestart \arcbetweennodes{#4}{#5}\angleend
    \draw[#1]([shift=(\anglestart:#2)]#4)arc(\anglestart:\angleend:#2);
    \pgfmathparse{(\anglestart+\angleend)/2}\let\anglestart\pgfmathresult
    \node[shift=(\anglestart:#2+1pt)#4,anchor=\anglestart+180,rotate=\anglestart+90,inner sep=0pt,
          outer sep=0pt]at(#4){#6};}}

\chemfig{@{a}A=[:30,1.5]@{b}B-[7,2]@{c}C-@{d}D}
\namebond{a}{b}{\scriptsize My text}
\namebond[-3.5pt]{b}{c}{\small\color{red}$\pi$}
\namebond{c}{d}{\small1 \angstrom}
\medskip

MolĂ©cule d'eau horizontale : \chemfig{@{1}H-[::37.775,2]@{2}O-[::-75.55,2]@{3}H}.
\namebond{1}{2}{\footnotesize0,9584 \angstrom}
\namebond{2}{3}{\footnotesize0,9584 \angstrom}
\arclabel{0.5cm}{1}{2}{3}{\footnotesize104,45\textdegree}
\qquad
MolĂ©cule d'eau pivotĂ©e de +30\textdegree : \chemfig{[:30]@1H-[::37.775,2]@2O-[::-75.55,2]@3H}
\namebond12{\footnotesize0,9584 \angstrom}
\namebond23{\footnotesize0,9584 \angstrom}
\arclabel{0.5cm}{1}{2}{3}{\footnotesize104,45\textdegree}|

\subsection{Dessiner des liaisons multiples}
LĂ&nbsp; encore, la librairie Â«decorations.markingsÂ» permet de tracer des liaisons multiples :

\exemple*{Liaisons multiples}|\catcode`\_=11
\tikzset{nbond/.style args={#1}{%
	draw=none,%
	decoration={%
		markings,%
		mark=at position 0 with {\coordinate (CFstart@) at (0,0);},
		mark=at position 1 with {%
		\foreach\CF_i in{0,1,...,\number\numexpr#1-1}{%
			\pgfmathsetmacro\CF_nbondcoeff{\CF_i-0.5*(#1-1)}%
			\draw ([yshift=\CF_nbondcoeff\CF_doublesep]CFstart@)--(0,\CF_nbondcoeff\CF_doublesep);
			}%
		}
		},
	postaction={decorate}
	}
}
\catcode`\_=8
\chemfig{A-[1,,,,nbond=4]B-[:-30,,,,nbond=5]C-[6,,,,nbond=6]D}|

\part{SchĂ©mas rĂ©actionnels}\label{schemas}
Suite Ă&nbsp; 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 Â«\falseverb\schemestartÂ» et Â«\falseverb\schemestopÂ». Comme on le constate sur cet exemple, des \falseverb{informations de dĂ©bogage} ont Ă©tĂ© masquĂ©es puis rendues visibles pour aider Ă&nbsp; la comprĂ©hension avec la \chevrons{clĂ©} \CFkey{scheme debug} et la valeur \CFval{true} ou \CFval{false} :
\exemple[50]{Exemple 1}/\setchemfig{scheme debug=false}
\schemestart
  \chemfig{*6(-=-=-=)}\arrow
  \chemfig{X=[1]Y}\arrow
  \chemfig{S&gt;T}
\schemestop
\bigskip

\setchemfig{scheme debug=true}
\schemestart
  \chemfig{*6(-=-=-=)}\arrow
  \chemfig{X=[1]Y}\arrow
  \chemfig{S&gt;T}
\schemestop/

Quelques remarques :
\begin{itemize}
	\item les commandes \falseverb{\arrow} tracent les flĂ¨ches;
	\item tout ce qui se trouve entre deux commande \falseverb{\arrow} est considĂ©rĂ© comme Ă©tant un 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 \falseverb{\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 \chevrons{clĂ©} \CFkey{scheme debug} 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 recommence Ă&nbsp; 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 Ă&nbsp; bord entre deux composĂ©s est dĂ©finie avec la \chevrons{clĂ©} \CFkv{compound sep}{dim}\label{compound sep}. La valeur par dĂ©faut de la \CFval{dim} est 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 \chevrons{clĂ©} \CFkv{arrow offset}{dim}. Par dĂ©faut, cette \CFval{dim} vaut 4pt.\label{arrow offset}
\end{itemize}

\section{Types de flĂ¨ches}\label{arrow}
Lorsque la commande \falseverb{\arrow} est suivie d'un argument optionnel entre accolades (qui n'est donc pas obligatoire), cet argument contient le type de flĂ¨che :
\exemple[50]{Types de flĂ¨ches}|\schemestart A\arrow{-&gt;}B\schemestop\par % par dĂ©faut
\schemestart A\arrow{-/&gt;}B \schemestop\par
\schemestart A\arrow{&lt;-}B \schemestop\par
\schemestart A\arrow{&lt;-&gt;}B \schemestop\par
\schemestart A\arrow{&lt;=&gt;}B \schemestop\par
\schemestart A\arrow{&lt;-&gt;&gt;}B \schemestop\par
\schemestart A\arrow{&lt;&lt;-&gt;}B \schemestop\par
\schemestart A\arrow{0}B \schemestop\par
\schemestart A\arrow{-U&gt;}B \schemestop|
La flĂ¨che Â«\verb/-U&gt;/Â» 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 Ă&nbsp; cette flĂ¨che, voir page~\pageref{fleche.arg.optionnel}. Voici une flĂ¨che Â«\verb/-U&gt;/Â» avec son arc de cercle : \schemestart A\arrow{-U&gt;[$\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 \falseverb\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 flĂ¨che est caractĂ©risĂ©e par :
\begin{itemize}
	\item un angle exprimĂ© en degrĂ©s;
	\item un coefficient qui spĂ©cifie la longueur de la flĂ¨che par multiplication de la valeur de l'espacement entre composĂ©s dĂ©fini par \CFkey{compound sep};
	\item 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 Ă&nbsp; l'aide des \chevrons{clĂ©s}
\begin{itemize}
	\item \CFkv{arrow angle}{angle}, dont la valeur est 0 par dĂ©faut;
	\item \CFkv{arrow coeff}{decimal}, dont la valeur est 1 par dĂ©faut;
	\item \CFkv{arrow style}{code tikz}, dont la valeur par dĂ©faut est vide.
\end{itemize}

\exemple[50]{DĂ©finition de valeurs par dĂ©faut}/\schemestart A\arrow B\arrow C\schemestop

\setchemfig{arrow angle=15,arrow coeff=1.5,
arrow style={red, thick}}
\schemestart A\arrow B\arrow C\schemestop

\setchemfig{arrow coeff=2.5,arrow style=dashed}
\schemestart A\arrow B\arrow C\schemestop

\setchemfig{arrow angle={},arrow coeff={},arrow style={}}
\schemestart A\arrow B\arrow C\schemestop/

Pour modifier localement une, ou toutes ces valeurs par dĂ©faut, la commande \falseverb{\schemestart} admet un argument optionnel de la forme \verb-[angle,coeff,style]- qui change les caractĂ©ristiques par dĂ©faut Ă&nbsp; l'intĂ©rieur du schĂ©ma rĂ©actionnel concernĂ© :
\exemple[50]{Argument optionnel}/\setchemfig{arrow angle=5,arrow coeff=2.5,arrow style=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, 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 Ă&nbsp; Ă©craser celui par dĂ©faut qui est Â«blueÂ».

Enfin, la commande \falseverb{\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}
On peut passer outre le mĂ©canisme automatique qui nomme les composĂ©s Â«c1Â», Â«c2Â», etc. Pour cela, la commande \falseverb{\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 composĂ© se trouvant Ă&nbsp; l'origine de la flĂ¨che et Â«\verb-n2-Â» celui se trouvant Ă&nbsp; sa fin. N'importe quelle chaĂ®ne de caractĂ¨res alphanumĂ©riques peut ĂŞtre utilisĂ©e. La numĂ©rotation des noms "c&lt;n&gt;" continue en interne ce qui signifie que si un 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}/\setchemfig{scheme debug=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 composĂ© avec la flĂ¨che qui le prĂ©cĂ¨de ou avec la flĂ¨che qui le suit. Par contre lorsqu'un 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}/\setchemfig{scheme debug=true}
\schemestart
  A\arrow(--foo)B\arrow(bar--)C
\schemestop/
Ici, le 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}
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 \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 par dĂ©faut n'est pas bon car les deux Â«AÂ» ne sont pas alignĂ©s verticalement. Les \falseverb{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}/\setchemfig{scheme debug=true}
\schemestart
  \chemfig{A*5(-----)}
  \arrow
  \chemfig{A*5(---(-)--)}
\schemestop/
Pour que l'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}/\setchemfig{scheme debug=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/

Un dernier ancre reste Ă&nbsp; spĂ©cifier, c'est celui du premier composĂ© par rapport Ă&nbsp; la \falseverb{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}/\setchemfig{scheme debug=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 composĂ© vaut par dĂ©faut Â«textÂ». Il est rĂ©glable avec le second argument optionnel de la commande \falseverb{\schemestart} :
\exemple[50]{RĂ©glage de l'ancre initial}/\setchemfig{scheme debug=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}
Toujours par l'intermĂ©diaire de l'argument entre parenthĂ¨ses de la commande \falseverb{\arrow}, on peut spĂ©cifier avec des instructions de \TIKZ le style Â«\verb-s-Â» de la boĂ®te englobante du composĂ© de dĂ©part ou de celui d'arrivĂ©e. La syntaxe complĂ¨te de la commande \falseverb{\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Ă© Ă&nbsp; 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{compound style}La \chevrons{clĂ©} \CFkv{compound style}{code tikz} permet de dĂ©finir de faĂ§on gĂ©nĂ©rale le style des composĂ©s 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}/\setchemfig{compound style={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}
Jusqu'Ă&nbsp; 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Ă&nbsp; que le nom des composĂ©s va prendre toute son importance. Dans l'argument entre parenthĂ¨ses de la commande \falseverb{\arrow}, si un nom est prĂ©cĂ©dĂ© de \og\verb-@-\fg, cela signifie que ce composĂ© existe dĂ©jĂ&nbsp;. 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 Ă&nbsp; 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Ă&nbsp; 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 Ă&nbsp; 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Â» Ă&nbsp; Â«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 Ă&nbsp; XX
  \arrow(@xx2--@c4)% flĂ¨che XX Ă&nbsp; D
\schemestop/

\section{Sous schĂ©ma}\label{subscheme}
On peut placer une partie d'un schĂ©ma rĂ©actionnel dans une boĂ®te englobante unique, considĂ©rĂ©e par \CF comme un composĂ©. La commande \falseverb{\subscheme} dont l'argument obligatoire contient le sous schĂ©ma entre accolades permet de grouper un sous schĂ©ma comme un tout et lorsque \falseverb{\subscheme} se trouve aprĂ¨s une flĂ¨che, la commande enveloppe ce sous schĂ©ma dans un composĂ© portant le nom Â«c&lt;n+1&gt;Â» :
\exemple[50]{Sous schĂ©ma}/\setchemfig{scheme debug=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 Ă&nbsp; l'intĂ©rieur du sous schĂ©ma Â«c3Â» pour B, Â«c4Â» pour C. Comme le premier 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 :
\exemple[50]{Sous schĂ©ma}/\setchemfig{scheme debug=true}
\schemestart
  A\arrow(--.mid west)
  \subscheme{B\arrow[-90,2]C}
  \arrow
  D
\schemestop/
Il faut noter que la commande \falseverb\subscheme\Verb-{&lt;scheme&gt;}- n'Ă©tant rien d'autre qu'un raccourci pratique pour
\begin{center}
\falseverb\schemestart\Verb-&lt;scheme&gt;-\falseverb\schemestop
\end{center}
Par consĂ©quent, \falseverb\subscheme{} admet les mĂŞmes arguments optionnels que \falseverb\schemestart.

\label{chemleft}\CF fournit la paire de commandes \falseverb{\chemleft} et \falseverb{\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 Ă&nbsp; la suite des primitives de \TeX{} \verb-\left- et \verb-\right- :
\begin{center}
	\Verb/\chemleft&lt;car1&gt;&lt;matĂ©riel&gt;\chemright&lt;car2&gt;/
\end{center}
oĂą \Verb-&lt;car1&gt;- et \Verb-&lt;car2&gt;- 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 \falseverb{\chemleft} et \falseverb{\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 \falseverb{\chemup} et \falseverb{\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 :
\begin{center}
	\Verb/\chemup&lt;car1&gt;&lt;matĂ©riel&gt;\chemdown&lt;car2&gt;/
\end{center}
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 \falseverb{\chemleft}, \falseverb{\chemright}, \falseverb{\chemup} et \falseverb{\chemdown} sont disponibles, l'extension \CF ne procĂ¨de \emph{pas} Ă&nbsp; ce chargement, il appartient donc Ă&nbsp; l'utilisateur de le faire s'il souhaite avoir accĂ¨s Ă&nbsp; 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 &gt;=6pt]
  \subscheme{B\arrow[-90,2]C}
  \arrow[,,shorten &lt;=6pt]
  D
\schemestop/

Les sous schĂ©mas doivent ĂŞtre utilisĂ©s Ă&nbsp; 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}/\setchemfig{scheme debug=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 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 Ă&nbsp; 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}/\setchemfig{scheme debug=true}
\schemestart
  A
  \arrow(--tsoin){-&gt;}[-90]
  tsoin
  \arrow{&lt;-}[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}
Ă€ l'intĂ©rieur de l'argument entre accolades de la commande \falseverb\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|-&gt;|Â», Â«\verb|&lt;-|Â», Â«\verb|&lt;-&gt;|Â», Â«\verb|&lt;=&gt;|Â», Â«\verb|&lt;&lt;-&gt;|Â»,Â«\verb|&lt;-&gt;&gt;|Â», Â«\verb|-/&gt;|Â» ont trois arguments optionnels :
	\begin{itemize}
		\item le premier contient le Â«labelÂ» qui sera placĂ© au dessus de la flĂ¨che;
		\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 entre la flĂ¨che et l'ancre des labels avec la \chevrons{clĂ©} \CFkv{arrow label sep}{dim}\label{arrow label sep} qui vaut 3pt par dĂ©faut. 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 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&gt;|Â» dispose de 5 arguments optionnels :
	\begin{itemize}
		\item les trois premiers sont identiques Ă&nbsp; 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 Â«\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}/\setchemfig{scheme debug=false}
\schemestart A\arrow{-&gt;[sur][sous]}B \schemestop
\qquad
\schemestart A\arrow{-&gt;[sur][sous][4pt]}B \schemestop
\qquad
\schemestart A\arrow{-&gt;[sur][sous][-4pt]}B \schemestop
\medskip

\schemestart A\arrow{&lt;=&gt;[sur][sous]}[30,1.5]B \schemestop
\medskip

\schemestart[-20]
  A\arrow{-&gt;}B\arrow{-&gt;[][][3pt]}C\arrow{-&gt;[][][-3pt]}D
\schemestop/
Un problĂ¨me survient lorsque les flĂ¨ches sont verticales :
\exemple[50]{FlĂ¨ches verticales}/\schemestart
  A\arrow{-&gt;[sur][sous]}[-90]B
\schemestop/
Par souci de lisibilitĂ©, il serait souhaitable que les labels placĂ©s au dessus et au dessous soient horizontaux. On peut choisir l'angle selon lequel les labels sont affichĂ©s, 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-*{&lt;angle&gt;}- :
\exemple[55]{Choix des angles}/\setchemfig{scheme debug=true}
\schemestart A\arrow{-&gt;[*{0}sur][*{0}sous]}[90]B\schemestop
\qquad
\schemestart A\arrow{-&gt;[*{0}sur][*{0}sous]}[45]B\schemestop
\qquad
\schemestart A\arrow{-&gt;[*{0}sur][*{0}sous]}[-45]B\schemestop
\qquad
\schemestart A\arrow{-&gt;[*{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}/\setchemfig{scheme debug=true}
\schemestart
  A\arrow{-&gt;[*{0}au-dessus][*{0}au-dessous]}[45,2]B
\schemestop/
On peut spĂ©cifier Ă©galement l'ancre d'attache pour Ă©craser celui choisi par \CF par dĂ©faut. Il suffit d'utiliser la syntaxe suivante : \Verb-*{&lt;angle&gt;.&lt;ancre&gt;}-.
\exemple[50]{Ancres}/\setchemfig{scheme debug=true}
\schemestart
  A\arrow{-&gt;[*{0.0}au-dessus][*{0.180}au-dessous]}[45,2]B
\schemestop
\qquad
\schemestart
  A\arrow{-&gt;[*{0.south east}au-dessus]%
    [*{0.north west}au-dessous]}[45,2]B
\schemestop/

Le cas particulier Ă&nbsp; envisager est la flĂ¨che Â«\verb/-U&gt;/Â». 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&gt;}}/\schemestart A\arrow{-U&gt;[123][456]}B\schemestop
\qquad
\schemestart A\arrow{-U&gt;[123]}[30]B\schemestop
\qquad
\schemestart A\arrow{-U&gt;[][456]}[-30]B\schemestop/

Le quatriĂ¨me et cinquiĂ¨me argument optionnel changent les dimensions de l'arc de cercle. Ils reprĂ©sentent respectivement le coefficient qui multiplie la longueur de la flĂ¨che pour obtenir le rayon et l'angle correspondant au demi arc de cercle (seule la valeur absolue de l'angle est prise en compte) :
\exemple[50]{La flĂ¨che \texttt{-U&gt;}}/\schemestart A\arrow{-U&gt;[123][456][][0.25]}B\schemestop
\qquad
\schemestart A\arrow{-U&gt;[123][456][][][90]}B\schemestop
\qquad
\schemestart A\arrow{-U&gt;[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&gt;}}/\schemestart
  A\arrow{-U&gt;[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&gt;}}/\schemestart
  A\arrow{-U&gt;[123][456]}[-90]B
\schemestop
\qquad
\schemestart
  A\arrow{-U&gt;[*{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 \falseverb{\definearrow} permet de construire des flĂ¨ches personnalisĂ©es. La syntaxe de cette commande est la suivante :

\hfill\Verb-\definearrow{&lt;nombre&gt;}{&lt;nom flĂ¨che&gt;}{&lt;code&gt;}-\hfill\null

oĂą \Verb-&lt;nombre&gt;- est le nombre d'arguments optionnels auxquels on fera rĂ©fĂ©rence dans le \Verb-&lt;code&gt;- 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 \verb|\catcode`\_=11| et \verb|\catcode`\_=8|.
\begin{itemize}
	\item \falseverb{\CF_arrowstartname} et \falseverb{\CF_arrowendname} contiennent les noms des composĂ©s (qui sont des nĹ“uds pour \TIKZ) entre lesquels doit ĂŞtre tracĂ©e la flĂ¨che;
	\item \falseverb{\CF_arrowstartnode} et \falseverb{\CF_arrowendnode} 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 \falseverb\arrow;
	\item \falseverb{\CF_arrowcurrentstyle} et \falseverb{\CF_arrowcurrentangle} contiennent le style et l'angle de la flĂ¨che devant ĂŞtre tracĂ©e;
	\item \falseverb{\CF_arrowshiftnodes}\Verb-{&lt;dim&gt;}- dĂ©cale les nĹ“uds Â«\falseverb{\CF_arrowstartnode}Â» et Â«\falseverb{\CF_arrowendnode}Â» de la dimension contenue dans son argument et ce, dans la direction perpendiculaire Ă&nbsp; la flĂ¨che;
	\item \falseverb{\CF_arrowdisplaylabel}\verb/{#1}{#2}{#3}{#4}{#5}{#6}{#7}{#8}/ est la plus complexe et se charge de placer les labels 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 Ă&nbsp; 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 Ă&nbsp; la fin de la flĂ¨che.
	\end{itemize}
	\item les extrĂ©mitĂ©s de flĂ¨ches employĂ©es sont basĂ©es sur le modĂ¨le Â«\verb-CF-Â» pour une flĂ¨che complĂ¨te et avec l'option Â«harpoonÂ» 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/-.&gt;/Â». DĂ©cidons qu'elle admettra 4 arguments optionnels. Comme pour les flĂ¨ches dĂ©jĂ&nbsp; dĂ©finies, le premier et le second seront les labels Ă&nbsp; mettre au dessus et au dessous et le troisiĂ¨me sera le dĂ©calage de la flĂ¨che dans le sens perpendiculaire Ă&nbsp; sa direction. Enfin, le 4\ieme{} argument sera la taille du point que l'on prendra Ă©gale Ă&nbsp; 2pt si le 4\ieme{} argument est absent.

Nous allons d'abord Ă©crire \verb/\definearrow{4}{-.&gt;}/ pour dĂ©clarer que la flĂ¨che aura 4 arguments optionnels et s'appellera \verb/-.&gt;/. 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 \falseverb{\CF_arrowshiftnodes}, et il suffit donc de commencer le code de la flĂ¨che par : \falseverb{\CF_arrowshiftnodes}\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 \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_arrowcurrentstyle,-CF]/\par
\hskip4em\verb/(\CF_arrowstartnode)--(\CF_arrowendnode)coordinate[midway](mid@point);/\par
\hskip2em\verb-\filldraw(mid@point)circle(\pt_radius);%-}

Il ne nous reste plus qu'Ă&nbsp; placer les labels s'ils existent avec la ligne suivante :

\hskip2em\verb/\CF_arrowdisplaylabel{#1}{0.5}{+}{\CF_arrowstartnode}{#2}{0.5}{-}{\CF_arrowendnode}/

Voici notre flĂ¨che achevĂ©e :
\exemple*{FlĂ¨che Â«-.&gt;Â»}/\catcode`\_11
\definearrow4{-.&gt;}{%
  \edef\pt_radius{\ifx\empty#4\empty 2pt\else #4\fi}% rayon du point
  \CF_arrowshiftnodes{#3}%
  \expandafter\draw\expandafter[\CF_arrowcurrentstyle,-CF](\CF_arrowstartnode)--(\CF_arrowendnode)
    coordinate[midway](mid@point);
  \filldraw(mid@point)circle(\pt_radius);%
  \CF_arrowdisplaylabel{#1}{0.5}{+}{\CF_arrowstartnode}{#2}{0.5}{-}{\CF_arrowendnode}
  }
\catcode`\_8
\schemestart
A \arrow{-.&gt;} B \arrow{-.&gt;[sur][sous][][1pt]} C \arrow{-.&gt;[][sous]}[30] D \arrow{-.&gt;[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/-CF/Â» sera tracĂ©e.

Si l'argument \verb-#1- n'est pas vide, ce qui nous intĂ©resse ne sont pas \falseverb{\CF_arrowstartnode} et \falseverb{\CF_arrowendnode} 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Ă&nbsp; dĂ©terminĂ©s par les ancres qui sont calculĂ©s pour des flĂ¨ches \emph{rectilignes} ! Nous allons plutĂ´t prendre \falseverb{\CF_arrowstartname} et \falseverb{\CF_arrowendname} 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 &lt;=\CF_arrowoffset,shorten &gt;=\CF_arrowoffset,\CF_arrowcurrentstyle,-CF,/\par\parskip0pt
\verb/(\CF_arrowstartname).. controls #1 ..(\CF_arrowendname);%/}

On doit rajouter le code \TIKZ qui permet de raccourcir la flĂ¨che tracĂ©e de la valeur \falseverb{\CF_arrowoffset} dĂ©finie par \falseverb{\setarrowoffset} puisqu'on ne part pas des nĹ“uds correspondant aux flĂ¨ches rectilignes \falseverb{\CF_arrowstartnode} et \falseverb{\CF_arrowendnode}. Il faudra donc rajouter au dĂ©but de \falseverb{\CF_arrowcurrentstyle} le code suivant :
\begin{center}
	\verb/shorten &lt;=\CF_arrowoffset, shorten &gt;=\CF_arrowoffset/
\end{center}
c'est ce que font les deux lignes qui suivent le \verb-\else-.

Voici donc notre flĂ¨che :
\exemple*{FlĂ¨che courbe}/\catcode`\_11
\definearrow1{s&gt;}{%
\ifx\empty#1\empty
  \expandafter\draw\expandafter[\CF_arrowcurrentstyle,-CF](\CF_arrowstartnode)--(\CF_arrowendnode);%
\else
  \def\curvedarrow_style{shorten &lt;=\CF_arrowoffset,shorten &gt;=\CF_arrowoffset,}%
  \CF_eaddtomacro\curvedarrow_style\CF_arrowcurrentstyle
  \expandafter\draw\expandafter[\curvedarrow_style,-CF](\CF_arrowstartname)..controls#1..(\CF_arrowendname);
\fi
}
\catcode`\_8
\schemestart
A\arrow{s&gt;}
B\arrow{s&gt;[+(0.5cm,0.5cm)]}
C\arrow{s&gt;[+(45:1cm)]}
D\arrow(.60--.120){s&gt;[+(60:1cm) and +(-120:1cm)]}
E\arrow{s&gt;[+(45:1) and +(-135:1)]}
F\arrow{s&gt;[+(-30:1) and +(150:1)]}[,1.5]
G\arrow(.90--.90){s&gt;[+(60:1)and+(120:1)]}[,2]
H
\schemestop

\schemestart
A\arrow(.90--.180){s&gt;[+(90:0.8) and +(180:0.8)]}[45]B
\arrow(.0--.90){s&gt;[+(0:0.8) and +(90:0.8)]}[-45]C
\arrow(.-90--.0){s&gt;[+(-90:0.8) and +(0:0.8)]}[-135]D
\arrow(.180--.-90){s&gt;[+(180:0.8) and +(-90:0.8)]}[135]
\schemestop/

\section{La commande \protect\texttt{\textbackslash merge}}
La commande \falseverb{\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 \falseverb{\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-&gt;-Â» (qui est celui par dĂ©faut si le caractĂ¨re est absent), Â«\verb-&lt;-Â», Â«\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Ă&nbsp; 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 \falseverb\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&gt;(c1)(c2)(c3)--()suite 1
\arrow suite 2
\schemestop
\bigskip

\schemestart
Foooo\arrow(foo--bar){&lt;=&gt;}Bar\arrow(--baz){&lt;=&gt;}Bz
\merge^(foo)(bar)(baz)--()suite
\schemestop
\bigskip

\setchemfig{scheme debug=true}
\schemestart
A\arrow{&lt;-&gt;}[90]B
\merge&lt;(c1.120)(c2)--(foobar.45[circle,blue])CCC
\schemestop/

En ce qui concerne la gĂ©omĂ©trie de la flĂ¨che \falseverb{\merge}, celle-ci se compose de $n$ traits qui partent de chaque composĂ© et vont jusqu'Ă&nbsp; 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 \falseverb\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 Ă&nbsp; joindre et la ligne de jonction s'obtient en multipliant l'espacement entre les composĂ©s dĂ©fini avec \falseverb{\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 \falseverb{\merge} est dĂ©fini par le dernier argument \verb-style-.
\end{itemize}

\exemple*{ParamĂ¨tres gĂ©omĂ©triques de \string\merge}/\schemestart A\arrow{&lt;=&gt;}[90]B\merge(c1)(c2)--()C\schemestop\qquad
\schemestart A\arrow{&lt;=&gt;}[90]B\merge(c1)(c2)--()[1]C\schemestop\qquad
\schemestart A\arrow{&lt;=&gt;}[90]B\merge(c1)(c2)--()[,1]C\schemestop\qquad
\schemestart A\arrow{&lt;=&gt;}[90]B\merge(c1)(c2)--()[,,0.2]C\schemestop\qquad
\schemestart A\arrow{&lt;=&gt;}[90]B\merge(c1)(c2)--()[,,0.9,red,thick]C\schemestop
\bigskip

\schemestart A\arrow{&lt;=&gt;}B\merge^(c1)(c2)--()C\schemestop\qquad
\schemestart A\arrow{&lt;=&gt;}B\merge^(c1)(c2)--()[1]C\schemestop\qquad
\schemestart A\arrow{&lt;=&gt;}B\merge^(c1)(c2)--()[,1]C\schemestop\qquad
\schemestart A\arrow{&lt;=&gt;}B\merge^(c1)(c2)--()[,,0.2]C\schemestop\qquad
\schemestart A\arrow{&lt;=&gt;}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 \falseverb{\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 \falseverb{\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Ă&nbsp; prĂ©sentĂ©es pour les labels des flĂ¨ches sont ici possibles, Ă&nbsp; 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{&lt;=&gt;}[90]DEF\merge&gt;[sur][sous](c1)(c2)--()[0.25,1,0.75]GHIJ
\schemestop\qquad
\schemestart
ABC\arrow{&lt;=&gt;}[90]DEF\merge&gt;[*{45.south west}sur][*{45.north east}sous](c1)(c2)--()[0.25,1,0.75]GHIJ
\schemestop\qquad
\schemestart
ABC\arrow{&lt;=&gt;}[90]DEF\merge&gt;[*{90}sur][*{90}sous](c1)(c2)--()[0.25,1,0.75]GHIJ
\schemestop
\bigskip

\schemestart
ABC\arrow{&lt;=&gt;}DEF\merge v[sur][sous](c1)(c2)--()[0.25,1,0.75]GHIJ
\schemestop\qquad
\schemestart
ABC\arrow{&lt;=&gt;}DEF\merge v[*{45.north west}sur][*{45.south east}sous](c1)(c2)--()[0.25,1,0.75]GHIJ
\schemestop\qquad
\schemestart
ABC\arrow{&lt;=&gt;}DEF\merge v[*{0}sur][*{0}sous](c1)(c2)--()[0.25,1,0.75]GHIJ
\schemestop/

\section{Le signe +}\label{signe+}
Entre les commandes \falseverb{\schemestart} et \falseverb{\schemestop}, on dispose de la macro Â«\falseverb\+Â» qui affiche un signe ${}+{}$. Elle admet un argument optionnel \emph{entre accolades} contenant 3 dimensions sous cette forme \Verb-{&lt;dim1&gt;,&lt;dim2&gt;,&lt;dim3&gt;}- oĂą :
\begin{itemize}
	\item \Verb-&lt;dim1&gt;- et \Verb-&lt;dim2&gt;- sont les dimensions qui vont ĂŞtre insĂ©rĂ©es avant et aprĂ¨s le signe ${}+{}$;
	\item \Verb-&lt;dim3&gt;- est le dĂ©calage vertical que l'on veut faire subir au signe.'
\end{itemize}

On peut Ă©galement spĂ©cifier ces dimensions pour tous les signes ${}+{}$ Ă&nbsp; l'aide des \chevrons{clĂ©s} \CFkv{+ sep left}{dim}, \CFkv{+ sep right}{dim} et \CFkv{+ vshift}{dim}. Ces dimensions ont pour valeur par dĂ©faut 0.5em pour les deux premiĂ¨res et 0pt pour la troisiĂ¨me.

\exemple[50]{La commande \string\+}/\schemestart
A\+B\+{2em,,5pt}C\+{0pt,0pt,-5pt}D\arrow E\+F
\schemestop

\setchemfig{+ sep left=1em,+ sep right=1em,+ vshift=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 \falseverb{\+} fait partie du composĂ© :
\exemple[50]{Les composĂ©s et \string\+}/\setchemfig{scheme debug=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 \falseverb{\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\+}/\setchemfig{scheme debug=true}
\schemestart
\subscheme{A}\+ B\arrow C
\arrow(@c2--)[-90]E
\schemestop
\medskip

\schemestart
A\subscheme{\+}BCDEF \arrow G
\arrow(@c2--)[-90]H
\schemestop/%

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 +}/\setchemfig{scheme debug=true}
\schemestart
  \chemfig{C(&lt;[:40])(&lt;[:160])=[6]C(&lt;[:-130])&lt;[:-20]}
  \+
  \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{\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(&lt;[:40])(&lt;[:160])=[6]C(&lt;[:-130])&lt;[:-20]}
  \arrow{0}[,0]\+
  \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-Ă&nbsp;-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Ă© Ă&nbsp; 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(&lt;[:40])(&lt;[:160])=[6]C(&lt;[:-130])&lt;[:-20]}
  \arrow(--[yshift=-10pt]){0}[,0]\+
  \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,-90=\|}{Br}}
\schemestop
\medskip

\schemestart[][west]
  \chemfig{C(&lt;[:40])(&lt;[:160])=[6]C(&lt;[:-130])&lt;[:-20]}
  \arrow(.south east--.south west){0}[,0]\+
  \chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{0=\|,90=\|,-90=\|}{Br}}
\schemestop/
\newpage

\part{Liste des commandes}
Les commandes crĂ©Ă©es par \CF sont :
\begin{center}
\begin{longtable}{&gt;\footnotesize l&gt;\footnotesize p{9cm}}\\\hline
\hfill\normalsize Commandes\hfill\null &amp;\hfill\normalsize Description\hfill\null\\\hline
\Verb-\chemfig[&lt;paramĂ¨tres&gt;]{&lt;code&gt;}-&amp;dessine la molĂ©cule dont le dessin est dĂ©crit par le \Verb-&lt;code&gt;-\\
\Verb|\setchemfig{&lt;paramĂ¨tres&gt;}|&amp;rĂ¨gle les paramĂ¨tres selon la syntaxe \chevrons{clĂ©}$=$\chevrons{valeur}. En voici la liste avec les valeurs par dĂ©faut:
\begin{itemize}
	\item \CFkv{chemfig style}       {{}}: style passĂ© Ă&nbsp; \TIKZ
	\item \CFkv{atom style}          {{}}: style des nĹ“uds (atomes)
	\item \CFkv{bond join}           {false}: boolĂ©en pour raccord de liaisons
	\item \CFkv{fixed length}        {false}: boolĂ©en pour liaisons de longueurs constantes
	\item \CFkv{cram rectangle}      {false}: boolĂ©en pour tracĂ© des Liaisons de Cram sous forme de rectangle
	\item \CFkv{cram width}          {1.5ex}: dimension de la base des triangles des liaisons de Cram
	\item \CFkv{cram dash width}     {1pt}: largeur des pointillĂ©s des liaisons de Cram
	\item \CFkv{cram dash sep}       {2pt}: espacement des pointillĂ©s des liaisons de Cram
	\item \CFkv{atom sep}            {3em}: espacement entre atomes
	\item \CFkv{bond offset}         {2pt}: espacement entre l'atome et la liaison
	\item \CFkv{double bond sep}     {2pt}: espacement entre les traits des liaisons multiples
	\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{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-
	\item \CFkv{show cntcycle}       {false}: affichage des numĂ©ros des cycles
	\item \CFkv{baseline}            {0pt}: dimension ou nom du nĹ“ud pour rĂ©gler la position verticale
	\item \CFkv{debug}               {false}: affichage des atomes et des groupes d'atomes
	\item \CFkv{autoreset cntcycle}  {true}: remise Ă&nbsp; 0 du compteur de cycles Ă&nbsp; chaque exĂ©cution de \verb|\chemfig|
	\item \CFkv{compound style}      {{}}: style des composĂ©s
	\item \CFkv{compound sep}        {5em}: espacement entre 2 composĂ©s
	\item \CFkv{arrow offset}        {4pt}: espacement entre un composĂ© et la flĂ¨che
	\item \CFkv{arrow angle}         {0}: angle par dĂ©faut des flĂ¨ches de rĂ©action
	\item \CFkv{arrow coeff}         {1}: coefficient de longueur des flĂ¨ches
	\item \CFkv{arrow style}         {{}}: style des flĂ¨ches
	\item \CFkv{arrow double sep}    {2pt}: espacement entre les flĂ¨ches doubles
	\item \CFkv{arrow double coeff}  {0.6}: coefficient de rĂ©duction de la petite flĂ¨che pour les flĂ¨ches doubles
	\item \CFkv{arrow double harpoon}{true}: boolĂ©en pour le tracĂ© des doubles flĂ¨ches sous forme de Â«harponÂ»
	\item \CFkv{arrow label sep}     {3pt}: espacement entre la flĂ¨che et son texte
	\item \CFkv{arrow head}          {-CF}: style des pointes de flĂ¨ches
	\item \CFkv{+ sep left}          {0.5em}: espacement avant le signe $+$
	\item \CFkv{+ sep right}         {0.5em}: espacement aprĂ¨s le signe $+$
	\item \CFkv{+ vshift}            {0pt}: dĂ©calage vertical du signe $+$
	\item \CFkv{gchemname}           {true}: si vrai, rend les assignations de profondeur faites par \verb|chemnameinit| et \verb|chemname| globales
	\item \CFkv{schemestart code}    {}: code exĂ©cutĂ© au tout dĂ©but d'un schĂ©ma rĂ©actionnel non imbriquĂ©
	\item \CFkv{schemestop code}     {}: code exĂ©cutĂ© Ă&nbsp; la toute fin d'un schĂ©ma rĂ©actionnel non imbriquĂ©
\end{itemize}
\\
\verb|\resetchemfig|&amp;Restaure les paramĂ¨tres Ă&nbsp; leurs valeurs par dĂ©faut\\
\falseverb\printatom &amp; cette macro affiche les atomes dans les molĂ©cules. Elle peut ĂŞtre redĂ©finie pour personnaliser l'affichage, voir page~\pageref{perso.affichage}\\
\falseverb\hflipnext&amp;la prochaine molĂ©cule sera inversĂ©e horizontalement\\
\falseverb\vflipnext&amp;la prochaine molĂ©cule sera inversĂ©e verticalement\\
\Verb-\definesubmol{&lt;nom&gt;}&lt;n&gt;[&lt;code1&gt;]{&lt;code2&gt;}- &amp; crĂ©Ă© un alias \Verb-!&lt;nom&gt;- que l'on peut placer dans le code des molĂ©cules Ă&nbsp; dessiner qui remplace le \Verb-&lt;code1&gt;- ou le \Verb-&lt;code2&gt;- selon l'inclinaison de la derniĂ¨re liaison. Voir page~\pageref{definesubmol}\\
\falseverb\chemskipalign &amp; Ignore le groupe d'atomes en cours pour le mĂ©canisme d'alignement vertical. Voir page~\pageref{chemskipalign}.\\
\Verb-\redefinesubmol{&lt;nom&gt;}&lt;n&gt;[&lt;code1&gt;]{&lt;code2&gt;}-&amp; remplace l'alias dĂ©jĂ&nbsp; existant \Verb-!&lt;nom&gt;- par le nouveau \Verb-&lt;code&gt;-. Voir page~\pageref{redefinesubmol}\\[2ex]\hline
&amp;\\
\Verb-\charge{[&lt;paramĂ¨tres&gt;]&lt;pos&gt;[&lt;tikz&gt;]}{&lt;atome&gt;}-&amp; affiche l'\Verb-&lt;atome&gt;- et positionne les charges selon leurs \Verb-&lt;positions&gt;-. Les charges dessinĂ©es sont hors de la boĂ®te englobante de l'\Verb-&lt;atome&gt;-. Voir page~\pageref{charge}\\
\Verb-\Charge{[&lt;paramĂ¨tres&gt;]&lt;pos&gt;[&lt;tikz&gt;]}{&lt;atome&gt;}-&amp; Identique Ă&nbsp; \verb|\charge|, mais les charges sont comptabilisĂ©es dans la boite englobante.\\
\Verb-\chemmove[&lt;options tikz&gt;]&lt;code tikz&gt;-&amp; Ouvre un environnement \verb-tikzpicture- en y ajoutant Ă&nbsp; celles qui existent dĂ©jĂ&nbsp; les \Verb-&lt;options tikz&gt;-, et relie avec le \Verb-&lt;code tikz&gt;- les nĹ“uds posĂ©s dans les molĂ©cules Ă&nbsp; l'aide du caractĂ¨re Â«\verb-@-Â». Voir page~\pageref{mecanismes-reactionnels}.\\[2ex]\hline
&amp;\\
\Verb-\chemabove[&lt;dim&gt;]{&lt;txt1&gt;}{txt2}- &amp; Ă©crit le \Verb-&lt;txt1&gt;- et positionne le \Verb-&lt;txt2&gt;- au dessus en laissant \Verb-&lt;dim&gt;- d'espacement vertical. Cette commande ne change pas la boĂ®te englobante de \Verb-&lt;txt1&gt;-. Voir page~\pageref{chemabove}\\
\Verb-\chembelow[&lt;dim&gt;]{&lt;txt1&gt;}{txt2}- &amp; Ă©crit le \Verb-{txt1}- et positionne le \Verb-&lt;txt2&gt;- au dessous en laissant \Verb-&lt;dim&gt;- d'espacement vertical. Cette commande ne change pas la boĂ®te englobante de \Verb-&lt;txt1&gt;-. Voir page~\pageref{chemabove}\\
\Verb-\Chemabove[&lt;dim&gt;]{&lt;txt1&gt;}{txt2}- &amp; Ă©crit le \Verb-&lt;txt1&gt;- et positionne le \Verb-&lt;txt2&gt;- au dessus en laissant \Verb-&lt;dim&gt;- d'espacement vertical. Voir page~\pageref{chemabove}\\
\Verb-\Chembelow[&lt;dim&gt;]{&lt;txt1&gt;}{txt2}- &amp; Ă©crit le \Verb-{txt1}- et positionne le \Verb-&lt;txt2&gt;- au dessous en laissant \Verb-&lt;dim&gt;- d'espacement vertical. Voir page~\pageref{chembelow}\\
\Verb-\chemname[&lt;dim&gt;]{&lt;molĂ©cule&gt;}{&lt;nom&gt;}- &amp; Affiche le \Verb-&lt;nom&gt;- sous la \Verb-&lt;molĂ©cule&gt;-. Voir page~\pageref{chemname}\\
\falseverb\chemnameinit &amp; initialise la plus grande profondeur des molĂ©cules rencontrĂ©es pour avoir un alignement correct de leurs noms. Voir page~\pageref{chemnameinit}\\[2ex]\hline
&amp;\\
\falseverb\schemestart\dots\falseverb\schemestop&amp; balises entre lesquelles un schĂ©ma rĂ©actionnel est tracĂ©. Voir page~\pageref{schemestart}.\\
\falseverb\arrow&amp; 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.\\
\falseverb\+ &amp; 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+}.\\
\Verb-\subscheme{&lt;code&gt;}- &amp; trace un sous schĂ©ma rĂ©actionnel (la commande n'est dĂ©finie que dans un schĂ©ma rĂ©actionnel). Voir page~\pageref{subscheme}.\\
\falseverb\definearrow &amp; dĂ©finit une flĂ¨che. Voir page~\pageref{definearrow}.\\
\Verb-\chemleft&lt;car1&gt;&lt;matĂ©riel&gt;-\falseverb\chemright\Verb-&lt;car1&gt;-&amp; trace des dĂ©limiteurs extensibles dĂ©finis par \Verb-&lt;car1&gt;- et \Verb-&lt;car2&gt;- Ă&nbsp; gauche et Ă&nbsp; droite du \Verb-&lt;matĂ©riel&gt;-, voir page~\pageref{chemleft}.\\
\Verb-\chemup&lt;car1&gt;&lt;matĂ©riel&gt;-\falseverb\chemdown\Verb-&lt;car1&gt;-&amp; trace des dĂ©limiteurs extensibles dĂ©finis par \Verb-&lt;car1&gt;- et \Verb-&lt;car2&gt;- au dessus et au dessous du \Verb-&lt;matĂ©riel&gt;-, voir page~\pageref{chemup}.\\
\Verb|\polymerdelim[&lt;paramĂ¨tres]{&lt;nĹ“ud1&gt;}{nĹ“ud2&gt;}|&amp; trace des dĂ©limiteurs aux nĹ“uds spĂ©cifiĂ©s, voir page~\pageref{polymerdelim}\\\hline
\end{longtable}
\end{center}
\newpage

\part{Galerie}
Ce manuel s'achĂ¨ve avec des dessins de molĂ©cules plus ou moins complexes.

L'utilisateur curieux pourra s'intĂ©resser au \Verb-&lt;code&gt;- de chaque molĂ©cule, bien que celui-ci devienne parfois rebutant lorsqu'elles deviennent complexes. En effet, au delĂ&nbsp; d'un certain niveau de complexitĂ©, bien qu'il soit est assez facile d'Ă©crire un \Verb-&lt;code&gt;- pour dessiner une molĂ©cule, il est assez ardu de relire ce \Verb-&lt;code&gt;- 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. Bien que \CF ait Ă©tĂ© testĂ© de faĂ§on approfondie et que le numĂ©ro de version soit supĂ©rieur Ă&nbsp; 1.0, j'espĂ¨re que vous serez indulgent quant aux bugs rencontrĂ©s. Un \href{mailto:unbonpetit@netc.fr}{\texttt{\textbf{email}}} pour me signaler tout dysfonctionnement ou toute proposition d'amĂ©lioration sera bienvenu.\nobreak

\hfill Christian \textsc{Tellechea}
\bigskip

\begin{center}
\parskip0pt
$\star$\par
$\star\quad\star$
\end{center}
\bigskip

\exemple*{2-methylpentane}/\chemfig{[7]H_3C-CH(-[6]CH_3)-[1]CH_2-CH_2-[1]CH_3}/

\exemple*{3-Ă©thyl-2-mĂ©thylhexane}/\chemfig{H_3C-[7]CH(-[6]CH_3)-[1]CH(-[7]C_3H_7)-[2]CH_2-[3]H_3C}/

\exemple*{StĂ©arine, formule semi dĂ©veloppĂ©e}/\definesubmol{@}{([0,2]-O-[0,1]C(=[2,1]O)-C_{17}H_{33})}
\chemfig{[2,2]CH_2!@-CH_{\phantom 2}!@-CH_2!@}/

\exemple*{StĂ©arine, formule topologique}/\definesubmol{x}{-[:+30,.6]-[:-30,.6]}
\definesubmol{y}{-O-(=[2,.6]O)-!x!x!x!x!x!x!x!x}
\chemfig{[2]([0]!y)-[,1.5]([0]!y)-[,1.5]([0]!y)}/

\exemple*{2-mĂ©thylpropanoate de mĂ©thyl}/\chemfig{H_3C-CH_2(-[2]CH_3)-C(=[1]O)-[7]O-CH_3}/

\exemple*{La vanilline}/\chemfig{HC*6(-C(-OH)=C(-O-[::-60]CH_3)-CH=C(-[,,,2]HC=[::-60]O)-HC=[,,2])} \quad ou \quad
\chemfig{*6(-(-OH)=(-OCH_3)-=(-=[::-60]O)-=)}/

\exemple*{La cafĂ©ine}/\chemfig{*6((=O)-N(-CH_3)-*5(-N=-N(-CH_3)-=)--(=O)-N(-H_3C)-)}/

\exemple*{L'aspirine}/\chemfig{*6(-=-(-O-[::-60](=[::-60]O)-[::+60])=(-(=[::+60])-[::-60]OH)-=)}/

\exemple*{Anhydride phtalique}/\chemfig{*6(=*5(-(=O)-O-(=O)-)-=-=-)}/

\exemple*{Camphre}/\chemfig{*6(-(&lt;:[::120](-[::-100,0.7])(-[::100,0.7]))--(=O)-(-)(&lt;:[::120])--)}
\quad ou \quad
\setchemfig{cram width=3pt}
\chemfig{&lt;[:10](&gt;[:85,1.8]?(-[:160,0.6])-[:20,0.6])
&gt;[:-10]-[:60](=[:30,0.6]O)-[:170]?(-[:30,0.6])-[:190]-[:240]}/

\exemple*{TriphenylmĂ©thane}/\chemfig{*6(-=-*6(-(-*6(=-=-=-))-*6(=-=-=-))=-=)}
\quad ou \quad
\definesubmol{@}{*6(=-=-=-)}
\chemfig{(-[:-30]!@)(-[:90]!@)(-[:210]!@)}/

\exemple*{Amygdaline}/\setchemfig{cram width=2pt}
\definesubmol{c1}{-[:200]-[:120]O-[:190]}
\definesubmol{c2}{-[:170](-[:200,0.7]HO)&lt;[:300](-[:170,0.6]HO)
-[:10,,,,line width=2pt](-[:-40,0.6]OH)&gt;[:-10]}
\definesubmol{csub}{-[:155,0.65]-[:90,0.65]}
\chemfig{O(!{c1}(!{csub}O(!{c1}(!{csub}OH)!{c2}))!{c2})-[:-30](-[:-90]CN)-[:30]*6(=-=-=-)}/

\exemple*{AdĂ©nosine triphosphate}/\setchemfig{cram width=3pt}
\definesubmol{a}{-P(=[::-90,0.75]O)(-[::90,0.75]HO)-}
\chemfig{[:-54]*5((--[::60]O([::-60]!aO([::-60]!aO([::60]!aHO))))&lt;(-OH)
-[,,,,line width=2pt](-OH)&gt;(-N*5(-=N-*6(-(-NH_2)=N-=N-)=_-))-O-)}/

\exemple*{Viagra}/\chemfig{N*6((-H_3C)---N(-S(=[::+120]O)(=[::+0]O)-[::-60]*6(-=-(-O-[::-60]-[::+60]CH_3)
=(-*6(=N-*5(-(--[::-60]-[::+60]CH_3)=N-N(-CH_3)-=)--(=O)-N(-H)-))-=))---)}/

\exemple*{Ester de cholestĂ©rol}/\chemfig{[:30]R-(=[::+60]O)-[::-60]O-*6(--*6(=--*6(-*5(---(-(-[::+60]Me)
-[::-60]-[::-60]-[::+60]-[::-60](-[::-60]Me)-[::+60]Me)-)-(-[::+0]Me)---)--)-(-[::+0]Me)---)}/

\exemple*{Porphyrine}/\chemfig{?=[::+72]*5(-N=(-=[::-72]*5(-[,,,2]HN-[,,2](=-[::-36]*5(=N-(=-[::-72]*5(-NH-[,,1]?=-=))
-=-))-=-))-=-)}/

\exemple*{Manganese 5,10,15,20-tĂ©tra(N-ethyl-3-carbazolyl) porphyrine}/\definesubmol{A}{*6(=-*5(-*6(-=-=-)--N(--[::-60])-)=-=-)}
\chemfig{([::+180]-!A)=[::+72]*5(-N=(-(-[::+54]!A)=[::-72]*5(-N(-[::-33,1.5,,,draw=none]Mn)
-(=(-[::+72]!A)-[::-36]*5(=N-(=(-[::+54]!A)-[::-72]*5(-N-(-)=-=))-=-))-=-))-=-)}/

\exemple*{PĂ©nicilline}/\chemfig{[:-90]HN(-[::-45](-[::-45]R)=[::+45]O)&gt;[::+45]*4(-(=O)-N*5(-(&lt;:(=[::-60]O)
-[::+60]OH)-(&lt;[::+0])(&lt;:[::-108])-S&gt;)--)}/

\exemple*{LSD}/\chemfig{[:150]?*6(=*6(--*6(-N(-CH_3)--(&lt;(=[::+60]O)-[::-60]N(-[::+60]-[::-60])
-[::-60]-[::+60])-=)([::-120]&lt;H)---)-*6(-=-=-(-[::-30,1.155]\chembelow{N}{H}?)=))}/

\exemple*{Strychnine}/\chemfig{*6(=-*6(-N*6(-(=O)--([::-120]&lt;:H)*7(-O--=?[0]([::-25.714]-[,2]?[1]))
-*6(-?[0,{&gt;}]--(&lt;N?[1]?[2])-(&lt;[::-90]-[::-60]?[2]))(&lt;:[::+0]H)-([::+120]&lt;H))--?)=?-=-)}/

\exemple*{CodĂ©ĂŻne}/\chemfig{[:-30]**6(-(-OH)-?-*6(-(-[3]-[2,2]-[0,.5])*6(-(&lt;:[:-150,1.155]O?)
-(&lt;:OH)-=-)-(&lt;:[1]H)-(-[2]NCH_3)--)---)}/

\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]\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)=-=-)}
	\+
	\chemfig{(=[:-150]O)(-[:-30]R_2)-[2]-[:150]R_1}
	\arrow(.mid east--.mid west){-&gt;[\chemfig{H^+}]}
	\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}\charge{0=\|,-90=\|}{O}}
	\arrow(.mid east--.mid west){&lt;-&gt;}
	\chemfig{\charge{90:3pt=$\scriptstyle\oplus$}{C}([3]-)([5]-)-%
		\charge{0=\|,90=\|,-90=\|,45:3pt=$\scriptstyle\ominus$}{O}}
\schemestop
\chemmove{\draw[shorten &lt;=2pt, shorten &gt;=2pt](db) ..controls +(up:5mm) and +(up:5mm)..(atoo);}/

\exemple*{MĂ©canismes rĂ©actionnels : dĂ©rivĂ©s nitrĂ©s}/\schemestart
	\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){&lt;-&gt;}
	\chemfig{R-\charge{135:3pt=$\scriptstyle\oplus$}{N}([1]-\charge{90:3pt=$\scriptstyle\ominus$}{O})([7]=O)}
\schemestop
\chemmove{
	\draw[shorten &lt;=2pt, shorten &gt;=2pt](db) ..controls +(120:5mm) and +(120:7mm)..(atoo1);
	\draw[shorten &lt;=3pt, shorten &gt;=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}\charge{90=\|}{N}H_2}
	\+
	\chemfig{@{atoc}C([3]-CH_3)([5]-CH_3)=[@{atoo1}]O}
	\chemfig{@{atoo2}\chemabove{H}{\scriptstyle\oplus}}
	\chemmove[-stealth,shorten &lt;=3pt,dash pattern= on 1pt off 1pt,thin]{
		\draw[shorten &gt;=2pt](aton) ..controls +(up:10mm) and +(left:5mm)..(atoc);
		\draw[shorten &gt;=8pt](atoo1) ..controls +(up:10mm) and +(north west:10mm)..(atoo2);}
	\arrow{&lt;=&gt;[\tiny addition]}
	\chemfig{R-@{aton}\chembelow{N}{\scriptstyle\oplus}H([2]-[@{sb}]H)-C(-[2]CH_3)(-[6]CH_3)-OH}
\schemestop
\chemmove{
    \draw[-stealth,dash pattern= on 1pt off 1pt,shorten &lt;=3pt, shorten &gt;=2pt]
    (sb)..controls +(left:5mm) and +(135:2mm)..(aton);}
\par
\schemestart
	\arrow{&lt;=&gt;}
	\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 &lt;=3pt,shorten &gt;=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);}
	\arrow{&lt;=&gt;[\tiny Ă©limination]}\chemfig{R-N=C(-[1]CH_3)(-[7]CH_3)}
	\+
	\chemfig{H_3\chemabove{O}{\scriptstyle\oplus}}
\schemestop/

\exemple*{SchĂ©ma rĂ©actionnel}/\setchemfig{atom sep=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/

\exemple*{RĂ©action d'addition}/\setchemfig{atom sep=2.5em}
\schemestart
	\chemfig{*6(=-(-)(=[2]O))}
	\arrow{-&gt;[\+\chemfig{H^\oplus}]}
	\chemleft[\subscheme[90]{%
		\chemfig{*6((-[2,0.33,,,draw=none]\scriptstyle\oplus)-=(-)-OH)}
		\arrow{&lt;-&gt;}
		\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/

\exemple*{Substitution aromatique Ă©lĂ©ctrophile}Z\setchemfig{atom sep=1.5em}%
\definesubmol{+}{-[,-0.4,,,draw=none]\oplus}%
\schemestart
	\arrow{0}[,0]
	\chemleft[\subscheme{\chemfig{*6(=-=-(-[:120]Br)(-[:60]H)-(!+)-)}
		\arrow{&lt;-&gt;}
		\chemfig{*6(-(!+)-=-(-[:120]Br)(-[:60]H)-=)}
		\arrow{&lt;-&gt;}
		\chemfig{*6(-=-(!+)-(-[:120]Br)(-[:60]H)-=)}}\chemright]
	\arrow(@c2--){&lt;-[*0\chemfig{{-}AlBr_4|^\ominus}][*0\chemfig{Br_2/Al_2Br_3}]}[90,1.5]
	\chemname{\chemfig{*6(-=-=-=-)}}{BenzĂ¨ne 1}
	\arrow(@c4--){-&gt;[*0\chemfig{{-}H^\oplus}]}[90,1.5]
	\chemname{\chemfig{*6(-=-=(-Br)-=-)}}{BromobenzĂ¨ne 2}
	\arrow(@c5.mid east--@c6.mid west)
\schemestop
\chemnameinit{}Z

\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}\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}\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
\chemmove[line width=0.2pt,-stealth,dash pattern = on 2pt off 1pt]{
	\draw[shorten &lt;=2pt](a1)..controls+(200:5mm)and+(200:5mm)..(a2);
	\draw[shorten &gt;=2pt](oh1.west)..controls+(180:15mm)and+(60:5mm)..(a0);
	\draw[shorten &lt;=6pt,shorten &gt;=2pt](o1)..controls+(270:5mm)and+(270:5mm)..(o0);
	\draw[shorten &lt;=2pt](cl0)..controls+(150:5mm)and+(150:5mm)..(cl1.150);
	\draw[shorten &lt;=2pt](o3)..controls +(30:3mm) and +(30:5mm)..(o4.east);
	\draw[shorten &gt;=2pt](oh2.135).. controls +(150:10mm) and +(90:10mm).. (o2);
	\draw[shorten &gt;=2pt,shorten &lt;=5pt]([xshift=-1.5mm]o6.315)..controls +(315:5mm) and +(315:5mm)..(o5);
	\draw[shorten &lt;=2pt](cl2)..controls +(135:5mm) and +(135:5mm)..(cl3.north west);}/

\exemple*{Cannizzaro}/\schemestart
	\chemfig{[:-30]*6(=-=(-@{atoc}C([6]=[@{db}]@{atoo1}O)-H)-=-)}
	\arrow(start.mid east--.mid west){-&gt;[\chemfig{@{atoo2}\chemabove{O}{\scriptstyle\ominus}}H]}
	\chemmove[-stealth,shorten &gt;=2pt,dash pattern=on 1pt off 1pt,thin]{
			\draw[shorten &lt;=8pt](atoo2) ..controls +(up:10mm) and +(up:10mm)..(atoc);
			\draw[shorten &lt;=2pt](db) ..controls +(left:5mm) and +(west:5mm)..(atoo1);}
	\chemfig{[:-30]*6(=-=(-C([6]-[@{sb1}]@{atoo1}\chembelow{O}{\scriptstyle\ominus})([2]-OH)-[@{sb2}]H)-=-)}
	\hspace{1cm}
	\chemfig{[:-30]*6((-@{atoc}C([6]=[@{db}]@{atoo2}O)-[2]H)-=-=-=)}
	\chemmove[-stealth,shorten &lt;=2pt,shorten &gt;=2pt,dash pattern=on 1pt off 1pt,thin]{
			\draw([yshift=-4pt]atoo1.270) ..controls +(0:5mm) and +(right:10mm)..(sb1);
			\draw(sb2) ..controls +(up:10mm) and +(north west:10mm)..(atoc);
			\draw(db) ..controls +(right:5mm) and +(east:5mm)..(atoo2);}
	\arrow(@start.base west--){0}[-75,2]
	{}
	\arrow
	\chemfig{[:-30]*6(=-=(-C([1]-@{atoo2}O-[@{sb}0]@{atoh}H)([6]=O))-=-)}
	\arrow{0}
	\chemfig{[:-30]*6((-C(-[5]H)(-[7]H)-[2]@{atoo1}\chemabove{O}{\scriptstyle\ominus})-=-=-=)}
	\chemmove[-stealth,shorten &gt;=2pt,dash pattern=on 1pt off 1pt,thin]{
			\draw[shorten &lt;=7pt](atoo1.90) ..controls +(+90:8mm) and +(up:10mm)..(atoh);
			\draw[shorten &lt;=2pt](sb) ..controls +(up:5mm) and +(up:5mm)..(atoo2);}
\schemestop/

\begingroup
\catcode`;=12
\exemple*{RĂ©arrangement de Beckmann}/\setchemfig{bond offset=1pt,atom sep=2.5em,compound sep=5em,arrow offset=6pt}
\schemestart
	\chemfig{(-[:-150]R')(-[:-30]R)=[2]N-[:30]OH}
	\arrow{&lt;=&gt;[\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 &lt;=2pt]{
		\draw(a0)..controls +(135:2mm) and +(215:4mm).. (a1);
		\draw(b0)..controls +(120:2mm) and +(180:3mm).. ([yshift=7pt]b1.180);}
	\arrow{&lt;=&gt;[\chemfig{{-}H_2O}]}[,1.1]
	\chemleft[\subscheme[90]{%
		\chemfig{R'-\chemabove{N}{\scriptstyle\oplus}~C-R}
		\arrow{&lt;-&gt;}[,0.75]
		\chemfig{R'-\charge{90=\:}{N}=@{a1}\chemabove{C}{\scriptstyle\oplus}-R}}\chemright]
	\arrow{&lt;=&gt;[\chemfig{H_2@{a0}\charge{0=\:,90=\:}{O}}]}[,1.1]
	\chemmove[red,-stealth,red,shorten &lt;=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{&lt;=&gt;[\chemfig{{-}H^\oplus}]}
	\chemfig{*6(R\rlap{$'$}-N=(-R)-OH)}
	\arrow
	\chemfig{*6(R\rlap{$'$}-\chembelow{N}{H}-(-R)(=[2]O))}
\schemestop/
\endgroup

\exemple*{SchĂ©ma rĂ©actionnel}/\setchemfig{atom sep=1.5em,compound sep=4em}
\schemestart
	\chemfig{-[::30]=_[::-60](-[:: -60])-[::60]}
	\arrow{-&gt;[\chemfig{HCl}]}
	\chemfig{-[::30]-[::-60](-[::120]Cl)(-[::-60])-[::60]}\+\chemfig{-[::30](-[::60]Cl)-[::-60](-[::-60])-[::60]}
	\arrow(@c1--.north west){-&gt;[\chemfig{H_2O}]}[-45,1.7]
	\chemfig{-[::30]-[::-60](-[::120]OH)(-[::-60])-[::60]}\+\chemfig{-[::30](-[::60]OH)-[::-60](-[::-60])-[::60]}
\schemestop/

\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}}
\setchemfig{atom sep=2em}
\schemestart
	\chemfig{H-C(=[:60]O)-[:-60]O-H}
	\arrow(--M1[obrace]){-U&gt;[\scriptsize\chemfig{H_2SO_4^{}}][\scriptsize\chemfig{HSO_4^\ominus}][][.25]}%
		[,1.5,shorten &gt;=6pt]
	\chemfig{H-@{a2}C(-[:60]O-H)(-[:30,.5,,,draw=none]{\scriptstyle\oplus})-[:-60]O-H}
	\arrow(--[cbrace]){&lt;-&gt;}
	\chemfig{H-C(=[:60]\chemabove{O}{\scriptstyle\oplus}-H)-[:-60]O-H}
	\arrow(@M1--){&lt;=&gt;[*{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{&lt;=&gt;[\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]){&lt;=&gt;[*{0}\scriptsize\chemfig{{-}H_2O}][*{0}\tiny elimination]}[-90,,shorten &gt;=6pt]
	\chemfig{H-C(-[:60]O-H)(-[,.5,,,draw=none]{\scriptstyle\oplus})-[:-60]O-CH_3}
	\arrow(--[cbrace]){&lt;-&gt;}
	\chemfig{H-C(=[:60]\chemabove{O}{\scriptstyle\oplus}-H)-[:-60]O-CH_3}
	\arrow{-U&gt;[\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 &lt;=3pt,shorten &gt;=1pt]{
		\draw(a1)..controls +(0:1.5cm)and+(0:3cm).. (a2);
		\draw(b1)..controls +(0:5mm)and+(20:5mm)..(a3);}
\schemestop Z

\exemple*{Addition Ă©lectrophile d'halogĂ¨ne sur l'olĂ©fine}/\schemestart
	\subscheme{%
		\chemfig{C(&lt;[:40])(&lt;[:160])=[6]C(&lt;[:-130])&lt;[:-20]}
		\arrow{0}[,0]\+\chemfig{\charge{90=\|,180=\|,270=\|}{Br}-\charge{90=\|,0=\|,270=\|}{Br}}}
	\arrow(@c1--olefin){&lt;=&gt;[*{0}rapide]}[-90]
	\chemfig{&gt;[:-20]C(&lt;[:40])=[@{db}6]C(&lt;[:-130])&lt;[:-20]}
	\arrow(--bromonium){0}[-90]
	\chemname{\chemfig{C*3((&lt;)(&lt;:[:-155])-\charge{45=\|,-45=\|,180:3pt=$\scriptstyle\oplus$}{Br}-C(&lt;:)(&lt;[:155])-)}}
		{bromonium ion}
	\arrow(--carbeniumA){&lt;&lt;-&gt;}[,1.5]
	\chemname{\chemfig{-[:-30]\chemabove{C}{\scriptstyle\oplus}(-[:30])-[6]C(&lt;:[:-150])(&lt;[:-100])-[:-30]
		\charge{45=\|,-45=\|,225=\|}{Br}}}{Xarbenium ion}
	\arrow(@bromonium--carbeniumB){&lt;&lt;-&gt;}[180,1.5]
	\chemname{\chemfig{-[:-30]\chemabove{C}{\scriptstyle\oplus}(-[:30])-[6]C(&lt;[:-150])
		(&lt;:[:-100])-[:-30]\charge{45=\|,-45=\|,135=\|}{Br}}}{carbenium ion}
	\arrow(@olefin--){0}[,.25]
	\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){&lt;=&gt;[lent, \chemfig{{-}Br^\ominus}]}
	\arrow(@carbeniumB--@olefin){&lt;=&gt;[lent, \chemfig{{-}Br^\ominus}]}
	\chemmove[-stealth,red,shorten &lt;=3pt,shorten &gt;=2pt]{
		\draw(db) .. controls +(20:5mm) and +(135:5mm) .. (Br1);
		\draw(b2) .. controls +(-90:5mm) and +(-120:5mm) .. (Br2);}
\schemestop
\chemnameinit{}/

\exemple*{Sulfonation de la naphtalĂ¨ne}/\definesubmol\cycleoplus{-[,0.25,,,draw=none]\oplus}
\definesubmol{so2oh}{S(=[::90]O)(=[::-90]O)-OH}
\setchemfig{atom sep=2.5em}
\schemestart[,1.5]
	\chemname{\chemfig{*6(=-*6(-=-=-)=-=-)}}{NaphtalĂ¨ne}\+\chemfig{H_2SO_4}
	\arrow(nph.mid east--.south west){-&gt;[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){-&gt;[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
\chemnameinit{}/

\exemple*{TaxotĂ¨re}/\chemfig{-[::-30](-[5])(-[7])-[::+60]-[::-60]O-[::+60](=[::-45]O)-[::+90]HN&gt;:[::-60](-[::+60]**6(------))
-[::-30](&lt;:[2]OH)-[::-60](=[6]O)-[::+60]O&gt;:[::-60]*7(---?(&lt;[::-120]OH)-(&lt;|[1]CH_3)(&lt;:[::-90]CH_3)
-(-[1](&lt;[::+80]HO)-[0](=[::+60]O)-[7](&lt;|[::+130]CH_3)(-[::+75](&lt;|[2]OH)-[::-60]-[::-60](&lt;[::+30]O-[::-90])
-[::-60](&lt;[::+90])(&lt;:[::+30]O-[7](-[6]CH_3)=[0]O)-[::-60])-[6]-[5,1.3]?(&lt;:[7]O-[5](=[::-60]O)
-[6]**6(------)))=(-[2]CH_3)-)}/

% https://tex.stackexchange.com/questions/673490/diverging-arrow-in-chemfig/673572#673572
\exemple*{FlĂ¨ches divergentes}/\schemestart
	\chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}
	\arrow(a--)[,1.5,,,draw=none]
	\subscheme{
		\charge{30:4pt=$\mathrm{S}_1$}{\chemleft{[}\chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}\chemright{]}}
		\arrow(b--c){-&gt;[*{0}ISC]}[-90,1.5]
		\charge{30:4pt=$\mathrm{T}_1$}{\chemleft[\chemfig{(-[:210]R_2)(-[:330]R_1)=[2]O}\chemright{]}}
	}
	\arrow(--d)[,1.5,,,draw=none]
	\chemfig{(-[:210]R_2)(-[:330,0.1,,,draw=none]\charge{330:-1pt=\.\,}{})=[2]O}
	\+
	\chemfig{\charge{90:1pt=\.\,}{R}_1}
\schemestop
\chemmove{
	\draw[thick,shorten &gt;=10pt] (a.east) -- ++(1,0) |- (b.west);
	\draw[thick,shorten &gt;=10pt] (a.east) -- ++(1,0) |- (c.west);
	\draw[-,thick,shorten &gt;=15pt,shorten &lt;=8pt] (b.east) -- ++(1.3,0) |- (d.west);
	\draw[thick,shorten &gt;=10pt,shorten &lt;=8pt] (c.east) -- ++(1.3,0) |- (d.west);
}/
\end{document}</pre></body></html>