summaryrefslogtreecommitdiff
path: root/macros
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
parent8806b2d6c55426cb0ba19311d2acf7c4f522a291 (diff)
CTAN sync 202312290301
Diffstat (limited to 'macros')
-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
-rw-r--r--macros/latex/contrib/asmeconf/README.md7
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf-template.pdfbin476945 -> 481906 bytes
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf-template.tex2
-rw-r--r--macros/latex/contrib/asmeconf/asmeconf.cls15
-rw-r--r--macros/latex/contrib/decimalcomma/decimalcomma.dtx61
-rw-r--r--macros/latex/contrib/decimalcomma/decimalcomma.pdfbin95558 -> 102789 bytes
-rw-r--r--macros/latex/contrib/eolang/README.md2
-rw-r--r--macros/latex/contrib/eolang/eolang.dtx67
-rw-r--r--macros/latex/contrib/eolang/eolang.pdfbin1933472 -> 1935887 bytes
-rw-r--r--macros/latex/contrib/iexec/LICENSE.txt2
-rw-r--r--macros/latex/contrib/iexec/README.md7
-rw-r--r--macros/latex/contrib/iexec/iexec.dtx42
-rw-r--r--macros/latex/contrib/iexec/iexec.ins4
-rw-r--r--macros/latex/contrib/iexec/iexec.pdfbin334401 -> 335292 bytes
20 files changed, 301 insertions, 95 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
diff --git a/macros/latex/contrib/asmeconf/README.md b/macros/latex/contrib/asmeconf/README.md
index 0a4a3a9c0c..d5e7791076 100644
--- a/macros/latex/contrib/asmeconf/README.md
+++ b/macros/latex/contrib/asmeconf/README.md
@@ -1,7 +1,7 @@
#asmeconf: A latex template for ASME conference papers#
- Version 1.35 dated 2022/10/19.
+ Version 1.36 dated 2022/12/28.
####Overview####
This class provides a LaTeX template for ASME Conference papers formatted according to
@@ -79,6 +79,9 @@
---
####Change log####
+ v1.36 (2022/12/28)
+ - Change option-passing to xcolor package to address recent changes that package's code which lead to an error message.
+
v1.35 (2022/10/19)
- Adjust pdf-a code to accommodate recent changes to hyperxmp package. NOTE: \\DocumentMetadata{ ..} is now preferred to using class option [pdf-a].
- Add option to not use boldface text in captions: [unboldcaption]
@@ -97,7 +100,7 @@
v1.31 (2022/07/04)
- Minor updates to address changes in the June 2022 release of LaTeX (PL 4) and the textcase package.
-- Add option to asmewide.sty to suppress final page column balancing, \[raggedend\], expand error message text.
+ - Add option to asmewide.sty to suppress final page column balancing, \[raggedend\], expand error message text.
v1.30 (2022/03/14)
- Edit code loading fonts for Greek, Vietnamese, and cyrillic languages under pdflatex, to ensure compatibility with newtx v1.71. These options now require LaTeX distributions 2020/02/02 or later.
diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.pdf b/macros/latex/contrib/asmeconf/asmeconf-template.pdf
index f3cf860b33..335d1e2daa 100644
--- a/macros/latex/contrib/asmeconf/asmeconf-template.pdf
+++ b/macros/latex/contrib/asmeconf/asmeconf-template.pdf
Binary files differ
diff --git a/macros/latex/contrib/asmeconf/asmeconf-template.tex b/macros/latex/contrib/asmeconf/asmeconf-template.tex
index 318e173221..c45170adb3 100644
--- a/macros/latex/contrib/asmeconf/asmeconf-template.tex
+++ b/macros/latex/contrib/asmeconf/asmeconf-template.tex
@@ -4,7 +4,7 @@
%% This file is asmeconf-template.tex, a LaTeX template to format ASME Conference papers according to
%% the requirements on ASME's conference web pages, and including hypertext support for the pdf.
%%
-%% This file is version 1.35 dated 2023/10/19
+%% This file is version 1.36 dated 2023/12/28
%%
%% As of version 1.11, this template defaults to ASME's newer conference guidelines first posted July 2019.
%% Those guidelines changed the requested author block formatting to be inline.
diff --git a/macros/latex/contrib/asmeconf/asmeconf.cls b/macros/latex/contrib/asmeconf/asmeconf.cls
index 2d523be750..31cb16cb71 100644
--- a/macros/latex/contrib/asmeconf/asmeconf.cls
+++ b/macros/latex/contrib/asmeconf/asmeconf.cls
@@ -5,8 +5,8 @@
%% ASME conference requirements as represented on ASME's conference web pages in 2022.
%%
%% This file's version and date:
- \def\versionno{1.35}
- \def\versiondate{2023/10/19\space}
+ \def\versionno{1.36}
+ \def\versiondate{2023/11/19\space}
%%
%% Author: John H. Lienhard, V
%% Department of Mechanical Engineering
@@ -47,7 +47,7 @@
%%
%% LICENSE:
%%
-%% Copyright (c) 2022 John H. Lienhard
+%% Copyright (c) 2023 John H. Lienhard
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and
%% associated documentation files (the "Software"), to deal in the Software without restriction,
@@ -333,7 +333,7 @@
\define@key{pdfaopt}{pdfaconformance}[u]{%
% \PassOptionsToPackage{pdfaconformance=#1}{hyperref}%
\str_set:Ne \l_tmp_str { \str_uppercase:n {#1} }
- \typeout{\l_tmp_str}
+% \typeout{\l_tmp_str}
\AtBeginDocument{\hypersetup{pdfaconformance=\l_tmp_str}}
}
\ExplSyntaxOff
@@ -452,9 +452,8 @@
\RequirePackage[sort&compress,numbers]{natbib}
\setlength\bibsep{1pt plus 1pt minus 1pt}
-\RequirePackage{graphicx}
-\ifpdftex\def\MyColorOption{fixpdftex}\else\ifluatex\def\MyColorOption{luatex}\else\def\MyColorOption{}\fi\fi
-\RequirePackage[hyperref,\MyColorOption,dvipsnames,svgnames,x11names]{xcolor}
+\RequirePackage{graphicx} % remove obsolete options, 2023/11/19
+\RequirePackage[dvipsnames,svgnames,x11names]{xcolor}
%%%%%%%%%%%% Table related %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1372,7 +1371,7 @@
%% A separate command command for nomenclature subheadings
\NewDocumentCommand\EntryHeading{m}{%
\itemsep3\p@ plus 1\p@ minus 1\p@%
- \goodbreak\item[\itshape#1\hfill]\setlength\itemsep\savitemsep\@itempenalty=1000%
+ \goodbreak\item[\itshape#1\hfill]\mbox{}\setlength\itemsep\savitemsep\@itempenalty=1000%
}
%% Increase first optional argument to a dimension > 2em if wide entries cause undesired misalignment of columns.
diff --git a/macros/latex/contrib/decimalcomma/decimalcomma.dtx b/macros/latex/contrib/decimalcomma/decimalcomma.dtx
index 087e63bde5..5ee720ea2c 100644
--- a/macros/latex/contrib/decimalcomma/decimalcomma.dtx
+++ b/macros/latex/contrib/decimalcomma/decimalcomma.dtx
@@ -20,10 +20,12 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{decimalcomma}
- [2023/12/20 v1.2 .dtx decimalcomma file]
+ [2023/12/28 v1.3 .dtx Comma for decimal numbers]
%</package>
%<*driver>
\documentclass{ltxdoc}
+%\usepackage{doc}
+%\MakeShortVerb|
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english]{babel}
@@ -58,7 +60,7 @@
%</driver>
% \fi
%
-% \CheckSum{36}
+% \CheckSum{24}
%
% \CharacterTable
% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
@@ -79,6 +81,7 @@
% \changes{v1.0}{2023/12/06}{Initial version}
% \changes{v1.1}{2023/12/19}{Error message when unicode-math loaded after decimalcomma}
% \changes{v1.2}{2023/12/20}{Bug correction: bad typo for the boolean DC@unicodemath}
+% \changes{v1.3}{2023/12/28}{Loading icomma to avoid babel-french + numprint problems}
%
% \GetFileInfo{decimalcomma.sty}
%
@@ -89,7 +92,7 @@
%
% \section{Why this package?}
%
-% In many countries, except notably in Anglo-Saxon countries,
+% In many countries, except notably in the English-speaking countries,
% the comma is used as the decimal separator for numbers.
% However, in the math mode of \LaTeX, the comma is always, by default,
% treated as a punctuation symbol and therefore is followed by a space.
@@ -150,7 +153,7 @@
%
% \section{Implementation}
%
-% This first peace of code aims to generate an appropriate error message, if you load
+% This first piece of code aims to generate an appropriate error message, if you load
% \textsf{unicode-math} \emph{after} \textsf{decimalcomma}.
% To achieve this, first we check if \textsf{unicode-math} has been loaded before.
% In that case, the boolean "DC@unicodemath" will be set to true.
@@ -174,36 +177,56 @@
}
% \end{macrocode}
-% We have taken up Walter Schmidt's fundamental idea for looking up the next character,
+% We have taken up Walter Schmidt's code for looking up the next character,
+% and define the comma as active in math mode,
% but with an execution loop to test all the digits from 0 to 9 instead of "\space".
% We could have also used ten nested "\if" \ldots "\else" \ldots "\fi" structures
% and that works very well.
-%
-% At |\begin{document}|, we store the original "\mathcode" of the comma,
-% in the |\mathcomma| macro, and then we make the comma active in math mode.
+%
+%We chose to directly load \textsf{icomma} instead of transcribing
+% the beginning portion of its code.
+% This avoids potential conflicts with an extension
+% that also uses \textsf{icomma}\footnote{The loading of \textsf{icomma} ensures also
+% proper functioning when using \textsf{babel-french} and \textsf{numprint}
+% with its \texttt{autolanguage} option
+% (an issue that does not arise with \textsf{babel-spanish}, for example).}.
% \begin{macrocode}
-\AtBeginDocument{%
- \mathchardef\mathcomma\mathcode`\,%
- \mathcode`\,="8000%
-}
+\RequirePackage{icomma}
% \end{macrocode}
-% The active comma checks the next input character. If the next character is in
-% the list 0123456789,
+%
+% First we introduce what \textsf{icomma} does.
+% At |\begin{document}|, the original "\mathcode" of the comma is stored,
+% in the |\mathcomma| macro, and then the comma is defined as active in math mode.
+% The active comma checks the next input character.
+% \begin{verbatim}
+%\AtBeginDocument{%
+% \mathchardef\mathcomma\mathcode`\,%
+% \mathcode`\,="8000 %
+%}
+%{\catcode`,=\active
+% \gdef,{\futurelet\@let@token\sm@rtcomma}
+%}
+% \end{verbatim}
+%
+% Then \textsf{icomma} defines the |\sm@rtcomma| macro, but this macro
+% is redefined here to match the expected behavior.
+% If the next character is in the list 0123456789,
% the active comma returns |\mathord| with the saved |\mathcomma|,
% so that no space will be added after the comma.
% Otherwise, |\mathcomma| is returned without |\mathord|, thus the comma behaves
% by default as a |\mathpunct|.
+% Note that |\@decimal@digit| must be called before |\@let@token| after |\ifx|.
% \begin{macrocode}
-{\catcode`,=\active
- \gdef,{\futurelet\@next\sm@rtcomma}}
-
\def\sm@rtcomma{%
- \@tfor\@let@token:=0123456789%
- \do{\expandafter\ifx\@let@token\@next\mathord\@break@tfor\fi}%
+ \@tfor\decimal@digit:=0123456789%
+ \do{\expandafter\ifx\decimal@digit\@let@token\mathord%
+ \@break@tfor\fi}%
\mathcomma}
% \end{macrocode}
+% Special thanks to J.F. Burnol for his insightful remarks and valuable advice
+% and let us pay tribute to Walter Schmidt, who is regrettably deceased.
%
% \begin{thebibliography}{5}
% % \begin{raggedright}
diff --git a/macros/latex/contrib/decimalcomma/decimalcomma.pdf b/macros/latex/contrib/decimalcomma/decimalcomma.pdf
index 398a9e61d0..a7c42c84b7 100644
--- a/macros/latex/contrib/decimalcomma/decimalcomma.pdf
+++ b/macros/latex/contrib/decimalcomma/decimalcomma.pdf
Binary files differ
diff --git a/macros/latex/contrib/eolang/README.md b/macros/latex/contrib/eolang/README.md
index 27d09c503e..588b155780 100644
--- a/macros/latex/contrib/eolang/README.md
+++ b/macros/latex/contrib/eolang/README.md
@@ -22,7 +22,7 @@ x -> [
\end{document}
```
-Otherwise, you can download [`eolang.sty`](https://raw.githubusercontent.com/objectionary/eolang.sty/gh-pages/eolang/eolang.sty) and add to your project.
+Otherwise, you can download [`eolang.sty`](https://yegor256.github.io/eolang/eolang.sty) and add to your project.
If you want to contribute yourself, make a fork, then create a branch,
then run `l3build ctan` in the root directory.
diff --git a/macros/latex/contrib/eolang/eolang.dtx b/macros/latex/contrib/eolang/eolang.dtx
index 8df6d7b2f3..9407f46eb6 100644
--- a/macros/latex/contrib/eolang/eolang.dtx
+++ b/macros/latex/contrib/eolang/eolang.dtx
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{eolang}
%<*package>
-[2023-12-27 0.16.0 Formulas and Graphs for EO Programming Language]
+[2023-12-28 0.17.0 Formulas and Graphs for EO Programming Language]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -86,7 +86,14 @@
% \textbf{\color{red}NB!}
% You must run \TeX{} processor with |--shell-escape| option
% and you must have \href{https://www.perl.org}{Perl} installed.
-% This package doesn't work on Windows.
+% If you omit the |--shell-escape| option, the package will try
+% to use cached files, if they exist. If they don't, compilation will
+% crash. Thus, when you must prepare your document for a compilation
+% without the |--shell-escape| option, run it locally with the option
+% and then package all files (including the files in the |_eolang| directory)
+% into a single ZIP archive.
+%
+% If |--shell-escape| is set, this package doesn't work on Windows.
% \section{Introduction}
%
@@ -771,7 +778,12 @@
% Then, we make a directory where all temporary files will be kept:
% \begin{macrocode}
-\iexec[null]{mkdir -p "\eolang@tmpdir/\jobname"}%
+\ifnum\ShellEscapeStatus=1%
+ \iexec[null]{mkdir -p "\eolang@tmpdir/\jobname"}%
+\else%
+ \message{eolang: Temporary directory "\eolang@tmpdir/\jobname"
+ is not created, because --shell-escape is not set^^J}%
+\fi%
% \end{macrocode}
% \begin{macro}{\eolang@lineno}
@@ -820,7 +832,7 @@
$macro = $ARGV[0];
open(my $fh, '<', $ARGV[1]);
my $tex; { local $/; $tex = <$fh>; }
-print "% This file is auto-generated by 0.16.0\n";
+print "% This file is auto-generated by 0.17.0\n";
print '% There are ', length($tex),
' chars in the input: ', $ARGV[1], "\n";
print '% ---', "\n";
@@ -1002,6 +1014,30 @@ print '\endinput';
% \end{macrocode}
% \end{macro}
+% \begin{macro}{\eolang@ifabsent}
+% \changes{0.17.0}{2023/12/28}{A new supplementary \texttt{eolang@ifabsent} command added}
+% Then, we define the |\eolang@ifabsent| command, which if a given file is absent, runs a processing command, otherwise just inputs it:
+% \begin{macrocode}
+\makeatletter
+\newcommand\eolang@ifabsent[2]{%
+ \IfFileExists
+ {#1}
+ {%
+ \message{eolang: File "#1" already exists ^^J}%
+ \input{#1}}
+ {%
+ \ifnum\ShellEscapeStatus=1\else%
+ \message{eolang: The --shell-escape command line
+ option is not provided, most probably compilation
+ will fail now:^^J}%
+ \fi%
+ #2%
+ }%
+}
+\makeatother
+% \end{macrocode}
+% \end{macro}
+
% \begin{macro}{phiquation}
% \changes{0.16.0}{2023/12/27}{The processing of \texttt{phiquation} data is done only if it's the first time processing, otherwise cache is used, thus making processing faster.}
% Then, we define the |phiquation| and the |phiquation*| environments through a supplementary
@@ -1009,10 +1045,9 @@ print '\endinput';
% \begin{macrocode}
\makeatletter\newcommand\eolang@process[1]{
\def\hash{\eolang@mdfive
- {\eolang@tmpdir/\jobname/phiquation.tex}}%
- \IfFileExists
+ {\eolang@tmpdir/\jobname/phiquation.tex}-\the\inputlineno}%
+ \eolang@ifabsent
{\eolang@tmpdir/\jobname/\hash-post.tex}
- {\input{\eolang@tmpdir/\jobname/\hash-post.tex}}
{%
\iexec[null]{cp "\eolang@tmpdir/\jobname/phiquation.tex"
"\eolang@tmpdir/\jobname/\hash.tex"}%
@@ -1052,19 +1087,18 @@ print '\endinput';
\RequirePackage{xstring}
\makeatletter\newcommand\phiq[1]{%
\StrSubstitute{\detokenize{#1}}{'}{'"'"'}[\clean]%
- \def\hash{\pdf@mdfivesum{\clean}}%
+ \def\hash{\pdf@mdfivesum{\clean}-\the\inputlineno}%
\ifdefined\eolang@nodollar\else\catcode`\$=3 \fi%
- \IfFileExists
+ \eolang@ifabsent
{\eolang@tmpdir/\jobname/\hash-phiq-post.tex}
- {\input{\eolang@tmpdir/\jobname/\hash-phiq-post.tex}}
{%
\iexec[log,trace,quiet,stdout=\eolang@tmpdir/\jobname/phiq.tex]{
/bin/echo '\clean'}%
- \iexec[null]{cp "\eolang@tmpdir/\jobname/phiq.tex"
- "\eolang@tmpdir/\jobname/\hash.tex"}%
+ \iexec[quiet,null]{cp "\eolang@tmpdir/\jobname/phiq.tex"
+ "\eolang@tmpdir/\jobname/\hash-phiq.tex"}%
\iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-phiq-post.tex]{
perl \eolang@tmpdir/eolang-phi.pl 'phiq'
- "\eolang@tmpdir/\jobname/\hash.tex"
+ "\eolang@tmpdir/\jobname/\hash-phiq.tex"
\ifdefined\eolang@nocomments | perl -pe 's/\%.*(\\n|$)//g' \fi}%
}%
\ifdefined\eolang@nodollar\else\catcode`\$\active\fi%
@@ -1516,15 +1550,14 @@ print '\endinput';
{\eolang@tmpdir/\jobname/sodg.tex}}
{\end{VerbatimOut}%
\def\hash{\eolang@mdfive
- {\eolang@tmpdir/\jobname/sodg.tex}}%
+ {\eolang@tmpdir/\jobname/sodg.tex}-\the\inputlineno}%
\catcode`\$=3 %
- \IfFileExists
+ \eolang@ifabsent
{\eolang@tmpdir/\jobname/\hash-sodg-post.tex}
- {\input{\eolang@tmpdir/\jobname/\hash-sodg-post.tex}}
{%
\iexec[null]{cp "\eolang@tmpdir/\jobname/sodg.tex"
"\eolang@tmpdir/\jobname/\hash.tex"}%
- \message{Start parsing `sodg' at line no. \the\inputlineno^^J}
+ \message{eolang: Start parsing `sodg' at line no. \the\inputlineno^^J}
\iexec[trace,stdout=\eolang@tmpdir/\jobname/\hash-sodg-post.tex]{
perl "\eolang@tmpdir/eolang-sodg.pl"
"\eolang@tmpdir/\jobname/\hash.tex"
diff --git a/macros/latex/contrib/eolang/eolang.pdf b/macros/latex/contrib/eolang/eolang.pdf
index 29ec974711..c970e3b189 100644
--- a/macros/latex/contrib/eolang/eolang.pdf
+++ b/macros/latex/contrib/eolang/eolang.pdf
Binary files differ
diff --git a/macros/latex/contrib/iexec/LICENSE.txt b/macros/latex/contrib/iexec/LICENSE.txt
index bd949ffdab..5744f745f0 100644
--- a/macros/latex/contrib/iexec/LICENSE.txt
+++ b/macros/latex/contrib/iexec/LICENSE.txt
@@ -1,6 +1,6 @@
(The MIT License)
-Copyright (c) 2021-2022 Yegor Bugayenko
+Copyright (c) 2021-2023 Yegor Bugayenko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the 'Software'), to deal
diff --git a/macros/latex/contrib/iexec/README.md b/macros/latex/contrib/iexec/README.md
index 93f1afce39..f1c96a5dc1 100644
--- a/macros/latex/contrib/iexec/README.md
+++ b/macros/latex/contrib/iexec/README.md
@@ -12,13 +12,14 @@ and then use in the preamble:
```tex
\documentclass{article}
-\usepackage{iexec}
+\usepackage[unskip]{iexec}
\begin{document}
-Today is \iexec{date +\%e-\%b-\%Y | tr -d '\\n'}.
+Today is \iexec{date +\%e-\%b-\%Y}.
\end{document}
```
-Otherwise, you can download [`iexec.sty`](https://raw.githubusercontent.com/yegor256/iexec/gh-pages/iexec/iexec.sty) and add to your project.
+Otherwise, you can download
+[`iexec.sty`](https://yegor256.github.io/iexec/iexec.sty) and add to your project.
The full example and all commands are available in the
[`iexec.pdf`](https://ftp.agdsn.de/pub/mirrors/latex/dante/macros/latex/contrib/iexec/iexec.pdf) file.
diff --git a/macros/latex/contrib/iexec/iexec.dtx b/macros/latex/contrib/iexec/iexec.dtx
index 12eabd6e28..e6e9905fb2 100644
--- a/macros/latex/contrib/iexec/iexec.dtx
+++ b/macros/latex/contrib/iexec/iexec.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
% (The MIT License)
%
-% Copyright (c) 2021-2022 Yegor Bugayenko
+% Copyright (c) 2021-2023 Yegor Bugayenko
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the 'Software'), to deal
@@ -50,7 +50,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{iexec}
%<*package>
-[2023-10-12 0.12.0 Inputable Shell Executions]
+[2023-12-28 0.13.0 Inputable Shell Executions]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -109,6 +109,10 @@
% in order to let \href{https://ctan.org/pkg/shellesc}{shellesc}
% execute your shell command.
+% It is important to remember that \LaTeX{} always uses ``|/bin/sh|'' shell.
+% This can't be changed,
+% as \href{https://tex.stackexchange.com/questions/698312}{explained here}.
+
% \section{Options}
% \DescribeMacro{quiet}
@@ -396,20 +400,30 @@ Today is \iexec{date +\%Y}!
% \changes{0.11.2}{2022/10/25}{If execution fails, we print the content of ``\texttt{stdout}'' anyway, even if the ``\texttt{log}'' is not turned on.}
% \begin{macrocode}
\ifdefined\iexec@null\else%
- \ifdefined\iexec@log%
- \message{iexec: This is the content of '\iexec@stdout':^^J}%
- \iexec@typeout{\iexec@stdout}%
- \message{<EOF>^^J}%
- \else%
- \ifnum\iexec@code=0\else%
- \ifdefined\iexec@ignore\else%
- \message{iexec: See the content of '\iexec@stdout'
- after failure:^^J}%
- \iexec@typeout{\iexec@stdout}%
- \message{<EOF>^^J}%
+ \IfFileExists
+ {\iexec@stdout}
+ {}
+ {\PackageError{iexec}{The "\iexec@stdout" file is absent
+ after processing, looks like some internal error}{}}%
+ \ifdefined\iexec@log%
+ \message{iexec: This is the content of '\iexec@stdout':^^J}%
+ \IfFileExists
+ {\iexec@stdout}
+ {\iexec@typeout{\iexec@stdout}}
+ {\PackageError{iexec}{The "\iexec@stdout" file is absent
+ after processing, looks like some internal error}{}}%
+ \message{<EOF>^^J}%
+ \else%
+ \ifnum\iexec@code=0\else%
+ \ifdefined\iexec@ignore\else%
+ \message{iexec: See the content of '\iexec@stdout'
+ after failure:^^J}%
+ \iexec@typeout{\iexec@stdout}%
+ \message{<EOF>^^J}%
+ \fi%
\fi%
\fi%
- \fi\fi%
+ \fi%
% \end{macrocode}
% Then, we check whether it's zero or not (if not zero, we either print a message or fail the build, depending on the presence of |ignore| option):
% \begin{macrocode}
diff --git a/macros/latex/contrib/iexec/iexec.ins b/macros/latex/contrib/iexec/iexec.ins
index 8d2fd38a42..186a9c813e 100644
--- a/macros/latex/contrib/iexec/iexec.ins
+++ b/macros/latex/contrib/iexec/iexec.ins
@@ -1,6 +1,6 @@
%% (The MIT License)
%%
-%% Copyright (c) 2021-2022 Yegor Bugayenko
+%% Copyright (c) 2021-2023 Yegor Bugayenko
%%
%% Permission is hereby granted, free of charge, to any person obtaining a copy
%% of this software and associated documentation files (the 'Software'), to deal
@@ -26,7 +26,7 @@
\preamble
(The MIT License)
-Copyright (c) 2021-2022 Yegor Bugayenko
+Copyright (c) 2021-2023 Yegor Bugayenko
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the 'Software'), to deal
diff --git a/macros/latex/contrib/iexec/iexec.pdf b/macros/latex/contrib/iexec/iexec.pdf
index df2af77a58..53aac0a7a1 100644
--- a/macros/latex/contrib/iexec/iexec.pdf
+++ b/macros/latex/contrib/iexec/iexec.pdf
Binary files differ