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