summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-01-04 03:02:24 +0000
committerNorbert Preining <norbert@preining.info>2023-01-04 03:02:24 +0000
commitb2ede2da5ece936a9be421f2b6fbdb6c65cb225a (patch)
tree52e56df44d458efa71d7de971f576d61dbdb2123 /macros/latex
parent660cf44d2a0aee74bd6e69615fedfc57c966a260 (diff)
CTAN sync 202301040302
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/dtxdescribe/README.txt4
-rw-r--r--macros/latex/contrib/dtxdescribe/dtxdescribe.dtx1035
-rw-r--r--macros/latex/contrib/dtxdescribe/dtxdescribe.pdfbin418847 -> 467890 bytes
-rw-r--r--macros/latex/contrib/keyfloat/README.txt4
-rw-r--r--macros/latex/contrib/keyfloat/keyfloat.dtx100
-rw-r--r--macros/latex/contrib/keyfloat/keyfloat.pdfbin1038224 -> 1058398 bytes
-rw-r--r--macros/latex/contrib/lwarp/README.txt4
-rw-r--r--macros/latex/contrib/lwarp/lwarp.dtx162
-rw-r--r--macros/latex/contrib/lwarp/lwarp.pdfbin3303971 -> 3398923 bytes
-rwxr-xr-xmacros/latex/contrib/lwarp/lwarpmk.lua2
-rw-r--r--macros/latex/contrib/metalogox/README.txt4
-rw-r--r--macros/latex/contrib/metalogox/metalogox.dtx61
-rw-r--r--macros/latex/contrib/metalogox/metalogox.pdfbin427650 -> 385365 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin814698 -> 852346 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex650
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-solve_a.pngbin0 -> 5226 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-solve_b.pngbin0 -> 9215 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.pngbin0 -> 10175 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.pngbin0 -> 10145 bytes
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty48
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md22
-rw-r--r--macros/latex/contrib/siunitx/siunitx-abbreviation.dtx5
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin617754 -> 620740 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-emulation.dtx33
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx158
-rw-r--r--macros/latex/contrib/siunitx/siunitx-quantity.dtx33
-rw-r--r--macros/latex/contrib/siunitx/siunitx-symbol.dtx36
-rw-r--r--macros/latex/contrib/siunitx/siunitx-table.dtx119
-rw-r--r--macros/latex/contrib/siunitx/siunitx-unit.dtx177
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx6
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin666266 -> 667977 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx.tex119
-rw-r--r--macros/latex/contrib/tocdata/README.txt4
-rw-r--r--macros/latex/contrib/tocdata/tocdata.dtx72
-rw-r--r--macros/latex/contrib/tocdata/tocdata.pdfbin922715 -> 958628 bytes
-rw-r--r--macros/latex/contrib/zref-clever/CHANGELOG.md9
-rw-r--r--macros/latex/contrib/zref-clever/README.md2
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-code.pdfbin1283227 -> 1285432 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-code.tex2
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.dtx55
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.ins4
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.pdfbin322543 -> 327352 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.tex130
-rw-r--r--macros/latex/contrib/zref-vario/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario-code.pdfbin647461 -> 648126 bytes
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario-code.tex2
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario.dtx11
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario.ins4
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario.pdfbin147516 -> 149549 bytes
-rw-r--r--macros/latex/contrib/zref-vario/zref-vario.tex38
50 files changed, 1990 insertions, 1133 deletions
diff --git a/macros/latex/contrib/dtxdescribe/README.txt b/macros/latex/contrib/dtxdescribe/README.txt
index 00c1d67983..24e6caa67f 100644
--- a/macros/latex/contrib/dtxdescribe/README.txt
+++ b/macros/latex/contrib/dtxdescribe/README.txt
@@ -1,8 +1,8 @@
The LaTeX dtxdescribe package
Describe additional object types in dtx source files.
-v1.06 — 2022/12/07
-Copyright 2016–2022 Brian Dunn — www.BDTechConcepts.com
+v1.07 — 2023/01/03
+Copyright 2016–2023 Brian Dunn — www.BDTechConcepts.com
LaTeX Project Public License, version 1.3
diff --git a/macros/latex/contrib/dtxdescribe/dtxdescribe.dtx b/macros/latex/contrib/dtxdescribe/dtxdescribe.dtx
index 0d3d54db2f..e271465c21 100644
--- a/macros/latex/contrib/dtxdescribe/dtxdescribe.dtx
+++ b/macros/latex/contrib/dtxdescribe/dtxdescribe.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
-% Copyright 2016-2022 Brian Dunn
+% Copyright 2016-2023 Brian Dunn
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -17,7 +17,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{dtxdescribe}
-%<package> [2022/12/07 v1.06 Describe additional object types in source files.]
+%<package> [2023/01/03 v1.07 Describe additional object types in source files.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -175,26 +175,6 @@ pageanchor=true,
%<*package>
% \fi
%
-% ^^A *88* remove:
-% \CheckSum{1704}
-%
-% ^^A *88* remove:
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
% \changes{v0.10}{2016/12/08}{\ 2016/12/08 Initial ver}
% \changes{v0.11}{2018/03/30}{\ 2018/03/30}
@@ -206,6 +186,7 @@ pageanchor=true,
% \changes{v1.04}{2022/02/01}{\ Corrected copyright date.}
% \changes{v1.05}{2022/09/08}{\ 2022/09/08}
% \changes{v1.06}{2022/12/07}{\ 2022/12/07}
+% \changes{v1.07}{2023/01/03}{\ 2023/01/03}
@@ -230,7 +211,7 @@ pageanchor=true,
%
% \bigskip
%
-% {\small\textcopyright{} 2016--2022} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2023} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
%
% \vspace{.5in}
%
@@ -252,9 +233,10 @@ pageanchor=true,
% who do not wish to use the \pkg{ltxdoc} class and \filenm{.dtx} files.
%
% Each described item is given a margin tag similar to \cs{DescribeEnv},
-% and is listed in the index by itself and also by category.
-% Each item may be sorted further by an optional class.
-% All index entries except code lines are hyperlinked.
+% and is listed in the index by itself and also by type of object
+% displayed in parentheses (length, filename, etc).
+% Each item may be sorted further by an optional category displayed in brackets,
+% such as |[category_name]|.
%
% The \env{dtxexample} environment is provided for typesetting example code and its results.
% Contents are displayed verbatim along with a caption and cross-referencing.
@@ -279,13 +261,7 @@ pageanchor=true,
%
% \vfill
%
-% \textcolor{red}{The \pkg{doc} package has changed, and
-% \pkg{dtxdescribe} is not yet fully compatible.
-% When \pkg{dtxdescribe} is used with \pkg{doc},
-% the optional object ``class'' is currently ignored for macros,
-% and not all classes are indexed.}
-%
-% \textcolor{red}{Also, see change in setup of \pkg{hyperref} and \pkg{cleveref}:
+% \textcolor{red}{See change in setup of \pkg{hyperref} and \pkg{cleveref}:
% \Cref{sec:usage} on \cpageref{sec:usage}.}
%
% \clearpage
@@ -317,7 +293,7 @@ pageanchor=true,
% added to the name, such as ``Env'', ``Bool'', or ``Key''.
% These new objects are also listed in the index with the same tag
% shown after their names, and also by group.
-% Optional classes may be used to further categories index entries.
+% Optional categories may be used to further sort index entries.
%
% Modifications have been made to interact with \pkg{hyperref} to
% provide hyper links for regular index entries as well as the new
@@ -338,7 +314,7 @@ pageanchor=true,
% \section{Using \pkg{dtxdescribe}}
% \label{sec:usage}
-% To use \pkg{dtxdescribe} with the \pkg{ltxdoc} classa and \filenm{.dtx} files:
+% To use \pkg{dtxdescribe} with the \pkg{ltxdoc} class and \filenm{.dtx} files:
% \begin{sourceverb}
% %<*driver>
% \documentclass{ltxdoc}
@@ -391,10 +367,10 @@ pageanchor=true,
% macros such as \cs{DescribeBoolean}, \cs{DescribeLength}, \cs{DescribeCounter},
% similar to the already-familiar \cs{DescribeMacro} and \cs{DescribeEnv}.
-% Optional ``classes'' may be assigned to the objects being described,
+% Optional ``categories'' may be assigned to the objects being described,
% including the new versions of \cs{DescribeMacro} and \cs{DescribeEnv}.
-% These classes are printed in the margin tag and index entry for each item,
-% and also generate additional index entries sorted by class. This is
+% These categories are printed in the margin tag and index entry for each item,
+% and also generate additional index entries sorted by category. This is
% especially useful for key/value sets, where several sets may appear in the same
% document.
%
@@ -415,6 +391,8 @@ pageanchor=true,
% The \env{dtxexample} environment may be used to typeset and execute small pieces of \LaTeX\ code
% as examples of its use. Optional cross-referencing notes may be used to refer to any
% example float being generated.
+% \cs{listofdtxexamplefloats} prints the list of examples.
+
@@ -436,24 +414,24 @@ pageanchor=true,
% and \cs{DescribeMacro} and \cs{DescribeEnv} should be used instead.
%
%
-% \DescribeMacro{\DescribeMacro} \oarg{class} \marg{\cs{name}}
+% \DescribeMacro{\DescribeMacro} \oarg{category} \marg{\cs{name}}
%
% The preexisting macro from the \pkg{doc} package is redefined to
-% create hyperlinked index entries, and include an optional class.
+% create hyperlinked index entries, and include an optional category.
% A margin tag is created and an index entry is made.
-% When the optional class is used, it is displayed in front of
+% When the optional category is used, it is displayed along with
% the margin tag, and is used to group an index entry by
-% macro name and another index entry by class.
+% macro name and another index entry by category.
% An example would be to describe
-% the float creation and caption setup for a new class of float,
+% the float creation and caption setup for a new category of float,
% such as the |dtxexample| float and the example ``photograph'' float
% both found in the index for this document.
% See \cref{ex:macro} on \cpageref{ex:macro} for examples.
%
-% \DescribeMacro{\DescribeEnv} \oarg{class} \marg{environment name}
+% \DescribeMacro{\DescribeEnv} \oarg{category} \marg{environment name}
%
% The preexisting macro from the \pkg{doc} package is redefined to
-% create hyperlinked index entries, include an optional class, and also to place
+% create hyperlinked index entries, include an optional category, and also to place
% an `Env' tag in front of the name in the margin.
% See \cref{ex:environment} on \cpageref{ex:environment}.
%
@@ -486,11 +464,11 @@ pageanchor=true,
% The result looks like \parg{coordinate}.
%
-% \DescribeMacro{\DescribeArgument} \oarg{class} \marg{argument}
+% \DescribeMacro{\DescribeArgument} \oarg{category} \marg{argument}
%
% May be used to describe actions taken when given certain macro arguments.
% These will be given an `Arg' margin tag and will appear in the index.
-% The |class| may be used to categorize arguments by their macro or environment name.
+% The |category| may be used to categorize arguments by their macro or environment name.
% See \cref{ex:arguments} on \cpageref{ex:arguments}.
@@ -498,71 +476,74 @@ pageanchor=true,
%
% See \cref{ex:common} on \cpageref{ex:common}.
%
-% \DescribeMacro{\DescribeBoolean} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeBoolean} \oarg{category} \marg{name}
%
% Describes a boolean. Given a `Bool' tag in the margin and index.
%
%
-% \DescribeMacro{\DescribeLength} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeLength} \oarg{category} \marg{name}
%
% Describes a length. Given a `Len' tag in the margin and index.
%
%
-% \DescribeMacro{\DescribeCounter} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeCounter} \oarg{category} \marg{name}
%
% Describes a counter. Given a `Ctr' tag in the margin and index.
%
%
-% \DescribeMacro{\DescribeHook} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeHook} \oarg{category} \marg{name}
%
% Describes a hook. Given a `Hook' tag in the margin and index.
-% The |class| may be used to categorize hooks by package.
+% The |category| may be used to categorize hooks by package.
+% The hook name may or may not have a backslash.
% Example:
% \begin{sourceverb}
+% \DescribeHook{\hookname}
% \DescribeHook[LaTeX]{para/begin}
% \end{sourceverb}
%
%
-% \DescribeMacro{\DescribeKey} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeKey} \oarg{category} \marg{name}
%
% Describes a key. Given a `Key' tag in the margin and index.
-% The |class| may be used to categorize keys by their kev/value group.
+% The |category| may be used to categorize keys by their kev/value group.
% See \cref{ex:key} on \cpageref{ex:key}.
% \subsection{Packages, classes, options}
%
-% \DescribeMacro{\DescribePackage} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribePackage} \oarg{category} \marg{name}
%
% Describes a package. Given a `Pkg' tag in the margin and index.
%
%
-% \DescribeMacro{\DescribeClass} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeClass} \oarg{category} \marg{name}
%
% Describes a \LaTeX\ class. Given a `Cls' tag in the margin and index.
%
%
-% \DescribeMacro{\DescribeOption} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeOption} \oarg{category} \marg{name}
%
-% Describes a \LaTeX\ package or class option. Given an `Opt' tag in the margin and index.
+% Describes a \LaTeX\ package or class option.
+% Given an `Opt' tag in the margin and index.
%
%
% \subsection{Files, programs, commands}
%
-% \DescribeMacro{\DescribeFile} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeFile} \oarg{category} \marg{name}
%
% Describes an operating-system file. Given a `File' tag in the margin and index.
% The filename may have underscores.
%
%
-% \DescribeMacro{\DescribeProgram} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeProgram} \oarg{category} \marg{name}
%
% Describes an operating-system program. Given a `Prog' tag in the margin and index.
% The program name may have underscores.
%
%
-% \DescribeMacro{\DescribeCommand} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeCommand} \oarg{category} \marg{name}
%
% Describes an operating-system command. Given a `Cmd' tag in the margin and index.
% The command name may have underscores.
@@ -572,22 +553,22 @@ pageanchor=true,
% \subsection{Other source objects}
%
-% \DescribeMacro{\DescribeObject} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeObject} \oarg{category} \marg{name}
%
% Describes an arbitrary programming object, such as a color definition or caption setup.
% A margin tag and index entry are created with \cs{ttfamily} type.
-% When a class is used, it is pre-pended to the margin tag, appended to the
-% index entry, and a second index entry is created grouped by class.
+% When a category is used, it is added to the margin tag, appended to the
+% index entry, and a second index entry is created grouped by category.
% If a macro name is to be described, use \cs{DescribeMacro} instead.
% See \cref{ex:object} on \cpageref{ex:object}.
%
%
-% \DescribeMacro{\DescribeOther} \oarg{class} \marg{name}
+% \DescribeMacro{\DescribeOther} \oarg{category} \marg{name}
%
% Describes an arbitrary non-programming object, such as a license agreement
% or credits. A margin tag and index entry are created in roman type.
-% When a class is used, it is pre-pended to the margin tag, appended to the
-% index entry, and a second index entry is created grouped by class.
+% When a category is used, it is added to the margin tag, appended to the
+% index entry, and a second index entry is created grouped by category.
% See \cref{ex:other} on \cpageref{ex:other}.
@@ -596,37 +577,37 @@ pageanchor=true,
% To describe an object using a \env{description} environment, use the following.
% See \cref{ex:description} on \cpageref{ex:description}.
-% \DescribeMacro{\ItemDescribeMacro} \oarg{class} \marg{\cs{name}} A description.
+% \DescribeMacro{\ItemDescribeMacro} \oarg{category} \marg{\cs{name}} A description.
%
-% \DescribeMacro{\ItemDescribeEnv} \oarg{class} \marg{name} A description.
+% \DescribeMacro{\ItemDescribeEnv} \oarg{category} \marg{name} A description.
%
-% \DescribeMacro{\ItemDescribeArgument} \oarg{class} \marg{argument} A description.
+% \DescribeMacro{\ItemDescribeArgument} \oarg{category} \marg{argument} A description.
%
-% \DescribeMacro{\ItemDescribeBoolean} \oarg{class} \marg{name} A description.
+% \DescribeMacro{\ItemDescribeBoolean} \oarg{category} \marg{name} A description.
%
-% \DescribeMacro{\ItemDescribeLength} \oarg{class} \marg{\cs{name}} A description.
+% \DescribeMacro{\ItemDescribeLength} \oarg{category} \marg{\cs{name}} A description.
%
-% \DescribeMacro{\ItemDescribeCounter} \oarg{class} \marg{name} A description.
+% \DescribeMacro{\ItemDescribeCounter} \oarg{category} \marg{name} A description.
%
-% \DescribeMacro{\ItemDescribeHook} \oarg{class} \marg{name} A description.
+% \DescribeMacro{\ItemDescribeHook} \oarg{category} \marg{name} A description.
%
-% \DescribeMacro{\ItemDescribeKey} \oarg{class} \marg{name} A description.
+% \DescribeMacro{\ItemDescribeKey} \oarg{category} \marg{name} A description.
%
-% \DescribeMacro{\ItemDescribePackage} \oarg{class} \marg{package\_name} With underscores.
+% \DescribeMacro{\ItemDescribePackage} \oarg{category} \marg{package\_name} With underscores.
%
-% \DescribeMacro{\ItemDescribeClass} \oarg{class} \marg{class\_name} With underscores.
+% \DescribeMacro{\ItemDescribeClass} \oarg{category} \marg{class\_name} With underscores.
%
-% \DescribeMacro{\ItemDescribeOption} \oarg{class} \marg{name} A description.
+% \DescribeMacro{\ItemDescribeOption} \oarg{category} \marg{name} A description.
%
-% \DescribeMacro{\ItemDescribeFile} \oarg{class} \marg{file\_name} With underscores.
+% \DescribeMacro{\ItemDescribeFile} \oarg{category} \marg{file\_name} With underscores.
%
-% \DescribeMacro{\ItemDescribeProgram} \oarg{class} \marg{program\_name} With underscores.
+% \DescribeMacro{\ItemDescribeProgram} \oarg{category} \marg{program\_name} With underscores.
%
-% \DescribeMacro{\ItemDescribeCommand} \oarg{class} \marg{command\_name} With underscores.
+% \DescribeMacro{\ItemDescribeCommand} \oarg{category} \marg{command\_name} With underscores.
%
-% \DescribeMacro{\ItemDescribeObject} \oarg{class} \marg{name} A description.
+% \DescribeMacro{\ItemDescribeObject} \oarg{category} \marg{name} A description.
%
-% \DescribeMacro{\ItemDescribeOther} \oarg{class} \marg{name} A description.
+% \DescribeMacro{\ItemDescribeOther} \oarg{category} \marg{name} A description.
% \subsection{Defaults}
@@ -713,8 +694,13 @@ pageanchor=true,
% version does not use a minipage. This is required when the code is too large to fit
% on a single page.
%
+% \DescribeMacro{listofdtxexamplefloats} Prints the list of examples.
+%
% See \cref{ex:dtxexample} for a demonstration of how \env{dtxexample} works.
%
+% The examples may be customized by redefining the following,
+% perhaps for another language:
+
% \DescribeMacro{\dtxexamplecodename}
% \DescribeDefault{Code:}
% The text name of the code section.
@@ -1031,9 +1017,9 @@ pageanchor=true,
% \end{dtxexample}
%
%
-% The optional class is used to label and group tags and index entries.
+% The optional category is used to label and group tags and index entries.
% See this document's index entries for examples of this ``photograph''
-% class and the \env{dtxexample} class of macros.
+% category and the \env{dtxexample} category of macros.
%
% The re-defined \cs{DescribeMacro}, \cs{DescribeEnv}, and
% all the following macros create hyperlinked index entries,
@@ -1068,7 +1054,7 @@ pageanchor=true,
%
% The \env{otherenvironment} will be indexed by itself and also
% with \env{myenvironment} under the index entry ``environments'',
-% and also under the class |kindofenvironment|.
+% and also under the category |kindofenvironment|.
%
%
% \clearpage
@@ -1093,6 +1079,16 @@ pageanchor=true,
% the same as the rest of the objects.
+% \begin{dtxexample}{Hooks\label{ex:hook}}
+% \DescribeHook{\hookname} A hook with a backslash.
+
+% \DescribeHook{para/begin} A hook without a backslash.
+% \end{dtxexample}
+
+% Hooks may or may not have a leading backslash.
+
+
+
% \clearpage
%
%
@@ -1122,7 +1118,7 @@ pageanchor=true,
%
% Filenames, program names, and command names may have underscores,
% such as tested here.
-% A class is used to group ``bigfiles'' together in the index.
+% A category is used to group ``bigfiles'' together in the index.
% \clearpage
@@ -1138,7 +1134,7 @@ pageanchor=true,
%
% \DescribeKey[examples]{sampletwokey} About another key of |otherkeys|.
%
-% \DescribeKey{lonekey} A key without a class.
+% \DescribeKey{lonekey} A key without a category.
% \end{dtxexample}
%
% See the index key groups.
@@ -1157,7 +1153,7 @@ pageanchor=true,
% What happens when \cs{mymacro} is given the |bold| argument.
% \end{dtxexample}
%
-% Arguments behave like keys, and may have an optional class to
+% Arguments behave like keys, and may have an optional category to
% identify their macro or environment, and group their entries
% in the index.
%
@@ -1187,9 +1183,9 @@ pageanchor=true,
% \DescribeOther{Before myenvironment}
% Actions to be done \cs{BeforeBeginEnvironment}.
%
-% \DescribeOther[otherclass]{Other Item} About the other item.
+% \DescribeOther[othercategory]{Other Item} About the other item.
%
-% \DescribeOther[otherclass]{Additional Item} About the add'l item.
+% \DescribeOther[othercategory]{Additional Item} About the add'l item.
% \end{dtxexample}
%
% Describes an arbitrary non-programming object, using roman text.
@@ -1207,7 +1203,7 @@ pageanchor=true,
% \ItemDescribeClass[descexamples]{class_name} Describe the class.
% \ItemDescribeFile[descexamples]{file_name} Describe the file.
% \ItemDescribeProgram[descexamples]{program_name} Describe the program.
-% \ItemDescribeCommand[descexamples]{command_name} Describe the class.
+% \ItemDescribeCommand[descexamples]{command_name} Describe the command.
% \end{description}
% \end{dtxexample}
%
@@ -1416,8 +1412,8 @@ pageanchor=true,
% \changes{v1.02}{2019/07/14}{Fix if not \pkg{ltxdoc} class.}
% \begin{macrocode}
\AtBeginDocument{
- \@ifpackageloaded{makeidx}{}{
- \@ifpackageloaded{splitidx}{}{
+ \IfPackageLoadedTF{makeidx}{}{
+ \IfPackageLoadedTF{splitidx}{}{
\RequirePackage{makeidx}
\makeindex
}}
@@ -1482,7 +1478,7 @@ pageanchor=true,
% \changes{v1.02}{2019/07/14}{Fix if not \pkg{hyperref} package.}
% \begin{macrocode}
\AtBeginDocument{
- \@ifpackageloaded{hyperref}{
+ \IfPackageLoadedTF{hyperref}{
\pdfstringdefDisableCommands{%
\def\quad{ }%
\def\\{ }%
@@ -1602,14 +1598,14 @@ pageanchor=true,
-% \subsection{Patching \pkg{hypdoc}}
+% \subsection{Patching \pkg{hypdoc}, \pkg{splitidx}, \pkg{doc}}
%
% If \pkg{hyperref} is disabled (by \pkg{lwarp}) then define the
% missing \cs{hdclindex}.
% \changes{v1.06}{2022/12/06}{Fixed for updated \pkg{doc}.}
% \begin{macrocode}
-\@ifpackageloaded{doc}{
-\@ifpackageloaded{hypdoc}{
+\IfPackageLoadedTF{doc}{
+\IfPackageLoadedTF{hypdoc}{
\AddToHook{begindocument/before}[doc/hyperref]{%
\ifdoc@hyperref
\else
@@ -1622,12 +1618,19 @@ pageanchor=true,
}{}% doc loaded
% \end{macrocode}
+
+% Several changes for when \pkg{hypdoc} and \pkg{splitidx} are used together:
+% \begin{macrocode}
+\AtBeginDocument{
+\IfPackageLoadedTF{doc}{
+\IfPackageLoadedTF{hypdoc}{
+\IfPackageLoadedTF{splitidx}{
+% \end{macrocode}
+%
+%
% \pkg{splitidx} is modified to add \verb+|hdpindex{}+ to work with \pkg{hypdoc}.
% \changes{v1.06}{2022/12/06}{Fixed for updated \pkg{doc}.}
% \begin{macrocode}
-\AtBeginDocument{
-\@ifpackageloaded{hypdoc}{
-\@ifpackageloaded{splitidx}{
\renewcommand*{\@wrsindex}[2][]{%
\ifx\relax#1\relax
\if@splitidx
@@ -1653,8 +1656,70 @@ pageanchor=true,
\@esphack
\fi
}
+% \end{macrocode}
+
+
+% \pkg{hypdoc} guesses the \TOC\ level for the \PDF\ bookmarks,
+% but its algorithm seems to fail at \cs{StopEventually} for split indices.
+%
+% ``|Paragraph ended before \HD@@guesstoclevel was complete.|''
+%
+% Its guess is fixed to level 1 until \cs{PrintChanges} or \cs{printindex}.
+%
+% \changes{v1.06}{2022/12/06}{Fixed for updated \pkg{doc}.}
+% \begin{macrocode}
+\def\HD@guesstoclevel#1{1}
+% \end{macrocode}
+
+% \changes{v1.07}{2022/12/19}{Improved \PDF\ bookmarks.}
+% Patch \pkg{doc}'s \cs{PrintChanges} to reset the \TOC\ guess to top level.
+% \begin{macrocode}
+\preto\PrintChanges{\def\HD@guesstoclevel#1{0}}
+% \end{macrocode}
+
+
+% \pkg{hypdoc} adds \PDF\ bookmarks to letter groups in the index.
+% \pkg{hypdoc} must take into account multiple indexes,
+% otherwise, followup indices will have duplicate bookmarks.
+%
+% Increment the index number at the start of each index,
+% and append the index number to the \PDF\ bookmark.
+%
+% Also, change the \TOC\ guess to top level from now on, presuming that
+% the indices are at the end.
+%
+% \changes{v1.07}{2022/12/19}{Improved \PDF\ bookmarks.}
+% \begin{macrocode}
+\newcounter{DTXD@indexnumber}
+
+\extendtheindex
+ {%
+ \addtocounter{DTXD@indexnumber}{1}%
+ \def\HD@guesstoclevel##1{0}%
+ }
+ {}
+ {}
+ {}
+
+\def\HD@@@bfseries\hfil#1\hfil{%
+ \ifx\\#1\\%
+ \else
+ \raisebox{\baselineskip}[0pt]{%
+ \kern-\HD@margin\relax
+% \pdfbookmark[\HD@toclevel@subindex]{#1}{HD.#1}}%
+ \pdfbookmark[\HD@toclevel@subindex]{#1}% dtxdescribe
+ {HD.#1.\arabic{DTXD@indexnumber}}% dtxdescribe
+ \kern\HD@margin\relax
+ }%
+ \fi
+ \hfil#1\hfil
+}%
+% \end{macrocode}
+
+% \begin{macrocode}
}{}% splitidx loaded
}{}% hypdoc loaded
+}{}% doc loaded
}% AtBeginDocument
% \end{macrocode}
@@ -1667,7 +1732,7 @@ pageanchor=true,
% code to be in the documentation only. Other classes do not.
% \changes{v1.02}{2019/07/16}{Fix if not \pkg{doc} package.}
% \begin{macrocode}
-\@ifpackageloaded{doc}{
+\IfPackageLoadedTF{doc}{
\newcommand*{\DTXD@gobble}{2}
}{
\newcommand*{\DTXD@gobble}{0}
@@ -1694,7 +1759,7 @@ pageanchor=true,
% \end{macrocode}
-% \subsection{\pkg{ltxdoc} emulation}
+% \subsection{Not \pkg{ltxdoc}: \pkg{ltxdoc} emulation}
%
% If the \pkg{ltxdoc} class is not used, some of its macros are replicated here.
% \changes{v1.02}{2019/07/14}{Fix if not \pkg{ltxdoc} class.}
@@ -1714,13 +1779,13 @@ pageanchor=true,
% \end{macrocode}
-% \subsection{\pkg{doc} emulation}
+% \subsection{Not \pkg{doc}: \pkg{doc} emulation}
%
% If the \pkg{doc} class is not used, some of its macros are replicated here.
% \changes{v1.02}{2019/07/14}{Fix if not \pkg{doc} package.}
% \begin{macrocode}
\AtBeginDocument{
- \@ifpackageloaded{doc}{}{
+ \IfPackageLoadedTF{doc}{}{% not doc
\newenvironment*{macro}[1]{%
\PackageError{dtxdescribe}
{The 'macro' environment is only\MessageBreak
@@ -1761,7 +1826,7 @@ pageanchor=true,
}\ensuremath\rangle
}
\def\meta@font@select{\itshape}
- }% doc loaded
+ }% not doc
}% AtBeginDocument
% \end{macrocode}
@@ -1781,7 +1846,7 @@ pageanchor=true,
%
% \begin{macro}{\DTXD@printtype} \marg{text}
%
-% Used to print the object class in the margin:
+% Used to print the object category in the margin:
%
% \changes{v1.00}{2019/01/09}{Sans tag font.}
% \begin{macrocode}
@@ -1817,13 +1882,13 @@ pageanchor=true,
-% \begin{macro}{\DTXD@margintag} \marg{class} \marg{name} \marg{margin tag}
+% \begin{macro}{\DTXD@margintag} \marg{category} \marg{name} \marg{margin tag}
%
% Creates the margin tag for the object being described.
%
-% The |class| is used to sub-categorize keys into their key/value groups.
+% The |category| is used to sub-categorize keys into their key/value groups.
%
-% \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
+% \changes{v1.01}{2019/01/20}{Put margin tag category in brackets.}
% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
% \begin{macrocode}
\newcommand*{\DTXD@margintag}[3]{%
@@ -1835,7 +1900,7 @@ pageanchor=true,
\hfuzz=5em%
\DTXD@printtype{%
#3% margintag
- \ifblank{#1}{}{ [#1]}% class
+ \ifblank{#1}{}{ [#1]}% category
}%
\texttt{#2}% name
}%
@@ -1847,12 +1912,12 @@ pageanchor=true,
% \begin{macro}{\DTXD@index}
-% \marg{class} \marg{name} \marg{margin tag} \marg{index tag} \marg{main/usage}
+% \marg{category} \marg{name} \marg{margin tag} \marg{index tag} \marg{main/usage}
%
% Creates the index entries for the object being described, where
% name has no backslash or underscore.
%
-% The |class| is used to sub-categories keys into their key/value groups.
+% The |category| is used to sub-categorize keys into their key/value groups.
% |main| prints code lines in the index, and |usage| prints page numbers.
%
% \begin{macrocode}
@@ -1884,7 +1949,7 @@ pageanchor=true,
%
% Index by name:
%
-% Write the name, the formatted name, the index tag, and the class:
+% Write the name, the formatted name, the index tag, and the category:
% \begin{macrocode}
#2\actualchar{\protect\ttfamily#2} % name
(#4)% index tag
@@ -1892,9 +1957,9 @@ pageanchor=true,
\encapchar #5}%
% \end{macrocode}
%
-% Index by tag and class:
+% Index by tag and category:
%
-% Write the tag and class as a group, under which is the name and the formatted name.
+% Write the tag and category as a group, under which is the name and the formatted name.
% \changes{v0.11}{2018/02/05}{Index tag no longer plural.}
% \begin{macrocode}
\begingroup%
@@ -1905,16 +1970,16 @@ pageanchor=true,
\encapchar #5}%
% \end{macrocode}
%
-% Possibly index by class and name:
+% Possibly index by category and name:
% \begin{macrocode}
-\ifblank{#1}{}{% class given
+\ifblank{#1}{}{% category given
\begingroup%
\DTXD@origwrindex{%
-#1\actualchar[#1]:\levelchar% class
+#1\actualchar[#1]:\levelchar% category
#2\actualchar{\protect\ttfamily#2} % name
(#4)% index tag
\encapchar #5}%
-}% class given
+}% category given
% \@esphack%
\@esphack%
\ignorespaces%
@@ -1923,10 +1988,10 @@ pageanchor=true,
% \end{macro}
% \begin{macro}{\DTXD@margintagindex}
-% \marg{class} \marg{name} \marg{margin tag} \marg{index tag} \marg{main/usage}
+% \marg{category} \marg{name} \marg{margin tag} \marg{index tag} \marg{main/usage}
%
% Creates the margin tag and the index entries.
-% The |class| is used to sub-categories keys into their key/value groups.
+% The |category| is used to sub-categorize keys into their key/value groups.
% \begin{macrocode}
\newcommand*{\DTXD@margintagindex}[5]{%
% \@bsphack%
@@ -1974,12 +2039,12 @@ pageanchor=true,
% \end{macro}
% \begin{macro}{\DTXD@cmdmargintagindex}
-% \marg{class} \marg{name} \marg{margin tag} \marg{index tag} \marg{main/usage}
+% \marg{category} \marg{name} \marg{margin tag} \marg{index tag} \marg{main/usage}
%
% Creates the margin tag and index entries where name is a \cs{macro}.
%
% \changes{v1.00}{2019/01/09}{Sans tag font.}
-% \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
+% \changes{v1.01}{2019/01/20}{Put margin tag category in brackets.}
% \begin{macrocode}
\newcommand*{\DTXD@cmdmargintagindex}[5]{%
\@bsphack%
@@ -1996,7 +2061,7 @@ pageanchor=true,
\hfuzz=5em%
\DTXD@printtype{%
#3% margin tag
- \ifblank{#1}{}{ [#1]}% class
+ \ifblank{#1}{}{ [#1]}% category
}%
\cmd{#2}% name
}%
@@ -2006,13 +2071,13 @@ pageanchor=true,
%
% Create an index entry sorted by the name without its leading backslash,
% followed by the macro name with the backslash, and the tag.
-% Prepend with the class if given.
+% Prepend with the category if given.
%
-% Write (class):>name=csname (indextag)\verb+|usage+
+% Write [category]:>name=csname (indextag)\verb+|usage+
% \begin{macrocode}
\begingroup%
\DTXD@origwrindex{%
-\ifblank{#1}{}{#1\actualchar[#1]:\levelchar}% class
+\ifblank{#1}{}{#1\actualchar[#1]:\levelchar}% category
\DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2} % name
(#4)% index tag
\encapchar #5}%
@@ -2021,13 +2086,13 @@ pageanchor=true,
% Create an index entry grouped by the tag,
% then printed and sorted by the macro name with the backslash, and the tag.
%
-% Write indextag:>(class):>csname\verb+|usage+
+% Write indextag:>[category]:>csname\verb+|usage+
% \changes{v0.11}{2018/02/05}{Index tag no longer plural.}
% \begin{macrocode}
\begingroup%
\DTXD@origwrindex{%
#4:\levelchar% index tag
-\ifblank{#1}{}{[#1]:\levelchar}% class
+\ifblank{#1}{}{[#1]:\levelchar}% category
\DTXD@verbatimcmd{#2}% name
\encapchar #5}%
\@esphack%
@@ -2038,11 +2103,14 @@ pageanchor=true,
%
-% \subsection{Key handling for object classes}
+% \subsection{\pkg{doc}: Key handling for object categories}
% If using \pkg{doc}, the optional key \Slash value argument may also
-% include an object class. This is supported by assigning any unknown
-% key to be the class.
+% include an object category. This is supported by assigning any unknown
+% key to be the category.
+%
+% The category may be given using the key |c|, or as the default action
+% when an unknown key is given.
%
% \changes{v1.06}{2022/12/06}{Fixed for updated \pkg{doc}.}
% \begin{macrocode}
@@ -2064,11 +2132,13 @@ pageanchor=true,
% \end{macrocode}
-% \subsection{Handling \cs{marginpar} inside a float}
+% \subsection{\pkg{doc}: Handling \cs{marginpar} inside a float}
% To avoid a floats lost error, do not print margin tags if inside a float.
% \changes{v1.06}{2022/12/06}{Fixed for updated \pkg{doc}.}
% \begin{macrocode}
+\IfPackageLoadedTF{doc}{
+
\def\@doc@describe#1#2{% dtxdescribe
\ifdoc@noprint\else
\@ifundefined{@captype}{% not float? dtxdescribe
@@ -2087,26 +2157,20 @@ pageanchor=true,
\fi
\@esphack
\endgroup
- \ignorespaces}
-% \end{macrocode}
-
+ \ignorespaces%
+}
+}{}% doc loaded
+% \end{macrocode}
-% \subsection{Handling glossary}
-% Fix for \cs{StopEventually} in some conditions:
-% \changes{v1.06}{2022/12/06}{Fixed for updated \pkg{doc}.}
-% \begin{macrocode}
-\AtBeginDocument{
-\def\HD@guesstoclevel#1{1}
-}
-% \end{macrocode}
-% \subsection{Catcode handling to support underscores}
+% \subsection{\pkg{doc}: Handling categories and detokenizing names}
%
-% File names and such may include underscores, so they must be neutralized
-% before processing.
+% \begin{macro}{\@NewDocElement}
+% File names and such may include underscores or other characters,
+% so patch \pkg{doc} to neutralized while processing.
%
% \changes{v1.06}{2022/12/06}{Fixed for updated \pkg{doc}.}
% \begin{macrocode}
@@ -2158,51 +2222,123 @@ pageanchor=true,
\doc@createenv{TF}{#2}{#3}%
\fi
}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\DTXDbreak} Inserts a possible line break point.
+% Used in the index to allow line breaks before verbatim category names.
+% \changes{v1.07}{2022/12/24}{Improved line breaks.}
+% \begin{macrocode}
+\newcommand*{\DTXDbreak}{\space\penalty200}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\DTXD@printobjectname} \marg{name w/o backslash} \marg{name} \quad
+% Adds the object name to the index in verbatim.
+% These are passed as arguments instead of directly used here because they must
+% have their value when the index is written instead of when \cs{DTXD@printobjectname}
+% is used when the index is read back.
+%
+% \begin{macrocode}
+\newcommand*{\DTXD@printobjectname}[2]{%
+ #1%
+ \actualchar%
+ \string\verb% %
+ \quotechar%
+ *%
+ \verbatimchar%
+ #2%
+ \verbatimchar%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\DTXD@maybecategory} If there is a category, it is added verbatim.
+% \begin{macrocode}
\newcommand*{\DTXD@maybecategory}{%
\ifdefvoid{\DTXD@category}%
{}%
- {\space[%
+ {
+% \end{macrocode}
+%
+% \cs{DTXDbreak} inserts a possible line break here,
+% allowing a break if the following verbatim is too long.
+% \changes{v1.07}{2022/12/24}{Improved line breaks.}
+% \begin{macrocode}
+ \string\DTXDbreak
+% \end{macrocode}
+% \begin{macrocode}
+ [%
\string\verb%
+ \noexpand\quotechar%
+% \end{macrocode}
+% \changes{v1.07}{2022/12/19}{\cs{verb}*.}
+% \begin{macrocode}
+ *%
\verbatimchar\DTXD@category\verbatimchar%
]}%
}
+% \end{macrocode}
+% \end{macro}
-\newcommand*{\DTXD@macrotocsname}[1]{%
- \ifcat\relax\noexpand#1%
- \expandafter\expandafter\expandafter\@gobble\expandafter\string
- \fi
- #1%
-}
-
+% \begin{macro}{\DTXD@categorylevelname} The simplified name, without backslash.
+% \begin{macrocode}
\newcommand*{\DTXD@categorylevelname}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\DTXD@maybecategorylevel} \marg{object\_type}
+% \quad If a category is assigned, index by category.
+%
+% \begin{description}
+% \item [arg 1:] Type of object, shown between parens (), such as |macro|, |boolean|, etc.
+% \item [\cs{DTXD@category}:] The name of the category, printed in brackets [],
+% such as \cs{macroname}.
+% \item [\cs{DTXD@categorylevelname}:] The simplified name of the category, such as |macroname|.
+% \item [\cs{@gtempa}:] The name of this particular object.
+% \end{description}
+%
+% \changes{v1.07}{2022/12/19}{\cs{verb}*.}
+% \begin{macrocode}
\newcommand*{\DTXD@maybecategorylevel}[1]{%
\ifdefvoid{\DTXD@categorylevelname}%
{}
{%
+% \end{macrocode}
+% Index: \\
+% |categorylevelname=\verb!*+[category]:+>name=\verb!*+<prefix>name+<break>(type)|
+% \begin{macrocode}
\index{%
\DTXD@categorylevelname%
\noexpand\actualchar%
- \string\verb*% %
+ \string\verb% % to fool emacs highlighting
+ \noexpand\quotechar%
+ *%
\noexpand\verbatimchar
[\DTXD@category]:%
\verbatimchar%
\noexpand\levelchar%
-\@gtempa\noexpand\actualchar%
-\string\verb% % to fool emacs highlighting
-\noexpand\quotechar%
-%*
-\noexpand\verbatimchar%
-%\noexpand\bslash
-\@gtempa\noexpand\verbatimchar%
- \ifx\@nil#1\@nil\else \the\@temptokena \fi
+ \noexpand\DTXD@printobjectname{\DTXD@gtempa@nobackslash}{\@gtempa}%
+ \ifblank{#1}{}{\string\DTXDbreak (#1)}%
+% \end{macrocode}
+%
+% \cs{the}\cs{@temptokena} is not used here.
+% \changes{v1.07}{2022/12/19}{Fix occasional crash.}
+%
+% \begin{macrocode}
\noexpand\doc@handleencap{usage}
- }%
+ }% index
}%
}
+% \end{macrocode}
+% \end{macro}
-
+% \begin{macro}{\DTXD@findcategorylevelname}
+% Given \cs{DTXD@category}, create \cs{DTXD@categorylevelname},
+% a detokenized name without backslash.
+% \begin{macrocode}
\newcommand*{\DTXD@findcategorylevelname}{%
\edef\DTXD@categorylevelname{\DTXD@category}%
\edef\DTXD@categorylevelname{\detokenize\expandafter{\DTXD@categorylevelname}}%
@@ -2210,108 +2346,341 @@ pageanchor=true,
{\StrGobbleLeft{\DTXD@categorylevelname}{1}[\DTXD@categorylevelname]}
{}
}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\DTXD@gtempa@nobackslash} A version without the leading backslash.
+% \begin{macrocode}
+\newcommand*{\DTXD@gtempa@nobackslash}{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\DTXD@findgtempa} Detokenize \cs{@gtempa} and
+% also find another version without any leading backslash.
+% \changes{v1.07}{2022/12/19}{Detokenized names.}
+% \begin{macrocode}
+\newcommand*{\DTXD@findgtempa}[1]{%
+ \edef\@gtempa{\detokenize{#1}}%
+ \IfEndWith{\@gtempa}{ }{\StrGobbleRight{\@gtempa}{1}[\@gtempa]}{}%
+ \IfBeginWith{\@gtempa}{\DTXD@backslash}%
+ {\StrGobbleLeft{\@gtempa}{1}[\DTXD@gtempa@nobackslash]}%
+ {\edef\DTXD@gtempa@nobackslash{\@gtempa}}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\doc@createspecialindexes}
+% \marg{1: name} \marg{2: index type} \marg{3: index group}
+% \begin{macrocode}
\def\doc@createspecialindexes#1#2#3{%
\@temptokena{\space (#2)}%
\@temptokenb{#3:}%
+% \end{macrocode}
+%
+% \textbf{Define \cs{SpecialMain<name>Index} \marg{1: name}}
+% \begin{macrocode}
\@nameedef{SpecialMain#1Index}##1{%
- \noexpand\@SpecialIndexHelper@##1\noexpand\@nil% dtxdescribe
+% \end{macrocode}
+%
+% Find \cs{@gtempa}, the name of the object.
+% \begin{macrocode}
+ \noexpand\DTXD@findgtempa{##1}%
+% \end{macrocode}
+%
+% \begin{description}
+% \item[\cs{@temptokena}:] Index (type).
+% \item[\cs{@temptokenb}:] Index group.
+% \item[\cs{@gtempa}:] Detokenized name of the particular object.
+% \item[\cs{DTXD@gtempa@nobackslash}:] Detokenized name without backslash.
+% \end{description}
+%
+% \begin{macrocode}
\noexpand\@bsphack
\noexpand\DTXD@findcategorylevelname% dtxdescribe
+% \end{macrocode}
+% \begin{macrocode}
\ifdoc@toplevel
% \noexpand\special@index{##1\noexpand\actualchar
%
%
- \noexpand\special@index{\noexpand\@gtempa\noexpand\actualchar%
-% {\string\ttfamily\space##1}%
-\string\verb% % to fool emacs highlighting% dtxdescribe
-\noexpand\quotechar%
-%*
-\noexpand\verbatimchar% dtxdescribe
-%\noexpand\bslash
-\noexpand\@gtempa\noexpand\verbatimchar% dtxdescribe
- \ifx\@nil#2\@nil\else \the\@temptokena \fi
- \noexpand\DTXD@maybecategory% dtxdescribe
- \noexpand\encapchar main}%
+% \end{macrocode}
+%
+% Index: \\
+% \verb?name=\verb!*+name+ (type) [category]|main?
+% \begin{macrocode}
+ \noexpand\special@index{%
+ \noexpand\DTXD@printobjectname% dtxdescribe
+ {\noexpand\DTXD@gtempa@nobackslash}%
+ {\noexpand\@gtempa}%
+ \ifx\@nil#2\@nil\else \the\@temptokena \fi
+ \noexpand\DTXD@maybecategory% dtxdescribe
+ \noexpand\encapchar main%
+ }%
+% \end{macrocode}
+%
+% Maybe add the category index entry:
+% \begin{macrocode}
\noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
\fi
%
%
+% \end{macrocode}
+%
+% If group is not empty, index: \\
+% \verb?group:>name=\verb!*+name+ [category]|main?
+%
+% \begin{macrocode}
\ifx\@nil#3\@nil\else
- \noexpand\special@index{\the\@temptokenb\noexpand\levelchar%
+ \noexpand\special@index{%
+ \the\@temptokenb\noexpand\levelchar%
% ##1\noexpand\actualchar{\string\ttfamily\space##1}%
-\noexpand\@gtempa\noexpand\actualchar% dtxdescribe
-\string\verb% % to fool emacs highlighting% dtxdescribe
-\noexpand\quotechar%
-%*
-\noexpand\verbatimchar% dtxdescribe
-%\noexpand\bslash
-\noexpand\@gtempa\noexpand\verbatimchar% dtxdescribe
- \noexpand\DTXD@maybecategory% dtxdescribe
- \noexpand\encapchar main}%
+ \noexpand\DTXD@printobjectname% dtxdescribe
+ {\noexpand\DTXD@gtempa@nobackslash}%
+ {\noexpand\@gtempa}%
+ \noexpand\DTXD@maybecategory% dtxdescribe
+ \noexpand\encapchar main%
+ }%
+% \end{macrocode}
+%
+% Maybe add the category index entry:
+% \begin{macrocode}
\noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
\fi
- \noexpand\@esphack}%
+ \noexpand\@esphack}%
+% \end{macrocode}
%
+% \textbf{Define \cs{Special<name>Index} \marg{1: name}}
%
+% \begin{macrocode}
\@nameedef{Special#1Index}##1{%
- \noexpand\@SpecialIndexHelper@##1\noexpand\@nil% dtxdescribe
+ \noexpand\DTXD@findgtempa{##1}%
+% \end{macrocode}
+%
+% \begin{description}
+% \item[\cs{@temptokena}:] Index (type).
+% \item[\cs{@temptokenb}:] Index group.
+% \item[\cs{@gtempa}:] Detokenized name of the particular object.
+% \item[\cs{DTXD@gtempa@nobackslash}:] Detokenized name without backslash.
+% \end{description}
+%
+% \begin{macrocode}
\noexpand\@bsphack
\noexpand\DTXD@findcategorylevelname% dtxdescribe
+% \end{macrocode}
%
-%
+% If is a top level object, index:\\
+% \verb?name=\verb!*+name+ (type) [category]|usage?
+% \begin{macrocode}
\ifdoc@toplevel
- \noexpand\doc@providetarget
+ \noexpand\doc@providetarget
+% \end{macrocode}
+% \begin{macrocode}
% \noexpand\index{##1\noexpand\actualchar{\string\ttfamily\space##1}%
- \noexpand\index{\noexpand\@gtempa\noexpand\actualchar% dtxdescribe
-\string\verb% % to fool emacs highlighting% dtxdescribe
-\noexpand\quotechar%
-%*
-\noexpand\verbatimchar% dtxdescribe
-%\noexpand\bslash
-\noexpand\@gtempa\noexpand\verbatimchar% dtxdescribe
- \ifx\@nil#2\@nil\else \the\@temptokena \fi
- \noexpand\DTXD@maybecategory% dtxdescribe
- \noexpand\doc@handleencap{usage}}%
- \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
+ \noexpand\index{%
+ \noexpand\DTXD@printobjectname% dtxdescribe
+ {\noexpand\DTXD@gtempa@nobackslash}%
+ {\noexpand\@gtempa}%
+ \ifx\@nil#2\@nil\else \the\@temptokena \fi
+ \noexpand\DTXD@maybecategory% dtxdescribe
+ \noexpand\doc@handleencap{usage}%
+ }%
+% \end{macrocode}
+%
+% Maybe add the category index entry:
+% \begin{macrocode}
+ \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
\fi
%
%
+% \end{macrocode}
+%
+% If group is not empty, index: \\
+% \verb?group:>name=\verb!*+name+ [category]|usage?
+% \begin{macrocode}
\ifx\@nil#3\@nil\else
- \noexpand\index{\the\@temptokenb\noexpand\levelchar%
+ \noexpand\index{%
+ \the\@temptokenb\noexpand\levelchar%
% ##1\noexpand\actualchar{\string\ttfamily\space##1}
-\noexpand\@gtempa\noexpand\actualchar% dtxdescribe
-\string\verb% % to fool emacs highlighting% dtxdescribe
-\noexpand\quotechar
-%*
-\noexpand\verbatimchar% dtxdescribe
-%\noexpand\bslash
-\noexpand\@gtempa\noexpand\verbatimchar% dtxdescribe
- \noexpand\DTXD@maybecategory% dtxdescribe
- \noexpand\doc@handleencap{usage}}%
+ \noexpand\DTXD@printobjectname% dtxdescribe
+ {\noexpand\DTXD@gtempa@nobackslash}%
+ {\noexpand\@gtempa}%
+ \noexpand\DTXD@maybecategory% dtxdescribe
+ \noexpand\doc@handleencap{usage}%
+ }%
+% \end{macrocode}
+%
+% Maybe add the category index entry:
+% \begin{macrocode}
\noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
\fi
%
%
\noexpand\@esphack}}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\doc@createspecialmacrolikeindexes}
+% \marg{1: name} \marg{2: index type} \marg{3: index group}
+% \changes{v1.07}{2022/12/24}{Added category names for macros.}
+% \begin{macrocode}
+\def\doc@createspecialmacrolikeindexes#1#2#3{%
+ \@temptokena{\space (#2)}%
+ \@temptokenb{#3:}%
+% \end{macrocode}
+%
+% \textbf{Define \cs{Code<name>Index} \marg{1: |main| or |usage|} \marg{2: name}}
+%
+% \begin{macrocode}
+ \@nameedef{Code#1Index}##1##2{%
+ \noexpand\DTXD@findgtempa{##2}%
+% \end{macrocode}
+%
+% \begin{description}
+% \item[\cs{@temptokena}:] Index type.
+% \item[\cs{@temptokenb}:] Index group.
+% \item[\cs{@gtempa}:] Detokenized name of the particular object.
+% \item[\cs{DTXD@gtempa@nobackslash}:] Detokenized name without backslash.
+% \end{description}
+%
+% \begin{macrocode}
+ \noexpand\@bsphack
+ \noexpand\DTXD@findcategorylevelname% dtxdescribe
+% \end{macrocode}
+% \begin{macrocode}
+ \noexpand\ifdoc@noindex\noexpand\else
+% \end{macrocode}
+%
+% If a top level object, index:\\
+% \verb?name=\verb!*+\name+ (type) [category]|<main or usage>?
+% \begin{macrocode}
+ \ifdoc@toplevel
+ \noexpand\special@index{%
+ \noexpand\DTXD@printobjectname% dtxdescribe
+ {\noexpand\DTXD@gtempa@nobackslash}%
+ {\noexpand\@gtempa}%
+ \ifx\@nil#2\@nil\else \the\@temptokena \fi
+ \noexpand\DTXD@maybecategory% dtxdescribe
+ \noexpand\encapchar ##1%
+ }%
+% \end{macrocode}
+%
+% Maybe add the category index entry:
+% \begin{macrocode}
+ \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
+ \fi
+% \end{macrocode}
+%
+% If group is not empty, index: \\
+% \verb?group:>name=\verb!*+\name+ [category]|<main or usage>?
+% \begin{macrocode}
+ \ifx\@nil#3\@nil\else
+ \noexpand\special@index{%
+ \the\@temptokenb\noexpand\levelchar
+ \noexpand\DTXD@printobjectname% dtxdescribe
+ {\noexpand\DTXD@gtempa@nobackslash}%
+ {\noexpand\@gtempa}%
+ \noexpand\DTXD@maybecategory% dtxdescribe
+ \noexpand\encapchar ##1%
+ }%
+% \end{macrocode}
+%
+% Maybe add the category index entry:
+% \begin{macrocode}
+ \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
+ \fi
+ \noexpand\fi
+ \noexpand\@esphack}%
+% \end{macrocode}
+%
+% \textbf{Define \cs{SpecialMain<name>Index} \marg{1: name}}
+% \begin{macrocode}
+ \@nameedef{SpecialMain#1Index}##1{%
+ \expandafter\noexpand\csname Code#1Index\endcsname
+ {main}{##1}}%
+% \end{macrocode}
+%
+% \textbf{Define \cs{Special<name>Index} \marg{1: name}}
+% \begin{macrocode}
+ \@nameedef{Special#1Index}##1{%
+ \noexpand\DTXD@findgtempa{##1}%
+% \end{macrocode}
+%
+% \begin{description}
+% \item[\cs{@temptokena}:] Index type.
+% \item[\cs{@temptokenb}:] Index group.
+% \item[\cs{@gtempa}:] Detokenized name of the particular object.
+% \item[\cs{DTXD@gtempa@nobackslash}:] Detokenized name without backslash.
+% \end{description}
+%
+% \begin{macrocode}
+ \noexpand\@bsphack
+ \noexpand\DTXD@findcategorylevelname% dtxdescribe
+% \end{macrocode}
+% \begin{macrocode}
+ \noexpand\ifdoc@noindex\noexpand\else
+% \end{macrocode}
+%
+% If a top level object, index:\\
+% \verb?name=\verb!*+\name+ (type) [category]|usage?
+% \begin{macrocode}
+ \ifdoc@toplevel
+ \noexpand\doc@providetarget
+ \noexpand\index{%
+ \noexpand\DTXD@printobjectname% dtxdescribe
+ {\noexpand\DTXD@gtempa@nobackslash}%
+ {\noexpand\@gtempa}%
+ \ifx\@nil#2\@nil\else \the\@temptokena \fi
+ \noexpand\DTXD@maybecategory% dtxdescribe
+ \noexpand\doc@handleencap{usage}%
+ }%
+% \end{macrocode}
+%
+% Maybe add the category index entry:
+% \begin{macrocode}
+ \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
+ \fi
+% \end{macrocode}
+%
+% If group is not empty, index: \\
+% \verb?group:>name=\verb!*+\name+ [category]|usage?
+% \begin{macrocode}
+ \ifx\@nil#3\@nil\else
+ \noexpand\index{%
+ \the\@temptokenb\noexpand\levelchar
+ \noexpand\DTXD@printobjectname% dtxdescribe
+ {\noexpand\DTXD@gtempa@nobackslash}%
+ {\noexpand\@gtempa}%
+ \noexpand\DTXD@maybecategory% dtxdescribe
+ \noexpand\doc@handleencap{usage}%
+ }%
+% \end{macrocode}
+%
+% Maybe add the category index entry:
+% \begin{macrocode}
+ \noexpand\DTXD@maybecategorylevel{#2}% dtxdescribe
+ \fi
+ \noexpand\fi
+ \noexpand\@esphack}}
}{}% doc loaded
% \end{macrocode}
+% \end{macro}
-% \subsection{\cs{DescribeMacro} and \cs{DescribeEnvironment}}
+% \subsection{Not \pkg{doc}: \cs{DescribeMacro} and \cs{DescribeEnvironment}}
-% \begin{macro}{\DescribeMacro} \oarg{class} \marg{\cs{name}}
+% \begin{macro}{\DescribeMacro} \oarg{category} \marg{\cs{name}}
%
-% Redefined to allow hyperlinked index entries and an optional class:
+% Redefined to allow hyperlinked index entries and an optional category:
%
% \changes{v1.00}{2019/01/09}{Sans tag font.}
-% \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
+% \changes{v1.01}{2019/01/20}{Put margin tag category in brackets.}
% \changes{v1.02}{2019/07/14}{Fix if not \pkg{ltxdoc} class.}
% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
% \begin{macrocode}
-\IfPackageLoadedTF{doc}{
-}{% not doc
+\IfPackageLoadedTF{doc}{}{% not doc
\providecommand*{\DescribeMacro}{}
\renewcommand*{\DescribeMacro}[2][]{%
@@ -2326,7 +2695,7 @@ pageanchor=true,
\hbadness=10000%
\hfuzz=5em%
\raggedleft%
- \ifblank{#1}{}{{\scriptsize\textsf{[#1]}} }% class
+ \ifblank{#1}{}{{\scriptsize\textsf{[#1]}} }% category
\cmd{#2}% name
}%
}% marginpar
@@ -2335,32 +2704,32 @@ pageanchor=true,
%
% Write the index sorted by the name without the backslash,
% followed by the actual name with the backslash.
-% Append the class if given.
+% Append the category if given.
%
-% Write name=csname>(class)\verb+|usage+
+% Write name=csname>[category]\verb+|usage+
% \begin{macrocode}
\begingroup%
\DTXD@origwrindex{%
\DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2}% name
- \ifblank{#1}{}{\levelchar[#1]}% class
+ \ifblank{#1}{}{\levelchar[#1]}% category
\encapchar usage%
}%
% \end{macrocode}
-% Only if a class was given:
+% Only if a category was given:
% \begin{macrocode}
\ifblank{#1}%
-{}% no class
-{% class given
-% Again, and prepend the class:
+{}% no category
+{% category given
+% Again, and prepend the category:
%
-% Write class=(class):>name=csname\verb+|usage+
+% Write category=[category]:>name=csname\verb+|usage+
% \begin{macrocode}
\begingroup%
\DTXD@origwrindex{%
#1\actualchar[#1]:\levelchar%
\DTXD@macroname{#2}\actualchar\DTXD@verbatimcmd{#2}%
\encapchar usage}%
-}% class given
+}% category given
\@esphack%
\ignorespaces%
}
@@ -2371,7 +2740,7 @@ pageanchor=true,
-% \begin{macro}{\DescribeEnv} \oarg{class} \marg{environment name}
+% \begin{macro}{\DescribeEnv} \oarg{category} \marg{environment name}
%
% Redefined to allow hyperlinked index entries:
% \changes{v1.02}{2019/07/14}{Fix if not \pkg{ltxdoc} class.}
@@ -2392,18 +2761,14 @@ pageanchor=true,
% \subsection{New \cs{Describe\dots} macros}
-% \begin{macro}{\DTX@filename} Stores the filename with a sanitized underscore.
-% \begin{macrocode}
-\newcommand*{\DTXD@filename}{}
-% \end{macrocode}
-% \end{macro}
-
-
% \begin{macro}{\DTXD@filemarginparindex}
-% \marg{class} \marg{name} \marg{margin tag} \marg{index tag} \marg{main/usage}
+% \marg{category} \marg{name} \marg{margin tag} \marg{index tag} \marg{main/usage}
%
% The name may have underscores.
% \begin{macrocode}
+\IfPackageLoadedTF{doc}{}{% not doc
+\newcommand*{\DTXD@filename}{}
+
\newcommand*{\DTXD@filemarginparindex}[5]{%
% \end{macrocode}
% Create a detokenized version of the filename\dots
@@ -2418,7 +2783,7 @@ pageanchor=true,
% The original filename is printed in the margin.
% Any underscore characters have already been disabled
% by the \cs{catcode} change.
-% \changes{v1.00}{2019/01/10}{Fix: File class.}
+% \changes{v1.00}{2019/01/10}{Fix: File category.}
% \begin{macrocode}
\DTXD@margintag{#1}{#2}{#3}%
% \end{macrocode}
@@ -2432,20 +2797,33 @@ pageanchor=true,
\endgroup%
\ignorespaces%
}
+}% not doc
% \end{macrocode}
% \end{macro}
%
%
-%
-% \begin{macro}{\DTXD@DescribeFile} \oarg{class} \marg{name}
-%
-% The name may have underscores.
+% \begin{macro}{\DescribeMacro} \quad Redefine with new definitions.
+% \begin{macro}{\DescribeEnvironment} \quad Redefine with new definitions.
% \begin{macrocode}
-\newcommand*{\DTXD@DescribeFile}[2][]{%
-\DTXD@filemarginparindex{#1}{#2}{File}{file}{usage}%
-}
+\IfPackageLoadedTF{doc}{% doc
+
+\RenewDocElement[macrolike = true ,
+ idxtype = ,
+ idxgroup = ,
+ printtype =
+ ]{Macro}{macro}
+
+\RenewDocElement[macrolike = false ,
+ idxtype = env. ,
+ idxgroup = environments ,
+ printtype = \textit{env.}
+ ]{Env}{environment}
+
+}{}% doc
% \end{macrocode}
% \end{macro}
+% \end{macro}
+%
%
%
% \begin{macro}{\DescribeFile} \marg{name}
@@ -2457,7 +2835,7 @@ pageanchor=true,
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=file,
idxgroup=Files,
printtype=\textit{file}
@@ -2465,6 +2843,10 @@ pageanchor=true,
}{% not doc
+\newcommand*{\DTXD@DescribeFile}[2][]{%
+ \DTXD@filemarginparindex{#1}{#2}{File}{file}{usage}%
+}
+
\newcommand*{\DescribeFile}{%
\begingroup\catcode`\_=12 \DTXD@DescribeFile%
}
@@ -2474,15 +2856,6 @@ pageanchor=true,
% \end{macro}
%
%
-% \begin{macro}{\DTXD@DescribeProgram} \oarg{class} \marg{name}
-%
-% The name may have underscores.
-% \begin{macrocode}
-\newcommand*{\DTXD@DescribeProgram}[2][]{%
-\DTXD@filemarginparindex{#1}{#2}{Prog}{program}{usage}%
-}
-% \end{macrocode}
-% \end{macro}
%
%
% \begin{macro}{\DescribeProgram} \marg{name}
@@ -2494,7 +2867,7 @@ pageanchor=true,
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=program,
idxgroup=Programs,
printtype=\textit{Prog}
@@ -2502,8 +2875,12 @@ pageanchor=true,
}{% not doc
+\newcommand*{\DTXD@DescribeProgram}[2][]{%
+ \DTXD@filemarginparindex{#1}{#2}{Prog}{program}{usage}%
+}
+
\newcommand*{\DescribeProgram}{%
-\begingroup\catcode`\_=12 \DTXD@DescribeProgram%
+ \begingroup\catcode`\_=12 \DTXD@DescribeProgram%
}
}% not doc
@@ -2511,16 +2888,6 @@ pageanchor=true,
% \end{macro}
-% \begin{macro}{\DTXD@DescribeCommand} \oarg{class} \marg{name}
-%
-% The name may have underscores.
-% \begin{macrocode}
-\newcommand*{\DTXD@DescribeCommand}[2][]{%
-\DTXD@filemarginparindex{#1}{#2}{Cmd}{command}{usage}%
-}
-% \end{macrocode}
-% \end{macro}
-%
%
% \begin{macro}{\DescribeCommand} \marg{name}
%
@@ -2531,7 +2898,7 @@ pageanchor=true,
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=command,
idxgroup=Commands,
printtype=\textit{Cmd}
@@ -2539,8 +2906,12 @@ pageanchor=true,
}{% not doc
+\newcommand*{\DTXD@DescribeCommand}[2][]{%
+ \DTXD@filemarginparindex{#1}{#2}{Cmd}{command}{usage}%
+}
+
\newcommand*{\DescribeCommand}{%
-\begingroup\catcode`\_=12 \DTXD@DescribeCommand%
+ \begingroup\catcode`\_=12 \DTXD@DescribeCommand%
}
}% not doc
@@ -2549,16 +2920,6 @@ pageanchor=true,
%
-% \begin{macro}{\DTXD@DescribePackage} \oarg{class} \marg{name}
-% The name may have underscores.
-% \begin{macrocode}
-\newcommand*{\DTXD@DescribePackage}[2][]{%
-\DTXD@filemarginparindex{#1}{#2}{Pkg}{package}{usage}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
% \begin{macro}{\DescribePackage} \marg{name}
%
% The underscore character is temporarily disabled, then
@@ -2570,7 +2931,7 @@ pageanchor=true,
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=package,
idxgroup=Packages,
printtype=\textit{Pkg}
@@ -2578,8 +2939,12 @@ pageanchor=true,
}{% not doc
+\newcommand*{\DTXD@DescribePackage}[2][]{%
+ \DTXD@filemarginparindex{#1}{#2}{Pkg}{package}{usage}%
+}
+
\newcommand*{\DescribePackage}{%
-\begingroup\catcode`\_=12 \DTXD@DescribePackage%
+ \begingroup\catcode`\_=12 \DTXD@DescribePackage%
}
}% not doc
@@ -2587,16 +2952,6 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\DTXD@DescribeClass} \oarg{class} \marg{name}
-%
-% The name may have underscores.
-% \begin{macrocode}
-\newcommand*{\DTXD@DescribeClass}[2][]{%
-\DTXD@filemarginparindex{#1}{#2}{Cls}{class}{usage}%
-}
-% \end{macrocode}
-% \end{macro}
-%
%
% \begin{macro}{\DescribeClass} \marg{name}
%
@@ -2609,7 +2964,7 @@ pageanchor=true,
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=class,
idxgroup=Classes,
printtype=\textit{Cls}
@@ -2617,21 +2972,25 @@ pageanchor=true,
}{% not doc
+\newcommand*{\DTXD@DescribeClass}[2][]{%
+ \DTXD@filemarginparindex{#1}{#2}{Cls}{class}{usage}%
+}
+
\newcommand*{\DescribeClass}{%
-\begingroup\catcode`\_=12 \DTXD@DescribeClass%
+ \begingroup\catcode`\_=12 \DTXD@DescribeClass%
}
}% not doc
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\DescribeOption} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeOption} \oarg{category} \marg{name}
% \begin{macrocode}
\IfPackageLoadedTF{doc}{% doc
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=option,
idxgroup=Options,
printtype=\textit{Opt}
@@ -2646,15 +3005,15 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\DescribeArgument} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeArgument} \oarg{category} \marg{name}
%
-% The |class| may be used to categorize arguments by their macro or environment name.
+% The |category| may be used to categorize arguments by their macro or environment name.
% \begin{macrocode}
\IfPackageLoadedTF{doc}{% doc
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=argument,
idxgroup=Arguments,
printtype=\textit{Arg}
@@ -2669,13 +3028,13 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\DescribeBoolean} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeBoolean} \oarg{category} \marg{name}
% \begin{macrocode}
\IfPackageLoadedTF{doc}{% doc
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=boolean,
idxgroup=Booleans,
printtype=\textit{bool}
@@ -2690,13 +3049,13 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\DescribeLength} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeLength} \oarg{category} \marg{name}
% \begin{macrocode}
\IfPackageLoadedTF{doc}{% doc
\NewDocElement[
macrolike=true,
- toplevel=false,
+ toplevel=true,
idxtype=length,
idxgroup=Lengths,
printtype=\textit{Len}
@@ -2711,13 +3070,13 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\DescribeCounter} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeCounter} \oarg{category} \marg{name}
% \begin{macrocode}
\IfPackageLoadedTF{doc}{% doc
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=counter,
idxgroup=Counters,
printtype=\textit{Ctr}
@@ -2732,14 +3091,14 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\DescribeHook} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeHook} \oarg{category} \marg{name}
% \changes{v1.03}{2021/12/18}{Added.}
% \begin{macrocode}
\IfPackageLoadedTF{doc}{% doc
\NewDocElement[
- macrolike=false,
- toplevel=false,
+ macrolike=true,
+ toplevel=true,
idxtype=hook,
idxgroup=Hooks,
printtype=\textit{Hook}
@@ -2755,15 +3114,15 @@ pageanchor=true,
% \end{macro}
%
%
-% \begin{macro}{\DescribeKey} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeKey} \oarg{category} \marg{name}
%
-% The |class| may be used to categorize keys by their kev/value group.
+% The |category| may be used to categorize keys by their kev/value group.
% \begin{macrocode}
\IfPackageLoadedTF{doc}{% doc
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=key,
idxgroup=Keys,
printtype=\textit{Key}
@@ -2779,12 +3138,12 @@ pageanchor=true,
% \end{macro}
%
%
-% \begin{macro}{\DescribeObject} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeObject} \oarg{category} \marg{name}
%
% May be used to describe an arbitrary piece of code.
% Creates a margin tag and index entries with \cs{ttfamily}.
%
-% \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
+% \changes{v1.01}{2019/01/20}{Put margin tag category in brackets.}
% \changes{v1.02}{2019/07/14}{Added \cs{ignorespaces}.}
% \changes{v1.02}{2019/07/16}{\cs{raggedleft} margin par.}
% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
@@ -2793,7 +3152,7 @@ pageanchor=true,
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=object,
idxgroup=Objects,
printtype=,
@@ -2841,11 +3200,11 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\DescribeOther} \oarg{class} \marg{name}
+% \begin{macro}{\DescribeOther} \oarg{category} \marg{name}
%
% May be used to describe an arbitrary non-programming object.
% Creates a margin tag and index entries with roman type.
-% \changes{v1.01}{2019/01/20}{Put margin tag class in brackets.}
+% \changes{v1.01}{2019/01/20}{Put margin tag category in brackets.}
% \changes{v1.02}{2019/07/14}{Added \cs{ignorespaces}.}
% \changes{v1.02}{2019/07/16}{\cs{raggedleft} margin par.}
% \changes{v1.03}{2022/01/08}{Reduce hbox warnings.}
@@ -2854,7 +3213,7 @@ pageanchor=true,
\NewDocElement[
macrolike=false,
- toplevel=false,
+ toplevel=true,
idxtype=other,
idxgroup=Other,
printtype=,
@@ -2930,7 +3289,7 @@ pageanchor=true,
%
% The following are for use inside a \env{description}.
%
-% \begin{macro}{\ItemDescribeMacro} \oarg{class} \marg{\cs{name}}
+% \begin{macro}{\ItemDescribeMacro} \oarg{category} \marg{\cs{name}}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeMacro}[2][]{%
@@ -2941,7 +3300,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeEnv} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeEnv} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeEnv}[2][]{%
@@ -2952,7 +3311,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeArgument} \oarg{class} \marg{argument}
+% \begin{macro}{\ItemDescribeArgument} \oarg{category} \marg{argument}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeArgument}[2][]{%
@@ -2963,7 +3322,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeBoolean} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeBoolean} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeBoolean}[2][]{%
@@ -2974,7 +3333,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeLength} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeLength} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeLength}[2][]{%
@@ -2985,7 +3344,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeCounter} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeCounter} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeCounter}[2][]{%
@@ -2996,7 +3355,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeHook} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeHook} \oarg{category} \marg{name}
% \changes{v1.03}{2021/12/18}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeHook}[2][]{%
@@ -3007,7 +3366,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeKey} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeKey} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeKey}[2][]{%
@@ -3018,7 +3377,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribePackage} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribePackage} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\DTXD@ItemDescribePackage}[2][]{%
@@ -3034,7 +3393,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeClass} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeClass} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\DTXD@ItemDescribeClass}[2][]{%
@@ -3050,7 +3409,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeOption} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeOption} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeOption}[2][]{%
@@ -3062,7 +3421,7 @@ pageanchor=true,
% \end{macro}
-% \begin{macro}{\ItemDescribeFile} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeFile} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\DTXD@ItemDescribeFile}[2][]{%
@@ -3078,7 +3437,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeProgram} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeProgram} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\DTXD@ItemDescribeProgram}[2][]{%
@@ -3094,7 +3453,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeCommand} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeCommand} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\DTXD@ItemDescribeCommand}[2][]{%
@@ -3110,7 +3469,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeObject} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeObject} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeObject}[2][]{%
@@ -3121,7 +3480,7 @@ pageanchor=true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\ItemDescribeOther} \oarg{class} \marg{name}
+% \begin{macro}{\ItemDescribeOther} \oarg{category} \marg{name}
% \changes{v1.00}{2019/01/09}{Added.}
% \begin{macrocode}
\newcommand{\ItemDescribeOther}[2][]{%
@@ -3353,7 +3712,8 @@ pageanchor=true,
% \end{macrocode}
-% \DescribeMacro[dtxexamplefloat]{\DeclareFloatingEnvironment} A new float type for the examples.
+% \DescribeMacro[dtxexamplefloat]{\DeclareFloatingEnvironment}
+% A new float type for the examples.
% \begin{macrocode}
\DeclareFloatingEnvironment[
fileext=lox,
@@ -3379,7 +3739,8 @@ position=top,
% \DescribeMacro[dtxexamplefloat]{\crefname} Name for \pkg{cleveref}.
% \cs{crefname} here is required for documents not using the doc class:
% \begin{macrocode}
-\AddToHook{begindocument/before}{% Before .aux file is loaded.
+%\AddToHook{begindocument/after}{% Before .aux file is loaded.
+\AtBeginDocument{
\ifdef{\crefname}{
\crefname{dtxexamplefloat}{example}{examples}
}{}
@@ -3929,7 +4290,7 @@ position=top,
{\hspace{-.1667em}\raisebox{-.5ex}{E}\hspace{-.125em}}
\AtBeginDocument{
-\@ifpackageloaded{graphics}{
+\IfPackageLoadedTF{graphics}{
\renewrobustcmd*{\XeTeXrevE}
{\hspace{-.1667em}\raisebox{-.5ex}{\reflectbox{E}}\hspace{-.125em}}
}{}
diff --git a/macros/latex/contrib/dtxdescribe/dtxdescribe.pdf b/macros/latex/contrib/dtxdescribe/dtxdescribe.pdf
index c5b4ee1fe9..1267977d0b 100644
--- a/macros/latex/contrib/dtxdescribe/dtxdescribe.pdf
+++ b/macros/latex/contrib/dtxdescribe/dtxdescribe.pdf
Binary files differ
diff --git a/macros/latex/contrib/keyfloat/README.txt b/macros/latex/contrib/keyfloat/README.txt
index dbb9df58a6..68e9eabfef 100644
--- a/macros/latex/contrib/keyfloat/README.txt
+++ b/macros/latex/contrib/keyfloat/README.txt
@@ -1,8 +1,8 @@
The LaTeX keyfloat package
Provides a key/value interface for generating floats.
-v2.07
-Copyright 2016-2022 Brian Dunn — www.BDTechConcepts.com
+v2.08
+Copyright 2016-2023 Brian Dunn — www.BDTechConcepts.com
LaTeX Project Public License, version 1.3
diff --git a/macros/latex/contrib/keyfloat/keyfloat.dtx b/macros/latex/contrib/keyfloat/keyfloat.dtx
index edd35cb03b..738124bb8f 100644
--- a/macros/latex/contrib/keyfloat/keyfloat.dtx
+++ b/macros/latex/contrib/keyfloat/keyfloat.dtx
@@ -1,7 +1,7 @@
%
% \iffalse meta-comment
%
-% Copyright 2016--2022 Brian Dunn
+% Copyright 2016--2023 Brian Dunn
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -17,7 +17,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{keyfloat}
-%<package> [2022/01/10 v2.07 Key/value interface for floats and subfloats.]
+%<package> [2023/01/03 v2.08 Key/value interface for floats and subfloats.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -108,22 +108,6 @@
\usepackage{caption}
\usepackage{newfloat}
-\DeclareFloatingEnvironment[
-fileext=lox,
-listname={List of Examples},
-name=Example,
-placement=hbp
-]{example}
-
-\captionsetup*[example]{
-format=hang,
-font=bf,
-justification=raggedright,
-singlelinecheck=false,
-skip=0pt,
-position=top,
-}
-
\captionsetup{labelfont={small,bf},textfont={small,bf}}
\captionsetup*[figure]{
@@ -152,12 +136,6 @@ position=top,
position=top
}
-\captionsetup*[example]{
- format=plain, justification=justified,
- margin=0pt, parskip=0pt, skip=0ex,
- labelfont={bf},textfont={bf}
-}
-
\captionsetup*[wrapfigure]{
style=default, justification=centering,
margin=0pt, parskip=0pt, skip=2ex,
@@ -225,7 +203,7 @@ frametitlerulewidth=1pt,frametitleaboveskip=5pt,%
% Indexing, logos, \Describexxxx, etc:
-\usepackage{dtxdescribe}[2021/09/02]
+\usepackage{dtxdescribe}[2023/01/03]
@@ -282,17 +260,22 @@ D & E & F \\
\usepackage{\mypackagename}
-\usepackage[pdftex,bookmarks=true,hidelinks,%
-colorlinks,linkcolor=mylinkcolor,urlcolor=myurlcolor,%
-pageanchor=true,hyperindex=true,
-]{hyperref}
+%\usepackage[pdftex,bookmarks=true,hidelinks,%
+%colorlinks,linkcolor=mylinkcolor,urlcolor=myurlcolor,%
+%pageanchor=true,hyperindex=true,
+%]{hyperref}
+\AtBeginDocument{
\hypersetup{%
pdfinfo={%
Title={The LaTeX \mypackagename\ package},%
Author={Brian Dunn},%
Subject={A key/value interface for LaTeX floats.},%
Keywords={LaTeX, floats, key/val, subcaption, rows}%
+colorlinks,%
+linkcolor=mylinkcolor,%
+urlcolor=myurlcolor,%
+pageanchor=true,
}}
\pdfstringdefDisableCommands{
@@ -312,9 +295,12 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
\def\element#1{#1}
\def\attribute#1{#1}
}
+}% AtBeginDocument
+\AddToHook{begindocument/before}{% Before .aux file is loaded.
+ \usepackage{cleveref}% If needed.
+}
-\usepackage{cleveref}
@@ -339,23 +325,6 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
%<*package>
% \fi
%
-% \CheckSum{1400}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
% \changes{v0.10}{2016/12/01}{\ 2016/12/01 Initial ver.}
% \changes{v0.11}{2016/12/02}{\ 2016/12/02}
@@ -382,7 +351,8 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
% \changes{v2.06}{2021/06/29}{2021/06/29}
% \changes{v2.07}{2021/08/30}{Docs: Show macro and environment nesting.}
% \changes{v2.07}{2022/01/10}{2022/01/10}
-
+% \changes{v2.08}{2023/01/03}{Docs updated for \pkg{dtxdescribe}.}
+% \changes{v2.08}{2023/01/03}{2023/01/03}
% \GetFileInfo{\mypackagename.sty}
@@ -405,7 +375,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
%
% \bigskip
%
-% {\small\textcopyright{} 2016--2022} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2023} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
%
% \vspace{.5in}
%
@@ -431,8 +401,8 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
% \noindent
% The \pkg{keyfloat} package provides a key/value user interface for quickly
% creating figures with a single image each, figures with arbitrary contents,
-% tables, subfloats, rows of floats, floats located [H]ere,
-% floats in the [M]argin, and floats with text [W]rapped around them.
+% tables, subfloats, rows of floats, floats located |[H|]ere,
+% floats in the |[M]|argin, and floats with text |[W]|rapped around them.
%
% Key/value combinations may specify a caption and label, a width proportional
% to \cs{linewidth}, a fixed width and/or height, rotation, scaling, a
@@ -490,7 +460,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
% \clearpage
%
% \tableofcontents
-% \listofexamples
+% \listofdtxexamplefloats
% \listoffigures
% \listoftables
%
@@ -1175,7 +1145,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
%
% \Cref{fig:linewidth} is half of \cs{linewidth} in size.
% \margintag{\cs{linewidth}}
-% \gindex{image>\cs{linewidth}}\gindex{\cs{linewidth}}
+% \gindex{image>linewidth=\cs{linewidth}}\gindex{linewidth=\cs{linewidth}}
% \gindex{subfloat>\cs{linewidth}}\gindex{keyfloats>\cs{linewidth}}
% When the |lw| key is used inside a \env{keyfloats} or \env{keysubfigs} environment,
% the \cs{linewidth} will be proportional to the sub-box for each element.
@@ -1224,7 +1194,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
% Unless a width is given, a box is the full \cs{linewidth}.
% \margintag{rotated whitespace}
% When rotated, this extra horizontal space is rotated into extra vertical space.
-% \gindex{rotate>box width and vertical space}\gindex{\cs{linewidth}>with rotation}
+% \gindex{rotate>box width and vertical space}\gindex{linewidth=\cs{linewidth}>with rotation}
% \trouble{rotate>extra space}
% To avoid this extra space, set a |w| or |lw| to be wide enough
% \watchout[box width]
@@ -1373,7 +1343,7 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
% Note that \cs{linewidth} is adjusted for each row and nested row,
% \watchout[\cs{linewidth}]
% so the |lw| key may need to be changed if a float is moved to a different nesting level.
-% \trouble{\cs{linewidth}}\gindex{\cs{linewidth}>subfloats}
+% \trouble{linewidth=\cs{linewidth}}\gindex{linewidth=\cs{linewidth}>subfloats}
% \gindex{subfloat>\cs{linewidth}}
%
% Fixed-width or fixed-height floats may be too large to fit
@@ -1608,9 +1578,20 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
%
%
% \clearpage
+%
% \subsubsection{Wrapped floats}
% \changes{v0.12}{2016/12/03}{Docs: Wrapped float examples.}
%
+% Note: If you see the warning:
+% \watchout[\pkg{wrapfig} warning]\gindex{wrapfig=\pkg{wrapfig} collision warning}
+% \begin{center}
+% |Package wrapfig Warning: Collision between wrapping environments|
+% \end{center}
+% then \pkg{wrapfig} was not able to wrap the paragraph correctly.
+% Try adding \cs{clearpage} or \cs{newpage} before the wrapped object,
+% or see the \pkg{needspace} package to automatically insert
+% a \cs{newpage} if necessary.
+%
% \begin{dtxexample}[\Cref{fig:keyfigw,tab:keytabw}]
% {Using \cs{keyfig}\optn{[W]} and \cs{keytab}\optn{[W]}\label{ex:keyfigw}}
% \keyfig[W]{c={A \cs{keyfig}\optn{[W]}},
@@ -1626,16 +1607,21 @@ Keywords={LaTeX, floats, key/val, subcaption, rows}%
%
% \begin{dtxexample}[\Cref{fig:keyfigboxw} and the \cs{keyparbox}.]
% {Using \cs{keyfigbox}\optn{[W]} and \cs{keyparbox}\optn{[W]}\label{ex:keyfigboxw}}
-% \keyfigbox[W]{c={A \cs{keyfigbox}\optn{[W]}},
+% \keyfigbox[W]{
+% c={A \cs{keyfigbox}\optn{[W]}},
% l=fig:keyfigboxw,f,lw=.25,wp=I, wn=7,
% t=Text text text text text text text text text
% }{The contents.}
% \blindtext
-% \keyparbox[W]{w=1in}{A \cs{keyparbox}[W] and some more text.}
+% \keyparbox[W]{w=1in}{
+% A \cs{keyparbox}[W] and some text.
+% No caption or numbering.
+% }
% \blindtext
% \end{dtxexample}
%
+% \clearpage
%
% \begin{dtxexample}[\Cref{fig:keyfigurew,tab:keytablew}]
% {Using \cs{keyfigure}\optn{[W]} and \cs{keytable}\optn{[W]}\label{ex:keyfiguretablew}}
diff --git a/macros/latex/contrib/keyfloat/keyfloat.pdf b/macros/latex/contrib/keyfloat/keyfloat.pdf
index 648038fb1a..f9865fb0ee 100644
--- a/macros/latex/contrib/keyfloat/keyfloat.pdf
+++ b/macros/latex/contrib/keyfloat/keyfloat.pdf
Binary files differ
diff --git a/macros/latex/contrib/lwarp/README.txt b/macros/latex/contrib/lwarp/README.txt
index ce7ece3bf8..a94a25b44c 100644
--- a/macros/latex/contrib/lwarp/README.txt
+++ b/macros/latex/contrib/lwarp/README.txt
@@ -1,5 +1,5 @@
-LaTeX lwarp package v0.909 README.txt
+LaTeX lwarp package v0.910 README.txt
Files included are:
@@ -41,7 +41,7 @@ and version 1.3 or later is part of all distributions of LaTeX
version 2005/12/01 or later.
-Copyright 2016-2022 Brian Dunn
+Copyright 2016-2023 Brian Dunn
Homepage: http://BDTechConcepts.com
Email: bd@BDTechConcepts.com
diff --git a/macros/latex/contrib/lwarp/lwarp.dtx b/macros/latex/contrib/lwarp/lwarp.dtx
index d2ff6b6e28..e4c5d8b7b8 100644
--- a/macros/latex/contrib/lwarp/lwarp.dtx
+++ b/macros/latex/contrib/lwarp/lwarp.dtx
@@ -1,7 +1,7 @@
%
% \iffalse meta-comment
%
-% Copyright 2016-2022 Brian Dunn
+% Copyright 2016-2023 Brian Dunn
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{lwarp}
-%<package> [2022/11/22 v0.909 Allows LaTeX to directly produce HTML5 output.]
+%<package> [2023/01/03 v0.910 Allows LaTeX to directly produce HTML5 output.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -197,7 +197,7 @@
% Indexing, logos, \Describexxxx, etc:
-\usepackage{dtxdescribe}[2021/12/18]
+\usepackage{dtxdescribe}[2023/01/03]
\usepackage{splitidx}
@@ -235,7 +235,7 @@ pdfinfo={%
}}
}
-\AtEndPreamble{
+\AddToHook{begindocument/before}{
\usepackage{cleveref}
}
@@ -1926,7 +1926,8 @@ Avoid using the \cs{includegraphics} \optn{scale} option. Change:
\trouble{graphics>scale=\optn{scale} option}
\begin{sourcedisplay}
\cs{includegraphics}[scale=<xx>]\{\,\dots\}
-\end{sourcedisplay} to:
+\end{sourcedisplay}
+to:
\begin{sourcedisplay}
\cs{includegraphics}[width=<yy>\textbackslash{linewidth}]\{\,\dots\}
\end{sourcedisplay}
@@ -3282,24 +3283,6 @@ This boolean may be tested by the user for later use.
%<*package>
% \fi
%
-% \CheckSum{55554}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-
%
% \changes{v0.10}{2016/03/08}{\ 2016/03/08 Initial version}
% \changes{v0.11}{2016/03/11}{\ 2016/03/11}
@@ -3436,6 +3419,7 @@ This boolean may be tested by the user for later use.
% \changes{v0.907}{2022/07/11}{\ 2022/07/11}
% \changes{v0.908}{2022/07/13}{\ 2022/07/13}
% \changes{v0.909}{2022/11/22}{\ 2022/11/22}
+% \changes{v0.910}{2023/01/03}{\ 2023/01/03}
@@ -3468,7 +3452,7 @@ This boolean may be tested by the user for later use.
%
% \fileversion{} \Dash \filedate
%
-% {\small\textcopyright{} 2016--2022} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2023} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
%
% \end{center}
%
@@ -3669,14 +3653,13 @@ This boolean may be tested by the user for later use.
% see the end of the Change History on page \pageref{sec:changesend}.
%
% \begin{description}
+% \item[v0.910:] Updated \pkg{fvextra}, \pkg{minted}.
+% \needspace{2\baselineskip}
% \item[v0.909:] \cs{ref} fix.
% \begin{itemize}
% \item Fixed \cs{ref*}, \pkg{beamerarticle}, \pkg{lyluatex}, \pkg{realscripts}.
% \item Updated \pkg{mismath}, \pkg{nicematrix}, \pkg{pablance},
% \pkg{pdfpages}, \pkg{simplebnf}, \pkg{tagpdf}.
-% \item The \pkg{lwarp} documentation index is not yet fully updated to the
-% latest \pkg{doc} package changes. Index categories and some
-% hyperlinks are not yet working.
% \end{itemize}
% \needspace{2\baselineskip}
% \item[v0.908:] Bug fix.
@@ -8098,6 +8081,7 @@ This boolean may be tested by the user for later use.
% warpHTML & Generate \HTML\ output. \\
% BaseJobname & The \cs{jobname} to use.
% Set to the \cs{jobname} of the printed version even while generating \HTML. \\
+% warpdisable & Disables most of \pkg{lwarp} for testing purposes. \\
% \bottomrule
% \end{tabular}
% \end{table}
@@ -8444,6 +8428,11 @@ This boolean may be tested by the user for later use.
% creating the |*_html.tex| file used to compile the \HTML\ version.
% See \cref{sec:packageoptions}.
%
+% \ItemDescribeOption{warpdisable}
+% Internally disables both \optn{warpprint} and \optn{warpHTML}.
+% This disables most of \pkg{lwarp}, which may be useful for testing
+% purposes to see whether \pkg{lwarp} is causing a problem.
+%
% \end{description}
%
% \clearpage
@@ -14933,6 +14922,8 @@ This boolean may be tested by the user for later use.
% If the \optn{warpdisable} option is given,
% both boolean |warpingprint| and boolean |warpingHTML| are false,
% and may be used for \cs{ifbool} tests.
+% This option may be used to disable almost all of \pkg{lwarp},
+% for testing purposes.
%
% \changes{v0.909}{2022/11/21}{Added option \optn{warpdisable}.}
% \begin{macrocode}
@@ -21125,7 +21116,7 @@ MathJax = {
-- Copyright 2016-2022 Brian Dunn
-printversion = "v0.909"
+printversion = "v0.910"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
@@ -23419,7 +23410,7 @@ end -- not --version
% \subsection{Hook while processing tags}
%
-% \DescribeHook[lwarp]{\cs{LWR@hook@processingtags}}
+% \DescribeHook[lwarp]{\LWR@hook@processingtags}
% This is used to disable special text processing while processing \HTML\ tags.
% Special processing includes that done by
% \pkg{babel-french}, \pkg{luavina}, \pkg{xevlna}.
@@ -38509,8 +38500,8 @@ end -- not --version
\LetLtxMacro\LWR@origclosebracket\]
% \end{macrocode}
%
-% \DescribeObject{\$}
-% \DescribeObject{\$\$}
+% \DescribeObject{$}
+% \DescribeObject{$$}
% Redefine the dollar sign to place math inside a \env{lateximage},
% or use \MathJax:
% \begin{macrocode}
@@ -56859,7 +56850,7 @@ name = \chemmacros_translate:n {scheme-name}
\LWR@ProvidesPackagePass{fancyref}[1999/02/03]
% \end{macrocode}
%
-% \DescribeHook[fancyref]{\cs{fancyrefhook}}
+% \DescribeHook[fancyref]{\fancyrefhook}
% To remove the \optn{margin} option, if \cs{fancyrefhook} is anything
% other than the \optn{paren} option, then force it to the default instead.
% (Comparing to the \optn{margin} option was not possible since \pkg{lwarp} has
@@ -60030,11 +60021,12 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% \pkg{fvextra} is patched for use by \pkg{lwarp}.
%
% \changes{v0.892}{2020/10/05}{\pkg{fvextra}: Added.}
+% \changes{v0.910}{2022/12/15}{\pkg{fvextra}: Updated to v1.5.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{fvextra}[2019/02/04]
+\LWR@ProvidesPackagePass{fvextra}[2022/11/30]
% \end{macrocode}
%
% Ignored are \optn{highlight},
@@ -60047,7 +60039,6 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
% If line numbers on the right side are used along with \optn{breaklines},
% the line numbers will not be aligned.
% \begin{macrocode}
-
\define@booleankey{FV}{obeytabs}%
% {\let\FV@ObeyTabsInit\FV@@ObeyTabsInit}%
{\let\FV@ObeyTabsInit\relax}
@@ -60066,10 +60057,10 @@ solid {\FancyVerbRuleColor{\LWR@origpound\LWR@tempcolor}} ; % space
\newbool{LWR@FV@breaklines}
\define@booleankey{FV}{breaklines}%
- {\FV@BreakLinesfalse
+ {\boolfalse{FV@breaklines}
\booltrue{LWR@FV@breaklines}
\let\FV@ListProcessLine\FV@ListProcessLine@NoBreak}
- {\FV@BreakLinesfalse
+ {\boolfalse{FV@breaklines}
\boolfalse{LWR@FV@breaklines}
\let\FV@ListProcessLine\FV@ListProcessLine@NoBreak}
% \fvset{breaklines}
@@ -64202,7 +64193,7 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
\AtBeginDocument{
% \end{macrocode}
-% \DescribeHook[keyfloat]{\cs{KFLT@LWR@hook@boxouter}} Integration for \pkg{keyfloat}.
+% \DescribeHook[keyfloat]{\KFLT@LWR@hook@boxouter} Integration for \pkg{keyfloat}.
%
% \changes{v0.75}{2019/09/12}{\pkg{keyfloat}: Fix: \cs{normalcolor}.}
% \begin{macrocode}
@@ -64221,21 +64212,21 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
}
% \end{macrocode}
%
-% \DescribeHook[keyfloat]{\cs{KFLT@LWR@hook@keysubfloats}} Integration for \pkg{keyfloat}.
+% \DescribeHook[keyfloat]{\KFLT@LWR@hook@keysubfloats} Integration for \pkg{keyfloat}.
%
% \changes{v0.75}{2019/09/12}{\pkg{keyfloat}: Fix: \cs{normalcolor}.}
% \begin{macrocode}
\LetLtxMacro\KFLT@LWR@hook@keysubfloats\KFLT@LWR@hook@boxouter
% \end{macrocode}
%
-% \DescribeHook[keyfloat]{\cs{KFLT@LWR@hook@keyfloatsminipage}} Integration for \pkg{keyfloat}.
+% \DescribeHook[keyfloat]{\KFLT@LWR@hook@keyfloatsminipage} Integration for \pkg{keyfloat}.
% \begin{macrocode}
\let\KFLT@LWR@hook@keyfloatsminipage\relax
\let\endKFLT@LWR@hook@keyfloatsminipage\relax
\newenvironment*{KFLT@LWR@hook@keyfloatsminipage}[1]{}{}
% \end{macrocode}
%
-% \DescribeHook[keyfloat]{\cs{KFLT@LWR@hook@keyfloats}} Integration for \pkg{keyfloat}.
+% \DescribeHook[keyfloat]{\KFLT@LWR@hook@keyfloats} Integration for \pkg{keyfloat}.
% \changes{v0.75}{2019/09/12}{\pkg{keyfloat}: Fix: \cs{normalcolor}.}
% \begin{macrocode}
\LetLtxMacro\KFLT@LWR@hook@keyfloats\KFLT@LWR@hook@boxouter
@@ -64434,28 +64425,28 @@ do not attempt to patch lwarp's version of `hyperref'.)\MessageBreak}
}
\renewcommand*{\KFLT@@addartisttext}[3]{%
- % \end{macrocode}
- % Add space and create the name inside a \element{div}:
- % \begin{macrocode}
+% \end{macrocode}
+% Add space and create the name inside a \element{div}:
+% \begin{macrocode}
% \addvspace{\medskipamount}%
- % \begin{minipage}{\linewidth}%
+% \begin{minipage}{\linewidth}%
\LWR@KFLT@setnamealign{#3}%
\begin{BlockClass}[text-align:\LWR@KFLT@textalign]{floatnotes}%
- % \end{macrocode}
- % Text alignment is |#3|, and depends on artist or author:
- % \begin{macrocode}
- % #3%
- % \end{macrocode}
- % |#1| is empty or '|subgrp'| \\
- % |#2| is empty for artist, `|u|' for author:
- % \begin{macrocode}
+% \end{macrocode}
+% Text alignment is |#3|, and depends on artist or author:
+% \begin{macrocode}
+% #3%
+% \end{macrocode}
+% |#1| is empty or '|subgrp'| \\
+% |#2| is empty for artist, `|u|' for author:
+% \begin{macrocode}
\footnotesize\textsc{%
\KFLT@optionalname{\csuse{KFLT@#1a#2p}}%
\KFLT@optionalname{\csuse{KFLT@#1a#2f}}%
\csuse{KFLT@#1a#2l}%
\csuse{KFLT@#1a#2s}%
}%
- % \end{minipage}%
+% \end{minipage}%
\end{BlockClass}
% \par\addvspace{2ex}%
}
@@ -70364,15 +70355,40 @@ background:
%
% \changes{v0.892}{2020/10/07}{\pkg{minted}: Added.}
% \changes{v0.903}{2022/01/02}{\pkg{minted}: Updated to v2.6.}
+% \changes{v0.910}{2022/12/15}{\pkg{minted}: Updated to v2.7.}
%
% \codehtml
%
% \begin{macrocode}
-\LWR@ProvidesPackagePass{minted}[2021/12/24]
+\LWR@ProvidesPackagePass{minted}[2022/12/12]
% \end{macrocode}
%
% \begin{macrocode}
-\xpatchcmd{\minted}
+\renewcommand{\setminted}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\setkeys{minted@opt@g}{%
+ #2,
+ mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
+ }}%
+ {\minted@configlang{#1}%
+ \setkeys{minted@opt@lang}{%
+ #2,
+ mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
+ }}}
+
+\renewcommand{\setmintedinline}[2][]{%
+ \ifthenelse{\equal{#1}{}}%
+ {\setkeys{minted@opt@g@i}{%
+ #2,
+ mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
+ }}%
+ {\minted@configlang{#1}%
+ \setkeys{minted@opt@lang@i}{%
+ #2,
+ mathescape=false,breaklines,texcomments=false,highlightlines={}% lwarp
+ }}}
+
+\xpatchcmd{\RobustMintInlineProcess}
{\setkeys{minted@opt@cmd}{#1}}
{%
\setkeys{minted@opt@cmd}{%
@@ -70383,17 +70399,18 @@ background:
{}
{\LWR@patcherror{minted}{minted}}
-\xpatchcmd{\mintinline}
+\xpatchcmd{\RobustMintProcess}
{\setkeys{minted@opt@cmd}{#1}}
- {\setkeys{minted@opt@cmd}{%
+ {%
+ \setkeys{minted@opt@cmd}{%
#1,%
mathescape=false,breaklines,texcomments=false,highlightlines={}%
}%
}
{}
- {\LWR@patcherror{minted}{mintinline}}
+ {\LWR@patcherror{minted}{minted}}
-\xpatchcmd{\mint}
+\xpatchcmd{\minted}
{\setkeys{minted@opt@cmd}{#1}}
{%
\setkeys{minted@opt@cmd}{%
@@ -70402,7 +70419,7 @@ background:
}%
}
{}
- {\LWR@patcherror{minted}{mint}}
+ {\LWR@patcherror{minted}{minted}}
\xpatchcmd{\inputminted}
{\setkeys{minted@opt@cmd}{#1}}
@@ -70414,6 +70431,29 @@ background:
{}
{\LWR@patcherror{minted}{inputminted}}
+
+
+%\xpatchcmd{\mintinline}
+% {\setkeys{minted@opt@cmd}{#1}}
+% {\setkeys{minted@opt@cmd}{%
+% #1,%
+% mathescape=false,breaklines,texcomments=false,highlightlines={}%
+% }%
+% }
+% {}
+% {\LWR@patcherror{minted}{mintinline}}
+
+%\xpatchcmd{\mint}
+% {\setkeys{minted@opt@cmd}{#1}}
+% {%
+% \setkeys{minted@opt@cmd}{%
+% #1,%
+% mathescape=false,breaklines,texcomments=false,highlightlines={}%
+% }%
+% }
+% {}
+% {\LWR@patcherror{minted}{mint}}
+
\renewenvironment{minted@snugshade*}[1]%
{%
\colorlet{shadecolor}{#1}%
@@ -71753,7 +71793,7 @@ background:
\LWR@ProvidesPackagePass{nameauth}[2017/03/22]
% \end{macrocode}
%
-% \DescribeHook[nameauth]{\cs{@nameauth@Hook}}
+% \DescribeHook[nameauth]{\@nameauth@Hook}
% \pkg{lwarp} formatting is inserted.
% \begin{macrocode}
\renewcommand*\@nameauth@Hook[1]
diff --git a/macros/latex/contrib/lwarp/lwarp.pdf b/macros/latex/contrib/lwarp/lwarp.pdf
index 4f612e8420..816ab68db6 100644
--- a/macros/latex/contrib/lwarp/lwarp.pdf
+++ b/macros/latex/contrib/lwarp/lwarp.pdf
Binary files differ
diff --git a/macros/latex/contrib/lwarp/lwarpmk.lua b/macros/latex/contrib/lwarp/lwarpmk.lua
index b8cbb9741e..bc93d2d05a 100755
--- a/macros/latex/contrib/lwarp/lwarpmk.lua
+++ b/macros/latex/contrib/lwarp/lwarpmk.lua
@@ -2,7 +2,7 @@
-- Copyright 2016-2022 Brian Dunn
-printversion = "v0.909"
+printversion = "v0.910"
requiredconfversion = "2" -- also at *lwarpmk.conf
function printhelp ()
diff --git a/macros/latex/contrib/metalogox/README.txt b/macros/latex/contrib/metalogox/README.txt
index 8c6e1d866e..14c1adc9b3 100644
--- a/macros/latex/contrib/metalogox/README.txt
+++ b/macros/latex/contrib/metalogox/README.txt
@@ -1,8 +1,8 @@
The LaTeX metalogox package
Automatically adjusts the TeX logo and related, depending on the font.
-v1.00
-Copyright 2019 Brian Dunn — www.BDTechConcepts.com
+v1.01
+Copyright 2019, 2023 Brian Dunn — www.BDTechConcepts.com
LaTeX Project Public License, version 1.3
The metalogox package extends the metalogo package to automatically adjust
diff --git a/macros/latex/contrib/metalogox/metalogox.dtx b/macros/latex/contrib/metalogox/metalogox.dtx
index 4aa0f75870..0bc9471c04 100644
--- a/macros/latex/contrib/metalogox/metalogox.dtx
+++ b/macros/latex/contrib/metalogox/metalogox.dtx
@@ -1,7 +1,7 @@
%
% \iffalse meta-comment
%
-% Copyright 2019 Brian Dunn
+% Copyright 2019, 2023 Brian Dunn
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,7 +16,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{metalogox}
-%<package> [2019/01/20 v1.00 Extends the metalogo package with font detection.]
+%<package> [2023/01/03 v1.01 Extends the metalogo package with font detection.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -46,11 +46,19 @@
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
+
+\usepackage[svgnames]{xcolor}
+\definecolor{myurlcolor}{rgb}{0,0,.7}
+\definecolor{mylinkcolor}{rgb}{.7,0,0}
+\definecolor{codecolor}{rgb}{0,.4,.2}
+\definecolor{overviewcolor}{rgb}{0,.2,.4}
+
+
\usepackage{microtype}
\usepackage{etoolbox}
-\usepackage{dtxdescribe}
+\usepackage{dtxdescribe}[2023/01/03]
\usepackage{booktabs}
@@ -67,17 +75,18 @@
-\usepackage[pdftex,bookmarks=true,hidelinks,%
-colorlinks,linkcolor=mylinkcolor,urlcolor=myurlcolor,%
-pageanchor=true,hyperindex=false,
-]{hyperref}
+\AtBeginDocument{
\hypersetup{%
pdfinfo={%
Title={LaTeX \mypackagename{} package},%
Author={Brian Dunn},%
Subject={LaTeX metalogox package},%
-Keywords={LaTeX, metalogox, logo}%
+Keywords={LaTeX, metalogox, logo},%
+colorlinks,%
+linkcolor=mylinkcolor,%
+urlcolor=myurlcolor,%
+pageanchor=true,
}}
\pdfstringdefDisableCommands{
@@ -99,10 +108,11 @@ Keywords={LaTeX, metalogox, logo}%
\def\DVI{DVI}
\def\PDF{PDF}
}
+}% AtBeginDocument
-
+\AddToHook{begindocument/before}{% Before .aux file is loaded.
\usepackage{cleveref}
-
+}
% from dtxdescribe:
\setlength{\marginparsep}{1em}
@@ -130,7 +140,7 @@ Keywords={LaTeX, metalogox, logo}%
\newcommand*{\textblue}[1]{\textcolor{blue!70!black}{#1}}
\setcounter{IndexColumns}{2}
-\setcounter{GlossaryColumns}{1}
+\setcounter{GlossaryColumns}{2}
\DisableCrossrefs
\CodelineIndex
@@ -141,26 +151,11 @@ Keywords={LaTeX, metalogox, logo}%
%</driver>
% \fi
%
-% \CheckSum{0}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-% \changes{v1.00}{2019/01/20}{2019/01/20 Initial version.}
+% \changes{v1.00}{2019/01/20}{\ 2019/01/20 Initial version.}
+% \changes{v1.01}{2023/01/03}{Docs adjusted for \pkg{dtxdescribe}.}
+% \changes{v1.01}{2023/01/03}{\ 2023/01/03}
@@ -180,7 +175,7 @@ Keywords={LaTeX, metalogox, logo}%
%
% \bigskip
%
-% {\small\textcopyright{} 2019} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
+% {\small\textcopyright{} 2019, 2023} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
%
% \vspace{.5in}
%
@@ -214,8 +209,9 @@ Keywords={LaTeX, metalogox, logo}%
% \TeX, \LaTeX, \LaTeXe, \XeLaTeX, and \LuaLaTeX,
% depending on the font detected or the option given to \pkg{metalogox}.
%
+% \changes{v1.01}{2023/01/03}{Updated \LaTeX\ Font Catalog website.}
% Most of the serif and sans fonts listed at
-% \href{http://www.tug.dk/FontCatalogue/}{The \LaTeX\ Font Catalogue}
+% \href{https://tug.org/FontCatalogue/}{The \LaTeX\ Font Catalogue}
% are supported.
% \end{abstract}
%
@@ -1192,7 +1188,8 @@ Keywords={LaTeX, metalogox, logo}%
% \end{macro}
%
%
-% \begin{macro}{\autoadjustlogos}
+% \begin{macro}{\autoadjustlogos} *
+%
% Search a list of fonts and variants, looking for a match with the current one.
% \begin{macrocode}
\NewDocumentCommand{\autoadjustlogos}{s}{%
diff --git a/macros/latex/contrib/metalogox/metalogox.pdf b/macros/latex/contrib/metalogox/metalogox.pdf
index 55ac5642f7..6ed87f1aae 100644
--- a/macros/latex/contrib/metalogox/metalogox.pdf
+++ b/macros/latex/contrib/metalogox/metalogox.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 2d01148be5..46ee34e10f 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
index 83a859b12b..b986235950 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -5,21 +5,22 @@
% arara: lualatex: {shell: yes, synctex: no, interaction: batchmode} if found('log', '(undefined references|Please rerun|Rerun to get)')
\documentclass{article}
-\usepackage[french]{babel}
+\def\PLversion{2.1.4}
+\def\PLdate{02 Janvier 2023}
\usepackage[pythontex]{ProfLycee}
\usepackage{mathtools}
\usepackage{lualatex-math}
\usepackage{luatexbase}
\usepackage[math-style=french,bold-style=ISO]{fourier-otf}
\usepackage{tkz-euclide}
+\usepackage{tkz-tab}
+\tikzstyle{every picture}+=[remember picture]
\usetikzlibrary{hobby}
\usepackage[group-minimum-digits=4]{siunitx}
+\sisetup{locale=FR}
\usepackage{fancyvrb}
\usepackage{fancyhdr}
\usepackage{multicol}
-%\makeatletter
-% \@addtoreset{section}{part}
-%\makeatother
%fancy
\fancyhf{}
\renewcommand{\headrulewidth}{0pt}
@@ -34,13 +35,7 @@
\let\tab\relax
\usepackage{tabto}
\usepackage{pgf,pgfplots}
-\pgfplotsset{
- compat=newest,
- xlabel near ticks,
- ylabel near ticks
-}
-\usepackage{tkz-tab}
-\tikzstyle{every picture}+=[remember picture]
+\pgfplotsset{compat=newest,xlabel near ticks,ylabel near ticks}
\usepackage{listofitems}
\usepackage{xintexpr}
\usepackage{codehigh}
@@ -48,10 +43,9 @@
\usepackage{hyperref}
\urlstyle{same}
\hypersetup{pdfborder=0 0 0}
-
-\sisetup{locale=FR}
\usepackage{geometry}
\geometry{margin=1.5cm}
+\usepackage[french]{babel}
\usepackage{newverbs}
\newverbcommand{\pverb}{\color{purple}}{}
\newverbcommand{\rverb}{\color{red}}{}
@@ -62,31 +56,28 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\PLversion{2.1.3}
-\def\PLdate{30 Décembre 2022}
-
\tcbset{vignettes/.style={%
- nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
- boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,%
+ nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
+ boxrule=0.75pt,left=7pt,right=1pt,top=0pt,bottom=0.25pt,%
}
}
\tcbset{vignettelatex/.style={%
- fontupper={\vphantom{pf}\footnotesize\ttfamily},
- vignettes,%
- colframe=CadetBlue,coltitle=white,colback=CadetBlue!5,%
- overlay={\begin{tcbclipinterior}%
- \fill[fill=lightgray!50]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{CadetBlue}{\scalebox{0.6}[0.75]{\textbf{\LaTeX}}}}} ($(interior.north west)+(5pt,0pt)$);%
- \end{tcbclipinterior}}
+ fontupper={\vphantom{pf}\footnotesize\ttfamily},
+ vignettes,%
+ colframe=CadetBlue,coltitle=white,colback=CadetBlue!5,%
+ overlay={\begin{tcbclipinterior}%
+ \fill[fill=lightgray!50]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{CadetBlue}{\scalebox{0.6}[0.75]{\textbf{\LaTeX}}}}} ($(interior.north west)+(5pt,0pt)$);%
+ \end{tcbclipinterior}}
}
}
\tcbset{vignetteMaJ/.style={%
- fontupper={\vphantom{pf}\footnotesize\ttfamily},
- vignettes,%
- colframe=ForestGreen!50!black,coltitle=white,colback=ForestGreen!25,%
- overlay={\begin{tcbclipinterior}%
- \fill[fill=ForestGreen!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{Black}{\scalebox{0.85}[0.75]{\textbf{MàJ}}}}} ($(interior.north west)+(5pt,0pt)$);%
- \end{tcbclipinterior}}
+ fontupper={\vphantom{pf}\footnotesize\ttfamily},
+ vignettes,%
+ colframe=ForestGreen!50!black,coltitle=white,colback=ForestGreen!25,%
+ overlay={\begin{tcbclipinterior}%
+ \fill[fill=ForestGreen!75]($(interior.south west)$) rectangle node[rotate=90]{\tiny \sffamily{\textcolor{Black}{\scalebox{0.85}[0.75]{\textbf{MàJ}}}}} ($(interior.north west)+(5pt,0pt)$);%
+ \end{tcbclipinterior}}
}
}
@@ -113,9 +104,7 @@
%petite vignette màj
\newcommand\cmaj[1]{%
- %\IfStrEq{#1}{\PLversion}%
- {\tcbox[vignetteMaJ]{#1}\xspace}%
- %{}%
+ {\tcbox[vignetteMaJ]{#1}\xspace}%
}
%gestion de la fenêtre v2 directement dans le tikzpicture
@@ -207,54 +196,49 @@
\date{Version \PLversion{} -- \PLdate}
\newcommand\Cle[1]{{\bfseries\sffamily\textlangle #1\textrangle}}
+\newcommand\deblst{{\tiny\faCode}~}
\begin{document}
-%\AddToShipoutPicture{%
-%\begin{tikzpicture}[remember picture,overlay]
-% \node [anchor=center,yshift=1cm,xshift=-1.5cm] (box\thepage) at (current page.south east){\hyperlink{matoc}{\LARGE\faArrowAltCircleUp[regular]}};
-%\end{tikzpicture}}
-
\pagestyle{fancy}
\maketitle
\thispagestyle{empty}
-{\sffamily{\bfseries Résumé} :\\
-Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les enseignants de mathématiques en lycée.}
+{\sffamily{\bfseries Résumé} : Quelques commandes pour faciliter l'utilisation de \LaTeX{} pour les enseignants de mathématiques en lycée.}
\medskip
-{\small\noindent Quelques commandes pour des courbes \textit{lisses} avec gestion des extrema et des dérivées.\\
-Quelques commandes pour simuler une fenêtre de logiciel de calcul formel, en \TikZ.\\
-Quelques environnements (\textsf{tcbox}) pour présenter du code \textsf{python} ou \textsf{pseudocode}.\\
-Quelques environnements (\textsf{tcbox}) pour présenter des commandes dans un terminal (\textsf{win} ou \textsf{mac} ou \textsf{linux}).\\
-Un cartouche (\textsf{tcbox}) pour présenter des codes de partage \textsf{capytale}.\\
-Une commande pour tracer un pavé en droit, en \TikZ, avec création des nœuds liés aux sommets.\\
-Une commande pour simplifier des calculs sous forme fractionnaire, des racines.\\
-Une commande pour simplifier l'écriture d'un ensemble, avec espaces \og automatiques \fg.\\
-Des commandes pour effectuer des calculs avec des suites récurrentes.\\
-Une commande pour créer, en \TikZ, la \textit{toile} pour une suite récurrente.\\
-Une commande pour créer, en \TikZ, un cercle trigo avec options.\\
-Une commande pour afficher un petit schéma, en \TikZ, sur le signe d'une fonction affine ou d'un trinôme.\\
-Deux commandes pour, en \TikZ, créer des petits schémas \og de signe \fg.\\
-Une commande pour travailler sur les statistiques à deux variables (algébriques et graphiques).\\
-Quelques commandes pour convertir bin/dec/hex avec certains détails.\\
-Une commande pour, en \TikZ, créer un pixelart avec correction éventuelle.\\
-Une commande pour, en \TikZ, créer un SudoMaths non forcément $9\times9$.\\
-Des commandes pour effectuer des calculs de probas (lois binomiale, exponentielle, de Poisson, normale).\\
-Une commande pour, en \TikZ, créer des arbres de probas \og classiques \fg.\\
-Une commande pour générer des listes d'entiers aléatoires (avec ou sans répétitions).\\
-\ldots}
+{\small\noindent%
+{\deblst} résoudre, de manière approchée, des équations \\
+{\deblst} tracer \textit{facilement} des repères/grilles/courbes\\
+{\deblst} tracer des courbes \textit{lisses} avec gestion des extrema et des dérivées\\
+{\deblst} simuler une fenêtre de logiciel de calcul formel, une console d'exécution \\
+{\deblst} présenter du code \textsf{python} ou \textsf{pseudocode} \\
+{\deblst} tracer rapidement un pavé, un tétraèdre \\
+{\deblst} simplifier des calculs sous forme fractionnaire, simplifier des racines \\
+{\deblst} effectuer des calculs avec des suites récurrentes \\
+{\deblst} créer la \textit{toile} pour une suite récurrente \\
+{\deblst} afficher et utiliser un cercle trigo \\
+{\deblst} afficher un petit schéma pour le signe d'une fonction affine ou d'un trinôme \\
+{\deblst} travailler sur les statistiques à deux variables (algébriques et graphiques) \\
+{\deblst} convertir entre bin/dec/hex avec détails \\
+{\deblst} présenter un calcul de PGCD \\
+{\deblst} créer un pixelart avec correction éventuelle \\
+{\deblst} effectuer des calculs de probas (lois binomiale, exponentielle, de Poisson, normale) \\
+{\deblst} créer des arbres de probas \og classiques \fg \\
+{\deblst} générer des listes d'entiers aléatoires (avec ou sans répétitions)\\
+{\deblst} déterminer la mesure principale d'un angle \\
+{\deblst} \ldots}
~
-\hfill{}\textit{Merci à Anne pour ses retours et sa relecture !}
+\hfill{}\textsl{Merci à Anne pour ses retours et sa relecture !}
-\hfill{}\textit{Merci à Christophe pour ses retours et ses éclairages !}
+\hfill{}\textsl{Merci à Christophe pour ses retours et ses éclairages !}
-\hfill{}\textit{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
+\hfill{}\textsl{Merci aux membres du groupe \faFacebook{} du \og Coin \LaTeX{} \fg{} pour leur aide et leurs idées !}
\vfill
@@ -303,7 +287,7 @@ On peut le voir comme un (maigre) complément à \ctex{ProfCollege}, et je préc
Il se charge, dans le préambule, par \ctex{\textbackslash usepackage\{ProfLycee\}}. Il charge quelques {packages} utiles, mais j'ai fait le choix de laisser l'utilisateur gérer ses autres {packages}, comme notamment \ctex{amssymb} qui peut poser souci en fonction de la \textit{position} de son chargement.
-L'utilisateur est libre de charger ses autres {packages} utiles et habituels, ainsi que ses \textsf{polices} et \textsf{encodages} habituels.
+L'utilisateur est libre de charger ses autres {packages} utiles et habituels, ainsi que ses \textsf{polices} et \textsf{encodages} habituels !
\end{codeidee}
\begin{codeinfo}
@@ -311,10 +295,10 @@ Le {package} \ctex{ProfLycee} charge les {packages} :
\begin{itemize}
\item \ctex{xcolor} avec les options \textsf{[table,svgnames]} ;
- \item \ctex{tikz}, \ctex{pgf}, \ctex{xfp} ;
- \item \ctex{xparse}, \ctex{xkeyval}, \ctex{xstring}, \ctex{simplekv} ;
- \item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex} et \ctex{xintgcd};
- \item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{tcolorbox} ;
+ \item \ctex{tikz}, \ctex{pgf}, \ctex{pgffor} ;
+ \item \ctex{xparse}, \ctex{xstring}, \ctex{simplekv}, \ctex{xinttools} ;
+ \item \ctex{listofitems}, \ctex{xintexpr} , \ctex{xintbinhex}, \ctex{xintgcd} ;
+ \item \ctex{tabularray}, \ctex{fontawesome5}, \ctex{tcolorbox}, \ctex{randomlist}, \ctex{fancyvrb}, \ctex{csvsimple} ;
\item \ctex{piton} (uniquement si compilation en \LuaLaTeX{} !) et \ctex{pythontex}.
\end{itemize}
\end{codeinfo}
@@ -362,7 +346,7 @@ Cependant, si vous ne \underline{souhaitez pas} charger (et utiliser) \ctex{mint
\begin{codeattention}
\cmaj{2.1.0} Le package\ctex{pythontex} nécessitant une chaîne de compilation particulière, j'ai décidé de le mettre en \textit{option}.
-Pour utiliser le package \ctex{pythontex} et utiliser les commandes définies à partir de lui, il faut désormais charger \ctex{ProfLycee} avec l'option \Cle{pythontex}.
+Pour utiliser le package \ctex{pythontex} et utiliser les commandes qui lui sont liées, il faut désormais charger \ctex{ProfLycee} avec l'option \Cle{pythontex}.
\end{codeattention}
\begin{codetex}[listing only]
@@ -407,7 +391,7 @@ Les options précédentes sont cumulables, et, pour info, elles conditionnent le
\section{Compléments}
-\subsection{Changements à partir de cette version !!}
+\subsection{Changements à partir de la version 2 !!}
\begin{codeattention}
\cmaj{2.0.0} Pour des raisons pratiques, les commandes et environnements disponibles dans \ctex{ProfLycee} ont été renommés, pour utiliser des noms plus génériques et explicites.
@@ -420,7 +404,7 @@ Je préfère faire ces ajustements tant que le package est assez \textit{jeune}
\end{codeattention}
\begin{codeattention}
-\cmaj{2.0.0} L'ancienne version du package \ctex{ProfLycee} est toutefois encore disponible, pour nue migration en douceur, elle est désormais accessible sous le nom \ctex{ProfLycee-old}, et la documentation est également encore disponible.
+\cmaj{2.0.0} L'ancienne version (qui ne sera mise à jour !!) du package \ctex{ProfLycee} est toutefois encore disponible, pour une migration en douceur, elle est désormais accessible sous le nom \ctex{ProfLycee-old}, et la documentation est également encore disponible.
\end{codeattention}
\begin{codetex}[listing only]
@@ -452,7 +436,7 @@ Pour certaines commandes, le système de \Cle{Clés} pose quelques soucis, de ce
\end{codeidee}
\begin{codeinfo}
-Les \textsf{commandes} et \textsf{environnements} présentés seront explicités via leur \textsf{syntaxe} avec les \textsf{options} ou \textsf{arguments}.
+Les \textsf{commandes} et \textsf{environnements} présentés seront explicités via leur \textsf{syntaxe} avec les \textsf{options/clés} ou \textsf{arguments}.
Autant que faire se peut, des exemples/illustrations/remarques seront proposés à chaque fois.
@@ -495,10 +479,10 @@ Le package \ctex{ProfLycee} est compatible avec les compilateurs classiques : \t
\smallskip
-En ce qui concerne les codes \textsf{python} et/ou \textsf{pseudocode}, il faudra :
+En ce qui concerne les codes \textsf{python}, il faudra :
\begin{itemize}
- \item compiler en chaîne \textsf{pdflatex + pythontex + pdflatex} pour les environnements avec \ctex{pythontex} ;
+ \item compiler en chaîne \textsf{(xxx)latex + pythontex + (xxx)latex} pour les environnements avec \ctex{pythontex} ;
\item compiler avec \textsf{shell-escape} (ou \textsf{write18}) pour les environnements avec \ctex{minted}.
\end{itemize}
\end{codeinfo}
@@ -514,7 +498,7 @@ Certaines \textsf{commandes} sont à intégrer dans un environnement \TikZ, afin
\smallskip
-Certains packages ont une fâcheuse tendance à être tatillons sur leurs options (les \textit{fameux} \textsf{option clash for} \ldots) ou leur \textit{position} dans le chargement, donc attention notamment au chargement de \ctex{xcolor} et de \ctex{amsmath}.
+Certains packages ont une fâcheuse tendance à être tatillons sur leurs options (les \textit{fameux} \textsf{option clash for} \ldots) ou leur \textit{position} dans le chargement, donc attention notamment au chargement de \ctex{xcolor} et de \ctex{amssymb} !
\smallskip
@@ -546,6 +530,21 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\end{codeinfo}
\begin{codetex}[listing only]
+%Résolution approchée d'une équation f(x)=k
+\ResolutionApprochee[clés]{équation}[macro]
+
+%Présentation d'une solution par balayage (TVI)
+\SolutionTVI[options]{fonction}{valeur}
+
+%Calculer le terme d'une suite récurrente simple, toile pour une suite récurrente simple
+\CalculTermeRecurrence[options]{fonction associée}
+\ToileRecurrence[clés][options du tracé][option supplémentaire des termes]
+
+%Mise en forme de la conclusion d'un seuil
+\SolutionSeuil[options]{fonction associée}{seuil}
+\end{codetex}
+
+\begin{codetex}[listing only]
%fenêtre de repérage en tikz et courbe
\GrilleTikz[options][options grille ppale][options grille second.]
\AxesTikz[options] \AxexTikz[options]{valeurs} \AxeyTikz[options]{valeurs}
@@ -556,19 +555,9 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\SplineTikz[options]{liste}
\TangenteTikz[options]{liste}
-%Présentation d'une solution par balayage (TVI)
-\SolutionTVI[options]{fonction}{valeur}
-
%schémas pour le signe affine/trinôme, dans un environnement tikz
\MiniSchemaSignes[clés]
\MiniSchemaSignesTkzTab[options]{numligne}[échelle][décalage horizontal]
-
-%Calculer le terme d'une suite récurrente simple, toile pour une suite récurrente simple
-\CalculTermeRecurrence[options]{fonction associée}
-\ToileRecurrence[clés][options du tracé][option supplémentaire des termes]
-
-%Mise en forme de la conclusion d'un seuil
-\SolutionSeuil[options]{fonction associée}{seuil}
\end{codetex}
\begin{codetex}[listing only]
@@ -587,7 +576,9 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
%présentation de pseudocode
\begin{PseudoCode}(*)[largeur][options]...\end{PseudoCode}
+\end{codetex}
+\begin{codetex}[listing only]
%terminal OS
\begin{TerminalWin}[largeur]{clés}[options]...\end{TerminalWin}
\begin{TerminalUnix}[largeur]{clés}[options]...\end{TerminalUnix}
@@ -638,7 +629,9 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\CalcPoissC{l}{a}{b}
\PoissonP(*)[prec]{l}{k}
\PoissonC(*)[prec]{l}{a}{b}
+\end{codetex}
+\begin{codetex}[listing only]
%loi géométrique G(p)
\CalcGeomP{p}{k}
\CalcGeomC{l}{a}{b}
@@ -721,6 +714,272 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\part{Outils pour l'analyse}
+\section{Résolution approchée d'une équation}\label{resolapprox}
+
+\subsection{Idée}
+
+\begin{codeidee}
+\cmaj{2.1.4} L'idée est de proposer une commande pour résoudre, de manière approchée, une équation du type $f(x)=k$ sur un intervalle (fermé) donné.
+
+\smallskip
+
+La méthode utilisée est la \textbf{dichotomie}, pour plus de rapidité que la méthode \textit{simple} par balayage.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+\ResolutionApprochee[clés]{équation}[macro]
+\end{codetex}
+
+\begin{codetex}[]
+\ResolutionApprochee[Intervalle=0:10]{x**3-2*x**2-x-1=2}%
+$x_0 \approx \num[minimum-decimal-digits=2]{\masolutiond}$ par défaut ;\\
+$x_0 \approx \num[minimum-decimal-digits=2]{\masolutione}$ par excès ;\\
+$x_0 \approx \num[minimum-decimal-digits=2]{\masolutiona}$ arrondi à $10^{-2}$.\\
+
+\hfill\includegraphics[scale=0.45]{./graphics/pl-solve_a}\hfill~
+\end{codetex}
+
+\subsection{Clés et options}
+
+\begin{codecles}
+Quelques explications sur les \Cle{clés} et sur les arguments :
+
+\begin{itemize}
+ \item la clé \Cle{Précision} qui permet de spécifier le nombre de chiffres après la virgule de la solution ; \hfill{}défaut \Cle{2}
+ \item la clé (obligatoire !) \Cle{Intervalle} qui permet de préciser l'intervalle initial de recherche ;
+ \item la clé \Cle{Variable} qui permet de spécifier la variable de l'équation ;\hfill{}défaut \Cle{x}
+ \item l'argument \textit{mandataire} est l'équation, sous la forme $f(\ldots)=k$ (ou $f(\ldots)$ pour $f(\ldots)=0$) ;
+ \item l'argument \textit{optionnel} est la base de la \textit{<macro>} qui sert à stocker les valeurs :\hfill{}défaut \Cle{masolution}
+ \begin{itemize}
+ \item \ctex{\textbackslash<macro>d} pour la valeur approchée par défaut ;
+ \item \ctex{\textbackslash<macro>e} pour la valeur approchée par excès ;
+ \item \ctex{\textbackslash<macro>a} pour la valeur approchée.
+ \end{itemize}
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[]
+\ResolutionApprochee[Precision=4,Intervalle=0:2]{exp(0.5*x)+x**2-4=0}%
+Une valeur approchée, à $10^{-4}$ près, d'une solution de $\text{e}^{0,5x}+x^2-4=0$ sur $\left[0;2\right]$ est $\beta$ avec :
+\begin{itemize}
+ \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutiond}$ par défaut ;
+ \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutione}$ par excès ;
+ \item $\beta \approx \num[minimum-decimal-digits=4]{\masolutiona}$.
+\end{itemize}
+\ResolutionApprochee[Variable=t,Intervalle=-1:2]{3*t*exp(-0.5*t+1)=4}[SolA]%
+Une valeur approchée, à $10^{-2}$ près d'une solution de $3t\,\rm{e}^{-0,5t+1}=4$ est $t_1$ avec :
+\begin{itemize}
+ \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAd}$ par défaut ;
+ \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAe}$ par excès ;
+ \item $t_1 \approx \num[minimum-decimal-digits=2]{\SolAa}$.
+\end{itemize}
+\ResolutionApprochee[Precision=3,Variable=t,Intervalle=2:10]{3*t*exp(-0.5*t+1)=4}[SolB]%
+Une valeur approchée, à $10^{-2}$ près d'une solution de $3t\,\text{e}^{-0,5t+1}=4$ est $t_2$ avec :
+\begin{itemize}
+ \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBd}$ par défaut ;
+ \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBe}$ par excès ;
+ \item $t_2 \approx \num[minimum-decimal-digits=2]{\SolBa}$.
+\end{itemize}
+
+\medskip
+
+\hfill\includegraphics[scale=0.45]{./graphics/pl-solve_b}~~
+\includegraphics[scale=0.45]{./graphics/pl-solve_c}~~
+\includegraphics[scale=0.45]{./graphics/pl-solve_d}\hfill~
+\end{codetex}
+
+\newpage
+
+\section{Présentation d'une solution d'équation par balayage}\label{solutiontvi}
+
+\subsection{Idée}
+
+\begin{codeidee}
+\cmaj{2.0.4} L'idée est de présenter l'obtention d'une solution approchée d'équation par balayage, dans le cadre du TVI par exemple. Les calculs et tests sont effectués grâce au package \ctex{xinttools}, et le formatage par \ctex{tabularray} et \ctex{sinuitx}.
+\end{codeidee}
+
+\begin{codeattention}
+Le code ne trouve pas la solution, il met \textit{juste} en forme mais effectue quand même les calculs d'images et les tests.
+\end{codeattention}
+
+\begin{codetex}[listing only]
+\SolutionTVI[options]{fonction}{valeur}
+\end{codetex}
+
+\subsection{Clés et arguments}
+
+\begin{codecles}
+Plusieurs \Cle{Clés} sont disponibles pour cette commande, relative donc à une équation du type $f(x)=k$ :
+
+\begin{itemize}
+ \item la clé \Cle{NomFct} qui permet de spécifier le nom de la fonction ;\hfill{}défaut \Cle{f}
+ \item la clé \Cle{NomSol} qui permet de spécifier le nom de la fonction ;\hfill{}défaut \Cle{\textbackslash{}alpha}
+ \item les clés \Cle{va} et \Cle{vb} qui sont les bornes inférieure et supérieure de l'encadrement ;
+ \item la clé \Cle{Precision} qui est la précision des calculs pour les images ;\hfill{}défaut \Cle{2}
+ \item la clé \Cle{Stretch} qui permet d'espacer les lignes ;\hfill{}défaut \Cle{1.15}
+ \item les booléens \Cle{Balayage} ou \Cle{Calculatrice} pour afficher un texte en amont ;\hfill{}défaut \Cle{false}
+ %\item le booléen \Cle{Simple} pour une présentation plus \textit{neutre} ;\hfill{}défaut \Cle{false}
+ \item le booléen \Cle{Majuscule} qui affiche le texte avant, avec une majuscule au début.\hfill{}défaut \Cle{true}
+\end{itemize}
+
+\smallskip
+
+Le premier argument mandataire est la fonction, en syntaxe \ctex{xint} et avec comme variable $x$, et le second la valeur de $k$.
+\end{codecles}
+
+\begin{codetex}[]
+Pour $f(x)=0$ avec $f(x)=x^2-2$. On obtient \SolutionTVI[va=1.414,vb=1.415,Precision=3]{x**2-2}{0}.
+\end{codetex}
+
+\begin{codetex}[]
+Avec $\varphi(t)=3t\,\rm{e}^{-0,5t+1}=5$,
+\SolutionTVI[Majuscule=false,Calculatrice,va=1.02,vb=1.03,NomFct=\varphi]{3*x*exp(-0.5*x+1)}{5}
+\end{codetex}
+
+\begin{codetex}[]
+On s'intéresse à $g(x)=\num{1,5}$ avec $g(x)=\ln(x)$.
+\SolutionTVI[Balayage,Stretch=1.5,va=4.48,vb=4.49,NomFct=g,Precision=4,NomSol={x_0}]{log(x)}{1.5}.
+\end{codetex}
+
+\subsection{Interaction avec la commande de résolution approchée}
+
+\begin{codeidee}
+\cmaj{2.1.4} L'idée est de récupérer les valeurs par défaut et par excès pour le TVI grâce à la commande \ctex{\textbackslash ResolutionApprochee}.
+\end{codeidee}
+
+\begin{codetex}[]
+On s'intéresse à $g(x)=\num{1,5}$ avec $g(x)=\ln(x)$ sur l'intervalle $\left[3;5\right]$.
+
+\ResolutionApprochee[Intervalle=3:5]{log(x)=1.5}[SolLn]
+\SolutionTVI[Balayage,Stretch=1.5,va={\SolLnd},vb={\SolLne},NomFct=g,Precision=4,NomSol={x_0}]{log(x)}{1.5}.
+\end{codetex}
+
+\begin{codeinfo}
+À terme, peut-être que la commande \ctex{\textbackslash ResolutionApprochee} sera intégrée dans la commande \ctex{\textbackslash SolutionTVI} afin d'automatiser encore plus le procédé.
+\end{codeinfo}
+
+\newpage
+
+\section{Suites récurrentes simples}\label{calcrecurr}
+
+\subsection{Idées}
+
+\begin{codeidee}
+\cmaj{2.0.3} L'idée est de proposer des commandes pour effectuer des calculs avec des suites récurrentes du type $u_{n+1}=f\big(u_n\big)$ :
+
+\begin{itemize}
+ \item calcul de termes avec possibilité d'arrondir ;
+ \item présentation de la conclusion de la recherche d'un seuil du type $u_n > S$ ou $u_n < S$.
+\end{itemize}
+\end{codeidee}
+
+\begin{codeattention}
+\cmaj{2.1.0} Le code pour le seuil \textbf{trouve} également le rang cherché, il met en forme et effectue les calculs d'images.
+
+\smallskip
+
+\cmaj{2.0.5} Le choix a été fait de faire les calculs en mode \ctex{float} pour éviter les dépassements de capacité de \ctex{xint} liés aux boucles\ldots
+\end{codeattention}
+
+\begin{codetex}[listing only]
+%commande pour calculer et formater
+\CalculTermeRecurrence[options]{fonction associée}
+
+%mise en forme de la conclusion d'un seuil
+\SolutionSeuil[options]{fonction associée}{seuil}
+\end{codetex}
+
+\subsection{Clés et arguments}
+
+\begin{codecles}
+Plusieurs \Cle{Clés} sont disponibles pour la commande du calcul d'un terme :
+
+\begin{itemize}
+ \item la clé \Cle{No} qui est le rang initial de la suite ;
+ \item la clé \Cle{UNo} qui est le terme initial de la suite ;
+ \item la clé \Cle{Precision} qui précise l'arrondi éventuel ;\hfill{}défaut \Cle{3}
+ \item la clé \Cle{N} qui est l'indice du terme à calculer.
+\end{itemize}
+
+\smallskip
+
+L'argument mandataire est la fonction associée à la suite, en syntaxe \ctex{xint} et avec comme variable $x$.
+\end{codecles}
+
+\begin{codetex}[listing only]
+Avec $\begin{dcases} u_0 = 50 \\ u_{n+1}=\dfrac{1}{u_n+2} \end{dcases}$.
+
+On obtient $u_{10} \approx \CalculTermeRecurrence[No=0,UNo=50,N=10]{1/(x+2)}$.
+
+On obtient $u_{15} \approx \CalculTermeRecurrence[Precision=4,No=0,UNo=50,N=15]{1/(x+2)}$.
+
+On obtient $u_{20} \approx \CalculTermeRecurrence[Precision=6,No=0,UNo=50,N=20]{1/(x+2)}$.
+\end{codetex}
+
+\begin{codesortie}
+Avec $u_0 = 50$ et $u_{n+1}=\dfrac{1}{u_n+2}$.
+
+\smallskip
+
+On obtient $u_{10} \approx \CalculTermeRecurrence[No=0,UNo=50,N=10]{1/(x+2)}$ \hfill~sortie par défaut.
+
+\smallskip
+
+On obtient $u_{15} \approx \CalculTermeRecurrence[Precision=4,No=0,UNo=50,N=15]{1/(x+2)}$ \hfill~avec choix de la précision à $10^{-4}$.
+
+\smallskip
+
+On obtient $u_{20} \approx \CalculTermeRecurrence[Precision=6,No=0,UNo=50,N=20]{1/(x+2)}$ \hfill~avec choix de la précision à $10^{-6}$.
+\end{codesortie}
+
+\begin{codecles}
+Plusieurs \Cle{Clés} sont disponibles pour la commande du seuil :
+
+\begin{itemize}
+ \item la clé \Cle{NomSuite} qui est le nom de la suite ;\hfill~défaut \Cle{u}
+ \item la clé \Cle{No} qui est le rang initial de la suite ;
+ \item la clé \Cle{UNo} qui est le terme initial de la suite ;
+ %\item la clé \Cle{SolN} qui est la valeur de l'indice cherché ;
+ \item la clé \Cle{Precision} qui précise l'arrondi éventuel ;\hfill{}défaut \Cle{2}
+ \item la clé \Cle{Stretch} qui permet d'espacer les lignes ;\hfill{}défaut \Cle{1.15}
+ \item les booléens \Cle{Balayage} ou \Cle{Calculatrice} pour afficher un texte en amont ;\hfill{}défaut \Cle{false}
+ \item le booléen \Cle{Simple} pour une présentation plus \textit{neutre} ;\hfill{}défaut \Cle{false}
+ \item le booléen \Cle{Majuscule} qui affiche le texte avant, avec une majuscule au début ;\hfill{}défaut \Cle{true}
+ \item le booléen \Cle{Exact} qui affiche \ctex{=} au lieu de \ctex{\textbackslash approx} ;\hfill{}défaut \Cle{false}
+ \item le booléen \Cle{Conclusion} pour afficher la conclusion ou non ;\hfill{}défaut \Cle{true}
+ \item la clé \Cle{Sens} parmi \Cle{< / > / <= / >=} pour indiquer le type de seuil.\hfill{}défaut \Cle{>}
+\end{itemize}
+
+\smallskip
+
+Le premier argument mandataire est la fonction associée à la suite, en syntaxe \ctex{xint} et avec comme variable $x$, et le second est le seuil à dépasser.
+\end{codecles}
+
+\begin{codetex}[]
+Avec $\begin{dcases} u_1 = 2 \\ u_{n+1}=1+\dfrac{1+u_n^2}{1+u_n} \end{dcases}$,
+on cherche $n$ tel que $u_n > 5$.\\
+\SolutionSeuil[Balayage,No=1,UNo=2]{1+(1+x**2)/(1+x)}{5}.
+~\SolutionSeuil[Calculatrice,Precision=4,No=1,UNo=2,Conclusion=false]{1+(1+x**2)/(1+x)}{5}.\\
+\end{codetex}
+
+\subsection{Exemple d'utilisation}
+
+\begin{codetex}[]
+Avec $\begin{dcases} u_1 = 2 \\ u_{n+1}=1+\dfrac{1+u_n^2}{1+u_n} \end{dcases}$,
+on obtient le tableau de valeurs suivant :
+\begin{tabular}{c|c}
+ $n$ & $u_n$ \\ \hline
+ 1 & 2 \\
+ \xintFor* #1 in {\xintSeq{2}{8}} \do {#1 & \CalculTermeRecurrence[No=1,UNo=2,N=#1]{1+(1+x**2)/(1+x)} \\}
+\end{tabular}\\
+
+\SolutionSeuil[Precision=4,No=1,UNo=2,Simple]{1+(1+x**2)/(1+x)}{10} (Ainsi $u_n > 10$ à partir de $n=\the\CompteurSeuil$)
+\end{codetex}
+
+\newpage
+
+\part{Outils graphiques, via \TikZ}
+
\section{Repérage et tracé de courbes, en \TikZ}\label{reperagetikz}
\subsection{Idée}
@@ -1355,56 +1614,7 @@ On obtient le résultat suivant (avec les éléments rajoutés utiles à la comp
\newpage
-\section{Présentation d'une solution d'équation par balayage}\label{solutiontvi}
-
-\subsection{Idée}
-
-\begin{codeidee}
-\cmaj{2.0.4} L'idée est de présenter l'obtention d'une solution approchée d'équation par balayage, dans le cadre du TVI par exemple. Les calculs et tests sont effectués grâce au package \ctex{xinttools}, et le formatage par \ctex{tabularray} et \ctex{sinuitx}.
-\end{codeidee}
-
-\begin{codeattention}
-Le code ne trouve pas la solution, il met \textit{juste} en forme mais effectue quand même les calculs d'images et les tests.
-\end{codeattention}
-
-\begin{codetex}[listing only]
-\SolutionTVI[options]{fonction}{valeur}
-\end{codetex}
-
-\subsection{Clés et arguments}
-
-\begin{codecles}
-Plusieurs \Cle{Clés} sont disponibles pour cette commande, relative donc à une équation du type $f(x)=k$ :
-
-\begin{itemize}
- \item la clé \Cle{NomFct} qui permet de spécifier le nom de la fonction ;\hfill{}défaut \Cle{f}
- \item la clé \Cle{NomSol} qui permet de spécifier le nom de la fonction ;\hfill{}défaut \Cle{\textbackslash{}alpha}
- \item les clés \Cle{va} et \Cle{vb} qui sont les bornes inférieure et supérieure de l'encadrement ;
- \item la clé \Cle{Precision} qui est la précision des calculs pour les images ;\hfill{}défaut \Cle{2}
- \item la clé \Cle{Stretch} qui permet d'espacer les lignes ;\hfill{}défaut \Cle{1.15}
- \item les booléens \Cle{Balayage} ou \Cle{Calculatrice} pour afficher un texte en amont ;\hfill{}défaut \Cle{false}
- %\item le booléen \Cle{Simple} pour une présentation plus \textit{neutre} ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Majuscule} qui affiche le texte avant, avec une majuscule au début ;\hfill{}défaut \Cle{true}
-\end{itemize}
-
-\smallskip
-
-Le premier argument mandataire est la fonction, en syntaxe \ctex{xint} et avec comme variable $x$, et le second la valeur de $k$.
-\end{codecles}
-\begin{codetex}[]
-Pour $f(x)=0$ avec $f(x)=x^2-2$. On obtient \SolutionTVI[va=1.414,vb=1.415,Precision=3]{x**2-2}{0}.
-\end{codetex}
-
-\begin{codetex}[]
-Avec $\varphi(t)=3t\,\rm{e}^{-0,5t+1}=5$,
-\SolutionTVI[Majuscule=false,Calculatrice,va=1.02,vb=1.03,NomFct=\varphi]{3*x*exp(-0.5*x+1)}{5}
-\end{codetex}
-
-\begin{codetex}[]
-On s'intéresse à $g(x)=\num{1,5}$ avec $g(x)=\ln(x)$.
-\SolutionTVI[Balayage,Stretch=1.5,va=4.48,vb=4.49,NomFct=g,Precision=4,NomSol={x_0}]{log(x)}{1.5}.
-\end{codetex}
\newpage
@@ -1612,124 +1822,6 @@ En ce qui concerne les autres arguments :
\newpage
-\section{Suites récurrentes simples}\label{calcrecurr}
-
-\subsection{Idées}
-
-\begin{codeidee}
-\cmaj{2.0.3} L'idée est de proposer des commandes pour effectuer des calculs avec des suites récurrentes du type $u_{n+1}=f\big(u_n\big)$ :
-
-\begin{itemize}
- \item calcul de termes avec possibilité d'arrondir ;
- \item présentation de la conclusion de la recherche d'un seuil du type $u_n > S$ ou $u_n < S$.
-\end{itemize}
-\end{codeidee}
-
-\begin{codeattention}
-\cmaj{2.1.0} Le code pour le seuil \textbf{trouve} également le rang cherché, il met en forme et effectue les calculs d'images.
-
-\smallskip
-
-\cmaj{2.0.5} Le choix a été fait de faire les calculs en mode \ctex{float} pour éviter les dépassements de capacité de \ctex{xint} liés aux boucles\ldots
-\end{codeattention}
-
-\begin{codetex}[listing only]
-%commande pour calculer et formater
-\CalculTermeRecurrence[options]{fonction associée}
-
-%mise en forme de la conclusion d'un seuil
-\SolutionSeuil[options]{fonction associée}{seuil}
-\end{codetex}
-
-\subsection{Clés et arguments}
-
-\begin{codecles}
-Plusieurs \Cle{Clés} sont disponibles pour la commande du calcul d'un terme :
-
-\begin{itemize}
- \item la clé \Cle{No} qui est le rang initial de la suite ;
- \item la clé \Cle{UNo} qui est le terme initial de la suite ;
- \item la clé \Cle{Precision} qui précise l'arrondi éventuel ;\hfill{}défaut \Cle{3}
- \item la clé \Cle{N} qui est l'indice du terme à calculer.
-\end{itemize}
-
-\smallskip
-
-L'argument mandataire est la fonction associée à la suite, en syntaxe \ctex{xint} et avec comme variable $x$.
-\end{codecles}
-
-\begin{codetex}[listing only]
-Avec $\begin{dcases} u_0 = 50 \\ u_{n+1}=\dfrac{1}{u_n+2} \end{dcases}$.
-
-On obtient $u_{10} \approx \CalculTermeRecurrence[No=0,UNo=50,N=10]{1/(x+2)}$.
-
-On obtient $u_{15} \approx \CalculTermeRecurrence[Precision=4,No=0,UNo=50,N=15]{1/(x+2)}$.
-
-On obtient $u_{20} \approx \CalculTermeRecurrence[Precision=6,No=0,UNo=50,N=20]{1/(x+2)}$.
-\end{codetex}
-
-\begin{codesortie}
-Avec $u_0 = 50$ et $u_{n+1}=\dfrac{1}{u_n+2}$.
-
-\smallskip
-
-On obtient $u_{10} \approx \CalculTermeRecurrence[No=0,UNo=50,N=10]{1/(x+2)}$ \hfill~sortie par défaut.
-
-\smallskip
-
-On obtient $u_{15} \approx \CalculTermeRecurrence[Precision=4,No=0,UNo=50,N=15]{1/(x+2)}$ \hfill~avec choix de la précision à $10^{-4}$.
-
-\smallskip
-
-On obtient $u_{20} \approx \CalculTermeRecurrence[Precision=6,No=0,UNo=50,N=20]{1/(x+2)}$ \hfill~avec choix de la précision à $10^{-6}$.
-\end{codesortie}
-
-\begin{codecles}
-Plusieurs \Cle{Clés} sont disponibles pour la commande du seuil :
-
-\begin{itemize}
- \item la clé \Cle{NomSuite} qui est le nom de la suite ;\hfill~défaut \Cle{u}
- \item la clé \Cle{No} qui est le rang initial de la suite ;
- \item la clé \Cle{UNo} qui est le terme initial de la suite ;
- %\item la clé \Cle{SolN} qui est la valeur de l'indice cherché ;
- \item la clé \Cle{Precision} qui précise l'arrondi éventuel ;\hfill{}défaut \Cle{2}
- \item la clé \Cle{Stretch} qui permet d'espacer les lignes ;\hfill{}défaut \Cle{1.15}
- \item les booléens \Cle{Balayage} ou \Cle{Calculatrice} pour afficher un texte en amont ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Simple} pour une présentation plus \textit{neutre} ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Majuscule} qui affiche le texte avant, avec une majuscule au début ;\hfill{}défaut \Cle{true}
- \item le booléen \Cle{Exact} qui affiche \ctex{=} au lieu de \ctex{\textbackslash approx} ;\hfill{}défaut \Cle{false}
- \item le booléen \Cle{Conclusion} pour afficher la conclusion ou non ;\hfill{}défaut \Cle{true}
- \item la clé \Cle{Sens} parmi \Cle{< / > / <= / >=} pour indiquer le type de seuil.\hfill{}défaut \Cle{>}
-\end{itemize}
-
-\smallskip
-
-Le premier argument mandataire est la fonction associée à la suite, en syntaxe \ctex{xint} et avec comme variable $x$, et le second est le seuil à dépasser.
-\end{codecles}
-
-\begin{codetex}[]
-Avec $\begin{dcases} u_1 = 2 \\ u_{n+1}=1+\dfrac{1+u_n^2}{1+u_n} \end{dcases}$,
-on cherche $n$ tel que $u_n > 5$.\\
-\SolutionSeuil[Balayage,No=1,UNo=2]{1+(1+x**2)/(1+x)}{5}.
-~\SolutionSeuil[Calculatrice,Precision=4,No=1,UNo=2,Conclusion=false]{1+(1+x**2)/(1+x)}{5}.\\
-\end{codetex}
-
-\subsection{Exemple d'utilisation}
-
-\begin{codetex}[]
-Avec $\begin{dcases} u_1 = 2 \\ u_{n+1}=1+\dfrac{1+u_n^2}{1+u_n} \end{dcases}$,
-on obtient le tableau de valeurs suivant :
-\begin{tabular}{c|c}
- $n$ & $u_n$ \\ \hline
- 1 & 2 \\
- \xintFor* #1 in {\xintSeq{2}{8}} \do {#1 & \CalculTermeRecurrence[No=1,UNo=2,N=#1]{1+(1+x**2)/(1+x)} \\}
-\end{tabular}\\
-
-\SolutionSeuil[Precision=4,No=1,UNo=2,Simple]{1+(1+x**2)/(1+x)}{10} (Ainsi $u_n > 10$ à partir de $n=\the\CompteurSeuil$)
-\end{codetex}
-
-\newpage
-
\section{Suites récurrentes et \og toile \fg}\label{recurr}
\subsection{Idée}
@@ -3358,7 +3450,7 @@ Les valeurs \Cle{mainlevee=5mm et 0.6pt} donnent des résultats -- à mon sens -
\begin{codeidee}
L'idée est d'utiliser une commande qui va permettre de calculer les paramètres principaux d'un régression linéaire par la méthode des moindres carrés.
-Le package \ctex{pgfpots} permet de le faire nativement, mais le moteur de calculs de \textsf{pgf} n'est pas des plus performants avec de grandes valeurs, donc ici cela passe par \ctex{xfp} qui permet de gagner en précision !
+Le package \ctex{pgfpots} permet de le faire nativement, mais le moteur de calculs de \textsf{pgf} peut poser souci avec de grandes valeurs, donc ici cela passe par \ctex{xfp} qui permet de \textit{gagner} en précision !
\smallskip
@@ -3666,7 +3758,7 @@ L'idée est de \textit{prolonger} le paragraphe précédent pour proposer un env
Un des soucis pour ces situations est le fait que le repère dans lequel on travaille n'a pas forcément pour origine $(0\,;\,0)$.
-De ce fait - pour éviter des erreurs de \ctex{dimension too large} liées à \TikZ{} - il faut \textit{décaler les axes} pour se ramener à une origine en $O$.
+De ce fait -- pour éviter des erreurs de \ctex{dimension too large} liées à \TikZ{} -- il faut \textit{décaler les axes} pour se ramener à une origine en $O$.
\smallskip
@@ -3993,7 +4085,7 @@ Cette commande, liée à la commande \ctex{CalculsRegLin} permet de représenter
\GrilleTikz \AxesTikz
\AxexTikz[Annee,Police=\small]{1992,1994,...,2010}
\AxeyTikz{1640,1650,...,1720}
- \NuagePointsTikz[couleur=blue/red]{\LLX}{\LLY}
+ \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY}
\end{tikzpicture}
~~
\begin{tikzpicture}[x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2012,xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1730,ygrille=10,ygrilles=5]
@@ -4075,8 +4167,8 @@ Cette commande permet de rajouter le point moyen du nuage, calculé par la comma
Cette commande permet de rajouter une courbe sur le graphique (sans se soucier de la transformation de son expression) avec les arguments :
\begin{itemize}
- \item \Cle{optionnels} qui sont - en \TikZ{} - les paramètres du tracé ;
- \item le premier mandataire, est - en langage \TikZ{} - l'expression de la fonction à tracer, donc avec \ctex{\textbackslash{}x} comme variable ;
+ \item \Cle{optionnels} qui sont -- en \TikZ{} -- les paramètres du tracé ;
+ \item le premier mandataire, est -- en langage \TikZ{} -- l'expression de la fonction à tracer, donc avec \ctex{\textbackslash{}x} comme variable ;
\item le second mandataire est le domaine du tracé , sous la forme \ctex{valxmin:valxmax}.
\end{itemize}
\end{codecles}
@@ -4095,7 +4187,7 @@ L'idée principale est de récupérer les variables de la régression linéaire
\CalculsRegLin{\LLX}{\LLY}
\begin{tikzpicture}[...]
- \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \NuagePointsTikz
+ \NuagePointsTikz[Couleur=blue/red]{\LLX}{\LLY} \PointMoyenTikz
\CourbeTikz[line width=1.25pt,ForestGreen,samples=2]{\COEFFa*\x+\COEFFb}{\xmin:\xmax}
\end{tikzpicture}
\end{codetex}
@@ -4320,7 +4412,7 @@ Les probabilités calculables sont donc -- comme pour beaucoup de modèles de ca
\smallskip
-Pour les probabilités cumulées, on peut utiliser \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$.
+Pour les probabilités cumulées, on peut utiliser le caractère \ctex{*} comme borne ($a$ ou $b$), pour les probabilités du type $P(X\leqslant b)$ et $P(X \geqslant a)$.
\end{codecles}
\begin{codetex}[listing only]
@@ -4346,13 +4438,13 @@ $P(1\leqslant W\leqslant3) \approx \CalcHypergeomC{50}{10}{5}{1}{3}$.
\end{codetex}
\begin{codesortie}[listing only]
-$\bullet~~~~X \hookrightarrow \mathcal{B}(5\,;\,0,4)$ :\\
+$\bullet~~~~X \hookrightarrow \mathcal{B}(5\,; 0,4)$ :\\
$P(X=3) \approx \CalcBinomP{5}{0.4}{3}$.\\
$P(X\leqslant1) \approx \CalcBinomC{5}{0.4}{*}{1}$.
\medskip
-$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ :\\
+$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ :\\
$P(X=10) \approx \CalcBinomP{100}{0.02}{10}$.\\
$P(15\leqslant X\leqslant25) \approx \CalcBinomC{100}{0.02}{15}{25}$.
@@ -4370,7 +4462,7 @@ $P(T\leqslant5) \approx \CalcGeomC{0.5}{*}{5}$.
\medskip
-$\bullet~~~~W \hookrightarrow \mathcal{H}(50\,;\,10\,;\,5)$ :\\
+$\bullet~~~~W \hookrightarrow \mathcal{H}(50\,; 10\,; 5)$ :\\
$P(W=4) \approx \CalcHypergeomP{50}{10}{5}{4}$.\\
$P(1\leqslant W\leqslant3) \approx \CalcHypergeomC{50}{10}{5}{1}{3}$.
\end{codesortie}
@@ -4390,13 +4482,13 @@ $P(300\leqslant Z\leqslant750) \approx \CalcExpoC{0.001}{300}{750}$.
\end{codetex}
\begin{codesortie}
-$\bullet~~~~X \hookrightarrow \mathcal{N}(0\,;\,1)$ :\\
+$\bullet~~~~X \hookrightarrow \mathcal{N}(0\,; 1)$ :\\
$P(X\leqslant1) \approx \CalcNormC{0}{1}{*}{1}$.\\
$P(-1,96\leqslant Z\leqslant1,96) \approx \CalcNormC{0}{1}{-1.96}{1.96}$.
\medskip
-$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,;\,30)$ :\\
+$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,; 30)$ :\\
$P(Y\geqslant600) \approx \CalcNormC{550}{30}{600}{*}$.\\
$P(500\leqslant Y\leqslant600) \approx \CalcNormC{550}{30}{500}{600}$.
@@ -4423,7 +4515,7 @@ L'utilisateur peut donc utiliser \og sa \fg{} méthode pour formater les résult
\end{codetex}
\begin{codesortie}
-$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ :
+$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ :
$P(X=10) \approx \num[exponent-mode=scientific]{\CalcBinomP{100}{0.02}{10}}$.
\end{codesortie}
@@ -4431,7 +4523,7 @@ $P(X=10) \approx \num[exponent-mode=scientific]{\CalcBinomP{100}{0.02}{10}}$.
\begin{codeidee}
Le package \ctex{ProfLycee} propose -- en complément -- des commandes pour formater, grâce à \ctex{siunitx}, le résultat.
-Les commandes sont dans ce cas préfixées par \ctex{num} au lieu de \ctex{calc} :
+Les commandes ne sont donc, dans ce cas, pas préfixées par \ctex{calc} :
\begin{itemize}
\item formatage sous forme décimale \textit{pure} : $0,00\ldots$ ;
@@ -4491,7 +4583,7 @@ $P(T\geqslant2) \approx \PoissonC[4]{5}{2}{*}$.
\end{codetex}
\begin{codesortie}
-$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,;\,30)$ :
+$\bullet~~~~Y \hookrightarrow \mathcal{N}(550\,; 30)$ :
$P(Y\geqslant600) \approx \NormaleC[4]{550}{30}{600}{*}$.
@@ -4499,7 +4591,7 @@ $P(500\leqslant Y\leqslant600) \approx \NormaleC[4]{550}{30}{500}{600}$.
\medskip
-$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,;\,0,02)$ :
+$\bullet~~~~X \hookrightarrow \mathcal{B}(100\,; 0,02)$ :
$P(X=10) \approx \BinomP[7]{100}{0.02}{10} \approx \BinomP*[7]{100}{0.02}{10}$.
@@ -4507,7 +4599,7 @@ $P(15\leqslant X\leqslant25) \approx \BinomC[10]{100}{0.02}{15}{25} \approx \Bin
\medskip
-$\bullet~~~~W \hookrightarrow \mathcal{H}(50\,;\,10\,;\,5)$ :
+$\bullet~~~~W \hookrightarrow \mathcal{H}(50\,; 10\,; 5)$ :
$P(W=4) \approx \HypergeomP[5]{50}{10}{5}{4}$.
@@ -5077,7 +5169,7 @@ $\ConversionVersDec[Zeros=false,BaseDep=16]{AC0DC}$
\newpage
-\section{Conversion \og présentée \fg{} d'un nombre en décimal}\label{convrestes}
+\section{Conversion \og présentée \fg{} d'un nombre en base décimale}\label{convrestes}
\subsection{Idée}
@@ -5496,7 +5588,7 @@ Avec $a$ entre 1 et 10 (forcément positif) puis $b$ entre $-2$ et 2 puis $c$ en
\end{codetex}
\begin{codeinfo}
-C'est -- comme souvent -- le package \ctex{xint} qui s'occupe en interne des calculs, et qui devrait donner des résultats satisfaisant dans la majorité des cas (attention aux \textit{grands nombres}\ldots)
+C'est -- comme souvent -- le package \ctex{xint} qui s'occupe en interne des calculs, et qui devrait donner des résultats satisfaisants dans la majorité des cas (attention aux \textit{grands nombres}\ldots)
\smallskip
@@ -6098,6 +6190,8 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
\part{Historique}
+{\small \bverb|v 2.1.4|~:~~~~Résolution approchée d'équations $f(x)=k$ (page \pageref{resolapprox})
+
{\small \bverb|v 2.1.3|~:~~~~Améliorations dans les présentations \textsf{Piton} (page \pageref{pythonpiton})
{\small \bverb|v 2.1.2|~:~~~~Ajout d'une commande pour la mesure principale d'un angle (page \pageref{mesureprincipale})
@@ -6122,17 +6216,13 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v 2.0.4|~:~~~~Ajout d'une commande pour une présentation de solution par TVI (page \pageref{solutiontvi})
-{\small \bverb| |~:~~~~Correction d'un bug avec \textsf{Arbre=3x3} (page \pageref{arbresprobas})
-
{\small \bverb|v 2.0.3|~:~~~~Commandes pour des suites récurrentes \textit{simples} (page \pageref{calcrecurr})
{\small \bverb|v 2.0.2|~:~~~~Option \textsf{left-margin=auto} pour le package \textsf{piton} (page \pageref{pythonpiton})
{\small \bverb|v 2.0.1|~:~~~~Chargement du package \textsf{piton} uniquement si compilation en \LuaLaTeX{} (page \pageref{pythonpiton})
-{\small \bverb|v 2.0.0|~:~~~~Refonte du code source avec modification des commandes}
-
-{\small \bverb| |~:~~~~Refonte de la documentation}
+{\small \bverb|v 2.0.0|~:~~~~Refonte du code source avec modification des commandes, et de la documentation}
\hrulefill
@@ -6160,8 +6250,6 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v 1.2.9|~:~~~~Correction des commandes avec \textsf{simplekv}
-{\small \bverb|v 1.2.8|~:~~~~Ajout d'une librairie \TikZ{} oubliée, et remise en forme de la documentation
-
{\small \bverb|v 1.2.7|~:~~~~Ajout de commandes pour des calculs de probabilités (page \pageref{calcprobas})
{\small \bverb|v 1.2.6|~:~~~~Ajout d'un environnement pour des SudoMaths (page \pageref{sudomaths})
@@ -6176,8 +6264,6 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v 1.2.1|~:~~~~Amélioration de la gestion du csv pour Pixelart
-{\small \bverb|v 1.2.0|~:~~~~Correction d'un \textit{méchant} bug sur Pixelart
-
{\small \bverb|v 1.1.9|~:~~~~Pixelart en \TikZ{} (page \pageref{pixelart})
{\small \bverb|v 1.1.8|~:~~~~Style "Mainlevée" basique pour \TikZ (page \pageref{mainlevee})
@@ -6212,8 +6298,6 @@ La grille, créée en \TikZ, est portée par le rectangle de \og coins \fg{} $(0
{\small \bverb|v 1.0.2|~:~~~~Ajout des environnements pour Python (\textsf{pythontex}) (page \pageref{pythontex})
-{\small \bverb|v 1.0.1|~:~~~~Modification mineure liée au chargement de \textsf{xcolor}
-
{\small \bverb|v 1.0 |~:~~~~Version initiale}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_a.png b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_a.png
new file mode 100644
index 0000000000..d1baeb62ff
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_a.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_b.png b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_b.png
new file mode 100644
index 0000000000..3059e3d7e0
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_b.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.png b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.png
new file mode 100644
index 0000000000..9d32557198
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_c.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.png b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.png
new file mode 100644
index 0000000000..b929432bb7
--- /dev/null
+++ b/macros/latex/contrib/proflycee/doc/graphics/pl-solve_d.png
Binary files differ
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index c16b078219..211b16dcb1 100644
--- a/macros/latex/contrib/proflycee/tex/ProfLycee.sty
+++ b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
@@ -3,7 +3,8 @@
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{ProfLycee}[2022/12/30 2.1.3 Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2023/01/02 2.1.4 Aide pour l'utilisation de LaTeX en lycee]
+% 2.1.4 Ajout d'une commande pour résoudre de manière approchée une équation f(x)=k
% 2.1.3 Ajout de l'option auto-tabs-gobble sur piton (v1.0) + correction d'un bug sur CodePiton
% 2.1.2 Ajout d'une commande pour déterminer la mesure principale d'un angle + option <ElargirOx/y> pour les axes
% 2.1.1 Ajout d'une section pour les tracés de repère et courbe, en tikz
@@ -89,7 +90,8 @@
\RequirePackage{hvlogos}
\RequirePackage{fancyvrb}
\RequirePackage{siunitx} %test avec v3
-\sisetup{locale=FR,output-decimal-marker={,},%
+\sisetup{%
+ locale=FR,output-decimal-marker={,},%
mode = match, propagate-math-font = true,%
reset-math-version = false, reset-text-family = false,%
reset-text-series = false, reset-text-shape = false,%
@@ -3574,4 +3576,46 @@
}%
}
+%================DICHOTOMIE============== OK!
+\defKV[SolDichoto]{%
+ Precision=\xdef\DICHOTOstep{#1},%
+ Intervalle=\xdef\DICHOTOinterv{#1},%
+ Variable=\xdef\DICHOTOvar{#1}
+}
+
+\setKVdefault[SolDichoto]{%
+ Precision=2,%
+ Variable=x,%
+ Intervalle={0:10}
+}
+
+\NewDocumentCommand\ResolutionApprochee{ O{} m O{masolution} }{%1=options,2=equation,3=macro
+ \useKVdefault[SolDichoto]%
+ %extraction fonction + valeur
+ \setKV[SolDichoto]{#1}%
+ \IfSubStr{#2}{=}%on coupe mmb gauche / mmb droit
+ {\StrCut{#2}{=}{\SolDiFCT}{\SolDiVal}}%
+ {\xdef\SolDiFCT{#2}\xdef\SolDiVal{0}}%
+ %création des variables temporaires
+ \xintdeffloatfunc dichotovarfct(\DICHOTOvar) := \SolDiFCT ;%
+ \StrCut{\DICHOTOinterv}{:}{\varvala}{\varvalb}%
+ \xdef\varstep{\fpeval{10**(-\DICHOTOstep-1)}}%un chiffre en plus :-)
+ %boucles
+ \whiledo{\xintGt{\xintfloateval{\varvalb-\varvala-\varstep}}{0} = 1}%
+ {%
+ \xdef\varvalm{\xintfloateval{(\varvala+\varvalb)*0.5}}%
+ \xintifboolexpr{\xintGt{\xintfloateval{(dichotovarfct(\varvala)-\SolDiVal)*(dichotovarfct(\varvalm)-\SolDiVal)}}{0}==1}%
+ {\xdef\varvala{\fpeval{\varvalm}}}%
+ {\xdef\varvalb{\fpeval{\varvalm}}}%
+ }%
+ \xdef\varvalm{\xintfloateval{(\varvala+\varvalb)*0.5}}%
+ \xdef\vartmpmd{\fpeval{floor(\varvalm,\DICHOTOstep)}}%
+ \xdef\vartmpme{\fpeval{\vartmpmd+10**(-\DICHOTOstep)}}%
+ %les variables créées
+ \expandafter\def\csname#3d\endcsname{\fpeval{\vartmpmd}}%
+ \expandafter\def\csname#3e\endcsname{\fpeval{\vartmpme}}%
+ %valeur approchée
+ \expandafter\def\csname#3a\endcsname{\fpeval{round(\varvalm,\DICHOTOstep)}}%
+}
+
\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 95c60bb247..e71d02eabb 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,6 +7,25 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.2.0] - 2023-01-03
+
+## Added
+- Option `exponent-thresholds` and option setting `exponent-mode = threshold`
+ to allow selective use of exponent mode output (see issue
+ [\#204](https://github.com/josephwright/siunitx/issues/204))
+- Options `print-exponent-implicit-plus` and `print-mantissa-implicit-plus`
+ (see issue
+ [\#493](https://github.com/josephwright/siunitx/issues/493))
+- Abbreviation `\mF` (see issue
+ [\#624](https://github.com/josephwright/siunitx/issues/624))
+- New SI prefixes `\ronna`, `\ronto`, `\quetta` and `\quecto` (see issue
+ [\#629](https://github.com/josephwright/siunitx/issues/629))
+
+### Changed
+- Extend alignment of uncertainties in tabulars to include decimal marker
+ (see issue [\#370](https://github.com/josephwright/siunitx/issues/370))
+- Require `expl3` 2022-11-09 or later
+
## [v3.1.11] - 2022-12-05
### Fixed
@@ -1838,7 +1857,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.1.11...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.2.0...HEAD
+[v3.2.0]: https://github.com/josephwright/siunitx/compare/v3.1.11...v3.2.0
[v3.1.11]: https://github.com/josephwright/siunitx/compare/v3.1.10...v3.1.11
[v3.1.10]: https://github.com/josephwright/siunitx/compare/v3.1.9...v3.1.10
[v3.1.9]: https://github.com/josephwright/siunitx/compare/v3.1.8...v3.1.9
diff --git a/macros/latex/contrib/siunitx/siunitx-abbreviation.dtx b/macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
index debc9f2a6b..11ebc290cb 100644
--- a/macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
@@ -114,7 +114,7 @@
% Abbreviations for resistance.
% \end{function}
%
-% \begin{function}{\F, \fF, \pF, \nF, \uF}
+% \begin{function}{\F, \fF, \pF, \nF, \uF, \mF}
% Abbreviations for capacitance.
% \end{function}
%
@@ -274,7 +274,7 @@
\siunitx_declare_unit:Nn \dB { \deci \bel }
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\F, \fF, \pF, \nF, \uF}
+% \begin{macro}{\F, \fF, \pF, \nF, \uF, mF}
% Capacitance.
% \begin{macrocode}
\siunitx_declare_unit:Nn \F { \farad }
@@ -282,6 +282,7 @@
\siunitx_declare_unit:Nn \pF { \pico \farad }
\siunitx_declare_unit:Nn \nF { \nano \farad }
\siunitx_declare_unit:Nn \uF { \micro \farad }
+\siunitx_declare_unit:Nn \mF { \milli \farad }
% \end{macrocode}
% \end{macro}
% \begin{macro}{\H, \fH, \pH, \nH, \uH, \mH}
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index 07880f9c2d..4984647c28 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-emulation.dtx b/macros/latex/contrib/siunitx/siunitx-emulation.dtx
index 96bbaf02d4..65db65b664 100644
--- a/macros/latex/contrib/siunitx/siunitx-emulation.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-emulation.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% File: siunitx-emulation.dtx Copyright (C) 2016-2019,2021,2022 Joseph Wright
+% File: siunitx-emulation.dtx Copyright (C) 2016-2019,2021-2023 Joseph Wright
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -941,37 +941,12 @@
% \end{macrocode}
%
% \begin{macro}{\@@_non_latin:n}
-% \begin{macro}{\@@_non_latin:nnnn}
-% As in \pkg{siunitx-unit}, but internal in both cases as it's rather
-% specialised.
+% A shortcut.
% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_new:Npn \@@_non_latin:n #1
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { \char_value_catcode:n {#1} }
- }
- }
- {
- \cs_new:Npn \@@_non_latin:n #1
- {
- \exp_last_unbraced:Nf \@@_non_latin:nnnn
- { \char_to_utfviii_bytes:n {#1} }
- }
- \cs_new:Npn \@@_non_latin:nnnn #1#2#3#4
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { 13 }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#2} { 13 }
- }
- }
+\cs_new:Npn \@@_non_latin:n #1
+ { \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } }
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}
% {
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index f08a6a8c0f..007d0b0825 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -286,8 +286,18 @@
%
% \begin{function}{exponent-mode}
% \begin{syntax}
-% |exponent-mode| = |engineering|\verb"|"|fixed|\verb"|"|input|\verb"|"|scientific|
+% |exponent-mode| = |engineering|\verb"|"|fixed|\verb"|"|input|\verb"|"|scientific|\verb"|"|threshold|
% \end{syntax}
+% Choice which determines whether numbers are converted to exponent form. The
+% option |engineering| forces exponent form with an exponent which is the
+% smallest power of three which gives a mantissa with an integer part. The
+% option |fixed| uses a fixed exponent (set in |fixed-exponent|). The
+% option |input| leaves the input unchanged (which will therefore produce an
+% exponent only if the input contained one). The choice |scientific| gives
+% an exponent with the mantissa~$m$ in the range $1 \le m < 10$. Finally,
+% the option |threshold| will apply |scientific| if the exponent of input
+% is outside of the range stored in |exponent-thresholds|. The standard
+% setting is |input|.
% \end{function}
%
% \begin{function}{exponent-product}
@@ -442,10 +452,20 @@
% \end{syntax}
% \end{function}
%
-% \begin{function}{print-implicit-plus}
+% \begin{function}
+% {
+% print-implicit-plus ,
+% print-mantissa-implicit-plus ,
+% print-exponent-implicit-plus
+% }
% \begin{syntax}
-% |print-implicit-plus| = |true|\verb"|"|false|
+% |print-implicit-plus| = |true|\verb"|"|false|
+% |print-mantissa-implicit-plus| = |true|\verb"|"|false|
+% |print-exponent-implicit-plus| = |true|\verb"|"|false|
% \end{syntax}
+% Controls whether the plus sign implicit in a positive number is printed;
+% this can be controlled at the level of the mantissa or exponent, or
+% can be activated for both.
% \end{function}
%
% \begin{function}{print-unity-mantissa}
@@ -1867,8 +1887,10 @@
drop-zero-decimal .bool_set:N =
\l_@@_drop_zero_decimal_bool ,
exponent-mode .choices:nn =
- { engineering , fixed , input , scientific }
+ { engineering , fixed , input , scientific , threshold }
{ \tl_set_eq:NN \l_@@_exponent_mode_tl \l_keys_choice_tl } ,
+ exponent-thresholds .code:n =
+ { \@@_set_thresholds:n {#1} } ,
fixed-exponent .int_set:N =
\l_@@_exponent_fixed_int ,
minimum-decimal-digits .int_set:N =
@@ -1934,6 +1956,40 @@
% \end{macro}
% \end{macro}
%
+% \begin{variable}{\l_@@_lower_threshold_int, \l_@@_upper_threshold_int}
+% For storing the range for exponents.
+% \begin{macrocode}
+\int_new:N \l_@@_lower_threshold_int
+\int_new:N \l_@@_upper_threshold_int
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_set_round_thresholds:n}
+% \begin{macro}{\@@_set_round_thresholds:w}
+% \begin{macro}{\@@_set_round_threshold:nn}
+% Split the range, parse each part, set the data structures.
+% \begin{macrocode}
+\cs_new_protected:Npx \@@_set_thresholds:n #1
+ {
+ \exp_not:N \@@_set_thresholds:w
+ #1 \token_to_str:N : \token_to_str:N : \exp_not:N \q_stop
+ }
+\use:x
+ {
+ \cs_new_protected:Npn \exp_not:N \@@_set_thresholds:w
+ ##1 \token_to_str:N : ##2 \token_to_str:N : ##3 \exp_not:N \q_stop
+ }
+ {
+ \@@_set_threshold:nn { lower } {#1}
+ \@@_set_threshold:nn { upper } {#2}
+ }
+\cs_new_protected:Npn \@@_set_threshold:nn #1#2
+ { \int_set:cn { l__@@_ #1 _threshold_int } { 0 #2 } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\siunitx_number_process:NN}
% \begin{macro}{\@@_process:nnnnnnnNN}
% A top-level interface for the processing tools. Rounding happens in all
@@ -2010,6 +2066,9 @@
% \begin{macro}[EXP]{\@@_exponent_engineering:nnNw}
% \begin{macro}[EXP]{\@@_exponent_engineering_uncert:nn}
% \begin{macro}[EXP]{\@@_exponent_engineering_uncert_S:nnn}
+% \begin{macro}[EXP]{\@@_exponent_threshold:nnnnnnn}
+% \begin{macro}[EXP]{\@@_exponent_threshold:nn}
+% \begin{macro}[EXP]{\@@_exponent_threshold:nnnnnnnn}
% Manipulating an exponent is done using a single expansion function
% \emph{unless} dealing with engineering-style output. The latter is easier
% to handle by first converting to scientific output, then post-processing.
@@ -2302,6 +2361,32 @@
}
}
% \end{macrocode}
+% To branch here we need to work out the scientific notation form.
+% \begin{macrocode}
+\cs_new:Npn \@@_exponent_threshold:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \exp_args:Ne \@@_exponent_threshold:nn
+ {
+ \@@_exponent_scientific:nnnnnnn
+ {#1} {#2} {#3} {#4} {#5} {#6} {#7}
+ }
+ { {#1} {#2} {#3} {#4} {#5} {#6} {#7} }
+ }
+\cs_new:Npn \@@_exponent_threshold:nn #1#2
+ { \@@_exponent_threshold:nnnnnnnn #1 {#2} }
+\cs_new:Npn \@@_exponent_threshold:nnnnnnnn #1#2#3#4#5#6#7#8
+ {
+ \bool_lazy_and:nnTF
+ { \int_compare_p:nNn {#6#7} > \l_@@_lower_threshold_int }
+ { \int_compare_p:nNn {#6#7} < \l_@@_upper_threshold_int }
+ { \exp_not:n {#8} }
+ { \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } }
+ }
+
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
@@ -3095,7 +3180,8 @@
% \@@_round_uncertainty_engineering:nnn ,
% \@@_round_uncertainty_fixed:nnn ,
% \@@_round_uncertainty_input:nnn ,
-% \@@_round_uncertainty_scientific:nnn
+% \@@_round_uncertainty_scientific:nnn ,
+% \@@_round_uncertainty_threshold:nnn
% }
% \begin{macro}[EXP]
% {
@@ -3225,7 +3311,9 @@
% we have a pathological case and need to filter out. They show up as they
% have the either the precision greater than the length of the integer
% part, or have a value of exactly $10$ when the exponent mode is
-% scientific.
+% scientific. The latter test has to deal with an exponent threshold too:
+% there we are looking for cases where the threshold will have forced
+% scientific presentation.
% \begin{macrocode}
\cs_new:Npn \@@_round_uncertainty_shift:nn #1#2
{ \@@_round_uncertainty_shift:nnnw #1 {#2} }
@@ -3237,7 +3325,25 @@
{ \int_compare_p:nNn {#3} > { \tl_count:n {#1} } }
{
! \bool_lazy_and_p:nn
- { \str_if_eq_p:Vn \l_@@_exponent_mode_tl { scientific } }
+ {
+ \bool_lazy_or_p:nn
+ { \str_if_eq_p:Vn \l_@@_exponent_mode_tl { scientific } }
+ {
+ \bool_lazy_and_p:nn
+ { \str_if_eq_p:Vn \l_@@_exponent_mode_tl { threshold } }
+ {
+ ! \bool_lazy_or_p:nn
+ {
+ \int_compare_p:nNn {#5#6} >
+ \l_@@_lower_threshold_int
+ }
+ {
+ \int_compare_p:nNn {#5#6} <
+ \l_@@_upper_threshold_int
+ }
+ }
+ }
+ }
{ \str_if_eq_p:nn { #1.#2 } { 10. } }
}
{
@@ -3311,6 +3417,18 @@
\@@_exponent_finalise:n { #2#3 + \tl_count:n {#1} - 1 }
}
% \end{macrocode}
+% We need to branch here based on the order of magnitude.
+% \begin{macrocode}
+\cs_new:Npn \@@_round_uncertainty_threshold:nnn #1#2#3
+ {
+ \bool_lazy_and:nnTF
+ { \int_compare_p:nNn {#2#3} > \l_@@_lower_threshold_int }
+ { \int_compare_p:nNn {#2#3} < \l_@@_upper_threshold_int }
+ { \@@_round_uncertainty_input:nnn }
+ { \@@_round_uncertainty_scientific:nnn }
+ {#1} {#2} {#3}
+ }
+% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
@@ -3415,7 +3533,8 @@
% \begin{variable}
% {
% \l_@@_bracket_negative_bool ,
-% \l_@@_implicit_plus_bool ,
+% \l_@@_implicit_plus_mant_bool ,
+% \l_@@_implicit_plus__exp_bool ,
% \l_@@_exponent_base_tl ,
% \l_@@_exponent_product_tl ,
% \l_@@_group_size_int ,
@@ -3495,8 +3614,16 @@
\l_@@_output_exp_marker_tl ,
output-open-uncertainty .tl_set:N =
\l_@@_output_uncert_open_tl ,
- print-implicit-plus .bool_set:N =
- \l_@@_implicit_plus_bool ,
+ print-implicit-plus .meta:n =
+ {
+ print-mantissa-implicit-plus = {#1} ,
+ print-exponent-implicit-plus = {#1}
+ } ,
+ print-implicit-plus .default:n = true ,
+ print-mantissa-implicit-plus .bool_set:N =
+ \l_@@_implicit_plus_mant_bool ,
+ print-exponent-implicit-plus .bool_set:N =
+ \l_@@_implicit_plus_exp_bool ,
print-unity-mantissa .bool_set:N =
\l_@@_unity_mantissa_bool ,
print-zero-exponent .bool_set:N =
@@ -3703,7 +3830,7 @@
{
\tl_if_blank:nTF {#2}
{
- \bool_if:NT \l_@@_implicit_plus_bool
+ \bool_if:NT \l_@@_implicit_plus_mant_bool
{ \@@_output_sign:nN {#1} + }
}
{
@@ -4251,7 +4378,7 @@
\tl_if_blank:nTF {#2}
{
\bool_lazy_and:nnT
- { \l_@@_implicit_plus_bool }
+ { \l_@@_implicit_plus_exp_bool }
{ ! \str_if_eq_p:nn {#3} { 0 } }
{ #1 + }
}
@@ -4460,7 +4587,9 @@
output-decimal-marker = . ,
output-open-uncertainty = ( , % )
parse-numbers = true ,
+ print-exponent-implicit-plus = false ,
print-implicit-plus = false ,
+ print-mantissa-implicit-plus = false ,
print-unity-mantissa = true ,
print-zero-exponent = false ,
print-zero-integer = true ,
@@ -4484,6 +4613,11 @@
zero-symbol = \mbox { --- }
}
% \end{macrocode}
+% One awkward setting.
+% \begin{macrocode}
+\keys_set:nx { siunitx }
+ { exponent-thresholds = -3 \c_colon_str 3 }
+% \end{macrocode}
%
% \begin{macrocode}
%</package>
diff --git a/macros/latex/contrib/siunitx/siunitx-quantity.dtx b/macros/latex/contrib/siunitx/siunitx-quantity.dtx
index 69182e37c3..b7e6352bdd 100644
--- a/macros/latex/contrib/siunitx/siunitx-quantity.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-quantity.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% File: siunitx-quantity.dtx Copyright (C) 2018-2022 Joseph Wright
+% File: siunitx-quantity.dtx Copyright (C) 2018-2023 Joseph Wright
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -419,37 +419,12 @@
% \subsection{Adjustments to units}
%
% \begin{macro}{\@@_non_latin:n}
-% \begin{macro}{\@@_non_latin:nnnn}
-% As in \pkg{siunitx-unit}, but internal in both cases as it's rather
-% specialised.
+% A shortcut.
% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_new:Npn \@@_non_latin:n #1
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { \char_value_catcode:n {#1} }
- }
- }
- {
- \cs_new:Npn \@@_non_latin:n #1
- {
- \exp_last_unbraced:Nf \@@_non_latin:nnnn
- { \char_to_utfviii_bytes:n {#1} }
- }
- \cs_new:Npn \@@_non_latin:nnnn #1#2#3#4
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { 13 }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#2} { 13 }
- }
- }
+\cs_new:Npn \@@_non_latin:n #1
+ { \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } }
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\arcminute, \arcsecond, \degree}
% The angles units are re-declared here: this is needed for using it
diff --git a/macros/latex/contrib/siunitx/siunitx-symbol.dtx b/macros/latex/contrib/siunitx/siunitx-symbol.dtx
index 496ea9a998..6d55931ce7 100644
--- a/macros/latex/contrib/siunitx/siunitx-symbol.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-symbol.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% File: siunitx-symbol.dtx Copyright (C) 2018-2022 Joseph Wright
+% File: siunitx-symbol.dtx Copyright (C) 2018-2023 Joseph Wright
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -95,40 +95,12 @@
% \end{macrocode}
%
% \begin{macro}{\@@_non_latin:n}
-% \begin{macro}{\@@_non_latin:nnnn}
-% As in \pkg{siunitx-unit}, but internal in both cases as it's rather
-% specialised.
+% A shortcut.
% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_new:Npn \@@_non_latin:n #1
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { \char_value_catcode:n {#1} }
- }
- }
- {
- \cs_new:Npn \@@_non_latin:n #1
- {
- \exp_last_unbraced:Nf \@@_non_latin:nnnn
- { \char_to_utfviii_bytes:n {#1} }
- }
- \cs_new:Npn \@@_non_latin:nnnn #1#2#3#4
- {
- \@@_deal_with_utf:
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { 13 }
- \char_generate:nn {#2} { 12 }
- \tl_if_blank:nF {#3}
- { \char_generate:nn {#3} { 12 } }
- }
- }
-\cs_new:Npn \@@_deal_with_utf: { }
+\cs_new:Npn \@@_non_latin:n #1
+ { \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } }
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\@@_if_replace:NnT}
% A test to see if the unit definition which applies is still one we expect:
diff --git a/macros/latex/contrib/siunitx/siunitx-table.dtx b/macros/latex/contrib/siunitx/siunitx-table.dtx
index b8f5aea8e3..10b9b9a7cd 100644
--- a/macros/latex/contrib/siunitx/siunitx-table.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-table.dtx
@@ -701,6 +701,13 @@
% \end{macrocode}
% \end{variable}
%
+% \begin{variable}{\l_@@_uncert_box}
+% An extra one for aligning separated uncertainty values.
+% \begin{macrocode}
+\box_new:N \l_@@_uncert_box
+% \end{macrocode}
+% \end{variable}
+%
% \begin{macro}{\@@_fil:, \@@_fill:}
% Primitives renamed.
% \begin{macrocode}
@@ -1152,13 +1159,19 @@
% \begin{macro}[EXP]{\@@_print_format:nnnnnn}
% \begin{macro}
% {
-% \@@_print_format_auxi:w ,
-% \@@_print_format_auxii:w ,
-% \@@_print_format_auxiii:w ,
-% \@@_print_format_auxiv:w ,
-% \@@_print_format_auxv:w ,
-% \@@_print_format_auxvi:w ,
-% \@@_print_format_auxvii:w
+% \@@_print_format_auxi:w ,
+% \@@_print_format_auxii:w ,
+% \@@_print_format_auxiii:w ,
+% \@@_print_format_auxiv:w ,
+% \@@_print_format_auxv:w ,
+% \@@_print_format_auxvi:w ,
+% \@@_print_format_auxvii:w ,
+% \@@_print_format_auxviii:w ,
+% \@@_print_format_auxix:w ,
+% \@@_print_format_auxx:w ,
+% \@@_print_format_auxxi:w ,
+% \@@_print_format_auxxii:w ,
+% \@@_print_format_auxxiii:w
% }
% \begin{macro}{\@@_print_format_box:Nn}
% \begin{macro}{\@@_print_format_after:N}
@@ -1442,28 +1455,100 @@
{
\tl_if_blank:nTF {#1}
{ \@@_print_format_auxv:w }
- { \@@_print_format_auxvi:w }
- #1#2 \q_mark #3#4 \q_stop
+ { \@@_print_format_auxvii:w }
+ #1 \q_nil #2 \q_mark #3 \q_nil #4 \q_stop
}
\cs_new_protected:Npn \@@_print_format_auxv:w
- #1 \q_nil #2 \q_nil #3 \q_nil #4 \q_mark
- #5 \q_nil #6 \q_nil #7 \q_nil #8 \q_stop
- { \@@_print_format_auxvii:w #4 \q_mark #8 \q_stop }
+ #1 \q_nil #2 \q_nil #3 \q_nil #4 \q_nil #5 \q_mark
+ #6 \q_stop
+ { \@@_print_format_auxvi:w #5 \q_mark #6 \q_stop }
+\cs_new_protected:Npn \@@_print_format_auxvi:w
+ #1 \q_mark
+ #2 \q_nil #3 \q_nil #4 \q_nil #5 \q_nil #6 \q_stop
+ { \@@_print_format_auxxiii:w #1 \q_mark #6 \q_stop }
% \end{macrocode}
% Sorting out the placement of the uncertainty requires both the model and
% real data widths, so we store the former to avoiding needing more boxes.
% It's then just a case of putting the carry-over white space in the right
% place.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_print_format_auxvi:w
+\cs_new_protected:Npn \@@_print_format_auxvii:w
+ #1 \q_mark #2 \q_stop
+ {
+ \bool_if:NTF \l_@@_align_uncertainty_bool
+ { \@@_print_format_auxviii:w }
+ { \@@_print_format_auxx:w }
+ #1 \q_mark #2 \q_stop
+ }
+% \end{macrocode}
+% For an aligned uncertainty, we need to work with the different parts.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_format_auxviii:w
+ #1 \q_nil #2 \q_nil #3 \q_mark
+ #4 \q_nil #5 \q_nil #6 \q_stop
+ {
+ \hbox_set:Nn \l_@@_tmp_box
+ { \siunitx_print_number:n { { } #1#2 { } } }
+ \hbox_set_to_wd:Nnn \l_@@_uncert_box
+ { \box_wd:N \l_@@_tmp_box }
+ {
+ \siunitx_print_number:n { { } #4 }
+ \@@_fil:
+ \tl_if_blank:nTF {#5}
+ { { } }
+ { \siunitx_print_number:n {#5} }
+ }
+ \@@_print_format_auxix:w
+ #3 \q_mark #6 \q_stop
+ }
+\cs_new_protected:Npn \@@_print_format_auxix:w
+ #1 \q_nil #2 \q_nil #3 \q_mark
+ #4 \q_nil #5 \q_nil #6 \q_stop
+ {
+ \@@_print_format_box:Nn \l_@@_tmp_box {#1#2}
+ \hbox_set_to_wd:Nnn \l_@@_tmp_box
+ {
+ \box_wd:N \l_@@_uncert_box
+ + \box_wd:N \l_@@_tmp_box
+ }
+ {
+ \box_use:N \l_@@_uncert_box
+ \tl_if_blank:nF {#2#5}
+ { \siunitx_print_number:n {#4#5} }
+ \@@_fil:
+ }
+ \dim_set:Nn \l_@@_tmp_dim { \box_wd:N \l_@@_tmp_box }
+ \@@_print_format_auxxii:w #3 \q_mark #6 \q_stop
+ }
+% \end{macrocode}
+% Non-aligned uncertainty: we have all of the information needed as
+% |#1|/|#3|, so the work is trivial.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_format_auxx:w
#1 \q_nil #2 \q_nil #3 \q_nil #4 \q_mark
#5 \q_nil #6 \q_nil #7 \q_nil #8 \q_stop
{
- \@@_print_format_box:Nn \l_@@_tmp_box { { } #1#2#3 }
+ \@@_print_format_auxxi:w
+ #1#2#3#4 \q_mark #5#6#7#8 \q_stop
+ }
+\cs_new_protected:Npn \@@_print_format_auxxi:w
+ #1 \q_nil #2 \q_mark
+ #3 \q_nil #4 \q_stop
+ {
+ \@@_print_format_box:Nn \l_@@_tmp_box { { } #1 }
\dim_set:Nn \l_@@_tmp_dim { \box_wd:N \l_@@_tmp_box }
- \@@_print_format_box:Nn \l_@@_tmp_box { { } #5#6#7 }
+ \@@_print_format_box:Nn \l_@@_tmp_box { { } #3 }
+ \@@_print_format_auxxii:w #2 \q_mark #4 \q_stop
+ }
+% \end{macrocode}
+% Back together to put the uncertainty part onto the main value, then
+% move on to the exponent.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_print_format_auxxii:w
+ #1 \q_mark #2 \q_stop
+ {
\@@_print_format_after:N \l_@@_align_uncertainty_bool
- \@@_print_format_auxvii:w #4 \q_mark #8 \q_stop
+ \@@_print_format_auxxiii:w #1 \q_mark #2 \q_stop
}
% \end{macrocode}
% Finally, we get to the exponent part: the multiplication symbol is
@@ -1472,7 +1557,7 @@
% be entirely empty, there needs to be a bit of work to ensure alignment
% is retained in all cases.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_print_format_auxvii:w
+\cs_new_protected:Npn \@@_print_format_auxxiii:w
#1 \q_nil #2 \q_mark #3 \q_nil #4 \q_stop
{
\tl_if_blank:nF {#2}
diff --git a/macros/latex/contrib/siunitx/siunitx-unit.dtx b/macros/latex/contrib/siunitx/siunitx-unit.dtx
index 713c4c5325..3b2defb6ea 100644
--- a/macros/latex/contrib/siunitx/siunitx-unit.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-unit.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% File: siunitx-unit.dtx Copyright (C) 2014-2022 Joseph Wright
+% File: siunitx-unit.dtx Copyright (C) 2014-2023 Joseph Wright
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -355,27 +355,31 @@
%
% \begin{function}
% {
-% \yocto ,
-% \zepto ,
-% \atto ,
-% \femto ,
-% \pico ,
-% \nano ,
-% \micro ,
-% \milli ,
-% \centi ,
-% \deci ,
-% \deca ,
-% \deka ,
-% \hecto ,
-% \kilo ,
-% \mega ,
-% \giga ,
-% \tera ,
-% \peta ,
-% \exa ,
-% \zetta ,
-% \yotta
+% \quecto ,
+% \ronto ,
+% \yocto ,
+% \zepto ,
+% \atto ,
+% \femto ,
+% \pico ,
+% \nano ,
+% \micro ,
+% \milli ,
+% \centi ,
+% \deci ,
+% \deca ,
+% \deka ,
+% \hecto ,
+% \kilo ,
+% \mega ,
+% \giga ,
+% \tera ,
+% \peta ,
+% \exa ,
+% \zetta ,
+% \yotta ,
+% \ronna ,
+% \quetta
% }
% Prefixes, all of which are integer powers of $10$: the powers are stored
% internally by the module and can be used for conversion from prefixes to
@@ -2640,43 +2644,12 @@
% \subsection{Non-Latin character support}
%
% \begin{macro}{\@@_non_latin:n}
-% \begin{macro}{\@@_non_latin:nnnn}
-% A small amount of code to make it convenient to include non-Latin
-% characters in units without having to directly include them in the
-% sources directly. We only make the first token active as some packages
-% (\foreign{e.g.}~\pkg{kotex}) do this. For Unicode engines, we
-% might run into some odd situations where active characters are in
-% use (\foreign{e.g.}~\pkg{luainputenc}), so take precautions here
-% too,
-% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_new:Npn \@@_non_latin:n #1
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { \char_value_catcode:n {#1} }
- }
- }
- {
- \cs_new:Npn \@@_non_latin:n #1
- {
- \exp_last_unbraced:Nf \@@_non_latin:nnnn
- { \char_to_utfviii_bytes:n {#1} }
- }
- \cs_new:Npn \@@_non_latin:nnnn #1#2#3#4
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#1} { 13 }
- \char_generate:nn {#2} { 12 }
- \tl_if_blank:nF {#3}
- { \char_generate:nn {#3} { 12 } }
- }
- }
+% A shortcut.
+% \begin{macrocode}
+\cs_new:Npn \@@_non_latin:n #1
+ { \codepoint_generate:nn {#1} { \char_value_catcode:n {#1} } }
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \subsection{Pre-defined unit components}
%
@@ -2718,59 +2691,67 @@
%
% \begin{macro}
% {
-% \yocto ,
-% \zepto ,
-% \atto ,
-% \femto ,
-% \pico ,
-% \nano ,
-% \micro ,
-% \milli ,
-% \centi ,
+% \quecto ,
+% \ronto ,
+% \yocto ,
+% \zepto ,
+% \atto ,
+% \femto ,
+% \pico ,
+% \nano ,
+% \micro ,
+% \milli ,
+% \centi ,
% \deci
% }
% The various \acro{SI} multiple prefixes are defined here: first the small
% ones.
% \begin{macrocode}
-\siunitx_declare_prefix:Nnn \yocto { -24 } { y }
-\siunitx_declare_prefix:Nnn \zepto { -21 } { z }
-\siunitx_declare_prefix:Nnn \atto { -18 } { a }
-\siunitx_declare_prefix:Nnn \femto { -15 } { f }
-\siunitx_declare_prefix:Nnn \pico { -12 } { p }
-\siunitx_declare_prefix:Nnn \nano { -9 } { n }
-\siunitx_declare_prefix:Nnx \micro { -6 } { \@@_non_latin:n { "03BC } }
-\siunitx_declare_prefix:Nnn \milli { -3 } { m }
-\siunitx_declare_prefix:Nnn \centi { -2 } { c }
-\siunitx_declare_prefix:Nnn \deci { -1 } { d }
+\siunitx_declare_prefix:Nnn \quecto { -30 } { q }
+\siunitx_declare_prefix:Nnn \ronto { -27 } { r }
+\siunitx_declare_prefix:Nnn \yocto { -24 } { y }
+\siunitx_declare_prefix:Nnn \zepto { -21 } { z }
+\siunitx_declare_prefix:Nnn \atto { -18 } { a }
+\siunitx_declare_prefix:Nnn \femto { -15 } { f }
+\siunitx_declare_prefix:Nnn \pico { -12 } { p }
+\siunitx_declare_prefix:Nnn \nano { -9 } { n }
+\siunitx_declare_prefix:Nnx \micro { -6 } { \@@_non_latin:n { "03BC } }
+\siunitx_declare_prefix:Nnn \milli { -3 } { m }
+\siunitx_declare_prefix:Nnn \centi { -2 } { c }
+\siunitx_declare_prefix:Nnn \deci { -1 } { d }
% \end{macrocode}
% \end{macro}
% \begin{macro}
% {
-% \deca ,
-% \deka ,
-% \hecto ,
-% \kilo ,
-% \mega ,
-% \giga ,
-% \tera ,
-% \peta ,
-% \exa ,
-% \zetta ,
-% \yotta
+% \deca ,
+% \deka ,
+% \hecto ,
+% \kilo ,
+% \mega ,
+% \giga ,
+% \tera ,
+% \peta ,
+% \exa ,
+% \zetta ,
+% \yotta ,
+% \ronna ,
+% \quetta
% }
% Now the large ones.
% \begin{macrocode}
-\siunitx_declare_prefix:Nnn \deca { 1 } { da }
-\siunitx_declare_prefix:Nnn \deka { 1 } { da }
-\siunitx_declare_prefix:Nnn \hecto { 2 } { h }
-\siunitx_declare_prefix:Nnn \kilo { 3 } { k }
-\siunitx_declare_prefix:Nnn \mega { 6 } { M }
-\siunitx_declare_prefix:Nnn \giga { 9 } { G }
-\siunitx_declare_prefix:Nnn \tera { 12 } { T }
-\siunitx_declare_prefix:Nnn \peta { 15 } { P }
-\siunitx_declare_prefix:Nnn \exa { 18 } { E }
-\siunitx_declare_prefix:Nnn \zetta { 21 } { Z }
-\siunitx_declare_prefix:Nnn \yotta { 24 } { Y }
+\siunitx_declare_prefix:Nnn \deca { 1 } { da }
+\siunitx_declare_prefix:Nnn \deka { 1 } { da }
+\siunitx_declare_prefix:Nnn \hecto { 2 } { h }
+\siunitx_declare_prefix:Nnn \kilo { 3 } { k }
+\siunitx_declare_prefix:Nnn \mega { 6 } { M }
+\siunitx_declare_prefix:Nnn \giga { 9 } { G }
+\siunitx_declare_prefix:Nnn \tera { 12 } { T }
+\siunitx_declare_prefix:Nnn \peta { 15 } { P }
+\siunitx_declare_prefix:Nnn \exa { 18 } { E }
+\siunitx_declare_prefix:Nnn \zetta { 21 } { Z }
+\siunitx_declare_prefix:Nnn \yotta { 24 } { Y }
+\siunitx_declare_prefix:Nnn \ronna { 27 } { R }
+\siunitx_declare_prefix:Nnn \quetta { 30 } { Q }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 65004d7eb2..0ca26ecc41 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% File: siunitx.dtx Copyright (C) 2008-2019,2021,2022 Joseph Wright
+% File: siunitx.dtx Copyright (C) 2008-2019,2021-2023 Joseph Wright
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -106,7 +106,7 @@
% We use \cs{ExplFileDate} as \cs{@ifpackagelater} doesn't work for pre-loaded
% \pkg{expl3} in the absence of the package.
% \begin{macrocode}
-\@ifl@t@r\ExplLoaderFileDate{2020-01-09}
+\@ifl@t@r\ExplLoaderFileDate{2022-11-09}
{}
{%
\PackageError{siunitx}{Support package expl3 too old}
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2022-12-05} {3.1.11}
+\ProvidesExplPackage {siunitx} {2023-01-03} {3.2.0}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 466df8a07c..6b7ff0d6ee 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx.tex b/macros/latex/contrib/siunitx/siunitx.tex
index a92d0ee0db..63e7f86861 100644
--- a/macros/latex/contrib/siunitx/siunitx.tex
+++ b/macros/latex/contrib/siunitx/siunitx.tex
@@ -635,26 +635,30 @@ The spelling \enquote{\cs{deka}} is provided for US users as an alternative to
Prefix & Command & Symbol & \multicolumn{1}{l}{Power} &
Prefix & Command & Symbol & \multicolumn{1}{l@{}}{Power} \\
\midrule
- \DescribePrefix{yocto} & -24 &
- \DescribePrefix{deca} & 1 \\
- \DescribePrefix{zepto} & -21 &
- \DescribePrefix{hecto} & 2 \\
- \DescribePrefix{atto} & -18 &
- \DescribePrefix{kilo} & 3 \\
- \DescribePrefix{femto} & -15 &
- \DescribePrefix{mega} & 6 \\
- \DescribePrefix{pico} & -12 &
- \DescribePrefix{giga} & 9 \\
- \DescribePrefix{nano} & -9 &
- \DescribePrefix{tera} & 12 \\
- \DescribePrefix{micro} & -6 &
- \DescribePrefix{peta} & 15 \\
- \DescribePrefix{milli} & -3 &
- \DescribePrefix{exa} & 18 \\
- \DescribePrefix{centi} & -2 &
- \DescribePrefix{zetta} & 21 \\
- \DescribePrefix{deci} & -1 &
- \DescribePrefix{yotta} & 24 \\
+ \DescribePrefix{quecto} & -30 &
+ \DescribePrefix{deca} & 1 \\
+ \DescribePrefix{ronto} & -27 &
+ \DescribePrefix{hecto} & 2 \\
+ \DescribePrefix{yocto} & -24 &
+ \DescribePrefix{kilo} & 3 \\
+ \DescribePrefix{atto} & -18 &
+ \DescribePrefix{mega} & 6 \\
+ \DescribePrefix{zepto} & -21 &
+ \DescribePrefix{giga} & 9 \\
+ \DescribePrefix{femto} & -15 &
+ \DescribePrefix{tera} & 12 \\
+ \DescribePrefix{pico} & -12 &
+ \DescribePrefix{peta} & 15 \\
+ \DescribePrefix{nano} & -9 &
+ \DescribePrefix{exa} & 18 \\
+ \DescribePrefix{micro} & -6 &
+ \DescribePrefix{zetta} & 21 \\
+ \DescribePrefix{milli} & -3 &
+ \DescribePrefix{yotta} & 24 \\
+ \DescribePrefix{centi} & -2 &
+ \DescribePrefix{ronna} & 27 \\
+ \DescribePrefix{deci} & -1 &
+ \DescribePrefix{quetta} & 30 \\
\bottomrule
\end{tabular}
\end{table}
@@ -860,6 +864,7 @@ occur (for example with the standard \cs{pm} symbol).
\DescribeUnit[picofarad]{pF} \\
\DescribeUnit[nanofarad]{nF} \\
\DescribeUnit[microfarad]{uF} \\
+ \DescribeUnit[millifarad]{mF} \\
\midrule
@@ -1441,19 +1446,20 @@ way; the options are summarised in Table~\ref{tab:opt:num:post}.
Type &
\multicolumn{1}{l@{}}{Default} \\
\midrule
- drop-exponent & Switch & false \\
- drop-uncertainty & Switch & false \\
- drop-zero-decimal & Switch & false \\
- exponent-mode & Switch & input \\
- fixed-exponent & Integer & 0 \\
- minimum-integer-digits & Integer & 0 \\
- minimum-decimal-digits & Integer & 0 \\
- round-half & Choice & up \\
- round-minimum & Literal & 0 \\
- round-mode & Choice & none \\
- round-pad & Switch & true \\
- round-precision & Integer & 2 \\
- round-zero-positive & Switch & true \\
+ drop-exponent & Switch & false \\
+ drop-uncertainty & Switch & false \\
+ drop-zero-decimal & Switch & false \\
+ exponent-mode & Switch & input \\
+ exponent-thresholds & Literal & -3:3 \\
+ fixed-exponent & Integer & 0 \\
+ minimum-integer-digits & Integer & 0 \\
+ minimum-decimal-digits & Integer & 0 \\
+ round-half & Choice & up \\
+ round-minimum & Literal & 0 \\
+ round-mode & Choice & none \\
+ round-pad & Switch & true \\
+ round-precision & Integer & 2 \\
+ round-zero-positive & Switch & true \\
\bottomrule
\end{tabular}
\end{table}
@@ -1462,9 +1468,9 @@ way; the options are summarised in Table~\ref{tab:opt:num:post}.
\DescribeOption{fixed-exponent}
Numbers can be converted to scientific notation by the package. This is
controlled by the \opt{exponent-mode} option, which takes choices \opt{input},
-\opt{fixed}, \opt{engineering} and \opt{scientific}. The \opt{fixed} setting
-will use the exponent value by the \opt{fixed-exponent} option. When
-\opt{engineering} is set, the exponent is always a power of three.
+\opt{fixed}, \opt{engineering}, \opt{scientific} and \opt{threshold}. The
+\opt{fixed} setting will use the exponent value by the \opt{fixed-exponent}
+option. When \opt{engineering} is set, the exponent is always a power of three.
\begin{LaTeXdemo}
\num{0.001} \\
\num{0.0100} \\
@@ -1491,6 +1497,40 @@ scientific notation from the input
\num{1.23e4} \\
\num[exponent-mode = fixed, fixed-exponent = 0]{1.23e4}
\end{LaTeXdemo}
+\DescribeOption{exponent-thresholds}
+When the \opt{exponent-mode} is set to \meta{threshold}, values outside of a
+threshold range for the exponent are always printed in scientific form. Within
+the threshold, they are printed as-given in the input: typically this would be
+without an exponent. The threshold range itself is controlled by
+\opt{exponent-thresholds}, which is given as
+\texttt{\meta{min}:\meta{max}} (Table~\ref{tab:threshold}).
+\begin{LaTeXdemo}[code and float]
+ \begin{table}
+ \caption{Thresholds for exponents.%
+ \label{tab:threshold}}
+ \begin{tabular}
+ {
+ @{}
+ S
+ S[exponent-mode = threshold]
+ S[exponent-mode = threshold, exponent-thresholds = -2:2]
+ @{}
+ }
+ \toprule
+ {Input} & {Threshold $-3:3$} & {Threshold $-2:2$} \\
+ \midrule
+ 0.001 & 0.001 & 0.001 \\
+ 0.012 & 0.012 & 0.012 \\
+ 0.123 & 0.123 & 0.123 \\
+ 1 & 1 & 1 \\
+ 12 & 12 & 12 \\
+ 123 & 123 & 123 \\
+ 1234 & 1234 & 1234 \\
+ \bottomrule
+ \end{tabular}
+ \end{table}
+\end{LaTeXdemo}
+
Exponent mode applies \emph{after} rounding, such that the number of decimal
places for rounding is those which appear in the output.
@@ -1653,7 +1693,9 @@ conveys. The options are summarised in Table~\ref{tab:opt:num:out}.
output-decimal-marker & Literal & . \\
output-exponent-marker & Literal & \meta{none} \\
output-open-uncertainty & Literal & ( \\ ^^A )
+ print-exponent-implicit-plus & Switch & false \\
print-implicit-plus & Switch & false \\
+ print-mantissa-implicit-plus & Switch & false \\
print-unity-mantissa & Switch & true \\
print-zero-exponent & Switch & false \\
print-zero-integer & Switch & true \\
@@ -1846,9 +1888,12 @@ compresses spacing where possible.
\end{LaTeXdemo}
\DescribeOption{print-implicit-plus}
+\DescribeOption{print-mantissa-implicit-plus}
+\DescribeOption{print-exponent-implicit-plus}
It may be useful to force all numbers to have a sign. This behaviour is
controlled by the \opt{print-implicit-plus} option: this is used if given and
-if no sign was present in the input.
+if no sign was present in the input. It is possible to set this behavior for
+the exponent and mantissa independently.
\begin{LaTeXdemo}
\num{345} \\
\num[print-implicit-plus]{345}
diff --git a/macros/latex/contrib/tocdata/README.txt b/macros/latex/contrib/tocdata/README.txt
index 9207bb067b..d06abf087d 100644
--- a/macros/latex/contrib/tocdata/README.txt
+++ b/macros/latex/contrib/tocdata/README.txt
@@ -1,8 +1,8 @@
The tocdata package.
Adds names to table of contents / list of figures entries.
-v2.02 — 2019/03/21
-Copyright 2016–2019 Brian Dunn — www.BDTechConcepts.com
+v2.05 — 2023/01/03
+Copyright 2016–2023 Brian Dunn — www.BDTechConcepts.com
LaTeX Project Public License, version 1.3
diff --git a/macros/latex/contrib/tocdata/tocdata.dtx b/macros/latex/contrib/tocdata/tocdata.dtx
index ebdbf21c51..ed7ef2b84f 100644
--- a/macros/latex/contrib/tocdata/tocdata.dtx
+++ b/macros/latex/contrib/tocdata/tocdata.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 2016--2020 Brian Dunn
+% Copyright 2016--2023 Brian Dunn
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -15,7 +15,7 @@
% \iffalse
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{tocdata}
-%<package> [2020/07/15 v2.04 Adds author/artist to TOC entries.]
+%<package> [2023/01/03 v2.05 Adds author/artist to TOC entries.]
%
%<*driver>
\documentclass{ltxdoc}
@@ -85,7 +85,7 @@ of the \acro{TOC}\Slash\acro{LOF}.
\definecolor{codecolor}{rgb}{0,.4,.2}
\definecolor{overviewcolor}{rgb}{0,.2,.4}
-\usepackage{dtxdescribe}[2019/07/16]
+\usepackage{dtxdescribe}[2023/01/03]
\usepackage{graphicx}
\graphicspath{{images/}}
@@ -142,23 +142,46 @@ of the \acro{TOC}\Slash\acro{LOF}.
\pagestyle{pageheadfoot}
+\usepackage{needspace}
-\usepackage[pdftex,bookmarks=true,hidelinks,%
-colorlinks,linkcolor=mylinkcolor,urlcolor=myurlcolor,%
-pageanchor=true,hyperindex=false,
-]{hyperref}
+\AtBeginDocument{
\hypersetup{%
pdfinfo={%
Title={LaTeX \mypackagename{} package},%
Author={Brian Dunn},%
Subject={LaTeX tocdata package},%
-Keywords={LaTeX, tocdata, contents}%
+Keywords={LaTeX, tocdata, contents},%
+colorlinks,%
+linkcolor=mylinkcolor,%
+urlcolor=myurlcolor,%
+pageanchor=true,
}}
+\pdfstringdefDisableCommands{
+\def\quad{ }
+\def\\{ }
+\def\pkg#1{#1}
+\def\cs#1{\textbackslash#1}
+\def\env#1{#1}
+\def\,{ }
+\def\prog#1{#1}
+\def\LuaLaTeX{LuaLaTeX}
+\def\XeLaTeX{XeLaTeX}
+\def\TeX{TeX}
+\def\LaTeX{LaTeX}
+\def\Dash{ --- }
+\def\dash{ -- }
+\def\element#1{#1}
+\def\attribute#1{#1}
+}
+
+}% AtBeginDocument
-\usepackage{cleveref}
+\AddToHook{begindocument/before}{% Before .aux file is loaded.
+ \usepackage{cleveref}% If needed.
+}
% from dtxdescribe:
@@ -186,23 +209,6 @@ Keywords={LaTeX, tocdata, contents}%
%</driver>
% \fi
%
-% \CheckSum{521}
-%
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
% \changes{v0.10}{2016/05/05}{\ 2016/05/05 Initial ver.}
% \changes{v0.11}{2016/07/11}{\ 2016/07/11}
@@ -218,6 +224,8 @@ Keywords={LaTeX, tocdata, contents}%
% \changes{v2.02}{2019/03/21}{\ 2019/03/21}
% \changes{v2.03}{2019/07/06}{\ 2019/07/06}
% \changes{v2.04}{2020/07/15}{\ 2020/07/15}
+% \changes{v2.05}{2023/01/03}{Docs updated for \pkg{dtxdescribe}.}
+% \changes{v2.05}{2023/01/03}{\ 2023/01/03}
@@ -241,7 +249,7 @@ Keywords={LaTeX, tocdata, contents}%
%
% \bigskip
%
-% {\small\textcopyright{} 2016--2020} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
+% {\small\textcopyright{} 2016--2023} Brian Dunn\\ \small \texttt{bd@BDTechConcepts.com}
%
% \vspace{.5in}
%
@@ -274,7 +282,10 @@ Keywords={LaTeX, tocdata, contents}%
% ^^A \clearpage
% \listoffigures
% ^^A \listoftables
+
+% \needspace{6\baselineskip}
% \listofillustrations
+
% \listofaquotes
%
%
@@ -616,7 +627,7 @@ Keywords={LaTeX, tocdata, contents}%
%
% \clearpage
%
-% \sectionauthor{Implementation}{Brian}{Dunn}
+% \sectionauthor{Code}{Brian}{Dunn}
%
% \begin{figure}
% \centering
@@ -1639,9 +1650,8 @@ Keywords={LaTeX, tocdata, contents}%
% \marg{1: "artist" or "author"}
% *
% \oarg{3: \LOF\ entry} \marg{4: title}
-% \oarg{5: supplemental text}
-% \oarg{6: prefix} \marg{7: first} \\
-% \marg{8: last} \oarg{9: suffix}
+% \oarg{5: supplemental text} \\
+% \oarg{6: prefix} \marg{7: first} \marg{8: last} \oarg{9: suffix}
%
% Factored from \cs{captionartist} and \cs{captionauthor}, below.
%
diff --git a/macros/latex/contrib/tocdata/tocdata.pdf b/macros/latex/contrib/tocdata/tocdata.pdf
index d43b057eed..e297bebb13 100644
--- a/macros/latex/contrib/tocdata/tocdata.pdf
+++ b/macros/latex/contrib/tocdata/tocdata.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/CHANGELOG.md b/macros/latex/contrib/zref-clever/CHANGELOG.md
index a11671dfed..3215143cea 100644
--- a/macros/latex/contrib/zref-clever/CHANGELOG.md
+++ b/macros/latex/contrib/zref-clever/CHANGELOG.md
@@ -1,6 +1,13 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.3.2...HEAD)
+## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.3.3...HEAD)
+
+## [v0.3.3](https://github.com/gusbrs/zref-clever/compare/v0.3.2...v0.3.3) (2023-01-03)
+
+### Added
+- New `reftype` option, to allow for local manual override of `countertype`
+ settings.
+- Included some new How-tos to the User manual.
## [v0.3.2](https://github.com/gusbrs/zref-clever/compare/v0.3.1...v0.3.2) (2022-12-27)
diff --git a/macros/latex/contrib/zref-clever/README.md b/macros/latex/contrib/zref-clever/README.md
index b260c87ec0..0d7a610d5b 100644
--- a/macros/latex/contrib/zref-clever/README.md
+++ b/macros/latex/contrib/zref-clever/README.md
@@ -5,7 +5,7 @@
Author: Gustavo Barros
Maintainer: Gustavo Barros
-`zref-clever` provides an user interface for making LaTeX cross-references
+`zref-clever` provides a user interface for making LaTeX cross-references
which automates some of their typical features, thus easing their input in the
document and improving the consistency of typeset results. A reference made
with `\zcref` includes a "name" according to its "type" and lists of multiple
diff --git a/macros/latex/contrib/zref-clever/zref-clever-code.pdf b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
index 8b4cad1280..b9feccfdf8 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-code.pdf
+++ b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/zref-clever-code.tex b/macros/latex/contrib/zref-clever/zref-clever-code.tex
index e1bc9d0289..ba3a5eaaa2 100644
--- a/macros/latex/contrib/zref-clever/zref-clever-code.tex
+++ b/macros/latex/contrib/zref-clever/zref-clever-code.tex
@@ -4,7 +4,7 @@
%
% This file is part of the LaTeX package "zref-clever".
%
-% Copyright (C) 2021-2022 Gustavo Barros
+% Copyright (C) 2021-2023 Gustavo Barros
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/zref-clever/zref-clever.dtx b/macros/latex/contrib/zref-clever/zref-clever.dtx
index 8604bd5c39..82e6fcbf0f 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.dtx
+++ b/macros/latex/contrib/zref-clever/zref-clever.dtx
@@ -4,7 +4,7 @@
%
% This file is part of the LaTeX package "zref-clever".
%
-% Copyright (C) 2021-2022 Gustavo Barros
+% Copyright (C) 2021-2023 Gustavo Barros
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -165,7 +165,7 @@
%
% Identify the package.
% \begin{macrocode}
-\ProvidesExplPackage {zref-clever} {2022-12-27} {0.3.2}
+\ProvidesExplPackage {zref-clever} {2023-01-03} {0.3.3}
{Clever LaTeX cross-references based on zref}
% \end{macrocode}
%
@@ -252,13 +252,17 @@
% \begin{macrocode}
\zref@newprop { zc@type }
{
- \exp_args:NNe \prop_if_in:NnTF \l_@@_counter_type_prop
- \l_@@_current_counter_tl
+ \tl_if_empty:NTF \l_@@_reftype_override_tl
{
- \exp_args:NNe \prop_item:Nn \l_@@_counter_type_prop
+ \exp_args:NNe \prop_if_in:NnTF \l_@@_counter_type_prop
+ \l_@@_current_counter_tl
+ {
+ \exp_args:NNe \prop_item:Nn \l_@@_counter_type_prop
+ { \l_@@_current_counter_tl }
+ }
{ \l_@@_current_counter_tl }
}
- { \l_@@_current_counter_tl }
+ { \l_@@_reftype_override_tl }
}
\zref@addprop \ZREF@mainlist { zc@type }
% \end{macrocode}
@@ -3732,6 +3736,22 @@
% \end{macrocode}
%
%
+% \subsubsection*{\opt{reftype} option}
+%
+% This allows one to manually specify the reference type. It is the
+% equivalent of \pkg{cleveref}'s optional argument to \cs{label}.
+%
+% \begin{macrocode}
+\tl_new:N \l_@@_reftype_override_tl
+\keys_define:nn { zref-clever/label }
+ {
+ reftype .tl_set:N = \l_@@_reftype_override_tl ,
+ reftype .default:n = {} ,
+ reftype .initial:n = {} ,
+ }
+% \end{macrocode}
+%
+%
% \subsubsection*{\opt{countertype} option}
%
% \cs{l_@@_counter_type_prop} is used by \texttt{zc@type} property, and stores
@@ -3889,7 +3909,7 @@
\keys_define:nn { zref-clever/label }
{
currentcounter .tl_set:N = \l_@@_current_counter_tl ,
- currentcounter .value_required:n = true ,
+ currentcounter .default:n = \@currentcounter ,
currentcounter .initial:n = \@currentcounter ,
}
% \end{macrocode}
@@ -8570,6 +8590,12 @@
% if they were not previously set. In other words, for them the precedence
% order is inverted, the first value takes precedence.
%
+% \textbf{\pkg{zref-vario}:} If you are interested in the localization of
+% \pkg{zref-clever} to your language, and willing to contribute to it, you may
+% also want to consider doing the same for the companion package
+% \pkg{zref-vario}. It is actually a much simpler task than localizing
+% \pkg{zref-clever}.
+%
%
% \subsection{English}
%
@@ -9272,10 +9298,11 @@ type = solution ,
% \subsection{French}
%
% French language file has been initially provided by the author, and has been
-% improved thanks to Denis Bitouzé and François Lagarde (at \githubissue{1})
-% and participants of the Groupe francophone des Utilisateurs de \TeX{}
-% (GUTenberg) (at \url{https://groups.google.com/g/gut_fr/c/rNLm6weGcyg}) and
-% the \texttt{fr.comp.text.tex} (at
+% improved thanks to \contributor{Denis Bitouzé} and \contributor{François
+% Lagarde} (at \githubissue{1}) and participants of the Groupe francophone des
+% Utilisateurs de \TeX{} (GUTenberg) (at
+% \url{https://groups.google.com/g/gut_fr/c/rNLm6weGcyg}) and the
+% \texttt{fr.comp.text.tex} (at
% \url{https://groups.google.com/g/fr.comp.text.tex/c/Fa11Tf6MFFs}) mailing
% lists.
%
@@ -10254,8 +10281,10 @@ type = solution ,
%
% \subsection{Italian}
%
-% Italian language file initially contributed by Matteo Ferrigato
-% (\githubissue{11}).
+% Italian language file initially contributed by \contributor{Matteo
+% Ferrigato} (\githubissue{11}), with the help of participants of the Gruppo
+% Utilizzatori Italiani di \TeX{} (GuIT) forum (at
+% \url{https://www.guitex.org/home/it/forum/5-tex-e-latex/121856-closed-zref-clever-e-localizzazione-in-italiano}).
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex/contrib/zref-clever/zref-clever.ins b/macros/latex/contrib/zref-clever/zref-clever.ins
index f05b026520..d4f77dcf36 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.ins
+++ b/macros/latex/contrib/zref-clever/zref-clever.ins
@@ -4,7 +4,7 @@
%
% This file is part of the LaTeX package "zref-clever".
%
-% Copyright (C) 2021-2022 Gustavo Barros
+% Copyright (C) 2021-2023 Gustavo Barros
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,7 +50,7 @@
This file was generated from file(s) of the LaTeX package "zref-clever".
-Copyright (C) 2021-2022 Gustavo Barros
+Copyright (C) 2021-2023 Gustavo Barros
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/zref-clever/zref-clever.pdf b/macros/latex/contrib/zref-clever/zref-clever.pdf
index 3f975f70c9..81b2d350ea 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.pdf
+++ b/macros/latex/contrib/zref-clever/zref-clever.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-clever/zref-clever.tex b/macros/latex/contrib/zref-clever/zref-clever.tex
index ac47747529..78d6cc7f03 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.tex
+++ b/macros/latex/contrib/zref-clever/zref-clever.tex
@@ -4,7 +4,7 @@
%
% This file is part of the LaTeX package "zref-clever".
%
-% Copyright (C) 2021-2022 Gustavo Barros
+% Copyright (C) 2021-2023 Gustavo Barros
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -103,14 +103,18 @@
RenewDocumentCommand,
NewCommandCopy,
ltx@gobble,
+ @currentcounter,
zref@label,
zref@wrapper@babel,
zref@ifpropundefined,
zref@setcurrent,
+ zref@newprop,
+ zref@addprop,
beamer@old@zref@label,
alt,
beamer@nameslide,
beamer@dummynameslide,
+ ordinal,
}
}
\lstdefinestyle{zrefclever}{
@@ -207,7 +211,7 @@
\end{center}
\begin{quotation}
- \pkg{zref-clever} provides an user interface for making \LaTeX{}
+ \pkg{zref-clever} provides a user interface for making \LaTeX{}
cross-references which automates some of their typical features, thus easing
their input in the document and improving the consistency of typeset
results. A reference made with \cs{zcref} includes a ``name'' according to
@@ -814,9 +818,10 @@ optional argument of \cs{zcheck}, and can receive both checks and
\zcref{sec:reference-format}).
\DescribeOption{countertype} %
+\DescribeOption{reftype} %
The \opt{countertype} option allows to specify the ``reference type'' of each
counter, which is stored as a label property when the label is set. This
-``reference type'' is what determines how a reference to this label will
+reference type is what determines how a reference to this label will
eventually be typeset when it is referred to (see
\zcref{sec:reference-types}). A value like \texttt{countertype = \{foo =
bar\}} sets the \texttt{foo} counter to use the reference type \texttt{bar}.
@@ -826,8 +831,14 @@ the same name as the counter, unless otherwise specified. Also, the default
value of the option already sets appropriate types for basic \LaTeX{}
counters, including those from the standard classes. Setting a counter type
to an empty value removes any (explicit) type association for that counter, in
-practice, this means it then uses a type equal to its name. Since this option
-only affects how labels are set, it is not available in \cs{zcref}.
+practice, this means it then uses a type equal to its name. The \opt{reftype}
+option allows one to specify the reference type manually, regardless of the
+current counter. This can be used to locally override any \opt{countertype}
+settings of the package and, for those acquainted with it, is the equivalent
+of \pkg{cleveref}'s optional argument to \cs{label}. Normally, you'd want to
+use this option within a group, but if you must do otherwise, the default
+value can be restored by setting the option without a value. Since these
+options only affect how labels are set, they are not available in \cs{zcref}.
\DescribeOption{\raisebox{-.2em}{\dbend}\ counterresetters} %
\DescribeOption{counterresetby} %
@@ -884,11 +895,12 @@ option, but a way to tell \pkg{zref-clever} a piece of information it has no
means to retrieve automatically. The setting must correspond to the actual
``current counter'', meaning here ``the counter underlying
\cs{@currentlabel}'' in a given situation. Also, when using the
-\opt{currentcounter} option, make sure the setting is duly grouped because, if
-set, it has precedence over \cs{@currentcounter} and, contrary to the later,
-the former is not reset the next time \cs{refstepcounter} runs. Its default
-value is, quite naturally, \cs{@currentcounter}. Since this option only
-affects how labels are set, it is not available in \cs{zcref}.
+\opt{currentcounter} option, take care that the setting is duly grouped
+because, if set, it has precedence over \cs{@currentcounter} and, contrary to
+the later, the former is not reset the next time \cs{refstepcounter} runs.
+Its default value is, quite naturally, \cs{@currentcounter}. The default
+value can be reset by calling the option with no value. Since this option
+only affects how labels are set, it is not available in \cs{zcref}.
\DescribeOption{nocompat} %
Some packages, document classes, or LaTeX features may require specific
@@ -997,7 +1009,7 @@ is to provide a rich set of ``handles'' for fine tuning the reference format
but, at the same time, do not \emph{require} detailed setup by the users,
unless they really want it.
-With that in mind, we have settled with an user interface for reference
+With that in mind, we have settled with a user interface for reference
formatting which allows settings to be done in different scopes, with more or
less overarching effects, and some precedence rules to regulate the relation
of settings given in each of these scopes. There are four scopes in which
@@ -1827,8 +1839,7 @@ package in the setup, the same procedure can be used with \cls{memoir}'s
\subsection{\pkg{amsmath}}
-\zctask{Make references to \pkg{amsmath} display math environments with
- \cs{zcref}.}
+\zctask{Make references to \pkg{amsmath} display math environments.}
Given how \pkg{amsmath}'s display math environments work, they need to handle
\cs{label} specially, and this support is quite hard-wired into the
@@ -1867,10 +1878,48 @@ description of the \opt{amsmath} compatibility module at
\end{zchowto}
+\subsection{Overriding the reference type}
+
+\zctask{Make references to a system of equations, which should be referred to
+ in the plural.}
+
+Though, usually, setting the \opt{countertype} option may provide a more
+general and convenient way to set the reference type of a given counter,
+sometimes we just need to do it for a particular label or set of labels. The
+\opt{reftype} option allows us to do so and set the reference type directly,
+regardless of what the current counter is.
+
+\begin{zchowto}[caption={Overriding the reference type}]
+\documentclass{article}
+\usepackage{amsmath}
+\usepackage{zref-clever}
+\usepackage{hyperref}
+\zcRefTypeSetup{pluralequation}{
+ Name-sg = Equations ,
+ name-sg = equations ,
+ Name-pl = Equations ,
+ name-pl = equations ,
+}
+\begin{document}
+\section{Section 1}
+\begin{equation}
+ \zcsetup{reftype=pluralequation}
+ \zlabel{eq:1}
+ \begin{aligned}
+ A+B&=B+A\\
+ C&=D+E\\
+ E&=F
+ \end{aligned}
+\end{equation}
+\zcref{eq:1}
+\end{document}
+\end{zchowto}
+
+
\subsection{\pkg{listings}}
\zctask{Make references to a \env{lstlisting} environment from the
- \pkg{listings} package with \cs{zcref}.}
+ \pkg{listings} package.}
Being \env{lstlisting} a verbatim environment, setting labels inside it
requires special treatment. \pkg{zref-clever}'s \opt{listings} compatibility
@@ -1904,7 +1953,7 @@ description of the \opt{listings} compatibility module at
\subsection{\pkg{enumitem}}
\zctask{Setup a custom enumerate environment created with \pkg{enumitem} to be
- referred to with \cs{zcref}.}
+ referred to.}
Since the \texttt{enumerate} environment's counters are reset at each nesting
level, but not with the standard machinery, we have to inform
@@ -1956,8 +2005,7 @@ implicit counter-type association, and have to set it explicitly with the
\subsection{\pkg{zref-xr}}
-\zctask{Make references to labels set in an external document with
- \cs{zcref}.}
+\zctask{Make references to labels set in an external document.}
\pkg{zref} itself offers this functionality with module \pkg{zref-xr}, and
\pkg{zref-clever} is prepared to make use of it. Just a couple of details
@@ -2002,6 +2050,42 @@ be the following.
\end{document}
\end{zchowto}
+
+\subsection{Ordinal references}
+
+\zctask{Typesetting the references as ordinal numbers.}
+
+This example is intended as an illustration of the flexibility \pkg{zref}'s
+extensible referencing system grants us.\footnote{Though clearly simplified,
+ the example is less than academic.
+ See \url{https://tex.stackexchange.com/a/670088} for an application to add a
+ reference suffix needed in Turkish.} Getting references as ordinal numbers,
+something that would be normally a tricky task, can be handled with a simple
+custom \pkg{zref} property, which we then use to set \pkg{zref-clever}'s
+\opt{ref} option.
+
+\begin{zchowto}[caption={Ordinal references}]
+\documentclass{article}
+\usepackage{zref-clever}
+\usepackage{fmtcount}
+\makeatletter
+\zref@newprop{ordref}{\ordinal{\@currentcounter}}
+\zref@addprop{main}{ordref}
+\makeatother
+\zcsetup{ref=ordref}
+\begin{document}
+\section{Section 1}
+\zlabel{sec:section-1}
+\begin{figure}
+A figure.
+\caption{Figure 1}
+\zlabel{fig:figure-1}
+\end{figure}
+\zcref{sec:section-1,fig:figure-1}
+\end{document}
+\end{zchowto}
+
+
\section{Limitations}
\zlabel{sec:limitations}
@@ -2354,7 +2438,7 @@ appear to break \pkg{cleveref}.\footnote{See, for example,
Adding proper support for this is the business of \cls{beamer}, \pkg{zref},
and/or \pkg{hyperref}. Likely the former's really. But, taking advantage of
-\pkg{zref}'s flexibility, as an user, you can have a work-around in the
+\pkg{zref}'s flexibility, as a user, you can have a work-around in the
meantime.
\begin{zcworkaround}[caption={\cls{beamer}}]
@@ -2437,7 +2521,7 @@ will remain one of the main assets of \pkg{zref-clever} as it matures.
The name of the package makes no secret that a major inspiration for the kind
of ``feel'' I strove to achieve has been Toby Cubitt's \pkg{cleveref}.
-Indeed, I have been an user of \pkg{cleveref} for several years, and a happy
+Indeed, I have been a user of \pkg{cleveref} for several years, and a happy
one at that. But the role \pkg{cleveref} played in the development of
\pkg{zref-clever} extends beyond the visible influence in the design of user
facing functionality. Some technical solutions and, specially, the handling
@@ -2464,6 +2548,7 @@ were generously provided by (in chronological order):
% 2021-10-26: https://github.com/latex3/latex2e/issues/687
% 2022-01-12: https://chat.stackexchange.com/transcript/message/60129233#60129233
% 2022-04-09: https://github.com/latex3/hyperref/issues/229#issuecomment-1093870142
+ % 2023-01-02: https://tex.stackexchange.com/q/670399 (comments)
Phelype Oleinik,
% 2021-08-20: https://tex.stackexchange.com/q/611370 (comments)
% 2021-09-09: https://tex.stackexchange.com/a/614704
@@ -2485,6 +2570,8 @@ were generously provided by (in chronological order):
% and following discussion.
% 2022-12-26: https://chat.stackexchange.com/transcript/message/62644791#62644791
% and following discussion.
+ % 2023-01-02: https://chat.stackexchange.com/transcript/message/62684358#62684358
+ % and following discussion.
Frank Mittelbach,
% 2021-10-14: https://github.com/latex3/latex2e/issues/687
\username{samcarter},
@@ -2502,8 +2589,11 @@ were generously provided by (in chronological order):
% 2021-11-26: https://github.com/latex3/l3build/issues/215
Jürgen Spitzmüller,
% 2021-11-28: https://github.com/gusbrs/zref-clever/issues/2
- and \username{niluxv}.
+ \username{niluxv},
% 2022-01-05: https://github.com/gusbrs/zref-clever/issues/4
+ and Joseph Wright.
+ % 2023-01-02: https://chat.stackexchange.com/transcript/message/62684358#62684358
+ % and following discussion.
The package's language files have been provided or improved thanks to:
Denis Bitouzé (French),
diff --git a/macros/latex/contrib/zref-vario/CHANGELOG.md b/macros/latex/contrib/zref-vario/CHANGELOG.md
index 416ca0a6ec..2f0b419280 100644
--- a/macros/latex/contrib/zref-vario/CHANGELOG.md
+++ b/macros/latex/contrib/zref-vario/CHANGELOG.md
@@ -1,6 +1,12 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/zref-vario/compare/v0.1.6...HEAD)
+## [Unreleased](https://github.com/gusbrs/zref-vario/compare/v0.1.7...HEAD)
+
+## [v0.1.7](https://github.com/gusbrs/zref-vario/compare/v0.1.6...v0.1.7) (2023-01-03)
+
+### Changed
+- Improved Italian localization (see issue
+ [#1](https://github.com/gusbrs/zref-vario/issues/1)).
## [v0.1.6](https://github.com/gusbrs/zref-vario/compare/v0.1.5...v0.1.6) (2022-12-29)
diff --git a/macros/latex/contrib/zref-vario/zref-vario-code.pdf b/macros/latex/contrib/zref-vario/zref-vario-code.pdf
index 1f8fa29283..e5aa9feaa1 100644
--- a/macros/latex/contrib/zref-vario/zref-vario-code.pdf
+++ b/macros/latex/contrib/zref-vario/zref-vario-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-vario/zref-vario-code.tex b/macros/latex/contrib/zref-vario/zref-vario-code.tex
index 18c6115093..914208b02e 100644
--- a/macros/latex/contrib/zref-vario/zref-vario-code.tex
+++ b/macros/latex/contrib/zref-vario/zref-vario-code.tex
@@ -4,7 +4,7 @@
%
% This file is part of the LaTeX package "zref-vario".
%
-% Copyright (C) 2022 Gustavo Barros
+% Copyright (C) 2022-2023 Gustavo Barros
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/zref-vario/zref-vario.dtx b/macros/latex/contrib/zref-vario/zref-vario.dtx
index 0137baa195..1e07c94694 100644
--- a/macros/latex/contrib/zref-vario/zref-vario.dtx
+++ b/macros/latex/contrib/zref-vario/zref-vario.dtx
@@ -4,7 +4,7 @@
%
% This file is part of the LaTeX package "zref-vario".
%
-% Copyright (C) 2022 Gustavo Barros
+% Copyright (C) 2022-2023 Gustavo Barros
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -128,7 +128,7 @@
%
% Identify the package.
% \begin{macrocode}
-\ProvidesExplPackage {zref-vario} {2022-12-29} {0.1.6}
+\ProvidesExplPackage {zref-vario} {2023-01-03} {0.1.7}
{Extended LaTeX page cross-references with varioref and zref-clever}
% \end{macrocode}
%
@@ -1207,13 +1207,16 @@
% \end{macrocode}
%
%
+% Italian localization improved thanks to \contributor{Matteo Ferrigato} (at
+% \githubissue{1})
+%
% \begin{macrocode}
\zvLanguageSetup { italian }
{
reftextfaceafter =
- {\reftextvario{}{nella~}\zvhyperlink{\reftextvario{a~fronte}{pagina~successiva}}} ,
+ {nella~\zvhyperlink{pagina~\reftextvario{a~fianco}{successiva}}} ,
reftextfacebefore =
- {\reftextvario{}{nella~}\zvhyperlink{\reftextvario{a~fronte}{pagina~precedente}}} ,
+ {nella~\zvhyperlink{pagina~\reftextvario{a~fianco}{precedente}}} ,
reftextafter =
{nella~\zvhyperlink{pagina~\reftextvario{seguente}{successiva}}} ,
reftextbefore = {nella~\zvhyperlink{pagina~precedente}} ,
diff --git a/macros/latex/contrib/zref-vario/zref-vario.ins b/macros/latex/contrib/zref-vario/zref-vario.ins
index f0e767208b..bdc92fffdb 100644
--- a/macros/latex/contrib/zref-vario/zref-vario.ins
+++ b/macros/latex/contrib/zref-vario/zref-vario.ins
@@ -4,7 +4,7 @@
%
% This file is part of the LaTeX package "zref-vario".
%
-% Copyright (C) 2022 Gustavo Barros
+% Copyright (C) 2022-2023 Gustavo Barros
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,7 +50,7 @@
This file was generated from file(s) of the LaTeX package "zref-vario".
-Copyright (C) 2022 Gustavo Barros
+Copyright (C) 2022-2023 Gustavo Barros
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
diff --git a/macros/latex/contrib/zref-vario/zref-vario.pdf b/macros/latex/contrib/zref-vario/zref-vario.pdf
index a48dc67df0..ef33353401 100644
--- a/macros/latex/contrib/zref-vario/zref-vario.pdf
+++ b/macros/latex/contrib/zref-vario/zref-vario.pdf
Binary files differ
diff --git a/macros/latex/contrib/zref-vario/zref-vario.tex b/macros/latex/contrib/zref-vario/zref-vario.tex
index c2cc84878a..859519a2ef 100644
--- a/macros/latex/contrib/zref-vario/zref-vario.tex
+++ b/macros/latex/contrib/zref-vario/zref-vario.tex
@@ -4,7 +4,7 @@
%
% This file is part of the LaTeX package "zref-vario".
%
-% Copyright (C) 2022 Gustavo Barros
+% Copyright (C) 2022-2023 Gustavo Barros
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -335,18 +335,30 @@ details and limitations of these checks and envisaged workflows for their
reliable use.
-% \section{Acknowledgments}
-%
-% A number of people have contributed to \pkg{zref-vario}. Suggestions,
-% ideas, solutions to problems, bug reports or even encouragement were
-% generously provided by (in chronological order):
-%
-% The package's language settings have been provided or improved thanks to:
-%
-% If I have inadvertently left anyone off the list I apologize, and please let
-% me know, so that I can correct the oversight.
-%
-% Thank you all very much!
+\section{Acknowledgments}
+
+A number of people have contributed to \pkg{zref-vario}. Suggestions,
+ideas, solutions to problems, bug reports or even encouragement were
+generously provided by (in chronological order):
+ Matteo Ferrigato, % 'matteo339'
+ % 2023-01-02: https://github.com/gusbrs/zref-vario/issues/1
+ Ulrike Fischer,
+ % 2023-01-02: https://tex.stackexchange.com/q/670399 (comments)
+ David Carlisle,
+ % 2023-01-02: https://chat.stackexchange.com/transcript/message/62684358#62684358
+ % and following discussion.
+ and Joseph Wright.
+ % 2023-01-02: https://chat.stackexchange.com/transcript/message/62684358#62684358
+ % and following discussion.
+
+The package's language settings have been provided or improved thanks to:
+ Matteo Ferrigato (Italian). % 'matteo339'
+ % 2023-01-02: https://github.com/gusbrs/zref-vario/issues/1
+
+If I have inadvertently left anyone off the list I apologize, and please let
+me know, so that I can correct the oversight.
+
+Thank you all very much!
\section{Change history}