From d8afb0f4b2b72dc375d1f7024702a7186f994d8c Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 19 Sep 2011 23:35:24 +0000 Subject: chemfig 1.0a (18sep11) git-svn-id: svn://tug.org/texlive/trunk@24018 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/generic/chemfig/README | 4 +- .../doc/generic/chemfig/chemfig_doc_en.pdf | Bin 1264980 -> 1285777 bytes .../doc/generic/chemfig/chemfig_doc_en.tex | 105 +++++++++++++-------- .../doc/generic/chemfig/chemfig_doc_fr.pdf | Bin 1286443 -> 1307324 bytes .../doc/generic/chemfig/chemfig_doc_fr.tex | 99 ++++++++++++------- Master/texmf-dist/tex/generic/chemfig/chemfig.sty | 4 +- Master/texmf-dist/tex/generic/chemfig/chemfig.tex | 95 +++++++++++-------- .../texmf-dist/tex/generic/chemfig/t-chemfig.tex | 4 +- 8 files changed, 190 insertions(+), 121 deletions(-) (limited to 'Master') diff --git a/Master/texmf-dist/doc/generic/chemfig/README b/Master/texmf-dist/doc/generic/chemfig/README index 7117fe05ece..c48be003d38 100644 --- a/Master/texmf-dist/doc/generic/chemfig/README +++ b/Master/texmf-dist/doc/generic/chemfig/README @@ -2,9 +2,9 @@ ___________________________________ The ChemFig package - v1.0 + v1.0a - 2011/06/15 + 2011/09/18 ___________________________________ Maintainer: Christian Tellechea diff --git a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_en.pdf b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_en.pdf index 728af8c6347..7cb36af9fe9 100644 Binary files a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_en.pdf and b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_en.pdf differ diff --git a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_en.tex b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_en.tex index ccc602e335a..977da61b11c 100644 --- a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_en.tex +++ b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_en.tex @@ -3,7 +3,7 @@ % | | % | ChemFig Documentation | % | | -% | June 15, 2011 | +% | September 18, 2011 | % | | % |__________________________________________________________________| % @@ -290,13 +290,11 @@ delim_2 "\\dotfill" \setitemize{leftmargin=3em,topsep=0pt,parsep=0pt,itemsep=0pt} \part{Introduction} -\section{New in version 1.0} -Here is what is new in version 1.0: +\section{New in version 1.0a} +Here is what is new in version 1.0a: \begin{itemize} - \item it is now possible to build reaction schemes, see page~\pageref{schemas}; - \item the macros \verb-\Chemabove- and \verb-\Chembelow- work the same way as \verb-\chemabove- and \verb-\chembelow- but the bounding box is changed to suit the size of the stack, read page~\pageref{Chemabove}; - \item the macro \verb-\Lewis- works the same way as \verb-\lewis- but the bounding box is changed, see page~\pageref{Lewis}; - \item the commands \verb-\chemleft-, \verb-\chemright-, \verb-\chemup- and \verb-\chemdown- enable to draw expandable delimiters on the left, the right, above or below a stuff. See page~\pageref{chemleft}. + \item the \verb-\lewis- and \verb-\Lewis- macros have an optional argument which controls the offset of the Lewis drawings in the odd directions, see page~\pageref{opt.lewis}; + \item the \verb-\setlewisdist- macro sets the distance between the circles representing a pair of electrons, see page~\pageref{setlewisdist}. \end{itemize} \section{Foreword} @@ -1241,7 +1239,7 @@ If one wishes to draw two electrons instead of a line, follow the integer with a All the decorations drawn by \idx{\lewis} are not included in the \idx{bounding box} of the atom; they are drawn afterwards. A consequence of this is seen in the two examples above, where the frame does not appear to be properly fitted to the drawing of the molecule, which extends downward slightly. This will be seen more often in this the ``Decorations'' chapter, which presents commands which do not change the bounding box. -\label{Lewis}Il faut noter que la macro \idx{\Lewis} fonctionne de la même façon que la macro \verb-\lewis- mais les décorations seront \emph{prises en compte} dans la boîte englobante.% NOUVEAU +\label{Lewis}The \idx{\Lewis} macro works the same way as \verb-\lewis- but decorations are taken into account in the bounding box. This can be seen more clearly by drawing an \verb-\fbox- around decorated atoms\idx*{\lewis}: \exemple{Bounding box and the \string\lewis\ macro}*\fboxsep0pt @@ -1265,6 +1263,28 @@ If an argument is empty, it takes its default value. \setlewis{}{}{line width=0.4pt} \chemfig{A-\lewis{2|,B}-C}* +A problem sometimes occurs with the decorations of Lewis in the odd directions. In the example below with the atom ``O'', the decoration in position 1 seems farther from the atom than the decoration in position 4: +\exemple{Odd directions}/\huge +\Lewis{1|4|,O}/ +However, it is not the case as shown below by drawing the bounding box of the atom: +\exemple{Optical illusion}/\huge +\fboxsep0pt +\def\printatom#1{\fbox{$\mathrm{#1}$}} +\Lewis{1|4|,O}/ +\label{opt.lewis}The impression of greater distance is due to the shape of the letter ``O'' which is farther from the one of the bounding box in the corners, that is to say, in odd directions. + +To move nearer (or farther) the Lewis drawings in odd directions, the \verb-\lewis- and \verb-\Lewis- accept an optional argument that contains a factor which multiplies the gap between the bounding box and decoration Lewis set with the \idx{\setlewis} command. For the letter ``O'', it semms that 0.5 is the appropriated value: +\exemple*{Optional argument of \string\lewis}/\huge +\Lewis{1|4|,O}\quad \Lewis[0.5]{1|4|,O} + +\Lewis{0:3:,O}\quad \Lewis[2]{0:5:,O}\quad \Lewis[0]{0:5:,O}\quad \Lewis[0.5]{0:5:,O}/ +\label{setlewisdist}Finally, the \idx{\setlewisdist} macro sets the distance between the two disks representing a pair of electrons. The argument of this macro must be valid distance for \TeX{} or, if it is empty sets the default value is 0.3em: +\exemple{Distance between electrons}/\Lewis{1:3:5:7:,X}\qquad\Lewis{0:2:4:6:,X}\bigskip + +\setlewisdist{0.2em}\Lewis{1:3:5:7:,X}\qquad\Lewis{0:2:4:6:,X}\bigskip + +\setlewisdist{4pt}\Lewis{1:3:5:7:,X}\qquad\Lewis{0:2:4:6:,X}/ + \subsection{Stacking characters} The macros\label{chemabove}\idx*{\chemabove} \centerverb|\chemabove[]{}{}| @@ -1587,49 +1607,55 @@ You can use the optional second argument of \verb-\chemfig-\idx*{chemfig@\protec \chemfig[][scale=0.33]{!\hho}/ \subsection{Draw a ploymer element} -\idx*{polymer}The difficulty lies in the display of delimiters (parentheses or brackets) on bond. For this, we will again use the character ``\verb-@-''\idx*{"@} to define global nodes that will be used later as anchors for delimiters. We will assume that the node for the location of the opening delimiter is called ``opbr'' and the one of the closing delimiter ``clbr''. +\idx*{polymer}The difficulty lies in the display of delimiters (parentheses or brackets) on bond. For this, we will again use the character ``\verb-@-''\idx*{"@} to define global nodes that will be used later as anchors for delimiters. We will write a simple macro \verb-\setpolymerbracket-, followed by two characters which define the opening delimiter and closing delimiter. -Then, the macro \verb-\makebraces- has an optional argument of the form ``\verb-,-''. These two dimensions are the height and depth of the delimiters from the baseline. The mandatory argument of \verb-\makebraces- is the subscript located at the right bottom of the closing delimiter. - -\exemple*{Polymers}|\newcommand\setpolymerdelim[2]{% - \def\delimleft{#1}\def\delimright{#2}} - -\def\definedelimdim#1,#2\enddefinedelim{\def\delimht{#1}\def\delimdp{#2}} - -\newcommand\makebraces[2][0pt,0pt]{% - \definedelimdim#1\enddefinedelim - \chemmove{% - \node[at=(opbr),yshift=(\delimht-\delimdp)/2] - {\llap{$\left\delimleft\strut\vrule height\delimht depth\delimdp width0pt \right.$}};% - \node[at=(clbr),yshift=(\delimht-\delimdp)/2] - {\rlap{$\left.\strut\vrule height\delimht depth\delimdp width0pt \right\delimright_{#2}$}};% - }% -} +Then, the macro \verb-\makebraces- has an argument of the form ``\verb-[,]-''. These two dimensions are the height and depth of the delimiters from the baseline. The following arguments are the subscript located at the right bottom of the closing delimiter and the names of the 2 nodes at which the opening and closing delimiters will be drawn. + +\exemple*{Polymers}|\newcommand\setpolymerdelim[2]{\def\delimleft{#1}\def\delimright{#2}} +\def\makebraces[#1,#2]#3#4#5{% + \edef\delimhalfdim{\the\dimexpr(#1+#2)/2}% + \edef\delimvshift{\the\dimexpr(#1-#2)/2}% + \chemmove{% + \node[at=(#4),yshift=(\delimvshift)] + {$\left\delimleft\vrule height\delimhalfdim depth\delimhalfdim + width0pt\right.$};% + \node[at=(#5),yshift=(\delimvshift)] + {$\left.\vrule height\delimhalfdim depth\delimhalfdim + width0pt\right\delimright_{\rlap{$\scriptstyle#3$}}$};}} \setpolymerdelim() -Polyethylen: -\chemfig{\vphantom{CH_2}-[@{opbr,1}]CH_2-CH_2-[@{clbr,0}]}\makebraces{n} +Polyéthylène: +\chemfig{\vphantom{CH_2}-[@{op,.75}]CH_2-CH_2-[@{cl,0.25}]} +\makebraces[5pt,5pt]{\!\!n}{op}{cl} \bigskip Polyvinyl chloride: -\chemfig{\vphantom{CH_2}-[@{opbr,1}]CH_2-CH(-[6]Cl)-[@{clbr,0}]} -\makebraces[0pt,15pt]{\!\!\!n} +\chemfig{\vphantom{CH_2}-[@{op,.75}]CH_2-CH(-[6]Cl)-[@{cl,0.25}]} +\makebraces[5pt,25pt]{\!\!\!n}{op}{cl} \bigskip Nylon 6: -\chemfig{\phantom{N}-[@{opbr,1}]{N}(-[2]H)-C(=[2]O)-{(}CH_2{)_5}-[@{clbr,0}]} -\makebraces[20pt,0pt]{} +\chemfig{\phantom{N}-[@{op,.75}]{N}(-[2]H)-C(=[2]O)-{(}CH_2{)_5}-[@{cl,0.25}]} +\makebraces[30pt,5pt]{}{op}{cl} \bigskip Polycaprolactame:\setatomsep{2em} -\chemfig{[:-30]-[@{opbr,1}]N(-[6]H)-[:30](=[2]O)--[:30]--[:30]--[@{clbr,0}:30]} -\makebraces[5pt,5pt]{n} +\chemfig{[:-30]-[@{left,.75}]N(-[6]H)-[:30](=[2]O)--[:30]--[:30]--[@{right,0.25}:30]} +\makebraces[5pt,25pt]{\!\!\!n}{left}{right} +\bigskip \setpolymerdelim[] -Polyphenylen sulfide: -\chemfig{\vphantom{S}-[@{opbr,1}]S-(**6(---(-[@{clbr,0}])---))} -\makebraces[15pt,15pt]{}| +Polyphénylène sulfide: +\chemfig{\vphantom{S}-[@{op,.75}]S-(**6(---(-[@{cl,0.25}])---))} +\makebraces[15pt,15pt]{}{op}{cl} +\bigskip + +\chemfig{-CH_2-CH([6]-CO-NH-CH_2-NH-CO-CH([4]-CH_2-)([0]-[@{downleft,0.8},2]CH_2 +-CH([2]-CO-NH_2)-[@{downright,0.3},2]CH_2-[,1.5]C?H-))-[@{upleft,0.8},2]CH_2 +-CH([6]-CO-NH_2)-[@{upright,0.3},2]CH_2-[,1.5]CH([6]-CO-NH-CH_2-NH-C?O)-} +\makebraces[5pt,40pt]{n}{upleft}{upright} +\makebraces[38pt,7pt]{n}{downleft}{downright}| \subsection{Draw the symmetrical of a molecule}\label{retournement} \idx*{symmetrical of a molecule}The two commands \idx{\hflipnext} and \idx{\vflipnext} allow to draw the symmetrical of the next molecule about a horizontal or vertical axis. If we want to draw more symmetrical molecules, we need to write these commands before each molecule involved. @@ -2373,9 +2399,10 @@ The commands created by \CF are: \idx\setbondoffset\verb-{}- & sets the space between bonded atoms and the bond. See page~\pageref{setbondoffset}\\ \idx\setdoublesep\verb-{}- & sets the spacing between the two lines of a double bond. See page~\pageref{setdoublesep}\\[2ex]\hline &\\ -\idx\lewis\verb-{,}-& displays the \verb-- and places Lewis dot decorations as specified in the \verb--. The dots drawn do not change the bounding box. See page~\pageref{lewis}\\ -\idx\Lewis\verb-{,}-& displays the \verb-- and places Lewis dot decorations as specified in the \verb--. See page~\pageref{lewis}\\ -\idx\setlewis\verb-{}{}{}- & sets the Lewis dot parameters; \verb-- is the distance between the atoms and the decoration, \verb-- is the length of the line representing the pair of electrons and \verb-- is code which is passed directly to \TIKZ. See page~\pageref{setlewis}\\[2ex]\hline +\idx\lewis\verb-[coeff]{,}-& displays the \verb-- and places Lewis dot decorations as specified in the \verb--. The dots drawn do not change the bounding box. See page~\pageref{lewis}\\ +\idx\Lewis\verb-[coeff]{,}-& displays the \verb-- and places Lewis dot decorations as specified in the \verb--. See page~\pageref{lewis}\\ +\idx\setlewis\verb-{}{}{}- & sets the Lewis dot parameters; \verb-- is the distance between the atoms and the decoration, \verb-- is the length of the line representing the pair of electrons and \verb-- is code which is passed directly to \TIKZ. See page~\pageref{setlewis}\\ +\idx\setlewisdist\verb-{dim}-& sets the distace between the 2 disks representing a pair of electrons. See page~\pageref{setlewisdist}\\[2ex]\hline &\\ \idx\chemmove\verb-[]-& Makes a \verb-tikzpicture- environment, adding to it the \verb--. Uses the \verb-- to join the nodes specified in the molecules with the help pf the ``\verb-@-'' character. See page~\pageref{mecanismes-reactionnels}.\\ \idx\chemsign\verb-[]- & draws the \verb--, placing before and after it an unbreakable space of length \verb--. See page~\pageref{chemsign}\\ diff --git a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.pdf b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.pdf index dcf215da84d..cefaaab2900 100644 Binary files a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.pdf and b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.pdf differ diff --git a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex index 25eae1e525a..a8f7537aeff 100644 --- a/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex +++ b/Master/texmf-dist/doc/generic/chemfig/chemfig_doc_fr.tex @@ -3,7 +3,7 @@ % | | % | Documentation de ChemFig | % | | -% | 15 juin 2011 | +% | 18 septembre 2011 | % | | % |__________________________________________________________________| % @@ -290,13 +290,11 @@ delim_2 "\\dotfill" \setitemize{leftmargin=3em,topsep=0pt,parsep=0pt,itemsep=0pt,label=--} \part{Introduction} -\section{Nouveautés de la version 1.0} -Voici les nouveautés de la version 1.0 : +\section{Nouveautés de la version 1.0a} +Voici les nouveautés de la version 1.0a : \begin{itemize} - \item on peut désormais tracer des schémas réactionnels, voir page~\pageref{schemas}; - \item les macros \verb-\Chemabove- et \verb-\Chembelow- fonctionnent de la même façon que \verb-\chemabove- et \verb-\chembelow- mais modifient la boîte englobante, voir page~\pageref{Chemabove}; - \item la macro \verb-\Lewis- fonctionne de la même façon que \verb-\lewis- mais modifie la boîte englobante, voir page~\pageref{Lewis}; - \item les commandes \verb-\chemleft-, \verb-\chemright-, \verb-\chemup- et \verb-\chemdown- permettent de tracer des délimiteurs extensibles à gauche, à droite, au dessus ou au dessous d'un matériel quelconque. Voir page~\pageref{chemleft}. + \item les macros \verb-\lewis- et \verb-\Lewis- admettent désormais un argument optionnel pour contrôler le décalage des décorations de Lewis dans les directions impaires, voir page~\pageref{opt.lewis}; + \item la macro \verb-\setlewisdist- permet de régler la distance entre les deux disques représentant une paire d'électrons, voir page~\pageref{setlewisdist}. \end{itemize} \section{Avant propos} @@ -1265,6 +1263,28 @@ Si un argument est vide, il prend sa valeur par défaut. \setlewis[0.8ex]{}{}{line width=1pt} \chemfig{A-\lewis{2|,B}-C}* +Un problème concernant les décorations de Lewis dans les directions obliques peut parfois survenir. Pour l'atome ``O'' dans l'exemple ci-dessous, il semble que la décoration en position 1 soit plus éloignée de l'atome que celle en position 4 : +\exemple{Directions obliques}/\huge +\Lewis{1|4|,O}/ +Or, il n'en en rien comme on peut le voir en traçant la boîte englobante de l'atome : +\exemple{Illusion d'optique}/\huge +\fboxsep0pt +\def\printatom#1{\fbox{$\mathrm{#1}$}} +\Lewis{1|4|,O}/ +\label{opt.lewis}L'impression de plus grand éloignement est dû au fait que les contours de la lettre ``O'' sont plus éloignés de ceux de la boîte englobante dans les coins, c'est-à-dire dans les directions impaires. + +Pour rapprocher (ou éloigner) les décorations de lewis dans les directions impaires, les commandes \verb-\lewis- et \verb-\Lewis- admettent un argument optionnel qui contient un coefficient qui vient multiplier le décalage entre la boite englobante et la décoration de Lewis réglé avec la commande \idx\setlewis. Pour la lettre ``O'', il semble que la valeur 0.5 soit satisfaisante pour ce coefficient : +\exemple*{Argument optionnel de \string\lewis}/\huge +\Lewis{1|4|,O}\quad \Lewis[0.5]{1|4|,O} + +\Lewis{0:3:,O}\quad \Lewis[2]{0:5:,O}\quad \Lewis[0]{0:5:,O}\quad \Lewis[0.5]{0:5:,O}/ +\label{setlewisdist}Enfin, la macro \idx{\setlewisdist} règle la distance entre les deux disques représentant une paire d'électrons. L'argument de cette macro doit être une distance valide pour \TeX, ou, s'il est vide spécifie à la valeur par défaut qui est 0.3em : +\exemple{Espacement des électrons}/\Lewis{1:3:5:7:,X}\qquad\Lewis{0:2:4:6:,X}\bigskip + +\setlewisdist{0.2em}\Lewis{1:3:5:7:,X}\qquad\Lewis{0:2:4:6:,X}\bigskip + +\setlewisdist{4pt}\Lewis{1:3:5:7:,X}\qquad\Lewis{0:2:4:6:,X}/ + \subsection{Empilement de caractères} Les macros\label{chemabove}\idx*{\chemabove} \centerverb|\chemabove[]{}{}| @@ -1587,49 +1607,55 @@ Il est possible d'utiliser le second argument optionnel de \verb-\chemfig-\idx*{ \chemfig[][scale=0.33]{!\hho}/ \subsection{Dessiner un élément de polymère} -\idx*{polymère}La difficulté réside dans le fait d'afficher des délimiteurs (parenthèses ou crochets) sur des liaisons. Pour cela, on va encore définir avec le caractère ``\verb-@-''\idx*{"@} des nœuds globaux que l'on utilisera ensuite pour qu'ils servent d'ancre aux délimiteurs. Nous partirons du principe que le nœud marquant l'emplacement du délimiteur ouvrant porte le nom ``opbr'' et celui du délimiteur fermant le nom ``clbr''. +\idx*{polymère}La difficulté réside dans le fait d'afficher des délimiteurs (parenthèses ou crochets) sur des liaisons. Pour cela, on va encore définir avec le caractère ``\verb-@-''\idx*{"@} des nœuds globaux que l'on utilisera ensuite pour qu'ils servent d'ancre aux délimiteurs. Nous allons écrire une macro toute simple \verb-\setpolymerbracket- dont les deux caractères qui suivent définissent le délimiteur ouvrant et le délimiteur fermant. -Ensuite, la macro \verb-\makebraces- admettra un argument optionnel de la forme``\verb-,-''. Ces deux dimensions seront la hauteur et la profondeur des délimiteurs par rapport à la ligne de base. L'argument obligatoire de \verb-\makebraces- sera l'indice placé après le délimiteur fermant. - -\exemple*{Polymères}|\newcommand\setpolymerdelim[2]{% - \def\delimleft{#1}\def\delimright{#2}} - -\def\definedelimdim#1,#2\enddefinedelim{\def\delimht{#1}\def\delimdp{#2}} - -\newcommand\makebraces[2][0pt,0pt]{% - \definedelimdim#1\enddefinedelim - \chemmove{% - \node[at=(opbr),yshift=(\delimht-\delimdp)/2] - {\llap{$\left\delimleft\strut\vrule height\delimht depth\delimdp width0pt \right.$}};% - \node[at=(clbr),yshift=(\delimht-\delimdp)/2] - {\rlap{$\left.\strut\vrule height\delimht depth\delimdp width0pt \right\delimright_{#2}$}};% - }% -} +Ensuite, la macro \verb-\makebraces- admettra un argument de la forme``\verb-[,]-''. Ces deux dimensions seront la hauteur et la profondeur des délimiteurs par rapport à la ligne de base. Les arguments suivants seront l'indice placé après le délimiteur fermant puis les noms des 2 nœuds où doivent être placés les délimiteurs ouvrants et fermants. + +\exemple*{Polymères}|\newcommand\setpolymerdelim[2]{\def\delimleft{#1}\def\delimright{#2}} +\def\makebraces[#1,#2]#3#4#5{% + \edef\delimhalfdim{\the\dimexpr(#1+#2)/2}% + \edef\delimvshift{\the\dimexpr(#1-#2)/2}% + \chemmove{% + \node[at=(#4),yshift=(\delimvshift)] + {$\left\delimleft\vrule height\delimhalfdim depth\delimhalfdim + width0pt\right.$};% + \node[at=(#5),yshift=(\delimvshift)] + {$\left.\vrule height\delimhalfdim depth\delimhalfdim + width0pt\right\delimright_{\rlap{$\scriptstyle#3$}}$};}} \setpolymerdelim() Polyéthylène: -\chemfig{\vphantom{CH_2}-[@{opbr,1}]CH_2-CH_2-[@{clbr,0}]}\makebraces{n} +\chemfig{\vphantom{CH_2}-[@{op,.75}]CH_2-CH_2-[@{cl,0.25}]} +\makebraces[5pt,5pt]{\!\!n}{op}{cl} \bigskip Polyvinyl chloride: -\chemfig{\vphantom{CH_2}-[@{opbr,1}]CH_2-CH(-[6]Cl)-[@{clbr,0}]} -\makebraces[0pt,15pt]{\!\!\!n} +\chemfig{\vphantom{CH_2}-[@{op,.75}]CH_2-CH(-[6]Cl)-[@{cl,0.25}]} +\makebraces[5pt,25pt]{\!\!\!n}{op}{cl} \bigskip Nylon 6: -\chemfig{\phantom{N}-[@{opbr,1}]{N}(-[2]H)-C(=[2]O)-{(}CH_2{)_5}-[@{clbr,0}]} -\makebraces[20pt,0pt]{} +\chemfig{\phantom{N}-[@{op,.75}]{N}(-[2]H)-C(=[2]O)-{(}CH_2{)_5}-[@{cl,0.25}]} +\makebraces[30pt,5pt]{}{op}{cl} \bigskip Polycaprolactame:\setatomsep{2em} -\chemfig{[:-30]-[@{opbr,1}]N(-[6]H)-[:30](=[2]O)--[:30]--[:30]--[@{clbr,0}:30]} -\makebraces[5pt,5pt]{n} +\chemfig{[:-30]-[@{left,.75}]N(-[6]H)-[:30](=[2]O)--[:30]--[:30]--[@{right,0.25}:30]} +\makebraces[5pt,25pt]{\!\!\!n}{left}{right} +\bigskip \setpolymerdelim[] Polyphénylène sulfide: -\chemfig{\vphantom{S}-[@{opbr,1}]S-(**6(---(-[@{clbr,0}])---))} -\makebraces[15pt,15pt]{}| +\chemfig{\vphantom{S}-[@{op,.75}]S-(**6(---(-[@{cl,0.25}])---))} +\makebraces[15pt,15pt]{}{op}{cl} +\bigskip + +\chemfig{-CH_2-CH([6]-CO-NH-CH_2-NH-CO-CH([4]-CH_2-)([0]-[@{downleft,0.8},2]CH_2 +-CH([2]-CO-NH_2)-[@{downright,0.3},2]CH_2-[,1.5]C?H-))-[@{upleft,0.8},2]CH_2 +-CH([6]-CO-NH_2)-[@{upright,0.3},2]CH_2-[,1.5]CH([6]-CO-NH-CH_2-NH-C?O)-} +\makebraces[5pt,40pt]{n}{upleft}{upright} +\makebraces[38pt,7pt]{n}{downleft}{downright}| \subsection{Dessiner le symétrique d'une molécule}\label{retournement} \idx*{symetrique d'une molecule@symétrique d'une molécule}Il existe deux commandes \idx{\hflipnext} et \idx{\vflipnext} qui permettent de tracer le symétrique de la prochaine molécule par rapport à un axe horizontal ou vertical. Si on souhaite construire le symétrique de plusieurs molécules, il faut écrire les commandes avant chaque molécule concernée. @@ -2373,9 +2399,10 @@ Les commandes créées par \CF sont : \idx\setbondoffset\verb-{}- & règle l'espacement entre les atomes liés et la liaison. Voir page~\pageref{setbondoffset}\\ \idx\setdoublesep\verb-{}- & règle l'espacement entre les deux traits d'une double liaison. Voir page~\pageref{setdoublesep}\\[2ex]\hline &\\ -\idx\lewis\verb-{,}-& affiche l'\verb-- et positionne les décorations de Lewis selon ce qui est spécifié dans le \verb--. Les décorations dessinées ne modifient pas la boîte englobante de l'\verb--. Voir page~\pageref{lewis}\\ -\idx\Lewis\verb-{,}-& affiche l'\verb-- et positionne les décorations de Lewis selon ce qui est spécifié dans le \verb--. Voir page~\pageref{Lewis}\\ -\idx\setlewis\verb-{}{}{}- & règle les décoration de Lewis; \verb-- est la distance entre l'atome et la décoration, \verb-- est la longueur du trait représentant la paire d'électrons et \verb-- est le code qui sera passé directement à \TIKZ. Voir page~\pageref{setlewis}\\[2ex]\hline +\idx\lewis\verb-[coeff]{,}-& affiche l'\verb-- et positionne les décorations de Lewis selon ce qui est spécifié dans le \verb--. Les décorations dessinées ne modifient pas la boîte englobante de l'\verb--. Voir page~\pageref{lewis}\\ +\idx\Lewis\verb-[coeff]{,}-& affiche l'\verb-- et positionne les décorations de Lewis selon ce qui est spécifié dans le \verb--. Voir page~\pageref{Lewis}\\ +\idx\setlewis\verb-{}{}{}- & règle les décoration de Lewis; \verb-- est la distance entre l'atome et la décoration, \verb-- est la longueur du trait représentant la paire d'électrons et \verb-- est le code qui sera passé directement à \TIKZ. Voir page~\pageref{setlewis}\\ +\idx\setlewisdist\verb-{dim}-& règle la distance entre les deux disques représentant une paire d'électron. Voir page~\pageref{setlewisdist}\\[2ex]\hline &\\ \idx\chemmove\verb-[]-& Ouvre un environnement \verb-tikzpicture- en y ajoutant à celles qui existent déjà les \verb--, et relie avec le \verb-- les nœuds posés dans les molécules à l'aide du caractère ``\verb-@-''. Voir page~\pageref{mecanismes-reactionnels}.\\ \idx\chemsign\verb-[]-& affiche le \verb-- en plaçant avant et après un espace insécable de longueur \verb--. Voir page~\pageref{chemsign}\\ diff --git a/Master/texmf-dist/tex/generic/chemfig/chemfig.sty b/Master/texmf-dist/tex/generic/chemfig/chemfig.sty index 27a0fbe14de..cb79c8bf454 100644 --- a/Master/texmf-dist/tex/generic/chemfig/chemfig.sty +++ b/Master/texmf-dist/tex/generic/chemfig/chemfig.sty @@ -1,9 +1,9 @@ % __________________________________________________________________ % | | % | | -% | chemfig v1.0 | +% | chemfig v1.0a | % | | -% | June 15, 2011 | +% | September 18, 2011 | % | | % |__________________________________________________________________| % diff --git a/Master/texmf-dist/tex/generic/chemfig/chemfig.tex b/Master/texmf-dist/tex/generic/chemfig/chemfig.tex index c1385494eba..c04f6155137 100644 --- a/Master/texmf-dist/tex/generic/chemfig/chemfig.tex +++ b/Master/texmf-dist/tex/generic/chemfig/chemfig.tex @@ -1,9 +1,9 @@ % __________________________________________________________________ % | | % | | -% | chemfig v1.0 | +% | chemfig v1.0a | % | | -% | June 15, 2011 | +% | September 18, 2011 | % | | % |__________________________________________________________________| % @@ -62,10 +62,10 @@ \def#1% } -\CF@def\CF@ver {1.0} -\CF@def\CF@date {2011/06/15} -\CF@def\CF@fr@date {15 juin 2011} -\CF@def\CF@en@date {June 15, 2011} +\CF@def\CF@ver {1.0a} +\CF@def\CF@date {2011/09/18} +\CF@def\CF@fr@date {18 septembre 2011} +\CF@def\CF@en@date {September 18, 2011} \CF@def\CF@package@name{chemfig} \expandafter\ifx\csname @latexerr\endcsname\relax% on n'utilise pas LaTeX ? @@ -1215,22 +1215,27 @@ \ifx\@empty#3\@empty\def\CF@lewis@length{1.5ex}\else\def\CF@lewis@length{#3}\fi \ifx\@empty#4\@empty\def\CF@lewis@style{}\else\def\CF@lewis@style{#4}\fi } - \setlewis{}{}{} -\CF@def\Lewis{% - \tikzpicture[every node/.style={anchor=base,inner sep=\z@,outer sep=\z@,minimum size=\z@},baseline]% - \@makeother;\@makeother:% - \CF@lewis@i{}} +\CF@def\setlewisdist#1{% + \def\CF@lewis@dist{#1}\ifx\@empty\CF@lewis@dist\def\CF@lewis@dist{0.2em}\fi +} +\setlewisdist{0.3em} -\CF@def\lewis{% - \tikzpicture[every node/.style={anchor=base,inner sep=\z@,outer sep=\z@,minimum size=\z@},baseline]% - \@makeother;\@makeother:% - \CF@lewis@i{overlay}} +\CF@def\Lewis{\@testopt{\CF@lewis@i{}}{1}} + +\CF@def\lewis{\@testopt{\CF@lewis@i{,overlay}}{1}} -\CF@def\CF@lewis@i#1#2{\CF@lewis@ii#2\@nil{#1}} +\CF@def\CF@lewis@i#1[#2]{% + \def\CF@lewis@diagcoeff{#2}% + \ifx\@empty\CF@lewis@diagcoeff\def\CF@lewis@diagcoeff{1}\fi + \CF@lewis@ii{#1}} -\CF@def\CF@lewis@ii#1,#2\@nil#3{% +\CF@def\CF@lewis@ii#1#2{\CF@lewis@iii#2\@nil{#1}} + +\CF@def\CF@lewis@iii#1,#2\@nil#3{% + \tikzpicture[every node/.style={anchor=base,inner sep=\z@,outer sep=\z@,minimum size=\z@},baseline]% + \@makeother;\@makeother:% \setbox\CF@lewis@box\hbox{\printatom{#2}}% \node(CF@lewis@anchor){}; \def\CF@lewis@remainpos{#1}% @@ -1239,39 +1244,45 @@ \unless\ifx\CF@lewis@remainpos\@empty \edef\CF@lewis@currentpos{\expandafter\@car\CF@lewis@remainpos\@nil}% \edef\CF@lewis@remainpos{\expandafter\@gobble\CF@lewis@remainpos}% - \pgfmathparse{\wd\CF@lewis@box/2+\ifcase\CF@lewis@currentpos\space1\or1\or0\or-1\or-1\or-1\or0\or1\fi*(\wd\CF@lewis@box/2+\CF@lewis@offset)}% + \pgfmathparse{\wd\CF@lewis@box/2+\ifcase\CF@lewis@currentpos\space1\or1\or0\or-1\or-1\or-1\or0\or1\fi*(\wd\CF@lewis@box/2)}% \let\CF@lewis@x\pgfmathresult - \pgfmathparse{\ht\CF@lewis@box/2+\ifcase\CF@lewis@currentpos\space0\or1\or1\or1\or0\or-1\or-1\or-1\fi*(\ht\CF@lewis@box/2\ifnum\CF@lewis@currentpos>4 +\dp\CF@lewis@box\fi+\CF@lewis@offset)}% + \pgfmathparse{\ht\CF@lewis@box/2+\ifcase\CF@lewis@currentpos\space0\or1\or1\or1\or0\or-1\or-1\or-1\fi*(\ht\CF@lewis@box/2\ifnum\CF@lewis@currentpos>4 +\dp\CF@lewis@box\fi)}% \let\CF@lewis@y\pgfmathresult - \edef\CF@lewis@xoffset{\ifcase\CF@lewis@currentpos\space - 0\or0.70711\or1\or0.70711\or0\or-0.70711\or-1\or-0.70711\fi}% - \edef\CF@lewis@yoffset{\ifcase\CF@lewis@currentpos\space - -1\or-0.70711\or0\or0.70711\or1\or0.70711\or0\or-0.70711\fi}% - \pgfmathparse{veclen(\CF@lewis@xoffset,\CF@lewis@yoffset)}\let\CF@len@normvec\pgfmathresult - \edef\CF@lewis@diagmul{\ifcase\CF@lewis@currentpos\space1\or0\or1\or0\or1\or0\or1\or0\fi}% annule l'offset pour les diagonales + \edef\CF@lewis@xoffset{\ifcase\CF@lewis@currentpos\space1\or0.70711\or0\or-0.70711\or-1\or-0.70711\or0\or0.70711\fi}% + \edef\CF@lewis@yoffset{\ifcase\CF@lewis@currentpos\space0\or0.70711\or1\or0.70711\or0\or-0.70711\or-1\or-0.70711\fi}% + \ifodd\CF@lewis@currentpos\relax + \pgfmathparse{\CF@lewis@offset*\CF@lewis@diagcoeff}\let\CF@lewis@current@offset\pgfmathresult + \else + \let\CF@lewis@current@offset\CF@lewis@offset + \fi \if.\expandafter\@car\CF@lewis@remainpos\relax\@nil \edef\CF@lewis@remainpos{\expandafter\@gobble\CF@lewis@remainpos}% - \draw[fill,black,#3] - (\CF@lewis@x pt-\CF@lewis@yoffset*\CF@lewis@diagmul*0.1ex, - \CF@lewis@y pt+\CF@lewis@xoffset*\CF@lewis@diagmul*0.1ex)circle(0.15ex);% + \CF@expand@afterfirst{\draw[fill,black,}{\CF@lewis@style#3]}% + (\CF@lewis@x pt+\CF@lewis@xoffset*\CF@lewis@current@offset,\CF@lewis@y pt+\CF@lewis@yoffset*\CF@lewis@current@offset)circle(0.15ex);% \else \if|\expandafter\@car\CF@lewis@remainpos\relax\@nil \edef\CF@lewis@remainpos{\expandafter\@gobble\CF@lewis@remainpos}% - \expandafter\draw\expandafter[\CF@lewis@style,#3]% - (\CF@lewis@x-\CF@lewis@length*\CF@lewis@xoffset/2 pt,\CF@lewis@y-\CF@lewis@length*\CF@lewis@yoffset/2 pt)-- - ([xshift=-\CF@lewis@yoffset*\CF@lewis@widthdouble,yshift=\CF@lewis@xoffset*\CF@lewis@widthdouble]\CF@lewis@x-\CF@lewis@xoffset*\CF@lewis@length/2 pt,\CF@lewis@y-\CF@lewis@yoffset*\CF@lewis@length/2 pt)-- - ([xshift=-\CF@lewis@yoffset*\CF@lewis@widthdouble,yshift=\CF@lewis@xoffset*\CF@lewis@widthdouble]\CF@lewis@x+\CF@lewis@length*\CF@lewis@xoffset/2 pt,\CF@lewis@y+\CF@lewis@length*\CF@lewis@yoffset/2 pt)-- - (\CF@lewis@x+\CF@lewis@length*\CF@lewis@xoffset/2 pt,\CF@lewis@y+\CF@lewis@length*\CF@lewis@yoffset/2 pt)--cycle;% + \pgfmathparse{\CF@lewis@x pt+\CF@lewis@xoffset*\CF@lewis@current@offset}\let\CF@lewis@x\pgfmathresult + \pgfmathparse{\CF@lewis@y pt+\CF@lewis@yoffset*\CF@lewis@current@offset}\let\CF@lewis@y\pgfmathresult + \expandafter\draw\expandafter[\CF@lewis@style#3]% + (\CF@lewis@x pt+\CF@lewis@length*\CF@lewis@yoffset/2 pt,\CF@lewis@y-\CF@lewis@length*\CF@lewis@xoffset/2 pt)-- + (\CF@lewis@x pt+\CF@lewis@length*\CF@lewis@yoffset/2 pt+\CF@lewis@xoffset*\CF@lewis@widthdouble,\CF@lewis@y-\CF@lewis@length*\CF@lewis@xoffset/2 pt+\CF@lewis@yoffset*\CF@lewis@widthdouble)-- + (\CF@lewis@x pt-\CF@lewis@length*\CF@lewis@yoffset/2 pt+\CF@lewis@xoffset*\CF@lewis@widthdouble,\CF@lewis@y+\CF@lewis@length*\CF@lewis@xoffset/2 pt+\CF@lewis@yoffset*\CF@lewis@widthdouble)-- + (\CF@lewis@x pt-\CF@lewis@length*\CF@lewis@yoffset/2 pt,\CF@lewis@y+\CF@lewis@length*\CF@lewis@xoffset/2 pt)--cycle;% \else \if:\expandafter\@car\CF@lewis@remainpos\relax\@nil \edef\CF@lewis@remainpos{\expandafter\@gobble\CF@lewis@remainpos}% - \draw[fill,black,#3] - (\CF@lewis@x pt-\CF@lewis@yoffset*\CF@lewis@diagmul*0.2ex-.2em*\CF@lewis@xoffset/\CF@len@normvec,\CF@lewis@y pt+\CF@lewis@xoffset*\CF@lewis@diagmul*0.2ex-.2em*\CF@lewis@yoffset/\CF@len@normvec)circle(0.15ex)% - (\CF@lewis@x pt-\CF@lewis@yoffset*\CF@lewis@diagmul*0.2ex+.2em*\CF@lewis@xoffset/\CF@len@normvec,\CF@lewis@y pt+\CF@lewis@xoffset*\CF@lewis@diagmul*0.2ex+.2em*\CF@lewis@yoffset/\CF@len@normvec)circle(0.15ex);% + \pgfmathparse{\CF@lewis@x pt+\CF@lewis@xoffset*\CF@lewis@current@offset}\let\CF@lewis@x\pgfmathresult + \pgfmathparse{\CF@lewis@y pt+\CF@lewis@yoffset*\CF@lewis@current@offset}\let\CF@lewis@y\pgfmathresult + \CF@expand@afterfirst{\draw[fill,black,}{\CF@lewis@style#3]}% + (\CF@lewis@x pt+\CF@lewis@dist*\CF@lewis@yoffset/2 pt,\CF@lewis@y-\CF@lewis@dist*\CF@lewis@xoffset/2 pt)circle(0.15ex)% + (\CF@lewis@x pt-\CF@lewis@dist*\CF@lewis@yoffset/2 pt,\CF@lewis@y+\CF@lewis@dist*\CF@lewis@xoffset/2 pt)circle(0.15ex);% \else - \expandafter\draw\expandafter[\CF@lewis@style,#3]% - (\CF@lewis@x-\CF@lewis@length*\CF@lewis@xoffset/2 pt,\CF@lewis@y-\CF@lewis@length*\CF@lewis@yoffset/2 pt)--% - (\CF@lewis@x+\CF@lewis@length*\CF@lewis@xoffset/2 pt,\CF@lewis@y+\CF@lewis@length*\CF@lewis@yoffset/2 pt);% + \pgfmathparse{\CF@lewis@x pt+\CF@lewis@xoffset*\CF@lewis@current@offset}\let\CF@lewis@x\pgfmathresult + \pgfmathparse{\CF@lewis@y pt+\CF@lewis@yoffset*\CF@lewis@current@offset}\let\CF@lewis@y\pgfmathresult + \expandafter\draw\expandafter[\CF@lewis@style#3]% + (\CF@lewis@x pt+\CF@lewis@length*\CF@lewis@yoffset/2 pt,\CF@lewis@y-\CF@lewis@length*\CF@lewis@xoffset/2 pt)--% + (\CF@lewis@x pt-\CF@lewis@length*\CF@lewis@yoffset/2 pt,\CF@lewis@y+\CF@lewis@length*\CF@lewis@xoffset/2 pt);% \fi \fi \fi @@ -2119,4 +2130,8 @@ v1.0 2011/06/15 - \Lewis modifie la boite englobante - les macros \chemleft, \chemright, \chemup et \chemdown affichent des d\'elimiteurs extensibles \`a gauche, \`a droite, - au dessus et au dessous d'un mat\'eriel. \ No newline at end of file + au dessus et au dessous d'un mat\'eriel. +---------------------------------------------------------------------- +v1.0a 2011/09/18 + - les macros \Lewis et \lewis admettent un argument optionnel + - la macro \setlewisdist r\`egle la distance entre les 2 \'electrons \ No newline at end of file diff --git a/Master/texmf-dist/tex/generic/chemfig/t-chemfig.tex b/Master/texmf-dist/tex/generic/chemfig/t-chemfig.tex index f0299a0abde..623d72a1df0 100644 --- a/Master/texmf-dist/tex/generic/chemfig/t-chemfig.tex +++ b/Master/texmf-dist/tex/generic/chemfig/t-chemfig.tex @@ -1,9 +1,9 @@ % __________________________________________________________________ % | | % | | -% | chemfig v1.0 | +% | chemfig v1.0a | % | | -% | June 15, 2011 | +% | September 18, 2011 | % | | % |__________________________________________________________________| % -- cgit v1.2.3