summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-11-18 03:04:57 +0000
committerNorbert Preining <norbert@preining.info>2022-11-18 03:04:57 +0000
commit8141bb63ac908014fe5b6bc7ebed4d2889c014d4 (patch)
treed3edba26deeb1d57bb2414e11ed566181a8f1dcb /macros
parent3692808268baf9f2c56b28f61c266ef0efbb0fe6 (diff)
CTAN sync 202211180304
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/README4
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/RELEASE9
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.pdfbin1268516 -> 1245018 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.tex126
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.pdfbin256022 -> 233089 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.tex10
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.pdfbin205707 -> 182889 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.tex8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.pdfbin86325 -> 64860 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.tex8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.pdfbin109286 -> 87995 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.tex8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.pdfbin286590 -> 280404 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.tex8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.pdfbin180012 -> 158653 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.tex8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.pdfbin87269 -> 68316 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.tex8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.pdfbin180128 -> 157473 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.tex8
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-authordate.bbx40
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common.cbx78
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common16.cbx17
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.bbx40
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.cbx75
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.bbx6
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.cbx17
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty5
-rw-r--r--macros/latex/contrib/lgrmath/README48
-rw-r--r--macros/latex/contrib/lgrmath/lgrmath.dtx1263
-rw-r--r--macros/latex/contrib/lgrmath/lgrmath.pdfbin0 -> 125218 bytes
-rw-r--r--macros/latex/contrib/memoir/README26
-rw-r--r--macros/latex/contrib/memoir/memman.pdfbin2837551 -> 2837566 bytes
-rw-r--r--macros/latex/contrib/memoir/memoir.dtx41
-rw-r--r--macros/latex/contrib/memoir/mempatch.dtx68
-rw-r--r--macros/latex/contrib/udes-genie-these/README.md35
-rw-r--r--macros/latex/contrib/udes-genie-these/document.tex50
-rw-r--r--macros/latex/contrib/udes-genie-these/udes-genie-these.dtx76
-rw-r--r--macros/latex/contrib/udes-genie-these/udes-genie-these.ins2
-rw-r--r--macros/latex/contrib/udes-genie-these/udes-genie-these.pdfbin124734 -> 129528 bytes
-rw-r--r--macros/luatex/generic/luakeys/README.md18
-rw-r--r--macros/luatex/generic/luakeys/luakeys-debug.sty2
-rw-r--r--macros/luatex/generic/luakeys/luakeys-doc.pdfbin276812 -> 283942 bytes
-rw-r--r--macros/luatex/generic/luakeys/luakeys-doc.tex130
-rw-r--r--macros/luatex/generic/luakeys/luakeys.lua118
-rw-r--r--macros/luatex/generic/luakeys/luakeys.sty2
-rw-r--r--macros/luatex/latex/luacas/README.md11
-rw-r--r--macros/luatex/latex/luacas/doc/appendix/luacas.dat2
-rw-r--r--macros/luatex/latex/luacas/doc/appendix/versionhistory.tex22
-rw-r--r--macros/luatex/latex/luacas/doc/luacas.pdfbin758211 -> 760471 bytes
-rw-r--r--macros/luatex/latex/luacas/doc/luacas.tex10
-rw-r--r--macros/luatex/latex/luacas/tex/_lib/luacas-inspect.lua (renamed from macros/luatex/latex/luacas/tex/_lib/inspect.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/_lib/luacas-pepperfish.lua (renamed from macros/luatex/latex/luacas/tex/_lib/pepperfish.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/_lib/luacas-table.lua (renamed from macros/luatex/latex/luacas/tex/_lib/table.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/_init.lua24
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua (renamed from macros/luatex/latex/luacas/tex/algebra/absexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-algebra_init.lua24
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua (renamed from macros/luatex/latex/luacas/tex/algebra/equation.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua (renamed from macros/luatex/latex/luacas/tex/algebra/euclideandomain.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua (renamed from macros/luatex/latex/luacas/tex/algebra/factorialexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-field.lua (renamed from macros/luatex/latex/luacas/tex/algebra/field.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua (renamed from macros/luatex/latex/luacas/tex/algebra/integer.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua (renamed from macros/luatex/latex/luacas/tex/algebra/integerquotientring.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua (renamed from macros/luatex/latex/luacas/tex/algebra/logarithm.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua (renamed from macros/luatex/latex/luacas/tex/algebra/polynomialring.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua (renamed from macros/luatex/latex/luacas/tex/algebra/rational.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua (renamed from macros/luatex/latex/luacas/tex/algebra/ring.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua (renamed from macros/luatex/latex/luacas/tex/algebra/rootexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua (renamed from macros/luatex/latex/luacas/tex/algebra/sqrtexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua (renamed from macros/luatex/latex/luacas/tex/algebra/trigexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-berlekampfactoring.lua (renamed from macros/luatex/latex/luacas/tex/algebra/polynomialring/berlekampfactoring.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-decomposition.lua (renamed from macros/luatex/latex/luacas/tex/algebra/polynomialring/decomposition.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-zassenhausfactoring.lua (renamed from macros/luatex/latex/luacas/tex/algebra/polynomialring/zassenhausfactoring.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/calculus/_init.lua6
-rw-r--r--macros/luatex/latex/luacas/tex/calculus/luacas-calculus_init.lua6
-rw-r--r--macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua (renamed from macros/luatex/latex/luacas/tex/calculus/derivativeexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua (renamed from macros/luatex/latex/luacas/tex/calculus/diffexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua (renamed from macros/luatex/latex/luacas/tex/calculus/integralexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/_init.lua16
-rw-r--r--macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-difference.lua (renamed from macros/luatex/latex/luacas/tex/core/binaryoperation/difference.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-power.lua (renamed from macros/luatex/latex/luacas/tex/core/binaryoperation/power.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-product.lua (renamed from macros/luatex/latex/luacas/tex/core/binaryoperation/product.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-quotient.lua (renamed from macros/luatex/latex/luacas/tex/core/binaryoperation/quotient.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-sum.lua (renamed from macros/luatex/latex/luacas/tex/core/binaryoperation/sum.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua (renamed from macros/luatex/latex/luacas/tex/core/atomicexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua (renamed from macros/luatex/latex/luacas/tex/core/binaryoperation.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua (renamed from macros/luatex/latex/luacas/tex/core/compoundexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua (renamed from macros/luatex/latex/luacas/tex/core/constantexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/luacas-core_init.lua16
-rw-r--r--macros/luatex/latex/luacas/tex/core/luacas-expression.lua (renamed from macros/luatex/latex/luacas/tex/core/expression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua (renamed from macros/luatex/latex/luacas/tex/core/functionexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua (renamed from macros/luatex/latex/luacas/tex/core/symbolexpression.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/luacas.sty6
-rw-r--r--macros/luatex/latex/luacas/tex/test/calculus/luacas-derivatives.lua (renamed from macros/luatex/latex/luacas/tex/test/calculus/derivatives.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/calculus/luacas-integrals.lua (renamed from macros/luatex/latex/luacas/tex/test/calculus/integrals.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/expressions/luacas-autosimplify.lua (renamed from macros/luatex/latex/luacas/tex/test/expressions/autosimplify.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/expressions/luacas-collect.lua (renamed from macros/luatex/latex/luacas/tex/test/expressions/collect.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/expressions/luacas-equations.lua (renamed from macros/luatex/latex/luacas/tex/test/expressions/equations.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/expressions/luacas-functions.lua (renamed from macros/luatex/latex/luacas/tex/test/expressions/functions.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/expressions/luacas-logarithms.lua (renamed from macros/luatex/latex/luacas/tex/test/expressions/logarithms.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/expressions/luacas-rationalexponent.lua (renamed from macros/luatex/latex/luacas/tex/test/expressions/rationalexponent.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/expressions/luacas-simplify.lua (renamed from macros/luatex/latex/luacas/tex/test/expressions/simplify.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/expressions/luacas-substitute.lua (renamed from macros/luatex/latex/luacas/tex/test/expressions/substitute.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/luacas-helper.lua (renamed from macros/luatex/latex/luacas/tex/test/helper.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/luacas-main.lua (renamed from macros/luatex/latex/luacas/tex/test/main.lua)44
-rw-r--r--macros/luatex/latex/luacas/tex/test/luacas-parser.lua (renamed from macros/luatex/latex/luacas/tex/test/parser.lua)2
-rw-r--r--macros/luatex/latex/luacas/tex/test/polynomials/luacas-partialfractions.lua (renamed from macros/luatex/latex/luacas/tex/test/polynomials/partialfractions.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomial.lua (renamed from macros/luatex/latex/luacas/tex/test/polynomials/polynomial.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomialmod.lua (renamed from macros/luatex/latex/luacas/tex/test/polynomials/polynomialmod.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/polynomials/luacas-roots.lua (renamed from macros/luatex/latex/luacas/tex/test/polynomials/roots.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua (renamed from macros/luatex/latex/luacas/tex/test/rings/conversion.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/rings/luacas-modulararithmetic.lua (renamed from macros/luatex/latex/luacas/tex/test/rings/modulararithmetic.lua)0
-rw-r--r--macros/luatex/latex/luacas/tex/test/rings/luacas-number.lua (renamed from macros/luatex/latex/luacas/tex/test/rings/number.lua)0
113 files changed, 2067 insertions, 484 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/README b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/README
index eac45ee706..1c8ed3d79a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/README
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/README
@@ -1,7 +1,7 @@
IMPORTANT NOTE:
This is the package formerly known as biblatex-chicago-notes-df. It
-is designed for use with the latest version (3.18) of biblatex. The
+is designed for use with the latest version (3.18b) of biblatex. The
package contains the 17th-edition Chicago style files, and I am also
maintaining the 16th-edition files for those for whom they remain a
necessity, though I have deprecated these older files and will remove
@@ -15,7 +15,7 @@ date. Most particularly please note that biber is now the required
backend for all the included styles (version 2.18 is designed for use
with the latest biblatex).
-README (version 2.3, 2022-07-02):
+README (version 2.3a, 2022-11-17):
Biblatex-chicago contains three biblatex styles implementing the
specifications of the Chicago Manual of Style, 17th edition. The
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/RELEASE b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/RELEASE
index 84c8102401..6710cdb5cd 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/RELEASE
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/RELEASE
@@ -1,3 +1,12 @@
+Release notes for version 2.3a [2022-11-17]:
+
+This release backports a bug-fix from the most recent LaTeX3
+programming layer. If you are using biblatex 3.18b and an older L3
+layer then the processing of your documents could fail and fall into
+an infinite loop, leaving behind an inscrutable message in your log
+file. This update should prevent that, and also fixes a few other
+minor glitches.
+
Release notes for version 2.3 [2022-07-02]:
All styles now require the current biblatex (3.18) and biber (2.18).
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.pdf
index 4ff5330930..360c89392c 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.tex
index 96f26ac5ea..03f2413a32 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/biblatex-chicago.tex
@@ -26,10 +26,10 @@ filecolor=Teal]{hyperref}
% \usepackage[scaled=0.9]{ClearSans}
% \usepackage[p]{zlmtt}
% \usepackage{gentium}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[
BoldFont = ClearSans-Bold.ttf,
ItalicFont = ClearSans-Italic.ttf,
@@ -117,7 +117,7 @@ HyphenChar={-}]
Style files for biblatex
\vspace{.3\baselineskip}
-\sffamily\normalsize\bfseries David Fussner\qquad Version 2.3\\
+\sffamily\normalsize\bfseries David Fussner\qquad Version 2.3a\\
\href{mailto:djf027@googlemail.com}{djf027@googlemail.com}\\ \today
\end{center}
@@ -150,6 +150,8 @@ HyphenChar={-}]
to let me know, and of course any suggestions for solving problems
more elegantly or accurately would be most welcome.}
+\enlargethispage{\baselineskip}
+
\mylittlespace\textbf{Important Note:} If you have used
\textsf{biblatex-chicago} before, especially if you've been using
anything earlier than version 2.0, please make sure you have read the
@@ -215,7 +217,7 @@ clickable link to an external document.
\begin{itemize}{}{}
\item The \textsf{biblatex} package, of course! The current version
- --- 3.18 at the time of writing --- has received extensive testing,
+ --- 3.18b at the time of writing --- has received extensive testing,
and contains features and bug fixes upon which my code relies.
Please don't use any earlier version. \textsf{Biblatex} requires
several packages, and it strongly recommends several more:
@@ -223,7 +225,7 @@ clickable link to an external document.
\item \textsf{biber} --- the next-generation \textsc{Bib}\TeX\
replacement by Philip Kime and Fran\c{c}ois Charette, available
from SourceForge (required). You should use the latest version,
- 2.18, to work with \textsf{biblatex} 3.18 and
+ 2.18, to work with \textsf{biblatex} 3.18b and
\textsf{biblatex-chicago}; please note that any other backend will
not produce accurate results.
\item e-\TeX\ (required)
@@ -238,8 +240,11 @@ clickable link to an external document.
\item \textsf{babel} --- a standard package (\emph{strongly}
recommended)
\item \textsf{csquotes} --- available from CTAN (recommended).
- Please upgrade to the latest version of \textsf{csquotes} (5.2l).
+ Please upgrade to the latest version of \textsf{csquotes} (5.2n).
\end{itemize}
+\item The standard \textsf{expl3} and \textsf{xparse} packages are
+ loaded automatically for most users, and if they aren't
+ \textsf{biblatex-chicago} does it for you.
\item With recent changes both to \textsf{biblatex} and to
\textsf{biblatex-chicago}, \textsf{biblatex-chicago} itself now
requires two packages, which are both loaded for you if you load
@@ -1028,7 +1033,7 @@ the added fields \textsf{version} and \textsf{type} providing
information about the app's version and about the system on which it
runs (14.268; angry:birds).
-%\enlargethispage{-\baselineskip}
+%%\enlargethispage{-\baselineskip}
\mybigspace This \mymarginpar{\textbf{bookinbook}} type provides the
means of referring to parts of books that are considered, in other
@@ -1717,7 +1722,7 @@ wrongly-inherited fields. Other sorts of parent entries aren't
affected by this, and of course you must be using \textsf{Biber} for
the settings to apply.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace Should you wish to employ the new,
\textsf{maintitle}-first syntax, then you'll
@@ -1800,6 +1805,8 @@ mechanism's designed to save you some typing in common scenarios;
please see all of the (multifarious) details in
section~\ref{sec:related}, below.
+\enlargethispage{\baselineskip}
+
\paragraph*{\protect\mymarginpar{\textbf{online}}}
\label{sec:online}
@@ -1941,7 +1948,7 @@ deductively from the basic principles, I hope that the table might
simplify most of your choices. If something remains unclear, please
let me know and I'll see if I can improve it.
-\enlargethispage{\baselineskip}
+%\enlargethispage{\baselineskip}
\mylittlespace A few more notes are in order. I designed the
\textsf{relatedtype} \texttt{commenton} to facilitate citation of
@@ -2000,7 +2007,7 @@ way, as it allows you to provide the initialisms that the
\textsf{timezone}, \textsf{urldate}, and \textsf{userd} in
section~\ref{sec:entryfields}, below.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mybigspace The \mymarginpar{\textbf{patent}} \emph{Manual} is very
brief on this subject (14.258), but very clear about which information
@@ -2567,7 +2574,7 @@ name given here exactly matches that of an editor and/or a translator,
then \textsf{biblatex-chicago-notes} will concatenate these fields in
the formatted references.
-%\enlargethispage{-\baselineskip}
+%%\enlargethispage{-\baselineskip}
\mylittlespace As noted above, however, this field has a special
meaning in the \textsf{suppbook} entry type, used to make an
@@ -2657,7 +2664,7 @@ present in the entry, but please remember to use the new option
latter doesn't work as smoothly and completely as \textsf{biblatex's}
own name toggles.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace This system of options, then, can turn off
\textsf{biblatex-chicago-notes}'s mechanism for finding a name to
@@ -2760,6 +2767,8 @@ entry type for introductions, forewords and afterwords
(\textsf{suppbook}) uses \textsf{bookauthor} as the author of
\textsf{title} (polakow:afterw, prose:intro).
+\enlargethispage{2\baselineskip}
+
\mybigspace This, \mymarginpar{\vspace{-8pt}\textbf{bookpagination}}
a standard \textsf{biblatex} field, allows you automatically to prefix
the appropriate string to information you provide in a \textsf{pages}
@@ -3038,7 +3047,7 @@ Please note that you can set both of these options either in the
preamble or in the \textsf{options} field of individual entries,
allowing you to change the settings on an entry-by-entry basis.
-\enlargethispage{2\baselineskip}
+%\enlargethispage{2\baselineskip}
\mylittlespace Please further note that in earlier releases of
\textsf{biblatex-chicago} I recommended against using
@@ -3422,7 +3431,7 @@ so these three fields now work more or less as they do in standard
abbreviated references to online content than conventional URLs,
though I can find no specific reference to them in the \emph{Manual}.
-% \enlargethispage{-\baselineskip}
+% %\enlargethispage{-\baselineskip}
\mybigspace This \mymarginpar{\textbf{eventdate}} is a standard
\textsf{biblatex} field which has gradually accumulated functions in
@@ -3530,7 +3539,7 @@ usually identify the university for which the thesis was written,
while in a \textsf{report} entry it may identify any sort of
institution issuing the report.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mybigspace As \mymarginpar{\textbf{introduction}} with the
\textsf{afterword} and \textsf{foreword} fields above,
@@ -3722,7 +3731,7 @@ this field to \textsf{article}, \textsf{periodical}, and
of those entry types in section~\ref{sec:entrytypes}, above, and also
table~\ref{tab:online:types} (14.208; amlen:hoot).
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mybigspace An \mymarginpar{\textbf{maintitleaddon}} annex to the
\textsf{maintitle}, for which see previous entry. Such an annex would
@@ -4157,7 +4166,7 @@ or enclose the whole name in additional braces. (See \emph{Manual}
14.133--41; aristotle:metaphy:gr, cohen:schiff, creasey:ashe:blast,
dunn:revolutions.)
-%\enlargethispage{.5\baselineskip}
+%%\enlargethispage{.5\baselineskip}
\mylittlespace There are, as one might expect, a few further
subtleties involved here. If you give two publishers in the field
@@ -4615,7 +4624,7 @@ assuming that such a \textsf{title} begins with a lowercase letter in
your .bib database. See\,\textbf{\textbackslash autocap} in
section~\ref{sec:formatcommands} below for more details.
-% \enlargethispage{-\baselineskip}
+% %\enlargethispage{-\baselineskip}
\mybigspace Standard \colmarginpar{\textbf{titleaddon}}
\textsf{biblatex} intends this field for use with additions to titles
@@ -4822,7 +4831,7 @@ entry in the bibliography to which the cross-reference will point.
(See 14.81--82; creasey:ashe:blast, creasey:morton:hide,
creasey:york:death, lecarre:quest.)
-%\enlargethispage{2\baselineskip}
+%%\enlargethispage{2\baselineskip}
\mybigspace The \mymarginpar{\textbf{userd}} \textsf{userd} field acts
as a sort of \enquote{\textsf{datetype}} field, allowing you in most
@@ -5098,7 +5107,7 @@ contrib:contrib, schweitzer:bach). \textbf{NB:} The \textsf{pubstate}
functionality currently has no equivalent using the \textsf{related}
field.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mybigspace This \mymarginpar{\textbf{related}} field is required to
use \textsf{biblatex's} \textsf{related} functionality, and it should
@@ -5737,6 +5746,8 @@ all entry types. There may be other places where \textsf{biblatex's}
standard styles support this feature, and I shall add them when they
come to my attention.
+\enlargethispage{\baselineskip}
+
\mybigspace These \mymarginpar{\textbf{\textbackslash
foottextcite\\\textbackslash foottextcites}} two commands look
like citation commands, but are in fact wrappers for customizing the
@@ -5758,8 +5769,6 @@ change the first to: \texttt{\{\textbackslash newcunit\textbackslash
\cmd{headlessparencite(s)} command if you want to retain the long
citations inside the parentheses.)
-\enlargethispage{\baselineskip}
-
\mybigspace I \mymarginpar{\textbf{\textbackslash letterdatelong}}
have provided this macro mainly for use in the optional postnote field
of the various citation commands. When citing a letter (published or
@@ -5992,7 +6001,7 @@ that \textsf{biblatex-chicago-notes} sets this command to use
the most common citation command you will use, and also works fine in
its multicite form, \textbf{\textbackslash autocites}.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mybigspace While \mymarginpar{\textbf{\textbackslash cite*}} the
\cmd{cite} command works just as you would expect it to, I have also
@@ -6492,7 +6501,7 @@ Please see the documentation of \textsf{shorthand} and
further options available to you for presenting and formatting these
two types of \texttt{biblist}.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace Formerly
\mymarginpar{\cmd{Declare-}\\\texttt{Labelname}} available only to
@@ -7435,7 +7444,7 @@ list. Please see the documentation of the \textbf{shorthand} field in
section~\ref{sec:entryfields} above for information on further options
available to you for presenting and formatting the list of shorthands.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace Chris Sparks \mymarginpar{\texttt{shorthandibid}}
pointed out that \textsf{biblatex-chicago-notes} would never use
@@ -7741,7 +7750,7 @@ Both will work, particularly because you don't need to worry too much
about capitalization because the word always appears after the
\verb+\bibstring{see}+.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace Now, it's perfectly possible for an introduction to
have numbered sections of its own, so a citation there may produce a
@@ -7990,7 +7999,7 @@ than the first, but in any case I'll start by explaining the automatic
provisions, then move on to the two handcrafted options, leaving you
to judge which seems best suited to your needs.
-%\enlargethispage{\baselineskip}
+%%\enlargethispage{\baselineskip}
\mylittlespace For \mymarginpar{\texttt{\textbf{split}}} the automatic
subdivision of an endnotes section I have borrowed a concept, if not
@@ -9057,7 +9066,7 @@ field helps \textsf{biblatex-chicago} know that the \textsf{audio}
entry is a podcast episode, and helps it construct the entry
appropriately (danforth:podcast).
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mybigspace This \mymarginpar{\textbf{book}} is the standard
\textsf{biblatex} and \textsc{Bib}\TeX\ entry type, but the package
@@ -9208,7 +9217,7 @@ entries by setting the \texttt{authortitle} option to \texttt{false}
either in individual entries or in the preamble for all examples of
the entry type.
-%\enlargethispage{\baselineskip}
+%%\enlargethispage{\baselineskip}
\mybigspace This \mymarginpar{\textbf{image}} entry type is now a
clone of the \textsf{artwork} type, which see. I retain it here for
@@ -9469,7 +9478,7 @@ date at all will be required for entries referring to entire archival
collections. In such entries, you may wish to use the word
\enquote{\texttt{classical}} as your \textsf{entrysubtype}, which will
have no effect on the list of references but will change the look of
-the in-text citations (house:papers). Instead of any date, the
+the in-text citations (house:\break papers). Instead of any date, the
citation will include the \textsf{title}, separated from the
\textsf{author's} name by a space, e.g., (House Papers). This same
arrangement, happily, allows you easily to cite individual books of
@@ -9875,7 +9884,7 @@ deductively from the basic principles, I hope that the table might
simplify most of your choices. If something remains unclear, please
let me know and I'll see if I can improve it.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace A few more notes are in order. I designed the new
\textsf{relatedtype} \texttt{commenton} to facilitate citation of
@@ -10166,7 +10175,7 @@ but if it's a fuller entry also containing an \textsf{author} then
you'll also need \texttt{useauthor=false} in the \textsf{options}
field. Other surplus fields will be ignored. (See osborne:poison.)
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace \textsf{Biblatex-chicago} also, at the behest of
Bertold Schweitzer, supports the \textsf{relatedtype}
@@ -10407,7 +10416,7 @@ entry, that is, in the \textsf{foreword}, \textsf{afterword}, or
\textsf{introduction} field. (See \emph{Manual} 14.110;
friedman:intro, polakow:afterw, prose:intro).
-%\enlargethispage{\baselineskip}
+%%\enlargethispage{\baselineskip}
\mybigspace This \mymarginpar{\textbf{suppcollection}} fulfills a
function analogous to \textsf{suppbook}. Indeed, I believe the
@@ -10481,7 +10490,7 @@ main guidelines:
provided here, and will be printed as-is, contextually capitalized.
(Cf.\ hitchcock:nbynw.)
\item[title, titleaddon, booktitle, booktitleaddon, maintitle:] As
- with the other two audiovisual types, \textsf{video} serves as an
+ with the other 2 audiovisual types, \textsf{video} serves as an
analogue both to books and to collections, so the \textsf{title} may
be of a whole film DVD or of a TV series, or it may identify one
episode in a series or one scene in a film. In the latter cases,
@@ -10730,7 +10739,7 @@ pseudonym, and also the package options \texttt{nameaddonformat} and
\texttt{nameaddonsep} in sections~\ref{sec:authuseropts} and
\ref{sec:authpreset}, below.
-%\enlargethispage{2\baselineskip}
+%%\enlargethispage{2\baselineskip}
\mylittlespace As its name suggests, the author-date style very much
wants to have a name of some sort present both for the entries in the
@@ -11657,7 +11666,7 @@ should ensure presents whichever of the two editors' names
(\textsf{namea} or \textsf{editor}) appears at the head of the
reference-list entry.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace In \textsf{biblatex} 0.9 Lehman reworked the string
concatenation mechanism, for reasons he outlines in his RELEASE file,
@@ -11928,7 +11937,7 @@ undefined) to make an introduction the focus of a citation.
field, for providing the International Standard Book Number of a
publication. Not typically required by the \emph{Manual}.
-%\enlargethispage{-2\baselineskip}
+%%\enlargethispage{-2\baselineskip}
\mybigspace Standard \mymarginpar{\textbf{isrn}} \textsf{biblatex}
field, for providing the International Standard Technical Report
@@ -12388,7 +12397,7 @@ organization sponsoring a conference in a \textsf{proceedings} or
\textsf{inproceedings} entry, and I have retained this as a
possibility, though the \emph{Manual} is silent on the matter.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mybigspace This \mymarginpar{\textbf{origdate}} is a standard
\textsf{biblatex} field which allows more than one full date
@@ -12555,7 +12564,7 @@ appropriate identifying string to information you provide in the
all the details on this functionality, as aside from the difference
just mentioned the two fields are equivalent.
-\enlargethispage{\baselineskip}
+%\enlargethispage{\baselineskip}
\mybigspace Standard \mymarginpar{\textbf{part}} \textsf{biblatex}
field, which identifies physical parts of a single logical volume in
@@ -12664,7 +12673,7 @@ purposes. Cf.\ \textsf{annotator} and \textsf{commentator}.
\mybigspace See \mymarginpar{\textbf{reprinttitle}}
section~\ref{sec:authrelated}, below.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mybigspace A \mymarginpar{\textbf{series}} standard \textsf{biblatex}
field, usually just a number in an \textsf{article},
@@ -12770,7 +12779,7 @@ parseable by them, while with the latter you can either rely on the
conventions of your field or, alternately, provide a list of journal
abbreviations using \cmd{printbiblist\{shortjournal\}}.
-% \enlargethispage{-\baselineskip}
+% %\enlargethispage{-\baselineskip}
\mylittlespace For long institutional names the \emph{Manual's}
recommendation (15.37) involves using an abbreviation which will
@@ -13100,7 +13109,7 @@ serve to clarify them, and help you to understand when
\textsf{biblatex-chicago-authordate-trad} might need your help in
order to comply with them.
-%\enlargethispage{2\baselineskip}
+%%\enlargethispage{2\baselineskip}
\mylittlespace With regard to sentence-style capitalization, the rules
of the Chicago \textsf{authordate-trad} style are fairly simple:
@@ -13415,7 +13424,7 @@ part of an \textsf{urldate}. The \emph{Manual} prefers initialisms
like \enquote{EST} for this purpose, and you can provide parentheses
around it at your discretion (cp.\ 10.41 and 14.191).
-%\enlargethispage{\baselineskip}
+%%\enlargethispage{\baselineskip}
\mybigspace A \mymarginpar{\textbf{usera}} supplemental
\textsf{biblatex} field which in certain contexts in
@@ -13973,7 +13982,7 @@ Now, the Chicago-specific types:
and \textsf{review} entries (along with the latter's clone,
\textsf{suppperiodical}).
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
In \textsf{article} entries it replaces the \textsf{titleaddon} with
the \textsf{relatedstring} followed by the \textsf{title} of the
@@ -14547,7 +14556,7 @@ when presenting date ranges. The new style option
now compressed automatically according to the \emph{Manual's}
instructions (9.64; section~\ref{sec:authpreset}).
-\enlargethispage{\baselineskip}
+\enlargethispage{-\baselineskip}
\mylittlespace In \mymarginpar{\texttt{alltimes=12h}} entries which
print time stamps, they will, when the stamp is part of a
@@ -14617,7 +14626,7 @@ or whole spreads in twoside mode.
minor problem with punctuation in titles, ensuring that the colon
between a title and a subtitle appears in the correct, matching font.
-\enlargethispage{-\baselineskip}
+%\enlargethispage{-\baselineskip}
\mylittlespace This \mymarginpar{\texttt{related=true}} is the
standard \textsf{biblatex} bibliography option, and it enables the use
@@ -14701,6 +14710,8 @@ class, which I believe has its own commands for defining these
parameters. You can also disable it by using the \texttt{footmarkoff}
package option, on which see below.
+\enlargethispage{\baselineskip}
+
\mylittlespace Gildas Hamel pointed out that my default definition, in
\textsf{biblatex-chicago.sty}, of \textsf{biblatex's}
\cmd{bibnamedash} didn't work well with many fonts, leaving a line of
@@ -14817,7 +14828,7 @@ per-entry basis in the \textsf{options} field (though rather than use
this latter method it would make sense to eliminate the \textsf{pages}
field from the affected entries).
-\enlargethispage{\baselineskip}
+%\enlargethispage{\baselineskip}
\mylittlespace This \colmarginpar{\texttt{doi=true}} option controls
whether any \textsf{doi} fields present in the .bib file will be
@@ -15670,7 +15681,7 @@ which I haven't extensively tested, so I'm labeling this option
\textsf{postnote} field of citation commands, not the \textsf{pages}
field in your .bib file.
-% \enlargethispage{\baselineskip}
+% %\enlargethispage{\baselineskip}
\mylittlespace This \mymarginpar{\texttt{seriesabbrev}} option
controls the printing, in the reference list, of the
@@ -16164,7 +16175,7 @@ public and legal material.
commercial electronic database, of a legislative publication. It
will be associated with the \textsf{date} in long notes but won't
appear in short ones. (Cf.\ congress:debate:new and
- state:statute:ky.)%\enlargethispage{\baselineskip}
+ state:statute:ky.)%%\enlargethispage{\baselineskip}
\item[addendum] You can use this field to specify the speaker at
hearings or in debates, the Canadian or British jurisdiction of some
laws if not otherwise clear from the citation, or possibly simply
@@ -16759,7 +16770,16 @@ do my best to fix them.
\section{Revision History}
\label{sec:history}
-\textbf{2.3: Released \today}
+\textbf{2.3a: Released \today}
+
+\mylittlespace This release backports a bug-fix from the most recent
+\LaTeX 3 programming layer. If you are using \textsf{biblatex} 3.18b
+and an older L3 layer then the processing of your documents could fail
+and fall into an infinite loop, leaving behind an inscrutable message
+in your log file. This update should prevent that, and also fixes a
+few other minor glitches.
+
+\mybigspace\textbf{2.3: Released July 2, 2022}
\mylittlespace All styles require the current \textsf{biblatex} (3.18)
and \textsf{biber} (2.18).
@@ -18246,7 +18266,7 @@ Edition:
\item In \textbf{suppbook} entries, the \emph{Manual} now requires you
to provide the page range (in the \textsf{pages} field) for the
specific part you are citing, e.g., an introduction, foreword, or
- afterword.%%\enlargethispage{-2\baselineskip}
+ afterword.%%%\enlargethispage{-2\baselineskip}
\item In \textbf{patent} entries, the \emph{Manual} now prefers
sentence-style capitalization for titles, which you'll need to
provide yourself by hand.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.pdf
index b6d5d15613..9bec0f838a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.tex
index fc8c8effdd..ce73187927 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-intro.tex
@@ -40,10 +40,10 @@ formatbib=minwo]{biblatex-chicago}
\usepackage[colorlinks,urlcolor=DarkSlateGrey,citecolor=MidnightBlue,
plainpages=false,breaklinks=true,linkcolor=DarkSlateGrey,filecolor=Teal,
baseurl=biblatex-chicago.pdf\#]{hyperref}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[
BoldFont = ClearSans-Bold.ttf,
ItalicFont = ClearSans-Italic.ttf,
@@ -102,7 +102,7 @@ author-date specification you will need to use \textsf{biber} to
process your .bib files, as \textsc{Bib}\TeX\ (and its more recent
variants) will no longer provide all the features the style requires.
For this release, you really need the current versions of
-\textsf{biber} (2.18) and \textsf{biblatex} (3.18), which contain
+\textsf{biber} (2.18) and \textsf{biblatex} (3.18b), which contain
features and bug-fixes on which my own code relies. The advice that
follows in this document assumes that you are using \textsf{biber}; if
you wish to continue using \textsc{Bib}\TeX\ then you need
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.pdf
index c281daaa47..320fd9992d 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.tex
index 26037b7238..77e079d821 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-dates-sample.tex
@@ -33,10 +33,10 @@ postnotepunct,compresspages,strict,cmsbreakurl,cmsnameparts]{biblatex-chicago}
\newcommand{\cmd}[1]{\texttt{\textbackslash #1}}
\usepackage[colorlinks,urlcolor=blue,citecolor=black,
plainpages=false,breaklinks=true]{hyperref}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[
BoldFont = ClearSans-Bold.ttf,
ItalicFont = ClearSans-Italic.ttf,
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.pdf
index b6416af4fd..74207ffb42 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.tex
index 1cce627b47..a7a4cae57a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-legal-sample.tex
@@ -21,10 +21,10 @@ booklongxref=false,compresspages,related=true]{biblatex-chicago}
\usepackage[colorlinks,urlcolor=DarkSlateGrey,citecolor=MidnightBlue,
plainpages=false,breaklinks=true,linkcolor=DarkSlateGrey,
filecolor=Teal]{hyperref}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[
BoldFont = ClearSans-Bold.ttf,
ItalicFont = ClearSans-Italic.ttf,
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.pdf
index 75064411c9..e4afcb084a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.tex
index cf005981a4..71a321649d 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-noteref-demo.tex
@@ -31,10 +31,10 @@ noteref=section,noterefintro=introduction]{biblatex-chicago}
\usepackage[colorlinks,filecolor=Teal,citecolor=black,
plainpages=false,breaklinks=true,urlcolor=DarkSlateBlue,
linkcolor=DarkSlateBlue,baseurl=biblatex-chicago.pdf\#]{hyperref}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[
BoldFont = ClearSans-Bold.ttf,
ItalicFont = ClearSans-Italic.ttf,
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.pdf
index 33bf8e3a86..4d3ee06024 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.tex
index 8565537229..a33dd347e2 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-intro.tex
@@ -35,10 +35,10 @@ booklongxref=false,annotation,compresspages,formatbib=min]{biblatex-chicago}
\usepackage[colorlinks,filecolor=Teal,citecolor=black,
plainpages=false,breaklinks=true,urlcolor=DarkSlateBlue,
linkcolor=DarkSlateBlue,baseurl=biblatex-chicago.pdf\#]{hyperref}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[
BoldFont = ClearSans-Bold.ttf,
ItalicFont = ClearSans-Italic.ttf,
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.pdf
index 48a58a104d..9d07d47fee 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.tex
index fa88ea1eda..b62ad5b5ad 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-notes-sample.tex
@@ -22,10 +22,10 @@ booklongxref=false,compresspages,cmsnameparts]{biblatex-chicago}
\hyphenation{A-p-ril}
%\renewcommand{\sfdefault}{phv}
%\renewcommand{\ttdefault}{pcr}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[Scale = MatchLowercase]
\setmonofont{lmmono9-regular.otf}
% \usepackage[fallback,CJKspace=true]{xeCJK}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.pdf
index 1310be1c08..26f5668cba 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.tex
index 023a20d0da..9a19f2a010 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-appendix.tex
@@ -32,10 +32,10 @@ postnotepunct,compresspages,strict,annotation]{biblatex-chicago}
\usepackage[hyperref,svgnames]{xcolor}
\usepackage[colorlinks,urlcolor=DarkSlateGrey,citecolor=black,
plainpages=false,breaklinks=true,linkcolor=DarkSlateGrey]{hyperref}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[
BoldFont = ClearSans-Bold.ttf,
ItalicFont = ClearSans-Italic.ttf,
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.pdf
index db23521788..f82bc3416a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.tex b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.tex
index bdbf89399d..42c5d4ec5f 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.tex
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/doc/cms-trad-sample.tex
@@ -31,10 +31,10 @@ postnotepunct,compresspages,strict]{biblatex-chicago}
\newcommand{\cmd}[1]{\texttt{\textbackslash #1}}
\usepackage[colorlinks,urlcolor=blue,citecolor=black,
plainpages=false,breaklinks=true]{hyperref}
-\setmainfont{GentiumPlus-R.ttf}[
-ItalicFont = GentiumPlus-I.ttf,
-BoldFont = GenBasB.ttf,
-BoldItalicFont = GenBasBI.ttf]
+\setmainfont{GentiumPlus-Regular.ttf}[
+ItalicFont = GentiumPlus-Italic.ttf,
+BoldFont = GentiumPlus-Bold.ttf,
+BoldItalicFont = GentiumPlus-BoldItalic.ttf]
\setsansfont{ClearSans-Regular.ttf}[
BoldFont = ClearSans-Bold.ttf,
ItalicFont = ClearSans-Italic.ttf,
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-authordate.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-authordate.bbx
index 30fecc564f..dad0dc2c46 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-authordate.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-authordate.bbx
@@ -2,7 +2,7 @@
% Lehman's standard.bbx and from chicago-notes.bbx. It provides the
% reference list formatting for the Chicago author-date style.
-\ProvidesFile{chicago-authordate.bbx}[2022/07/02 v 3.18 biblatex
+\ProvidesFile{chicago-authordate.bbx}[2022/11/17 v 3.18b biblatex
bibliography style]
%%%% Initialize and format bibliography and los %%%%
@@ -849,43 +849,11 @@ bibliography style]
match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
replace=\regexp{\\citeincitefs$1$6\}}]
}
- \map[overwrite]{
- \step[fieldsource=titleaddon,
- match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
- replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=titleaddon,
- match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
- replace=\regexp{\\citeincitefs$1$6\}}]
- }
- \map[overwrite]{
- \step[fieldsource=annotation,
- match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
- replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=annotation,
- match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
- replace=\regexp{\\citeincitefs$1$6\}}]
- }
- \map[overwrite]{
- \step[fieldsource=annote,
- match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
- replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=annote,
- match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
- replace=\regexp{\\citeincitefs$1$6\}}]
- }
- \map[overwrite]{
- \step[fieldsource=addendum,
- match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
- replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=addendum,
- match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
- replace=\regexp{\\citeincitefs$1$6\}}]
- }
- \map[overwrite]{
- \step[fieldsource=note,
+ \map[overwrite, foreach={titleaddon,annotation,annote,addendum,note}]{
+ \step[fieldsource=$MAPLOOP,
match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=note,
+ \step[fieldsource=$MAPLOOP,
match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
replace=\regexp{\\citeincitefs$1$6\}}]
}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common.cbx
index 7c1f797561..7cfe99f699 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common.cbx
@@ -4,7 +4,7 @@
% list) for the two author-date styles of the Chicago Manual of Style,
% 17th edition.
-\ProvidesFile{chicago-dates-common.cbx}[2022/07/02 v 3.18 biblatex
+\ProvidesFile{chicago-dates-common.cbx}[2022/11/17 v 3.18b biblatex
citation style]
%%%% Biblatex initialization + Chicago options + Toggles %%%%
@@ -17,6 +17,34 @@ citation style]
\newbool{cms:tcit}
\newbool{cms:postsh}
+% Here we provide a slightly improved \if@cms@capital replacement
+% using expl3 facilities, and also backport a patch for a bug in
+% (older versions of) expl3's case-changing code.
+
+\ifdef{\ExplSyntaxOff}{}{\RequirePackage{xparse}\RequirePackage{expl3}}%
+
+\ExplSyntaxOn%
+
+\NewDocumentCommand \IfCMSFieldInitCS {m}
+{
+ \regex_match:nnTF
+ {\A(?:\c{citeincite(?:f|s){0,2}}|\cM.)}
+ {#1}
+ {\use_i:nn}
+ {\use_ii:nn}
+}
+
+\cs_if_exist:NTF \__text_change_case_switch_titleonly:nnNnnnn
+{}
+{\cs_new:Npn \__text_change_case_switch_titleonly:nnNnnnn #1#2#3#4#5#6#7
+ {
+ \__text_change_case_store:n {#7}
+ \__text_change_case_break:w
+ }
+}
+
+\ExplSyntaxOff
+
\providecommand*{\mkibid}[1]{#1}
\providetoggle{cms@inlineibid}
@@ -597,9 +625,9 @@ citation style]
{\ExecuteBibliographyOptions[jurisdiction,legal,legislation]{skipbib}}%
{}%
-\AtEndPreamble{% Automatic sorting by shorthand when it appears
- \iftoggle{cms@los}% at the head of the entry.
- {\DeclareSourcemap{
+\AtEndPreamble{%
+ \iftoggle{cms@los}% Automatic sorting by shorthand when it appears
+ {\DeclareSourcemap{% at the head of the entry.
\maps[datatype=bibtex]{
\map{
\step[fieldsource=shorthand, final]
@@ -867,10 +895,8 @@ citation style]
\ifx\cms@ldt@cmsnameparts\cms@tpl
#1{#3}%
#1[#2]{#3}
- \blx@warning@noline{#2 is the So Global Template}
\else
#1[#2]{#3}
- \blx@warning@noline{#2 is the Local Template}
\fi}
%% Name format declarations for bibliography and notes. The
@@ -2729,7 +2755,9 @@ citation style]
\DeclareFieldFormat{shortvol}{#1}
\DeclareFieldFormat[jurisdiction,legal,legislation]{addendum}{%
- \ifcapital{\mkbibparens{\MakeCapital{#1\isdot}}}{\mkbibparens{#1\isdot}}}
+ \ifcapital{\IfCMSFieldInitCS{#1}{\mkbibparens{#1\isdot}}%
+ {\mkbibparens{\MakeCapital{#1\isdot}}}}%
+ {\mkbibparens{#1\isdot}}}
\DeclareFieldFormat[legal,legislation]{part}{%
\ifnumerals{#1}%
@@ -3121,7 +3149,7 @@ citation style]
\DeclareFieldFormat{letterday}{\mkbibcurdinal{#1}}
\DeclareFieldFormat{note}{%
- \if@cms@capital{#1}{\MakeCapital{#1}}{#1}}%
+ \ifcapital{\IfCMSFieldInitCS{#1}{#1}{\MakeCapital{#1}}}{#1}}%
\DeclareFieldFormat{capital}{%
\ifcapital{\MakeCapital{#1}}{#1}}
@@ -3279,17 +3307,19 @@ citation style]
\DeclareFieldFormat{edition}{% New in 0.8
\ifinteger{#1}%
{\mkbibordedition{#1}~\bibstring{edition}}%
- {\ifcapital
+ {\ifcapital%
{\MakeCapital{#1\isdot}}%
{#1\isdot}}}
\DeclareFieldFormat{usere}{[#1]} % Better than mkbibbrackets?
\DeclareFieldFormat{titleaddon}{%
- \if@cms@capital{#1}{\MakeCapital{#1\isdot}}{#1\isdot}}%\custpunctc?
+ \ifcapital{\IfCMSFieldInitCS{#1}{#1\isdot}%
+ {\MakeCapital{#1\isdot}}}{#1\isdot}}%\custpunctc?
\DeclareFieldFormat[periodical]{titleaddon}{%
- \ifcapital{\MakeCapital{#1\isdot}}{#1\isdot}}
+ \ifcapital{\IfCMSFieldInitCS{#1}{#1\isdot}%
+ {\MakeCapital{#1\isdot}}}{#1\isdot}}
\DeclareFieldAlias{booktitleaddon}{titleaddon}
@@ -3327,30 +3357,8 @@ citation style]
\DeclareFieldFormat{shortseries}{#1\isdot}
\DeclareFieldFormat{addendum}{%
- \if@cms@capital{#1}{\MakeCapital{#1\isdot}}{#1\isdot}}
-
-% There was unfortunate interaction between the case-changing code and
-% cite commands when the latter were at the beginning of the
-% field. This modified \ifcapital will be used in the fields in which
-% the \citeincite(f|s) commands can appear.
-
-\newrobustcmd*{\if@cms@capital}[1]{%
- \noexpandarg
- \StrChar{#1}{1}[\cms@char]%
- \ifboolexpr{%
- test {\ifcapital}%
- and
- not test {\ifdefstring{\cms@char}{\citeincite}}%
- and
- not test {\ifdefstring{\cms@char}{\citeincites}}%
- and
- not test {\ifdefstring{\cms@char}{\citeincitef}}%
- and
- not test {\ifdefstring{\cms@char}{\citeincitefs}}%
- }%
- {\@firstoftwo}%
- {\@secondoftwo}%
-}
+ \ifcapital{\IfCMSFieldInitCS{#1}{#1\isdot}%
+ {\MakeCapital{#1\isdot}}}{#1\isdot}}
% For annotation fixes move all code for separators to the entrytail
% macro, below.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common16.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common16.cbx
index 68faa4d853..048f64096b 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common16.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-dates-common16.cbx
@@ -4,7 +4,7 @@
% for the two author-date styles of the Chicago Manual of Style, 16th
% edition.
-\ProvidesFile{chicago-dates-common16.cbx}[2022/07/02 v 3.18 biblatex
+\ProvidesFile{chicago-dates-common16.cbx}[2022/11/16 v 3.18b biblatex
citation style]
%%%% Biblatex initialization + Chicago options + Toggles %%%%
@@ -14,6 +14,21 @@ citation style]
\newbool{cms:extraparens}
\newbool{cms:comma}
+\ifdef{\ExplSyntaxOff}{}{\RequirePackage{xparse}\RequirePackage{expl3}}%
+
+\ExplSyntaxOn%
+
+\cs_if_exist:NTF \__text_change_case_switch_titleonly:nnNnnnn
+{}
+{\cs_new:Npn \__text_change_case_switch_titleonly:nnNnnnn #1#2#3#4#5#6#7
+ {
+ \__text_change_case_store:n {#7}
+ \__text_change_case_break:w
+ }
+}
+
+\ExplSyntaxOff
+
\providecommand*{\mkibid}[1]{#1}
\providetoggle{cms@inlineibid}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.bbx
index 9222c66e9c..0b16b3b51a 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.bbx
@@ -2,7 +2,7 @@
% Lehman's standard.bbx. It provides the bibliography formatting for
% the Chicago notes + bibliography style.
-\ProvidesFile{chicago-notes.bbx}[2022/07/02 v 3.18 biblatex bibliography style]
+\ProvidesFile{chicago-notes.bbx}[2022/11/17 v 3.18b biblatex bibliography style]
%%%% Initialize and format bibliography and los %%%%
@@ -859,43 +859,11 @@
final]
\step[fieldset=maintitle, fieldvalue=\csgdef{@cmsst}{\@ne}, append]
}
- \map[overwrite]{
- \step[fieldsource=titleaddon,
- match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
- replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=titleaddon,
- match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
- replace=\regexp{\\citeincitefs$1$6\}}]
- }
- \map[overwrite]{
- \step[fieldsource=annotation,
- match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
- replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=annotation,
- match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
- replace=\regexp{\\citeincitefs$1$6\}}]
- }
- \map[overwrite]{
- \step[fieldsource=annote,
- match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
- replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=annote,
- match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
- replace=\regexp{\\citeincitefs$1$6\}}]
- }
- \map[overwrite]{
- \step[fieldsource=addendum,
- match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
- replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=addendum,
- match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
- replace=\regexp{\\citeincitefs$1$6\}}]
- }
- \map[overwrite]{
- \step[fieldsource=note,
+ \map[overwrite, foreach={titleaddon,annotation,annote,addendum,note}]{
+ \step[fieldsource=$MAPLOOP,
match=\regexp{\\citeincite(\{|\[[^\]]*\]\[\]\{)([^\}]+)\}$},%$
replace=\regexp{\\citeincitef$1$2\}}]
- \step[fieldsource=note,
+ \step[fieldsource=$MAPLOOP,
match=\regexp{\\citeincites(((\{|(\[[^\]]*\])+\{|\([^\)]*\)\(\)\{|\([^\)]*\)\(\)(\[[^\]]*\])+\{)[^\}]+\})+)((\{|\[[^\]]*\]\[\]\{)[^\}]+)\}$},%$
replace=\regexp{\\citeincitefs$1$6\}}]
}
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.cbx
index 97b61e12e6..f5b2f942e0 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes.cbx
@@ -4,7 +4,7 @@
% formatted according to the specifications of the Chicago Manual of
% Style.
-\ProvidesFile{chicago-notes.cbx}[2022/07/02 v 3.18 biblatex citation style]
+\ProvidesFile{chicago-notes.cbx}[2022/11/17 v 3.18b biblatex citation style]
%%%% Biblatex initialization + Chicago options + Toggles %%%%
@@ -13,6 +13,34 @@
\newbool{cms:comma}
\newbool{cms:nd}
+% Here we provide a slightly improved \if@cms@capital replacement
+% using expl3 facilities, and also backport a patch for a bug in
+% (older versions of) expl3's case-changing code.
+
+\ifdef{\ExplSyntaxOff}{}{\RequirePackage{xparse}\RequirePackage{expl3}}%
+
+\ExplSyntaxOn%
+
+\NewDocumentCommand \IfCMSFieldInitCS {m}
+{
+ \regex_match:nnTF
+ {\A(?:\c{citeincite(?:f|s){0,2}}|\cM.)}
+ {#1}
+ {\use_i:nn}
+ {\use_ii:nn}
+}
+
+\cs_if_exist:NTF \__text_change_case_switch_titleonly:nnNnnnn
+{}
+{\cs_new:Npn \__text_change_case_switch_titleonly:nnNnnnn #1#2#3#4#5#6#7
+ {
+ \__text_change_case_store:n {#7}
+ \__text_change_case_break:w
+ }
+}
+
+\ExplSyntaxOff
+
\providecommand*{\mkibid}[1]{#1}
\providetoggle{cms@oneyear}% Needed for author-date
@@ -1456,10 +1484,8 @@
\ifx\cms@ldt@cmsnameparts\cms@tpl
#1{#3}%
#1[#2]{#3}
- \blx@warning@noline{#2 is the So Global Template}
\else
#1[#2]{#3}
- \blx@warning@noline{#2 is the Local Template}
\fi}
%% Name format declarations for bibliography and notes. The
@@ -6971,7 +6997,8 @@
\DeclareFieldFormat[patent]{lostitle}{\MakeSentenceCase*{#1}\isdot}
-\DeclareFieldFormat{prenote}{\ifcapital{\MakeCapital{#1}}{#1}\isdot}
+\DeclareFieldFormat{prenote}{%
+ \ifcapital{\MakeCapital{#1}}{#1}\isdot}
%% comprange code moved to .sty
@@ -7233,7 +7260,7 @@
\DeclareFieldFormat{letterday}{\mkbibcurdinal{#1}}
\DeclareFieldFormat{note}{%
- \if@cms@capital{#1}{\MakeCapital{#1}}{#1}}%
+ \ifcapital{\IfCMSFieldInitCS{#1}{#1}{\MakeCapital{#1}}}{#1}}%
\DeclareFieldFormat{capital}{%
\ifcapital{\MakeCapital{#1}}{#1}}
@@ -7388,7 +7415,7 @@
\DeclareFieldFormat{edition}{% New in 0.8
\ifinteger{#1}
{\mkbibordedition{#1}~\bibstring{edition}}%
- {\ifcapital
+ {\ifcapital%
{\MakeCapital{#1\isdot}}%
{#1\isdot}}}
@@ -7413,10 +7440,12 @@
\DeclareFieldFormat{usere}{[#1]} % Better than mkbibbrackets?
\DeclareFieldFormat{titleaddon}{%
- \if@cms@capital{#1}{\MakeCapital{#1\isdot}}{#1\isdot}}%
+ \ifcapital{\IfCMSFieldInitCS{#1}{#1\isdot}%
+ {\MakeCapital{#1\isdot}}}{#1\isdot}}%
\DeclareFieldFormat[periodical]{titleaddon}{%
- \ifcapital{\MakeCapital{#1\isdot}}{#1\isdot}}
+ \ifcapital{\IfCMSFieldInitCS{#1}{#1\isdot}%
+ {\MakeCapital{#1\isdot}}}{#1\isdot}}
\DeclareFieldAlias{booktitleaddon}{titleaddon}
@@ -7502,33 +7531,13 @@
\DeclareFieldFormat{shortseries}{#1\isdot}
\DeclareFieldFormat{addendum}{%
- \if@cms@capital{#1}{\MakeCapital{#1\isdot}}{#1\isdot}}
+ \ifcapital{\IfCMSFieldInitCS{#1}{#1\isdot}%
+ {\MakeCapital{#1\isdot}}}{#1\isdot}}
\DeclareFieldFormat[jurisdiction,legal,legislation]{addendum}{%
- \ifcapital{\mkbibparens{\MakeCapital{#1\isdot}}}{\mkbibparens{#1\isdot}}}
-
-% There was unfortunate interaction between the case-changing code and
-% cite commands when the latter were at the beginning of the
-% field. This modified \ifcapital will be used in the fields in which
-% the \citeincite(s) commands can appear.
-
-\newrobustcmd*{\if@cms@capital}[1]{%
- \noexpandarg
- \StrChar{#1}{1}[\cms@char]%
- \ifboolexpr{%
- test {\ifcapital}%
- and
- not test {\ifdefstring{\cms@char}{\citeincite}}%
- and
- not test {\ifdefstring{\cms@char}{\citeincitef}}%
- and
- not test {\ifdefstring{\cms@char}{\citeincites}}%
- and
- not test {\ifdefstring{\cms@char}{\citeincitefs}}%
- }%
- {\@firstoftwo}%
- {\@secondoftwo}%
-}
+ \ifcapital%
+ {\mkbibparens{\IfCMSFieldInitCS{#1}{#1\isdot}%
+ {\MakeCapital{#1\isdot}}}}{\mkbibparens{#1\isdot}}}
% For annotation fixes move all code for separators to the entrytail
% macro, below.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.bbx b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.bbx
index b0593b162f..1391f065bd 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.bbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.bbx
@@ -2,7 +2,7 @@
% standard.bbx It provides the bibliography formatting for the Chicago
% notes + bibliography style.
-\ProvidesFile{chicago-notes16.bbx}[2022/07/02 v 3.18 biblatex
+\ProvidesFile{chicago-notes16.bbx}[2022/11/16 v 3.18b biblatex
bibliography style]
%%%% Initialize and format bibliography and los %%%%
@@ -678,7 +678,7 @@ bibliography style]
\usebibmacro{issuetitle}%
\setunit*{\addcomma\addspace}%
\usebibmacro{byeditor+others}%
- \usebibmacro{editorpunct}%\newunit\newblock
+ \newunit\newblock
\printfield{note}%
\setunit*{\addcomma\addspace}\newblock%
\usebibmacro{mag+news+date}%
@@ -722,7 +722,7 @@ bibliography style]
\usebibmacro{issuetitle}%
\setunit*{\addcomma\addspace}%
\usebibmacro{byeditor+others}%
- \usebibmacro{editorpunct}%\newunit\newblock
+ \newunit\newblock
\printfield{note}%
\setunit*{\addcomma\addspace}\newblock% (changed for 0.7)??
\usebibmacro{journal+issue+year+pages}%
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.cbx b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.cbx
index 4301ea4756..922f264508 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.cbx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/chicago-notes16.cbx
@@ -3,7 +3,7 @@
% of providing footnote citations and a bibliography formatted
% according to the specifications of the Chicago Manual of Style.
-\ProvidesFile{chicago-notes16.cbx}[2022/07/02 v 3.18 biblatex citation style]
+\ProvidesFile{chicago-notes16.cbx}[2022/11/16 v 3.18b biblatex citation style]
%%%% Biblatex initialization + Chicago options + Toggles %%%%
@@ -12,6 +12,21 @@
\newbool{cms:comma}
\newbool{cms:nd}
+\ifdef{\ExplSyntaxOff}{}{\RequirePackage{xparse}\RequirePackage{expl3}}%
+
+\ExplSyntaxOn%
+
+\cs_if_exist:NTF \__text_change_case_switch_titleonly:nnNnnnn
+{}
+{\cs_new:Npn \__text_change_case_switch_titleonly:nnNnnnn #1#2#3#4#5#6#7
+ {
+ \__text_change_case_store:n {#7}
+ \__text_change_case_break:w
+ }
+}
+
+\ExplSyntaxOff
+
\providecommand*{\mkibid}[1]{#1}
\providetoggle{cms@oneyear}% Needed for author-date
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty
index 5847723412..e584bdf333 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-chicago/latex/cmsdocs.sty
@@ -326,7 +326,8 @@
{#1}}}%
{}%
-\renewbibmacro*{cite:journal}{%
+\ifbibmacroundef{cite:journal}{}%
+ {\renewbibmacro*{cite:journal}{%
\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}%
{\iffieldundef{prenote}%
{\bibsentence\usebibmacro{cite:ibid}}%
@@ -364,7 +365,7 @@
\ifthenelse{\iffieldundef{pagination}\AND%
\iffieldundef{bookpagination}}%
{\setunit{\postvolpunct}}%
- {\setunit{\addcolon\addspace}}}}}}
+ {\setunit{\addcolon\addspace}}}}}}}
\DeclareFieldFormat{cmsbiblink}{%
\hyperlink{\getrefbykeydefault{\abx@field@entrykey}{anchor}{}}{#1}}
diff --git a/macros/latex/contrib/lgrmath/README b/macros/latex/contrib/lgrmath/README
new file mode 100644
index 0000000000..ed0eeadaf9
--- /dev/null
+++ b/macros/latex/contrib/lgrmath/README
@@ -0,0 +1,48 @@
+ +-------------------------------------------------------+
+ + lgrmath +
+ + Greek letters in math mode from +
+ + any LGR-encoded font +
+ + https://github.com/jfbu/lgrmath +
+ +-------------------------------------------------------+
+
+ This is the README file for the LaTeX2e package
+ `lgrmath', version 1.0 of 2022/11/16.
+
+ Copyright (C) 2022 Jean-François Burnol
+
+ This Work may be distributed and/or modified
+ under the conditions of the LaTeX Project Public License,
+ version 1.3c. The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2003/12/01 or later.
+
+ This Work includes lgrmath.sty, the documentation
+ lgrmath.pdf, this README and the source lgrmath.dtx.
+
+With \usepackage[font=<name>]{lgrmath} the Greek letters in math
+mode will be from the given font name, assumed to exist on the
+LaTeX installation in LGR encoding for traditional LaTeX/pdfLaTeX.
+
+The shape of the Greek letters are configured via package
+options, and they also come in \...up and \...it variants.
+
+Manual installation:
+--------------------
+
+Execute This creates
+
+ etex lgrmath.dtx lgrmath.sty
+ lgrmath.tex
+
+The first one is the package file. The second one is for
+building the PDF documentation. To do the latter:
+
+ latexmk lgrmath.tex
+ dvipdfmx lgrmath.dvi
+
+The PDF documentation then includes the commented source code.
+
+It is possible to run latex + dvipdfmx, pdflatex, lualatex, or
+xelatex directly on lgrmath.dtx rather than on lgrmath.tex.
+The PDF will then not include the commented source code.
diff --git a/macros/latex/contrib/lgrmath/lgrmath.dtx b/macros/latex/contrib/lgrmath/lgrmath.dtx
new file mode 100644
index 0000000000..8e442721cf
--- /dev/null
+++ b/macros/latex/contrib/lgrmath/lgrmath.dtx
@@ -0,0 +1,1263 @@
+% -*- coding: utf-8; time-stamp-format: "%02d-%02m-%:y at %02H:%02M:%02S %Z" -*-
+% Execute etex on this file to extract package files.
+% See in README for more build instructions.
+%<*dtx>
+\def\dtxtimestamp {Time-stamp: <16-11-2022 at 21:29:30 CET>}
+%%
+%% Package: lgrmath
+%% Greek in math mode via LGR font of one's choice (JFB)
+%% Version: 1.0
+%% License: LPPL 1.3c
+%% Copyright (C) 2022 Jean-François Burnol
+%% Repository: https://github.com/jfbu/lgrmath
+%%
+%</dtx>
+%<*tex>
+\def\lgrmathversion{1.0}
+\def\lgrmathdate{2022/11/16}
+%</tex>
+%<*dtx>
+\iffalse
+%</dtx>
+%<*tex>
+%% This is a generated file. Run latexmk on this file lgrmath.tex then
+%% run dvipdfmx on lgrmath.dvi to produce the documentation lgrmath.pdf,
+%% with the package source code included.
+%%
+%% Customize as desired the class options and the two toggles below.
+%%
+%% See lgrmath.dtx for the copyright and the conditions for distribution
+%% and/or modification of this Work.
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesFile{lgrmath.tex}%
+[\lgrmathdate\space v\lgrmathversion\space
+ driver file for lgrmath documentation (JFB)]%
+\PassOptionsToClass{a4paper,fontsize=11pt}{scrartcl}
+\chardef\Withdvipdfmx \ifdefined\pdfoutput\ifnum\pdfoutput>0 0\else1\fi\else0\fi\relax
+\chardef\NoSourceCode 0 % replace 0<space> by 1<space> for no source code
+\input lgrmath.dtx
+%%% Local Variables:
+%%% mode: latex
+%%% End:
+%</tex>
+%<*dtx>
+\fi
+\chardef\noetex 0
+\ifx\numexpr\undefined\chardef\noetex 1 \fi
+\ifnum\noetex=1 \chardef\extractfiles 0 % extract files, then stop
+\else
+ \ifx\ProvidesFile\undefined
+ \chardef\extractfiles 0 % etex etc.. on lgrmath.dtx
+ \else % latex/pdflatex on lgrmath.tex or on lgrmath.dtx
+ \ifx\Withdvipdfmx\undefined
+ % (lua|xe|pdf)latex run is on lgrmath.dtx, we will extract all files
+ \chardef\extractfiles 1 % 1 = extract all and typeset doc
+ \chardef\Withdvipdfmx
+ \ifdefined\pdfoutput\ifnum\pdfoutput>0 0\else1\fi\else0\fi\relax
+ \chardef\NoSourceCode 1 %
+ \NeedsTeXFormat{LaTeX2e}%
+ \PassOptionsToClass{a4paper,fontsize=11pt}{scrartcl}%
+ \else % latex run is on lgrmath.tex,
+ \chardef\extractfiles 2 % no extractions
+ \fi
+ \ProvidesFile{lgrmath.dtx}%
+ [lgrmath source (\lgrmathversion\space of \lgrmathdate) (JFB)]%
+ \fi
+\fi
+\ifnum\extractfiles<2 % extract files
+\def\MessageDeFin{\newlinechar10 \let\Msg\message
+\Msg{^^J}%
+\Msg{********************************************************************^^J}%
+\Msg{*^^J}%
+\Msg{* To finish the installation you have to move the following^^J}%
+\Msg{* file into a directory searched by TeX:^^J}%
+\Msg{*^^J}%
+\Msg{*\space\space\space\space lgrmath.sty^^J}%
+\Msg{*^^J}%
+\Msg{* To produce the documentation with source code included run latexmk^^J}%
+\Msg{* on extracted lgrmath.tex and then dvipdfmx on lgrmath.dvi^^J}%
+\Msg{*^^J}%
+\Msg{* Happy TeXing!^^J}%
+\Msg{*^^J}%
+\Msg{********************************************************************^^J}%
+}%
+\begingroup
+\input docstrip.tex
+\askforoverwritefalse
+\generate{\nopreamble
+ \usepostamble\defaultpostamble
+ \file{lgrmath.tex}{\from{lgrmath.dtx}{tex}}%
+ \usepreamble\defaultpreamble
+ \file{lgrmath.sty}{\from{lgrmath.dtx}{sty}}%
+}
+\endgroup
+\fi % end of file extractions
+\ifnum\extractfiles=0
+% tex/etex/xetex/etc on lgrmath.dtx, files are now extracted, stop
+ \MessageDeFin\expandafter\end
+\fi
+% no file extractions if latex compilation was on lgrmath.tex
+\ifdefined\MessageDeFin\AtEndDocument{\MessageDeFin}\fi
+\ifnum\Withdvipdfmx>0
+\documentclass [dvipdfmx]{scrartcl}
+\else
+\documentclass {scrartcl}
+\fi
+\tracinglostchars=2
+
+% use doc with v2 because hyperref option clash with hypdoc
+% no time to read documentation now
+\usepackage{doc}[=v2]
+% but the v2 does not define \cs, it got defined in ltxdoc
+\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
+\def\cmd@to@cs#1#2{\char\number`#2\relax}
+\DeclareRobustCommand\cs[1]{\texttt{\bslash#1}}
+\AtBeginDocument{%
+\pdfstringdefDisableCommands{\def\cs#1{\textbackslash\detokenize{#1}}}%
+}%
+% these are not defined by doc package
+\providecommand\marg[1]{%
+ {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
+\providecommand\oarg[1]{%
+ {\ttfamily[}\meta{#1}{\ttfamily]}}
+\providecommand\parg[1]{%
+ {\ttfamily(}\meta{#1}{\ttfamily)}}
+
+\CodelineNumbered
+\AtBeginDocument{\MakeShortVerb\|}
+\ifnum\NoSourceCode=1
+ \OnlyDescription
+\fi
+\usepackage[LGR,T1]{fontenc}
+
+\usepackage{hologo}
+%% \hologoFontSetup{general=\upshape\rmfamily}
+\DeclareRobustCommand*{\pdfLaTeX}{\hologo{pdfLaTeX}}%
+% \DeclareRobustCommand*{\eTeX}{\hologo{eTeX}}%
+% \DeclareRobustCommand*{\LuaTeX}{\hologo{LuaTeX}}%
+% \DeclareRobustCommand*{\LuaLaTeX}{\hologo{LuaLaTeX}}%
+% \DeclareRobustCommand*{\XeTeX}{\hologo{XeTeX}}%
+% \DeclareRobustCommand*{\XeLaTeX}{\hologo{XeLaTeX}}%
+
+\usepackage{geometry}
+\usepackage[english]{babel}
+
+\usepackage{color}
+\definecolor{joli}{RGB}{225,95,0}
+\definecolor{JOLI}{RGB}{225,95,0}
+\definecolor{urlcolor}{RGB}{38,128,192}
+
+\usepackage{colorframed}
+\definecolor{shadecolor}{RGB}{223,219,195}
+
+\usepackage{hyperref}
+\hypersetup{%
+linktoc=all,%
+breaklinks=true,%
+colorlinks=true,%
+linkcolor={red},%
+urlcolor={urlcolor},
+pdfauthor={Jean-François Burnol},%
+pdftitle={The lgrmath package},%
+pdfstartview=FitH,%
+pdfpagemode=UseNone,%
+}
+\usepackage{hypcap}
+\usepackage{bookmark}
+\usepackage{enumerate}
+
+\usepackage{mlmodern}
+\DeclareEncodingSubset{TS1}{mlmtt}{0}% fix \textasciigrave related latex2e#905
+
+% useless with doc.sty
+% \usepackage{upquote}
+% as \verb, verbatim and macrocode do not use \@noligs
+\begingroup
+\catcode`\'\active\catcode`\`\active
+\gdef\MakePrivateLetters{\makeatletter\def`{\textasciigrave}\def'{\textquotesingle}}
+\endgroup
+% https://github.com/latex3/latex2e/issues/953, for the record
+
+\usepackage{xspace}
+
+\newcommand\ctanpkg[1]{\href{https://ctan.org/pkg/#1}{#1}}
+
+% Vendredi 11 novembre 2022 : impossible d'utiliser \hypersetup{urlcolor=joli}
+% dans \section (même sans le \texorpdfstring).
+% même si la macro \lgrmath est déclarée robuste mais avec \protected c'est bon
+% \DeclareRobustCommand\lgrmath{{\hypersetup{urlcolor=joli}lgrmath}}% <-- BAD
+% ceci ok (mais il faudra ajouter \texorpdfstring)
+% \protected\def\lgrmath{{\hypersetup{urlcolor=joli}lgrmath}}% <-- OK
+% L'erreur est
+% Argument of \KVS@@CommaComma has an extra }
+% mais je n'ai pas cherché à en savoir plus. De plus dans le code ci-dessous
+% on avait plutôt un stack overflow dû à boucle infinie.
+
+% le \texorpdfstring ne sert à rien si \protected dans \section
+\protected\def\lgrmath{%
+ {\hypersetup{urlcolor=joli}\bfseries \ctanpkg{lgrmath}}\xspace
+}
+\pdfstringdefDisableCommands{\def\lgrmath{lgrmath\xspace}}
+
+\usepackage{centeredline}
+\usepackage{lgrmath}
+
+\begin{document}\renewcommand\familydefault\sfdefault
+\begin{center}
+ {\Large The \lgrmath package}\\
+ \textsc{Jean-François Burnol}\\
+ \texttt{jfbu (at) free (dot) fr}\\
+\footnotesize
+ This is \lgrmathversion\ (\lgrmathdate) from
+ source file having \dtxtimestamp\\
+ Report issues at \url{https://github.com/jfbu/lgrmath/issues}
+\end{center}
+
+{
+\addtocontents{toc}{\protect\hypersetup{hidelinks}}
+\addtocontents{lot}{\protect\hypersetup{hidelinks}}
+
+\tableofcontents
+
+\listoftables
+}
+
+\section{Description}
+
+The \lgrmath package sets the Greek letters {in math mode} (\textbf{only}) to use glyphs
+from the LGR-encoded font of one's choice.
+
+Thus \lgrmath is for people who want \emph{only} to adjust Greek letters in
+math mode (and easily configure usage of upright or italic/slanted shapes),
+perhaps in the context of having changed Latin letters as well, e.g.\@ from
+using the \ctanpkg{frenchmath}%
+%
+\footnote{Antoine \textsc{Missier}, \emph{Typesetting mathematics according to French rules}, \url{https://ctan.org/pkg/frenchmath}.}
+%
+package which makes uppercase Latin letters in
+math mode render upright, among quite a few other adjustments tailored for
+French mathematical typesetting, or the \ctanpkg{mathastext}%
+%
+\footnote{Verfasser, \emph{Use the text font in math mode}, \url{https://ctan.org/pkg/mathastext}.}
+%
+package.
+Actually \lgrmath is in part inspired from this latter package |LGRgreek|
+option and \cs{MTgreekfont} command. But \lgrmath currently does not
+incorporate a mechanism for defining and using multiple math versions, each one
+with its own font for Greek letters, as is already provided by
+\ctanpkg{mathastext}.
+
+The package is also related to \ctanpkg{libgreek}%
+%
+\footnote{Verfasser, \emph{Greek letters in math mode from Libertinus or Linux
+ Libertine/Biolinum}, \url{https://ctan.org/pkg/libgreek}.},
+%
+also by the author, and shares most of its codebase, after dropping matters
+related to |libgreek-legacy|, and the |scale| option which can not be
+implemented generically.
+
+The Greek letters all come with \cs{...up} and \cs{...it} named variants, and
+whether ``bare'' control sequences map to the `|up|' or `|it|' ones can be
+configured via package options, even midway in the document via
+\cs{lgrmathsetup}. Further, the package optionally defines two math
+alphabets \cs{lgrmathup} and \cs{lgrmathit}. What `|up|' and `|it|'
+actually mean can be configured using the |upshape| and |itshape| keys at
+package loading time.
+
+
+\section{Options of the \lgrmath package}
+
+\begin{table}[htbp]
+\capstart
+\DeleteShortVerb\|% a effet global !
+\let\s\string
+\ttfamily
+\lgrmathsetup{style=fReNcH}% testing lowercasing works
+
+\centering
+
+\begin{tabular}{|lc|lc|lc|lc|}
+\hline
+\s\Alpha&$\Alpha$ &\s\Nu&$\Nu$ &\s\alpha&$\alpha$ &\s\nu&$\nu$\\
+\s\Beta&$\Beta$ &\s\Xi&$\Xi$ &\s\beta&$\beta$ &\s\xi&$\xi$\\
+\s\Gamma&$\Gamma$ &\s\Omicron&$\Omicron$&\s\gamma&$\gamma$ &\s\omicron&$\omicron$\\
+\s\Delta&$\Delta$ &\s\Pi&$\Pi$ &\s\delta&$\delta$ &\s\pi&$\pi$\\
+\s\Epsilon&$\Epsilon$&\s\Rho&$\Rho$ &\s\epsilon&$\epsilon$&\s\rho&$\rho$\\
+\s\Zeta&$\Zeta$ &\s\Sigma&$\Sigma$ &\s\zeta&$\zeta$ &\s\sigma&$\sigma$\\
+\s\Eta&$\Eta$ &\s\Tau&$\Tau$ &\s\eta&$\eta$ &\s\tau&$\tau$\\
+\s\Theta&$\Theta$ &\s\Upsilon&$\Upsilon$&\s\theta&$\theta$ &\s\upsilon&$\upsilon$\\
+\s\Iota&$\Iota$ &\s\Phi&$\Phi$ &\s\iota&$\iota$ &\s\phi&$\phi$\\
+\s\Kappa&$\Kappa$ &\s\Chi&$\Chi$ &\s\kappa&$\kappa$ &\s\chi&$\chi$\\
+\s\Lambda&$\Lambda$ &\s\Psi&$\Psi$ &\s\lambda&$\lambda$ &\s\psi&$\psi$\\
+\s\Mu&$\Mu$ &\s\Omega&$\Omega$ &\s\mu&$\mu$ &\s\omega&$\omega$\\
+\hline
+\end{tabular}
+
+\medskip
+
+\begin{tabular}{lclclc}
+\s\varsigma&$\varsigma$ & \s\digamma&$\digamma$ & \s\varSigma&$\varSigma$ \\
+\s\varvarsigma&$\varvarsigma$ & \s\koppa&$\koppa$ & \s\Sampi&$\Sampi$ \\
+\s\sampi&$\sampi$ & & & \s\Digamma&$\Digamma$
+\end{tabular}
+\caption{Greek letters, upright shapes, default family}
+\label{table:upright}
+\MakeShortVerb\|
+\end{table}
+
+\begin{table}[htbp]
+\capstart
+\DeleteShortVerb\|% a effet global !
+\let\s\string
+\ttfamily
+\lgrmathsetup{style=ISO}
+
+\centering
+\begin{tabular}{|lc|lc|lc|lc|}
+\hline
+\s\Alpha&$\Alpha$ &\s\Nu&$\Nu$ &\s\alpha&$\alpha$ &\s\nu&$\nu$\\
+\s\Beta&$\Beta$ &\s\Xi&$\Xi$ &\s\beta&$\beta$ &\s\xi&$\xi$\\
+\s\Gamma&$\Gamma$ &\s\Omicron&$\Omicron$&\s\gamma&$\gamma$ &\s\omicron&$\omicron$\\
+\s\Delta&$\Delta$ &\s\Pi&$\Pi$ &\s\delta&$\delta$ &\s\pi&$\pi$\\
+\s\Epsilon&$\Epsilon$&\s\Rho&$\Rho$ &\s\epsilon&$\epsilon$&\s\rho&$\rho$\\
+\s\Zeta&$\Zeta$ &\s\Sigma&$\Sigma$ &\s\zeta&$\zeta$ &\s\sigma&$\sigma$\\
+\s\Eta&$\Eta$ &\s\Tau&$\Tau$ &\s\eta&$\eta$ &\s\tau&$\tau$\\
+\s\Theta&$\Theta$ &\s\Upsilon&$\Upsilon$&\s\theta&$\theta$ &\s\upsilon&$\upsilon$\\
+\s\Iota&$\Iota$ &\s\Phi&$\Phi$ &\s\iota&$\iota$ &\s\phi&$\phi$\\
+\s\Kappa&$\Kappa$ &\s\Chi&$\Chi$ &\s\kappa&$\kappa$ &\s\chi&$\chi$\\
+\s\Lambda&$\Lambda$ &\s\Psi&$\Psi$ &\s\lambda&$\lambda$ &\s\psi&$\psi$\\
+\s\Mu&$\Mu$ &\s\Omega&$\Omega$ &\s\mu&$\mu$ &\s\omega&$\omega$\\
+\hline
+\end{tabular}
+\medskip
+
+\begin{tabular}{lclclc}
+\s\varsigma&$\varsigma$ & \s\digamma&$\digamma$ & \s\varSigma&$\varSigma$ \\
+\s\varvarsigma&$\varvarsigma$ & \s\koppa&$\koppa$ & \s\Sampi&$\Sampi$ \\
+\s\sampi&$\sampi$ & & & \s\Digamma&$\Digamma$
+\end{tabular}
+\caption{Greek letters, italic shapes, default family}
+\label{table:italic}
+\MakeShortVerb\|
+\end{table}
+
+Here are the options recognized by the package:
+\begin{description}
+\item[font=\meta{font\textunderscore name}] This specifies which font (font family in the
+ sens of the \LaTeX{} font selection scheme) to use. It defaults to |lmr|.
+
+ In \autoref{table:upright} and \autoref{table:italic} we display the
+ glyphs from this default font |lmr| in LGR encoding, available to \LaTeX{}
+ thanks to the
+ support files from the package (in the sense of CTAN or \TeX Live, not of a
+ \LaTeX{} document) \ctanpkg{cbfonts-fd}.%
+%
+ \footnote{Claudio~\textsc{Beccari}, \emph{\LaTeX{} font description files for the CB Greek fonts}, \url{https://ctan.org/pkg/cbfonts-fd}.}
+%
+ It is recommended to user to have a look at its
+ documentation\centeredline{|texdoc cbfonts|}
+ in particular the section on Customizations which mentions alternate shapes
+ (such as |rs|, |ro|, |li|, |iv|, |uv| --- those last two are actually for
+ sans-serif |lmss| ---, and there are also comments relative to the series)
+ and use appropriately the |upshape|, |itshape|, |series| and |boldseries|
+ \lgrmath keys which are documented next.
+
+ The allowable names \meta{font\textunderscore name}'s are those |foo| for
+ which a file |LGRfoo.fd| or |lgrfoo.fd| exists on the system.
+
+ The above remarks about customization apply generally to all fonts, try to
+ see if there is some documentation associated with the font you choose.
+ Ultimate experts will look into the |.fd| files to see (for example) if there
+ is some interface to rescale the fonts by some factor.
+
+ Here is now a list of suitable such font definition files from which you can
+ extract usable font family names. This has been obtained via exercising the
+ Unix |find| utility in a \TeX Live 2022 installation (possibly only partial).
+ To test a font the package provides \cs{lgrmathgreektable} and
+ \cs{lgrmathgreektableextra} which are documented in the next section.
+
+ \begin{snugshade}
+\catcode`\'\active\catcode`\`\active
+\def\MacroFont{\ttfamily\footnotesize\def'{\textquotesingle}\def`{\textasciigrave}}
+\catcode\string`\`12 \catcode`\' 12
+\begin{verbatim}
+in directory /usr/local/texlive/2022/texmf-dist/tex/latex we execute
+ find . -name 'LGR*fd'
+and then rearrange somewhat the output to put it in alphabetical order,
+and gain some space horizontally so as to obtain a two-column display
+Naturally in many instances the various -TLF, -OsF, and so on, refer
+to options of digit characters and have no impact on the Greek letters,
+nevertheless I kept all filenames, just pick one, drop LGR and .fd parts.
+
+./alegreya/ ./librefranklin/
+ LGRAlegreya-Inf.fd LGRLibreFranklin-Sup.fd
+ LGRAlegreya-LF.fd LGRLibreFranklin-TLF.fd
+ LGRAlegreya-OsF.fd ./linguisticspro/
+ LGRAlegreya-Sup.fd LGRLinguisticsPro-LF.fd
+ LGRAlegreya-TLF.fd LGRLinguisticsPro-OsF.fd
+ LGRAlegreya-TOsF.fd ./nimbus15/
+ LGRAlegreyaSans-Inf.fd LGRNimbuSans.fd
+ LGRAlegreyaSans-LF.fd LGRNimbusMono.fd
+ LGRAlegreyaSans-OsF.fd LGRNimbusMonoN.fd
+ LGRAlegreyaSans-Sup.fd LGRNimbusSerif.fd
+ LGRAlegreyaSans-TLF.fd ./noto/
+ LGRAlegreyaSans-TOsF.fd LGRNotoSans-LF.fd
+./clara/ LGRNotoSans-OsF.fd
+ LGRClara-Sup.fd LGRNotoSans-Sup.fd
+ LGRClara-TLF.fd LGRNotoSans-TLF.fd
+ LGRClara-TOsF.fd LGRNotoSans-TOsF.fd
+./cochineal/ LGRNotoSansMono-Sup.fd
+ LGRCochineal-LF.fd LGRNotoSansMono-TLF.fd
+ LGRCochineal-OsF.fd LGRNotoSansMono-TOsF.fd
+ LGRCochineal-TLF.fd LGRNotoSerif-LF.fd
+ LGRCochineal-TOsF.fd LGRNotoSerif-OsF.fd
+./comfortaa/ LGRNotoSerif-Sup.fd
+ LGRcomfortaa.fd LGRNotoSerif-TLF.fd
+./dejavu/ LGRNotoSerif-TOsF.fd
+ LGRDejaVuSans-TLF.fd ./oldstandard/
+ LGRDejaVuSansCondensed-TLF.fd LGROldStandard-Sup.fd
+ LGRDejaVuSansMono-TLF.fd LGROldStandard-TLF.fd
+ LGRDejaVuSerif-TLF.fd ./opensans/
+ LGRDejaVuSerifCondensed-TLF.fd LGRopensans-LF.fd
+./domitian/ LGRopensans-OsF.fd
+ LGRDomitian-Inf.fd LGRopensans-TLF.fd
+ LGRDomitian-Sup.fd LGRopensans-TOsF.fd
+ LGRDomitian-TLF.fd ./plex/
+ LGRDomitian-TOsF.fd LGRIBMPlexSans-Sup.fd
+./droid/ LGRIBMPlexSans-TLF.fd
+ LGRdroidsans.fd ./roboto/
+ LGRdroidsansmono.fd LGRRoboto-LF.fd
+ LGRdroidserif.fd LGRRoboto-OsF.fd
+./ebgaramond/ LGRRoboto-TLF.fd
+ LGREBGaramond-Inf.fd LGRRoboto-TOsF.fd
+ LGREBGaramond-LF.fd LGRRobotoMono-TLF.fd
+ LGREBGaramond-OsF.fd LGRRobotoSerif-LF.fd
+ LGREBGaramond-Sup.fd LGRRobotoSerif-OsF.fd
+ LGREBGaramond-TLF.fd LGRRobotoSerif-Sup.fd
+ LGREBGaramond-TOsF.fd LGRRobotoSerif-TLF.fd
+ LGREBGaramondInitials-TLF.fd LGRRobotoSerif-TOsF.fd
+./fira/ LGRRobotoSlab-TLF.fd
+ LGRFiraMono-Sup.fd ./sourcesanspro/
+ LGRFiraMono-TLF.fd LGRSourceSansPro-Dnom.fd
+ LGRFiraMono-TOsF.fd LGRSourceSansPro-Inf.fd
+ LGRFiraSans-LF.fd LGRSourceSansPro-LF.fd
+ LGRFiraSans-OsF.fd LGRSourceSansPro-Numr.fd
+ LGRFiraSans-Sup.fd LGRSourceSansPro-OsF.fd
+ LGRFiraSans-TLF.fd LGRSourceSansPro-Sup.fd
+ LGRFiraSans-TOsF.fd LGRSourceSansPro-TLF.fd
+./garamond-libre/ LGRSourceSansPro-TOsF.fd
+ LGRGaramondLibre-Inf.fd ./step/
+ LGRGaramondLibre-LF.fd LGRSTEP-Inf.fd
+ LGRGaramondLibre-OsF.fd LGRSTEP-Sup.fd
+ LGRGaramondLibre-Sup.fd LGRSTEP-TLF.fd
+./gofonts/ LGRSTEP-TOsF.fd
+ LGRGo-TLF.fd ./stepgreek/
+ LGRGoMono-TLF.fd LGRSTEPGreekTest-Sup.fd
+./lato/ LGRSTEPGreekTest-TLF.fd
+ LGRlato-LF.fd LGRSTEPGreekTest-TOsF.fd
+ LGRlato-OsF.fd ./theanodidot/
+ LGRlato-TLF.fd LGRTheanoDidot-TLF.fd
+ LGRlato-TOsF.fd LGRTheanoDidot-TOsF.fd
+./libertinegc/ ./theanomodern/
+ LGRLinuxLibertineT-LF.fd LGRTheanoModern-TLF.fd
+ LGRLinuxLibertineT-OsF.fd LGRTheanoModern-TOsF.fd
+ LGRLinuxLibertineT-TLF.fd ./theanooldstyle/
+ LGRLinuxLibertineT-TOsF.fd LGRTheanoOldStyle-TLF.fd
+./libertinus-type1/ LGRTheanoOldStyle-TOsF.fd
+ LGRLibertinusSans-LF.fd LGRLibertinusSerif-TLF.fd
+ LGRLibertinusSans-OsF.fd LGRLibertinusSerif-TOsF.fd
+ LGRLibertinusSans-Sup.fd LGRLibertinusSerifDisplay-LF.fd
+ LGRLibertinusSans-TLF.fd LGRLibertinusSerifDisplay-OsF.fd
+ LGRLibertinusSans-TOsF.fd LGRLibertinusSerifDisplay-Sup.fd
+ LGRLibertinusSerif-LF.fd LGRLibertinusSerifDisplay-TLF.fd
+ LGRLibertinusSerif-OsF.fd LGRLibertinusSerifDisplay-TOsF.fd
+ LGRLibertinusSerif-Sup.fd LGRLibertinusSerifInitials-TLF.fd
+
+And now for more, with lowercase `lgr' filenames: find . -name 'lgr*fd'
+
+./txfontsb/lgrtxr.fd ./cm-lgc/lgrfcm.fd
+./txfontsb/lgrtxrc.fd ./cm-lgc/lgrfct.fd
+./txfontsb/lgrtxry.fd ./cm-lgc/lgrfcs.fd
+./txfontsb/lgrtxryc.fd ./epigrafica/lgrepigrafica.fd
+./gfsbodoni/lgrbodoni.fd ./gfssolomos/lgrsolomos.fd
+./lxfonts/lgrllcmtt.fd ./tempora/lgrtempora-tlf.fd
+./lxfonts/lgrllcmss.fd ./tempora/lgrtempora-tosf.fd
+./kerkis/lgrkfn.fd ./gfscomplutum/lgrcomplutum.fd
+./kerkis/lgrmaksf.fd ./gfsartemisia/lgrartemisiaeuler.fd
+./kerkis/lgrmak.fd ./gfsartemisia/lgrartemisia.fd
+./cbfonts-fd/lgrcmro.fd ./gentium-tug/lgrgentiumbook.fd
+./cbfonts-fd/lgrcmss.fd ./gentium-tug/lgrgentium.fd
+./cbfonts-fd/lgrlmr.fd ./gfsbaskerville/lgrgfsbaskerville.fd
+./cbfonts-fd/lgrlcmtt.fd ./miama/lgrfmm.fd
+./cbfonts-fd/lgrlmtt.fd ./gfsneohellenic/lgrneohellenic.fd
+./cbfonts-fd/lgrlmss.fd ./gfsdidot/lgrudidot.fd
+./cbfonts-fd/lgrlmro.fd ./gfsporson/lgrporson.fd
+./cbfonts-fd/lgrlcmss.fd
+./cbfonts-fd/lgrcmtt.fd
+./cbfonts-fd/lgrcmr.fd
+\end{verbatim}
+\end{snugshade}
+\item[upshape=\meta{shape}] Declares the shape to be used by the \cs{...up}
+ Greek letters and the \cs{lgrmathup} math alphabet. Defaults to `|n|'
+ (without the quotes).
+\item[itshape=\meta{shape}] Declares the shape to be used by the \cs{...it}
+ Greek letters and the \cs{lgrmathit} math alphabet. Defaults to `|it|'.
+\DeleteShortVerb{\|}
+\item[style=\meta{\upshape\ttfamily ISO|UP|TeX}] specifies the shape style
+ of the Greek letters. \MakeShortVerb{\|}
+
+ |ISO| means `italic' for lowercase
+ and uppercase, |UP| means `upright' for lowercase and uppercase, |TeX|
+ means `italic' for lowercase and `upright' for uppercase. The lowercase
+ forms |iso|, |up| and |tex| are also accepted (or any mixed case).
+
+ One can also use |French| or |french| as an alias to |UP| or |up|.
+
+ This option will
+ override any |greek| or |Greek| option. The package defaults to |style=TeX|.
+
+ What `upright' and `italic' mean is configured by the |upshape| and
+ |itshape| respective settings.\DeleteShortVerb\|
+\item[greek=\meta{\ttfamily\upshape up|it|...}] Says\MakeShortVerb{\|} whether
+ Greek letters will be `upright' or `italic' i.e.\@ whether they obey the
+ |upshape| or |itshape| setting, i.e.\@ whether \cs{alpha} et al.\@ are
+ \cs{let} to \cs{alphaup} (et al.) or to \cs{alphait} (et
+ al.).\MakeShortVerb{\|}
+
+ So |greek=it| is like |style=ISO|, and |greek=up| is like |style=French|.
+
+ Other
+ shape values, such as `|n|' and `|sl|' or even `|sc|', are accepted. For
+ more details, see the explanations for |Greek|. For example |greek=n| is
+ like |style=UP|.
+
+ This option is ignored if |style| is used (order does not matter).
+ \DeleteShortVerb\|
+\item[Greek=\meta{\ttfamily\upshape up|it|...}] Says\MakeShortVerb{\|}
+ whether uppercase Greek
+ letters (and only them) will be `upright' or `italic' i.e.\@ whether they
+ use |upshape| or |itshape|, i.e.\@ whether \cs{Alpha} et al.\@ are \cs{let}
+ to \cs{Alphaup} (et al.) or to \cs{Alphait} (et al.).\MakeShortVerb{\|}
+
+ So to obtain lowercase to be `upright' and uppercase to be `italic', use
+ |greek=up| and then |Greek=it| (|Greek| must appear after |greek| else it will be
+ shadowed by it).
+
+ This option, like the |greek| option, is ignored if the |style| option is used.
+
+ Other
+ shape values, such as `|n|' and `|sl|', are accepted. They will then
+ override the |upshape| setting for it to match it. For example |Greek=sc|
+ will force |upshape| to be |sc|, because the assumed style is the \TeX{} one
+ of italic lowercase and upright uppercase, so setting the shape of uppercase
+ must update the |upshape| value.
+
+\item[series=\meta{series}] This tells which series to use. The default is the
+ value of \cs{seriesdefault} at the time of loading the package. There is no
+ interface to configure distinct series for the `upright' and `italic'
+ shapes.
+
+\item[boldseries=\meta{series}] This tells which series to use in bold
+ math. Default is \cs{bfdefault} at the time of loading the package. There
+ is no interface to configure distinct series for the `upright' and `italic'
+ shapes.
+\item[alphabets] Says whether to define \cs{lgrmathup} and \cs{lgrmathit}.
+\end{description}
+
+\section{Commands of the \lgrmath package}
+
+Here are the commands defined by the package:
+\begin{description}
+\item[\cs{lgrmathsetup}\marg{key=value,...}] The only allowed keys are
+ |style|, |greek| and |Greek|. And for the latter two only the values |up|
+ or |it| should be used (or values matching the |upshape| or |itshape|
+ settings), as it is only possible after package loading time to toggle
+ between `upright' and `italic' depending on whether the letter is uppercase
+ or lowercase, but one can not switch to an altogether different shape as
+ this would require re-declaring the symbol fonts.
+
+ If the |style| key is used, then |greek/Greek| are ignored. However,
+ one can always naturally reuse later \cs{lgrmathsetup} using only the
+ |greek| and/or |Greek| keys.
+\item[\cs{lgrmathup}] This is a math alphabet. It is defined only if the
+ package received the |alphabets| option.
+\item[\cs{lgrmathit}] This is a math alphabet. It is defined only if the
+ package received the |alphabets| option.
+
+\item[\cs{lgrmathgreektable}\marg{family}\marg{series}\marg{shape}] Produces a
+ tabular display of the Greek letters available with this font. Here is for
+ example using%
+%
+ \centeredline{|\lgrmathgreektable{Alegreya-TLF}{regular}{n}|}
+%
+ \centeredline{\lgrmathgreektable{Alegreya-TLF}{regular}{n}}
+
+ We used |regular|
+ for the \meta{series} mandatory argument after seeing Font Info messages in
+ the |.log| file about the |m| series not being available and being
+ substituted for by |regular|, so we used |regular| to avoid those messages.
+\item[\cs{lgrmathgreektableextra}\marg{family}\marg{series}\marg{shape}]
+ Produces a tabular with eight additional glyphs. Here is an example, using
+%
+ \centeredline{|\lgrmathgreektableextra{LibertinusSans-TLF}{m}{n}|}
+%
+ \centeredline{\lgrmathgreektableextra{LibertinusSans-TLF}{m}{n}} Beware that if
+ we had forgotten the |-TLF| suffix, the font would have been substituted in
+ favour of fall-back |lmr| by \LaTeX. Always check log for font substitutions
+ messages...
+
+ And see also the last remark below.
+\end{description}
+
+Miscellaneous remarks:
+\begin{enumerate}
+\item Even if not receiving the option |alphabets|, the package will declare
+ all Greek letters to be of type \cs{mathalpha}.
+\item The \lgrmath package ignores global class options. It handles only
+ options originating from the \cs{usepackage} preamble declaration (or some
+ options handed over via \cs{PassOptionsToPackage} or options passed to
+ \cs{lgrmathsetup} in the preamble or body).
+\item The \ctanpkg{libgreek} package defines \cs{mathchar}'s mapping to
+ lowercase Greek letters with diacritics, but for time being it has been
+ decided that \lgrmath would restrict its definitions to the 24+24 base glyphs
+ and the 8 ``extra'' ones for which there are slots in the LGR encoding table.
+\item These 8 ``extra glyphs'' will not always be available, depending on the
+ font. Here is for example with |Alegreya-TLF|:
+ \centeredline{\lgrmathgreektableextra{Alegreya-TLF}{regular}{n}} Adding
+ |\tracinglostchars=3| will cause \TeX\ to raise an error in case such missing
+ characters are encountered.
+\end{enumerate}
+
+This is the end of the user documentation. The next section is a code listing
+with some comments for the advanced users.
+
+\StopEventually{\end{document}\endinput}
+
+\cleardoublepage
+%\newgeometry{hmarginratio=3:2}
+\small
+
+\makeatletter
+
+\section{Implementation of the \lgrmath package}
+
+% https://github.com/latex3/latex2e/issues/563
+\AddToHook{env/macrocode/after}{\@nobreakfalse}
+\AddToHook{env/macrocode/begin}{\partopsep0pt\relax}
+
+% The catcode hackery next is to avoid to have the guard be listed
+% in the commented source code... (here <*legacy>)
+% (c) 2012/11/19 Jean-François Burnol ;-)
+
+\def\gardesactifs {\catcode`\<=0 \catcode`\>=11 \catcode`\*=11 \catcode`\/=11 }
+\def\gardesinactifs {\catcode`\<=12 \catcode`\>=12 \catcode`\*=12 \catcode`\/=12 }
+\gardesactifs
+\let</dtx>\relax
+\let<*sty>\gardesinactifs
+
+\MakePercentIgnore
+%</dtx>
+%<*sty>
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{lgrmath}
+ [2022/11/16 1.0 Greek in math mode via LGR font of one's choice (JFB)]
+% \end{macrocode}
+% We will use \ctanpkg{kvoptions} to handle options with |key=value| syntax.
+% \begin{macrocode}
+\RequirePackage{kvoptions}
+% \end{macrocode}
+% To minimize the author's task, we keep close to |libgreek.sty| code with minimal
+% adaptations. In particular I decided to keep the fact that |style| option
+% makes the |Greek| and |greek| options ignored. But there are some
+% complications originating in the addition of the \cs{lgrmathsetup}, which
+% requires to keep a trace of various things, for example if |style| option is
+% used at package level and then later on using \cs{lgrmathsetup} the user
+% employs the |Greek/greek| options.
+%
+% This package assigns two symbol fonts, one for upright, the other one for
+% italic-like.
+%
+% The |upshape| and |itshape| keys allow to configure what the \cs{...up}
+% and \cs{...it} macros will actually use as shapes.
+% \begin{macrocode}
+\def\lgrmath@fontfamily{lmr}
+\def\lgrmath@scale{1}
+\def\lgrmath@upshape{n}
+\def\lgrmath@itshape{it}
+\newif\iflgrmath@upper@up\lgrmath@upper@uptrue
+\newif\iflgrmath@lower@up
+\edef\lgrmath@series{\seriesdefault}
+\edef\lgrmath@boldseries{\bfdefault}
+\def\lgrmath@upper@shape{\lgrmath@upshape}
+\def\lgrmath@lower@shape{\lgrmath@itshape}
+\def\lgrmath@style{TeX}
+\newif\iflgrmath@sty
+% \end{macrocode}
+% We use the \ctanpkg{keyval} interface mostly to not have to rework
+% everything, if at all possible, into the \ctanpkg{kvoptions} declarative
+% interface. It is a very good thing that the latter package can be used
+% without forcing on the user its own declarative interface...
+% \begin{macrocode}
+\define@key{lgrmath}{font}[lmr]{\def\lgrmath@fontfamily{#1}}
+\define@key{lgrmath}{upshape}{\edef\lgrmath@upshape{#1}}
+\define@key{lgrmath}{itshape}{\edef\lgrmath@itshape{#1}}
+% \end{macrocode}
+% Compared to |libgreek 1.1| I decide to use \cs{lowercase} and allow |UP| as
+% alias of |French|.
+% \begin{macrocode}
+\define@key{lgrmath}{style}{%
+ \edef\lgrmath@style{#1}%
+ \lowercase\expandafter{\expandafter\def\expandafter\lgrmath@style
+ \expandafter{\lgrmath@style}}%
+ \lgrmath@stytrue
+}
+\define@key{lgrmath}{Greek}{\edef\lgrmath@upper@shape{#1}}
+% \end{macrocode}
+% Attention to not introduce a space token, as this may be used via
+% \cs{lgrmathsetup} in document body.
+% \begin{macrocode}
+\define@key{lgrmath}{greek}{\edef\lgrmath@lower@shape{#1}%
+ \edef\lgrmath@upper@shape{#1}}
+\define@key{lgrmath}{series}{\edef\lgrmath@series{#1}}
+\define@key{lgrmath}{boldseries}{\edef\lgrmath@boldseries{#1}}
+% \end{macrocode}
+% The single Boolean option, a true one as it uses \ctanpkg{kvoptions} interface.
+% \begin{macrocode}
+\DeclareBoolOption[false]{alphabets}
+% \end{macrocode}
+% We need some auxiliaries to handle the |style| values. As mentioned
+% already, some extra stuff is executed for reasons of various scenarii
+% with \cs{lgrmathsetup}.
+% \begin{macrocode}
+\def\lgrmath@style@iso{%
+ \lgrmath@upper@upfalse
+ \lgrmath@lower@upfalse
+ \let\lgrmath@upper@shape\lgrmath@itshape
+ \let\lgrmath@lower@shape\lgrmath@itshape
+}
+\def\lgrmath@style@french{%
+ \lgrmath@upper@uptrue
+ \lgrmath@lower@uptrue
+ \let\lgrmath@upper@shape\lgrmath@upshape
+ \let\lgrmath@lower@shape\lgrmath@upshape
+}
+\let\lgrmath@style@up\lgrmath@style@french
+\def\lgrmathk@style@tex{%
+ \lgrmath@upper@uptrue
+ \lgrmath@lower@upfalse
+ \let\lgrmath@upper@shape\lgrmath@upshape
+ \let\lgrmath@lower@shape\lgrmath@itshape
+}
+% \end{macrocode}
+% This always resets the \cs{iflgrmath@sty} to false for \cs{lgrmathsetup}
+% being usable with |greek| and |Greek| keys.
+% \begin{macrocode}
+\def\lgrmath@process@style{%
+ \lgrmath@styfalse
+ \ifcsname lgrmath@style@\lgrmath@style\endcsname
+ \csname lgrmath@style@\lgrmath@style\endcsname
+ \else
+ \PackageWarning{lgrmath}{Unknown (here, lowercased) style `\lgrmath@style'}%
+ \fi
+}
+% \end{macrocode}
+% This stuff is a bit involved.
+% \begin{macrocode}
+\def\lgrmath@process@shapes{%
+ \edef\lgrmath@upper@shape{\lgrmath@upper@shape}%
+ \edef\lgrmath@lower@shape{\lgrmath@lower@shape}%
+ \ifx\lgrmath@upper@shape\lgrmath@upshape
+ \lgrmath@upper@uptrue
+ \else
+ \ifx\lgrmath@upper@shape\lgrmath@itshape
+ \lgrmath@upper@upfalse
+ \else
+ \expandafter\in@\expandafter{\expandafter.\lgrmath@upper@shape,}{.up,}%
+ \ifin@\lgrmath@upper@uptrue
+ \else
+ \expandafter\in@\expandafter{\expandafter.\lgrmath@upper@shape,}{.it,}%
+ \ifin@\lgrmath@upper@upfalse
+ \else
+ \lgrmath@process@upper@lastresort
+ \fi\fi\fi\fi
+ \ifx\lgrmath@lower@shape\lgrmath@itshape
+ \lgrmath@lower@upfalse
+ \else
+ \ifx\lgrmath@lower@shape\lgrmath@upshape
+ \lgrmath@lower@uptrue
+ \else
+ \expandafter\in@\expandafter{\expandafter.\lgrmath@lower@shape,}{.it,}%
+ \ifin@\lgrmath@lower@upfalse
+ \else
+ \expandafter\in@\expandafter{\expandafter.\lgrmath@lower@shape,}{.up,}%
+ \ifin@\lgrmath@lower@uptrue
+ \else
+ \lgrmath@process@lower@lastresort
+ \fi\fi\fi\fi
+}%
+\def\lgrmath@process@upper@lastresort{%
+ \lgrmath@upper@uptrue
+ \let\lgrmath@upshape\lgrmath@upper@shape
+}
+\def\lgrmath@process@lower@lastresort{%
+ \lgrmath@lower@upfalse
+ \let\lgrmath@itshape\lgrmath@lower@shape
+}
+% \end{macrocode}
+% The fact that packages may be handed global options is rather dangerous.
+% Fortunately \ctanpkg{kvoptions} has an interface to handle only local options.
+% \begin{macrocode}
+\ProcessLocalKeyvalOptions*
+% \end{macrocode}
+% We now do the post-processing regarding the shape configuration after
+% option parsing. Once this is done we will reconfigure slightly
+% \cs{lgrmath@process@shapes} for usability in the document preamble or body,
+% after the symbol fonts have been declared. As is well-known the \LaTeX{}
+% interface to math fonts is full of ``only-preamble'' restrictions.
+% \begin{macrocode}
+\iflgrmath@sty
+ \lgrmath@process@style
+\else
+ \lgrmath@process@shapes
+\fi
+\def\lgrmath@process@upper@lastresort{%
+ \PackageWarning{lgrmath}{%
+ Too late for the shape `\lgrmath@upper@shape'\MessageBreak
+ originating in Greek or greek option. Ignored.\MessageBreak
+ Use `up' or `it'}%
+}
+\def\lgrmath@process@lower@lastresort{%
+ \PackageWarning{lgrmath}{%
+ Too late for the shape `\lgrmath@lower@shape'\MessageBreak
+ originating in greek option. Ignored.\MessageBreak
+ Use `up' or `it'}%
+}
+\def\lgrmathsetup#1{%
+ \setkeys{lgrmath}{#1}%
+ \iflgrmath@sty\lgrmath@process@style\else\lgrmath@process@shapes\fi
+ \lgrmath@setgreekcs
+}
+% \end{macrocode}
+% Almost all options must be restricted to the package loading time only.
+% \begin{macrocode}
+\DisableKeyvalOption{lgrmath}{font}
+\DisableKeyvalOption{lgrmath}{upshape}
+\DisableKeyvalOption{lgrmath}{itshape}
+\DisableKeyvalOption{lgrmath}{series}
+\DisableKeyvalOption{lgrmath}{boldseries}
+\DisableKeyvalOption{lgrmath}{alphabets}
+% \end{macrocode}
+% Declarations of the two symbol fonts, one for `upright' (or whatever is
+% configured by the |upshape| key), one for `italic' (or whatever is configured
+% by the |itshape| key). One can not specify distinct series, both
+% `upright' and `italic' use the same font series. This could be added but I
+% doubt anyone will use the package to start with...
+%
+% The \ctanpkg{libgreek} of |2022/11/11| extracted the |-TLF| postfix from the
+% font family name, to reinsert it here explicitly, the options |serif/sans|
+% deciding whether to use |LibertinusSerif-TLF| or |LibertinusSans-TLF| for
+% reasons now escaping me. I vaguely remember it was useful at some point
+% during development. Ah yes, now I remember this separation was for the
+% handling of the |scale| option. And we haven't one here.
+% \begin{macrocode}
+\DeclareFontEncoding{LGR}{}{}
+\DeclareSymbolFont{lgrmathup}{LGR}{\lgrmath@fontfamily}
+ {\lgrmath@series}
+ {\lgrmath@upshape}
+\SetSymbolFont{lgrmathup}{bold}{LGR}{\lgrmath@fontfamily}
+ {\lgrmath@boldseries}
+ {\lgrmath@upshape}
+\DeclareSymbolFont{lgrmathit}{LGR}{\lgrmath@fontfamily}
+ {\lgrmath@series}
+ {\lgrmath@itshape}
+\SetSymbolFont{lgrmathit}{bold}{LGR}{\lgrmath@fontfamily}
+ {\lgrmath@boldseries}
+ {\lgrmath@itshape}
+% \end{macrocode}
+% As all Greek letters are already available in \cs{...up} and \cs{...it}
+% variants, it is indeed not immediately pressing to have math alphabets, so
+% let's not do it by default.
+% \begin{macrocode}
+\iflgrmath@alphabets
+ \DeclareSymbolFontAlphabet{\lgrmathup}{lgrmathup}
+ \DeclareSymbolFontAlphabet{\lgrmathit}{lgrmathit}
+\fi
+% \end{macrocode}
+% Definition of the `|up|' \cs{mathchar}'s. There are 48 `standard'
+% ones plus 8 extras.^^A and 11 with diacritics for a total of 67 ones.
+%
+% Hesitation whether I should declare with \cs{mathalpha} \emph{only} if
+% |alphabets| is passed to the package.
+% \begin{macrocode}
+\DeclareMathSymbol{\Alphaup}{\mathalpha}{lgrmathup}{65}
+\DeclareMathSymbol{\Betaup}{\mathalpha}{lgrmathup}{66}
+\DeclareMathSymbol{\Gammaup}{\mathalpha}{lgrmathup}{71}
+\DeclareMathSymbol{\Deltaup}{\mathalpha}{lgrmathup}{68}
+\DeclareMathSymbol{\Epsilonup}{\mathalpha}{lgrmathup}{69}
+\DeclareMathSymbol{\Zetaup}{\mathalpha}{lgrmathup}{90}
+\DeclareMathSymbol{\Etaup}{\mathalpha}{lgrmathup}{72}
+\DeclareMathSymbol{\Thetaup}{\mathalpha}{lgrmathup}{74}
+\DeclareMathSymbol{\Iotaup}{\mathalpha}{lgrmathup}{73}
+\DeclareMathSymbol{\Kappaup}{\mathalpha}{lgrmathup}{75}
+\DeclareMathSymbol{\Lambdaup}{\mathalpha}{lgrmathup}{76}
+\DeclareMathSymbol{\Muup}{\mathalpha}{lgrmathup}{77}
+\DeclareMathSymbol{\Nuup}{\mathalpha}{lgrmathup}{78}
+\DeclareMathSymbol{\Xiup}{\mathalpha}{lgrmathup}{88}
+\DeclareMathSymbol{\Omicronup}{\mathalpha}{lgrmathup}{79}
+\DeclareMathSymbol{\Piup}{\mathalpha}{lgrmathup}{80}
+\DeclareMathSymbol{\Rhoup}{\mathalpha}{lgrmathup}{82}
+\DeclareMathSymbol{\Sigmaup}{\mathalpha}{lgrmathup}{83}
+\DeclareMathSymbol{\Tauup}{\mathalpha}{lgrmathup}{84}
+\DeclareMathSymbol{\Upsilonup}{\mathalpha}{lgrmathup}{85}
+\DeclareMathSymbol{\Phiup}{\mathalpha}{lgrmathup}{70}
+\DeclareMathSymbol{\Chiup}{\mathalpha}{lgrmathup}{81}
+\DeclareMathSymbol{\Psiup}{\mathalpha}{lgrmathup}{89}
+\DeclareMathSymbol{\Omegaup}{\mathalpha}{lgrmathup}{87}
+\DeclareMathSymbol{\alphaup}{\mathalpha}{lgrmathup}{97}
+\DeclareMathSymbol{\betaup}{\mathalpha}{lgrmathup}{98}
+\DeclareMathSymbol{\gammaup}{\mathalpha}{lgrmathup}{103}
+\DeclareMathSymbol{\deltaup}{\mathalpha}{lgrmathup}{100}
+\DeclareMathSymbol{\epsilonup}{\mathalpha}{lgrmathup}{101}
+\DeclareMathSymbol{\zetaup}{\mathalpha}{lgrmathup}{122}
+\DeclareMathSymbol{\etaup}{\mathalpha}{lgrmathup}{104}
+\DeclareMathSymbol{\thetaup}{\mathalpha}{lgrmathup}{106}
+\DeclareMathSymbol{\iotaup}{\mathalpha}{lgrmathup}{105}
+\DeclareMathSymbol{\kappaup}{\mathalpha}{lgrmathup}{107}
+\DeclareMathSymbol{\lambdaup}{\mathalpha}{lgrmathup}{108}
+\DeclareMathSymbol{\muup}{\mathalpha}{lgrmathup}{109}
+\DeclareMathSymbol{\nuup}{\mathalpha}{lgrmathup}{110}
+\DeclareMathSymbol{\xiup}{\mathalpha}{lgrmathup}{120}
+\DeclareMathSymbol{\omicronup}{\mathalpha}{lgrmathup}{111}
+\DeclareMathSymbol{\piup}{\mathalpha}{lgrmathup}{112}
+\DeclareMathSymbol{\rhoup}{\mathalpha}{lgrmathup}{114}
+\DeclareMathSymbol{\sigmaup}{\mathalpha}{lgrmathup}{115}
+\DeclareMathSymbol{\tauup}{\mathalpha}{lgrmathup}{116}
+\DeclareMathSymbol{\upsilonup}{\mathalpha}{lgrmathup}{117}
+\DeclareMathSymbol{\phiup}{\mathalpha}{lgrmathup}{102}
+\DeclareMathSymbol{\chiup}{\mathalpha}{lgrmathup}{113}
+\DeclareMathSymbol{\psiup}{\mathalpha}{lgrmathup}{121}
+\DeclareMathSymbol{\omegaup}{\mathalpha}{lgrmathup}{119}
+% \end{macrocode}
+% Defintion of the `|it|' \cs{mathchar}'s.
+% \begin{macrocode}
+\DeclareMathSymbol{\Alphait}{\mathalpha}{lgrmathit}{65}
+\DeclareMathSymbol{\Betait}{\mathalpha}{lgrmathit}{66}
+\DeclareMathSymbol{\Gammait}{\mathalpha}{lgrmathit}{71}
+\DeclareMathSymbol{\Deltait}{\mathalpha}{lgrmathit}{68}
+\DeclareMathSymbol{\Epsilonit}{\mathalpha}{lgrmathit}{69}
+\DeclareMathSymbol{\Zetait}{\mathalpha}{lgrmathit}{90}
+\DeclareMathSymbol{\Etait}{\mathalpha}{lgrmathit}{72}
+\DeclareMathSymbol{\Thetait}{\mathalpha}{lgrmathit}{74}
+\DeclareMathSymbol{\Iotait}{\mathalpha}{lgrmathit}{73}
+\DeclareMathSymbol{\Kappait}{\mathalpha}{lgrmathit}{75}
+\DeclareMathSymbol{\Lambdait}{\mathalpha}{lgrmathit}{76}
+\DeclareMathSymbol{\Muit}{\mathalpha}{lgrmathit}{77}
+\DeclareMathSymbol{\Nuit}{\mathalpha}{lgrmathit}{78}
+\DeclareMathSymbol{\Xiit}{\mathalpha}{lgrmathit}{88}
+\DeclareMathSymbol{\Omicronit}{\mathalpha}{lgrmathit}{79}
+\DeclareMathSymbol{\Piit}{\mathalpha}{lgrmathit}{80}
+\DeclareMathSymbol{\Rhoit}{\mathalpha}{lgrmathit}{82}
+\DeclareMathSymbol{\Sigmait}{\mathalpha}{lgrmathit}{83}
+\DeclareMathSymbol{\Tauit}{\mathalpha}{lgrmathit}{84}
+\DeclareMathSymbol{\Upsilonit}{\mathalpha}{lgrmathit}{85}
+\DeclareMathSymbol{\Phiit}{\mathalpha}{lgrmathit}{70}
+\DeclareMathSymbol{\Chiit}{\mathalpha}{lgrmathit}{81}
+\DeclareMathSymbol{\Psiit}{\mathalpha}{lgrmathit}{89}
+\DeclareMathSymbol{\Omegait}{\mathalpha}{lgrmathit}{87}
+\DeclareMathSymbol{\alphait}{\mathalpha}{lgrmathit}{97}
+\DeclareMathSymbol{\betait}{\mathalpha}{lgrmathit}{98}
+\DeclareMathSymbol{\gammait}{\mathalpha}{lgrmathit}{103}
+\DeclareMathSymbol{\deltait}{\mathalpha}{lgrmathit}{100}
+\DeclareMathSymbol{\epsilonit}{\mathalpha}{lgrmathit}{101}
+\DeclareMathSymbol{\zetait}{\mathalpha}{lgrmathit}{122}
+\DeclareMathSymbol{\etait}{\mathalpha}{lgrmathit}{104}
+\DeclareMathSymbol{\thetait}{\mathalpha}{lgrmathit}{106}
+\DeclareMathSymbol{\iotait}{\mathalpha}{lgrmathit}{105}
+\DeclareMathSymbol{\kappait}{\mathalpha}{lgrmathit}{107}
+\DeclareMathSymbol{\lambdait}{\mathalpha}{lgrmathit}{108}
+\DeclareMathSymbol{\muit}{\mathalpha}{lgrmathit}{109}
+\DeclareMathSymbol{\nuit}{\mathalpha}{lgrmathit}{110}
+\DeclareMathSymbol{\xiit}{\mathalpha}{lgrmathit}{120}
+\DeclareMathSymbol{\omicronit}{\mathalpha}{lgrmathit}{111}
+\DeclareMathSymbol{\piit}{\mathalpha}{lgrmathit}{112}
+\DeclareMathSymbol{\rhoit}{\mathalpha}{lgrmathit}{114}
+\DeclareMathSymbol{\sigmait}{\mathalpha}{lgrmathit}{115}
+\DeclareMathSymbol{\tauit}{\mathalpha}{lgrmathit}{116}
+\DeclareMathSymbol{\upsilonit}{\mathalpha}{lgrmathit}{117}
+\DeclareMathSymbol{\phiit}{\mathalpha}{lgrmathit}{102}
+\DeclareMathSymbol{\chiit}{\mathalpha}{lgrmathit}{113}
+\DeclareMathSymbol{\psiit}{\mathalpha}{lgrmathit}{121}
+\DeclareMathSymbol{\omegait}{\mathalpha}{lgrmathit}{119}
+% \end{macrocode}
+% Extras: alternate shapes and other glyphs, `upright'.
+% \begin{macrocode}
+\DeclareMathSymbol{\varsigmaup}{\mathalpha}{lgrmathup}{99}
+\DeclareMathSymbol{\varvarsigmaup}{\mathalpha}{lgrmathup}{6}
+\DeclareMathSymbol{\varSigmaup}{\mathalpha}{lgrmathup}{22}
+\DeclareMathSymbol{\Sampiup}{\mathalpha}{lgrmathup}{23}
+\DeclareMathSymbol{\sampiup}{\mathalpha}{lgrmathup}{27}
+\DeclareMathSymbol{\digammaup}{\mathalpha}{lgrmathup}{147}
+\DeclareMathSymbol{\Digammaup}{\mathalpha}{lgrmathup}{195}
+\DeclareMathSymbol{\koppaup}{\mathalpha}{lgrmathup}{18}
+% \end{macrocode}
+% Extras: alternate shapes and other glyphs, `italic'.
+% \begin{macrocode}
+\DeclareMathSymbol{\varsigmait}{\mathalpha}{lgrmathit}{99}
+\DeclareMathSymbol{\varvarsigmait}{\mathalpha}{lgrmathit}{6}
+\DeclareMathSymbol{\varSigmait}{\mathalpha}{lgrmathit}{22}
+\DeclareMathSymbol{\Sampiit}{\mathalpha}{lgrmathit}{23}
+\DeclareMathSymbol{\sampiit}{\mathalpha}{lgrmathit}{27}
+\DeclareMathSymbol{\digammait}{\mathalpha}{lgrmathit}{147}
+\DeclareMathSymbol{\Digammait}{\mathalpha}{lgrmathit}{195}
+\DeclareMathSymbol{\koppait}{\mathalpha}{lgrmathit}{18}
+% \end{macrocode}
+% Some glyphs with diacritics. I decided not to keep this
+% in \lgrmath. Let's wait for extremely improbable feature request, as I won't
+% do the feature request and will probably remain the sole user. Actually I
+% don't think I will ever use this package as contexts where
+% it could be useful are those where I would use \ctanpkg{mathastext} and its
+% |LGRgreek| option and \cs{MTgreekfont} command...
+% \makeatletter\codeline@indexfalse
+% \begin{macrocode}
+% \DeclareMathSymbol{\alphatonosup}{\mathalpha}{lgrmathup}{136}
+% \DeclareMathSymbol{\epsilontonosup}{\mathalpha}{lgrmathup}{232}
+% \DeclareMathSymbol{\etatonosup}{\mathalpha}{lgrmathup}{160}
+% \DeclareMathSymbol{\iotatonosup}{\mathalpha}{lgrmathup}{208}
+% \DeclareMathSymbol{\omicrontonosup}{\mathalpha}{lgrmathup}{236}
+% \DeclareMathSymbol{\upsilontonosup}{\mathalpha}{lgrmathup}{212}
+% \DeclareMathSymbol{\omegatonosup}{\mathalpha}{lgrmathup}{184}
+% \DeclareMathSymbol{\upsilondieresistonosup}{\mathalpha}{lgrmathup}{246}
+% \DeclareMathSymbol{\iotadieresisup}{\mathalpha}{lgrmathup}{240}
+% \DeclareMathSymbol{\iotadieresistonosup}{\mathalpha}{lgrmathup}{242}
+% \DeclareMathSymbol{\upsilondieresisup}{\mathalpha}{lgrmathup}{244}
+% \DeclareMathSymbol{\alphatonosit}{\mathalpha}{lgrmathit}{136}
+% \DeclareMathSymbol{\epsilontonosit}{\mathalpha}{lgrmathit}{232}
+% \DeclareMathSymbol{\etatonosit}{\mathalpha}{lgrmathit}{160}
+% \DeclareMathSymbol{\iotatonosit}{\mathalpha}{lgrmathit}{208}
+% \DeclareMathSymbol{\omicrontonosit}{\mathalpha}{lgrmathit}{236}
+% \DeclareMathSymbol{\upsilontonosit}{\mathalpha}{lgrmathit}{212}
+% \DeclareMathSymbol{\omegatonosit}{\mathalpha}{lgrmathit}{184}
+% \DeclareMathSymbol{\upsilondieresistonosit}{\mathalpha}{lgrmathit}{246}
+% \DeclareMathSymbol{\iotadieresisit}{\mathalpha}{lgrmathit}{240}
+% \DeclareMathSymbol{\iotadieresistonosit}{\mathalpha}{lgrmathit}{242}
+% \DeclareMathSymbol{\upsilondieresisit}{\mathalpha}{lgrmathit}{244}
+% \end{macrocode}
+% \codeline@indextrue
+% Definition of the \cs{mathchar}'s without `|up/it|' postfix. There are 27=24+3
+% uppercase and 29=24+5 lowercase letters, for a total of 56=48+8 glyphs. Actually,
+% I had done some work with LGR in September 2011. I kept
+% the file around. But
+% at no point did I go back to check if I had done exhaustive work in 2011 and
+% whether some other glyphs could be accounted for by LGR (not using
+% ligatures) (I did re-check an
+% old file about the LGR encoding I had from that 2011 work, but did not try
+% to check for updates). Anyway, it is very doubtful whether it made any
+% sense for \lgrmath to define control sequences for Greek letters with
+% diacritics...
+% \begin{macrocode}
+\def\lgrmath@setgreekcs{%
+ \iflgrmath@upper@up
+ \let\Alpha\Alphaup
+ \let\Beta\Betaup
+ \let\Gamma\Gammaup
+ \let\Delta\Deltaup
+ \let\Epsilon\Epsilonup
+ \let\Zeta\Zetaup
+ \let\Eta\Etaup
+ \let\Theta\Thetaup
+ \let\Iota\Iotaup
+ \let\Kappa\Kappaup
+ \let\Lambda\Lambdaup
+ \let\Mu\Muup
+ \let\Nu\Nuup
+ \let\Xi\Xiup
+ \let\Omicron\Omicronup
+ \let\Pi\Piup
+ \let\Rho\Rhoup
+ \let\Sigma\Sigmaup
+ \let\Tau\Tauup
+ \let\Upsilon\Upsilonup
+ \let\Phi\Phiup
+ \let\Chi\Chiup
+ \let\Psi\Psiup
+ \let\Omega\Omegaup
+ \let\Sampi\Sampiup
+ \let\Digamma\Digammaup
+ \let\varSigma\varSigmaup
+ \else
+ \let\Alpha\Alphait
+ \let\Beta\Betait
+ \let\Gamma\Gammait
+ \let\Delta\Deltait
+ \let\Epsilon\Epsilonit
+ \let\Zeta\Zetait
+ \let\Eta\Etait
+ \let\Theta\Thetait
+ \let\Iota\Iotait
+ \let\Kappa\Kappait
+ \let\Lambda\Lambdait
+ \let\Mu\Muit
+ \let\Nu\Nuit
+ \let\Xi\Xiit
+ \let\Omicron\Omicronit
+ \let\Pi\Piit
+ \let\Rho\Rhoit
+ \let\Sigma\Sigmait
+ \let\Tau\Tauit
+ \let\Upsilon\Upsilonit
+ \let\Phi\Phiit
+ \let\Chi\Chiit
+ \let\Psi\Psiit
+ \let\Omega\Omegait
+ \let\Sampi\Sampiit
+ \let\Digamma\Digammait
+ \let\varSigma\varSigmait
+ \fi
+ \iflgrmath@lower@up
+ \let\alpha\alphaup
+ \let\beta\betaup
+ \let\gamma\gammaup
+ \let\delta\deltaup
+ \let\epsilon\epsilonup
+ \let\zeta\zetaup
+ \let\eta\etaup
+ \let\theta\thetaup
+ \let\iota\iotaup
+ \let\kappa\kappaup
+ \let\lambda\lambdaup
+ \let\mu\muup
+ \let\nu\nuup
+ \let\xi\xiup
+ \let\omicron\omicronup
+ \let\pi\piup
+ \let\rho\rhoup
+ \let\sigma\sigmaup
+ \let\tau\tauup
+ \let\upsilon\upsilonup
+ \let\phi\phiup
+ \let\chi\chiup
+ \let\psi\psiup
+ \let\omega\omegaup
+ \let\varsigma\varsigmaup
+ \let\varvarsigma\varvarsigmaup
+ \let\sampi\sampiup
+ \let\digamma\digammaup
+ \let\koppa\koppaup
+% \end{macrocode}
+% The \ctanpkg{doc} |macrocode| makes no provision for being interrupted
+% invisibly, it is very complicated (but possible) to do this (see
+% \centeredline{\url{https://github.com/latex3/latex2e/issues/847}}
+% ), but simplest is to babble something here like this paragraph.
+% \codeline@indexfalse
+% \begin{macrocode}
+% \let\alphatonos\alphatonosup
+% \let\epsilontonos\epsilontonosup
+% \let\etatonos\etatonosup
+% \let\iotatonos\iotatonosup
+% \let\omicrontonos\omicrontonosup
+% \let\upsilontonos\upsilontonosup
+% \let\omegatonos\omegatonosup
+% \let\upsilondieresistonos\upsilondieresistonosup
+% \let\iotadieresis\iotadieresisup
+% \let\iotadieresistonos\iotadieresistonosup
+% \let\upsilondieresis\upsilondieresisup
+% \end{macrocode}
+% babble\codeline@indextrue
+% \begin{macrocode}
+ \else
+ \let\alpha\alphait
+ \let\beta\betait
+ \let\gamma\gammait
+ \let\delta\deltait
+ \let\epsilon\epsilonit
+ \let\zeta\zetait
+ \let\eta\etait
+ \let\theta\thetait
+ \let\iota\iotait
+ \let\kappa\kappait
+ \let\lambda\lambdait
+ \let\mu\muit
+ \let\nu\nuit
+ \let\xi\xiit
+ \let\omicron\omicronit
+ \let\pi\piit
+ \let\rho\rhoit
+ \let\sigma\sigmait
+ \let\tau\tauit
+ \let\upsilon\upsilonit
+ \let\phi\phiit
+ \let\chi\chiit
+ \let\psi\psiit
+ \let\omega\omegait
+ \let\varsigma\varsigmait
+ \let\varvarsigma\varvarsigmait
+ \let\sampi\sampiit
+ \let\digamma\digammait
+ \let\koppa\koppait
+% \end{macrocode}
+% babble\codeline@indexfalse
+% \begin{macrocode}
+% \let\alphatonos\alphatonosit
+% \let\epsilontonos\epsilontonosit
+% \let\etatonos\etatonosit
+% \let\iotatonos\iotatonosit
+% \let\omicrontonos\omicrontonosit
+% \let\upsilontonos\upsilontonosit
+% \let\omegatonos\omegatonosit
+% \let\upsilondieresistonos\upsilondieresistonosit
+% \let\iotadieresis\iotadieresisit
+% \let\iotadieresistonos\iotadieresistonosit
+% \let\upsilondieresis\upsilondieresisit
+% \end{macrocode}
+% babble\codeline@indextrue
+% \begin{macrocode}
+ \fi
+}%
+\lgrmath@setgreekcs
+% \end{macrocode}
+% Finally we define \cs{lgrmathgreektable} and \cs{lgrmathgreektableextra}.
+% \begin{macrocode}
+\def\lgrmathgreektable#1#2#3{%
+\begingroup
+\def\s##1{{\usefont{T1}{mlmtt}{m}{n}\string##1}}%
+\usefont{LGR}{#1}{#2}{#3}%
+\begin{tabular}{|lc|lc|lc|lc|}
+\hline
+\s\Alpha &A &\s\Nu &N &\s\alpha &a &\s\nu &n \\
+\s\Beta &B &\s\Xi &X &\s\beta &b &\s\xi &x \\
+\s\Gamma &G &\s\Omicron&O &\s\gamma &g &\s\omicron&o \\
+\s\Delta &D &\s\Pi &P &\s\delta &d &\s\pi &p \\
+\s\Epsilon&E &\s\Rho &R &\s\epsilon&e &\s\rho &r \\
+\s\Zeta &Z &\s\Sigma &S &\s\zeta &z &\s\sigma &s \\
+\s\Eta &H &\s\Tau &T &\s\eta &h &\s\tau &t \\
+\s\Theta &J &\s\Upsilon&U &\s\theta &j &\s\upsilon&u \\
+\s\Iota &I &\s\Phi &F &\s\iota &i &\s\phi &f \\
+\s\Kappa &K &\s\Chi &Q &\s\kappa &k &\s\chi &q \\
+\s\Lambda &L &\s\Psi &Y &\s\lambda &l &\s\psi &y \\
+\s\Mu &M &\s\Omega &W &\s\mu &m &\s\omega &w \\
+\hline
+\end{tabular}
+\endgroup
+}%
+\def\lgrmathgreektableextra#1#2#3{%
+\begingroup
+\def\s##1{{\usefont{T1}{mlmtt}{m}{n}\string##1}}%
+\usefont{LGR}{#1}{#2}{#3}%
+\begin{tabular}{lclclc}
+\s\varsigma &\char99 &\s\digamma&\char147 &\s\varSigma&\char22 \\
+\s\varvarsigma&\char6 &\s\koppa &\char18 &\s\Sampi &\char23 \\
+\s\sampi &\char27 & & &\s\Digamma &\char195\relax
+\end{tabular}
+\endgroup
+}%
+% \end{macrocode}
+% And we have now reached the end of the \lgrmath package code. The actual
+% |.sty| file will contain an \cs{endinput} added by the DocStrip extraction.
+%\MakePercentComment
+%</sty>
+%<*dtx>
+\Finale
+%%
+%% End of file `lgrmath.dtx'.
diff --git a/macros/latex/contrib/lgrmath/lgrmath.pdf b/macros/latex/contrib/lgrmath/lgrmath.pdf
new file mode 100644
index 0000000000..e5c483014f
--- /dev/null
+++ b/macros/latex/contrib/lgrmath/lgrmath.pdf
Binary files differ
diff --git a/macros/latex/contrib/memoir/README b/macros/latex/contrib/memoir/README
index 81d34511ab..b2581abbb8 100644
--- a/macros/latex/contrib/memoir/README
+++ b/macros/latex/contrib/memoir/README
@@ -27,6 +27,32 @@ o Backmatter:
Command glossary ~ 40 pages
Bibliography, indexes ~ 50 pages
+Changes (2022/11/17)
+
+o memoir v3.7.19
+
+-- changed version numbering to v3.7.<num> (no plans to switch to 3.8
+ anytime soon)
+-- changed several \theH... definitions to \def to work better with
+ coming hyperref/tagging changes
+-- similar for \toclevel@... macros
+-- only declare \stockwidth and \stockheight if the kernel hadn't done
+ so already
+
+o memhfixc v1.20
+
+-- removed patch for \@starttoc and thus \Hy@AtBeginDocument is no
+ longer used in memhfixc
+
+
+WORD OF ADVISE: It is not recommended to manually update memoir into
+an old LaTeX installation. Not all changes are compatible with older
+un-updated LaTeX systems and we often make no attempt to be backwards
+compatible. Instead we assume that users use updated memoir with an
+updated LaTeX installation.
+
+
+
Changes (2022/07/29)
o memoir v3.7r
diff --git a/macros/latex/contrib/memoir/memman.pdf b/macros/latex/contrib/memoir/memman.pdf
index 92cc612001..4b27d2a696 100644
--- a/macros/latex/contrib/memoir/memman.pdf
+++ b/macros/latex/contrib/memoir/memman.pdf
Binary files differ
diff --git a/macros/latex/contrib/memoir/memoir.dtx b/macros/latex/contrib/memoir/memoir.dtx
index fc65ffc581..ba5162db9d 100644
--- a/macros/latex/contrib/memoir/memoir.dtx
+++ b/macros/latex/contrib/memoir/memoir.dtx
@@ -20,7 +20,7 @@
% This work consists of the files listed in the README file.
%
% \fi
-% \CheckSum{31043}
+% \CheckSum{31045}
%
% \changes{v0.1}{2001/05/20}{First public alpha release}
% \changes{v0.2}{2001/06/03}{First beta release}
@@ -128,6 +128,8 @@
% \changes{v3.7o}{2021/03/23}{Maintenance and a provide for the kernel}
% \changes{v3.7p}{2021/06/16}{Small adjustments of memoir vs memhfixc}
% \changes{v3.7q}{2022/02/20}{Maintenance}
+% \changes{v3.7r}{2022/07/29}{Maintenance}
+% \changes{v3.7.19}{2022/11/17}{Maintenance}
%
% \def\dtxfile{memoir.dtx}
%
@@ -194,6 +196,7 @@
% \def\fileversion{v3.7p} \def\filedate{2021/06/16}
% \def\fileversion{v3.7q} \def\filedate{2022/02/20}
% \def\fileversion{v3.7r} \def\filedate{2022/07/29}
+% \def\fileversion{v3.7.19} \def\filedate{2022/11/17}
% \title{The LaTeX \Lpack{memoir} class for configurable book
% typesetting: Source code\thanks{This
% file (\texttt{\dtxfile}) has version number \fileversion, last revised
@@ -424,11 +427,11 @@
% Announce the name, option files and version for LaTeX2e files:
% \begin{macrocode}
%<class>\ProvidesClass{memoir}%
-%<class> [2022/07/29 v3.7r configurable book, report, article document class]
+%<class> [2022/11/17 v3.7.19 configurable book, report, article document class]
% \end{macrocode}
% In the manual it is useful to know the current version.
% \begin{macrocode}
-%<class>\newcommand\memversion{v3.7r, 2022/07/29}
+%<class>\newcommand\memversion{v3.7.19, 2022/11/17}
%<9pt>\ProvidesFile{mem9.clo}%
%<9pt> [2022/07/29 v0.5 memoir class 9pt size option]
%<10pt>\ProvidesFile{mem10.clo}%
@@ -1922,9 +1925,11 @@
% same as the physical sheet. In other words the \cs{paper...} and \cs{stock...}
% sizes are the same and the trims are zero. This class assumes that this
% is the normal case.
+% \changes{v3.7.19}{2022/10/28}{\cs{stockheight} and \cs{stockwidth}
+% may now be defined in the kernel, so we test for that}
% \begin{macrocode}
-\newlength{\stockheight}
-\newlength{\stockwidth}
+\@ifundefined{stockwidth}{\newdimen{\stockheight}}{}
+\@ifundefined{stockwidth}{\newdimen{\stockwidth}}{}
\newlength{\trimtop}
\newlength{\trimedge}
@@ -8916,9 +8921,11 @@
% \begin{macro}{\theHbook}
% \begin{macro}{\toclevel@book}
% These are needed if the \Lpack{hyperref} is used.
+% \changes{v3.7.19}{2022/10/25}{Changing \cs{theH...} definitions to
+% \cs{def} for better compability with future hyperref}
% \begin{macrocode}
-\newcommand*{\theHbook}{\arabic{book}}
-\newcommand*{\toclevel@book}{-2}
+\def\theHbook{\arabic{book}}
+\def\toclevel@book{-2}
% \end{macrocode}
% \end{macro}
@@ -14291,10 +14298,12 @@
% lines of a poem. See the thread \textit{PDFTEX/Hyperef hates memoir verse
% environment?} on \ctt{} October 2002.
% \changes{v1.3}{2002/11/14}{Added verse counter and \cs{theHpoemline}}
+% \changes{v3.7.19}{2022/10/25}{Changing \cs{theH...} definitions to
+% \cs{def} for better compability with future hyperref}
% \begin{macrocode}
\newcounter{verse}
\setcounter{verse}{0}
-\newcommand{\theHpoemline}{\theverse.\thepoemline}
+\def\theHpoemline{\theverse.\thepoemline}
% \end{macrocode}
% \end{macro}
@@ -23683,6 +23692,8 @@
% \begin{macro}{\toclevel@part}
% Needed if the \Lpack{hyperref} package is used.
% \changes{v1.61803}{2008/01/30}{Added \cs{toclevel@part} (mempatch v4.9)}
+% \changes{v3.7.19}{2022/10/25}{Changing \cs{toclevel@part} definition to
+% \cs{def} for better compability with future hyperref}
% \begin{macrocode}
\newcommand*{\toclevel@part}{-1}
@@ -23843,8 +23854,10 @@
% \begin{macro}{\toclevel@chapter}
% Needed if the \Lpack{hyperref} package is used.
% \changes{v1.61803}{2008/01/30}{Added \cs{toclevel@chapter} (mempatch v4.9)}
+% \changes{v3.7.19}{2022/10/25}{Changing \cs{toclevel@chapter} definitions to
+% \cs{def} for better compability with future hyperref}
% \begin{macrocode}
-\newcommand*{\toclevel@chapter}{0}
+\def\toclevel@chapter{0}
% \end{macrocode}
% \end{macro}
@@ -23865,10 +23878,12 @@
% \begin{macro}{\toclevel@appendix}
% Similar to \cs{l@chapter} but for an appendix.
% \changes{v1.618}{2005/09/03}{Added \cs{l@apendix} (mempatch v3.12)}
+% \changes{v3.7.19}{2022/10/25}{Changing \cs{toclevel@appendix} definitions to
+% \cs{def} for better compability with future hyperref}
% \begin{macrocode}
\newcommand*{\l@appendix}[2]{%
\l@chapapp{#1}{#2}{\cftappendixname}}
-\newcommand{\toclevel@appendix}{0}
+\def\toclevel@appendix{0}
% \end{macrocode}
% \end{macro}
@@ -24441,9 +24456,11 @@
% as `division levels'.
% \changes{v1.61803}{2008/01/30}{Added \cs{toclevel@none} and \cs{toclevel@all}
% (mempatch v4.4)}
+% \changes{v3.7.19}{2022/10/25}{Changing \cs{toclevel@...} definitions to
+% \cs{def} for better compability with future hyperref}
% \begin{macrocode}
-\newcommand*{\toclevel@none}{-10}
-\newcommand*{\toclevel@all}{50}
+\def\toclevel@none{-10}
+\def\toclevel@all{50}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/memoir/mempatch.dtx b/macros/latex/contrib/memoir/mempatch.dtx
index 135166c33e..540bc678cb 100644
--- a/macros/latex/contrib/memoir/mempatch.dtx
+++ b/macros/latex/contrib/memoir/mempatch.dtx
@@ -20,7 +20,7 @@
%
%
% \fi
-% \CheckSum{609}
+% \CheckSum{610}
%
% \def\dtxfile{\texttt{mempatch.dtx}}
% \def\fileversion{v1.0} \def\filedate{2003/10/04}
@@ -309,6 +309,10 @@
%% With thanks to Heiko Oberdiek, if you use hyperref dated 2006/11/15
%% or later, memhfixc will be automatically loaded after hyperref.
%%
+%% With the new hooking system from 2020+ memhfixc is automatically
+%% added after loading hyperref with the memoir class
+%%
+%% Version 1.20 2022/11/17
%% Version 1.19 2021/06/16
%% Version 1.18 2019/10/24
%% Version 1.17 2013/05/30
@@ -334,7 +338,7 @@
%
%
% \begin{macrocode}
-\ProvidesPackage{memhfixc}[2021/06/16 v1.19 nameref/hyperref package fixes for memoir class]
+\ProvidesPackage{memhfixc}[2022/11/17 v1.20 nameref/hyperref package fixes for memoir class]
% \end{macrocode}
%
% \begin{macro}{\M@hfixcfinish}
@@ -821,40 +825,42 @@
% \end{macro}
%
% \changes{v1.16}{2013/05/14}{Added fix for \cs{@starttoc}}
-% \begin{macro}{\@starttoc}
-% In memoir we altered \cs{@starttoc} such that \cs{tableofcontents}
-% could be used multiple times. \Lpack{hyperref} resets this. So here
-% is our reset of that reset.
+% \changes{v1.20}{2022/11/17}{Patch removed, by 2022 hyperref no longer change \cs{@starttoc}}
+% ^^A \begin{macro}{\@starttoc}
+% ^^A In memoir we altered \cs{@starttoc} such that \cs{tableofcontents}
+% ^^A could be used multiple times. \Lpack{hyperref} resets this. So here
+% ^^A is our reset of that reset.
% \begin{macrocode}
-\Hy@AtBeginDocument{%
- \ifx\hyper@last\@undefined
- \def\@starttoc#1{%
- \begingroup\makeatletter
- \IfFileExists{\jobname.#1}{%
- \Hy@WarningNoLine{%
- old #1 file detected, not used; run LaTeX again%
- }%
- }{}%
- \if@filesw
+ % patch removed as per 2022 hyperref does not touch \@starttoc
+ % \Hy@AtBeginDocument{%
+ % \ifx\hyper@last\@undefined
+ % \def\@starttoc#1{%
+ % \begingroup\makeatletter
+ % \IfFileExists{\jobname.#1}{%
+ % \Hy@WarningNoLine{%
+ % old #1 file detected, not used; run LaTeX again%
+ % }%
+ % }{}%
+ % \if@filesw
% \end{macrocode}
-% We rewrite this part to match our definition. The rest is a copy
-% from \texttt{hyperref.sty}.
+% ^^A We rewrite this part to match our definition. The rest is a copy
+% ^^A from \texttt{hyperref.sty}.
% \begin{macrocode}
- \AtEndDocument{%
- \expandafter\ifx\csname tf@#1\endcsname\relax
- \expandafter\newwrite\csname tf@#1\endcsname
- \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
- \fi
- }
- \fi
- \@nobreakfalse
- \endgroup
- }%
- \fi
-}
+ % \AtEndDocument{%
+ % \expandafter\ifx\csname tf@#1\endcsname\relax
+ % \expandafter\newwrite\csname tf@#1\endcsname
+ % \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
+ % \fi
+ % }
+ % \fi
+ % \@nobreakfalse
+ % \endgroup
+ % }%
+ % \fi
+ % }
% \end{macrocode}
-% \end{macro}
+% ^^A \end{macro}
%
% \changes{v3.6k}{2013/05/16}{Added hyperref support for page notes}
% In order to enable hyperlinks for page notes, we need a few extra
diff --git a/macros/latex/contrib/udes-genie-these/README.md b/macros/latex/contrib/udes-genie-these/README.md
index b0caad3982..82bbd5cff7 100644
--- a/macros/latex/contrib/udes-genie-these/README.md
+++ b/macros/latex/contrib/udes-genie-these/README.md
@@ -1,12 +1,31 @@
# udes-genie-these : Thesis class for the Faculté de génie at the Université de Sherbrooke
## Overview
-The udes-genie-these class can be used for Ph.D. thesis, master's thesis and project definition at the Faculté de génie of the Université de Sherbrooke (Québec, Canada). The class file is coherent with the latest version of the *Protocole de rédaction aux études supérieures* which is available on the faculty's intranet.
+The udes-genie-these class can be used for Ph.D. thesis, master's thesis and project definition at the Faculté de génie of the Université de Sherbrooke (Québec, Canada). The class file is coherent with the latest version of the *Protocole de rédaction aux études supérieures* which is available on the faculty's intranet.
The class file documentation is in French, the language of the typical user at the Université de Sherbrooke. An example of use is also distributed with the documentation.
Copyright (C) 2017-2022 Charles-Antoine Brunet
+## Class file (udes-genie-these.cls)
+The class file (udes-genie-these.cls) is generated with the installation file (udes-genie-these.ins) with the following command:
+```
+pdflatex udes-genie-these.ins
+```
+
+## File description
+#### Documentation
+- udes-genie-these.pdf: package documentation
+- README.md: this file
+
+#### Source files
+- udes-genie-these.dtx: source file
+- udes-genie-these.ins: installation file
+
+#### Usage example
+- document.tex: main file
+- \*.tex, \*.bib: files used by main file
+
## Authors and maintainers
Charles-Antoine Brunet (Charles-Antoine.Brunet@USherbrooke.ca)
@@ -21,16 +40,4 @@ CTAN: [udes-genie-these](https://www.ctan.org/pkg/udes-genie-these)
TDS archive: [udes-genie-these.tds.zip](https://mirrors.ctan.org/install/macros/latex/contrib/udes-genie-these.tds.zip)
-### File description
-
-#### Documentation
-- udes-genie-these.pdf: package documentation
-- README.md: this file
-
-#### Source files
-- udes-genie-these.dtx: source file
-- udes-genie-these.ins: installation file
-
-#### Usage example
-- document.tex: main file
-- \*.tex, \*.bib: files used by main file
+Flat archive: [udes-genie-these.zip](https://mirrors.ctan.org/macros/latex/contrib/udes-genie-these.zip)
diff --git a/macros/latex/contrib/udes-genie-these/document.tex b/macros/latex/contrib/udes-genie-these/document.tex
index 88b1c28de5..66245c37d8 100644
--- a/macros/latex/contrib/udes-genie-these/document.tex
+++ b/macros/latex/contrib/udes-genie-these/document.tex
@@ -18,6 +18,7 @@
fichier-symboles = {symboles},
fichier-acronymes = {acronymes},
fichiers-references = {references},
+ %style-references = plain,
}
\TitreFrancais{CECI EST LE TITRE FRANÇAIS\\DU DOCUMENT}
@@ -46,44 +47,39 @@ Ce document est uniquement un exemple d'utilisation de la classe \LaTeX\ pour la
Les références bibliographiques qui suivent ne sont que des exemples. Il faut se référer au protocole pour plus de détails à ce sujet afin de s'assurer que les références sont complètes et qu'elles sont conformes aux exigences.
\begin{description}
- \item[Article de périodique:]
- il y a quatre exemples \cite{burke1995,pattamatta2009,roy2009,vasu2009}.
-
- \item[Articles d'actes de conférence:]
- il y a un exemple court~\cite{prevenslik2009}
- et deux exemples longs~\cite{coronado2005,yeung2006}.
-
- \item[Livre:]
- il y a un exemple court~\cite{russell2003}
- et trois exemples longs~\cite{kececioglu1991,knuth1998-num,meriam2010}.
-
- \item[Livre, une partie:]
- il y a deux exemples courts~\cite{cormen2001,gaddis2009}
- et trois exemples longs~\cite{kececioglu1991-partie,knuth1998-sort,meriam2010-dist}.
-
- \item[Essai, mémoire et thèse:]
- il y a un exemple de chacun \cite{belanger2009,chafei2009,francoeur2009}.
-
- \item[Rapport technique:]
- il y a un exemple court~\cite{belley2008}
- et un exemple long~\cite{kernighan1991}.
-
+ \item[Article de périodique:]
+ il y a quatre exemples \cite{burke1995,pattamatta2009,roy2009,vasu2009}.
+
+ \item[Articles d'actes de conférence:]
+ il y a un exemple court~\cite{prevenslik2009}
+ et deux exemples longs~\cite{coronado2005,yeung2006}.
+
+ \item[Livre:]
+ il y a un exemple court~\cite{russell2003}
+ et trois exemples longs~\cite{kececioglu1991,knuth1998-num,meriam2010}.
+
+ \item[Livre, une partie:]
+ il y a deux exemples courts~\cite{cormen2001,gaddis2009}
+ et trois exemples longs~\cite{kececioglu1991-partie,knuth1998-sort,meriam2010-dist}.
+
+ \item[Essai, mémoire et thèse:]
+ il y a un exemple de chacun \cite{belanger2009,chafei2009,francoeur2009}.
+
+ \item[Rapport technique:]
+ il y a un exemple court~\cite{belley2008}
+ et un exemple long~\cite{kernighan1991}.
+
\end{description}
\chapter{CONCEPTION}
-Le texte de la conception.
\chapter{RÉALISATION}
-Le texte de la réalisation.
\chapter{TESTS}
-Le texte des tests.
\chapter{ANALYSE}
-Le texte de l'analyse.
\chapter{CONCLUSION}
-Le texte de la conclusion.
\appendix
diff --git a/macros/latex/contrib/udes-genie-these/udes-genie-these.dtx b/macros/latex/contrib/udes-genie-these/udes-genie-these.dtx
index 9b8282eb1b..25fa39a50e 100644
--- a/macros/latex/contrib/udes-genie-these/udes-genie-these.dtx
+++ b/macros/latex/contrib/udes-genie-these/udes-genie-these.dtx
@@ -16,7 +16,7 @@
% can be contacted at Charles-Antoine.Brunet@USherbrooke.ca
%
% This work consists of the files udes-genie-these.dtx and udes-genie-these.ins
-% and the derived files udes-genie-these.cls and udes-genie-protocole.cls.
+% and the derived files udes-genie-these.cls.
% \fi
%
% \iffalse
@@ -26,9 +26,9 @@
%<these|protocole>%%--- IDENTIFICATION ------------------------------------------------------
%<these|protocole>%%-----------------------------------------------------------------------------
%<these|protocole>
-%<these>\ProvidesExplClass{udes-genie-these}{2022/09/19}{3.0}
+%<these>\ProvidesExplClass{udes-genie-these}{2022/11/17}{3.0.1}
%<these> {Université de Sherbrooke, Faculté de génie: classe de document pour thèses, mémoires, DPR et essais}
-%<protocole>\ProvidesExplClass{udes-genie-protocole}{2022/09/19}{3.0}
+%<protocole>\ProvidesExplClass{udes-genie-protocole}{2022/11/17}{3.0.1}
%<protocole> {Université de Sherbrooke, Faculté de génie: classe de document pour le protocole de rédaction}
%<these|protocole>
%<*driver>
@@ -37,7 +37,7 @@
\usepackage{kpfonts}
\usepackage[scaled=0.7881]{DejaVuSansMono}
\usepackage[french]{babel}
-\usepackage{hologo,setspace,parskip,microtype,xspace,tabularx,xcolor,pifont,bookmark}
+\usepackage{setspace,xspace,hologo,bookmark}
\hypersetup{colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue,linktocpage=true}
\setlength{\parskip}{1ex plus0.25ex minus0ex}
\setlength{\parindent}{0em}
@@ -69,11 +69,12 @@
\newcommand{\xelatex}{\hologo{XeLaTeX}\xspace}
\newcommand{\bibtex}{\hologo{BibTeX}\xspace}
\newcommand{\fac}{Faculté de génie\xspace}
+\newcommand{\overleaf}{\textsf{Overleaf}\xspace}
\newcommand{\protocole}{protocole\xspace}
\newcommand{\protocoleit}{\textit{protocole}\xspace}
\newcommand{\protlgu}{\textit{Protocole de rédaction aux études supérieures} de la Faculté de génie de l'Université de Sherbrooke\xspace}
-\newcommand{\package}{\textit{package}\xspace}
-\newcommand{\packages}{\textit{packages}\xspace}
+\newcommand{\package}{package\xspace}
+\newcommand{\packages}{packages\xspace}
\newcommand{\encodage}{UTF-8\xspace}
\newcommand{\enchamp}{\textbf{Nom} & \textbf{Requis} & \textbf{\bibtex}}
\newcommand{\non}{}
@@ -81,11 +82,12 @@
\newcommand{\bipm}{\textit{Bureau international des poids et mesures} (BIPM)\xspace} \newcommand{\siunitx}{\pkg{siunitx}\xspace}
\newcommand{\windows}{\textsf{Windows}\xspace}
\newcommand{\macos}{\textsf{MacOS}\xspace}
-\newcommand{\linux}{\textsf{Linux} (ou \textsf{UNIX})\xspace}
+\newcommand{\linux}{\textsf{Linux}\xspace}
\newcommand{\miktex}{\textsf{MiKTeX}\xspace}
\newcommand{\texlive}{\textsf{TeX Live}\xspace}
\newcommand{\tlmgr}{\textsf{TeX Live Manager}\xspace}
\newcommand{\ctan}{\textsf{CTAN}\xspace}
+\newcommand{\ctanurl}{\url{https://www.ctan.org/pkg/udes-genie-these}}
\addto\captionsfrench
{
@@ -122,17 +124,18 @@
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \changes{v1.0}{2017/01/18}{Première version}
-% \changes{v1.1}{2017/07/18}{Adaptation à la nouvelle version de babel (changements internes).}
-% \changes{v1.2}{2017/12/21}{Adaptation à la nouvelle version de \latexiii (changements internes).}
-% \changes{v2.0}{2018/09/26}{Adaptations pour respecter la nouvelle version du protocole de rédaction.}
-% \changes{v2.0.1}{2020/04/17}{(Aussi connue comme v2.0a) Correction de bugs. Changements internes. Changements à la documentation.}
-% \changes{v2.0.2}{2022/09/15}{Maintenance (LaTeX2e 2020-02-02 à 2022-06-01). Distribution sur CTAN. Adaptations à la documentation.}
-% \changes{v3.0}{2022/09/19}{Support pour \pkg{biblatex}. Ajustements à la documentation.}
+% \changes{v1.0}{2017-01-18}{Première version}
+% \changes{v1.1}{2017-07-18}{Adaptation à la nouvelle version de babel (changements internes).}
+% \changes{v1.2}{2017-12-21}{Adaptation à la nouvelle version de \latexiii (changements internes).}
+% \changes{v2.0}{2018-09-26}{Adaptations pour respecter la nouvelle version du protocole de rédaction.}
+% \changes{v2.0.1}{2020-04-17}{(Aussi connue comme v2.0a) Correction de bugs. Changements internes. Changements à la documentation.}
+% \changes{v2.0.2}{2022-09-15}{Maintenance (LaTeX2e 2020-02-02 à 2022-06-01). Distribution sur CTAN. Adaptations à la documentation.}
+% \changes{v3.0}{2022-09-19}{Support pour \pkg{biblatex}. Ajustements à la documentation.}
+% \changes{v3.0.1}{2022-11-17}{Ajustements à la documentation et à l'exemple. Changements internes pour les formats LaTeX antérieurs à 2022-06-01.}
%
% \GetFileInfo{udes-genie-these.dtx}
%
-% \title{CLASSE DE DOCUMENT \latex POUR LA RÉDACTION AUX ÉTUDES SUPÉRIEURES À LA FACULTÉ DE GÉNIE DE L'UNIVERSITÉ DE SHERBROOKE\\{\large \laclassetitre, version 3.0}}
+% \title{CLASSE DE DOCUMENT \latex POUR LA RÉDACTION AUX ÉTUDES SUPÉRIEURES À LA FACULTÉ DE GÉNIE DE L'UNIVERSITÉ DE SHERBROOKE\\{\large \laclassetitre, version 3.0.1}}
% \author{Charles-Antoine Brunet}
% \date{\today}
% \maketitle
@@ -155,11 +158,34 @@
% Le style de références est maintenant spécifié par le nouveau champ de configuration |style-references| et non plus dans le préambule avec la macro |\bibliographystyle|. Il faut donc retirer une macro du style |\bibliographystyle{AAA}| et la remplacer par un champ de configuration du genre |style-references = AAA|. C'est tout!
%
%\section{Installation et vérification}\label{sec:inst}
-% La classe \laclasse peut être installée comme tout autre \package \latex avec le gestionnaire de \packages de votre distribution, comme avec la console de \miktex ou le \tlmgr. Du même coup, il faut s'assurer d'avoir une version à jour de la distribution \latex, car \laclasse utilise des fonctionnalités qui sont relativement récentes. Si vous optez pour une installation manuelle, la classe \laclasse est disponible sur \href{https://www.ctan.org/pkg/udes-genie-these/}{\ctan} et s'installe en accord avec les procédures spécifiées dans la documentation de votre distribution \latex.
+% La classe \laclasse utilise des fonctionnalités récentes de \latex. Il faut donc vous assurer d'avoir une version à jour de votre distribution \latex (\texlive ou \miktex). Si vous utilisez \overleaf, il faut vous assurer que votre projet compile avec la version la plus récente de \texlive.
%
-% Afin de vérifier que l'installation s'est bien passée, il vous est suggéré de compiler l'exemple distribué avec \laclasse. C'est le meilleur moyen de savoir si votre installation \latex a tout ce qu'il faut pour utiliser \laclasse. L'exemple se trouve dans le même répertoire que la documentation.
+% Selon votre distribution \latex, choisissez l'option qui vous convient.
+% la classe
+% \subsection*{\texlive et \miktex}
+% La classe \laclasse est disponible sur \ctan et fait donc partie des deux distributions. Il y a deux options d'installation: pour une utilisation à \textit{long terme} et pour une utilisation à \textit{court terme}.
%
-% L'exemple distribué avec \laclasse a été compilé avec succès sous \windows, \macos et \linux avec les distributions \miktex et \texlive. Si des erreurs surviennent avec l'exemple, c'est que l'installation de \laclasse n'a pas été faite correctement ou que l'installation de \latex qui est utilisée est incomplète ou désuète.
+% \textbf{Long terme:}\\ Si vous pensez utiliser \laclasse pour les prochaines années, alors vous pouvez installer \laclasse comme tout autre \package \latex: à partir de la console de \miktex ou du \tlmgr. Si vous utilisez \miktex, n'oubliez pas d'installer aussi la documentation, car elle est installée séparément. Une fois la classe \laclasse installée, les mises à jour de \laclasse seront faites en même temps que les autres \packages à chaque fois que vous faites une mise à jour de votre distribution \latex.
+%
+% Notez que la documentation de \laclasse est disponible avec la commande |texdoc|, comme tous les autres \packages \latex. Sur la ligne de commande, il suffit d'utiliser la commande suivante:
+%
+% |texdoc udes-genie-these|
+%
+% L'exemple d'utilisation qui est distribué avec \laclasse est situé dans le même répertoire que la documentation, donc dans un sous-répertoire de votre distribution \latex.
+%
+% \textbf{Court terme:}\\ Si vous pensez utiliser \laclasse à court terme, alors procédez comme avec \overleaf, comme ce qui suit.
+%
+% \subsection*{\overleaf}
+% Pour utiliser \laclasse, vous pouvez récupérer une archive sur l'intranet de la Faculté de génie qui contient tout ce qu'il faut pour compiler un document. L'archive contient aussi la documentation et un exemple d'utilisation. Il suffit d'extraire les fichiers de l'archive dans un répertoire et de compiler avec votre variante favorite de \latex. Cette méthode fonctionne pour \overleaf et aussi toutes les autres distributions \latex.
+%
+% Cette manière de fonctionner fait en sorte que vous êtes responsables de faire les mises à jour, car elles ne se feront pas automatiquement. Cela veut aussi dire qu'au cours du temps, si vous n'êtes pas vigilants, vous pourriez avoir plusieurs projets qui utilisent \laclasse, mais qui utilisent des versions différentes.
+%
+% Dans \overleaf, la classe \laclasse ne fait pas partie des \packages préinstallés et il n'est pas possible non plus de l'installer de manière standard, comme avec les autres distributions \latex (\miktex et \texlive). Il reste deux options: avoir une copie de \laclasse présente dans chaque projet ou utiliser le mécanisme de partage de fichiers entre vos différents projets afin d'éviter d'en avoir plusieurs copies.
+%
+% \subsection*{Vérification}
+% Afin de vérifier que l'installation s'est bien passée, il vous est suggéré de compiler l'exemple distribué avec \laclasse. C'est le meilleur moyen de savoir si vous avez tout ce qu'il faut.
+%
+% L'exemple a été compilé avec succès avec \overleaf et les distributions \miktex et \texlive sous \windows, \macos et \linux. Si des erreurs surviennent avec l'exemple, typiquement, c'est que l'installation de \laclasse n'a pas été faite correctement ou que la distribution de \latex qui est utilisée est incomplète ou désuète.
%
%\section{Contact et support technique}\label{sec:support}
% Une personne est responsable du support de \laclasse. Vous pouvez contacter cette personne uniquement dans les situations suivantes:
@@ -346,35 +372,32 @@
%%-----------------------------------------------------------------------------
%%--- OPTIONS DE CLASSE ---------------------------------------------------
%%-----------------------------------------------------------------------------
-\DeclareKeys {
+\keys_define:nn { udes-genie-these }
+{
biblatex .code:n = {\tl_gset_eq:NN \g_@@_references_engin_tl \c_@@_references_biblatex_tl},
- biblatex .usage:n = load,
bibtex .code:n = {\tl_gset_eq:NN \g_@@_references_engin_tl \c_@@_references_bibtex_tl},
- bibtex .usage:n = load,
livre .code:n = {
\PassOptionsToClass{twoside,openright}{book}
\PassOptionsToPackage{twoside=true}{geometry}
\tl_gset_eq:NN \g_@@_format_tl \c_@@_format_livre_tl
},
- livre .usage:n = load,
simple .code:n = {
\PassOptionsToClass{oneside,openany}{book}
\PassOptionsToPackage{twoside=false}{geometry}
\tl_gset_eq:NN \g_@@_format_tl \c_@@_format_simple_tl
},
- simple .usage:n = load,
unknown .code:n = {\PassOptionsToClass{\CurrentOption}{book}},
}
-\SetKeys{livre}
+\keys_set:nn { udes-genie-these } {livre}
\IfFormatAtLeastTF {2022-06-01}
{
- \ProcessKeyOptions
+ \ProcessKeyOptions[udes-genie-these]
}
{
\RequirePackage {l3keys2e}
- \ProcessKeysOptions
+ \ProcessKeysOptions{udes-genie-these}
}
%%-----------------------------------------------------------------------------
@@ -411,6 +434,7 @@
% fichier-symboles = {symboles},
% fichier-acronymes = {acronymes},
% fichiers-references = {journaux,conferences},
+% style-references = plain,
% }
%\end{verbatim}
%\end{syntax}
diff --git a/macros/latex/contrib/udes-genie-these/udes-genie-these.ins b/macros/latex/contrib/udes-genie-these/udes-genie-these.ins
index 985c4e5698..2975ed180c 100644
--- a/macros/latex/contrib/udes-genie-these/udes-genie-these.ins
+++ b/macros/latex/contrib/udes-genie-these/udes-genie-these.ins
@@ -38,7 +38,7 @@ The Current Maintainer of this work is Charles-Antoine Brunet and
can be contacted at Charles-Antoine.Brunet@USherbrooke.ca
This work consists of the files udes-genie-these.dtx and udes-genie-these.ins
-and the derived files udes-genie-these.cls and udes-genie-protocole.cls.
+and the derived files udes-genie-these.cls.
\endpreamble
diff --git a/macros/latex/contrib/udes-genie-these/udes-genie-these.pdf b/macros/latex/contrib/udes-genie-these/udes-genie-these.pdf
index 2e39e9516a..e834a41846 100644
--- a/macros/latex/contrib/udes-genie-these/udes-genie-these.pdf
+++ b/macros/latex/contrib/udes-genie-these/udes-genie-these.pdf
Binary files differ
diff --git a/macros/luatex/generic/luakeys/README.md b/macros/luatex/generic/luakeys/README.md
index 2bff44088b..bd30edb066 100644
--- a/macros/luatex/generic/luakeys/README.md
+++ b/macros/luatex/generic/luakeys/README.md
@@ -78,6 +78,9 @@ local defs = {
```lua
local opts = {
+ -- Configure the delimiter that assigns a value to a key.
+ assignment_operator = '=',
+
-- Automatically convert dimensions into scaled points (1cm -> 1864679).
convert_dimensions = false,
@@ -97,6 +100,12 @@ local opts = {
-- lower, snake, upper
format_keys = { 'snake' },
+ -- Configure the delimiter that marks the beginning of a group.
+ group_begin = '{',
+
+ -- Configure the delimiter that marks the end of a group.
+ group_end = '}',
+
-- Listed in the order of execution
hooks = {
kv_string = function(kv_string)
@@ -131,6 +140,9 @@ local opts = {
end,
},
+ -- Configure the delimiter that separates list items from each other.
+ list_separator = ',',
+
-- If true, naked keys are converted to values:
-- { one = true, two = true, three = true } -> { 'one', 'two', 'three' }
naked_as_value = false,
@@ -138,6 +150,12 @@ local opts = {
-- Throw no error if there are unknown keys.
no_error = false,
+ -- Configure the delimiter that marks the beginning of a string.
+ quotation_begin = '"',
+
+ -- Configure the delimiter that marks the end of a string.
+ quotation_end = '"',
+
-- { key = { 'value' } } -> { key = 'value' }
unpack = false,
}
diff --git a/macros/luatex/generic/luakeys/luakeys-debug.sty b/macros/luatex/generic/luakeys/luakeys-debug.sty
index 1a26a66450..5f8cc808f5 100644
--- a/macros/luatex/generic/luakeys/luakeys-debug.sty
+++ b/macros/luatex/generic/luakeys/luakeys-debug.sty
@@ -17,6 +17,6 @@
% luakeys-debug.sty and luakeys-debug.tex.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luakeys-debug}[2022/07/06 0.7.0 Debug package for luakeys.]
+\ProvidesPackage{luakeys-debug}[2022/11/17 0.8.0 Debug package for luakeys.]
\input luakeys-debug.tex
diff --git a/macros/luatex/generic/luakeys/luakeys-doc.pdf b/macros/luatex/generic/luakeys/luakeys-doc.pdf
index ee0f3411f6..04e307a84d 100644
--- a/macros/luatex/generic/luakeys/luakeys-doc.pdf
+++ b/macros/luatex/generic/luakeys/luakeys-doc.pdf
Binary files differ
diff --git a/macros/luatex/generic/luakeys/luakeys-doc.tex b/macros/luatex/generic/luakeys/luakeys-doc.tex
index dd6fcc0973..f7d2940f66 100644
--- a/macros/luatex/generic/luakeys/luakeys-doc.tex
+++ b/macros/luatex/generic/luakeys/luakeys-doc.tex
@@ -58,7 +58,7 @@ The default value of the option “\texttt{#1}” is:
\href{https://github.com/Josef-Friedrich/luakeys}
{github.com/Josef-Friedrich/luakeys}%
}
-\date{0.7.0 from 2022/07/06}
+\date{0.8.0 from 2022/11/17}
\maketitle
@@ -357,7 +357,7 @@ The \lua{parse} function can be called with an options table. This
options are supported: \catcode`_=12
\directlua{luakeys.print_names('opts')}
-\InputLua[firstline=5,lastline=69]{opts/all-opts.lua}
+\InputLua[firstline=5,lastline=86]{opts/all-opts.lua}
\noindent
The options can also be set globally using the exported table
@@ -371,6 +371,32 @@ The options can also be set globally using the exported table
%
%%
+\subsubsection{Option “\texttt{assignment_operator}”}
+\label{option:assignment-operator}
+\label{options-delimiter}
+
+The option \lua{assignment_operator} configures the delimiter that
+assigns a value to a key. The default value of this option is
+\texttt{"="}.
+
+The code example below demonstrates all six delimiter related options.
+
+\InputLua[firstline=4,lastline=13]{opts/delimiters.lua}
+
+\begin{tabular}{ll}
+\textbf{Delimiter options} & \textbf{Section} \\
+assignment_operator & \ref{option:assignment-operator}\\
+group_begin & \ref{option:group-begin}\\
+group_end & \ref{option:group-end}\\
+list_separator & \ref{option:list-separator}\\
+quotation_begin & \ref{option:quotation-begin}\\
+quotation_end & \ref{option:quotation-end}\\
+\end{tabular}
+
+%%
+%
+%%
+
\subsubsection{Option “\texttt{convert_dimensions}”}
% Wenn Sie die Option \lua{convert_dimensions} auf \lua{true} setzen,
@@ -515,26 +541,76 @@ we can write ...
\subsubsection{Option “\texttt{format_keys}”}
+% Mit Hilfe der Option \lua{format_keys} können die Schlüssel formatiert
+% werden.
+With the help of the option \lua{format_keys} the keys can be formatted.
+% Die Werte dieser Option müssen in einer Tabelle angegeben werden.
+The values of this option must be specified in a table.
+
\begin{description}
-\item[lower] \strut
+\item[lower]
+
+% Um alle Schlüssel in \emph{Kleinbuchstaben} umzuwandeln, geben sie in
+% der Optionentabelle \lua{lower} an.
+To convert all keys to \emph{lowercase}, specify \lua{lower} in the
+options table.
\InputLua[firstline=4,lastline=5]{opts/format-keys.lua}
-\item[snake] \strut
+\item[snake]
+
+% Um alle Schlüssel in \emph{snake case} (Die Wörter sind durch
+% Unterstriche getrennt) umzuwandeln, geben sie in der Optionentabelle
+% \lua{snake} an.
+To make all keys \emph{snake case} (The words are separated by
+underscores), specify \lua{snake} in the options
+table.
\InputLua[firstline=11,lastline=12]{opts/format-keys.lua}
-\item[upper] \strut
+\item[upper]
+
+% Um alle Schlüssel in \emph{Grossbuchstaben} umzuwandeln, geben sie in der
+% Optionentabelle \lua{upper} an.
+To convert all keys to \emph{uppercase}, specify \lua{upper} in the
+options table.
\InputLua[firstline=18,lastline=19]{opts/format-keys.lua}
\end{description}
+% Sie können auch mehrere Formatierungsarten kombinieren.
+You can also combine several types of formatting.
+
+\InputLua[firstline=25,lastline=26]{opts/format-keys.lua}
+
\DefaultOptDescription{format_keys}
%%
%
%%
+\subsubsection{Option “\texttt{group_begin}”}
+\label{option:group-begin}
+
+The option \lua{group_begin} configures the delimiter that marks the
+beginning of a group. The default value of this option is \texttt{"\{"}.
+A code example can be found in section \ref{options-delimiter}.
+
+%%
+%
+%%
+
+\subsubsection{Option “\texttt{group_end}”}
+\label{option:group-end}
+
+The option \lua{group_end} configures the delimiter that marks the end
+of a group. The default value of this option is \texttt{"\}"}. A code
+example can be found in section \ref{options-delimiter}.
+
+%%
+%
+%%
+
\subsubsection{Option “\texttt{hooks}”}
% Die folgenden Hooks bzw. Callback-Funktionen ermöglichen es in den
@@ -623,6 +699,18 @@ as a parameter.
%
%%
+\subsubsection{Option “\texttt{list_separator}”}
+\label{option:list-separator}
+
+The option \lua{list_separator} configures the delimiter that separates
+list items from each other. The default value of this option is
+\texttt{","}. A code example can be found in section
+\ref{options-delimiter}.
+
+%%
+%
+%%
+
\subsubsection{Option “\texttt{naked_as_value}”}
% Mit Hilfe der Option \lua{naked_as_value} werden nackte Schlüssel
@@ -665,13 +753,37 @@ If we set the option \lua{no_error} to \lua{true}:
%
%%
+\subsubsection{Option “\texttt{quotation_begin}”}
+\label{option:quotation-begin}
+
+The option \lua{quotation_begin} configures the delimiter that marks the
+beginning of a string. The default value of this option is
+\texttt{'"'} (double quotes). A code example can be found in section
+\ref{options-delimiter}.
+
+%%
+%
+%%
+
+\subsubsection{Option “\texttt{quotation_end}”}
+\label{option:quotation-end}
+
+The option \lua{quotation_end} configures the delimiter that marks the
+end of a string. The default value of this option is \texttt{'"'}
+(double quotes). A code example can be found in section
+\ref{options-delimiter}.
+
+%%
+%
+%%
+
\subsubsection{Option “\texttt{unpack}”}
% Mit Hilfe der Option \lua{unpack} werden alle Tabellen, die nur aus
% einem einzigen nackten Schlüssel bzw. einen einzigen alleinstehenden
% Wert bestehen, aufgelöst.
With the help of the option \lua{unpack}, all tables that consist of
-only one a single naked key or a single standalone value are unpacked.
+only a single naked key or a single standalone value are unpacked.
\InputLua[firstline=4,lastline=5]{opts/unpack.lua}
@@ -1816,6 +1928,12 @@ An example of how to use the command in \LaTeX:
that means scan for tokens that are enclosed in square brackets
* extend and improve documentation
}
+\changes{0.8.0}{2022/11/17}{
+* Add 6 new options to change the delimiters: “assignment_operator”,
+ “group_begin”, “group_end”, “list_separator”, “quotation_begin”,
+ “quotation_end”.
+* Extend the documentation about the option “format_keys”.
+}
\pagebreak
\PrintChanges
\pagebreak
diff --git a/macros/luatex/generic/luakeys/luakeys.lua b/macros/luatex/generic/luakeys/luakeys.lua
index 3221fc3efd..8b065289de 100644
--- a/macros/luatex/generic/luakeys/luakeys.lua
+++ b/macros/luatex/generic/luakeys/luakeys.lua
@@ -172,15 +172,21 @@ local utils = {
local namespace = {
opts = {
+ assignment_operator = '=',
convert_dimensions = false,
debug = false,
default = true,
defaults = false,
defs = false,
format_keys = false,
+ group_begin = '{',
+ group_end = '}',
hooks = {},
+ list_separator = ',',
naked_as_value = false,
no_error = false,
+ quotation_begin = '"',
+ quotation_end = '"',
unpack = true,
},
@@ -224,6 +230,38 @@ local function throw_error(message)
end
end
+--- Normalize the parse options.
+---
+---@param opts? table # Options in a raw format. The table may be empty or some keys are not set.
+---
+---@return table
+local function normalize_opts(opts)
+ if type(opts) ~= 'table' then
+ opts = {}
+ end
+ for key, _ in pairs(opts) do
+ if namespace.opts[key] == nil then
+ throw_error('Unknown parse option: ' .. tostring(key) .. '!')
+ end
+ end
+ local old_opts = opts
+ opts = {}
+ for name, _ in pairs(namespace.opts) do
+ if old_opts[name] ~= nil then
+ opts[name] = old_opts[name]
+ else
+ opts[name] = default_options[name]
+ end
+ end
+
+ for hook in pairs(opts.hooks) do
+ if namespace.hooks[hook] == nil then
+ throw_error('Unknown hook: ' .. tostring(hook) .. '!')
+ end
+ end
+ return opts
+end
+
local l3_code_cctab = 10
--- Convert back to strings
@@ -375,13 +413,12 @@ end
--- * [TUGboat article: Parsing complex data formats in LuaTEX with LPEG](https://tug.or-g/TUGboat/tb40-2/tb125menke-Patterndf)
---
---@param initial_rule string # The name of the first rule of the grammar table passed to the `lpeg.P(attern)` function (e. g. `list`, `number`).
----@param convert_dimensions? boolean # Whether the dimensions should be converted to scaled points (by default `false`).
+---@param opts? table # Whether the dimensions should be converted to scaled points (by default `false`).
---
---@return userdata # The parser.
-local function generate_parser(initial_rule,
- convert_dimensions)
- if convert_dimensions == nil then
- convert_dimensions = false
+local function generate_parser(initial_rule, opts)
+ if type(opts) ~= 'table' then
+ opts = normalize_opts(opts)
end
local Variable = lpeg.V
@@ -413,7 +450,7 @@ local function generate_parser(initial_rule,
input = input:gsub('%s+', '')
-- Convert the unit string into lowercase.
input = input:lower()
- if convert_dimensions then
+ if opts.convert_dimensions then
return tex.sp(input)
else
return input
@@ -458,7 +495,7 @@ local function generate_parser(initial_rule,
-- '{' list '}'
list_container =
- ws('{') * Variable('list') * ws('}'),
+ ws(opts.group_begin) * Variable('list') * ws(opts.group_end),
-- ( list_container / key_value_pair / value ) ','?
list_item =
@@ -466,11 +503,11 @@ local function generate_parser(initial_rule,
Variable('list_container') +
Variable('key_value_pair') +
Variable('value')
- ) * ws(',')^-1,
+ ) * ws(opts.list_separator)^-1,
-- key '=' (list_container / value)
key_value_pair =
- (Variable('key') * ws('=')) * (Variable('list_container') + Variable('value')),
+ (Variable('key') * ws(opts.assignment_operator)) * (Variable('list_container') + Variable('value')),
-- number / string_quoted / string_unquoted
key =
@@ -555,9 +592,9 @@ local function generate_parser(initial_rule,
-- '"' ('\"' / !'"')* '"'
string_quoted =
- white_space^0 * Pattern('"') *
- CaptureSimple((Pattern('\\"') + 1 - Pattern('"'))^0) *
- Pattern('"') * white_space^0,
+ white_space^0 * Pattern(opts.quotation_begin) *
+ CaptureSimple((Pattern('\\' .. opts.quotation_end) + 1 - Pattern(opts.quotation_end))^0) *
+ Pattern(opts.quotation_end) * white_space^0,
string_unquoted =
white_space^0 *
@@ -566,7 +603,11 @@ local function generate_parser(initial_rule,
(Set(' \t')^1 * Variable('word_unquoted')^1)^0) *
white_space^0,
- word_unquoted = (1 - white_space - Set('{},='))^1
+ word_unquoted = (1 - white_space - Set(
+ opts.group_begin ..
+ opts.group_end ..
+ opts.assignment_operator ..
+ opts.list_separator))^1
})
-- LuaFormatter on
end
@@ -614,7 +655,7 @@ local is = {
if type(value) == 'boolean' then
return true
end
- local parser = generate_parser('boolean_only', false)
+ local parser = generate_parser('boolean_only')
local result = parser:match(tostring(value))
return result ~= nil
end,
@@ -623,7 +664,7 @@ local is = {
if value == nil then
return false
end
- local parser = generate_parser('dimension_only', false)
+ local parser = generate_parser('dimension_only')
local result = parser:match(tostring(value))
return result ~= nil
end,
@@ -643,7 +684,7 @@ local is = {
if type(value) == 'number' then
return true
end
- local parser = generate_parser('number_only', false)
+ local parser = generate_parser('number_only')
local result = parser:match(tostring(value))
return result ~= nil
end,
@@ -778,7 +819,10 @@ local function apply_definitions(defs,
-- integer
elseif def.data_type == 'integer' then
if is.number(value) then
- converted = math.floor(tonumber(value))
+ local n = tonumber(value)
+ if type(n) == 'number' and n ~= nil then
+ converted = math.floor(n)
+ end
end
-- number
elseif def.data_type == 'number' then
@@ -1038,7 +1082,7 @@ end
--- Parse a LaTeX/TeX style key-value string into a Lua table.
---
---@param kv_string string # A string in the TeX/LaTeX style key-value format as described above.
----@param opts table # A table containing the settings:
+---@param opts? table # A table containing the settings:
--- `convert_dimensions`, `unpack`, `naked_as_value`, `converter`,
--- `debug`, `preprocess`, `postprocess`.
--
@@ -1047,48 +1091,16 @@ end
---@return table raw # The unprocessed, raw result of the LPeg parser.
local function parse(kv_string, opts)
if kv_string == nil then
- return {}
+ return {}, {}, {}
end
- --- Normalize the parse options.
- ---
- ---@param opts table # Options in a raw format. The table may be empty or some keys are not set.
- ---
- ---@return table
- local function normalize_opts(opts)
- if type(opts) ~= 'table' then
- opts = {}
- end
- for key, _ in pairs(opts) do
- if namespace.opts[key] == nil then
- throw_error('Unknown parse option: ' .. tostring(key) .. '!')
- end
- end
- local old_opts = opts
- opts = {}
- for name, _ in pairs(namespace.opts) do
- if old_opts[name] ~= nil then
- opts[name] = old_opts[name]
- else
- opts[name] = default_options[name]
- end
- end
-
- for hook in pairs(opts.hooks) do
- if namespace.hooks[hook] == nil then
- throw_error('Unknown hook: ' .. tostring(hook) .. '!')
- end
- end
- return opts
- end
opts = normalize_opts(opts)
if type(opts.hooks.kv_string) == 'function' then
kv_string = opts.hooks.kv_string(kv_string)
end
- local result = generate_parser('list', opts.convert_dimensions):match(
- kv_string)
+ local result = generate_parser('list', opts):match(kv_string)
local raw = clone_table(result)
local function apply_hook(name)
@@ -1218,7 +1230,7 @@ local result_store = {}
-- @section
local export = {
- version = { 0, 7, 0 },
+ version = { 0, 8, 0 },
namespace = namespace,
diff --git a/macros/luatex/generic/luakeys/luakeys.sty b/macros/luatex/generic/luakeys/luakeys.sty
index d0917f1d9d..68c3892ee4 100644
--- a/macros/luatex/generic/luakeys/luakeys.sty
+++ b/macros/luatex/generic/luakeys/luakeys.sty
@@ -17,5 +17,5 @@
% luakeys-debug.sty and luakeys-debug.tex.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luakeys}[2022/07/06 0.7.0 Parsing key-value options using Lua.]
+\ProvidesPackage{luakeys}[2022/11/17 0.8.0 Parsing key-value options using Lua.]
\directlua{luakeys = require('luakeys')}
diff --git a/macros/luatex/latex/luacas/README.md b/macros/luatex/latex/luacas/README.md
index 8e757dfea9..0d04c2ba04 100644
--- a/macros/luatex/latex/luacas/README.md
+++ b/macros/luatex/latex/luacas/README.md
@@ -10,10 +10,21 @@ The Lua CAS itself can be downloaded or cloned from [https://github.com/cochraef
The package manager for your local TeX distribution ought to work just fine. Alternatively, download luacas.tds.zip and unzip the file in the root of one of your TDS trees. You may need to update some filename database after this (this may vary depending on your TeX distribution).
+To run the LuaCAS tests, navigate to the luacas directory in either repository, and run the command
+`lua test\main.lua`. You will need Lua version 5.3 or later.
+
+# Documentation
+
+Documentation for any version is included with the release.
+
# Authors
This package is authored and maintained by Evan Cochrane and Timothy All.
+# Bug Reporting
+
+Bug reports with the documentation or bugs related to the LaTeX end should go in this repository, while bug reports related to the CAS should go in [https://github.com/cochraef/LuaCAS](https://github.com/cochraef/LuaCAS). There is no required format for bugs, but it should be clear how to replicate the bug and what you think the intended functionality should be.
+
# License
Permission is granted to copy, distribute and/or modify this
diff --git a/macros/luatex/latex/luacas/doc/appendix/luacas.dat b/macros/luatex/latex/luacas/doc/appendix/luacas.dat
index 60866bae05..7f2efd0a10 100644
--- a/macros/luatex/latex/luacas/doc/appendix/luacas.dat
+++ b/macros/luatex/latex/luacas/doc/appendix/luacas.dat
@@ -11,7 +11,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luacas}
- [2022/05/07 v1.0 CAS written in Lua for LaTeX]
+ [2022/11/15 v1.0.1 CAS written in Lua for LaTeX]
\RequirePackage{iftex}
\ifluatex
diff --git a/macros/luatex/latex/luacas/doc/appendix/versionhistory.tex b/macros/luatex/latex/luacas/doc/appendix/versionhistory.tex
new file mode 100644
index 0000000000..26754b3c7d
--- /dev/null
+++ b/macros/luatex/latex/luacas/doc/appendix/versionhistory.tex
@@ -0,0 +1,22 @@
+\documentclass{article}
+
+\usepackage[margin=1in]{geometry}
+\usepackage[shortlabels]{enumitem}
+
+\begin{document}
+
+\section{Version History}
+
+\subsection*{v1.0.1}
+
+\begin{itemize}
+ \item Update CAS file names for \TeX{}Live
+\end{itemize}
+
+\subsection*{v1.0.0}
+
+\begin{itemize}
+ \item Intial release
+\end{itemize}
+
+\end{document} \ No newline at end of file
diff --git a/macros/luatex/latex/luacas/doc/luacas.pdf b/macros/luatex/latex/luacas/doc/luacas.pdf
index d3ea07adf3..667791efb6 100644
--- a/macros/luatex/latex/luacas/doc/luacas.pdf
+++ b/macros/luatex/latex/luacas/doc/luacas.pdf
Binary files differ
diff --git a/macros/luatex/latex/luacas/doc/luacas.tex b/macros/luatex/latex/luacas/doc/luacas.tex
index b5aad9c9f9..3d0c51a343 100644
--- a/macros/luatex/latex/luacas/doc/luacas.tex
+++ b/macros/luatex/latex/luacas/doc/luacas.tex
@@ -160,9 +160,9 @@ style=numeric,
\begin{document}
\title{The {\ttfamily luacas} package}
\author{Evan Cochrane\thanks{\href{mailto:cochraef@rose-hulman.edu}{\ttfamily cochraef@rose-hulman.edu}} , Timothy All\thanks{\href{mailto:timothy.all@rose-hulman.edu}{\ttfamily timothy.all@rose-hulman.edu}}}
-\date{v1.0.0 \\ \today}
+\date{v1.0.1 \\ \today}
-\maketitle
+\maketitle
\begin{abstract}
The {\ttfamily luacas} package is a portable Computer Algebra System capable of symbolic computation, written entirely in Lua, designed for use in Lua\LaTeX{}.
@@ -186,9 +186,9 @@ style=numeric,
\include{reference/ref_core/ref_core.tex}
-\include{reference/ref_core/ref_core_classes/ref_core_classes.tex}
+\include{reference/ref_core/ref_core_classes/ref_core_classes.tex}
-\include{reference/ref_core/ref_core_methods/ref_core_methods.tex}
+\include{reference/ref_core/ref_core_methods/ref_core_methods.tex}
\include{reference/ref_algebra/ref_algebra.tex}
@@ -206,6 +206,8 @@ style=numeric,
\include{appendix/latexcode.tex}
+\include{appendix/versionhistory.tex}
+
\newpage
\printindex
diff --git a/macros/luatex/latex/luacas/tex/_lib/inspect.lua b/macros/luatex/latex/luacas/tex/_lib/luacas-inspect.lua
index dedd91f248..dedd91f248 100644
--- a/macros/luatex/latex/luacas/tex/_lib/inspect.lua
+++ b/macros/luatex/latex/luacas/tex/_lib/luacas-inspect.lua
diff --git a/macros/luatex/latex/luacas/tex/_lib/pepperfish.lua b/macros/luatex/latex/luacas/tex/_lib/luacas-pepperfish.lua
index 4717543c4b..4717543c4b 100644
--- a/macros/luatex/latex/luacas/tex/_lib/pepperfish.lua
+++ b/macros/luatex/latex/luacas/tex/_lib/luacas-pepperfish.lua
diff --git a/macros/luatex/latex/luacas/tex/_lib/table.lua b/macros/luatex/latex/luacas/tex/_lib/luacas-table.lua
index 70495d1479..70495d1479 100644
--- a/macros/luatex/latex/luacas/tex/_lib/table.lua
+++ b/macros/luatex/latex/luacas/tex/_lib/luacas-table.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/_init.lua b/macros/luatex/latex/luacas/tex/algebra/_init.lua
deleted file mode 100644
index 0a9b114cb9..0000000000
--- a/macros/luatex/latex/luacas/tex/algebra/_init.lua
+++ /dev/null
@@ -1,24 +0,0 @@
--- Loads algebra files in the correct order.
-require("_lib.table")
-
-require("core._init")
-
-require("algebra.ring")
-require("algebra.euclideandomain")
-require("algebra.field")
-require("algebra.polynomialring")
-require("algebra.integer")
-require("algebra.rational")
-require("algebra.integerquotientring")
-require("algebra.sqrtexpression")
-
-require("algebra.absexpression")
-require("algebra.equation")
-require("algebra.factorialexpression")
-require("algebra.logarithm")
-require("algebra.rootexpression")
-require("algebra.trigexpression")
-
-require("algebra.polynomialring.berlekampfactoring")
-require("algebra.polynomialring.zassenhausfactoring")
-require("algebra.polynomialring.decomposition") \ No newline at end of file
diff --git a/macros/luatex/latex/luacas/tex/algebra/absexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua
index 2bf0b6a7ef..2bf0b6a7ef 100644
--- a/macros/luatex/latex/luacas/tex/algebra/absexpression.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-absexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/luacas-algebra_init.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-algebra_init.lua
new file mode 100644
index 0000000000..ac37c56a5b
--- /dev/null
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-algebra_init.lua
@@ -0,0 +1,24 @@
+-- Loads algebra files in the correct order.
+require("_lib.luacas-table")
+
+require("core.luacas-core_init")
+
+require("algebra.luacas-ring")
+require("algebra.luacas-euclideandomain")
+require("algebra.luacas-field")
+require("algebra.luacas-polynomialring")
+require("algebra.luacas-integer")
+require("algebra.luacas-rational")
+require("algebra.luacas-integerquotientring")
+require("algebra.luacas-sqrtexpression")
+
+require("algebra.luacas-absexpression")
+require("algebra.luacas-equation")
+require("algebra.luacas-factorialexpression")
+require("algebra.luacas-logarithm")
+require("algebra.luacas-rootexpression")
+require("algebra.luacas-trigexpression")
+
+require("algebra.polynomialring.luacas-berlekampfactoring")
+require("algebra.polynomialring.luacas-zassenhausfactoring")
+require("algebra.polynomialring.luacas-decomposition") \ No newline at end of file
diff --git a/macros/luatex/latex/luacas/tex/algebra/equation.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua
index 4e81d5ca95..4e81d5ca95 100644
--- a/macros/luatex/latex/luacas/tex/algebra/equation.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-equation.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/euclideandomain.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua
index fab2c5c7c2..fab2c5c7c2 100644
--- a/macros/luatex/latex/luacas/tex/algebra/euclideandomain.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-euclideandomain.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/factorialexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua
index 1c5b824ff7..1c5b824ff7 100644
--- a/macros/luatex/latex/luacas/tex/algebra/factorialexpression.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-factorialexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/field.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-field.lua
index c845e94c55..c845e94c55 100644
--- a/macros/luatex/latex/luacas/tex/algebra/field.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-field.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/integer.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua
index a3c54f498c..a3c54f498c 100644
--- a/macros/luatex/latex/luacas/tex/algebra/integer.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-integer.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/integerquotientring.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua
index 4c2188c9e5..4c2188c9e5 100644
--- a/macros/luatex/latex/luacas/tex/algebra/integerquotientring.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-integerquotientring.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/logarithm.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua
index 07a9db84d1..07a9db84d1 100644
--- a/macros/luatex/latex/luacas/tex/algebra/logarithm.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-logarithm.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/polynomialring.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua
index 568c21c921..568c21c921 100644
--- a/macros/luatex/latex/luacas/tex/algebra/polynomialring.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-polynomialring.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/rational.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua
index 811909a948..811909a948 100644
--- a/macros/luatex/latex/luacas/tex/algebra/rational.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-rational.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/ring.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua
index 4903b9c912..4903b9c912 100644
--- a/macros/luatex/latex/luacas/tex/algebra/ring.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-ring.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/rootexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua
index a66182579a..a66182579a 100644
--- a/macros/luatex/latex/luacas/tex/algebra/rootexpression.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-rootexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/sqrtexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua
index bc96f4e1d8..bc96f4e1d8 100644
--- a/macros/luatex/latex/luacas/tex/algebra/sqrtexpression.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-sqrtexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/trigexpression.lua b/macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua
index 307bfe1737..307bfe1737 100644
--- a/macros/luatex/latex/luacas/tex/algebra/trigexpression.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/luacas-trigexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/polynomialring/berlekampfactoring.lua b/macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-berlekampfactoring.lua
index feabb61a3f..feabb61a3f 100644
--- a/macros/luatex/latex/luacas/tex/algebra/polynomialring/berlekampfactoring.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-berlekampfactoring.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/polynomialring/decomposition.lua b/macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-decomposition.lua
index 84f2af1efc..84f2af1efc 100644
--- a/macros/luatex/latex/luacas/tex/algebra/polynomialring/decomposition.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-decomposition.lua
diff --git a/macros/luatex/latex/luacas/tex/algebra/polynomialring/zassenhausfactoring.lua b/macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-zassenhausfactoring.lua
index be19298e64..be19298e64 100644
--- a/macros/luatex/latex/luacas/tex/algebra/polynomialring/zassenhausfactoring.lua
+++ b/macros/luatex/latex/luacas/tex/algebra/polynomialring/luacas-zassenhausfactoring.lua
diff --git a/macros/luatex/latex/luacas/tex/calculus/_init.lua b/macros/luatex/latex/luacas/tex/calculus/_init.lua
deleted file mode 100644
index 59ba1bbcc8..0000000000
--- a/macros/luatex/latex/luacas/tex/calculus/_init.lua
+++ /dev/null
@@ -1,6 +0,0 @@
--- Loads calculus files in the correct order.
-require("algebra._init")
-
-require("calculus.derivativeexpression")
-require("calculus.integralexpression")
-require("calculus.diffexpression")
diff --git a/macros/luatex/latex/luacas/tex/calculus/luacas-calculus_init.lua b/macros/luatex/latex/luacas/tex/calculus/luacas-calculus_init.lua
new file mode 100644
index 0000000000..89b38b650e
--- /dev/null
+++ b/macros/luatex/latex/luacas/tex/calculus/luacas-calculus_init.lua
@@ -0,0 +1,6 @@
+-- Loads calculus files in the correct order.
+require("algebra.luacas-algebra_init")
+
+require("calculus.luacas-derivativeexpression")
+require("calculus.luacas-integralexpression")
+require("calculus.luacas-diffexpression")
diff --git a/macros/luatex/latex/luacas/tex/calculus/derivativeexpression.lua b/macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua
index b757759c4c..b757759c4c 100644
--- a/macros/luatex/latex/luacas/tex/calculus/derivativeexpression.lua
+++ b/macros/luatex/latex/luacas/tex/calculus/luacas-derivativeexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/calculus/diffexpression.lua b/macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua
index df1dc90f33..df1dc90f33 100644
--- a/macros/luatex/latex/luacas/tex/calculus/diffexpression.lua
+++ b/macros/luatex/latex/luacas/tex/calculus/luacas-diffexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/calculus/integralexpression.lua b/macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua
index 5267127264..5267127264 100644
--- a/macros/luatex/latex/luacas/tex/calculus/integralexpression.lua
+++ b/macros/luatex/latex/luacas/tex/calculus/luacas-integralexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/core/_init.lua b/macros/luatex/latex/luacas/tex/core/_init.lua
deleted file mode 100644
index cfd640a214..0000000000
--- a/macros/luatex/latex/luacas/tex/core/_init.lua
+++ /dev/null
@@ -1,16 +0,0 @@
--- Loads core files in the correct order.
-
-require("core.expression")
-require("core.atomicexpression")
-require("core.compoundexpression")
-require("core.constantexpression")
-require("core.symbolexpression")
-require("core.binaryoperation")
-require("core.functionexpression")
-
-
-require("core.binaryoperation.power")
-require("core.binaryoperation.product")
-require("core.binaryoperation.sum")
-require("core.binaryoperation.quotient")
-require("core.binaryoperation.difference") \ No newline at end of file
diff --git a/macros/luatex/latex/luacas/tex/core/binaryoperation/difference.lua b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-difference.lua
index 2cc56b6600..2cc56b6600 100644
--- a/macros/luatex/latex/luacas/tex/core/binaryoperation/difference.lua
+++ b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-difference.lua
diff --git a/macros/luatex/latex/luacas/tex/core/binaryoperation/power.lua b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-power.lua
index 35df72c440..35df72c440 100644
--- a/macros/luatex/latex/luacas/tex/core/binaryoperation/power.lua
+++ b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-power.lua
diff --git a/macros/luatex/latex/luacas/tex/core/binaryoperation/product.lua b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-product.lua
index b104cb5e8a..b104cb5e8a 100644
--- a/macros/luatex/latex/luacas/tex/core/binaryoperation/product.lua
+++ b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-product.lua
diff --git a/macros/luatex/latex/luacas/tex/core/binaryoperation/quotient.lua b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-quotient.lua
index 4dac489bf5..4dac489bf5 100644
--- a/macros/luatex/latex/luacas/tex/core/binaryoperation/quotient.lua
+++ b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-quotient.lua
diff --git a/macros/luatex/latex/luacas/tex/core/binaryoperation/sum.lua b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-sum.lua
index 5bb204066f..5bb204066f 100644
--- a/macros/luatex/latex/luacas/tex/core/binaryoperation/sum.lua
+++ b/macros/luatex/latex/luacas/tex/core/binaryoperation/luacas-sum.lua
diff --git a/macros/luatex/latex/luacas/tex/core/atomicexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua
index 6cc6e4f58e..6cc6e4f58e 100644
--- a/macros/luatex/latex/luacas/tex/core/atomicexpression.lua
+++ b/macros/luatex/latex/luacas/tex/core/luacas-atomicexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/core/binaryoperation.lua b/macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua
index 708a6c1540..708a6c1540 100644
--- a/macros/luatex/latex/luacas/tex/core/binaryoperation.lua
+++ b/macros/luatex/latex/luacas/tex/core/luacas-binaryoperation.lua
diff --git a/macros/luatex/latex/luacas/tex/core/compoundexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua
index 792c36cfc2..792c36cfc2 100644
--- a/macros/luatex/latex/luacas/tex/core/compoundexpression.lua
+++ b/macros/luatex/latex/luacas/tex/core/luacas-compoundexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/core/constantexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua
index 0f91a037a9..0f91a037a9 100644
--- a/macros/luatex/latex/luacas/tex/core/constantexpression.lua
+++ b/macros/luatex/latex/luacas/tex/core/luacas-constantexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/core/luacas-core_init.lua b/macros/luatex/latex/luacas/tex/core/luacas-core_init.lua
new file mode 100644
index 0000000000..c9c3b89126
--- /dev/null
+++ b/macros/luatex/latex/luacas/tex/core/luacas-core_init.lua
@@ -0,0 +1,16 @@
+-- Loads core files in the correct order.
+
+require("core.luacas-expression")
+require("core.luacas-atomicexpression")
+require("core.luacas-compoundexpression")
+require("core.luacas-constantexpression")
+require("core.luacas-symbolexpression")
+require("core.luacas-binaryoperation")
+require("core.luacas-functionexpression")
+
+
+require("core.binaryoperation.luacas-power")
+require("core.binaryoperation.luacas-product")
+require("core.binaryoperation.luacas-sum")
+require("core.binaryoperation.luacas-quotient")
+require("core.binaryoperation.luacas-difference") \ No newline at end of file
diff --git a/macros/luatex/latex/luacas/tex/core/expression.lua b/macros/luatex/latex/luacas/tex/core/luacas-expression.lua
index 8ff4659f79..8ff4659f79 100644
--- a/macros/luatex/latex/luacas/tex/core/expression.lua
+++ b/macros/luatex/latex/luacas/tex/core/luacas-expression.lua
diff --git a/macros/luatex/latex/luacas/tex/core/functionexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua
index dc94790b81..dc94790b81 100644
--- a/macros/luatex/latex/luacas/tex/core/functionexpression.lua
+++ b/macros/luatex/latex/luacas/tex/core/luacas-functionexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/core/symbolexpression.lua b/macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua
index 0d9192c084..0d9192c084 100644
--- a/macros/luatex/latex/luacas/tex/core/symbolexpression.lua
+++ b/macros/luatex/latex/luacas/tex/core/luacas-symbolexpression.lua
diff --git a/macros/luatex/latex/luacas/tex/luacas.sty b/macros/luatex/latex/luacas/tex/luacas.sty
index 461fae6efa..d46ee847fc 100644
--- a/macros/luatex/latex/luacas/tex/luacas.sty
+++ b/macros/luatex/latex/luacas/tex/luacas.sty
@@ -9,7 +9,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{luacas}
- [2022/05/07 v1.0 CAS written in Lua for LaTeX]
+ [2022/11/15 v1.0.1 CAS written in Lua for LaTeX]
\RequirePackage{iftex}
\ifluatex
@@ -30,8 +30,8 @@
\RequirePackage{mathtools}
%These files contain Lua code for parsing luacas output; they also initialize the CAS itself
-\directlua{require('test.parser')
- require('test.helper')
+\directlua{require('test.luacas-parser')
+ require('test.luacas-helper')
}
\NewDocumentEnvironment{CAS}%
diff --git a/macros/luatex/latex/luacas/tex/test/calculus/derivatives.lua b/macros/luatex/latex/luacas/tex/test/calculus/luacas-derivatives.lua
index 5d5429f59b..5d5429f59b 100644
--- a/macros/luatex/latex/luacas/tex/test/calculus/derivatives.lua
+++ b/macros/luatex/latex/luacas/tex/test/calculus/luacas-derivatives.lua
diff --git a/macros/luatex/latex/luacas/tex/test/calculus/integrals.lua b/macros/luatex/latex/luacas/tex/test/calculus/luacas-integrals.lua
index 0c12f7a787..0c12f7a787 100644
--- a/macros/luatex/latex/luacas/tex/test/calculus/integrals.lua
+++ b/macros/luatex/latex/luacas/tex/test/calculus/luacas-integrals.lua
diff --git a/macros/luatex/latex/luacas/tex/test/expressions/autosimplify.lua b/macros/luatex/latex/luacas/tex/test/expressions/luacas-autosimplify.lua
index 09ad9874cd..09ad9874cd 100644
--- a/macros/luatex/latex/luacas/tex/test/expressions/autosimplify.lua
+++ b/macros/luatex/latex/luacas/tex/test/expressions/luacas-autosimplify.lua
diff --git a/macros/luatex/latex/luacas/tex/test/expressions/collect.lua b/macros/luatex/latex/luacas/tex/test/expressions/luacas-collect.lua
index b40e8e3d09..b40e8e3d09 100644
--- a/macros/luatex/latex/luacas/tex/test/expressions/collect.lua
+++ b/macros/luatex/latex/luacas/tex/test/expressions/luacas-collect.lua
diff --git a/macros/luatex/latex/luacas/tex/test/expressions/equations.lua b/macros/luatex/latex/luacas/tex/test/expressions/luacas-equations.lua
index 3d6aa131fc..3d6aa131fc 100644
--- a/macros/luatex/latex/luacas/tex/test/expressions/equations.lua
+++ b/macros/luatex/latex/luacas/tex/test/expressions/luacas-equations.lua
diff --git a/macros/luatex/latex/luacas/tex/test/expressions/functions.lua b/macros/luatex/latex/luacas/tex/test/expressions/luacas-functions.lua
index e2c15096d6..e2c15096d6 100644
--- a/macros/luatex/latex/luacas/tex/test/expressions/functions.lua
+++ b/macros/luatex/latex/luacas/tex/test/expressions/luacas-functions.lua
diff --git a/macros/luatex/latex/luacas/tex/test/expressions/logarithms.lua b/macros/luatex/latex/luacas/tex/test/expressions/luacas-logarithms.lua
index 2813a6b8f5..2813a6b8f5 100644
--- a/macros/luatex/latex/luacas/tex/test/expressions/logarithms.lua
+++ b/macros/luatex/latex/luacas/tex/test/expressions/luacas-logarithms.lua
diff --git a/macros/luatex/latex/luacas/tex/test/expressions/rationalexponent.lua b/macros/luatex/latex/luacas/tex/test/expressions/luacas-rationalexponent.lua
index 85690f8c66..85690f8c66 100644
--- a/macros/luatex/latex/luacas/tex/test/expressions/rationalexponent.lua
+++ b/macros/luatex/latex/luacas/tex/test/expressions/luacas-rationalexponent.lua
diff --git a/macros/luatex/latex/luacas/tex/test/expressions/simplify.lua b/macros/luatex/latex/luacas/tex/test/expressions/luacas-simplify.lua
index ac5582901d..ac5582901d 100644
--- a/macros/luatex/latex/luacas/tex/test/expressions/simplify.lua
+++ b/macros/luatex/latex/luacas/tex/test/expressions/luacas-simplify.lua
diff --git a/macros/luatex/latex/luacas/tex/test/expressions/substitute.lua b/macros/luatex/latex/luacas/tex/test/expressions/luacas-substitute.lua
index 4d1f3496bf..4d1f3496bf 100644
--- a/macros/luatex/latex/luacas/tex/test/expressions/substitute.lua
+++ b/macros/luatex/latex/luacas/tex/test/expressions/luacas-substitute.lua
diff --git a/macros/luatex/latex/luacas/tex/test/helper.lua b/macros/luatex/latex/luacas/tex/test/luacas-helper.lua
index b550967da9..b550967da9 100644
--- a/macros/luatex/latex/luacas/tex/test/helper.lua
+++ b/macros/luatex/latex/luacas/tex/test/luacas-helper.lua
diff --git a/macros/luatex/latex/luacas/tex/test/main.lua b/macros/luatex/latex/luacas/tex/test/luacas-main.lua
index 638f7734b5..95f77885e4 100644
--- a/macros/luatex/latex/luacas/tex/test/main.lua
+++ b/macros/luatex/latex/luacas/tex/test/luacas-main.lua
@@ -1,8 +1,8 @@
---@diagnostic disable: lowercase-global
-- Runs test code from test files.
-require("calculus._init")
-require("_lib.pepperfish")
+require("calculus.luacas-calculus_init")
+require("_lib.luacas-pepperfish")
-- Stuff required for the basic parser.
local constants = {e="E", pi = "PI", ln = "LN", log = "LOG", Integer = "Integer", DD = "DD", int = "INT", abs = "ABS", fact="FACT"}
@@ -124,26 +124,26 @@ end
-- profiler = newProfiler()
-- profiler:start()
-require("test.calculus.derivatives")
-require("test.calculus.integrals")
-
-require("test.expressions.autosimplify")
-require("test.expressions.collect")
-require("test.expressions.equations")
-require("test.expressions.simplify")
-require("test.expressions.functions")
-require("test.expressions.logarithms")
--- require("test.expressions.rationalexponent")
-require("test.expressions.substitute")
-
-require("test.polynomials.polynomial")
-require("test.polynomials.partialfractions")
-require("test.polynomials.polynomialmod")
-require("test.polynomials.roots")
-
-require("test.rings.conversion")
-require("test.rings.modulararithmetic")
-require("test.rings.number")
+require("test.calculus.luacas-derivatives")
+require("test.calculus.luacas-integrals")
+
+require("test.expressions.luacas-autosimplify")
+require("test.expressions.luacas-collect")
+require("test.expressions.luacas-equations")
+require("test.expressions.luacas-simplify")
+require("test.expressions.luacas-functions")
+require("test.expressions.luacas-logarithms")
+-- require("test.expressions.luacas-rationalexponent")
+require("test.expressions.luacas-substitute")
+
+require("test.polynomials.luacas-polynomial")
+require("test.polynomials.luacas-partialfractions")
+require("test.polynomials.luacas-polynomialmod")
+require("test.polynomials.luacas-roots")
+
+require("test.rings.luacas-conversion")
+require("test.rings.luacas-modulararithmetic")
+require("test.rings.luacas-number")
endall()
diff --git a/macros/luatex/latex/luacas/tex/test/parser.lua b/macros/luatex/latex/luacas/tex/test/luacas-parser.lua
index 6cb22a1bdb..3380549620 100644
--- a/macros/luatex/latex/luacas/tex/test/parser.lua
+++ b/macros/luatex/latex/luacas/tex/test/luacas-parser.lua
@@ -2,7 +2,7 @@
-require("calculus._init")
+require("calculus.luacas-calculus_init")
-- Splits a string on a seperator.
function split(str, sep)
diff --git a/macros/luatex/latex/luacas/tex/test/polynomials/partialfractions.lua b/macros/luatex/latex/luacas/tex/test/polynomials/luacas-partialfractions.lua
index 280d4d56f3..280d4d56f3 100644
--- a/macros/luatex/latex/luacas/tex/test/polynomials/partialfractions.lua
+++ b/macros/luatex/latex/luacas/tex/test/polynomials/luacas-partialfractions.lua
diff --git a/macros/luatex/latex/luacas/tex/test/polynomials/polynomial.lua b/macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomial.lua
index 545538c764..545538c764 100644
--- a/macros/luatex/latex/luacas/tex/test/polynomials/polynomial.lua
+++ b/macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomial.lua
diff --git a/macros/luatex/latex/luacas/tex/test/polynomials/polynomialmod.lua b/macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomialmod.lua
index 1906ad2d72..1906ad2d72 100644
--- a/macros/luatex/latex/luacas/tex/test/polynomials/polynomialmod.lua
+++ b/macros/luatex/latex/luacas/tex/test/polynomials/luacas-polynomialmod.lua
diff --git a/macros/luatex/latex/luacas/tex/test/polynomials/roots.lua b/macros/luatex/latex/luacas/tex/test/polynomials/luacas-roots.lua
index 01975ab1ec..01975ab1ec 100644
--- a/macros/luatex/latex/luacas/tex/test/polynomials/roots.lua
+++ b/macros/luatex/latex/luacas/tex/test/polynomials/luacas-roots.lua
diff --git a/macros/luatex/latex/luacas/tex/test/rings/conversion.lua b/macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua
index b9eb523c7a..b9eb523c7a 100644
--- a/macros/luatex/latex/luacas/tex/test/rings/conversion.lua
+++ b/macros/luatex/latex/luacas/tex/test/rings/luacas-conversion.lua
diff --git a/macros/luatex/latex/luacas/tex/test/rings/modulararithmetic.lua b/macros/luatex/latex/luacas/tex/test/rings/luacas-modulararithmetic.lua
index 1bd315595a..1bd315595a 100644
--- a/macros/luatex/latex/luacas/tex/test/rings/modulararithmetic.lua
+++ b/macros/luatex/latex/luacas/tex/test/rings/luacas-modulararithmetic.lua
diff --git a/macros/luatex/latex/luacas/tex/test/rings/number.lua b/macros/luatex/latex/luacas/tex/test/rings/luacas-number.lua
index 9afea0d364..9afea0d364 100644
--- a/macros/luatex/latex/luacas/tex/test/rings/number.lua
+++ b/macros/luatex/latex/luacas/tex/test/rings/luacas-number.lua