summaryrefslogtreecommitdiff
path: root/macros/generic
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-12-29 03:01:31 +0000
committerNorbert Preining <norbert@preining.info>2023-12-29 03:01:31 +0000
commita5ae3453af00d8ec9eb8bf64151fc4c8bcb18021 (patch)
tree49722f55b01f8ce69a0cd1c783383e40bdb53473 /macros/generic
parent8806b2d6c55426cb0ba19311d2acf7c4f522a291 (diff)
CTAN sync 202312290301
Diffstat (limited to 'macros/generic')
-rw-r--r--macros/generic/chemfig/README4
-rw-r--r--macros/generic/chemfig/chemfig-en.pdfbin716706 -> 721769 bytes
-rw-r--r--macros/generic/chemfig/chemfig-en.tex39
-rw-r--r--macros/generic/chemfig/chemfig-fr.pdfbin731831 -> 736974 bytes
-rw-r--r--macros/generic/chemfig/chemfig-fr.tex39
-rw-r--r--macros/generic/chemfig/chemfig.tex105
6 files changed, 160 insertions, 27 deletions
diff --git a/macros/generic/chemfig/README b/macros/generic/chemfig/README
index 035b0b045a..39411aaecc 100644
--- a/macros/generic/chemfig/README
+++ b/macros/generic/chemfig/README
@@ -2,9 +2,9 @@ ___________________________________
The
Chemfig package
- v1.6e
+ v1.66
- 2023/06/30
+ 2023/12/28
___________________________________
Maintainer: Christian Tellechea
diff --git a/macros/generic/chemfig/chemfig-en.pdf b/macros/generic/chemfig/chemfig-en.pdf
index 1b8d9d2ca8..571f11e2cf 100644
--- a/macros/generic/chemfig/chemfig-en.pdf
+++ b/macros/generic/chemfig/chemfig-en.pdf
Binary files differ
diff --git a/macros/generic/chemfig/chemfig-en.tex b/macros/generic/chemfig/chemfig-en.tex
index a6a640256f..c7ed11d70b 100644
--- a/macros/generic/chemfig/chemfig-en.tex
+++ b/macros/generic/chemfig/chemfig-en.tex
@@ -243,6 +243,9 @@ For example, we can write \verb|schemestart code=\chemnameint{}| to reset the na
\subsection{Key "baseline"}
The value passed to this key sets the vertical position of the molecule. See page~\pageref{baseline}.
+\subsection{Cram bonds join}
+When \CFkey{bond join} is \CFval{true}, Cram bonds better connect to each other and to simple bonds. See page~\pageref{joinCram}.
+
\section{Presenting \protect\CF}
To use this package, start by adding the following code to the preamble:
\begin{itemize}
@@ -459,12 +462,6 @@ When the angle field contains an integer, this represents the angle the bond mak
These angles remain valid if the atoms are empty, and this is the case for all the features we will see below:
\exemple{Predefined angles with empty groups}|\chemfig{--[1]-[3]--[7]-[6]}|
-For those who find this "ugly\footnote{See \texttt{\detokenize{http://tex.stackexchange.com/questions/161796/ugly-bond-joints-in-chemfig detokenize}}}", it is now possible connect the single bonds with a slightly increased compilation time. The boolean \chevrons{key} \CFkv{bond join}{boolean} macro enables this feature when \CFval{true} and disables it when \CFval{false}, which is the better behavior, set by default.
-
-\exemple{Connecting bonds}/\setchemfig{bond style={line width=3pt}}
-\chemfig{-[1]-[7]} et
-\chemfig[bond join=true]{-[1]-[7]}/
-
\label{angle increment}The \chevrons{key} \CFkv{angle increment}{angle} sets the default angle used to calculate the angle of a bond:
\exemple{Set the predefined angle}/Default (45) : \chemfig{-[1]-[-1]-[1]-[-1]}
@@ -599,6 +596,36 @@ Numerous \TIKZ decoration libraries are available. For example, one can use the
Cram bonds ignore thickness and dash settings.
+\section{Connecting bonds}
+By default, the lines representing single bonds do not connect, which can be too visible and unsightly when the line widths are large.
+
+For those who find this "ugly\footnote{See \texttt{\detokenize{http://tex.stackexchange.com/questions/161796/ugly-bond-joints-in-chemfig detokenize}}}", it is now possible connect the single bonds with a slightly increased compilation time. The boolean \chevrons{key} \CFkv{bond join}{boolean} macro enables this feature when \CFval{true} and disables it when \CFval{false}, which is the better behavior, set by default.
+
+\exemple{Connecting bonds}/\setchemfig{bond style={line width=3pt}}
+\chemfig{-[1]-[7]} et
+\chemfig[bond join=true]{-[1]-[7]}/
+
+The problem is even more obvious with Cram bonds when they connect to a single bond or another Cram bond. Here again, setting \CFkey{bond join} to \CFval{true} makes for more aesthetically pleasing connections.\label{joinCram}
+
+\exemple{Connecting Cram bonds}/
+\chemfig{<[:-20]>[:50]}\qquad
+\chemfig[bond join]{<[:-20]>[:50]}
+\medbreak
+\setchemfig{cram width=5pt}
+\chemfig{<[:-45]-[:30,,,,line width=5pt]>[:-10]}\qquad
+\chemfig[bond join]{<[:-45]-[:30,,,,line width=5pt]>[:-10]}/
+
+It is important to note the tow following points:
+\begin{itemize}
+ \item \CFkey{bond join} is \CFval{true}, the Cram bond is drawn without an outline: it will therefore appear slightly thinner (the importance depending on the \CFval{line width} parameter);
+ \item \CFkey{bond join} has no effect between a simple bond and a Cram bond when the 2 vertices of the base of the triangle of the Cram bond are outside the space delimited by the 2 parallel edges of the simple bond. Mathematically, it is the case when $d \cos\alpha>w$, where $d$ is the value of \CFval{cram width}, $w$ is the width of the single bond and $\alpha$ is the angle between the 2 bonds.
+\end{itemize}
+
+\exemple{Connecting Cram bonds}/
+\setchemfig{cram width=5pt, bond join}
+\chemfig{-[,,,,line width=3pt]>[:30]}\qquad
+\chemfig{-[,,,,line width=3pt]>[:65]}/
+
\section{Default values}
At the beginning of each molecule, the default values for the optional arguments are initialized. They are:
\begin{itemize}
diff --git a/macros/generic/chemfig/chemfig-fr.pdf b/macros/generic/chemfig/chemfig-fr.pdf
index 78f90d47e2..2eefc55f6e 100644
--- a/macros/generic/chemfig/chemfig-fr.pdf
+++ b/macros/generic/chemfig/chemfig-fr.pdf
Binary files differ
diff --git a/macros/generic/chemfig/chemfig-fr.tex b/macros/generic/chemfig/chemfig-fr.tex
index 9250e57d17..ab05427c42 100644
--- a/macros/generic/chemfig/chemfig-fr.tex
+++ b/macros/generic/chemfig/chemfig-fr.tex
@@ -243,6 +243,9 @@ On peut, par exemple, écrire «\verb|schemestart code=\chemnameint{}|» pour rÃ
\subsection{Clé «baseline»}
La valeur passée à cette clé permet de contrôler la position verticale de la molécule tracée par rapport à la ligne de base. Voir page~\pageref{baseline}.
+\subsection{Raccord avec les liaisons de Cram}
+Lorsque \CFkey{bond join} est \CFval{true}, les liaisons de Cram se raccordent plus esthétiquement entre-elles et aux liaisons simples. Voir page~\pageref{joinCram}.
+
\section{Présentation}
Pour charger \CF, il faut écrire :
\begin{itemize}
@@ -459,12 +462,6 @@ Lorsque l'argument optionnel contient un entier celui-ci représente l'angle que
Ces angles restent valable si les atomes sont vides et il en sera de même par la suite pour toutes les fonctionnalités que nous verrons :
\exemple{Angles prédéfinis, groupes vides}|\chemfig{--[1]-[3]--[7]-[6]}|
-Pour ceux qui trouvent cela « affreux\footnote{Voir \texttt{\detokenize{http://tex.stackexchange.com/questions/161796/ugly-bond-joints-in-chemfig}}} », il est désormais possible de raccorder les liaisons simples entres-elles moyennant un temps de compilation légèrement augmenté. La \chevrons{clé} booléenne \CFkv{bond join}{booléen} permet, lorsqu'elle est \CFval{true} d'activer cette fonctionnalité. La valeur par défaut est \CFval{false} qui est le comportement préférable.
-
-\exemple{Raccord entre liaisons}/\setchemfig{bond style={line width=3pt}}
-\chemfig{-[1]-[7]} et
-\chemfig[bond join=true]{-[1]-[7]}/
-
\label{angle increment}La \chevrons{clé} \CFkv{angle increment}{angle} permet de choisir un autre angle que celui de 45\degres{} sélectionné par défaut :
\exemple{Modification de l'angle prédéfini}/Par défaut (45) : \chemfig{-[1]-[-1]-[1]-[-1]}
@@ -599,6 +596,36 @@ On peut ainsi avoir accès aux nombreuses librairies de décoration de \TIKZ. On
Les liaisons de Cram sont insensibles aux attributs d'épaisseur et de pointillés.
+\section{Raccord entre liaisons}
+Par défaut, les lignes représentant les liaisons simples ne se raccordent pas, ce qui peut être trop visible et inesthétique lorsque les épaisseurs des lignes sont importantes.
+
+Pour ceux qui trouvent cela « affreux\footnote{Voir \texttt{\detokenize{http://tex.stackexchange.com/questions/161796/ugly-bond-joints-in-chemfig}}} », il est désormais possible de raccorder les liaisons simples entres-elles moyennant un temps de compilation légèrement augmenté. La \chevrons{clé} booléenne \CFkv{bond join}{booléen} permet, lorsqu'elle est \CFval{true} d'activer cette fonctionnalité. La valeur par défaut est \CFval{false} qui est le comportement préférable.
+
+\exemple{Raccord entre liaisons simples}/\setchemfig{bond style={line width=3pt}}
+\chemfig{-[1]-[7]} et
+\chemfig[bond join=true]{-[1]-[7]}/
+
+Le problème est encore plus évident avec les liaisons de Cram pleines lorsqu'elles se connectent à une liaison simple ou à une autre liaison de Cram. Là encore, mettre \CFkey{bond join} à \CFval{true} permet des raccords plus esthétiques.\label{joinCram}
+
+\exemple{Raccord avec liaisons de Cram}/
+\chemfig{<[:-20]>[:50]}\qquad
+\chemfig[bond join]{<[:-20]>[:50]}
+\medbreak
+\setchemfig{cram width=5pt}
+\chemfig{<[:-45]-[:30,,,,line width=5pt]>[:-10]}\qquad
+\chemfig[bond join]{<[:-45]-[:30,,,,line width=5pt]>[:-10]}/
+
+Il est important de noter que les deux points suivants
+\begin{itemize}
+ \item lorsque \CFkey{bond join} est \CFval{true}, la liaison de Cram est tracée sans contour : elle paraitra donc légèrement plus fine (l'importance dépendant du paramètre \CFval{line width});
+ \item \CFkey{bond join} est sans effet entre une liaison simple et une liaison de Cram lorque les 2 sommets qui forment la base du triangle de la liaison de Cram sont au dehors de l'espace délimité par les 2 bords parallèles de la liaison simple. Mathématiquement, c'est la cas lorsque $d \cos\alpha>w$, où $d$ est la valeur de \CFval{cram width}, $w$ est l'épaisseur de la liaison simple et $\alpha$ est l'angle entre les 2 liaisons.
+\end{itemize}
+
+\exemple{Raccord avec liaisons de Cram}/
+\setchemfig{cram width=5pt, bond join}
+\chemfig{-[,,,,line width=3pt]>[:30]}\qquad
+\chemfig{-[,,,,line width=3pt]>[:65]}/
+
\section{Valeurs par défaut}
Au début de chaque molécule, les valeurs par défaut des arguments optionnels des liaisons sont initialisées. Elles valent :
\begin{itemize}
diff --git a/macros/generic/chemfig/chemfig.tex b/macros/generic/chemfig/chemfig.tex
index f3f78f3968..b9531d51ef 100644
--- a/macros/generic/chemfig/chemfig.tex
+++ b/macros/generic/chemfig/chemfig.tex
@@ -4,9 +4,9 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% %
\def\CFname {chemfig} %
-\def\CFver {1.6e} %
+\def\CFver {1.66} %
% %
-\def\CFdate {2023/06/30} %
+\def\CFdate {2023/12/28} %
% %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
@@ -110,6 +110,7 @@
\newif\ifCF_compound_is_chemfig
\newdimen\CF_dim
+\newdimen\CF_turnangle
\newdimen\CF_arrowsize
\newdimen\CF_zero
\CF_zero=0pt
@@ -991,6 +992,9 @@
\let\CF_defaulttoatom\empty% numéro de l'atome où arrivent les laisons par défaut
\let\CF_defaulttikz\empty
\let\CF_previousbondangle\empty
+ \def\CF_previousbondtype{0}%
+ \def\CF_previousnode{}%
+ \def\CF_previous_offset{0pt}%
\let\CF_joinbond\CF_zero
\let\CF_previoustikz\empty
\everyeof{\_nil}\endlinechar-1
@@ -1329,7 +1333,10 @@
\CF_setoffset\CF_startoffset#4%
\CF_setoffset\CF_endoffset#5%
\let\CF_currentbondstyle\CF_bondstyle
- \CF_doifnotempty\CF_currenttikz{\CF_eaddtomacro\CF_currentbondstyle{\expandafter,\CF_currenttikz}}%
+ \CF_doifnotempty\CF_currenttikz
+ {%
+ \CF_eaddtomacro\CF_currentbondstyle{\expandafter,\CF_currenttikz}%
+ }%
\path(#2)--(#3)coordinate[pos=0](#2@)coordinate[pos=1](#3@);%
\CF_computenodevect{#2@}{#3@}%
\pgfmathsetmacro\CF_startcoeff{\CF_startoffset/\CF_vectorlen}%
@@ -1343,6 +1350,36 @@
\ifcase#1\relax
\CF_error{unknown bond type, this error should not occur^^JIf you think it's a bug, send a Minimal Example to the author}%
\or% 1 = liaison simple
+ \ifboolKV[chemfig]{bond join}% nouveau v1.66
+ {%
+ \scope
+ \expandafter\tikzset\expandafter{\CF_currentbondstyle}%
+ \ifnum\CF_previousbondtype=5
+ \ifnum0\ifdim\CF_startoffset=0pt 1\fi\ifdim\CF_previous_offset=0pt 1\fi=11
+ \CF_ifzerodim\CF_previousatomgroup
+ {%
+ \CF_turnangle=\CF_compute_turnangle{\CF_previousbondangle}{\CF_currentangle}%
+ \pgfmathsetmacro\CF_cram_overlap{\CF_crambasewidth*cos(\CF_turnangle)-\pgflinewidth}%
+ \ifdim\CF_cram_overlap pt>0pt
+ \CF_warning{Cram base too wide to join}%
+ \else
+ \ifdim\CF_turnangle>0pt % si on tourne à gauche
+ \fill(#2@@)--(\CF_previousnode@@2)--([shift=(\CF_currentangle-90:\pgflinewidth/2)]#2@@)--cycle;
+ \else
+ \fill(#2@@)--(\CF_previousnode@@1)--([shift=(\CF_currentangle+90:\pgflinewidth/2)]#2@@)--cycle;
+ \fi
+ \fi
+ }
+ {%
+ }%
+ \fi
+ \fi
+ \expandafter
+ \endscope
+ \expanded{\def\noexpand\CF_simplebondwidth{\the\dimexpr\pgflinewidth}}% récupère l'épaisseur de ligne si une liaison ">" est à suivre
+ }
+ {%
+ }%
\CF_drawaxisbond{#2}{#3}% trace la liaison simple dans l'axe
\or% 2 = liaison double
\ifCF_in_cycle
@@ -1393,13 +1430,40 @@
\CF_drawaxisbond{#2}{#3}% trace la liaison simple dans l'axe\CF_drawbonda(#2@@)--(#3@@);
\CF_drawbonda(#2@@1)--(#3@@1);
\CF_drawbonda(#2@@2)--(#3@@2);
- \or% 4 = liaison Cram pleine de #2 vers #3
- \CF_createnormnodes{#2@@}{#3@@}{\CF_crambasewidth/2}{}%
- \CF_expafter{\filldraw[}\CF_currentbondstyle,line join=bevel](#2@@1)--(#2@@2)--(#3@@)--cycle;
+ \or% 4 = liaison Cram pleine de #2 vers #3 : >
+ \CF_createnormnodes{#2@@}{#3@@}{\CF_crambasewidth/2}{\pgflinewidth/2}%
+ \CF_ifzerodim\CF_previousatomgroup% nouveau v1.66
+ {%
+ \ifnum\ifboolKV[chemfig]{bond join}10\ifdim\CF_startoffset=0pt 1\fi\ifdim\CF_previous_offset=0pt 1\fi=111
+ \ifnum\CF_previousbondtype=1
+ \CF_turnangle=\CF_compute_turnangle{\CF_previousbondangle}{\CF_currentangle}%
+ \pgfmathsetmacro\CF_cram_overlap{\CF_crambasewidth*cos(\CF_turnangle)-\CF_simplebondwidth}%
+ \ifdim\CF_cram_overlap pt>0pt
+ \CF_warning{Cram base too wide to join}%
+ \else
+ \CF_expafter{\fill[}\CF_currentbondstyle](#2@@1)--([shift=(\CF_previousbondangle\ifdim\CF_turnangle>0pt -\else+\fi90:\CF_simplebondwidth/2)]\CF_previousnode@@)--(#2@@2)--cycle;%
+ \fi
+ \else
+ \ifnum\CF_previousbondtype=5
+ \CF_turnangle=\CF_compute_turnangle{\CF_previousbondangle}{\CF_currentangle}%
+ \CF_expafter{\fill[}\CF_currentbondstyle](#2@@1)--([shift=(\CF_previousbondangle\ifdim\CF_turnangle>0pt -\else+\fi90:\CF_crambasewidth/2)]\CF_previousnode@@)--(#2@@2)--cycle;%
+ \fi
+ \fi
+ \fi
+ }
+ {%
+ }%
+ \ifboolKV[chemfig]{bond join}
+ {\CF_expafter{\fill[}}% pas de contour si liaisons jointes
+ {\CF_expafter{\filldraw[}}
+ \CF_currentbondstyle](#2@@1)--(#2@@2)--(#3@@2)--(#3@@1)--cycle;
\let\CF_joinbond\CF_zero
- \or% 5 = liaison Cram creuse de #3 vers #2
- \CF_createnormnodes{#3@@}{#2@@}{\CF_crambasewidth/2}{}%
- \CF_expafter{\filldraw[}\CF_currentbondstyle,line join=bevel](#3@@1)--(#3@@2)--(#2@@)--cycle;
+ \or% 5 = liaison Cram pleine de #2 vers #3 : <
+ \CF_createnormnodes{#3@@}{#2@@}{\CF_crambasewidth/2}{\pgflinewidth/2}%
+ \ifboolKV[chemfig]{bond join}
+ {\CF_expafter{\fill[}}% pas de contour si liaisons jointes
+ {\CF_expafter{\filldraw[}}
+ \CF_currentbondstyle](#2@@2)--(#2@@1)--(#3@@1)--(#3@@2)--cycle;
\let\CF_joinbond\CF_zero
\or% 6 = liaison Cram pointillée de #2 vers #3
\scope
@@ -1427,10 +1491,20 @@
\CF_error{unknown bond type, this error should not occur^^JIf you think it's a bug, send a Minimal Example to the author}%
\fi
\let\CF_startoffset\empty
+ \let\CF_previous_offset\CF_endoffset
\let\CF_endoffset\empty
\let\CF_previoustikz\CF_currenttikz
\let\CF_previousbondangle\CF_previousangle
- \def\CF_previousbond{#1}%
+ \edef\CF_previousnode{#3}%
+}
+
+\def\CF_compute_turnangle#1#2{%
+ \expandafter\CF_compute_turnangle_a\the\dimexpr #2pt-#1pt\relax\_nil
+}
+\def\CF_compute_turnangle_a#1\_nil{%
+ \dimexpr#1
+ \ifdim#1<-180pt +360pt\else
+ \ifdim#1>180pt -360pt\fi\fi\relax
}
\def\CF_drawaxisbondnojoin#1#2{\CF_drawbonda(#1@@)--(#2@@);}
@@ -1513,7 +1587,7 @@
\CF_drawbonda(#1@@)--(#2@@);
\fi
\else
- \CF_drawbonda(#1@@)--(#2@@);
+ \CF_drawbonda(#1@@)--(#2@@);%
\fi
}%
\fi
@@ -1669,6 +1743,7 @@
\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
\CF_drawbond\CF_bondtype{\CF_bondoutnode}{n\number\CF_cnt_group-\number\CF_cnt_atom}\CF_previousatomgroup\CF_currentatomgroup
+ \let\CF_previousbondtype\CF_bondtype
\fi
\def\CF_lastaction{1}% met la dernière action à 1 : affichage d'un noeud
\loop
@@ -3218,7 +3293,7 @@ v0.2 2010/08/31
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.
+ le style des noeuds dessinés par tikz.
----------------------------------------------------------------------
v0.3 2010/11/21
- Amélioration de \definesubmol qui accepte les séquences de
@@ -3554,4 +3629,8 @@ v1.6d 2023/02/18
----------------------------------------------------------------------
v1.6e 2023/06/30
- nouvelle clé "baseline" pour régler finement l'alignement
- vertical d'une molécule \ No newline at end of file
+ vertical d'une molécule
+----------------------------------------------------------------------
+v1.66 2023/12/28
+ - les liaisons de Cram pleines sont jointes entre elles ou aux
+ liaisons simples lorsque "bond join" est vrai \ No newline at end of file