\CFchangelog{v1.71}{2025/10/30} \item bugfix : trop de mauvais raccords de liaisons avec la nouvelle macro !\CF_ifzerodim!. Retour à la précédente définition (la macro !\CF_ifzerodim! n'est utilisée que si \CFkv{use atom strut}{true}). Les codes donnent à nouveau les bons raccords de liaisons : \begin{enumerate} \item !\chemfig{?-A-[:90]B?}! \item !\chemfig{A-@{a}-B}! \item !\chemfig{[:30]-\charge{90=a}{}-[:-30]}! \end{enumerate} On obtient bien !3,6! avec le code suivant : \begin{verbatim} \newcount\xx \begingroup \def\printatom#1{\global\advance\xx1 \ensuremath{\mathrm{#1}}} \xx=0 \setbox0\hbox{\chemfig{A-B-C}} \the\xx, \xx=0 \setbox0\hbox{\chemfig[use atom strut]{A-B-C}}\the\xx \endgroup \end{verbatim} \item bugfix : prise en compte de l'argument optionnel de !\chemfig! dans l'environnement !hreac!. Le code \verb|\hreac\chemfig[angle increment=+30]{A-[1]B} > C\endhreac| ne plante plus à cause du !+! dans l'argument optionnel \item bugfix : prise en compte de l'argument optionnel de !\chemname! dans l'environnement !hreac!. \item bugfix : dans l'environnement !hreac!, l'argument de !\^{}! n'est plus évaluée à !0pt! si exprimé en !ex! ou !em!. \item ajout : par souci de cohérence, dans l'environnement !hreac!, la macro !\name[]{}! a un argument optionnel pour spécifier l'espacement du !! avec le !! \item mise en place de warnings si utilisation d'un ou deux arguments optionnels de !\schemestart!. Création de la clé \CFkey{init anchor} pour accéder au réglage possible avec le deuxième argument optionnel. \item mise en cohérence : la clé \CFkey{name sep} vaut désormais !1.5ex! par défaut et s'applique à !\chemname! si son argument optionnel est vide \endCFchangelog \CFchangelog{v1.7}{2025/10/26} \item réaction horizontales avec l'environnement \begin{center}!\hreac...\endhreac!\end{center} qui offre une syntaxe plus simple que !\schemestart...\schemestop! \item par défaut désormais, l'argument de !\printatom! est développé et dépourvu de strut \footnote{% dysfonctionnement aimablement signalé sur 2 sites % (\href{https://tex.stackexchange.com/questions/752481/chemfig-chemdraw-esque-custom-font-bond-length-commands-breaking-halfway-thro}{tex.stackexchange} % et % \href{https://www.reddit.com/r/LaTeX/comments/1o74erb/chemfig_in_overleaf_throwing_11_errors_on_a/}{reddit}) par Joseph Wright avec son amusante habitude d'exprimer publiquement le mal qu'il pense de mes packages.}. Afin d'assurer la compatibilité, le nouveau booléen \CFkey{use atom strut} peut être mis à \CFval{true} afin de retrouver le comportement précédent \item lorsque la clé \CFkv{use atom strut}{false}, chaque atome n'est composé typographiquement qu'une seule fois alors que c'était parfois 5 fois ou plus auparavant puisque !\vphantom! compose son argument dans une boite de \TeX. La macro !\CF_ifzerodim! a été rapidement corrigée pour que ce soit le cas. Il reste encore des investigations à faire pour que le code soit plus propre... Il se peut que ce changement provoque des petits bugs d'affichage dans le dessin de certaines molécules. Merci de me les signaler. \item suppression de l'historique des changements dans !chemfig.tex! pour le mettre ici dans le manuel. \endCFchangelog \CFchangelog{v1.66}{2023/12/28} \item les liaisons de Cram pleines sont jointes entre elles ou aux liaisons simples lorsque \CFkv{bond join}{true} \endCFchangelog \CFchangelog{v1.6e}{2023/06/30} \item nouvelle clé \CFkey{baseline} pour régler finement l'alignement vertical d'une molécule \endCFchangelog \CFchangelog{v1.6d}{2023/02/18} \item les ancres '!b!' et '!d!' n'étaient pas prises en compte pour le tracé de flèches directes de type !(@a.b-@c.d)! dans les schémas réactionnels \item correction d'un bug : !\CF_currentfromatom! n'était pas initialisé au début d'un cycle et donc le code suivant plantait !\chemfig{AB-[,,2]*3(---)}! \endCFchangelog \CFchangelog{v1.6c}{2022/09/27} \item nouvelles clés \CFkey{gchemname}, \CFkey{schemestart code} et \CFkey{schemestop code} (suggestion de Balazs Debreceni) \endCFchangelog \CFchangelog{v1.6b}{2021/08/01} \item encodage UTF-8 \item la macro !\#! n'était pas définie pour remplacer !#(...)! lorsque !\chemfig! se trouve dans l'argument d'une macro. \endCFchangelog \CFchangelog{v1.6a}{2021/02/28} \item le fichier !lewis.tex! a été renommé !chemfig-lewis.tex! \endCFchangelog \CFchangelog{v1.6}{2021/02/26} \item 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 \item ajout d'une clé \CFkey{debug} pour le trousseau ![chemfig]! \item à l'intérieur d'un schéma, le token '!#!' est permis dans l'argument de !\chemfig! \endCFchangelog \CFchangelog{v1.56}{2020/07/13} \item le centre des cycles est désormais accessible via un nœud spécifique pour chacun d'eux. \endCFchangelog \CFchangelog{v1.55}{2020/06/15} \item chemfig est incompatible avec con\TeX t, vu que ce moteur redéfinit des primitives telles que !\expanded!, !\unexpanded! et peut être d'autres. \endCFchangelog \CFchangelog{v1.54}{2020/05/21} \item chemfig ne peut plus fonctionner sans !\expanded! \item bug : un signe "!=!" laissé par erreur dans le flux \endCFchangelog \CFchangelog{v1.53}{2020/04/27} \item mise à jour en fonction des nouvelles fonctionnalités de l'extension simplekv \item bug : !\CF_ifzerodim! interrompt maintenant le tracé dans la !\hbox! \endCFchangelog \CFchangelog{v1.52}{2020/04/14} \item bug : définition corrigée de !\CFthesubmol! dans !\CF_defsubmolc! pour qu'elle se développe en 1 coup seulement \endCFchangelog \CFchangelog{v1.51}{2020/04/06} \item bug corrigé dans !\chargerect_a! et !\chargeline_a! \endCFchangelog \CFchangelog{v1.5}{2020/03/05} \item nouvelles macros !\charge! et !\Charge!. Les macros !\lewis! et !\Lewis! sont obsolètes et amenées à disparaitre à moyen terme (au moins 9 mois), soit fin 2020 \item prise en compte de la dimension d'un groupe d'atome pour tracer des liaisons jointives \item bug corrigé dans !\CF_searchnode! \item ajout d'une section dans le manuel (placement des atomes) \endCFchangelog \CFchangelog{v1.41}{2019/05/21} \item utilisation de la nouvelle primitive !\expanded! \item nouvelle clé \CFkey{h align} (\CFval{true} par défaut) pour les délimiteurs de !\polymerdelim!. Lorsque à \CFval{false}, les délimiteurs ne sont plus alignés horizontalement mais positionnés aux noeuds demandés \item nouvelle clé \CFkey{auto rotate} qui n'a de sens que si \CFkv{h align}{false} : les délimiteurs sont automatiquement inclinés \item nouvelle clé \CFkey{rotate} qui n'a de sens que si \CFkv{halign}{false} ET \CFkv{auto rotate}{false} : l'inclinaison des délimiteurs peut êtreà false choisie \endCFchangelog \CFchangelog{v1.4}{2019/04/18} \item corrections de nombreux bugs \item caractère privé "!_!" et non plus "!@!" d'où des modifications à prévoir notamment dans la doc avec les codes spécifiques aux flèches, ça risque de couiner sur tex.stackexchange.com \item anciennes macros abandonnées et désormais indéfinies :\par \begingroup\spaceskip=0.75em plus 0.5em minus 0.5em\relax!\setcrambond!, !\setatomsep!, !\setbondoffset!, !\setdoublesep!, !\setangleincrement!, !\enablefixedbondlength!, !\disablefixedbondlength!, !\setnodestyle!, !\setbondstyle!, !\setlewis!, !\setlewisdist!, !\setstacksep!, !\setarrowdefault!, !\setcompoundstyle!, !\setandsign!, !\setarrowoffset!, !\setcompoundsep!, !\setarrowlabelsep!, !\enablebondjoin!, !\disablebondjoin! et !\schemedebug!\endgroup \item l'ancienne syntaxe !\chemfig[][]{}! est abandonnée et n'est plus acceptée, désormais c'est \begin{center}!\chemfig[=]{}!\end{center} \item l'ancienne syntaxe !\lewis[]! ou !\Lewis[]! n'est plus acceptée au profit de !\lewis[=]! \endCFchangelog \CFchangelog{v1.34}{2019/02/23} \item bug dans la flèche "\verb|<->|" corrigé \endCFchangelog \CFchangelog{v1.33}{2018/10/31} \item les macros définies par !\definesubmol! peuvent désormais avoir un ou plusieurs arguments \item macro !\polymerdelim! documentée \endCFchangelog \CFchangelog{v1.32}{2018/08/23} \item définition de !\printatom!, !\CF_begintikzpicture! et !\CF_endtikzpicture! dans le fichier t-chemfig.tex \endCFchangelog \CFchangelog{v1.31}{2018/04/05} \item correction d'un espace indésirable dans !\CF_ifnextchar! \endCFchangelog \CFchangelog{v1.3}{2018/03/08} \item tous les paramètres sont désormais passés via !\setchemfig! qui fait appel à "!simplekv!". Par conséquent, \textit{toutes} les macros qui réglaient des paramètres deviennent obsolètes, à savoir :\par \begingroup\spaceskip=0.75em plus 0.5em minus 0.5em\relax!\setcrambond!, !\setatomsep!, !\setbondoffset!, !\setdoublesep!, !\setangleincrement!, !\enablefixedbondlength!, !\disablefixedbondlength!, !\setnodestyle!, !\setbondstyle!, !\setlewis!, !\setlewisdist!, !\setstacksep!, !\setarrowdefault!, !\setcompoundstyle!, !\setandsign!, !\setarrowoffset!, !\setcompoundsep!, !\setarrowlabelsep!, !\enablebondjoin!, !\disablebondjoin! et !\schemedebug!\endgroup\par Ces macros seront \textbf{supprimées} dans une future version. \item la version étoilée !\chemfig*! et les deux arguments optionnels de la macro !\chemfig[][]! sont également optionnels et seront \textbf{supprimés} dans une future version afin d'accéder à la syntaxe !\chemfig[clés=valeurs]{code}! \item 6 nouveaux paramètres : \CFkey{lewis radius}, \CFkey{arrow double sep}, \CFkey{arrow double coeff}, \CFkey{arrow double harpoon}, \CFkey{cycle radius coeff}, \CFkey{arrow head}. \item correction d'un bug dans !\CF_parsemergeopt! qui dans certains cas, envoyait vers l'affichage des caractères \item petit toilettage du code \item macro !\polymerdelim! (non documentée) expérimentale et encore en phase de tests \item suppression d'un registre d'écriture de fichier \endCFchangelog \CFchangelog{v1.2e}{2017/05/20} \item 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! \item remerciements rajoutés après une suppression indue, pour ne froisser aucune susceptibilité \endCFchangelog \CFchangelog{v1.2d}{2015/12/01} \item correction d'un bug dans la flèche "!-U!" \item la version étoilée de !\setcrambon!d dessine les liaisons de Cram en pointillés sous forme de trait large et non pas sous forme de triangle. \endCFchangelog \CFchangelog{v1.2c}{2015/11/20} \item Correction d'un bug dans !\CF_setbondangle! : l'angle renvoyé pouvait être négatif \item Correction d'un bug dans !\CF_directarrow! : la macro !\CF_ifempty! n'est pas correctement développée dans l'argument de !\pgfpointanchor! \endCFchangelog \CFchangelog{v1.2b}{2015/11/15} \item bug dans !\CF_searchsubmol! qui laissait "!*!" dans le flux de lecture de TeX. Un message d'erreur est également ajouté en cas de "{\ttfamily\string!}" en fin de traitement. \item correction d'un bug dans !\CF_setbondangle! où l'angle ![<:a>]! n'était pas évalué par !\pgfmathsetmacro!. \endCFchangelog \CFchangelog{v1.2a}{2015/10/21} \item erreur de copier-coller dans le code: une adresse url était malencontreusement présente en plein milieu d'une ligne de code \endCFchangelog \CFchangelog{v1.2}{2015/10/08} \item correction d'un bug dans le tracé des liaisons de Cram. \item création de !\setangleincrement!. \item 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!. \item flèche "-U>" corrigée : le placement des labels est maintenant correct dans tous les cas. Ainsi : \begin{center}\verb|-U>|![][][][][]!\end{center} place le label !! près du début de la flèche, quels que soient les signes du rayon !! et de l'angle !!. \item !\chemrel!, !\setchemrel! et !\chemsign! sont supprimées. \item compatibilité, avec les limitations d'usage, avec la librairie "!externalize!" : le !\begin{tikzpicture}! voit désormais le !\end{tikzpicture}! correspondant dans la macro !\CF_chemfigb!. \endCFchangelog \CFchangelog{v1.1a}{2015/02/23} \item correction d'un bug dans !\CF_grabbondoffset!. Si !\chemfig! est 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 "!#!". \endCFchangelog \CFchangelog{v1.1}{2015/02/13} \item correction d'un bug dans !\CF_searchsubmol! : la macro !\CF_molecule! est dépouillé de son éventuel espace en première position. \item 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 !\CF_schemenest!. \item 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). \item !\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. \endCFchangelog \CFchangelog{v1.0h}{2013/11/28} \item !\chemname! admet maintenant une version étoilé qui ne tient pas compte des profondeurs précédentes. \item !\CF_dpmax! est géré globalement. \item correction d'un bug dans "\verb|-U>|" : le style de la flèche n'était pris en compte pour l'arc. \item correction d'un bug dans !\CF_directarrow! : l'angle de la flèche n'était pas calculé \endCFchangelog \CFchangelog{v1.0g}{2012/11/16} \item correction d'un bug dans !\CF_directarrow! pour faire prendre en compte le style des flèche par défaut \item correction d'un bug dans !\CF_lewisc! : la boite \textit{doit} être composée en dehors de l'environnement tikzpicture pour éviter nullfont si jamais !\printatom! ne passe pas en mode math. \item 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. \item ré-écriture des macros !\chemabove! et !\chembemow! pour prendre en compte le bug (désormais corrigé) dans luatex. \item nouvelle macro !\setstacksep! qui définit l'espacement par défaut dans les macros !\chemabove! et !\chembelow!. \endCFchangelog \CFchangelog{v1.0f}{2012/02/24} \item correction d'un bug avec !\definesubmol!, les catcodes n'étaient pas correctement gérés. \endCFchangelog \CFchangelog{v1.0e}{2012/01/13} \item la gestion des espaces dans les groupes d'atomes est désormais plus rigoureuse. Plusieurs bugs ont été corrigés \endCFchangelog \CFchangelog{v1.0d}{2011/12/19} \item 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 : \begin{center}!\chemfig{-[,0.5]**6(------)}!\end{center} donnait un bug à l'affichage. \endCFchangelog \CFchangelog{v1.0c}{2011/11/30} \item la macro !\+! n'est plus explicitement écrite \item vérifie que eTeX est le moteur utilisé \endCFchangelog \CFchangelog{v1.0b}{2011/11/29} \item la commande !\merge! est désormais protégée entre !\schemestart! et !\schemestop! contre des définitions par d'autres packages. \item !\box0! est utilisé au lieu du maladroit !\unhbox0! \endCFchangelog \CFchangelog{v1.0a}{2011/09/18} \item les macros !\Lewis! et !\lewis! admettent un argument optionnel \item la macro !\setlewisdist! règle la distance entre les 2 électrons \endCFchangelog \CFchangelog{v1.0}{2011/06/15} \item les schémas réactionnels sont désormais disponibles. \item !\Chemabove! et !\Chembelow! modifient la boite englobante. \item !\Lewis! modifie la boite englobante \item les macros !\chemleft!, !\chemright!, !\chemup! et !\chemdown! affichent des délimiteurs extensibles à gauche, à droite, au dessus et au dessous d'un matériel. \endCFchangelog \CFchangelog{v0.4b}{2011/04/24} \item l'argument de !\chemfig! est tokénisé avec !\scantokens! ce qui rend caduc tout souci de code de catégorie, à part !#!. \item la commande !\setbondstyle! permet de définir le style des liaisons. \item correction de l'affichage incorrect des doubles liaisons dans les cycles après les commandes !\hflipnext! et !\vflipnext! \item correction d'un bug lorsqu'un alias commence une molécule \endCFchangelog \CFchangelog{v0.4a}{2011/04/10} \item Correction d'un bug concernant l'argument optionnel en début de molécule. \endCFchangelog \CFchangelog{v0.4}{2011/03/07} \item chemfig est désormais écrit en plain-etex et donc utilisable par d'autres formats que LaTeX. \item 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 !\scantoken! l'argument de !\chemfig! pour être définitivement débarrassé de ces histoires de catcode ??? \item Correction d'un bug dans le calcul de l'angle des liaisons \endCFchangelog \CFchangelog{v0.3a}{2011/01/08} \item Correction d'un bug dans l'argument optionnel de !\definesubmol! lorsque celui-ci comporte des crochets. \item Mise à jour du manuel en anglais. \item Ajout de !\vflipnext! et !\hflipnext! pour retourner horizontalement ou verticalement la prochaine molécule. \endCFchangelog \CFchangelog{v0.3}{2010/11/21} \item 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. \item Le caractère "!|!" force la fin d'un atome. Si on écrit "!D|ef!" alors, chemfig verra deux atomes "!D!" et "!ef!". \item 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. \item La macro !\chemfig! admet un argument optionnel qui sera passé à l'environnement tikzpicture dans lequel elle est dessinée \item 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 l'argument optionnel devient celui de l'environnement tikzpicture dans lequel sont faites les flèches. \item Pour le mécanisme d'alignement vertical via le !\vphantom!, la commande !\chemskipalig!n permet d'ignorer le groupe d'atomes dans lequel elle est écrite. \item La commande !\chemname! permet d'afficher un nom sous une molécule. la commande !\chemnameinit! initialise la plus grande profondeur rencontrée. \item La commande !\lewis! a été modifiée de telle sorte que les dessins des décorations soient proportionnels à la taille de la police. \endCFchangelog \CFchangelog{v0.2}{2010/08/31} \item Ajout de la documentation en anglais. \item Correction de bugs. \item !\printatom! est désormais une macro publique. \item 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!. \item Une paire de Lewis peut être représentée "!:!". \item 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. \item La séquence de contrôle !\setnodestyle! permet de spécifier le style des noeuds dessinés par tikz. \endCFchangelog \CFchangelog{v0.1}{2010/06/23} \item Première version publique sur le CTAN \endCFchangelog