From 189140b53960215eec1626503040fb38360ab4ed Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Sun, 28 Feb 2021 03:01:24 +0000 Subject: CTAN sync 202102280301 --- macros/generic/chemfig/chemfig.tex | 196 +++++++++++++------------------------ 1 file changed, 70 insertions(+), 126 deletions(-) (limited to 'macros/generic/chemfig/chemfig.tex') diff --git a/macros/generic/chemfig/chemfig.tex b/macros/generic/chemfig/chemfig.tex index 6c743b24e3..76761ab317 100644 --- a/macros/generic/chemfig/chemfig.tex +++ b/macros/generic/chemfig/chemfig.tex @@ -4,9 +4,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % \def\CFname {chemfig} % -\def\CFver {1.56} % +\def\CFver {1.6} % % % -\def\CFdate {2020/07/13} % +\def\CFdate {2021/02/26} % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % @@ -17,17 +17,17 @@ % Package URL: https://www.ctan.org/pkg/chemfig | % Bug tracker: https://framagit.org/unbonpetit/chemfig/issues | % Repository : https://framagit.org/unbonpetit/chemfig/tree/master | -% Copyright : Christian Tellechea 2010-2020 | +% Copyright : Christian Tellechea 2010-2021 | % Licence : Released under the LaTeX Project Public License v1.3c | % or later, see http://www.latex-project.org/lppl.txt | % Files : 1) chemfig.tex | % 2) chemfig.sty | -% 3) t-chemfig.tex | -% 4) README | -% 5) chemfig_doc_fr.tex | -% 6) chemfig_doc_fr.pdf | -% 7) chemfig_doc_en.tex | -% 8) chemfig_doc_fr.pdf | +% 3) README | +% 4) chemfig_doc_fr.tex | +% 5) chemfig_doc_fr.pdf | +% 6) chemfig_doc_en.tex | +% 7) chemfig_doc_fr.pdf | +% 8) lewis.tex | %-------------------------------------------------------------------- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -92,13 +92,12 @@ \newif\ifCF_definesubmol \newif\ifCF_adjustnamedp \newif\ifCF_macrofixedbondlength -\newif\ifCF_lewisoverlay +\newif\ifCF_compound_is_chemfig \newdimen\CF_dim \newdimen\CF_arrowsize \newdimen\CF_zero \CF_zero=0pt -\newbox\CF_boxlewis \newbox\CF_box \newbox\CF_boxstuff \newbox\CF_testbox @@ -277,9 +276,11 @@ \let\CF_substnogroups\CF_substnogrouponly \CF_ifnum{#1>0 } {\let\CF_testifx\empty - \foreach\CF_x in {1,...,#1}{\xdef\CF_testifx{\unexpanded\expandafter{\CF_testifx}\unexpanded\expandafter{\expandafter\ifx\CF_x\CF_nexttok1\fi}}}% + \foreach\CF_x in {1,...,#1} + {\xdef\CF_testifx{\unexpanded\expandafter{\CF_testifx}\unexpanded\expandafter{\expandafter\ifx\CF_x\CF_nexttok1\fi}}}% \let\CF_testif\empty - \foreach\CF_x in {1,...,#1}{\xdef\CF_testif{\unexpanded\expandafter{\CF_testif}\unexpanded\expandafter{\expandafter\if\CF_x\CF_nexttok1\fi}}}% + \foreach\CF_x in {1,...,#1} + {\xdef\CF_testif{\unexpanded\expandafter{\CF_testif}\unexpanded\expandafter{\expandafter\if\CF_x\CF_nexttok1\fi}}}% \CF_expsecond\CF_substi#2% } {\CF_substall#2% @@ -368,13 +369,6 @@ angle increment = \CF_defifempty\CF_angleincrement {#1}{45}, node style = \def\CF_nodestyle {#1}, bond style = \def\CF_bondstyle {#1}, - lewis | width = \CF_defifempty\CF_lewiswidthdouble {#1}{0.3ex}, - lewis sep = \CF_defifempty\CF_lewisoffset {#1}{0.4ex}, - lewis length = \CF_defifempty\CF_lewislength {#1}{1.5ex}, - lewis style = \def\CF_lewisstyle {#1}, - lewis dist = \CF_defifempty\CF_lewisdist {#1}{0.3em}, - lewis radius = \CF_defifempty\CF_lewisradius {#1}{0.15ex}, - lewis diag coeff = \CF_defifempty\CF_lewisdiagcoeff {#1}{1}, cycle radius coeff = \CF_defifempty\CF_cycleradiuscoeff {#1}{0.75}, stack sep = \CF_defifempty\CF_stacksep {#1}{1.5pt}, compound style = \def\CF_defaultcompoundstyle {#1}, @@ -408,15 +402,11 @@ angle increment = 45, node style = {}, bond style = {}, - lewis | width = 0.3ex, - lewis sep = 0.4ex, - lewis length = 1.5ex, - lewis style = {}, - lewis dist = 0.3em, - lewis radius = 0.15ex, - lewis diag coeff = 1, cycle radius coeff = 0.75, stack sep = 1.5pt, + autoreset cntcycle = true, + show cntcycle = false, + debug =false, scheme debug = false, compound style = {}, compound sep = 5em, @@ -432,8 +422,6 @@ + sep left = 0.5em, + sep right = 0.5em, + vshift = 0pt, - autoreset cntcycle = true, - show cntcycle = false, }% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -1365,7 +1353,7 @@ \global\advance\CF_cntgroup1 \let\CF_currentatom\empty \global\let\CF_hookdrawlist\empty - \CF_cntatomgroup0 + \CF_cntatomgroup0 % est le nombre d'atome dans le groupe que va calculer \CF_drawatomgroupa \CF_iffirsttokmatch{#3}? {\CF_drawatomgroupa{{}#3}} {\CF_drawatomgroupa{#3}}% @@ -1422,7 +1410,12 @@ \let\CF_moveatomname\empty } {}% - \CF_expafter{\node[}\CF_optstring](n\number\CF_cntgroup-\number\CF_cntatom){\CF_nodecontent};% + \ifboolKV[chemfig]{debug} + {\CF_expafter{\node[}\CF_optstring,draw=gray](n\number\CF_cntgroup-\number\CF_cntatom){\CF_nodecontent};% + \CF_show_debug_atom + } + {\CF_expafter{\node[}\CF_optstring](n\number\CF_cntgroup-\number\CF_cntatom){\CF_nodecontent};% + }% \let\CF_nodestrut\empty \advance\CF_cntatom1 \edef\CF_optstring{anchor=base \ifnum\CF_flipstate=1 east\else west\fi,at=(n\number\CF_cntgroup-\number\numexpr\CF_cntatom-1.base \ifnum\CF_flipstate=1 west\else east\fi),\CF_nodestyle}% @@ -1446,13 +1439,31 @@ \let\CF_moveatomname\empty } {}% - \CF_expafter{\node[}\CF_optstring](n\number\CF_cntgroup-\number\CF_cntatom){\CF_nodecontent};% + \ifboolKV[chemfig]{debug} + {\CF_expafter{\node[}\CF_optstring,draw=gray](n\number\CF_cntgroup-\number\CF_cntatom){\CF_nodecontent};% + \CF_show_debug_atom + } + {\CF_expafter{\node[}\CF_optstring](n\number\CF_cntgroup-\number\CF_cntatom){\CF_nodecontent};% + }% \repeat + \ifboolKV[chemfig]{debug} + \CF_show_debug_atomgroup + {}% \CF_hookdrawall \edef\CF_lastgroupnumber{\number\CF_cntgroup}% \let\CF_previousatomgroup\CF_currentatomgroup } +\def\CF_show_debug_atom{% + \node[at=(n\number\CF_cntgroup-\number\CF_cntatom.south),anchor=north,outer sep=1pt,overlay]{$\scriptscriptstyle\color{gray}\number\CF_cntatom$};% +} + +\def\CF_show_debug_atomgroup{% + \draw[red,overlay] ([xshift=-.5pt,yshift=.5pt]n\number\CF_cntgroup-1.north west) rectangle ([xshift=.5pt,yshift=-.5pt]n\number\CF_cntgroup-\number\CF_cntatomgroup.south east);% + \path (n\number\CF_cntgroup-1.north west) -- (n\number\CF_cntgroup-\number\CF_cntatomgroup.north east) + node [midway,yshift=1pt,overlay] {$\scriptscriptstyle\color{red}\number\CF_cntgroup$}; +} + \def\CF_keepmovearg @#1#2\_nil{\def\CF_currentatom{@{#1}}} \def\CF_drawatomgroupa#1{% transforme #1 en un groupe d'atomes @@ -1785,95 +1796,6 @@ \charge_d } -\def\Lewis{% - \CF_warning{\string\Lewis\space is unmaintained and is likely to be removed in a near future. Please, use \string\Charge.}% - \CF_lewisoverlayfalse - \CF_testopt\CF_lewisa{}% -} - -\def\lewis{% - \CF_warning{\string\lewis\space is unmaintained and is likely to be removed in a near future. Please, use \string\charge.}% - \CF_lewisoverlaytrue - \CF_testopt\CF_lewisa{}% -} - -\def\CF_lewisa[#1]{% - \begingroup - \CF_doifnotempty{#1}{\setchemfig{#1}}% - \ifCF_lewisoverlay - \CF_addtomacro\CF_lewisstyle{,overlay}% - \fi - \CF_lewisb -} - -\def\CF_lewisb#1{% - \CF_lewisc#1\_nil - \endgroup -} - -\def\CF_lewisc#1,#2\_nil{% - \setbox\CF_boxlewis\hbox{\printatom{#2}}% mettre en dehors de tikzpicture (si \printatom ne passe pas en mode math) - \CF_ifinsidetikz - {\pgfinterruptpicture - \let\CF_atendoflewis\endpgfinterruptpicture - } - {\let\CF_atendoflewis\relax - }% - \tikzpicture[every node/.style={anchor=base,inner sep=0pt,outer sep=0pt,minimum size=0pt},baseline]% - \CF_makeother;\CF_makeother:% - \node(CF_lewis@anchor){}; - \def\CF_lewisremainpos{#1}% - \let\CF_lewispreviouspos\empty - \loop - \unless\ifx\CF_lewisremainpos\empty - \edef\CF_lewiscurrentpos{\expandafter\CF_firsttonil\CF_lewisremainpos\_nil}% - \edef\CF_lewisremainpos{\expandafter\CF_gobarg\CF_lewisremainpos}% - \pgfmathsetmacro\CF_lewisx{\wd\CF_boxlewis/2+\ifcase\CF_lewiscurrentpos\space1\or1\or0\or-1\or-1\or-1\or0\or1\fi*(\wd\CF_boxlewis/2)}% - \pgfmathsetmacro\CF_lewisy{\ht\CF_boxlewis/2+\ifcase\CF_lewiscurrentpos\space0\or1\or1\or1\or0\or-1\or-1\or-1\fi*(\ht\CF_boxlewis/2\ifnum\CF_lewiscurrentpos>4 +\dp\CF_boxlewis\fi)}% - \edef\CF_lewisxoffset{\ifcase\CF_lewiscurrentpos\space1\or0.70711\or0\or-0.70711\or-1\or-0.70711\or0\or0.70711\fi}% - \edef\CF_lewisyoffset{\ifcase\CF_lewiscurrentpos\space0\or0.70711\or1\or0.70711\or0\or-0.70711\or-1\or-0.70711\fi}% - \ifodd\CF_lewiscurrentpos\relax - \pgfmathsetmacro\CF_lewiscurrentoffset{\CF_lewisoffset*\CF_lewisdiagcoeff}%% - \else - \let\CF_lewiscurrentoffset\CF_lewisoffset - \fi - \if.\expandafter\CF_firsttonil\CF_lewisremainpos\relax\_nil - \edef\CF_lewisremainpos{\expandafter\CF_gobarg\CF_lewisremainpos}% - \CF_expafter{\draw[fill,black,}{\CF_lewisstyle]}% - (\CF_lewisx pt+\CF_lewisxoffset*\CF_lewiscurrentoffset,\CF_lewisy pt+\CF_lewisyoffset*\CF_lewiscurrentoffset)circle(\CF_lewisradius);% - \else - \if|\expandafter\CF_firsttonil\CF_lewisremainpos\relax\_nil - \edef\CF_lewisremainpos{\expandafter\CF_gobarg\CF_lewisremainpos}% - \pgfmathsetmacro\CF_lewisx{\CF_lewisx pt+\CF_lewisxoffset*\CF_lewiscurrentoffset}% - \pgfmathsetmacro\CF_lewisy{\CF_lewisy pt+\CF_lewisyoffset*\CF_lewiscurrentoffset}% - \CF_expafter{\draw[}\CF_lewisstyle]% - (\CF_lewisx pt+\CF_lewislength*\CF_lewisyoffset/2 pt,\CF_lewisy-\CF_lewislength*\CF_lewisxoffset/2 pt)-- - (\CF_lewisx pt+\CF_lewislength*\CF_lewisyoffset/2 pt+\CF_lewisxoffset*\CF_lewiswidthdouble,\CF_lewisy-\CF_lewislength*\CF_lewisxoffset/2 pt+\CF_lewisyoffset*\CF_lewiswidthdouble)-- - (\CF_lewisx pt-\CF_lewislength*\CF_lewisyoffset/2 pt+\CF_lewisxoffset*\CF_lewiswidthdouble,\CF_lewisy+\CF_lewislength*\CF_lewisxoffset/2 pt+\CF_lewisyoffset*\CF_lewiswidthdouble)-- - (\CF_lewisx pt-\CF_lewislength*\CF_lewisyoffset/2 pt,\CF_lewisy+\CF_lewislength*\CF_lewisxoffset/2 pt)--cycle;% - \else - \if:\expandafter\CF_firsttonil\CF_lewisremainpos\relax\_nil - \edef\CF_lewisremainpos{\expandafter\CF_gobarg\CF_lewisremainpos}% - \pgfmathsetmacro\CF_lewisx{\CF_lewisx pt+\CF_lewisxoffset*\CF_lewiscurrentoffset}% - \pgfmathsetmacro\CF_lewisy{\CF_lewisy pt+\CF_lewisyoffset*\CF_lewiscurrentoffset}% - \CF_expafter{\draw[fill,black,}{\CF_lewisstyle]}% - (\CF_lewisx pt+\CF_lewisdist*\CF_lewisyoffset/2 pt,\CF_lewisy-\CF_lewisdist*\CF_lewisxoffset/2 pt)circle(\CF_lewisradius)% - (\CF_lewisx pt-\CF_lewisdist*\CF_lewisyoffset/2 pt,\CF_lewisy+\CF_lewisdist*\CF_lewisxoffset/2 pt)circle(\CF_lewisradius);% - \else - \pgfmathsetmacro\CF_lewisx{\CF_lewisx pt+\CF_lewisxoffset*\CF_lewiscurrentoffset}% - \pgfmathsetmacro\CF_lewisy{\CF_lewisy pt+\CF_lewisyoffset*\CF_lewiscurrentoffset}% - \CF_expafter{\draw[}\CF_lewisstyle]% - (\CF_lewisx pt+\CF_lewislength*\CF_lewisyoffset/2 pt,\CF_lewisy-\CF_lewislength*\CF_lewisxoffset/2 pt)--% - (\CF_lewisx pt-\CF_lewislength*\CF_lewisyoffset/2 pt,\CF_lewisy+\CF_lewislength*\CF_lewisxoffset/2 pt);% - \fi - \fi - \fi - \repeat - \node[anchor=base west]at(CF_lewis@anchor){\box\CF_boxlewis};% - \endtikzpicture - \CF_atendoflewis -} - \def\Chembelow{\begingroup\let\CF_temp\CF_gobarg\CF_chembelowa} \def\chembelow{\begingroup\let\CF_temp\CF_id\CF_chembelowa} @@ -2074,20 +1996,34 @@ \CF_iffirsttokina{\arrow\schemestop\merge}% {} {\CF_ifx\CF_toksa\bgroup - {\CF_addnextarg + {\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 ? + \fi + \CF_addnextarg } {\CF_ifx\CF_toksa\CF_sptoken {\CF_addtomacro\CF_compound{ }% \CF_schemestartd } - {\afterassignment\CF_schemestartc + {\CF_ifx\CF_toksa\chemfig + \CF_compound_is_chemfigtrue% mettre le flag à vrai + {}% + \afterassignment\CF_schemestartc \CF_addtomacro\CF_compound }% }% }% } -\def\CF_addnextarg#1{\CF_addtomacro\CF_compound{{#1}}\CF_schemestartc} +\def\CF_addnextarg#1{% + \CF_addtomacro\CF_compound{{#1}}% + \ifCF_compound_is_chemfig% bugfix 1.6 + \CF_restore_hashcatcode + \CF_compound_is_chemfigfalse% mettre le flag à faux + \fi + \CF_schemestartc +} \def\CF_displaycompound#1#2{% #1 = nom et #2 = style \CF_doifnotempty\CF_compound @@ -3088,7 +3024,7 @@ v1.53 2020/04/27 v1.54 2020/05/21 - chemfig ne peut plus fonctionner sans \expanded - 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 @@ -3096,4 +3032,12 @@ v1.55 2020/06/15 ---------------------------------------------------------------------- v1.56 2020/07/13 - le centre des cycles est désormais accessible via un noeud - spécifique pour chacun d'eux. \ No newline at end of file + 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 + s'il le souhaite + - ajout d'une clé pour le trousseau [chemfig] + - à l'intérieur d'un schéma, le token '#' est permis dans + l'argument de \chemfig -- cgit v1.2.3