From ce848307e04b27ffca160248cee7b6e864fcef1d Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sun, 1 Aug 2021 20:36:01 +0000 Subject: chemfig (1aug21) git-svn-id: svn://tug.org/texlive/trunk@60135 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/generic/chemfig/chemfig.tex | 565 +++++++++++----------- 1 file changed, 285 insertions(+), 280 deletions(-) (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/generic/chemfig/chemfig.tex b/Master/texmf-dist/tex/generic/chemfig/chemfig.tex index 576108ae287..ed8948b2eb3 100644 --- a/Master/texmf-dist/tex/generic/chemfig/chemfig.tex +++ b/Master/texmf-dist/tex/generic/chemfig/chemfig.tex @@ -1,12 +1,12 @@ -% !TeX encoding = ISO-8859-1 +% !TeX encoding = UTF-8 % Ce fichier contient le code de l'extension "chemfig" % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \def\CFname {chemfig} % -\def\CFver {1.6a} % +\def\CFver {1.6b} % % % -\def\CFdate {2021/02/28} % +\def\CFdate {2021/08/01} % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -31,7 +31,7 @@ %-------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% P R É A L A B L E %%% +%%% P R É A L A B L E %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \csname CFloadonce\endcsname \let\CFloadonce\endinput @@ -42,7 +42,7 @@ Draw molecule with an easy syntax (CT)}% \fi -%-------------------------- Régime catcodes -------------------------- +%-------------------------- Régime catcodes -------------------------- \begingroup \def\X#1{\catcode\number`#1=\number\catcode`#1\relax} \xdef\CFrestorecatcode{\X\[\X\]\X\:\X\(\X\)\X\,\X\-\X\=\X\~\X\!\X\?\X\<\X\>\X\;\X\*\X\|\X\@\X\ \X\_}% @@ -53,10 +53,10 @@ \catcode`\>12 \catcode`\;12 \catcode`\*12 \catcode`\|12 \catcode`\@12 \catcode`\#6 \catcode`\ 10 \catcode`\_11 -%-------------------- Vérification des prérequis --------------------- +%-------------------- Vérification des prérequis --------------------- \def\CF_error#1{\errmessage{Package \CFname\space Error: #1.}} \def\CF_warning#1{\immediate\write-1{Package \CFname\space Warning: #1^^J}} -\def\CF_checkprimitive#1#2{% Vérifie que #1 est une primitive et sinon, émet le message #2 et exécute \endinput +\def\CF_checkprimitive#1#2{% Vérifie que #1 est une primitive et sinon, émet le message #2 et exécute \endinput \begingroup \edef\__tempa{\meaning#1}\edef\__tempb{\string#1}\expandafter \endgroup @@ -161,7 +161,7 @@ \def\CF_assigntonil#1#2\_nil{\def#1{#2}} \def\CF_edefaddtomacro#1#2{\CF_expsecond{\CF_addtomacro#1}{\expanded{#2}}} \def\CF_ifnextchar#1#2#3{% - \let\CF_ifnextchartok=#1% <- espace indésirable, bugfix v1.31 + \let\CF_ifnextchartok=#1% <- espace indésirable, bugfix v1.31 \def\CF_ifnextcharcodetrue{#2}% \def\CF_ifnextcharcodefalse{#3}% \futurelet\CF_temptok\CF_ifnextchara @@ -187,7 +187,7 @@ \endgroup \CF_ifempty{#1}% } -\def\CF_iffirsttokmatch#1#2{% est ce que #1 et #2 commencent par les mêmes tokens ? +\def\CF_iffirsttokmatch#1#2{% est ce que #1 et #2 commencent par les mêmes tokens ? \futurelet\CF_toksa\CF_gobtonil#1\relax\_nil \futurelet\CF_toksb\CF_gobtonil#2\relax\_nil \CF_ifx\CF_toksa\CF_toksb @@ -271,8 +271,8 @@ } \def\CF_grabargassigntonil#1\_nil#2{\CF_expsecond{\def#2}{\CF_gobarg#1}} \def\CF_ifbracefirst#1{\CF_ifnum{\catcode\CF_threeea`\expandafter\CF_firsttonil\detokenize{#1.}\_nil=1 }} -\def\CF_substonly#1#2{% #1=entier maxi>0 #2=macro : dans la sc#1, remplace tous les par sauf lorsque le motif est suivi d'un caractère >#1 - \def\CF_atendsubstitute{\edef#2{\the\CF_substtoks}}% macro exécutée à la fin +\def\CF_substonly#1#2{% #1=entier maxi>0 #2=macro : dans la sc#1, remplace tous les par sauf lorsque le motif est suivi d'un caractère >#1 + \def\CF_atendsubstitute{\edef#2{\the\CF_substtoks}}% macro exécutée à la fin \let\CF_substnogroups\CF_substnogrouponly \CF_ifnum{#1>0 } {\let\CF_testifx\empty @@ -290,8 +290,8 @@ \CF_exptwomacroargs\CF_ifstartwith\CF_substcode\CF_substsubst {\CF_grabfirstarg\CF_substcode\CF_temp \CF_expafter{\futurelet\CF_nexttok\CF_gobtonil}\CF_substcode\relax\_nil - \CF_ifnum{0\CF_testifx=1 }% si le prochain token est \let-égal à 1...#1 - {\edef\CF_nexttok{\CF_threeea\CF_firsttonil\expandafter\string\CF_substcode\_nil}% le détokéniser + \CF_ifnum{0\CF_testifx=1 }% si le prochain token est \let-égal à 1...#1 + {\edef\CF_nexttok{\CF_threeea\CF_firsttonil\expandafter\string\CF_substcode\_nil}% le détokéniser \CF_ifnum{0\CF_testif=1 } {\CF_eaddtotoks\CF_substtoks\CF_temp \CF_grabfirstarg\CF_substcode\CF_temp @@ -314,7 +314,7 @@ }% } \def\CF_substall#1{% #1=macro - \def\CF_atendsubstitute{\edef#1{\the\CF_substtoks}}% macro exécutée à la fin + \def\CF_atendsubstitute{\edef#1{\the\CF_substtoks}}% macro exécutée à la fin \let\CF_substnogroups\CF_substnogroupall \CF_expsecond\CF_substi#1% } @@ -347,7 +347,7 @@ \expandafter\endgroup\expandafter\CF_addtotoks\expandafter\CF_substtoks\expandafter{\expandafter{\the\CF_substtoks}}% \CF_substgroups }% - \CF_substtoks{}% initialiser à vide + \CF_substtoks{}% initialiser à vide \expandafter\def\expandafter\CF_substcode\CF_substauxarg \CF_substgroups }% @@ -355,7 +355,7 @@ }% } -%---------------------------- Paramètres ----------------------------- +%---------------------------- Paramètres ----------------------------- \def\CF_defifempty#1#2#3{\CF_ifempty{#2}{\def#1{#3}}{\def#1{#2}}} \defKV[chemfig]{% atom style = \def\CF_atomstyle {#1}, @@ -388,8 +388,8 @@ \def\setchemfig{\setKV[chemfig]} \def\resetchemfig{\restoreKV[chemfig]} \setKVdefault[chemfig]{% - atom style = {},% code tikz mis à la fin de every node/.style - chemfig style = {},% code tikz mis à la fin de l'arugment optionnel de \tikzpicture + atom style = {},% code tikz mis à la fin de every node/.style + chemfig style = {},% code tikz mis à la fin de l'arugment optionnel de \tikzpicture bond join = false, fixed length = false, cram rectangle = false, @@ -425,7 +425,7 @@ }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% D E S S I N M O L É C U L E S %%% +%%% D E S S I N M O L É C U L E S %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \def\CF_sanitizecatcode{% \CF_makeother\[\CF_makeother\]\CF_makeother\:\CF_makeother\(\CF_makeother\)% @@ -439,8 +439,8 @@ \def\CF_nodecontent{\CF_expsecond\printatom{\csname atom_\number\CF_cntatom\endcsname\CF_nodestrut}} \def\chemskipalign{% - \CF_doifempty\CF_bondoutcontentsaved% sauf si un \chemskipalign a été fait à l'atome précédent - {\global\let\CF_bondoutcontentsaved\CF_bondoutcontent}% sauvegarder l'atome d'où vient la liaison + \CF_doifempty\CF_bondoutcontentsaved% sauf si un \chemskipalign a été fait à l'atome précédent + {\global\let\CF_bondoutcontentsaved\CF_bondoutcontent}% sauvegarder l'atome d'où vient la liaison \let\CF_nodestrut\empty } @@ -448,7 +448,7 @@ \def\redefinesubmol{\CF_definesubmolfalse\def_submol} \def\def_submol#1{% - \CF_cntatomgroup=0 % nombre d'arguments supposé + \CF_cntatomgroup=0 % nombre d'arguments supposé \def\CF_temp{#1}% nom \futurelet\CF_toksa\CF_submoltestnxttok } @@ -458,7 +458,7 @@ {\begingroup\CF_sanitizecatcode\CF_expsecond\CF_submolgrabopt{\CF_temp}% } {\afterassignment\CF_submoltestnxttoka% pas d'argument entre crochet - \CF_cntatomgroup=0% cherche le nombre d'arguments éventuels + \CF_cntatomgroup=0% cherche le nombre d'arguments éventuels }% } @@ -478,7 +478,7 @@ \CF_cntatomgroup=0 } {}% - \ifcat\relax\expandafter\noexpand\CF_firsttonil#1\_nil\expandafter\CF_execfirst\else\expandafter\CF_execsecond\fi% si #1 est une séquence de contrôle + \ifcat\relax\expandafter\noexpand\CF_firsttonil#1\_nil\expandafter\CF_execfirst\else\expandafter\CF_execsecond\fi% si #1 est une séquence de contrôle {\expandafter\ifdefined\CF_firsttonil#1\_nil \ifCF_definesubmol \CF_warning{the submol \expandafter\string\CF_firsttonil#1\_nil\space is already defined, the previous definition is lost}% @@ -542,11 +542,11 @@ \let#1\CFthesubmol } -\def\CF_seeknode#1#2#3{% cherche un noeud au début de #1 l'assigne dans la sc #2 et met le reste dans #3 +\def\CF_seeknode#1#2#3{% cherche un noeud au début de #1 l'assigne dans la sc #2 et met le reste dans #3 \let#2\empty \def#3{#1}% \CF_iffirsttokmatch{#1}{ }% - {\CF_expsecond\CF_seeknodea{\romannumeral-`\.\noexpand#1}#2#3}% ignore les espaces au début du groupe d'atome + {\CF_expsecond\CF_seeknodea{\romannumeral-`\.\noexpand#1}#2#3}% ignore les espaces au début du groupe d'atome {\CF_seeknodea{#1}#2#3}% } @@ -581,7 +581,7 @@ } % on sait que #1 commence par -,=,~,<,>. On analyse cette liaison -% #2 reçoit le type de liaisons (1 pour -, 2 pour =, 3 pour ~) +% #2 reçoit le type de liaisons (1 pour -, 2 pour =, 3 pour ~) \def\CF_assignbondcode#1#2{% \futurelet\CF_toksa\CF_gobtonil#1\_nil \edef#2{% @@ -589,14 +589,14 @@ \ifx=\CF_toksa2\else \ifx~\CF_toksa3\else \ifx>\CF_toksa4\else - \ifx<\CF_toksa5\else0% si 0 --> il y a une erreur non due à l'utilisateur + \ifx<\CF_toksa5\else0% si 0 --> il y a une erreur non due à l'utilisateur \fi\fi\fi\fi\fi}% \ifnum#2>3 % si c'est une liaison de Cram - \CF_expafter{\futurelet\CF_toksa\CF_gobtonil}{\CF_gobarg#1\_nil}% chope le caractère suivant + \CF_expafter{\futurelet\CF_toksa\CF_gobtonil}{\CF_gobarg#1\_nil}% chope le caractère suivant \CF_ifx:\CF_toksa - {\edef#2{\number\numexpr#2+2}% si c 'est un ":", signe du pointillé, ajoute 2 + {\edef#2{\number\numexpr#2+2}% si c 'est un ":", signe du pointillé, ajoute 2 }% - {\CF_ifx|\CF_toksa% si c 'est un "|", signe du triangle évidé, ajouter 4 + {\CF_ifx|\CF_toksa% si c 'est un "|", signe du triangle évidé, ajouter 4 {\edef#2{\number\numexpr#2+4}} {}% }% @@ -620,7 +620,7 @@ \CF_assignbondcode{#1}#2% \CF_expsecond{\def\CF_remainafterbond}{\CF_gobarg#1}%mange le premier signe de la liaison \let\CF_doublebondtype\CF_zero - \ifnum#2=2 % si c'est une double liaison, regarde s'il y a un + ou - derrière + \ifnum#2=2 % si c'est une double liaison, regarde s'il y a un + ou - derrière \CF_expafter{\futurelet\CF_toksa\CF_gobtonil}{\CF_gobarg#1\_nil}% \CF_ifx^\CF_toksa {\def\CF_doublebondtype{1}% @@ -632,12 +632,12 @@ \fi }% \else - \ifnum#2>5 % si c'est une laision de Cram pointillée ou triangle évidé - \CF_expsecond{\def\CF_remainafterbond}{\CF_gobtwoargs#1}% mange un caractère de plus + \ifnum#2>5 % si c'est une laision de Cram pointillée ou triangle évidé + \CF_expsecond{\def\CF_remainafterbond}{\CF_gobtwoargs#1}% mange un caractère de plus \fi \fi \CF_expsecond\CF_iffirsttokmatch\CF_remainafterbond\CFhash - {\CF_eexpsecond\CF_iffirsttokmatch{\expandafter\CF_gobarg\CF_remainafterbond.}(%si parenthèse juste après + {\CF_eexpsecond\CF_iffirsttokmatch{\expandafter\CF_gobarg\CF_remainafterbond.}(%si parenthèse juste après {\expandafter\CF_grabbondoffset\CF_remainafterbond\_nil} {}% }% @@ -659,7 +659,7 @@ \pgfmathsetmacro\CF_cycleincrementangle{360/\CF_cyclenum+\CF_initcycleangle}% \edef\CF_currentstringangle{::+\CF_cycleincrementangle}% \def\CF_initcycleangle{0}% - \let\CF_currentlength\CF_defaultlength% et on ignore la longueur de liaison spécifiée + \let\CF_currentlength\CF_defaultlength% et on ignore la longueur de liaison spécifiée \fi \CF_expsecond\CF_setbondangle{\CF_currentstringangle}\CF_currentangle } @@ -690,7 +690,7 @@ \def#3{#1}\def\CF_movebondcoeff{#2}% } -% Argument limités légitimes ici car #2 (qui est ce qui suit "@{}" dans l'argument optionnel) ne DOIT PAS +% Argument limités légitimes ici car #2 (qui est ce qui suit "@{}" dans l'argument optionnel) ne DOIT PAS % commencer par une accolade. \def\CF_grabmovearg @#1#2\_nil{% \CF_ifinstr{#1},% @@ -730,7 +730,7 @@ \CF_expsecond{\def#2}{\CF_gobarg#1}% } -\def\CF_seeksubmol#1#2{% cherche et remplace ! au début de #1. #1=code #2=macro recevant le résultat +\def\CF_seeksubmol#1#2{% cherche et remplace ! au début de #1. #1=code #2=macro recevant le résultat \def\CF_seeksubmloltemp{#1}% \CF_seeksubmola \let#2\CF_seeksubmloltemp @@ -739,7 +739,7 @@ \def\CF_seeksubmola{% \CF_expsecond{\def\CF_seeksubmloltemp}{\romannumeral-`\.\expandafter\noexpand\CF_seeksubmloltemp}% \CF_expsecond\CF_iffirsttokmatch{\CF_seeksubmloltemp}!% - {\CF_eexpsecond{\def\CF_seeksubmloltemp}{\expandafter\CF_gobarg\CF_seeksubmloltemp}% enlève le "!" + {\CF_eexpsecond{\def\CF_seeksubmloltemp}{\expandafter\CF_gobarg\CF_seeksubmloltemp}% enlève le "!" \CF_ifx\empty\CF_seeksubmloltemp {\CF_error{no submol name found after "!"}} {}% @@ -755,13 +755,13 @@ \def\CF_seeksubmolb#1{\CF_seeksubmold#1\relax} -\def\CF_seeksubmolc#1{\expandafter\CF_seeksubmold\csname CF__#1\endcsname\relax}% nom de la sous molécule +\def\CF_seeksubmolc#1{\expandafter\CF_seeksubmold\csname CF__#1\endcsname\relax}% nom de la sous molécule -\def\CF_seeksubmold#1#2\_nil{%#1=macro de la sous molécule #2=reste du code commençant par \relax - \CF_expsecond{\CF_eexpsecond{\def\CF_seeksubmloltemp}}{\expandafter#1\CF_gobarg#2}% supprime le \relax puis ajoute la macro au début et la 2-développe +\def\CF_seeksubmold#1#2\_nil{%#1=macro de la sous molécule #2=reste du code commençant par \relax + \CF_expsecond{\CF_eexpsecond{\def\CF_seeksubmloltemp}}{\expandafter#1\CF_gobarg#2}% supprime le \relax puis ajoute la macro au début et la 2-développe } -\def\CF_insertemptygroup#1{% insère {} au début de la sc #1 +\def\CF_insertemptygroup#1{% insère {} au début de la sc #1 \CF_expsecond{\def#1}{\expandafter{\expandafter}#1}% } @@ -783,7 +783,7 @@ } {\let\CF_atendofchemfig\relax }% - \expanded{% début du tikzpicture + \expanded{% début du tikzpicture \unexpanded{#1}[% remember picture,% every node/.style={% @@ -797,7 +797,7 @@ \unexpanded\expandafter{\CF_chemfigstyle}% ]% }% - \begingroup% \endgroup rajouté en sortie de tracé par \CF_chemfigd + \begingroup% \endgroup rajouté en sortie de tracé par \CF_chemfigd \let\CF_hooklist\empty \ifboolKV[chemfig]{fixed length} {\CF_macrofixedbondlengthtrue} @@ -813,16 +813,16 @@ \ifboolKV[chemfig]{autoreset cntcycle} {\global\CF_cntcycle0 } {}% - \let\CF_lastaction\CF_zero% 0=début du dessin 1=tracé d'un noeud 2=tracé d'une liaison + \let\CF_lastaction\CF_zero% 0=début du dessin 1=tracé d'un noeud 2=tracé d'une liaison \let\CF_startoffset\empty \let\CF_endoffset\empty \let\CF_bondoutcontentsaved\empty \def\CF_cycleanglecorrection{180/\CF_cyclenum}% \def\CF_defaultangle{0}% - \def\CF_defaultstringangle{:0}% angle pris par défaut si le champ est vide + \def\CF_defaultstringangle{:0}% angle pris par défaut si le champ est vide \def\CF_defaultlength{1}% - \let\CF_defaultfromatom\empty% numero de l'atome d'où partent les liaisons par défaut - \let\CF_defaulttoatom\empty% numéro de l'atome où arrivent les laisons par défaut + \let\CF_defaultfromatom\empty% numero de l'atome d'où partent les liaisons par défaut + \let\CF_defaulttoatom\empty% numéro de l'atome où arrivent les laisons par défaut \let\CF_defaulttikz\empty \let\CF_previousbondangle\empty \let\CF_joinbond\CF_zero @@ -832,22 +832,22 @@ \expandafter\CF_assigntonil\expandafter\CF_molecule\scantokens{#4}% \CF_expsecond{\CF_substall\CF_molecule}\CFhash\CFhash \CF_expsecond\CF_chemfigc{\CF_molecule}% - %\endgroup <-- rajouté par \CF_chemfigd + %\endgroup <-- rajouté par \CF_chemfigd #2% fin du tikzpicture \CF_atendofchemfig \endgroup \let\CF_flipstate\CF_zero } -\def\CF_chemfigc#1{% #1 est le code de la molécule +\def\CF_chemfigc#1{% #1 est le code de la molécule \ifnum\CF_lastaction=3 \ifCF_incycle \def\CF_defaultangle{0}% \else - \ifnum\CF_cntcyclebonds=0 % si c'est le début d'un cycle - \pgfmathsetmacro\CF_defaultangle{\CF_previousangle+180+\CF_cycleanglecorrection}% on met la liaison à +180° + correction + \ifnum\CF_cntcyclebonds=0 % si c'est le début d'un cycle + \pgfmathsetmacro\CF_defaultangle{\CF_previousangle+180+\CF_cycleanglecorrection}% on met la liaison à +180° + correction \else - \pgfmathsetmacro\CF_defaultangle{\CF_previousangle-90+180/\CF_cyclenum}% sinon à la bissectrice du sommet du cycle + \pgfmathsetmacro\CF_defaultangle{\CF_previousangle-90+180/\CF_cyclenum}% sinon à la bissectrice du sommet du cycle \fi \fi \let\CF_defaultstringangle\empty @@ -882,7 +882,7 @@ {}% \ifCF_cyclearc% on doit tracer l'arc de cercle dans le cycle ? \pgfmathsetmacro\CF_cyclearcradius{\CF_cycleradiuscoeff*\CF_currentlength*\CF_atomsep/(2*tan(180/\CF_cyclenum))}% - \node[at=(cyclecenter\number\CF_cntcycle),shift=(\CF_cyclearcstartangle:\CF_cyclearcradius pt)](initarc){};% le début de l'arc + \node[at=(cyclecenter\number\CF_cntcycle),shift=(\CF_cyclearcstartangle:\CF_cyclearcradius pt)](initarc){};% le début de l'arc \CF_expafter{\draw[}\CF_cyclearcdirecttikz](initarc) arc (\CF_cyclearcstartangle:\CF_cyclearcendangle:\CF_cyclearcradius pt);% \fi \else @@ -899,7 +899,7 @@ } \def\CF_chemfigd{% - \let\CF_nextaction\CF_chemfigd% à priori, on reboucle + \let\CF_nextaction\CF_chemfigd% à priori, on reboucle \CF_ifx\CF_molecule\empty {\let\CF_nextaction\endgroup } @@ -922,8 +922,8 @@ \fi}% \CF_expafter{\futurelet\CF_toksa\CF_gobtonil}{\CF_molecule\relax\_nil}% \CF_iffirsttokina{-=<>~}% la suite est une liaison - {\ifnum\CF_lastaction=2 % c'est la deuxième liaison consécutive ? - \CF_insertemptygroup\CF_molecule% insère un groupe vide + {\ifnum\CF_lastaction=2 % c'est la deuxième liaison consécutive ? + \CF_insertemptygroup\CF_molecule% insère un groupe vide \edef\CF_bondoutnode{\CF_bondoutnode}% \else \ifCF_incycle @@ -954,18 +954,18 @@ }% \fi \ifcat\relax\detokenize\expandafter{\romannumeral-`\.\expandafter\noexpand\CF_molecule}\relax - % s'il ne reste plus rien après la liaison (sans tenir compte de l'espace devant)-> insère un groupe vide + % s'il ne reste plus rien après la liaison (sans tenir compte de l'espace devant)-> insère un groupe vide \CF_insertemptygroup\CF_molecule \fi }% - {\edef\CF_bondoutnode{\CF_bondoutnode}% évalue le l'atome de départ de liaison - \CF_ifx(\CF_toksa% une parenthèse pour commencer ? + {\edef\CF_bondoutnode{\CF_bondoutnode}% évalue le l'atome de départ de liaison + \CF_ifx(\CF_toksa% une parenthèse pour commencer ? {\ifnum\CF_lastaction=2 % il y avait une liaison juste avant ? \CF_insertemptygroup\CF_molecule \else \CF_expsecond\CF_grabsubmol{\CF_molecule}% \begingroup - \ifCF_incycle\def\CF_lastaction{3}\fi% on était dans un cycle + \ifCF_incycle\def\CF_lastaction{3}\fi% on était dans un cycle \CF_incyclefalse \aftergroup\CF_chemfigd \def\CF_nextaction{\CF_expsecond\CF_chemfigc{\CF_molinparen}}% @@ -974,19 +974,19 @@ {\CF_ifx\CF_molecule\empty {\let\CF_nextaction\endgroup } - {% ce qui reste après le noeud courant n'est pas vide, ne commence pas par "-=~", ni par une parenthèse + {% ce qui reste après le noeud courant n'est pas vide, ne commence pas par "-=~", ni par une parenthèse \CF_ifx*\CF_toksa% un cycle ? {\ifnum\CF_lastaction=2 - \CF_insertemptygroup\CF_molecule% insère un groupe vide + \CF_insertemptygroup\CF_molecule% insère un groupe vide \else \ifCF_incycle \def\CF_lastaction{3}% - \fi% on était dans un cycle + \fi% on était dans un cycle \ifnum\CF_lastaction=3 \let\CF_lastcyclenum\CF_cyclenum \fi \CF_eexpsecond\CF_iffirsttokmatch{\expandafter\CF_gobarg\CF_molecule}*% - {\CF_eexpsecond{\def\CF_molecule}{\expandafter\CF_gobarg\CF_molecule}% enlève la 1er étoile + {\CF_eexpsecond{\def\CF_molecule}{\expandafter\CF_gobarg\CF_molecule}% enlève la 1er étoile \CF_eexpsecond\CF_iffirsttokmatch{\expandafter\CF_gobarg\CF_molecule}[% un crochet ensuite ? {\expandafter\CF_cycleparsepreamblewithoptarg\CF_molecule\_nil% \begingroup inclus }% @@ -1083,8 +1083,8 @@ \CF_next } -% Créé 4 noeuds au dessus et au dessous des noeuds #1 et #2 -% à une distance de #3 du noeud #1 et #4 du noeud #2 +% Créé 4 noeuds au dessus et au dessous des noeuds #1 et #2 +% à une distance de #3 du noeud #1 et #4 du noeud #2 \def\CF_createnormnodes#1#2#3#4{% \CF_doifnotempty{#3} {\node[shape=coordinate,at=(#1),xshift=#3*\CF_normx,yshift=#3*\CF_normy](#11){}; @@ -1118,7 +1118,7 @@ }% } -\def\CF_drawbond#1#2#3#4#5{% #1=type de liaison #2 et #3:nom de noeuds de début et fin #4 et #5: contenu des atomes de début et fin +\def\CF_drawbond#1#2#3#4#5{% #1=type de liaison #2 et #3:nom de noeuds de début et fin #4 et #5: contenu des atomes de début et fin \CF_setoffset\CF_startoffset#4% \CF_setoffset\CF_endoffset#5% \let\CF_currentbondstyle\CF_bondstyle @@ -1154,7 +1154,7 @@ \or \CF_createnormnodes{#2@@}{#3@@}\CF_doublesep\CF_doublesep \CF_drawaxisbond{#2}{#3}% trace la liaison simple dans l'axe\CF_drawbonda(#2@@)--(#3@@); - \begingroup% ajuste éventuellement les longueurs des liaisons doubles + \begingroup% ajuste éventuellement les longueurs des liaisons doubles \ifCF_incycle \ifdim\CF_startoffset=0pt \CF_edefaddtomacro\CF_currentbondstyle{,shorten <=\CF_doublebondlengthcorrection pt}% @@ -1168,7 +1168,7 @@ \or \CF_createnormnodes{#2@@}{#3@@}\CF_doublesep\CF_doublesep \CF_drawaxisbond{#2}{#3}% trace la liaison simple dans l'axe\CF_drawbonda(#2@@)--(#3@@); - \begingroup% ajuste éventuellement les longueurs des liaisons doubles + \begingroup% ajuste éventuellement les longueurs des liaisons doubles \ifCF_incycle \ifdim\CF_startoffset=0pt \CF_edefaddtomacro\CF_currentbondstyle{,shorten \ifnum\CF_flipstate=0 <=-\else>=\fi\CF_doublebondlengthcorrection pt}% @@ -1193,25 +1193,25 @@ \CF_createnormnodes{#3@@}{#2@@}{\CF_crambasewidth/2}{}% \CF_expafter{\filldraw[}\CF_currentbondstyle,line join=bevel](#3@@1)--(#3@@2)--(#2@@)--cycle; \let\CF_joinbond\CF_zero - \or% 6 = liaison Cram pointillée de #2 vers #3 + \or% 6 = liaison Cram pointillée de #2 vers #3 \scope \CF_createnormnodes{#2@@}{#3@@}{\CF_crambasewidth/2}{}% \CF_clipcramornot(#2@@1)--(#2@@2)--(#3@@)--(#2@@1); \CF_expafter{\draw[}\CF_currentbondstyle,dash pattern=on \CF_cramdashlength off \CF_cramdashsep,line width=\CF_crambasewidth](#2@@)--(#3@@); \endscope \let\CF_joinbond\CF_zero - \or% 7 = liaison Cram pointillée de #3 vers #2 + \or% 7 = liaison Cram pointillée de #3 vers #2 \scope \CF_createnormnodes{#3@@}{#2@@}{\CF_crambasewidth/2}{}% \CF_clipcramornot(#3@@1)--(#3@@2)--(#2@@)--(#3@@1); \CF_expafter{\draw[}\CF_currentbondstyle,dash pattern=on \CF_cramdashlength off \CF_cramdashsep,line width=\CF_crambasewidth](#3@@)--(#2@@); \endscope \let\CF_joinbond\CF_zero - \or% 8 = liaison cram rectangle évidé de #2 vers #3 + \or% 8 = liaison cram rectangle évidé de #2 vers #3 \CF_createnormnodes{#2@@}{#3@@}{\CF_crambasewidth/2}{}% \CF_expafter{\draw[}\CF_currentbondstyle,line join=bevel](#2@@1)--(#2@@2)--(#3@@)--cycle; \let\CF_joinbond\CF_zero - \or% 9 = liaison cram rectangle évidé de #3 vers #1 + \or% 9 = liaison cram rectangle évidé de #3 vers #1 \CF_createnormnodes{#3@@}{#2@@}{\CF_crambasewidth/2}{}% \CF_expafter{\draw[}\CF_currentbondstyle,line join=bevel](#3@@1)--(#3@@2)--(#2@@)--cycle; \let\CF_joinbond\CF_zero @@ -1227,7 +1227,7 @@ \def\CF_drawaxisbondnojoin#1#2{\CF_drawbonda(#1@@)--(#2@@);} -\def\CF_drawaxisbondjoin#1#2{% dessine une liaison simple dans l'axe avec raccord rétrograde +\def\CF_drawaxisbondjoin#1#2{% dessine une liaison simple dans l'axe avec raccord rétrograde \ifCF_incycle\ifnum\CF_cntcyclebonds=\CF_cyclenum\relax \let\CF_nexttikz\CF_cyclefirsttikz \fi\fi @@ -1251,7 +1251,7 @@ \CF_ifx\CF_previoustikz\CF_currenttikz {\def\CF_joinbond{1}% \CF_ifzerodim\CF_previousatomgroup - {\CF_ifx\CF_previousbondangle\empty% si début molécule + {\CF_ifx\CF_previousbondangle\empty% si début molécule {\CF_drawbonda(#1@@)--(#2@@); } {\ifdim\CF_startoffset=0pt @@ -1306,7 +1306,7 @@ \def\CF_hookdrawall{% dessine tous les crochets contenus dans la sc \CF_hookdraw \CF_doifnotempty\CF_hookdrawlist - {\expandafter\CF_hookdrawfirst\CF_hookdrawlist\_nil% trace un lien de crochet à crochet + {\expandafter\CF_hookdrawfirst\CF_hookdrawlist\_nil% trace un lien de crochet à crochet \CF_hookdrawall }% } @@ -1326,7 +1326,7 @@ \endgroup } -\def\CF_extractatom#1-#2\_nil{#2}% transforme le bound@outnode en n° de l'atome +\def\CF_extractatom#1-#2\_nil{#2}% transforme le bound@outnode en n° de l'atome \def\CF_gobblemovearg @#1#2\_nil#3{% \expandafter\def\csname atom_\number\CF_cntatom\endcsname{#2}% @@ -1341,8 +1341,8 @@ \def\vflipnext{\def\CF_flipstate{2}} \let\CF_flipstate\CF_zero -\def\CF_drawatomgroup#1#2#3{% #1=angle d'arrivée de la liaison #2=numero atome sur lequel arrive la liaison #3=groupe d'atomes - \expandafter\let\expandafter\CF_bondoutcontent% assigne le contenu de l'atome d'où part la liaison +\def\CF_drawatomgroup#1#2#3{% #1=angle d'arrivée de la liaison #2=numero atome sur lequel arrive la liaison #3=groupe d'atomes + \expandafter\let\expandafter\CF_bondoutcontent% assigne le contenu de l'atome d'où part la liaison \csname \ifdefined\CF_bondoutnode atom_\expandafter\CF_extractatom\CF_bondoutnode\_nil @@ -1358,7 +1358,7 @@ {\CF_drawatomgroupa{{}#3}} {\CF_drawatomgroupa{#3}}% \def\CF_currentatomgroup{#3}% - \CF_removemovearg\CF_currentatomgroup% enlève les "@{}" + \CF_removemovearg\CF_currentatomgroup% enlève les "@{}" \CF_ifinstr{#3}?% {\CF_removehook\CF_currentatomgroup \ifcat\relax\detokenize\expandafter{\romannumeral-`\.\expandafter\noexpand\CF_currentatomgroup}\relax @@ -1398,7 +1398,7 @@ {\def\CF_nodestrut{\vphantom\CF_bondoutcontent}}% {\def\CF_nodestrut{\vphantom\CF_bondoutcontentsaved}}% }% - \edef\CF_optstring{anchor=\ifnum\CF_lastaction=0 base\else\ifCF_incycle center\else\ifCF_macrofixedbondlength 180+#1\else center\fi\fi\fi,at=(CF_node),\CF_nodestyle}% premier atome de la molécule affiché + \edef\CF_optstring{anchor=\ifnum\CF_lastaction=0 base\else\ifCF_incycle center\else\ifCF_macrofixedbondlength 180+#1\else center\fi\fi\fi,at=(CF_node),\CF_nodestyle}% premier atome de la molécule affiché \loop \unless\ifnum\CF_cntatom>\CF_cntatomgroup \CF_eexpafter @@ -1422,10 +1422,10 @@ \repeat \CF_cntatom\CF_hookatomnumber \ifnum\CF_lastaction=2 % s'il faut tracer une liaison - \gdef\CF_cycleanglecorrection{0}% alors c'est qu'un cycle ne peut pas commencer la molécule : annulation de la correction d'angle + \gdef\CF_cycleanglecorrection{0}% alors c'est qu'un cycle ne peut pas commencer la molécule : annulation de la correction d'angle \CF_drawbond\CF_bondtype{\CF_bondoutnode}{n\number\CF_cntgroup-\number\CF_cntatom}\CF_previousatomgroup\CF_currentatomgroup \fi - \def\CF_lastaction{1}% met la dernière action à 1 : affichage d'un noeud + \def\CF_lastaction{1}% met la dernière action à 1 : affichage d'un noeud \loop \ifnum\CF_cntatom>1 \advance\CF_cntatom-1 @@ -1503,7 +1503,7 @@ }% } -% enlève tous les "@{nom}" de la sc #1 +% enlève tous les "@{nom}" de la sc #1 \def\CF_removemovearg#1{% \CF_expsecond\CF_ifinstr{#1}@% {\expandafter\CF_removemovearga#1\_nil#1% @@ -1512,7 +1512,7 @@ {}% } -% enlève le premier "@{}" de l'argument et l'assigne à #2 +% enlève le premier "@{}" de l'argument et l'assigne à #2 \def\CF_removemovearga#1\_nil#2{% \def\CF_removemoveargb##1@{% \CF_expsecond{\def#2}{\CF_gobarg##1}% mange le \relax @@ -1552,15 +1552,15 @@ \CF_drawatomgroupa{#1}% }% {\CF_ifx?\CF_toksa - {\CF_expsecond\CF_iffirsttokmatch{\CF_gobarg#1}[% un crochet après le "?" + {\CF_expsecond\CF_iffirsttokmatch{\CF_gobarg#1}[% un crochet après le "?" {\expandafter\CF_graboptarg\CF_gobarg#1\_nil\CF_afterhook}% {\CF_expafter{\CF_graboptarg[]}{\CF_gobarg#1}\_nil\CF_afterhook}% - \CF_exptwomacroargs\CF_ifinstr{\CF_hooklist}{\expandafter(\CF_hookcurrentname)}% crochet déjà défini ? - {\CF_expsecond\CF_hookparselist{\CF_hookcurrentname}% chercher les caractéristiques du crochet sauvegardé + \CF_exptwomacroargs\CF_ifinstr{\CF_hooklist}{\expandafter(\CF_hookcurrentname)}% crochet déjà défini ? + {\CF_expsecond\CF_hookparselist{\CF_hookcurrentname}% chercher les caractéristiques du crochet sauvegardé \CF_edefaddtomacro\CF_hookdrawlist{% [\CF_hookcurrentname,\CF_hookcurrentlink,\CF_hookcurrenttikz]{\CF_hooksavedcoord}{n\number\CF_cntgroup-\number\CF_cntatomgroup}}% \CF_eaddtomacro\CF_hookdrawlist{\expandafter{\CF_hooksavedcontent}}% - \CF_eaddtomacro\CF_hookdrawlist{\expandafter{\CF_currentatom}}% ajoute les 4 arguments à la liste des crochets à tracer + \CF_eaddtomacro\CF_hookdrawlist{\expandafter{\CF_currentatom}}% ajoute les 4 arguments à la liste des crochets à tracer \global\let\CF_hookdrawlist\CF_hookdrawlist }% {\CF_edefaddtomacro\CF_hooklist{(\CF_hookcurrentname)|n\number\CF_cntgroup-\number\CF_cntatomgroup|}% @@ -1595,7 +1595,7 @@ \def#3{#2}% } -\def\CF_hookparselist#1{% #1 est le nom du noeud à retrouver +\def\CF_hookparselist#1{% #1 est le nom du noeud à retrouver \def\CF_hookparselista##1(#1)|##2|##3|##4\_nil{\def\CF_hooksavedcoord{##2}\def\CF_hooksavedcontent{##3}}% \expandafter\CF_hookparselista\CF_hooklist\_nil } @@ -1630,12 +1630,12 @@ macro atom = \printatom,%macro qui prendra comme argument l'atome recevant la charge circle = false,% false => noeud atome = rectangle macro charge = ,% macro attendue (\printatom ou \ensuremath, par exemple) qui prendra comme argument la charge - extra sep = 1.5pt,% séparation additionnelle entre le noeud (cercle ou rectangle) et la position des charges + extra sep = 1.5pt,% séparation additionnelle entre le noeud (cercle ou rectangle) et la position des charges overlay = true,% charges en "surimpression" shortcuts = true,% raccourcis \. \: \| et \" actifs pour Lewis lewisautorot = true,% rotation auto charge Lewis .radius = 0.15ex,% rayon du point - :sep = 0.3em,% séparation des deux points + :sep = 0.3em,% séparation des deux points .style = {fill=black},% style des points "length = 1.5ex,% longueur rectangle "width = .3ex,% largeur rectangle @@ -1723,7 +1723,7 @@ \def\charge_b#1[#2]#3\_nil{% \charge_c{#1}[#2]{#3}% } -\def\charge_c#1[#2]#3#4{% #1=TF pour overlay, #2= réglages, #3=liste d'emplacements, #4=atome +\def\charge_c#1[#2]#3#4{% #1=TF pour overlay, #2= réglages, #3=liste d'emplacements, #4=atome \setcharge{overlay=#1,#2}% \setbox\CF_chargebox\hbox{\useKV[charge]{macro atom}{#4}}% \CF_ifinsidetikz @@ -1761,7 +1761,7 @@ \vrule width\wd\CF_chargebox height\CF_zero depth\CF_zero};% noeud pour placer les charges \let\enableshortcuts\relax \let\disableshortcuts\relax - \ifboolKV[charge]{shortcuts}\CF_enableshortcuts{}% l'atome n'est _PAS_ concerné par les racourcis + \ifboolKV[charge]{shortcuts}\CF_enableshortcuts{}% l'atome n'est _PAS_ concerné par les racourcis \charge_d#3,\CF_quark=% \endtikzpicture \CF_atendofcharge @@ -1875,7 +1875,7 @@ } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% S C H É M A S R É A C T I O N N E L S %%% +%%% S C H É M A S R É A C T I O N N E L S %%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \let\CF_schemenest\CF_zero @@ -1970,7 +1970,7 @@ } \def\CF_schemestartb[#1]{% - \ifnum\CF_schemenest=1 % la commande n'est pas imbriquée ? + \ifnum\CF_schemenest=1 % la commande n'est pas imbriquée ? \CF_cntcompound0 \fi \edef\CF_currentnodename{c\number\CF_cntcompound}% @@ -1998,7 +1998,7 @@ {\CF_ifx\CF_toksa\bgroup {\ifCF_compound_is_chemfig% bugfix 1.6 \edef\CF_restore_hashcatcode{\catcode\number`\#=\number\catcode`\# \relax}% - \catcode`\#12 % TODO ou carrément mettre # à 12 dans tout l'environnement ? + \catcode`\#12 % TODO ou carrément mettre # à 12 dans tout l'environnement ? \fi \CF_addnextarg } @@ -2007,7 +2007,7 @@ \CF_schemestartd } {\CF_ifx\CF_toksa\chemfig - \CF_compound_is_chemfigtrue% mettre le flag à vrai + \CF_compound_is_chemfigtrue% mettre le flag à vrai {}% \afterassignment\CF_schemestartc \CF_addtomacro\CF_compound @@ -2020,7 +2020,7 @@ \CF_addtomacro\CF_compound{{#1}}% \ifCF_compound_is_chemfig% bugfix 1.6 \CF_restore_hashcatcode - \CF_compound_is_chemfigfalse% mettre le flag à faux + \CF_compound_is_chemfigfalse% mettre le flag à faux \fi \CF_schemestartc } @@ -2100,7 +2100,7 @@ } \def\CF_arrowb(#1.#2[#3]--#4.#5[#6])#7{% - \def\CF_currentarrowtype{#7}% nom de la flèche + \def\CF_currentarrowtype{#7}% nom de la flèche \CF_doifempty\CF_currentarrowtype{\def\CF_currentarrowtype{->}}% \CF_testopt{\CF_arrowc(#1.#2[#3]--#4.#5[#6])}{}% } @@ -2118,7 +2118,7 @@ } % #1, #4 : nom des nodes #2, #5 : ancres des nodes #3, #6 : styles des nodes -% #7 : angle flèche #8 : longueur flèche #9 : style tikz de la flèche +% #7 : angle flèche #8 : longueur flèche #9 : style tikz de la flèche \def\CF_arrowe(#1.#2[#3]--#4.#5[#6])#7#8#9{% \let\CF_arrowcurrentstyle\CF_arrowstyle \if @\expandafter\CF_firsttonil\detokenize{#1.}\_nil% si #1 commence par @ @@ -2154,7 +2154,7 @@ \def\CF_nextnodestyle{#6}% \fi \fi - \CF_arrowgobspaces% mange les espaces puis exécute \CF_nextaction + \CF_arrowgobspaces% mange les espaces puis exécute \CF_nextaction } \def\CF_arrowgobspaces{\futurelet\CF_toksa\CF_arrowgobspacesa} @@ -2167,7 +2167,7 @@ \expandafter\def\expandafter\CF_arrowgobspacesb\space{\futurelet\CF_toksa\CF_arrowgobspacesa} -\def\CF_arrowf#1#2#3#4{% #1=angle #2=longueur #3=ancre départ #4=ancre arrivée +\def\CF_arrowf#1#2#3#4{% #1=angle #2=longueur #3=ancre départ #4=ancre arrivée \def\CF_nextaction{\let\CF_compound\empty\CF_schemestartc}% \def\CF_arrowcurrentangle{#1}\CF_doifempty\CF_arrowcurrentangle{\let\CF_arrowcurrentangle\CF_arrowangle}% \def\CF_currentarrowlength{#2}\CF_doifempty\CF_currentarrowlength{\let\CF_currentarrowlength\CF_arrowlength}% @@ -2187,8 +2187,8 @@ \edef\CF_nextnodeanchor{\CF_ifempty{#4}{180+\CF_arrowcurrentangle}{#4}}% } -% trace un flèche initiée par (@nom--@nom) -% #1=type de flèche #2=nom depart #3=ancre départ #4=nom arrivée #5=ancre arrivée #6=style flèche +% trace un flèche initiée par (@nom--@nom) +% #1=type de flèche #2=nom depart #3=ancre départ #4=nom arrivée #5=ancre arrivée #6=style flèche \def\CF_directarrow#1#2#3#4#5#6{% \CF_expsecond{\def\CF_arrowstartname}{\CF_gobarg#2}% \CF_expsecond{\def\CF_arrowendname}{\CF_gobarg#4}% @@ -2236,7 +2236,7 @@ \def\CF_mergexmin{16383.99999pt}\let\CF_mergeymin\CF_mergexmin \CF_mergeparsenodelist#1(\relax)% calcule les maxi des positions \pgfmathsetmacro\CF_mergeextremeresult{\csname CF_merge\CF_mergeextreme\endcsname\CF_mergesign\CF_mergefromcoeff*\CF_compoundsep}% - \CF_mergec#1(\relax)% trace les lignes entre les noeuds précédents et la ligne de jonction + \CF_mergec#1(\relax)% trace les lignes entre les noeuds précédents et la ligne de jonction \CF_expsecond{\def\CF_temp}{\expandafter[\CF_mergestyle,shorten <=0,shorten >=0,-]}% \if x\expandafter\CF_firsttonil\CF_mergeextreme\_nil \CF_addtomacro\CF_temp{(\CF_mergeextremeresult pt,\CF_mergeymax)--(\CF_mergeextremeresult pt,\CF_mergeymin)}% @@ -2382,7 +2382,7 @@ {\CF_arrowcurrentangle-#390-#1}% } -% #1 = label #2 = position #3 = + ou - (au dessus ou au dessous) #4 : nom du noeud de départ +% #1 = label #2 = position #3 = + ou - (au dessus ou au dessous) #4 : nom du noeud de départ % #5 = label #6 = position #7 = + ou - (au dessus ou au dessous) #8 : nom du noeud de fin \def\CF_arrowdisplaylabel#1#2#3#4#5#6#7#8{% \CF_doifnotempty{#1#5} @@ -2410,7 +2410,7 @@ }% } -% pose des noeuds décalés de la dimension #1 à (\CF_arrowstartnode) et (\CF_arrowendnode) +% pose des noeuds décalés de la dimension #1 à (\CF_arrowstartnode) et (\CF_arrowendnode) \def\CF_arrowshiftnodes#1{% \unless\ifdim\CF_ifempty{#1}\CF_zero{#1}=0pt \expanded{% @@ -2713,226 +2713,226 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% v0.1 2010/06/23 - - Première version publique sur le CTAN + - Première version publique sur le CTAN ---------------------------------------------------------------------- v0.2 2010/08/31 - Ajout de la documentation en anglais. - Correction de bugs. - - \printatom est désormais une macro publique. - - Les espaces sont permis dans les molécules. Ils seront - ignorés par défaut puisque les atomes sont composés en + - \printatom est désormais une macro publique. + - Les espaces sont permis dans les molécules. Ils seront + ignorés par défaut puisque les atomes sont composés en mode math par \printatom - - Une paire de Lewis peut être représentée ":". + - Une paire de Lewis peut être représentée ":". - Dans les cycles, une correction de la longueur du trait - déporté des liaisons doubles est fait de telle sorte que si - l'on écrit \chemfig{*5(=====)}, on obtient deux polygones - réguliers concentriques. - - La séquence de contrôle \setnodestyle permet de spécifier - le style des n?uds dessinés par tikz. + déporté des liaisons doubles est fait de telle sorte que si + l'on écrit \chemfig{*5(=====)}, on obtient deux polygones + réguliers concentriques. + - La séquence de contrôle \setnodestyle permet de spécifier + le style des n?uds dessinés par tikz. ---------------------------------------------------------------------- v0.3 2010/11/21 - - Amélioration de \definesubmol qui accepte les séquences de - contrôle. On peut aussi choisir un alias dont la substitution - est différente selon l'orientation de la liaison qui lui + - Amélioration de \definesubmol qui accepte les séquences de + contrôle. On peut aussi choisir un alias dont la substitution + est différente selon l'orientation de la liaison qui lui arrive dessus. - - Le caractère "|" force la fin d'un atome. Si on écrit + - Le caractère "|" force la fin d'un atome. Si on écrit "D|ef" alors, chemfig verra deux atomes "D" et "ef". - - Le caractère "#" est reconnu lorsqu'il suit un caractère de - liaison. Il doit être suivi d'un argument entre parenthèses - qui contient l'offset de début et de fin qui s'appliqueront - à cette liaison. - - La macro \chemfig admet un argument optionnel qui sera passé - à l'environnement tikzpicture dans lequel elle est dessinée - - Mise en place de la représentation des mécanismes - réactionnels avec la syntaxe "@{}" devant un atome où - "@{,}" au tout début de l'argument d'une liaison. + - Le caractère "#" est reconnu lorsqu'il suit un caractère de + liaison. Il doit être suivi d'un argument entre parenthèses + qui contient l'offset de début et de fin qui s'appliqueront + à cette liaison. + - La macro \chemfig admet un argument optionnel qui sera passé + à l'environnement tikzpicture dans lequel elle est dessinée + - Mise en place de la représentation des mécanismes + réactionnels avec la syntaxe "@{}" devant un atome où + "@{,}" au tout début de l'argument d'une liaison. Cette syntaxe permet de placer un n?ud (au sens de tikz) qui - deviendra l'extrémité des flèches des mécanismes. - Le tracé des flèches est faite par la macro \chemmove dont + deviendra l'extrémité des flèches des mécanismes. + Le tracé des flèches est faite par la macro \chemmove dont l'argument optionnel devient celui de l'environnement - tikzpicture dans lequel sont faites les flèches. - - Pour le mécanisme d'alignement vertical via le \vphantom, la + tikzpicture dans lequel sont faites les flèches. + - Pour le mécanisme d'alignement vertical via le \vphantom, la commande \chemskipalign permet d'ignorer le groupe d'atomes - dans lequel elle est écrite. + dans lequel elle est écrite. - La commande \chemname permet d'afficher un nom sous une - molécule. la commande \chemnameinit initialise la plus grande - profondeur rencontrée. - - La commande \lewis a été modifiée de telle sorte que les - dessins des décorations soient proportionnels à la taille + molécule. la commande \chemnameinit initialise la plus grande + profondeur rencontrée. + - La commande \lewis a été modifiée de telle sorte que les + dessins des décorations soient proportionnels à la taille de la police. ---------------------------------------------------------------------- v0.3a 2011/01/08 - Correction d'un bug dans l'argument optionnel de \definesubmol lorsque celui-ci comporte des crochets. - - Mise à jour du manuel en anglais. + - Mise à jour du manuel en anglais. - Ajout de \vflipnext et \hflipnext pour retourner - horizontalement ou verticalement la prochaine molécule. + horizontalement ou verticalement la prochaine molécule. ---------------------------------------------------------------------- v0.4 2011/03/07 - - chemfig est désormais écrit en plain-etex et donc + - chemfig est désormais écrit en plain-etex et donc utilisable par d'autres formats que LaTeX. - - Un peu plus de rigueur avec les catcodes des caractères - spéciaux, notamment lorsque la commande \chemfig se trouve + - Un peu plus de rigueur avec les catcodes des caractères + spéciaux, notamment lorsque la commande \chemfig se trouve dans l'argument de \chemmove, \chemabove, \chembelow, \chemrel. - TODO : faut-il \scantoker l'argument de \chemfig pour être - définitivement débarrassé de ces histoires de catcode ??? + TODO : faut-il \scantoker l'argument de \chemfig pour être + définitivement débarrassé de ces histoires de catcode ??? - Correction d'un bug dans le calcul de l'angle des liaisons ---------------------------------------------------------------------- v0.4a 2011/04/10 - - Correction d'un bug concernant l'argument optionnel en début - de molécule. + - Correction d'un bug concernant l'argument optionnel en début + de molécule. ---------------------------------------------------------------------- v0.4b 2011/04/24 - - l'argument de \chemfig est tokénisé avec \scantokens ce qui - rend caduc tout souci de code de catégorie, à part #. - - la commande \setbondstyle permet de définir le style des + - l'argument de \chemfig est tokénisé avec \scantokens ce qui + rend caduc tout souci de code de catégorie, à part #. + - la commande \setbondstyle permet de définir le style des liaisons. - correction de l'affichage incorrect des doubles liaisons dans - les cycles après les commandes \hflipnext et \vflipnext - - correction d'un bug lorsqu'un alias commence une molécule + les cycles après les commandes \hflipnext et \vflipnext + - correction d'un bug lorsqu'un alias commence une molécule ---------------------------------------------------------------------- v1.0 2011/06/15 - - les schémas réactionnels sont désormais disponibles. + - les schémas réactionnels sont désormais disponibles. - \Chemabove et \Chembelow modifient la boite englobante. - \Lewis modifie la boite englobante - les macros \chemleft, \chemright, \chemup et \chemdown - affichent des délimiteurs extensibles à gauche, à droite, - au dessus et au dessous d'un matériel. + affichent des délimiteurs extensibles à gauche, à droite, + au dessus et au dessous d'un matériel. ---------------------------------------------------------------------- v1.0a 2011/09/18 - les macros \Lewis et \lewis admettent un argument optionnel - - la macro \setlewisdist règle la distance entre les 2 - électrons + - la macro \setlewisdist règle la distance entre les 2 + électrons ---------------------------------------------------------------------- v1.0b 2011/11/29 - - la commande \merge est désormais protégée entre - \schemestart et \schemestop contre des définitions par d'autres + - la commande \merge est désormais protégée entre + \schemestart et \schemestop contre des définitions par d'autres packages. - - \box0 est utilisé au lieu du maladroit \unhbox0 + - \box0 est utilisé au lieu du maladroit \unhbox0 ---------------------------------------------------------------------- v1.0c 2011/11/30 - - la macro \+ n'est plus explicitement écrite - - vérifie que eTeX est le moteur utilisé + - la macro \+ n'est plus explicitement écrite + - vérifie que eTeX est le moteur utilisé ---------------------------------------------------------------------- v1.0d 2011/12/19 - - les cercles des cycles étaient tracés au mauvais moment. La - longueur de la liaison qui les précédait influait sur le + - les cercles des cycles étaient tracés au mauvais moment. La + longueur de la liaison qui les précédait influait sur le rayon du cercle : \chemfig{-[,0.5]**6(------)} donnait un bug - à l'affichage. + à l'affichage. ---------------------------------------------------------------------- v1.0e 2012/01/13 - la gestion des espaces dans les groupes d'atomes est - désormais plus rigoureuse. Plusieurs bugs ont été - corrigé + désormais plus rigoureuse. Plusieurs bugs ont été + corrigé ---------------------------------------------------------------------- v1.0f 2012/02/24 - - correction d'un bug avec \definesubmol, les catcodes n'étaient - pas correctement gérés. + - correction d'un bug avec \definesubmol, les catcodes n'étaient + pas correctement gérés. ---------------------------------------------------------------------- v1.0g 2012/11/16 - correction d'un bug dans \CF_directarrow pour faire prendre en - compte le style des flèche par défaut - - correction d'un bug dans \CF_lewisc : la boite *doit* être - composée en dehors de l'environnement tikzpicture pour - éviter nullfont si jamais \printatom ne passe pas en mode + compte le style des flèche par défaut + - correction d'un bug dans \CF_lewisc : la boite *doit* être + composée en dehors de l'environnement tikzpicture pour + éviter nullfont si jamais \printatom ne passe pas en mode math. - correction d'un bug dans \CF_chemfigc : si une longueur par - défaut est modifiée par [,] au début d'une molécule - et si des cycles étaient emboités, cette longueur n'était - pas appliquée aux sous-cycles. - - ré-écriture des macros \chemabove et \chembemow pour - prendre en compte le bug (désormais corrigé) dans luatex. - - nouvelle macro \setstacksep qui définit l'espacement par - défaut dans les macros \chemabove et \chembelow. + défaut est modifiée par [,] au début d'une molécule + et si des cycles étaient emboités, cette longueur n'était + pas appliquée aux sous-cycles. + - ré-écriture des macros \chemabove et \chembemow pour + prendre en compte le bug (désormais corrigé) dans luatex. + - nouvelle macro \setstacksep qui définit l'espacement par + défaut dans les macros \chemabove et \chembelow. ---------------------------------------------------------------------- v1.0h 2013/11/28 - - \chemname admet maintenant une version étoilé qui ne tient - pas compte des profondeurs précédentes. - - \CF_dpmax est géré globalement. - - correction d'un bug dans "-U>" : le style de la flèche - n'était pris en compte pour l'arc. + - \chemname admet maintenant une version étoilé qui ne tient + pas compte des profondeurs précédentes. + - \CF_dpmax est géré globalement. + - correction d'un bug dans "-U>" : le style de la flèche + n'était pris en compte pour l'arc. - correction d'un bug dans \CF_directarrow : l'angle de la - flèche n'était pas calculé + flèche n'était pas calculé ---------------------------------------------------------------------- v1.1 2015/02/13 - correction d'un bug dans \CF_seeksubmol : la macro - \CF_molecule est dépouillé de son éventuel espace - en première position. + \CF_molecule est dépouillé de son éventuel espace + en première position. - correction d'un bug dans \CF_arrowf : le nom du prochain - n?ud courant "end@arrow@i" était erroné dans le cas où une - flèche contenait un sous schéma. Ce nom doit dépendre de + n?ud courant "end@arrow@i" était erroné dans le cas où une + flèche contenait un sous schéma. Ce nom doit dépendre de \CF_schemenest. - - la jonction entre deux liaisons consécutives dans l'axe peut - être activé avec \enablebondjoin et désactivé avec - \disablebondjoin (préférable, état par défaut). - - \chemfig suivi d'une "*" demande à ce que les liaisons aient + - la jonction entre deux liaisons consécutives dans l'axe peut + être activé avec \enablebondjoin et désactivé avec + \disablebondjoin (préférable, état par défaut). + - \chemfig suivi d'une "*" demande à ce que les liaisons aient une longueur invariable : la distance inter-atome devient donc - variable. Cette fonctionnalité est désactivé dans les - cycles afin que les polygones soient réguliers. - \enablefixedbondlength permet cette fonctionnalité pour - toutes les macros \chemfig (même non étoilée) tandis que - \disablefixedbondlength le désactive. + variable. Cette fonctionnalité est désactivé dans les + cycles afin que les polygones soient réguliers. + \enablefixedbondlength permet cette fonctionnalité pour + toutes les macros \chemfig (même non étoilée) tandis que + \disablefixedbondlength le désactive. ---------------------------------------------------------------------- v1.1a 2015/02/23 - correction d'un bug dans \CF_grabbondoffset. Si \chemfig est - dans l'argument d'une macro, les # sont doublés par l'action + dans l'argument d'une macro, les # sont doublés par l'action de \scantokens de la macro \CF_chemfigb et il faut un - argument délimité avant "(" pour absorber tous les #. + argument délimité avant "(" pour absorber tous les #. ---------------------------------------------------------------------- v1.2 2015/10/08 - - correction d'un bug dans le tracé des liaisons de Cram. - - création de \setangleincrement. - - chargement de "arrows.meta" et définition de la flèche "CF" - basée sur "Stealth" et définie avec \pgfdeclarearrow. - Les anciennes flèches "CF_full" et "CF_half" sont - abandonnées puisque définies avec \pgfarrowsdeclare. - - flèche "-U>" corrigée : le placement des labels est + - correction d'un bug dans le tracé des liaisons de Cram. + - création de \setangleincrement. + - chargement de "arrows.meta" et définition de la flèche "CF" + basée sur "Stealth" et définie avec \pgfdeclarearrow. + Les anciennes flèches "CF_full" et "CF_half" sont + abandonnées puisque définies avec \pgfarrowsdeclare. + - flèche "-U>" corrigée : le placement des labels est maintenant correct dans tous les cas. Ainsi : -U>[][][][r][a] - place le label près du début de la flèche, quels que + place le label près du début de la flèche, quels que soient les signes du rayon r et de l'angle a. - - \chemrel, \setchemrel et \chemsign sont supprimées. - - compatibilité, avec les limitations d'usage, avec la + - \chemrel, \setchemrel et \chemsign sont supprimées. + - compatibilité, avec les limitations d'usage, avec la librairie "externalize" : le \begin{tikzpicture} voit - désormais le \end{tikzpicture} correspondant dans la macro + désormais le \end{tikzpicture} correspondant dans la macro \CF_chemfigb. ---------------------------------------------------------------------- v1.2a 2015/10/21 - - erreur de copier-coller dans le code: une adresse url était - malencontreusement présente en plein milieu d'une ligne de + - erreur de copier-coller dans le code: une adresse url était + malencontreusement présente en plein milieu d'une ligne de code ---------------------------------------------------------------------- v1.2b 2015/11/15 - bug dans \CF_seeksubmol qui laissait "*" dans le flux de - lecture de TeX. Un message d'erreur est également ajouté + lecture de TeX. Un message d'erreur est également ajouté en cas de "!" en fin de traitement. - - correction d'un bug dans \CF_setbondangle où l'angle [<:a>] - n'était pas évalué par \pgfmathsetmacro. + - correction d'un bug dans \CF_setbondangle où l'angle [<:a>] + n'était pas évalué par \pgfmathsetmacro. ---------------------------------------------------------------------- v1.2c 2015/11/20 - - Correction d'un bug dans \CF_setbondangle : l'angle renvoyé - pouvait être négatif + - Correction d'un bug dans \CF_setbondangle : l'angle renvoyé + pouvait être négatif - Correction d'un bug dans \CF_directarrow : la macro \CF_ifempty - n'est pas correctement développée dans l'argument de + n'est pas correctement développée dans l'argument de \pgfpointanchor ---------------------------------------------------------------------- v1.2d 2015/12/01 - - correction d'un bug dans la flèche "-U" - - la version étoilée de \setcrambond dessine les liaisons de - Cram en pointillés sous forme de trait large et non pas sous + - correction d'un bug dans la flèche "-U" + - la version étoilée de \setcrambond dessine les liaisons de + Cram en pointillés sous forme de trait large et non pas sous forme de triangle. ---------------------------------------------------------------------- v1.2e 2017/05/20 - - la macro contenant la définition d'une flèche est - désormais "\CF_arrow()", ainsi la macro \0 n'est plus - définie par \definearrow - - remerciements rajoutés après une suppression indue, pour ne - froisser aucune susceptibilité + - la macro contenant la définition d'une flèche est + désormais "\CF_arrow()", ainsi la macro \0 n'est plus + définie par \definearrow + - remerciements rajoutés après une suppression indue, pour ne + froisser aucune susceptibilité ---------------------------------------------------------------------- v1.3 2018/03/08 - - tous les paramètres sont désormais passés via \setchemfig qui - fait appel à "simplekv". Par conséquent, _toutes_ les macros qui - réglaient des paramètres deviennent obsolètes, à savoir : + - tous les paramètres sont désormais passés via \setchemfig qui + fait appel à "simplekv". Par conséquent, _toutes_ les macros qui + réglaient des paramètres deviennent obsolètes, à savoir : \setcrambond, \setatomsep, \setbondoffset, \setdoublesep, \setangleincrement, \enablefixedbondlength, \disablefixedbondlength, \setnodestyle, \setbondstyle, @@ -2940,42 +2940,42 @@ v1.3 2018/03/08 \setarrowdefault, \setandsign, \setarrowoffset, \setcompoundsep, \setarrowlabelsep, \enablebondjoin, \disablebondjoin et \schemedebug. - et ces macros seront *supprimées* dans une future version. - - la version étoilée "\chemfig*" et les deux arguments optionnels - de la macro "\chemfig[][]" sont également optionnels et seront - *supprimé*s dans une future version afin d'accéder à la syntaxe - \chemfig[clés=valeurs]{code} - - 6 nouveaux paramètres : "lewis radius", "arrow double sep", + et ces macros seront *supprimées* dans une future version. + - la version étoilée "\chemfig*" et les deux arguments optionnels + de la macro "\chemfig[][]" sont également optionnels et seront + *supprimé*s dans une future version afin d'accéder à la syntaxe + \chemfig[clés=valeurs]{code} + - 6 nouveaux paramètres : "lewis radius", "arrow double sep", "arrow double coeff", "arrow double harpoon", "cycle radius coeff", "arrow head". - correction d'un bug dans \CF_parsemergeopt qui dans certains - cas, envoyait vers l'affichage des caractères + cas, envoyait vers l'affichage des caractères - petit toilettage du code - - macro \polymerdelim (non documentée) expérimentale et encore + - macro \polymerdelim (non documentée) expérimentale et encore en phase de tests - - suppression d'un registre d'écriture de fichier + - suppression d'un registre d'écriture de fichier ---------------------------------------------------------------------- v1.31 2018/04/05 - - correction d'un espace indésirable dans \CF_ifnextchar + - correction d'un espace indésirable dans \CF_ifnextchar ---------------------------------------------------------------------- v1.32 2018/08/23 - - définition de \printatom, \CF_begintikzpicture et + - définition de \printatom, \CF_begintikzpicture et \CF_endtikzpicture dans le fichier t-chemfig.tex ---------------------------------------------------------------------- v1.33 2018/10/31 - - les macros définies par \definesubmol peuvent désormais avoir un ou + - les macros définies par \definesubmol peuvent désormais avoir un ou plusieurs arguments - - macro \polymerdelim documentée + - macro \polymerdelim documentée ---------------------------------------------------------------------- v1.34 2019/02/23 - - bug dans la flèche "<->" corrigé + - bug dans la flèche "<->" corrigé ---------------------------------------------------------------------- v1.4 2019/04/18 - corrections de nombreux bugs - - caractère privé "_" et non plus "@" -> modifications à prévoir - notamment dans la doc avec les codes spécifiques aux flèches, ça + - caractère privé "_" et non plus "@" -> modifications à prévoir + notamment dans la doc avec les codes spécifiques aux flèches, ça risque de couiner sur tex.stackexchange.com - - anciennes macros abandonnées et désormais indéfinies : + - anciennes macros abandonnées et désormais indéfinies : \setcrambond, \setatomsep, \setbondoffset, \setdoublesep, \setangleincrement, \enablefixedbondlength, \disablefixedbondlength, \setnodestyle, \setbondstyle, @@ -2983,64 +2983,69 @@ v1.4 2019/04/18 \setarrowdefault, \setandsign, \setarrowoffset, \setcompoundsep, \setarrowlabelsep, \enablebondjoin, \disablebondjoin et \schemedebug - - l'ancienne syntaxe \chemfig[][]{} est abandonnée et n'est plus - acceptée, désormais c'est - \chemfig[=]{} + - l'ancienne syntaxe \chemfig[][]{} est abandonnée et n'est plus + acceptée, désormais c'est + \chemfig[=]{} - l'ancienne syntaxe \lewis[] ou \Lewis[] n'est - plus acceptée au profit de \lewis[=] + plus acceptée au profit de \lewis[=] ---------------------------------------------------------------------- v1.41 2019/05/21 - utilisation de la nouvelle primitive \expanded - - nouvelle clé "h align" (true par défaut) pour les délimiteurs - de \polymerdelim. Lorsque à false, les délimiteurs ne sont - plus alignés horizontalement mais positionnés aux noeuds demandés - - nouvelle clé "auto rotate" qui n'a de sens que si h align=false : - les délimiteurs sont automatiquement inclinés - - nouvelle clé "rotate" qui n'a de sens que si halign=false ET - auto rotate=false : l'inclinaison des délimiteurs peut être + - nouvelle clé "h align" (true par défaut) pour les délimiteurs + de \polymerdelim. Lorsque à false, les délimiteurs ne sont + plus alignés horizontalement mais positionnés aux noeuds demandés + - nouvelle clé "auto rotate" qui n'a de sens que si h align=false : + les délimiteurs sont automatiquement inclinés + - nouvelle clé "rotate" qui n'a de sens que si halign=false ET + auto rotate=false : l'inclinaison des délimiteurs peut être choisie ---------------------------------------------------------------------- v1.5 2020/03/05 - nouvelles macros \charge et \Charge. Les macros \lewis et \Lewis - sont obsolètes et amenées à disparaitre à moyen terme (au moins + sont obsolètes et amenées à disparaitre à moyen terme (au moins 9 mois), soit fin 2020 - prise en compte de la dimension d'un groupe d'atome pour tracer des liaisons jointives - - bug corrigé dans \CF_seeknode + - bug corrigé dans \CF_seeknode - ajout d'une section dans le manuel (placement des atomes) ---------------------------------------------------------------------- v1.51 2020/04/06 - - bug corrigé dans \chargerect_a et \chargeline_a + - bug corrigé dans \chargerect_a et \chargeline_a ---------------------------------------------------------------------- v1.52 2020/04/14 - - bug : définition corrigée de \CFthesubmol dans \def_submolc pour - qu'elle se développe en 1 coup seulement + - bug : définition corrigée de \CFthesubmol dans \def_submolc pour + qu'elle se développe en 1 coup seulement ---------------------------------------------------------------------- v1.53 2020/04/27 - - mise à jour en fonction des nouvelles fonctionnalités de + - mise à jour en fonction des nouvelles fonctionnalités de l'extension simplekv - - bug : \CF_ifzerodim interrompt maintenant le tracé dans la \hbox + - bug : \CF_ifzerodim interrompt maintenant le tracé dans la \hbox ---------------------------------------------------------------------- v1.54 2020/05/21 - chemfig ne peut plus fonctionner sans \expanded - - bug : un signe "=" laissé par erreur dans le flux + - bug : un signe "=" laissé par erreur dans le flux ---------------------------------------------------------------------- v1.55 2020/06/15 - - chemfig est incompatible avec conTeXt, vu que ce moteur redéfinit - des primitives telles que \expanded, \unexpanded et peut être + - chemfig est incompatible avec conTeXt, vu que ce moteur redéfinit + des primitives telles que \expanded, \unexpanded et peut être d'autres. ---------------------------------------------------------------------- v1.56 2020/07/13 - - le centre des cycles est désormais accessible via un noeud - spécifique pour chacun d'eux. + - le centre des cycles est désormais accessible via un noeud + spécifique pour chacun d'eux. ---------------------------------------------------------------------- v1.6 2021/02/26 - - les macros des formules de Lewis sont retirées et placées dans - le fichier séparé "lewis.tex" que l'utilisateur peut charger + - les macros des formules de Lewis sont retirées et placées dans + le fichier séparé "lewis.tex" que l'utilisateur peut charger s'il le souhaite - - ajout d'une clé pour le trousseau [chemfig] - - à l'intérieur d'un schéma, le token '#' est permis dans + - ajout d'une clé pour le trousseau [chemfig] + - à l'intérieur d'un schéma, le token '#' est permis dans l'argument de \chemfig ---------------------------------------------------------------------- v1.6a 2021/02/28 - - le fichier lewis.tex a été renommé chemfig-lewis.tex + - le fichier lewis.tex a été renommé chemfig-lewis.tex +---------------------------------------------------------------------- +v1.6b 2021/08/01 + - encodage UTF-8 + - la macro \# n'était pas définie pour remplacer «#(...)» lorsque + \chemfig se trouve dans l'argument d'une macro. -- cgit v1.2.3