summaryrefslogtreecommitdiff
path: root/macros/latex/contrib
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2022-12-29 03:05:22 +0000
committerNorbert Preining <norbert@preining.info>2022-12-29 03:05:22 +0000
commit55c69feeef908f49007708be194b7bb1c607f302 (patch)
tree5f629517b0a04430a00ee04e5bba3be4981a0f95 /macros/latex/contrib
parentc593cd7fcc1d6af28601f82bf0354a13eca3ff93 (diff)
CTAN sync 202212290305
Diffstat (limited to 'macros/latex/contrib')
-rw-r--r--macros/latex/contrib/ibrackets/ibrackets.dtx61
-rw-r--r--macros/latex/contrib/ibrackets/ibrackets.pdfbin96262 -> 93698 bytes
-rw-r--r--macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.pdfbin6059957 -> 6060882 bytes
-rw-r--r--macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.tex18
-rw-r--r--macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv1-8T.pdf (renamed from macros/latex/contrib/jeuxcartes/tex/CaJ-PoKeRv1-8T.pdf)bin8771 -> 8771 bytes
-rw-r--r--macros/latex/contrib/postnotes/CHANGELOG.md18
-rw-r--r--macros/latex/contrib/postnotes/postnotes-code.pdfbin815249 -> 815331 bytes
-rw-r--r--macros/latex/contrib/postnotes/postnotes.dtx160
-rw-r--r--macros/latex/contrib/postnotes/postnotes.pdfbin176944 -> 177361 bytes
-rw-r--r--macros/latex/contrib/postnotes/postnotes.tex39
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdfbin767395 -> 805059 bytes
-rw-r--r--macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex339
-rw-r--r--macros/latex/contrib/proflycee/tex/ProfLycee.sty9
-rw-r--r--macros/latex/contrib/tagpdf/README.md2
-rw-r--r--macros/latex/contrib/tagpdf/acrobat.pngbin0 -> 23311 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-backend.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-checks.dtx7
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.pdfbin1523569 -> 1532339 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-data.dtx227
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-roles.dtx83
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-space.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-struct.dtx20
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-tree.dtx15
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-user.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.pdfbin738728 -> 757067 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.tex54
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty27
-rw-r--r--macros/latex/contrib/zref-clever/CHANGELOG.md16
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever-code.pdfbin1258005 -> 1283227 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.dtx556
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.ins1
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.pdfbin316250 -> 322543 bytes
-rw-r--r--macros/latex/contrib/zref-clever/zref-clever.tex166
37 files changed, 1427 insertions, 425 deletions
diff --git a/macros/latex/contrib/ibrackets/ibrackets.dtx b/macros/latex/contrib/ibrackets/ibrackets.dtx
index 897cb36de8..8e78228310 100644
--- a/macros/latex/contrib/ibrackets/ibrackets.dtx
+++ b/macros/latex/contrib/ibrackets/ibrackets.dtx
@@ -20,7 +20,7 @@
%<*package>
\NeedsTeXFormat{LaTeX2e}[2005/12/01]
\ProvidesPackage{ibrackets}
- [2022/12/19 v1.0 .dtx ibrackets file]
+ [2022/12/26 v1.1 .dtx ibrackets file]
%</package>
%<*driver>
\documentclass{ltxdoc}
@@ -29,10 +29,12 @@
\usepackage[english]{babel}
\usepackage[charter]{mathdesign}
\usepackage{ibrackets}
+\usepackage{sectsty}
+\usepackage{xcolor}
+\definecolor{darkbrown}{rgb}{0.5,0.1,0.1}
+\allsectionsfont{\color{darkbrown}}
\renewcommand\pi{\piup}
-\DeclareMathSymbol{\OB}\mathopen{operators}{091} % open bracket [
-\DeclareMathSymbol{\CB}\mathclose{operators}{093} % close bracket ]
\DisableCrossrefs
%\CodelineIndex
@@ -73,22 +75,26 @@
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \changes{v1.0}{2022/12/19}{Initial version, creating dtx and ins files}
+% \changes{v1.0}{2022/12/19}{Initial version}
+%
+% \changes{v1.1}{2022/12/28}{
+% - A bug correction in the README.md file
+% - Tiny changes in documentation}
%
% \GetFileInfo{ibrackets.sty}
%
-% \title{Intelligent brackets \\ The \textsf{ibrackets} package\thanks{This document
-% corresponds to \textsf{ibrackets}~\fileversion, dated \filedate.}}
+% \title{Intelligent brackets \\ The \textsf{ibrackets} package}
% \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}}
-% \date{December 19, 2022}
+% \date{\filedate, \fileversion}
% \maketitle
%
% \section{Introduction}
%
% Open intervals are usually represented with parenthesis $(0, +\infty)$
% but sometimes we find also
-% brackets $]0, +\infty[$, for example in French mathematics.
-% In that case the space around them is often unsuitable, e.g.\@ $x \in \CB 0, +\infty\OB$.
+% square brackets $]0, +\infty[$, for example in French mathematics.
+% When using these, spacing is often unsuitable,
+% e.g.\@ $x \in \mathclose{]} 0, +\infty\mathopen{[}$.
% This small package redefines brackets symbols $[$ and $]$ for mathematical mode
% to get correct spacing: $x \in ]0, +\infty[$.
%
@@ -96,37 +102,39 @@
% Originally implemented in the \textsf{mismath} package~\cite{MIS}
% and also in \textsf{frenchmath}~\cite{FR}
% since version 2.1, our previous redefinitions produce however incorrect spacing
-% when the left boundary of the interval begins with a sign - or +,
+% when the left bound of the interval begins with a sign - or +,
% which was then interpreted as a binary operation. Thus blank
% spaces surrounding the sign would have been too large.
% This problem was pointed out by Jean-François Burnol, and
% an easy solution, that has been documented, consisted to nest the operator
-% or the left boundary
-% within a pair of braces, e.g.\@ |$x \in ]{-}\infty, 0]$|, or use |\left| and |\right|
+% or the left bound within a pair of braces,
+% e.g.\@ |$x \in ]{-}\infty, 0]$|, or use |\left| and |\right|
% or even |\mathopen{]}|.
%
% \medskip
% Inspired by the \textsf{icomma} package~\cite{ICOMMA} of Walter Schmidt, we now provide
% an improved bracket definition that works correctly without
-% these pair of brackets.
+% these pairs of curly brackets.
%
% \medskip
-% Let us also mention other approaches e.g.\@ |\DeclarePairedDelimiters|, a macro from
+% Let's also mention other approaches e.g.\@ |\DeclarePairedDelimiters|, a macro from
% the \textsf{mathtools} package~\cite{TOOL}, or
% the \textsf{interval} package~\cite{INT} with his
% |\interval| macro. Nevertheless our solution is lighter.
%
% \section{Usage}
% You just have to type intervals in an easy way:
-% |$x\in ]0,\pi[ \cup ]2\pi,3\pi[$|
+% |$x\in]0,\pi[\cup]2\pi, 3\pi[$|
% produce
-% \[ x\in ]0, \pi[ \cup ]2\pi, 3\pi[ \mbox{\quad with \textsf{ibrackets}}, \]
+% \[ x\in]0, \pi[\cup]2\pi, 3\pi[ \mbox{\quad with \textsf{ibrackets}}, \]
% instead of
-% \[ x\in \CB 0,\pi \OB \cup \CB 2\pi, 3\pi \OB \mbox{\quad without \textsf{ibrackets}}. \]
-
+% \[ x\in\mathclose{]} 0,\pi \mathopen{[}\cup\mathclose{]} 2\pi, 3\pi\mathopen{[}
+% \mbox{\quad without \textsf{ibrackets}}.
+% \]
+%
% Generally $[$ and $]$ symbols are not defined anymore as delimiters,
% but as ordinary characters.
-% Thereby a line break could occur between the two brackets, but
+% Thereby a line break could occur between the two square brackets, but
% it is always possible to transform them
% into delimiters with |\left| and |\right|.
%
@@ -140,7 +148,7 @@
% |$x \in ] -\infty, 0]$| yields $x \in ] -\infty, 0]$ with bad spacing around the
% minus sign.
% Contrariwise, when you want to write algebra on intervals then
-% \emph{you must leave a blank space between the second bracket and the} +/- \emph{operations},
+% \emph{you must leave a blank space between the second bracket and the} +/- \emph{operations},
% e.g.\@ |$[a, b] + [c, d]$| yields $[a, b] + [c, d]$
% but |$[a, b]+ [c, d]$| yields $[a, b]+ [c, d]$.
% To summarize the new behavior of a bracket: it is an ordinary character,
@@ -157,24 +165,23 @@
\mathcode`[="8000
\mathchardef\mathclosebracket\mathcode`]%
\mathcode`]="8000
+}
+
% \end{macrocode}
% The active brackets check the next input character. If this is a - or a +,
% the active brackets return |\mathopen| with the saved |\math...bracket|
% so that no space will be added after the bracket;
% otherwise, |\mathord\math...bracket| is returned :
% \begin{macrocode}
-}
{\catcode`[=\active
- \gdef[{\futurelet\@next\sm@rtopenbracket}
-}
+ \gdef[{\futurelet\@next\sm@rtopenbracket}}
\def\sm@rtopenbracket{%
\ifx\@next- \mathopen \else
\ifx\@next+ \mathopen \else
\mathord\fi\fi \mathopenbracket}
-
+
{\catcode`]=\active
- \gdef]{\futurelet\@next\sm@rtclosebracket}
-}
+ \gdef]{\futurelet\@next\sm@rtclosebracket}}
\def\sm@rtclosebracket{%
\ifx\@next- \mathopen \else
\ifx\@next+ \mathopen \else
@@ -186,6 +193,7 @@
% to follow an interval with an operation plus or minus.
%
% \begin{thebibliography}{5}
+% % \begin{raggedright}
% \bibitem{MIS} \emph{\textsf{mismath} -- Miscellaneus mathematical macros}.
% Antoine Missier, CTAN, v2.0 2022/11/11.
% \bibitem{FR} \emph{L'extension \textsf{frenchmath}}. Antoine Missier, CTAN, v2.2 2022/12/15.
@@ -195,6 +203,7 @@
% v1.21 2018/01/08.
% \bibitem{INT} \emph{The \textsf{interval} package}. Lars Madsen, CTAN,
% v0.4 2019/03/06.
+% \end{raggedright}
% \end{thebibliography}
% \Finale
\endinput
diff --git a/macros/latex/contrib/ibrackets/ibrackets.pdf b/macros/latex/contrib/ibrackets/ibrackets.pdf
index a45c0dc20f..4fa49c35e9 100644
--- a/macros/latex/contrib/ibrackets/ibrackets.pdf
+++ b/macros/latex/contrib/ibrackets/ibrackets.pdf
Binary files differ
diff --git a/macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.pdf b/macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.pdf
index 112248c583..7b8cac8486 100644
--- a/macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.pdf
+++ b/macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.tex b/macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.tex
index 62fbeafdd0..1420ae56bc 100644
--- a/macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.tex
+++ b/macros/latex/contrib/jeuxcartes/doc/JeuxCartes-doc.tex
@@ -52,8 +52,8 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\TPversion{0.2.1}
-\def\TPdate{27 Décembre 2022}
+\def\TPversion{0.2.1a}
+\def\TPdate{28 Décembre 2022}
\usepackage[most]{tcolorbox}
\usepackage[outputdir=build]{minted}
@@ -185,19 +185,19 @@ Une commande pour des cartes en version \og miniatures \fg{} (individuelle, main
\part{Historique}
-{\small \bverb|v0.2.1|~:~~~~Correction du nom d'une carte pokerv1...
+{\small \bverb|v0.2.1a|~:~~~~Correction du nom d'une carte pokerv1...
-{\small \bverb|v0.2.0|~:~~~~Modification du design des cartes (pdf pour Poker/Uno + png pour Tarot) + alternatives pour le Poker
+{\small \bverb|v0.2.0 |~:~~~~Modification du design des cartes (pdf pour Poker/Uno + png pour Tarot) + alternatives pour le Poker
-{\small \bverb|v0.1.4|~:~~~~Réduction de la taille des images \texttt{png}
+{\small \bverb|v0.1.4 |~:~~~~Réduction de la taille des images \texttt{png}
-{\small \bverb|v0.1.3|~:~~~~Ajout de cartes Uno (CC1.0 par AlexDer) + modification des commandes + rami
+{\small \bverb|v0.1.3 |~:~~~~Ajout de cartes Uno (CC1.0 par AlexDer) + modification des commandes + rami
-{\small \bverb|v0.1.2|~:~~~~Modification du nom (et de la source) des images de Tarot (CC0)
+{\small \bverb|v0.1.2 |~:~~~~Modification du nom (et de la source) des images de Tarot (CC0)
-{\small \bverb|v0.1.1|~:~~~~Ajout de commandes pour des mini-cartes
+{\small \bverb|v0.1.1 |~:~~~~Ajout de commandes pour des mini-cartes
-{\small \bverb|v0.1 |~:~~~~Version initiale
+{\small \bverb|v0.1 |~:~~~~Version initiale
\vfill~
diff --git a/macros/latex/contrib/jeuxcartes/tex/CaJ-PoKeRv1-8T.pdf b/macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv1-8T.pdf
index 38c26c657d..38c26c657d 100644
--- a/macros/latex/contrib/jeuxcartes/tex/CaJ-PoKeRv1-8T.pdf
+++ b/macros/latex/contrib/jeuxcartes/tex/CaJ-PokeRv1-8T.pdf
Binary files differ
diff --git a/macros/latex/contrib/postnotes/CHANGELOG.md b/macros/latex/contrib/postnotes/CHANGELOG.md
index 5ae69925f0..c6fa663478 100644
--- a/macros/latex/contrib/postnotes/CHANGELOG.md
+++ b/macros/latex/contrib/postnotes/CHANGELOG.md
@@ -1,6 +1,22 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/postnotes/compare/v0.1.7...HEAD)
+## [Unreleased](https://github.com/gusbrs/postnotes/compare/v0.2.0...HEAD)
+
+## [v0.2.0](https://github.com/gusbrs/postnotes/compare/v0.1.7...v0.2.0) (2022-12-28)
+
+### Added
+- `\postnote` option `markstr`, which can receive a string as value, and does
+ not set `sortnum`.
+- `\postnotesection` option `exp`, to expand the contents in place.
+
+### Changed
+- To simplify user input, `\postnote` option `mark` now requires a number as
+ value, but it also sets `sortnum`.
+- `\postnotesectionx` is deprecated in favor of the new `exp` option.
+- Bumped the required kernel to 2022-06-01, so that we can use the new
+ `\MakeLinkTarget` and the starred version of `\ref*` defined by the kernel,
+ which simplifies the relation with `hyperref`. All in all, `postnotes` no
+ longer needs to use any internal `hyperref` commands.
## [v0.1.7](https://github.com/gusbrs/postnotes/compare/v0.1.6...v0.1.7) (2022-11-13)
diff --git a/macros/latex/contrib/postnotes/postnotes-code.pdf b/macros/latex/contrib/postnotes/postnotes-code.pdf
index ac52fa60c3..b5a50db424 100644
--- a/macros/latex/contrib/postnotes/postnotes-code.pdf
+++ b/macros/latex/contrib/postnotes/postnotes-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/postnotes/postnotes.dtx b/macros/latex/contrib/postnotes/postnotes.dtx
index 2ab7308ace..b6a9a15572 100644
--- a/macros/latex/contrib/postnotes/postnotes.dtx
+++ b/macros/latex/contrib/postnotes/postnotes.dtx
@@ -65,8 +65,8 @@
% \NewDocumentCommand\githubPR{m}{^^A
% PR~\href{https://github.com/gusbrs/postnotes/pull/#1}{\##1}}
%
-% ^^A Currently just for keeping semantic markup on this.
% \NewDocumentCommand\contributor{m}{#1}
+% \NewDocumentCommand\username{m}{`\texttt{#1}'}
%
% \NewDocumentCommand\opt{m}{\texttt{#1}}
%
@@ -128,17 +128,23 @@
% \end{macrocode}
%
%
-% Require the new syntax for file/package hooks (\texttt{ltnews34},
-% \texttt{ltfilehook}).
+% The new syntax for file/package hooks, which the package assumes, requires
+% kernel 2021-11-15 (\texttt{ltnews34}, \texttt{ltfilehook}). Furthermore,
+% the kernel of 2022-06-01 introduced a couple of very nice features which
+% simplifies the relation with \pkg{hyperref} (\texttt{ltnews35},
+% \texttt{hyperref-linktarget}): the provision of \cs{MakeLinkTarget} and the
+% definition by the kernel of the starred version of \cs{ref}, which we can
+% use regardless of \pkg{hyperref} being loaded. So we require the 2022-06-01
+% kernel or newer.
%
% \begin{macrocode}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
-\IfFormatAtLeastTF{2021-11-15}
+\IfFormatAtLeastTF{2022-06-01}
{}
{%
\PackageError{postnotes}{LaTeX kernel too old}
{%
- 'postnotes' requires a LaTeX kernel 2021-11-15 or newer.%
+ 'postnotes' requires a LaTeX kernel 2022-06-01 or newer.%
\MessageBreak Loading will abort!%
}%
\endinput
@@ -147,7 +153,7 @@
%
%
% \begin{macrocode}
-\ProvidesExplPackage {postnotes} {2022-11-13} {0.1.7}
+\ProvidesExplPackage {postnotes} {2022-12-28} {0.2.0}
{Endnotes for LaTeX}
% \end{macrocode}
%
@@ -233,6 +239,7 @@
{ \thesection }
\prop_gput:cnn { \@@_data_name:e {#1} } { content } {#2}
}
+\cs_generate_variant:Nn \@@_store_section:nn { nx }
% \end{macrocode}
% \end{macro}
%
@@ -863,18 +870,10 @@
\UseHook { postnotes/note/begin }
\cs_set:Npn \@currentcounter { postnote }
\cs_set:Npx \@currentlabel { \p@postnote \l_@@_mark_tl }
- \@@_hyperref_make_currentHref:n
- { postnote. \l_@@_note_id_tl .mark }
+ \MakeLinkTarget* { postnote. \l_@@_note_id_tl .mark }
\@@_set_mark_page_label:x { \l_@@_note_id_tl }
\@@_set_user_labels:
- \bool_if:NTF \l_@@_nomark_bool
- {
- \bool_if:NT \l_@@_hyperlink_bool
- {
- \@@_hyperref_set_anchor:n
- { postnote. \l_@@_note_id_tl .mark }
- }
- }
+ \bool_if:NF \l_@@_nomark_bool
{
\@@_typeset_mark:xV
{ \l_@@_note_id_tl } \l_@@_mark_tl
@@ -898,16 +897,22 @@
\bool_new:N \l_@@_maybe_multi_bool
\keys_define:nn { postnotes/note }
{
- mark .tl_set:N = \l_@@_mark_tl ,
- mark .value_required:n = true ,
- nomark .bool_set:N = \l_@@_nomark_bool ,
- nomark .default:n = true ,
+ markstr .tl_set:N = \l_@@_mark_tl ,
+ markstr .value_required:n = true ,
sortnum .code:n =
{
\fp_set:Nn \l_@@_sort_num_fp {#1}
\bool_set_true:N \l_@@_manual_sortnum_bool
} ,
sortnum .value_required:n = true ,
+ mark .meta:n =
+ {
+ markstr = {#1} ,
+ sortnum = {#1} ,
+ } ,
+ mark .value_required:n = true ,
+ nomark .bool_set:N = \l_@@_nomark_bool ,
+ nomark .default:n = true ,
label .tl_set:N = \l_@@_note_label_tl ,
label .value_required:n = true ,
}
@@ -981,7 +986,6 @@
{
\bool_if:NTF \l_@@_hyperlink_bool
{
- \@@_hyperref_set_anchor:n { postnote. #1 .mark }
\@@_make_mark:nnn {#2}
{ \hyper@linkstart { link } { postnote. #1 .text } }
{ \hyper@linkend }
@@ -1054,7 +1058,7 @@
\hyperref [#2]
{ \@@_make_mark:nnn { \ref*{#2} } { } { } }
}
- { \@@_make_mark:nnn { \@@_ref_star:n {#2} } { } { } }
+ { \@@_make_mark:nnn { \ref*{#2} } { } { } }
}
\group_end:
}
@@ -1078,7 +1082,16 @@
\NewDocumentCommand \postnotesection { O { } +m }
{ \@@_section:nn {#1} {#2} }
\NewDocumentCommand \postnotesectionx { O { } +m }
- { \@@_section:nx {#1} {#2} }
+ {
+ % NOTE Command deprecated in 2022-12-27 for v0.2.0.
+ \msg_warning:nn { postnotes } { postnotesectionx-deprecated }
+ \postnotesection [ #1 , exp ] {#2}
+ }
+\msg_new:nnn { postnotes } { postnotesectionx-deprecated }
+ {
+ '\iow_char:N\\postnotesectionx'~is~deprecated~\msg_line_context:.~
+ Use~the~'exp'~option~of~'\iow_char:N\\postnotesection'~instead.
+ }
% \end{macrocode}
% \end{macro}
%
@@ -1097,10 +1110,11 @@
\seq_gput_right:Nx \g_@@_queue_seq { \l_@@_note_id_tl }
\tl_gclear:N \g_@@_section_name_tl
\keys_set:nn { postnotes/section } {#1}
- \@@_store_section:nn { \l_@@_note_id_tl } {#2}
+ \bool_if:NTF \l_@@_section_exp_bool
+ { \@@_store_section:nx { \l_@@_note_id_tl } {#2} }
+ { \@@_store_section:nn { \l_@@_note_id_tl } {#2} }
\group_end:
}
-\cs_generate_variant:Nn \@@_section:nn { nx }
% \end{macrocode}
% \end{macro}
%
@@ -1111,10 +1125,14 @@
%
% \begin{macrocode}
\tl_new:N \g_@@_section_name_tl
+\bool_new:N \l_@@_section_exp_bool
\keys_define:nn { postnotes/section }
{
name .tl_gset:N = \g_@@_section_name_tl ,
name .value_required:n = true ,
+ exp .bool_set:N = \l_@@_section_exp_bool ,
+ exp .initial:n = false ,
+ exp .default:n = true ,
}
% \end{macrocode}
%
@@ -1208,7 +1226,8 @@
% that the particular value of \texttt{postnotesection} is of little practical
% meaning, it really is just meant to provide recognizable ``bounds'' for
% \texttt{postnote} along the printing of the notes. Indeed, it is
-% initialized to a very high value, so that ``marks'' and ``texts'' don't mix
+% initialized to a very high value (larger than the conceivable number of
+% postnote sections in a document), so that ``marks'' and ``texts'' don't mix
% in the same reference list, which would occur if the enclosing counters of
% both belonged to the same range, and with somewhat arbitrary results, since
% we cannot ensure the step of the enclosing counter along the document
@@ -1341,10 +1360,10 @@
{ \l_@@_print_counter_tl }
\cs_set:Npx \@currentlabel
{ \p@postnote \l_@@_print_mark_tl }
- \@@_hyperref_make_currentHref:n
- { postnote. \l_@@_print_note_id_tl .text }
\@@_text_mark_wrapper:n
{
+ \MakeLinkTarget*
+ { postnote. \l_@@_print_note_id_tl .text }
\@@_set_text_page_label:x
{ \l_@@_print_note_id_tl }
\@@_typeset_text_mark:eV
@@ -1420,16 +1439,13 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_typeset_text_mark:nn #1#2
{
- \bool_if:NTF \l_@@_hyperlink_bool
+ \bool_lazy_and:nnTF
+ { \l_@@_hyperlink_bool }
+ { \l_@@_backlink_bool }
{
- \@@_hyperref_set_anchor:n { postnote. #1 .text }
- \bool_if:NTF \l_@@_backlink_bool
- {
- \@@_make_text_mark:nnn {#2}
- { \hyper@linkstart { link } { postnote. #1 .mark } }
- { \hyper@linkend }
- }
- { \@@_make_text_mark:nnn {#2} { } { } }
+ \@@_make_text_mark:nnn {#2}
+ { \hyper@linkstart { link } { postnote. #1 .mark } }
+ { \hyper@linkend }
}
{ \@@_make_text_mark:nnn {#2} { } { } }
}
@@ -1437,10 +1453,7 @@
\cs_new_protected:Npn \@@_text_mark_wrapper:n #1
{
\bool_if:NTF \l_@@_print_as_list_bool
- {
- \item
- [ \l_@@_pre_textmark_tl #1 \l_@@_post_textmark_tl ]
- }
+ { \item [ \l_@@_pre_textmark_tl #1 \l_@@_post_textmark_tl ] }
{ \l_@@_pre_textmark_tl #1 \l_@@_post_textmark_tl }
}
% \end{macrocode}
@@ -1968,47 +1981,6 @@
% \end{macrocode}
%
%
-% \subsection*{\pkg{hyperref}}
-%
-% \begin{macrocode}
-\bool_new:N \g_@@_hyperref_loaded_bool
-\AddToHook { package/hyperref/after }
- { \bool_gset_true:N \g_@@_hyperref_loaded_bool }
-% \end{macrocode}
-%
-% \begin{macro}
-% {
-% \@@_hyperref_make_currentHref:n ,
-% \@@_hyperref_set_anchor:n ,
-% \@@_ref_star:n ,
-% }
-% Auxiliary functions for \pkg{hyperref} support.
-% \begin{syntax}
-% \cs{@@_hyperref_make_currentHref:n} \Arg{anchor/destination}
-% \cs{@@_hyperref_set_anchor:n} \Arg{anchor/destination}
-% \cs{@@_ref_star:n} \Arg{label}
-% \end{syntax}
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_hyperref_make_currentHref:n #1
- {
- \bool_if:NT \g_@@_hyperref_loaded_bool
- { \Hy@MakeCurrentHref {#1} }
- }
-\cs_new_protected:Npn \@@_hyperref_set_anchor:n #1
- {
- \bool_if:NT \g_@@_hyperref_loaded_bool
- { \Hy@raisedlink { \hyper@anchor {#1} } }
- }
-\cs_new_protected:Npn \@@_ref_star:n #1
- {
- \bool_if:NTF \g_@@_hyperref_loaded_bool
- { \ref*{#1} }
- { \ref{#1} }
- }
-% \end{macrocode}
-% \end{macro}
-%
-%
% \subsection*{\pkg{biblatex}}
%
% Thanks \contributor{Moritz Wemheuer}:
@@ -2389,7 +2361,12 @@
% \cs{textnormal}, \cs{textup}, etc.) in inline math environments is not
% supported. If a note really needs to be there, one can use the \opt{nomark}
% option and \cs{postnoteref}. Things should work in text mode and in display
-% style.
+% style. For some related discussion with regard to footnotes,
+% see \url{https://tex.stackexchange.com/a/82820} and, in particular, Barbara
+% Beeton's comment: ``This is certainly bravura code. I do hope it doesn't
+% result in a request to add \cs{footnote} capabilities to \pkg{amsmath}'s
+% multi-line display facilities. (The answer will almost certainly be "no".
+% We agree with Kopka \& Daly.)''
% \begin{macrocode}
\AddToHook { postnotes/note/begin } [ postnotes ]
{
@@ -2640,9 +2617,13 @@
%
% \subsection*{French}
%
-% French localization validated by \contributor{\texttt{Pika78}} at
+% French localization validated by \contributor{\username{Pika78}} at
% \githubissue{1}.
%
+% \pkg{babel-french} also has \file{.ldf}s for \texttt{francais},
+% \texttt{frenchb}, and \texttt{canadien}, but they are deprecated as options
+% and, if used, they fall back to either \texttt{french} or \texttt{acadian}.
+%
% \begin{macrocode}
\@@_define_language:nn { french }
{
@@ -2651,11 +2632,8 @@
\tl_set:Nn \pnhdtopage { de~la~page }
\tl_set:Nn \pnhdtopages { des~pages }
}
-\@@_set_babel_language:nn { french } { french }
-\@@_set_babel_language:nn { acadian } { french }
-\@@_set_babel_language:nn { canadien } { french }
-\@@_set_babel_language:nn { francais } { french }
-\@@_set_babel_language:nn { frenchb } { french }
+\@@_set_babel_language:nn { french } { french }
+\@@_set_babel_language:nn { acadian } { french }
\@@_set_polyglossia_language:nn { french } { french }
% \end{macrocode}
%
@@ -2665,6 +2643,10 @@
% German localization provided by \contributor{Herbert Voß} at
% \githubissue{2}.
%
+% \pkg{babel-german} also has \file{.ldf}s for \texttt{germanb} and
+% \texttt{ngermanb}, but they are deprecated as options and, if used, they
+% fall back respectively to \texttt{german} and \texttt{ngerman}.
+%
% \begin{macrocode}
\@@_define_language:nn { german }
{
diff --git a/macros/latex/contrib/postnotes/postnotes.pdf b/macros/latex/contrib/postnotes/postnotes.pdf
index e82c9195b4..58a7d4a3e7 100644
--- a/macros/latex/contrib/postnotes/postnotes.pdf
+++ b/macros/latex/contrib/postnotes/postnotes.pdf
Binary files differ
diff --git a/macros/latex/contrib/postnotes/postnotes.tex b/macros/latex/contrib/postnotes/postnotes.tex
index 04ea7ccc27..79f77d22cb 100644
--- a/macros/latex/contrib/postnotes/postnotes.tex
+++ b/macros/latex/contrib/postnotes/postnotes.tex
@@ -159,10 +159,8 @@
\setlength{\marginparsep}{2\labelsep}
\NewDocumentCommand\opt{m}{\texttt{#1}}
-% Temporary workaround for 'l3doc' bug.
-% https://github.com/latex3/latex3/issues/1111
-% FIXME Remove when fixed upstream.
-\NewDocElement[macrolike=false]{Option}{option}
+
+\NewDocumentCommand\username{m}{`\texttt{#1}'}
\begin{document}
@@ -284,10 +282,7 @@ for making notes subdivisions, and it places \meta{text} between the notes
where it occurs, at the point the notes are printed by \cs{printpostnotes}.
For more details and some examples, see \zcref{sec:notes-sections}. Its
\meta{options} are presented in \zcref{sec:options},
-\zcref[ref=title,noname]{sec:section-options}. A \cs{postnotesectionx} is
-also provided which expands \meta{text} in place (\texttt{x}-type expansion)
-before storing it (differently from \cs{postnotesection} which stores
-\meta{text} with ``no manipulation'').
+\zcref[ref=title,noname]{sec:section-options}.
\begin{function}{\printpostnotes}
\begin{syntax}
@@ -450,14 +445,17 @@ following:
\bigskip{}
\DescribeOption{mark} %
+\DescribeOption{markstr} %
By default, the mark generated by \cs{postnote} is determined by the printed
representation of the \texttt{postnote} counter, \cs{thepostnote}, which is
-stepped when \cs{postnote} is called. But the \opt{mark} option allows you to
-manually set it, in case you want, or need, to do so. When \opt{mark} is
-manually set, the \texttt{postnote} counter is not stepped. Note that,
-differently from the optional argument of \cs{footnote}, this does not need to
-be a number, it can receive some text as value, which is directly used as the
-mark.
+stepped when \cs{postnote} is called. But the \opt{mark} and \opt{markstr}
+options allow you to manually set it, in case you want, or need, to do so.
+When either \opt{mark} or \opt{markstr} is manually set, the \texttt{postnote}
+counter is not stepped. The difference between them is that \opt{mark} must
+receive a number as value, and uses its value to also set the \opt{sortnum}
+option, while \opt{markstr}, differently from the optional argument of
+\cs{footnote}, can receive a string as value which is directly used as the
+mark, but it does not set \opt{sortnum}.
\DescribeOption{sortnum} %
Normally, the sort value used for sorting the notes queue (see the \opt{sort}
@@ -468,7 +466,7 @@ manually with the \opt{sortnum} option, typically, when you have also manually
specified the mark. It receives a floating point number as value. So, for
example, if one needed to insert a note between notes 2 and 3, without
disturbing the numbering of other notes, one could use
-\texttt{\cs{postnote}[mark=2*,sortnum=2.5]\marg{text}}.
+\texttt{\cs{postnote}[markstr=2*,sortnum=2.5]\marg{text}}.
\DescribeOption{nomark} %
The \opt{nomark} option makes \cs{postnote} inhibit the typesetting of the
@@ -503,6 +501,13 @@ available for the first and last note on a given page through the variables
is typeset. For details on how to use these variables, see
\zcref{sec:headers}.
+\DescribeOption{exp} %
+By default, \cs{postnotesection} stores its \meta{text} argument with ``no
+manipulation''. The \opt{exp} option allows one to fully expand
+(\texttt{x}-type expansion) \meta{text} in place before storing it. It is a
+boolean option, and the option given with no value is equivalent to
+\texttt{exp=true}.
+
\section{Notes sections}
\zlabel{sec:notes-sections}
@@ -898,7 +903,7 @@ correctly ordered printed notes (as a result of sorting):
\postnote{2}
\begin{table}[p]
\caption{Table}
- Table.\postnote[mark=5,sortnum=5]{3}
+ Table.\postnote[mark=5]{3}
\end{table}
\postnote{4}
\postnote{5}
@@ -965,7 +970,7 @@ provided by (in chronological order):
% 2022-04-05: https://tex.stackexchange.com/q/597359#comment1594585_597389
The package's language support have been provided or improved thanks to:
- `\texttt{Pika78}' (French)
+ \username{Pika78} (French)
% 2022-04-25: https://github.com/gusbrs/postnotes/issues/1#issuecomment-1108634938
and Herbert Voß (German).
% 2022-11-12: https://github.com/gusbrs/postnotes/issues/2
diff --git a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
index 3aadbd377b..17413e1834 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 b3c364786e..a71a941920 100644
--- a/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
+++ b/macros/latex/contrib/proflycee/doc/ProfLycee-doc.tex
@@ -62,8 +62,8 @@
\setlength{\parindent}{0pt}
\definecolor{LightGray}{gray}{0.9}
-\def\PLversion{2.1.0}
-\def\PLdate{18 Décembre 2022}
+\def\PLversion{2.1.1}
+\def\PLdate{28 Décembre 2022}
\tcbset{vignettes/.style={%
nobeforeafter,box align=base,boxsep=0pt,enhanced,sharp corners=all,rounded corners=southeast,%
@@ -558,6 +558,13 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\end{codeinfo}
\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>}
+\CourbeTikz[<options>]{<fonction>}{<valxmin:valxmax>}
+
%courbe d'interpolation, tangente, dans un environnement tikz
\SplineTikz[<options>]{<liste>}
\TangenteTikz[<options>]{<liste>}
@@ -724,6 +731,326 @@ Elles sont présentées de manière \textit{succincte}, mais elles sont présent
\part{Outils pour l'analyse}
+\section{Repérage et tracé de courbes, en \TikZ}\label{reperagetikz}
+
+\subsection{Idée}
+
+\begin{codeidee}
+\cmaj{2.1.1} L'idée est de proposer des commandes \textit{simplifiées} pour tracer un repère, en \TikZ, avec :
+
+\begin{itemize}
+ \item axes et graduations, grille ;
+ \item courbe.
+\end{itemize}
+\end{codeidee}
+
+\begin{codeinfo}
+Au niveau du code, il y aura donc plusieurs \textit{aspects} :
+
+\begin{itemize}
+ \item le paramétrage de la fenêtre graphique directement dans la déclaration de l'environnement ;
+ \item les commandes de tracés avec options et clés.
+\end{itemize}
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+%version basique
+\begin{tikzpicture}[<paramètres>]
+ %grille et axes
+ \GrilleTikz[<options>][<options grille ppale>][<options grille second.>]
+ \AxesTikz[<options>]
+ \AxexTikz[<options>]{<valeurs>}
+ \AxeyTikz[<options>]{<valeurs>}
+ %courbe
+ \CourbeTikz[<options>]{<fonction>}{<valxmin:valxmax>}
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codetex}[listing only]
+%version simplifiée
+\begin{tikzpicture}[<paramètres>]
+ %grille et axes
+ \FenetreSimpleTikz[<options>]<opt axe Ox>{liste abscisses}<opt axe Oy>{liste ordonnées}
+ %courbe
+ \CourbeTikz[<options>]{<fonction>}{<valxmin:valxmax>}
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codesortie}
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \FenetreSimpleTikz<Police=\small>{0,5,...,55}<Police=\small>{0,30,...,210} %repère
+ \CourbeTikz[line width=1.25pt,ForestGreen,samples=250]%
+ {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe
+\end{tikzpicture}
+\end{codesortie}
+
+\pagebreak
+
+\subsection{Commandes, clés et options}
+
+\begin{codeinfo}
+Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivantes sont à déclarer directement dans l'environnement \ctex{tikzpicture}, seules les versions \og x \fg{} sont présentées ici:
+
+\begin{itemize}
+ \item \Cle{xmin}, stockée dans \ctex{\textbackslash{}xmin} ;\hfill{}défaut \Cle{-3}
+ \item \Cle{xmax}, stockée dans \ctex{\textbackslash{}xmax} ;\hfill{}défaut \Cle{3}
+ \item \Cle{Ox}, stockée dans \ctex{\textbackslash{}axexOx}, origine de l'axe $(Ox)$ ;\hfill{}défaut \Cle{0}
+ \item \Cle{xgrille}, stockée dans \ctex{\textbackslash{}xgrille}, graduation principale ;\hfill{}défaut \Cle{1}
+ \item \Cle{xgrilles}, stockée dans \ctex{\textbackslash{}xgrilles}, graduation secondaire.\hfill{}défaut \Cle{0.5}
+\end{itemize}
+
+La fenêtre d'affichage (de sortie) sera donc \textit{portée} par le rectangle de coins $(\text{xmin}\,;\,\text{ymin})$ et $(\text{xmax}\,;\,\text{ymax})$ ; ce qui correspond en fait à la fenêtre \TikZ{} \textit{portée} par le rectangle de coins $(xmin-Ox\,;\,ymin-Oy)$ et $(\text{xmax-Ox}\,;\,\text{ymax-Oy})$.
+
+\smallskip
+
+Les commandes ont -- pour certaines -- pas mal de \Cle{clés} pour des réglages fins, mais dans la majorité des cas elles ne sont pas forcément \textit{utiles}.
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+%...code tikz
+\GrilleTikz[<options>][<options grille ppale>][<options grille second.>]
+\end{codetex}
+
+\begin{codecles}
+Cette commande permet de tracer une grille principale et/ou une grille secondaire :
+
+\begin{itemize}
+ \item les premières \Cle{clés} sont les booléens \Cle{Affp} et \Cle{Affs} qui affichent ou non les grilles ;\hfill~défaut \Cle{true}
+ \item les options des grilles sont en \TikZ. \hfill~défaut \Cle{thin,lightgray} et \Cle{very thin,lightgray}
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \GrilleTikz
+\end{tikzpicture}
+~~
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \GrilleTikz[Affp=false][][orange,densely dotted]
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codesortie}
+\hfill~
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \GrilleTikz
+\end{tikzpicture}
+~~
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \GrilleTikz[Affp=false][][orange,densely dotted]
+\end{tikzpicture}
+\hfill~
+\end{codesortie}
+
+\begin{codetex}[listing only]
+%...code tikz
+\AxesTikz[<options>]
+\end{codetex}
+
+\begin{codecles}
+Cette commande permet de tracer les axes, avec des \Cle{clés} :
+
+\begin{itemize}
+ \item \Cle{Epaisseur} qui est l'épaisseur des axes ; \hfill~défaut \Cle{1pt}
+ \item \Cle{Police} qui est le style des labels des axes ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont}
+ \item \Cle{Labelx} qui est le label de l'axe $(Ox)$ ; \hfill~défaut \Cle{\${}x\$}
+ \item \Cle{Labely} qui est le label de l'axe $(Oy)$ ; \hfill~défaut \Cle{\${}y\$}
+ \item \Cle{AffLabel} qui est le code pour préciser quels labels afficher, entre \Cle{x}, \Cle{y} ou \Cle{xy} ; \hfill~défaut \Cle{vide}
+ \item \Cle{PosLabelx} pour la position du label de $(Ox)$ en bout d'axe ; \hfill~défaut \Cle{right}
+ \item \Cle{PosLabely} pour la position du label de $(Oy)$ en bout d'axe ; \hfill~défaut \Cle{above}
+ \item \Cle{EchelleFleche} qui est l'échelle de la flèche des axes ; \hfill~défaut \Cle{1}
+ \item \Cle{TypeFleche} qui est le type de la flèche des axes.\hfill~défaut \Cle{>}
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+%code tikz
+\AxesTikz
+
+%code tikz
+\AxesTikz%
+ [AffLabel=xy,Labelx={Nombre de jours},Labely={Nombre d'individus infectés, en centaines},%
+ PosLabelx={above left},PosLabely={above right},%
+ Police=\small\sffamily]
+\end{codetex}
+
+\begin{codesortie}
+\hfill~
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \AxesTikz
+\end{tikzpicture}
+~~
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \AxesTikz%
+ [AffLabel=xy,Labelx={Nombre de jours},
+ Labely={Nombre d'individus infectés, en centaines},%
+ PosLabelx={above left},PosLabely={above right},%
+ Police=\small\sffamily]
+\end{tikzpicture}
+\hfill~
+\end{codesortie}
+
+%les axes
+
+\begin{codetex}[listing only]
+%...code tikz
+\AxexTikz[<options>]{valeurs}
+\AxeyTikz[<options>]{valeurs}
+\end{codetex}
+
+\begin{codecles}
+Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} identiques pour les deux directions :
+
+\begin{itemize}
+ \item \Cle{Epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1pt}
+ \item \Cle{Police} qui est le style des labels des graduations ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont}
+ \item \Cle{PosGrad} qui est la position des graduations par rapport à l'axe ; \hfill~défaut \Cle{below} et \Cle{left}
+ \item \Cle{HautGrad} qui est la position des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ; \hfill~défaut \Cle{4pt}
+ \item le booléen \Cle{AffGrad} pour afficher les valeurs (formatés avec \ctex{num} donc dépendant de \ctex{sisetup}) des graduations ; \hfill~défaut \Cle{true}
+ \item le booléen \Cle{AffOrigine} pour afficher la graduation de l'origine ; \hfill~défaut \Cle{true}
+ \item le booléen \Cle{Annee} qui permet de ne pas formater les valeurs des graduations (type \textsf{année}). \hfill~défaut \Cle{false}
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+%code tikz
+\AxexTikz[Police=\small]{0,5,...,55}
+\AxeyTikz[Police=\small]{0,30,...,210}
+
+%code tikz
+\AxexTikz[Police=\small,HautGrad=0pt/4pt]{0,5,...,55}
+\AxeyTikz[AffGrad=false,HautGrad=6pt]{0,30,...,210}
+
+%des axes fictifs (en gris) sont rajoutés pour la lisibilité du code de sortie
+\end{codetex}
+
+\begin{codesortie}
+\hfill~
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \draw[gray,line width=1.25pt,->] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ;
+ \draw[gray,line width=1.25pt,->] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ;
+ \AxexTikz[Police=\small]{0,5,...,55}
+ \AxeyTikz[Police=\small]{0,30,...,210}
+\end{tikzpicture}
+~~
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \draw[gray,line width=1.25pt,->] ({\xmin-\axexOx},0) -- ({\xmax-\axexOx},0) ;
+ \draw[gray,line width=1.25pt,->] (0,{\ymin-\axeyOy}) -- (0,{\ymax-\axeyOy}) ;
+ \AxexTikz[Police=\small,HautGrad=0pt/4pt]{0,5,...,55}
+ \AxeyTikz[AffGrad=false,HautGrad=6pt]{0,30,...,210}
+\end{tikzpicture}
+\hfill~
+\end{codesortie}
+
+\subsection{Commandes annexes}
+
+\begin{codeinfo}
+Il existe, de manière marginale, quelques commandes complémentaires qui ne seront pas trop détaillées mais qui sont existent :
+
+\begin{itemize}
+ \item \ctex{FenetreTikz} qui restreint les tracés à la fenêtre (utile pour des courbes qui \textit{débordent}) ;
+ \item \ctex{FenetreSimpleTikz} qui permet d'automatiser le tracé des grilles/axes/graduations dans leurs versions par défaut, avec peu de paramétrages ;
+ \item \ctex{OrigineTikz} pour rajouter le libellé de l'origine si non affiché par les axes.
+\end{itemize}
+\end{codeinfo}
+
+\begin{codetex}[listing only]
+%code tikz
+\FenetreTikz %on restreint les tracés
+\FenetreSimpleTikz%
+ [<options>]<options axe Ox>{liste abscisses}<options axe Oy>{liste ordonnées}
+\end{codetex}
+
+\begin{codeidee}
+L'idée est de proposer, en \textit{complément}, une commande simplifiée pour tracer une courbe en \TikZ.
+\end{codeidee}
+
+\begin{codetex}[listing only]
+%...code tikz
+\CourbeTikz[<options>]{formule}{domaine}
+\end{codetex}
+
+\begin{codecles}
+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 le second mandataire est le domaine du tracé , sous la forme \ctex{valxmin:valxmax}.
+\end{itemize}
+\end{codecles}
+
+\begin{codetex}[listing only]
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5, %axe Ox
+ ymin=0,ymax=240,ygrille=30,ygrilles=30] %axe Oy
+ \FenetreSimpleTikz<Police=\small>{0,5,...,55}<Police=\small>{0,30,...,210} %repère
+ \CourbeTikz[line width=1.25pt,ForestGreen,samples=250]%
+ {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe
+\end{tikzpicture}
+\end{codetex}
+
+\begin{codesortie}
+\begin{tikzpicture}%
+ [x=0.1cm,y=0.0167cm, %unités
+ xmin=0,xmax=60,xgrille=5,xgrilles=5,ymin=0,ymax=240,ygrille=30,ygrilles=30]
+ \FenetreSimpleTikz<Police=\small>{0,5,...,55}<Police=\small>{0,30,...,210} %repère
+ \CourbeTikz[line width=1.25pt,ForestGreen,samples=250]%
+ {\x*\x*exp(-0.05*\x)+1}{0:60} %courbe
+\end{tikzpicture}
+\end{codesortie}
+
+\subsection{Repère non centré en O}
+
+\begin{codeidee}
+Parfois on est amené à travailler dans des repères qui n'ont 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$.
+
+\smallskip
+
+L'idée est donc d'utiliser les commandes précédentes, sans se soucier des éventuelles translations à effectuer !
+\end{codeidee}
+
+\begin{codetex}[]
+\begin{tikzpicture}%
+ [x=0.35cm,y=0.07cm,Ox=1992,xmin=1992,xmax=2010,%
+ xgrille=2,xgrilles=1,Oy=1640,ymin=1640,ymax=1710,ygrille=10,ygrilles=5]
+ \FenetreSimpleTikz<Annee,Police=\small>{1992,1994,...,2008}{1640,1650,...,1700}
+ \FenetreTikz
+ \CourbeTikz%
+ [line width=1.25pt,orange,samples=500]{-(\x-2000)*(\x-2000)+1700}{\xmin:\xmax}
+\end{tikzpicture}
+\end{codetex}
+
+\pagebreak
+
\section{L'outil \og SplineTikz \fg}
\subsection{Courbe d'interpolation}
@@ -3397,7 +3724,7 @@ Le package \ctex{pgfplots} peut être utilisé pour traiter ce genre de situatio
\subsection{Commandes, clés et options}
\begin{codeinfo}
-Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivantes sont à déclarer directement dans l'environnement \ctex{tikzpicture}, seules versions \og x \fg{} sont présentées ici:
+Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivantes sont à déclarer directement dans l'environnement \ctex{tikzpicture}, seules les versions \og x \fg{} sont présentées ici:
\begin{itemize}
\item \Cle{xmin}, stockée dans \ctex{\textbackslash{}xmin} ;\hfill{}défaut \Cle{-3}
@@ -3407,7 +3734,7 @@ Les \Cle{paramètres} nécessaires à la bonne utilisation des commandes suivant
\item \Cle{xgrilles}, stockée dans \ctex{\textbackslash{}xgrilles}, graduation secondaire.\hfill{}défaut \Cle{0.5}
\end{itemize}
-La fenêtre d'affichage (de sortie) sera donc \textit{portée} par le rectangle de coins $(xmin\,;\,ymin)$ et $(xmax\,;\,ymax)$ ; ce qui correspond en fait à la fenêtre \TikZ{} \textit{portée} par le rectangle de coins $(xmin-Ox\,;\,ymin-Oy)$ et $(xmax-Ox\,;\,ymax-Oy)$.
+La fenêtre d'affichage (de sortie) sera donc \textit{portée} par le rectangle de coins $(\text{xmin}\,;\,\text{ymin})$ et $(\text{xmax}\,;\,\text{ymax})$ ; ce qui correspond en fait à la fenêtre \TikZ{} \textit{portée} par le rectangle de coins $(xmin-Ox\,;\,ymin-Oy)$ et $(\text{xmax-Ox}\,;\,\text{ymax-Oy})$.
\smallskip
@@ -3531,7 +3858,7 @@ Cette commande permet de tracer les axes, avec des \Cle{clés} :
Ces commande permet de tracer les graduations des axes, avec des \Cle{clés} identiques pour les deux directions :
\begin{itemize}
- \item \Cle{Epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1.25pt}
+ \item \Cle{Epaisseur} qui est l'épaisseur des graduations ; \hfill~défaut \Cle{1pt}
\item \Cle{Police} qui est le style des labels des graduations ; \hfill~défaut \Cle{\textbackslash{}normalsize\textbackslash{}normalfont}
\item \Cle{PosGrad} qui est la position des graduations par rapport à l'axe ; \hfill~défaut \Cle{below} et \Cle{left}
\item \Cle{HautGrad} qui est la position des graduations (sous la forme \Cle{lgt} ou \Cle{lgta/lgtb}) ; \hfill~défaut \Cle{4pt}
@@ -5670,6 +5997,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.1|~:~~~~Ajout d'une section pour des repères en \TikZ{} (page \pageref{reperagetikz})
+
{\small \bverb|v 2.1.0|~:~~~~Calcul du seuil, en interne désormais (page \pageref{calcrecurr})
{\small \bverb| |~:~~~~Commande pour simplifier une racine carrée (page \pageref{simplracine})
diff --git a/macros/latex/contrib/proflycee/tex/ProfLycee.sty b/macros/latex/contrib/proflycee/tex/ProfLycee.sty
index 7efeb2040a..dd2d5b02f0 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/18 2.1.0 Aide pour l'utilisation de LaTeX en lycee]
+\ProvidesPackage{ProfLycee}[2022/12/28 2.1.1 Aide pour l'utilisation de LaTeX en lycee]
+% 2.1.1 Ajout d'une section pour les tracés de repère et courbe, en tikz
% 2.1.0 Ajout du calcul du seuil pour les suites récurrentes + racines de nombres décimaux + option pour pythontex
% 2.0.9 Ajouts de commandes pour générer des nombres et listes aléatoires
% 2.0.8 Ajout d'options pour stretch et fonte env python(s) (pas tous...)
@@ -1785,7 +1786,7 @@
}
\setKVdefault[PLaxextkz]{%
- Epaisseur=1.25pt,%
+ Epaisseur=1pt,%
Police=\normalsize\normalfont,%
PosGrad=below,%
HautGrad=4pt,%
@@ -1832,7 +1833,7 @@
}
\setKVdefault[PLaxeytkz]{%
- Epaisseur=1.25pt,%
+ Epaisseur=1pt,%
Police=\normalsize\normalfont,%
PosGrad=left,%
HautGrad=4pt,%
@@ -1883,7 +1884,7 @@
}
\setKVdefault[PLaxestkz]{%
- Epaisseur=1.25pt,%
+ Epaisseur=1pt,%
Police=\normalsize\normalfont,%
Labelx=$x$,%
Labely=$y$,%
diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md
index dc8ac843f8..8f562a8716 100644
--- a/macros/latex/contrib/tagpdf/README.md
+++ b/macros/latex/contrib/tagpdf/README.md
@@ -1,5 +1,5 @@
#tagpdf — A package to create tagged pdf
-Packageversion: 0.98
+Packageversion: 0.98a
Packagedate: 2022/12/22
Author: Ulrike Fischer
diff --git a/macros/latex/contrib/tagpdf/acrobat.png b/macros/latex/contrib/tagpdf/acrobat.png
new file mode 100644
index 0000000000..6ffe1ba29d
--- /dev/null
+++ b/macros/latex/contrib/tagpdf/acrobat.png
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
index 47369b519b..e8fac1f6ec 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*luatex>
-\ProvidesExplFile {tagpdf-luatex.def} {2022-12-22} {0.98}
+\ProvidesExplFile {tagpdf-luatex.def} {2022-12-22} {0.98a}
{tagpdf~driver~for~luatex}
% \end{macrocode}
% \section{Loading the lua}
@@ -158,7 +158,7 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.98", --TAGVERSION
+ version = "0.98a", --TAGVERSION
date = "2022-12-22", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
index 52113f348f..6ec0e6aadc 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{documentation}
% \section{Commands}
@@ -295,7 +295,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-checks-code} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-checks-code} {2022-12-22} {0.98a}
{part of tagpdf - code related to checks, conditionals, debugging and messages}
%</header>
% \end{macrocode}
@@ -546,8 +546,7 @@
%
% \subsection{checks for active tagging}
% \begin{macro}[TF]{\@@_check_if_active_mc:,\@@_check_if_active_struct:}
-% Structures must have a tag, so we check if the S entry is in the property.
-% It is an error if this is missing. The argument is a number.
+% This checks if mc are active.
% \begin{macrocode}
\prg_new_conditional:Npnn \@@_check_if_active_mc: {T,F,TF}
{
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
index 6dfd5b74a4..b0bb3a8290 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-data.dtx b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
index 560856bf28..379c2114d7 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-data.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-data.dtx
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{documentation}
% This files contains a various data files which are read in
@@ -60,7 +60,7 @@
% It lists the new tag, the rolemap and the namespace of the rolemap.
% \begin{macrocode}
%<*ns-latex>
-%% \ProvidesExplFile {tagpdf-ns-latex.def} {2022-12-22} {0.98}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2022-12-22} {0.98a}
%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
title, Title, pdf2,
part, Title, pdf2,
@@ -86,7 +86,7 @@ footnotelabel,Lbl, pdf2,
% It is bound to change
% \begin{macrocode}
%<*ns-latex-book>
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2022-12-22} {0.98}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2022-12-22} {0.98a}
%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
chapter, H1,pdf2,
section, H2,pdf2,
@@ -102,7 +102,7 @@ subparagraph, H6,pdf2,
% It is bound to change a lot!
% \begin{macrocode}
%<*ns-latex-inline>
-%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2022-12-22} {0.98}
+%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2022-12-22} {0.98a}
%% {latex-inline} {https://www.latex-project.org/ns/inline/2022}{}
chapter, Span, pdf2,
section, Span, pdf2,
@@ -116,120 +116,131 @@ P, Span, pdf2,
% \section{The pdf namespace data}
% \begin{macrocode}
%<*ns-pdf>
-%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2022-12-22} {0.98}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2022-12-22} {0.98a}
%% {pdf} {http://iso.org/pdf/ssn}{}
-StructTreeRoot,,,D,
-Document,,,D,
-Part,,,G,
-Sect,,,G,
-Div,,,G,
-Caption,,,GB,
-NonStruct,,,G,
-H,,,B,
-H1,,,B,
-H2,,,B,
-H3,,,B,
-H4,,,B,
-H5,,,B,
-H6,,,B,
-P,,,B,
-L,,,BI,
-LI,,,L,
-Lbl,,,I,
-LBody,,,L,
-Table,,,B,
-TR,,,T,
-TH,,,T,
-TD,,,T,
-THead,,,T,
-TBody,,,T,
-TFoot,,,T,
-Span,,,I,
-Link,,,GBI,
-Annot,,,GBI,
-Figure,,,GBI,
-Formula,,,GBI,
-Form,,,GBI,
-Ruby,,,I,
-RB,,,I,
-RT,,,I,
-Warichu,,,I,
-WT,,,I,
-WP,,,I,
-Artifact,,,GBI,
-Art,,,,G, % only pdf, types unclear, needs correction later
-BlockQuote,,,G, %or GB?
-TOC,,,G,
-TOCI,,,G,
-Index,,,G,
-Private,,,G,
-Quote,,,I,
-Note,,,GBI, % I in reference, but
-Reference,,,B, %
-BibEntry,,,B, %
-Code,,,I, %
+StructTreeRoot,StructTreeRoot,pdf,D,
+Document,Document,pdf,D,
+Part,Part,pdf,G,
+Sect,Sect,pdf,G,
+Div,Div,pdf,G,
+Caption,Caption,pdf,GB,
+NonStruct,NonStruct,pdf,G,
+H,H,pdf,B,
+H1,H1,pdf,B,
+H2,H2,pdf,B,
+H3,H3,pdf,B,
+H4,H4,pdf,B,
+H5,H5,pdf,B,
+H6,H6,pdf,B,
+P,P,pdf,B,
+L,L,pdf,BI,
+LI,LI,pdf,L,
+Lbl,Lbl,pdf,I,
+LBody,LBody,pdf,L,
+Table,Table,pdf,B,
+TR,TR,pdf,T,
+TH,TH,pdf,T,
+TD,TD,pdf,T,
+THead,THead,pdf,T,
+TBody,TBody,pdf,T,
+TFoot,TFoot,pdf,T,
+Span,Span,pdf,I,
+Link,Link,pdf,GBI,
+Annot,Annot,pdf,GBI,
+Figure,Figure,pdf,GBI,
+Formula,Formula,pdf,GBI,
+Form,Form,pdf,GBI,
+Ruby,Ruby,pdf,I,
+RB,RB,pdf,I,
+RT,RT,pdf,I,
+Warichu,Warichu,pdf,I,
+WT,WT,pdf,I,
+WP,WP,pdf,I,
+Artifact,Artifact,pdf,GBI,
+Art,Art,pdf,,G, % only pdf, types unclear, needs correction later
+BlockQuote,BlockQuote,pdf,G, %or GB?
+TOC,TOC,pdf,G,
+TOCI,TOCI,pdf,G,
+Index,Index,pdf,G,
+Private,Private,pdf,G,
+Quote,Quote,pdf,I,
+Note,Note,pdf,GBI, % I in reference, but
+Reference,Reference,pdf,B, %
+BibEntry,BibEntry,pdf,B, %
+Code,Code,pdf,I, %
+DocumentFragment,Art,pdf,D, %from pdf2
+Aside,Note,pdf,G,
+H7,H6,pdf,B,
+H8,H6,pdf,B,
+H9,H6,pdf,B,
+H10,H6,pdf,B,
+Title,P,pdf,GB,
+FENote,Note,pdf,GBI,
+Sub,Span,pdf,I,
+Em,Span,pdf,I,
+Strong,Span,pdf,I,
%</ns-pdf>
% \end{macrocode}
% \section{The pdf 2.0 namespace data}
% \begin{macrocode}
%<*ns-pdf2>
-%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2022-12-22} {0.98}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2022-12-22} {0.98a}
%% {pdf2} {http://iso.org/pdf2/ssn}{}
-Document,,,D,
-Part,,,G,
-Sect,,,G,
-Div,,,G,
-Caption,,,GB,
-NonStruct,,,G,
-H,,,B,
-H1,,,B,
-H2,,,B,
-H3,,,B,
-H4,,,B,
-H5,,,B,
-H6,,,B,
-P,,,B,
-L,,,BI,
-LI,,,L,
-Lbl,,,I,
-LBody,,,L,
-Table,,,B,
-TR,,,T,
-TH,,,T,
-TD,,,T,
-THead,,,T,
-TBody,,,T,
-TFoot,,,T,
-Span,,,I,
-Link,,,GBI,
-Annot,,,GBI,
-Figure,,,GBI,
-Formula,,,GBI,
-Form,,,GBI,
-Ruby,,,I,
-RB,,,I,
-RT,,,I,
-Warichu,,,I,
-WT,,,I,
-WP,,,I,
-Artifact,,,GBI,
-DocumentFragment,Art, pdf,D, %rest only pdf2
-Aside, Note, pdf,G,
-H7, H6, pdf,B,
-H8, H6, pdf,B,
-H9, H6, pdf,B,
-H10, H6, pdf,B,
-Title, P, pdf,GB,
-FENote, Note, pdf,GBI,
-Sub, Span, pdf,I,
-Em, Span, pdf,I,
-Strong, Span, pdf,I,
+Document,Document,pdf2,D,
+Part,Part,pdf2,G,
+Sect,Sect,pdf2,G,
+Div,Div,pdf2,G,
+Caption,Caption,pdf2,GB,
+NonStruct,NonStruct,pdf2,G,
+H,H,pdf2,B,
+H1,H1,pdf2,B,
+H2,H2,pdf2,B,
+H3,H3,pdf2,B,
+H4,H4,pdf2,B,
+H5,H5,pdf2,B,
+H6,H6,pdf2,B,
+P,P,pdf2,B,
+L,L,pdf2,BI,
+LI,LI,pdf2,L,
+Lbl,Lbl,pdf2,I,
+LBody,LBody,pdf2,L,
+Table,Table,pdf2,B,
+TR,TR,pdf2,T,
+TH,TH,pdf2,T,
+TD,TD,pdf2,T,
+THead,THead,pdf2,T,
+TBody,TBody,pdf2,T,
+TFoot,TFoot,pdf2,T,
+Span,Span,pdf2,I,
+Link,Link,pdf2,GBI,
+Annot,Annot,pdf2,GBI,
+Figure,Figure,pdf2,GBI,
+Formula,Formula,pdf2,GBI,
+Form,Form,pdf2,GBI,
+Ruby,Ruby,pdf2,I,
+RB,RB,pdf2,I,
+RT,RT,pdf2,I,
+Warichu,Warichu,pdf2,I,
+WT,WT,pdf2,I,
+WP,WP,pdf2,I,
+Artifact,Artifact,pdf2,GBI,
+DocumentFragment,DocumentFragment,pdf2,D, %rest only pdf2
+Aside,Aside,pdf2,G,
+H7,H7,pdf2,B,
+H8,H8,pdf2,B,
+H9,H9,pdf2,B,
+H10,H10,pdf2,B,
+Title,Title,pdf2,GB,
+FENote,FENote,pdf2,GBI,
+Sub,Sub,pdf2,I,
+Em,Em,pdf2,I,
+Strong,Strong,pdf2,I,
%</ns-pdf2>
% \end{macrocode}
% \section{The mathml namespace data}
% \begin{macrocode}
%<*ns-mathml>
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2022-12-22} {0.98}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2022-12-22} {0.98a}
% {mathml}{http://www.w3.org/1998/Math/MathML}{}
abs,,,
and,,,
@@ -464,7 +475,7 @@ xor,,,
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child>
-%% \ProvidesExplFile {tagpdf-parent-child.csv} {2022-12-22} {0.98}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2022-12-22} {0.98a}
,,,StructTreeRoot,Document,Art,Part,Div,Sect,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,MC
Document,both,document level,1,0..n,∅,‡,‡,∅,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅
Art,1.7,grouping,∅,0..n,∅,‡,‡,0..n,0..n,‡,∅,∅,∅,0..n,∅,0..n,∅,∅,∅,0..1,0..1,∅,∅,∅,0..n,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅,∅,0..n,0..n,∅,∅,∅,0..n,0..n,∅,∅
@@ -519,7 +530,7 @@ MC,both,---,∅,∅,∅,∅,∅,∅,0..n,‡,∅,∅,∅,0..n,0..n,0..n,0..n,0..
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child-2>
-%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2022-12-22} {0.98}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2022-12-22} {0.98a}
,,,StructTreeRoot,Document,DocumentFragment,Art,Part,Div,Sect,Aside,BlockQuote,NonStruct,TOC,TOCI,Index,Private,Title,Sub,Quote,Note,Reference,BibEntry,P,Hn,H,Lbl,Code,Em,Strong,Span,Link,Annot,Form,Ruby,RB,RT,RP,Warichu,WT,WP,FENote,L,LI,LBody,Table,TR,TH,TD,THead,TBody,TFoot,Caption,Figure,Formula,math,mathml,Artifact,MC
Document,both,document level,1,0..n,0..n,∅,‡,‡,∅,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,0..n,∅
DocumentFragment,2.0,document level,∅,0..n,0..n,0..n,‡,‡,0..n,0..n,0..n,‡,∅,∅,∅,0..n,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅*,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅,∅*,∅,∅,∅,∅,0..n,∅
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
index ea460e0104..573604fa87 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{documentation}
% \end{documentation}
@@ -55,11 +55,11 @@
% \begin{macrocode}
%<@@=tag>
%<*generic>
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2022-12-22} {0.98a}
{part of tagpdf - code related to marking chunks - generic mode}
%</generic>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-generic} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-debug-generic} {2022-12-22} {0.98a}
{part of tagpdf - debugging code related to marking chunks - generic mode}
%</debug>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
index ca8645e76c..6195218abf 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{implementation}
% The code is splitted into three parts: code shared by all engines,
@@ -86,7 +86,7 @@
% \begin{macrocode}
%<@@=tag>
%<*luamode>
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2022-12-22} {0.98a}
{tagpdf - mc code only for the luamode }
%</luamode>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
index 2e49c84725..66ad8a922c 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -174,7 +174,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-mc-code-shared} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-mc-code-shared} {2022-12-22} {0.98a}
{part of tagpdf - code related to marking chunks -
code shared by generic and luamode }
%</header>
diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
index b17515882e..d24fae960e 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{documentation}
% \begin{function}
@@ -90,7 +90,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-roles-code} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-roles-code} {2022-12-22} {0.98a}
{part of tagpdf - code related to roles and structure names}
%</header>
% \end{macrocode}
@@ -464,6 +464,26 @@
\cs_generate_variant:Nn \@@_role_add_tag:nn {VV,ne}
% \end{macrocode}
% \end{macro}
+%
+% For the parent-child test we must be able to get the role.
+% We use the same number of arguments as for the 2.0 command.
+% If there is no role, we assume a standard tag.
+% \begin{macro}{\@@_role_get:nnN}
+% \begin{macrocode}
+\pdf_version_compare:NnT < {2.0}
+ {
+ \cs_new:Npn \@@_role_get:nnN #1#2#3
+ {
+ \prop_get:NnNF \g_@@_role_rolemap_prop {#1}#3
+ {
+ \tl_set:Nn #3 {#1}
+ }
+ }
+ \cs_generate_variant:Nn \@@_role_get:nnN {VVN}
+ }
+
+% \end{macrocode}
+% \end{macro}
% \subsubsection{The pdf 2.0 version}
% \begin{macro}{\@@_role_add_tag:nnnn}
% The pdf 2.0 version takes four arguments:
@@ -481,15 +501,21 @@
{
\tl_set:Nn\l_@@_tmpa_tl{--UNKNOWN--}
}
- \@@_role_alloctag:nnV {#1}{#2}\l_@@_tmpa_tl
- \pdfdict_gput:nnx {g_@@_role/RoleMapNS_#2_dict}{#1}
- {
- [
- \pdf_name_from_unicode_e:n{#3}
- \c_space_tl
- \pdf_object_ref:n {tag/NS/#4}
- ]
- }
+ \@@_role_alloctag:nnV {#1}{#2}\l_@@_tmpa_tl
+% \end{macrocode}
+% Do not remap standard tags. TODO add warning?
+% \begin{macrocode}
+ \tl_if_in:nnF {-pdf-pdf2-mathml-}{-#2-}
+ {
+ \pdfdict_gput:nnx {g_@@_role/RoleMapNS_#2_dict}{#1}
+ {
+ [
+ \pdf_name_from_unicode_e:n{#3}
+ \c_space_tl
+ \pdf_object_ref:n {tag/NS/#4}
+ ]
+ }
+ }
% \end{macrocode}
% We resolve rolemapping recursively so that all targets are stored as standard
% tags for the tests.
@@ -511,6 +537,28 @@
% \end{macrocode}
% \end{macro}
%
+% For the parent-child test we must be able to get the role.
+% We use the same number of arguments as for the <2.0 command (and assume
+% that we don't need a name space)%
+% \begin{macro}{\@@_role_get:nnN}
+% \begin{macrocode}
+\pdf_version_compare:NnF < {2.0}
+ {
+ \cs_new:Npn \@@_role_get:nnN #1#2#3
+ {
+ \prop_get:cnNTF {g_@@_role_NS_#2_prop} {#1}\l_@@_get_tmpc_tl
+ {
+ \tl_set:Nx #3 {\exp_last_unbraced:NV\use_i:nn \l_@@_get_tmpc_tl}
+ }
+ {
+ \tl_set:Nn #3 {#1}
+ }
+ }
+ \cs_generate_variant:Nn \@@_role_get:nnN {VVN}
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Helper command to read the data from files}
% In this section we setup the helper command to read namespace files.
@@ -547,7 +595,7 @@
\tl_set:Nn \l_@@_tmpa_tl {#5}
}
\@@_role_alloctag:nnV {#2}{#1}\l_@@_tmpa_tl
- \tl_if_empty:nF {#3}
+ \tl_if_eq:nnF {#2}{#3}
{
\@@_role_add_tag:nn {#2}{#3}
}
@@ -581,9 +629,9 @@
\bool_lazy_and:nnT
{ ! \tl_if_empty_p:n {#3} }{! \str_if_eq_p:nn {#1}{pdf2}}
{
- \@@_role_add_tag:nnnn {#2}{#1}{#3}{#4}
- \prop_gput:cnn {g_@@_role_NS_#1_prop} {#2}{{#3}{#4}}
+ \@@_role_add_tag:nnnn {#2}{#1}{#3}{#4}
}
+ \prop_gput:cnn {g_@@_role_NS_#1_prop} {#2}{{#3}{#4}}
}
}
}
@@ -855,11 +903,14 @@
\seq_pop_left:NN \l_@@_role_tmpa_seq\l_@@_get_tmpc_tl
\seq_map_inline:Nn\l_@@_role_tmpa_seq
{
- \tl_if_in:nnF {-Part-Div-NonStruct-}{-##1-}
+ \tl_set:Nx\l_@@_tmpa_tl { \use_ii:nn ##1 }
+ \exp_args:Nne
+ \tl_if_in:nnF {-Part-Div-NonStruct-}{-\l_@@_tmpa_tl-}
{
\tl_set:Nn\l_@@_role_real_parent_tl {##1}
\int_zero:N\l_@@_tmpa_int
- \@@_role_get_parent_child_rule:nnN {##1}{#2}#3
+ \exp_args:NV
+ \@@_role_get_parent_child_rule:nnN \l_@@_tmpa_tl{#2}#3
\int_set:Nn\l_@@_tmpa_int{1}
\seq_map_break:
}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
index ad5e17ff5b..26602a96b0 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{documentation}
% \begin{function}{interwordspace (setup-key)}
@@ -64,7 +64,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-space-code} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-space-code} {2022-12-22} {0.98a}
{part of tagpdf - code related to real space chars}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
index 6f6d60ba4b..1299cc10e9 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -242,7 +242,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-struct-code} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-struct-code} {2022-12-22} {0.98a}
{part of tagpdf - code related to storing structure}
%</header>
% \end{macrocode}
@@ -294,7 +294,7 @@
% numbered stack, lets build a tag stack too.
% \begin{macrocode}
\seq_new:N \g_@@_struct_tag_stack_seq
-\seq_gpush:Nn \g_@@_struct_tag_stack_seq {Root}
+\seq_gpush:Nn \g_@@_struct_tag_stack_seq {{Root}{StructTreeRoot}}
% \end{macrocode}
% \end{variable}
%
@@ -546,7 +546,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\cc}
+% \begin{macro}{\@@_struct_get_tag_info:nNN}
% We also need a way to get the tag info back from parent structures.
% \begin{macrocode}
\cs_new_protected:Npn \@@_struct_get_tag_info:nNN #1 #2 #3
@@ -1226,7 +1226,12 @@
}
}
\seq_gpush:NV \g_@@_struct_stack_seq \c@g_@@_struct_abs_int
- \seq_gpush:NV \g_@@_struct_tag_stack_seq \g_@@_struct_tag_tl
+ \@@_role_get:VVN
+ \g_@@_struct_tag_tl
+ \g_@@_struct_tag_NS_tl
+ \l_@@_get_tmpc_tl
+ \seq_gpush:Nx \g_@@_struct_tag_stack_seq
+ {{\g_@@_struct_tag_tl}{\l_@@_get_tmpc_tl}}
\tl_gset:NV \g_@@_struct_stack_current_tl \c@g_@@_struct_abs_int
%\seq_show:N \g_@@_struct_stack_seq
\bool_if:NF
@@ -1314,7 +1319,8 @@
}
\seq_get:NNT \g_@@_struct_tag_stack_seq \l_@@_tmpa_tl
{
- \tl_gset:NV \g_@@_struct_tag_tl \l_@@_tmpa_tl
+ \tl_gset:Nx \g_@@_struct_tag_tl
+ { \exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl }
}
%<debug>\@@_debug_struct_end_insert:
}
@@ -1474,7 +1480,7 @@
% \section{Attributes and attribute classes}
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {tagpdf-attr-code} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-attr-code} {2022-12-22} {0.98a}
{part of tagpdf - code related to attributes and attribute classes}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
index ecbd96f04e..f8c7aa27d7 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
@@ -47,13 +47,13 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-tree-code} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-tree-code} {2022-12-22} {0.98a}
{part of tagpdf - code related to writing trees and dictionaries to the pdf}
%</header>
% \end{macrocode}
@@ -348,9 +348,12 @@
{
\prop_map_inline:Nn\g_@@_role_rolemap_prop
{
- \pdfdict_gput:nnx {g_@@_role/RoleMap_dict}
- {##1}
- {\pdf_name_from_unicode_e:n{##2}}
+ \tl_if_eq:nnF {##1}{##2}
+ {
+ \pdfdict_gput:nnx {g_@@_role/RoleMap_dict}
+ {##1}
+ {\pdf_name_from_unicode_e:n{##2}}
+ }
}
\pdf_object_write:nnx { @@/tree/rolemap }{dict}
{
@@ -418,7 +421,7 @@
\cs_new_protected:Npn \@@_tree_write_namespaces:
{
\pdf_version_compare:NnF < {2.0}
- {
+ {
\prop_map_inline:Nn \g_@@_role_NS_prop
{
\pdfdict_if_empty:nF {g_@@_role/RoleMapNS_##1_dict}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
index a70c14bb21..a2a0475ccf 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Version 0.98, released 2022-12-22}
+% \date{Version 0.98a, released 2022-12-22}
% \maketitle
% \begin{documentation}
% \section{Setup commands}
@@ -246,7 +246,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-user} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-user} {2022-12-22} {0.98a}
{tagpdf - user commands}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx
index d9550ab7a7..59795d78a3 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf.dtx
@@ -92,7 +92,7 @@
% \begin{macrocode}
%<@@=tag>
%<*package>
-\ProvidesExplPackage {tagpdf} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf} {2022-12-22} {0.98a}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -118,7 +118,7 @@
% \end{macrocode}
%<*debug>
% \begin{macrocode}
-\ProvidesExplPackage {tagpdf-debug} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-debug} {2022-12-22} {0.98a}
{ debug code for tagpdf }
\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
% \end{macrocode}
@@ -159,7 +159,7 @@
% \end{macrocode}
% \begin{macrocode}
%<*base>
-\ProvidesExplPackage {tagpdf-base} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdf-base} {2022-12-22} {0.98a}
{part of tagpdf - provide base, no-op versions of the user commands }
%</base>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf
index a04314fa71..08ec9e590c 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex
index c1fe9d2d35..fc096c338d 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf.tex
@@ -4,7 +4,7 @@
\DocumentMetadata{pdfversion=2.0,lang=en-UK,testphase=phase-II,testphase=toc-tagging,testphase=sec-tagging,pdfstandard=a-2b}
\makeatletter
-\def\UlrikeFischer@package@version{0.98}
+\def\UlrikeFischer@package@version{0.98a}
\def\UlrikeFischer@package@date{2022-12-22}
\makeatother
@@ -203,7 +203,9 @@ support \PDF{} 2.0. One example is the support for associated files, another the
The package doesn't try to suppress all 2.0 features if an older \PDF{} version is produced. It normally doesn't harm if a \PDF{} contains keys unknown in its version and it makes the code faster and easier to maintain if there aren't too many tests and code pathes; so for example associated files will always be added. But tests could be added in case this leads to incompabilities.
-It should be noted that some tools don't like \PDF{}~2.0. PAC3 for example simply crashes, and pdftk will create a \PDF{}~1.0 from it. This makes testing \PDF{}~2.0 files a bit of a challenge.
+It should be noted that some tools don't like \PDF{}~2.0. PAC~3 for example
+simply crashes, and pdftk will create a \PDF{}~1.0 from it. This makes
+testing \PDF{}~2.0 files a bit of a challenge.
\subsection{Validation}
@@ -223,10 +225,13 @@ One must check how good the accessibility is \emph{practically}.
\end{itemize}
-Syntax validation and formal standard validation can be done with preflight of the (non-free) adobe acrobat.
-It can also be done also with the free \PDF{} Accessibility Checker (PAC~3) \parencite{pac3}.
-There is also the validator veraPDF \parencite{verapdf}.
-A rather new and quite useful tool is \enquote{Next Generation PDF} \parencite{ngpdf}, a browser application which converts a tagged PDF to html, allows to inspect its structure and also to edit the structure.
+Syntax validation and formal standard validation can be done with preflight
+of the (non-free) adobe acrobat. It can also be done also with the free
+\PDF{} Accessibility Checker (PAC~3) \parencite{pac3}. There is also the
+validator veraPDF \parencite{verapdf}. A rather new and quite useful tool is
+\enquote{Next Generation PDF} \parencite{ngpdf}, a browser application which
+converts a tagged PDF to html, allows to inspect its structure and also to
+edit the structure.
Practical validation is naturally the more complicated part. It needs screen reader, users which actually knows how to handle them, can test documents and can report where a \PDF{} has real accessibility problems.
@@ -459,9 +464,23 @@ can improve the html export.
\subsection{Proof of concept: the tagging of the documentation itself}
-Starting with version 0.6 the documentation itself has been tagged. The tagging wasn't (and isn't) in no way perfect. The validator from Adobe didn't complain, but PAX3 wanted alternative text for all links (no idea why) and so I put everywhere simple text like \enquote{link} and \enquote{ref}. The links to footnotes gave warnings, so I disabled them. I used types from the \PDF{} version 1.7, mostly as I have no idea what should be used for code in 2.0. Margin notes were simply wrong \ldots
+Starting with version 0.6 the documentation itself has been tagged. The
+tagging wasn't (and isn't) in no way perfect. The validator from Adobe didn't
+complain, but PAC~3 wanted alternative text for all links (no idea why) and
+so I put everywhere simple text like \enquote{link} and \enquote{ref}. The
+links to footnotes gave warnings, so I disabled them. I used types from the
+\PDF{} version 1.7, mostly as I had no idea what should be used for code in
+2.0. Margin notes were simply wrong \ldots
+
+The tagging has been improved and automated over time in sync with
+improvements and new features in the LaTeX kernel and the \PDF\ management
+code and is now much better. Sadly the output of the validators don't quite
+reflect the improvements. The documentation uses now \PDF~2.0 and PAC~3
+can't handle this, it claims that the file is damaged. The Adobe validator
+has a bug and doesn't like the (valid) use of the \texttt{Lbl} tag for the
+section numbers (see figure~\ref{fig:adobe}).
+
-The tagging has been improved and automated over time in sync with improvements and new features in the LaTeX kernel and the \PDF\ management code.
But even if the documentation passed the tests of the validators: as mentioned above passing a formal test doesn't mean that the content is really good and usable. I have a lot doubts that the code parts are really readable. The bibliography and the references must be improved. The user commands used for the tagging and also some of the patches used are still rather crude. So there is lot space for improvement.
@@ -471,12 +490,29 @@ Be aware that to create the tagged version a current lualatex-dev and a current
\tagpdfparaOff
-\tagstructbegin{tag=Figure,alt=PAC3 report,attribute=bbox}\tagmcbegin{tag=Figure}
+\tagstructbegin{tag=Figure,alt=PAC 3
+report,attribute=bbox}\tagmcbegin{tag=Figure}
\includegraphics{pac3}
\tagmcend\tagstructend
\tagpdfparaOn
+\begin{figure}
+\tagpdfparaOff
+
+\tagstructbegin{tag=Figure,alt={Adobe report},attribute=bbox}%
+\tagmcbegin{}%
+\includegraphics{acrobat}
+\tagmcend
+
+\tagstructbegin{tag=Caption}\tagmcbegin{}\caption{Adobe Acrobat complaining
+about the \texttt{Lbl} use}\label{fig:adobe} \tagmcend\tagstructend
+\tagstructend
+
+\tagpdfparaOn
+\end{figure}
+
+
\section{Loading}
The package requires the new PDF management. With a current \LaTeX{} (2022-06-01 or newer)
diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
index 9e39ec1547..cc4eb9f4b7 100644
--- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
@@ -1,5 +1,5 @@
%\RequirePackage[enable-debug]{expl3}[2018/06/14]
-\ProvidesExplPackage {tagpdfdocu-patches} {2022-12-22} {0.98}
+\ProvidesExplPackage {tagpdfdocu-patches} {2022-12-22} {0.98a}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}
@@ -10,17 +10,16 @@
\tag_mc_end_push:
\tag_struct_begin:n{tag=Span,alt=TeX,actualtext=TeX}
\tagmcbegin{}
- \kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@
+ T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@
\tagmcend
\tag_struct_end:
\tag_mc_begin_pop:n{}}
-\DeclareRobustCommand{\LaTeX}{
+\DeclareRobustCommand{\LaTeX}{L\kern-.36em%
{
- \tag_mc_end_push:
- \tag_struct_begin:n{tag=Span,alt=LaTeX,actualtext=LaTeX}
- \tagmcbegin{}
- L\kern-.36em%
- \sbox\z@ T%
+ \tag_mc_end_push:
+ \tag_struct_begin:n{tag=Span,alt=LaTeX,actualtext=LaTeX}
+ \tagmcbegin{}
+ \sbox\z@ T%
\vbox to\ht\z@{\hbox{\check@mathfonts
\fontsize\sf@size\z@
\math@fontsfalse\selectfont
@@ -28,13 +27,11 @@
\vss}%
}%
\kern-.15em%
- \TeX
- \tagmcend
- \tag_struct_end:
- \tag_mc_begin_pop:n{}
- }
-
-
+ T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@
+ \tagmcend
+ \tag_struct_end:
+ \tag_mc_begin_pop:n{}
+ }
% textbf
\AddToHook{cmd/textbf/before}
diff --git a/macros/latex/contrib/zref-clever/CHANGELOG.md b/macros/latex/contrib/zref-clever/CHANGELOG.md
index ae677ca311..a11671dfed 100644
--- a/macros/latex/contrib/zref-clever/CHANGELOG.md
+++ b/macros/latex/contrib/zref-clever/CHANGELOG.md
@@ -1,6 +1,20 @@
# Changelog
-## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.3.1...HEAD)
+## [Unreleased](https://github.com/gusbrs/zref-clever/compare/v0.3.2...HEAD)
+
+## [v0.3.2](https://github.com/gusbrs/zref-clever/compare/v0.3.1...v0.3.2) (2022-12-27)
+
+### Added
+- Italian localization (see issue
+ [#11](https://github.com/gusbrs/zref-clever/issues/11)).
+- Localization guidelines for contributors (in the Code documentation).
+- Document UTF-8 input encoding requirement.
+- Work-around for `beamer` in the User manual.
+
+### Changed
+- Improved consistency of the Dutch language file with `babel` captions (see
+ PRs [#12](https://github.com/gusbrs/zref-clever/pull/12) and
+ [#13](https://github.com/gusbrs/zref-clever/pull/13)).
## [v0.3.1](https://github.com/gusbrs/zref-clever/compare/v0.3.0...v0.3.1) (2022-05-28)
diff --git a/macros/latex/contrib/zref-clever/zref-clever-code.pdf b/macros/latex/contrib/zref-clever/zref-clever-code.pdf
index ae52fa41e2..8b4cad1280 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.dtx b/macros/latex/contrib/zref-clever/zref-clever.dtx
index e0d04a1264..8604bd5c39 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.dtx
+++ b/macros/latex/contrib/zref-clever/zref-clever.dtx
@@ -69,8 +69,8 @@
% \NewDocumentCommand\githubPR{m}{^^A
% PR~\href{https://github.com/gusbrs/zref-clever/pull/#1}{\##1}}
%
-% ^^A Currently just for keeping semantic markup on this.
% \NewDocumentCommand\contributor{m}{#1}
+% \NewDocumentCommand\username{m}{`\texttt{#1}'}
%
% \NewDocumentCommand\opt{m}{\texttt{#1}}
%
@@ -165,15 +165,17 @@
%
% Identify the package.
% \begin{macrocode}
-\ProvidesExplPackage {zref-clever} {2022-05-28} {0.3.1}
+\ProvidesExplPackage {zref-clever} {2022-12-27} {0.3.2}
{Clever LaTeX cross-references based on zref}
% \end{macrocode}
%
%
% \section{Dependencies}
%
-% Required packages. Besides these, \pkg{zref-hyperref}, \pkg{zref-titleref},
-% and \pkg{zref-check} may also be loaded depending on user options.
+% Required packages. Besides these, \pkg{zref-hyperref} may also be loaded
+% depending on user options. \pkg{zref-clever} also requires UTF-8 input
+% encoding (see discussion with \contributor{David Carlisle} at
+% \url{https://chat.stackexchange.com/transcript/message/62644791#62644791}).
%
% \begin{macrocode}
\RequirePackage { zref-base }
@@ -3514,7 +3516,7 @@
% polluting the markup too much given that, for languages that need it, it may
% get to be used frequently.
%
-% \contributor{\texttt{@samcarter}} and \contributor{Alan Munn} provided
+% \contributor{\username{samcarter}} and \contributor{Alan Munn} provided
% useful comments about declension on the TeX.SX chat. Also,
% \contributor{Florent Rougon}'s efforts in this area, with the \pkg{xcref}
% package (\url{https://github.com/frougon/xcref}), have been an insightful
@@ -6862,31 +6864,31 @@
! \l_@@_link_star_bool
}
{
- \exp_not:N \group_begin:
- \exp_not:V \l_@@_reffont_tl
\seq_item:Nn #2 { 1 }
\@@_hyperlink:nnn
{ \@@_extract_url_unexp:n {#1} }
{ \@@_extract_unexp:nnn {#1} { anchor } { } }
{
\seq_item:Nn #2 { 2 }
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
\@@_extract_unexp:nvn {#1}
{ l_@@_ref_property_tl } { }
+ \exp_not:N \group_end:
\seq_item:Nn #2 { 3 }
}
\seq_item:Nn #2 { 4 }
- \exp_not:N \group_end:
}
{
- \exp_not:N \group_begin:
- \exp_not:V \l_@@_reffont_tl
\seq_item:Nn #2 { 1 }
\seq_item:Nn #2 { 2 }
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
\@@_extract_unexp:nvn {#1}
{ l_@@_ref_property_tl } { }
+ \exp_not:N \group_end:
\seq_item:Nn #2 { 3 }
\seq_item:Nn #2 { 4 }
- \exp_not:N \group_end:
}
}
{ \@@_ref_default: }
@@ -6911,29 +6913,29 @@
! \l_@@_link_star_bool
}
{
- \exp_not:N \group_begin:
- \exp_not:V \l_@@_reffont_tl
\seq_item:Nn #3 { 1 }
\@@_hyperlink:nnn
{ \@@_extract_url_unexp:n {#1} }
{ \@@_extract_unexp:nnn {#1} { anchor } { } }
{
\seq_item:Nn #3 { 2 }
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
\exp_not:n {#2}
+ \exp_not:N \group_end:
\seq_item:Nn #3 { 3 }
}
\seq_item:Nn #3 { 4 }
- \exp_not:N \group_end:
}
{
- \exp_not:N \group_begin:
- \exp_not:V \l_@@_reffont_tl
\seq_item:Nn #3 { 1 }
\seq_item:Nn #3 { 2 }
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
\exp_not:n {#2}
+ \exp_not:N \group_end:
\seq_item:Nn #3 { 3 }
\seq_item:Nn #3 { 4 }
- \exp_not:N \group_end:
}
}
}
@@ -6963,7 +6965,6 @@
{ \l_@@_type_first_label_tl }
{ \l_@@_ref_property_tl }
{
- \exp_not:N \group_begin:
\@@_hyperlink:nnn
{
\@@_extract_url_unexp:V
@@ -6979,19 +6980,17 @@
\exp_not:V \l_@@_type_name_tl
\exp_not:N \group_end:
\exp_not:V \l_@@_namesep_tl
- \exp_not:N \group_begin:
- \exp_not:V \l_@@_reffont_tl
\seq_item:Nn \l_@@_type_first_refbounds_seq { 1 }
\seq_item:Nn \l_@@_type_first_refbounds_seq { 2 }
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
\@@_extract_unexp:Vvn
\l_@@_type_first_label_tl
{ l_@@_ref_property_tl } { }
- \seq_item:Nn \l_@@_type_first_refbounds_seq { 3 }
\exp_not:N \group_end:
+ \seq_item:Nn \l_@@_type_first_refbounds_seq { 3 }
}
- \exp_not:V \l_@@_reffont_tl
\seq_item:Nn \l_@@_type_first_refbounds_seq { 4 }
- \exp_not:N \group_end:
}
{
\exp_not:N \group_begin:
@@ -7026,8 +7025,6 @@
! \l_@@_link_star_bool
}
{
- \exp_not:N \group_begin:
- \exp_not:V \l_@@_reffont_tl
\seq_item:Nn
\l_@@_type_first_refbounds_seq { 1 }
\@@_hyperlink:nnn
@@ -7042,27 +7039,29 @@
{
\seq_item:Nn
\l_@@_type_first_refbounds_seq { 2 }
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
\@@_extract_unexp:Vvn
\l_@@_type_first_label_tl
{ l_@@_ref_property_tl } { }
+ \exp_not:N \group_end:
\seq_item:Nn
\l_@@_type_first_refbounds_seq { 3 }
}
\seq_item:Nn
\l_@@_type_first_refbounds_seq { 4 }
- \exp_not:N \group_end:
}
{
- \exp_not:N \group_begin:
- \exp_not:V \l_@@_reffont_tl
\seq_item:Nn \l_@@_type_first_refbounds_seq { 1 }
\seq_item:Nn \l_@@_type_first_refbounds_seq { 2 }
+ \exp_not:N \group_begin:
+ \exp_not:V \l_@@_reffont_tl
\@@_extract_unexp:Vvn
\l_@@_type_first_label_tl
{ l_@@_ref_property_tl } { }
+ \exp_not:N \group_end:
\seq_item:Nn \l_@@_type_first_refbounds_seq { 3 }
\seq_item:Nn \l_@@_type_first_refbounds_seq { 4 }
- \exp_not:N \group_end:
}
}
{ \@@_ref_default: }
@@ -8098,12 +8097,6 @@
{ \zref@localaddprop \ZREF@mainlist { subeq } }
}
}
-% \end{macrocode}
-% And a last touch of care for \pkg{amsmath}'s refinements: make the equation
-% references \cs{textup}.
-% \begin{macrocode}
- \zcRefTypeSetup { equation }
- { reffont = \upshape }
\msg_info:nnn { zref-clever } { compat-package } { amsmath }
}
}
@@ -8410,6 +8403,174 @@
% \pkg{translations}.
%
%
+% \subsection{Localization guidelines}
+%
+% Since the task of localizing \pkg{zref-clever} to work in different
+% languages depends on the generous work of contributors, it is a good idea to
+% set some guidelines not only to ease the task itself but also to document
+% what the package expects in this regard.
+%
+% The first general observation is that, contrary to a common initial reaction
+% of those faced with the task of localizing the reference types, is that the
+% job is not quite one of ``translation''. The reference type names are just
+% the internal names used by the package to refer to them, technically, they
+% could just as well be foobars. Of course, for practical reasons, they were
+% chosen to be semantic. However, what we are searching for is not really the
+% translation to the reference type name itself, but rather for the word /
+% term / expression which is typically used to refer to the document object
+% that the reference type is meant to represent. And terms that should work
+% well in the contexts which cross-references are commonly used.
+%
+% That said, some comments about the reference types and common pitfalls.
+%
+% \textbf{Sectioning:} A number of reference types are provided to support
+% referencing to document sectioning commands. Obviously, \texttt{part},
+% \texttt{chapter}, \texttt{section}, and \texttt{paragraph} are meant to
+% refer to the sectioning commands of the standard classes and elsewhere,
+% which anyone reading this is certainly acquainted with. Note that
+% \pkg{zref-clever} uses -- by default at least, which is what the language
+% files cater for -- the \texttt{section} reference type to refer to
+% \cs{subsections} and \cs{subsubsections} as well, similarly,
+% \texttt{paragraph} also refers to \cs{subparagraph}. The \texttt{appendix}
+% reference type is meant to refer to any sectioning command -- be them
+% chapters, sections, or paragraphs -- issued after \cs{appendix}, which
+% corresponds to how the standard classes, the KOMA Script classes, and
+% \cls{memoir} deal with appendices. The \texttt{book} reference type
+% deserves some explanation. The word ``book'' has a good number of meanings,
+% and the most common one is not the one which is intended here. The Webster
+% dictionary gives us a couple of definitions of interest: ``1. A collection
+% of sheets of paper, or similar material, blank, written, or printed, bound
+% together; commonly, many folded and bound sheets containing continuous
+% printing or writing.'' and ``3. A part or subdivision of a treatise or
+% literary work; as, the tenth book of `Paradise Lost'.'' It is this third
+% meaning which the \texttt{book} reference type is meant to support: a major
+% subdivision of a work, much like \cs{part}. Even if it does not exist in
+% the standard classes, it may exist elsewhere, in particular, it is provided
+% by \cls{memoir}.
+%
+% \textbf{Common numbered objects:} Nothing surprising here, just being
+% explicit. \texttt{table} and \texttt{figure} refer to the document's
+% respective floats objects. \texttt{page} to the page number. \texttt{item}
+% to the item number in \env{enumerate} environments. Similarly,
+% \texttt{line} is meant to refer to line numbers.
+%
+% \textbf{Notes:} \pkg{zref-clever} provides three reference types in this
+% area: \texttt{footnote}, \texttt{endnote}, and \texttt{note}. The first two
+% refer to footnotes and end notes, respectively. The third is meant as a
+% convenience for a general ``note'' object, either the other two, or
+% something else. By experience, here is one place where that initial
+% observation of not simply translating the reference types names is
+% particularly relevant. There's a natural temptation, because three
+% different types exist and are somewhat close to each other, to distinguish
+% them clearly. Duty would compel us to do so. But that may lead to less
+% than ideal results. Different terms work well for some languages, like
+% English and German, which have compound words for the purpose. But less so
+% for other languages, like Portuguese, French, or Italian. For example, in a
+% document in French which only contains footnotes, arguably a very common use
+% case, would it be better to refer to a footnote as just ``note'', or be very
+% precise with ``note infrapaginale''? Of course, in a document which
+% contains both footnotes and end notes, we may need the distinction. But is
+% it really the better default? True, possibly the inclusion of the
+% \texttt{note} reference type, with no clear object to refer to, creates more
+% noise than convenience here. If I recall correctly, my intention was to
+% provide an easy way out for users from possible contentious localizations
+% for \texttt{footnote} and \texttt{endnote}, but I'm not sure if it's been
+% working like this in practice, and I should probably have refrained from
+% adding it in the first place.
+%
+% \textbf{Math \& Co.:} A good number of reference types provided by the
+% package are meant to cater for document objects commonly used in Mathematics
+% and related areas. They are either straight math environments, defined by
+% the kernel, \pkg{amsmath} or other packages, or environments which are
+% normally not pre-defined by the kernel or the standard classes, but are
+% traditionally defined by users with the kernel's \cs{newtheorem} or similar
+% constructs available in the \LaTeX{} package ecosystem. For most of them,
+% localization should strive as much as possible to use the formal terms,
+% jargon really, typically employed by mathematicians, logicians, and friends.
+% Namely for the reference types: \texttt{equation}, \texttt{theorem},
+% \texttt{lemma}, \texttt{corollary}, \texttt{proposition},
+% \texttt{definition}, \texttt{proof}, \texttt{result}, and \texttt{remark}.
+% Regarding \texttt{example}, \texttt{exercise}, and \texttt{solution} being
+% somewhat less formal is admissible. But the chosen terms should still be
+% fit for use in Math related contexts, and should be assumed were created by
+% \cs{newtheorem} or similar, even if users may well find other uses for these
+% types.
+%
+% \textbf{Code:} A couple of reference types are provided for code related
+% environments: \texttt{algorithm} and \texttt{listing}. By experience, the
+% \texttt{listing} type has already proven to be a particularly challenging
+% one. Formally, it should be a good default term to encompass anything which
+% may regularly be included in a \env{lstlisting} environment as provided by
+% the \pkg{listings} package. However, it seems that in different languages
+% it is quite difficult to find a satisfying term for it. Though my English
+% is decent, I'm not a native speaker, still I'm not even sure how common the
+% term is used for the purpose even in English. It seems to be traditional
+% enough in the \LaTeX{} community at least. In doubt, pend to the jargon
+% side, anglicism if need be. Since we are bound to displease mostly everyone
+% anyway, at least we do so in a consistent manner.
+%
+% \textbf{Completeness and abbreviated forms:} Ideally, the language file
+% should be as complete as possible. ``Complete'' meaning it contains: i) the
+% defaults for all basic separators, \opt{namesep}, \opt{pairsep},
+% \opt{listsep}, \opt{lastsep}, \opt{tpairsep}, \opt{tlistsep},
+% \opt{tlastsep}, \opt{notesep}, and \opt{rangesep}; ii) the non-abbreviated
+% forms of names for all the supported reference types, according to the
+% language definitions, that is, usually for \opt{Name-sg}, \opt{name-sg},
+% \opt{Name-pl}, \opt{name-pl}, but only for the capitalized forms if the
+% language was declared with \opt{allcaps} option, and names for each
+% declension case, if the language was declared with \opt{declension}; iii)
+% genders for each reference type, if the language was declared with
+% \opt{gender}. The language file may include some other things, like some
+% type specific settings for separators or refbounds, and also some
+% abbreviated name forms. In the case of abbreviated name forms, it is usual
+% and desirable to provide some, but they should be used sparingly, only for
+% cases where the abbreviation is a common and well established tradition for
+% the language. The reason is that \texttt{abbrev=true} is quite a common use
+% case, and it is easier to provide an occasional wanted abbreviated form, if
+% the language file didn't include it, than it is to disable several unwanted
+% ones, if the language file includes too many of them. What should be aimed
+% at is to provide a good default abbreviations set. Unusual or disputable
+% abbreviations should be avoided. In particular, there is no need at all to
+% provide the same set of abbreviations for each language. It is not because
+% English has them for a given type that some other language has to have them,
+% and it is not because English lacks them for another type, that other
+% languages shouldn't have them. Still, with regard to abbreviated forms, it
+% is better to be conservative than opinionated.
+%
+% \textbf{\pkg{babel} names:} As is known, \pkg{babel} defines a set of
+% captions for different document objects for each supported language. In
+% some cases, they intersect with the objects referred to with
+% cross-references, in which case consistency with \pkg{babel} should be
+% maintained as much as possible. This is specially the case for prominent
+% and traditional objects, such as \cs{chaptername}, \cs{figurename},
+% \cs{tablename}, \cs{pagename}, \cs{partname}, and \cs{appendixname}. This
+% is not set in stone, but there should be good reason to diverge from it. In
+% particular, if a certain term is contentious in a given language,
+% \pkg{babel}'s default should be preferred. For example, ``table''
+% vs. ``tableau'' in French, or ``cuadro'' vs. ``tabla'' in Spanish.
+%
+% \textbf{Input encoding of language files:} When \pkg{zref-clever} was
+% released, the \LaTeX{} kernel already used UTF-8 as default input encoding.
+% Indeed, \pkg{zref-clever} requires a kernel even newer than the one where
+% the default input encoding was changed. That given, UTF-8 input encoding
+% was made a requirement of the package, and hence the language files should
+% be in UTF-8, since it makes them easier to read and maintain than LICR.
+%
+% \textbf{Precedence rule for options in the language files:} Any option given
+% twice or more times has to have some precedence rule. Normally, the
+% language files should not contain options in duplicity, but they may happen
+% when setting some ``group'' \opt{refbounds} options, in which case
+% precedence rules become relevant. For user facing options (those set with
+% \cs{zcLanguageSetup}), the option is always set, regardless of its previous
+% state. Which means that the last value takes precedence. For the language
+% files, we have to load them at \texttt{begindocument} (or later), since
+% that's the point where we know from \pkg{babel} or \pkg{polyglossia} the
+% \cs{languagename}. But we also don't want to override any options the user
+% has actively set in the preamble. So the language files only set the values
+% if they were not previously set. In other words, for them the precedence
+% order is inverted, the first value takes precedence.
+%
+%
% \subsection{English}
%
% English language file has been initially provided by the author.
@@ -8637,17 +8798,20 @@ type = solution ,
%
% German language file has been initially provided by the author.
%
+% \pkg{babel-german} also has \file{.ldf}s for \texttt{germanb} and
+% \texttt{ngermanb}, but they are deprecated as options and, if used, they
+% fall back respectively to \texttt{german} and \texttt{ngerman}.
+%
% \begin{macrocode}
%<*package>
\zcDeclareLanguage
[ declension = { N , A , D , G } , gender = { f , m , n } , allcaps ]
{ german }
-\zcDeclareLanguageAlias { austrian } { german }
-\zcDeclareLanguageAlias { germanb } { german }
\zcDeclareLanguageAlias { ngerman } { german }
+\zcDeclareLanguageAlias { austrian } { german }
\zcDeclareLanguageAlias { naustrian } { german }
-\zcDeclareLanguageAlias { nswissgerman } { german }
\zcDeclareLanguageAlias { swissgerman } { german }
+\zcDeclareLanguageAlias { nswissgerman } { german }
%</package>
% \end{macrocode}
%
@@ -9115,13 +9279,14 @@ type = solution ,
% \url{https://groups.google.com/g/fr.comp.text.tex/c/Fa11Tf6MFFs}) mailing
% lists.
%
+% \pkg{babel-french} also has \file{.ldf}s for \texttt{francais},
+% \texttt{frenchb}, and \texttt{canadien}, but they are deprecated as options
+% and, if used, they fall back to either \texttt{french} or \texttt{acadian}.
+%
% \begin{macrocode}
%<*package>
\zcDeclareLanguage [ gender = { f , m } ] { french }
\zcDeclareLanguageAlias { acadian } { french }
-\zcDeclareLanguageAlias { canadien } { french }
-\zcDeclareLanguageAlias { francais } { french }
-\zcDeclareLanguageAlias { frenchb } { french }
%</package>
% \end{macrocode}
%
@@ -9831,9 +9996,9 @@ type = solution ,
%
% \subsection{Dutch}
%
-% Dutch language file initially contributed by \texttt{niluxv} (\githubPR{5}).
-% All genders were checked against the ``Dikke Van Dale''. Many words have
-% multiple genders.
+% Dutch language file initially contributed by \contributor{\username{niluxv}}
+% (\githubPR{5}). All genders were checked against the ``Dikke Van Dale''.
+% Many words have multiple genders.
%
% \begin{macrocode}
%<*package>
@@ -9891,12 +10056,18 @@ type = paragraph ,
Name-pl = Alinea's ,
name-pl = alinea's ,
+% \end{macrocode}
+% 2022-12-27, \contributor{\username{niluxv}}: ``bijlage'' is chosen over
+% ``appendix'' (plural ``appendices'', gender: m, n) for consistency with
+% babel/polyglossia. ``bijlages'' is also a valid plural; ``bijlagen'' is
+% chosen for consistency with babel/polyglossia.
+% \begin{macrocode}
type = appendix ,
- gender = { m , n } ,
- Name-sg = Appendix ,
- name-sg = appendix ,
- Name-pl = Appendices ,
- name-pl = appendices ,
+ gender = { f, m } ,
+ Name-sg = Bijlage ,
+ name-sg = bijlage ,
+ Name-pl = Bijlagen ,
+ name-pl = bijlagen ,
type = page ,
gender = { f , m } ,
@@ -9958,10 +10129,10 @@ type = note ,
type = equation ,
gender = f ,
- Name-sg = Vergelijking ,
- name-sg = vergelijking ,
- Name-pl = Vergelijkingen ,
- name-pl = vergelijkingen ,
+ Name-sg = Vergelijking ,
+ name-sg = vergelijking ,
+ Name-pl = Vergelijkingen ,
+ name-pl = vergelijkingen ,
Name-sg-ab = Vgl. ,
name-sg-ab = vgl. ,
Name-pl-ab = Vgl.'s ,
@@ -9977,9 +10148,10 @@ type = theorem ,
name-pl = stellingen ,
% \end{macrocode}
-% 2022-01-09, \texttt{niluxv}: An alternative plural is ``lemmata''. That is
-% also a correct English plural for lemma, but the English language file
-% chooses ``lemmas''. For consistency we therefore choose ``lemma's''.
+% 2022-01-09, \contributor{\username{niluxv}}: An alternative plural is
+% ``lemmata''. That is also a correct English plural for lemma, but the
+% English language file chooses ``lemmas''. For consistency we therefore
+% choose ``lemma's''.
% \begin{macrocode}
type = lemma ,
gender = n ,
@@ -10011,10 +10183,10 @@ type = definition ,
type = proof ,
gender = n ,
- Name-sg = Bewijs ,
- name-sg = bewijs ,
- Name-pl = Bewijzen ,
- name-pl = bewijzen ,
+ Name-sg = Bewijs ,
+ name-sg = bewijs ,
+ Name-pl = Bewijzen ,
+ name-pl = bewijzen ,
type = result ,
gender = n ,
@@ -10037,16 +10209,21 @@ type = example ,
Name-pl = Voorbeelden ,
name-pl = voorbeelden ,
+% \end{macrocode}
+% 2022-12-27, \contributor{\username{niluxv}}: ``algoritmes'' is also a valid
+% plural. ``algoritmen'' is chosen to be consistent with using ``bijlagen''
+% (and not ``bijlages'') as the plural of ``bijlage''.
+% \begin{macrocode}
type = algorithm ,
gender = { n , f , m } ,
Name-sg = Algoritme ,
name-sg = algoritme ,
- Name-pl = Algoritmes ,
- name-pl = algoritmes ,
+ Name-pl = Algoritmen ,
+ name-pl = algoritmen ,
% \end{macrocode}
-% 2022-01-09, \texttt{niluxv}: EN-NL Van Dale translates listing as (3)
-% ``uitdraai van computerprogramma'', ``listing''.
+% 2022-01-09, \contributor{\username{niluxv}}: EN-NL Van Dale translates
+% listing as (3) ``uitdraai van computerprogramma'', ``listing''.
% \begin{macrocode}
type = listing ,
gender = m ,
@@ -10075,6 +10252,257 @@ type = solution ,
% \end{macrocode}
%
%
+% \subsection{Italian}
+%
+% Italian language file initially contributed by Matteo Ferrigato
+% (\githubissue{11}).
+%
+% \begin{macrocode}
+%<*package>
+\zcDeclareLanguage [ gender = { f , m } ] { italian }
+%</package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*lang-italian>
+% \end{macrocode}
+%
+% \begin{macrocode}
+namesep = {\nobreakspace} ,
+pairsep = {~e\nobreakspace} ,
+listsep = {,~} ,
+lastsep = {~e\nobreakspace} ,
+tpairsep = {~e\nobreakspace} ,
+tlistsep = {,~} ,
+tlastsep = {,~e\nobreakspace} ,
+notesep = {~} ,
+rangesep = {~a\nobreakspace} ,
++refbounds-rb = {da\nobreakspace,,,} ,
+
+type = book ,
+ gender = m ,
+ Name-sg = Libro ,
+ name-sg = libro ,
+ Name-pl = Libri ,
+ name-pl = libri ,
+
+type = part ,
+ gender = f ,
+ Name-sg = Parte ,
+ name-sg = parte ,
+ Name-pl = Parti ,
+ name-pl = parti ,
+
+type = chapter ,
+ gender = m ,
+ Name-sg = Capitolo ,
+ name-sg = capitolo ,
+ Name-pl = Capitoli ,
+ name-pl = capitoli ,
+
+type = section ,
+ gender = m ,
+ Name-sg = Paragrafo ,
+ name-sg = paragrafo ,
+ Name-pl = Paragrafi ,
+ name-pl = paragrafi ,
+
+type = paragraph ,
+ gender = m ,
+ Name-sg = Capoverso ,
+ name-sg = capoverso ,
+ Name-pl = Capoversi ,
+ name-pl = capoversi ,
+
+type = appendix ,
+ gender = f ,
+ Name-sg = Appendice ,
+ name-sg = appendice ,
+ Name-pl = Appendici ,
+ name-pl = appendici ,
+
+type = page ,
+ gender = f ,
+ Name-sg = Pagina ,
+ name-sg = pagina ,
+ Name-pl = Pagine ,
+ name-pl = pagine ,
+ Name-sg-ab = Pag. ,
+ name-sg-ab = pag. ,
+ Name-pl-ab = Pag. ,
+ name-pl-ab = pag. ,
+ rangesep = {\textendash} ,
+ rangetopair = false ,
+ +refbounds-rb = {,,,} ,
+
+type = line ,
+ gender = f ,
+ Name-sg = Riga ,
+ name-sg = riga ,
+ Name-pl = Righe ,
+ name-pl = righe ,
+
+type = figure ,
+ gender = f ,
+ Name-sg = Figura ,
+ name-sg = figura ,
+ Name-pl = Figure ,
+ name-pl = figure ,
+ Name-sg-ab = Fig. ,
+ name-sg-ab = fig. ,
+ Name-pl-ab = Fig. ,
+ name-pl-ab = fig. ,
+
+type = table ,
+ gender = f ,
+ Name-sg = Tabella ,
+ name-sg = tabella ,
+ Name-pl = Tabelle ,
+ name-pl = tabelle ,
+ Name-sg-ab = Tab. ,
+ name-sg-ab = tab. ,
+ Name-pl-ab = Tab. ,
+ name-pl-ab = tab. ,
+
+type = item ,
+ gender = m ,
+ Name-sg = Punto ,
+ name-sg = punto ,
+ Name-pl = Punti ,
+ name-pl = punti ,
+
+type = footnote ,
+ gender = f ,
+ Name-sg = Nota ,
+ name-sg = nota ,
+ Name-pl = Note ,
+ name-pl = note ,
+
+type = endnote ,
+ gender = f ,
+ Name-sg = Nota ,
+ name-sg = nota ,
+ Name-pl = Note ,
+ name-pl = note ,
+
+type = note ,
+ gender = f ,
+ Name-sg = Nota ,
+ name-sg = nota ,
+ Name-pl = Note ,
+ name-pl = note ,
+
+type = equation ,
+ gender = f ,
+ Name-sg = Equazione ,
+ name-sg = equazione ,
+ Name-pl = Equazioni ,
+ name-pl = equazioni ,
+ Name-sg-ab = Eq. ,
+ name-sg-ab = eq. ,
+ Name-pl-ab = Eq. ,
+ name-pl-ab = eq. ,
+ +refbounds-rb = {da\nobreakspace(,,,)} ,
+ refbounds-first-sg = {,(,),} ,
+ refbounds = {(,,,)} ,
+
+type = theorem ,
+ gender = m ,
+ Name-sg = Teorema ,
+ name-sg = teorema ,
+ Name-pl = Teoremi ,
+ name-pl = teoremi ,
+
+type = lemma ,
+ gender = m ,
+ Name-sg = Lemma ,
+ name-sg = lemma ,
+ Name-pl = Lemmi ,
+ name-pl = lemmi ,
+
+type = corollary ,
+ gender = m ,
+ Name-sg = Corollario ,
+ name-sg = corollario ,
+ Name-pl = Corollari ,
+ name-pl = corollari ,
+
+type = proposition ,
+ gender = f ,
+ Name-sg = Proposizione ,
+ name-sg = proposizione ,
+ Name-pl = Proposizioni ,
+ name-pl = proposizioni ,
+
+type = definition ,
+ gender = f ,
+ Name-sg = Definizione ,
+ name-sg = definizione ,
+ Name-pl = Definizioni ,
+ name-pl = definizioni ,
+
+type = proof ,
+ gender = f ,
+ Name-sg = Dimostrazione ,
+ name-sg = dimostrazione ,
+ Name-pl = Dimostrazioni ,
+ name-pl = dimostrazioni ,
+
+type = result ,
+ gender = m ,
+ Name-sg = Risultato ,
+ name-sg = risultato ,
+ Name-pl = Risultati ,
+ name-pl = risultati ,
+
+type = remark ,
+ gender = f ,
+ Name-sg = Osservazione ,
+ name-sg = osservazione ,
+ Name-pl = Osservazioni ,
+ name-pl = osservazioni ,
+
+type = example ,
+ gender = m ,
+ Name-sg = Esempio ,
+ name-sg = esempio ,
+ Name-pl = Esempi ,
+ name-pl = esempi ,
+
+type = algorithm ,
+ gender = m ,
+ Name-sg = Algoritmo ,
+ name-sg = algoritmo ,
+ Name-pl = Algoritmi ,
+ name-pl = algoritmi ,
+
+type = listing ,
+ gender = m ,
+ Name-sg = Listato ,
+ name-sg = listato ,
+ Name-pl = Listati ,
+ name-pl = listati ,
+
+type = exercise ,
+ gender = m ,
+ Name-sg = Esercizio ,
+ name-sg = esercizio ,
+ Name-pl = Esercizi ,
+ name-pl = esercizi ,
+
+type = solution ,
+ gender = f ,
+ Name-sg = Soluzione ,
+ name-sg = soluzione ,
+ Name-pl = Soluzioni ,
+ name-pl = soluzioni ,
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</lang-italian>
+% \end{macrocode}
+%
+%
% \PrintIndex
%
%
diff --git a/macros/latex/contrib/zref-clever/zref-clever.ins b/macros/latex/contrib/zref-clever/zref-clever.ins
index bcad3db50a..f05b026520 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.ins
+++ b/macros/latex/contrib/zref-clever/zref-clever.ins
@@ -96,5 +96,6 @@ for those people who are interested.
\generate{\file{zref-clever-portuguese.lang}{\from{zref-clever.dtx}{lang-portuguese}}}
\generate{\file{zref-clever-spanish.lang}{\from{zref-clever.dtx}{lang-spanish}}}
\generate{\file{zref-clever-dutch.lang}{\from{zref-clever.dtx}{lang-dutch}}}
+\generate{\file{zref-clever-italian.lang}{\from{zref-clever.dtx}{lang-italian}}}
\endbatchfile
diff --git a/macros/latex/contrib/zref-clever/zref-clever.pdf b/macros/latex/contrib/zref-clever/zref-clever.pdf
index 5a6aadba29..3f975f70c9 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 2ebf1b6739..ac47747529 100644
--- a/macros/latex/contrib/zref-clever/zref-clever.tex
+++ b/macros/latex/contrib/zref-clever/zref-clever.tex
@@ -64,6 +64,10 @@
\NewDocumentCommand\opt{m}{\texttt{#1}}
+\NewDocumentCommand\username{m}{`\texttt{#1}'}
+
+\setlength{\marginparsep}{2\labelsep}
+
\definecolor{reffmtbox}{gray}{0.15}
\definecolor{reffmtback}{gray}{0.85}
\NewDocumentCommand\reffmt{m}{%
@@ -96,6 +100,17 @@
text,
lstset,
condition,
+ RenewDocumentCommand,
+ NewCommandCopy,
+ ltx@gobble,
+ zref@label,
+ zref@wrapper@babel,
+ zref@ifpropundefined,
+ zref@setcurrent,
+ beamer@old@zref@label,
+ alt,
+ beamer@nameslide,
+ beamer@dummynameslide,
}
}
\lstdefinestyle{zrefclever}{
@@ -380,6 +395,12 @@ available at \zcref{sec:how-tos}.
The package does not accept load-time options, package options must be set
using \cs{zcsetup} (see \zcref{sec:user-interface}).
+\pkg{zref-clever} requires a recent \LaTeX{} kernel (2021-11-15 or newer) and
+the packages \pkg{zref}, including some of its modules, and \pkg{ifdraft}. It
+also requires UTF-8 input encoding, which has been the kernel's default for
+some time.
+
+
\section{Dependencies}
\pkg{zref-clever} requires \pkg{zref}, and \LaTeX{} kernel 2021-11-15, or
@@ -774,10 +795,7 @@ appearance of the whole reference list (see also the \opt{namefont} and
does not affect the content of the \opt{note}, however. The option is
intended exclusively for commands that only change font attributes: style,
family, shape, weight, size, color, etc. Anything else, particularly commands
-that may generate typeset output, is not supported. Given how package options
-are handled by \LaTeX{}, the fact that this option receives commands as value
-means this option \emph{can't} be set at load time, as a package option. If
-you want to set it globally, use \cs{zcsetup} instead.
+that may generate typeset output, is not supported.
\DescribeOption{note} %
The \opt{note} option receives as value some text to be typeset at the end of
@@ -1246,8 +1264,8 @@ ones, and ``\texttt{last}'' to the last reference of the type-block. Less
obviously, but hopefully still mnemonic enough, ``\texttt{sg}'' stands for
``single'', ``\texttt{pb}'' and ``\texttt{pe}'' for ``pair begin'' and ``pair
end'', and finally ``\texttt{rb}'' and ``\texttt{re}'' for ``range begin'' and
-``range end''. Each of them which receives as value a comma separated list of
-four items in the form \texttt{\{preref*,preref,postref,postref*\}}, just like
+``range end''. Each of them receives as value a comma separated list of four
+items in the form \texttt{\{preref*,preref,postref,postref*\}}, just like
\opt{refbounds}.
The base options are mutually exclusive, which means, for example, that it is
@@ -1258,13 +1276,12 @@ beginning of a range. Setting a group of them is the purpose of the derived
options. Each of these sets all options under it. Some examples.
\opt{+refbounds-first} sets \opt{refbounds-first}, \opt{refbounds-first-sg},
\opt{refbounds-first-pb}, and \opt{refbounds-first-rg}. In turn,
-\opt{+refbounds-first-rb} sets \opt{refbounds-first-rb} and
-\opt{refbounds-first-rb}. And quite conveniently, \opt{+refbounds} sets
-\opt{+refbounds-first}, \opt{+refbounds-mid}, and \opt{+refbounds-last}, it is
-hence sufficient to set it to define the behavior of what is typeset around
-all references for the whole type-block. As you probably guessed by now, the
-\opt{refbounds} option presented in \zcref{tab:reference-format} is an alias
-of \opt{+refbounds}.
+\opt{+refbounds-rb} sets \opt{refbounds-first-rb} and \opt{refbounds-mid-rb}.
+And quite conveniently, \opt{+refbounds} sets \opt{+refbounds-first},
+\opt{+refbounds-mid}, and \opt{+refbounds-last}, it is hence sufficient to set
+it to define the behavior of what is typeset around all references for the
+whole type-block. As you probably guessed by now, the \opt{refbounds} option
+presented in \zcref{tab:reference-format} is an alias of \opt{+refbounds}.
Given that base and derived options are actually setting the same group of
underlying options (the base ones), the order in which they are given is
@@ -1318,6 +1335,7 @@ indeed required, without users having to worry about it at all.
\toprule
Language & Aliases \\
\midrule
+ dutch & \\
english & american \\
& australian \\
& british \\
@@ -1326,9 +1344,7 @@ indeed required, without users having to worry about it at all.
& UKenglish \\
& USenglish \\
french & acadian \\
- & canadien \\
- & francais \\
- & frenchb \\
+ & \\
\bottomrule
\end{tabular}
\quad
@@ -1336,17 +1352,16 @@ indeed required, without users having to worry about it at all.
\toprule
Language & Aliases \\
\midrule
- german & austrian \\
- & germanb \\
- & ngerman \\
+ german & ngerman \\
+ & austrian \\
& naustrian \\
- & nswissgerman \\
& swissgerman \\
+ & nswissgerman \\
+ italian & \\
portuguese & brazilian \\
& brazil \\
& portuges \\
spanish & \\
- dutch & \\
\bottomrule
\end{tabular}
\caption{Declared languages and aliases}
@@ -1395,12 +1410,13 @@ in effect for the languages declared by \pkg{zref-clever}.
\toprule
Language & declension & gender & allcaps \\
\midrule
+ dutch & -- & f,m,n & -- \\
english & -- & -- & -- \\
french & -- & f,m & -- \\
german & N,A,D,G & f,m,n & yes \\
+ italian & -- & f,m & -- \\
portuguese & -- & f,m & -- \\
spanish & -- & f,m & -- \\
- dutch & -- & f,m,n & -- \\
\bottomrule
\end{tabular}
\caption{Options for declared languages}
@@ -2315,6 +2331,99 @@ Of course, you can always adapt things to your needs and, e.g., make the
separate \opt{zlabel} option.
+\subsection*{\cls{beamer}}
+
+\cls{beamer} does some really atypical things with regard to cross-references.
+To start with, it redefines \cs{label} to receive an optional
+\texttt{<\meta{overlay specification}>} argument. Then, presumably to support
+overlays, it goes on and hijacks \pkg{hyperref}'s anchoring system, sets
+anchors (\cs{hypertarget}s) to each \emph{label} in the \file{.snm} file,
+while letting every standard label's anchor in the \file{.aux} file default to
+\texttt{Doc-Start}. Of course, having rendered useless \pkg{hyperref}'s
+anchoring, it has to redefine \cs{ref} so that it uses its own \file{.snm}
+provided ``label anchors'' to make hyperlinks. In particular, from our
+perspective, there is no support at all for \pkg{zref} provided by
+\cls{beamer}. Which is specially unfortunate since the above procedures also
+appear to break \pkg{cleveref}.\footnote{See, for example,
+ \url{https://tex.stackexchange.com/q/266080},
+ \url{https://tex.stackexchange.com/q/668998}, and
+ \url{https://github.com/josephwright/beamer/issues/750}. The workaround
+ provided at \url{https://tex.stackexchange.com/a/266109} is not general
+ enough since it breaks \pkg{cleveref}'s ability to receive a list of labels
+ as argument.}
+
+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
+meantime.
+
+\begin{zcworkaround}[caption={\cls{beamer}}]
+\documentclass{beamer}
+\usepackage{zref-clever}
+\makeatletter
+\RenewDocumentCommand{\zlabel}{ D<>{1} m }{%
+ \ifx\label\ltx@gobble
+ \else
+ \zref@wrapper@babel{\zref@label<#1>}{#2}%
+ \fi
+}
+\NewCommandCopy\beamer@old@zref@label\zref@label
+\RenewDocumentCommand{\zref@label}{ D<>{1} m }{%
+ \alt<#1>{%
+ \zref@ifpropundefined{anchor}{}{\zref@setcurrent{anchor}{#2}}%
+ \beamer@old@zref@label{#2}%
+ \beamer@nameslide{#2}%
+ }{%
+ \beamer@dummynameslide%
+ }%
+}
+\makeatother
+\begin{document}
+\begin{frame}
+ \begin{table}
+ \begin{tabular}{cc}
+ 1 & 2 \\
+ 3 & 4 \\
+ \end{tabular}
+ \caption{Table 1}
+ \zlabel{tab:1}
+ \end{table}
+\end{frame}
+\begin{frame}
+ \begin{figure}
+ \rule{5cm}{5cm}
+ \caption{Figure 1}
+ \zlabel{fig:1}
+ \end{figure}
+\end{frame}
+\begin{frame}
+ \zcref{tab:1,fig:1}
+\end{frame}
+\end{document}
+\end{zcworkaround}
+
+This work-around redefines \cs{zlabel} so that it takes an overlay
+specification argument, and provides that the work done by \cls{beamer} for
+the standard \cs{label} is also done for it. And it works by setting the
+\texttt{anchor} to the \emph{label} so as to be able to speak the
+``\cls{beamer}-lingo'' of anchors.
+
+A couple of caveats though. First, there's probably still some work to be
+done there in defining and setting reference types for \cls{beamer} specific
+document objects, e.g. overlays. But it can be done by the standard user
+interface of \pkg{zref-clever}. Second, since \cls{beamer}'s anchoring system
+does not provide for uniqueness of anchors as \pkg{hyperref} does, the
+procedure used by \pkg{zref-clever} in its \opt{amsmath} compatibility module
+of setting both \cs{label} and \cs{zlabel} in \pkg{amsmath}'s display math
+environments will result in duplicate anchors for labels set in them, with
+corresponding \pkg{hyperref} warnings of ``destination with the same
+identifier has been already used, duplicate ignored''. The warning is
+actually harmless in this case, since both labels are set in the same place,
+and thus have identical anchors. But, if it bothers you enough, you can look
+at the \opt{amsmath} compatibility module in the code documentation, and
+adjust things so that it sets only a \cs{zlabel}.
+
+
\section{Acknowledgments}
\pkg{zref-clever} would not be possible without other people's previous work
@@ -2374,9 +2483,11 @@ were generously provided by (in chronological order):
% 2021-10-10: https://tex.stackexchange.com/questions/618434/#comment1544401_618439
% 2022-01-12: https://chat.stackexchange.com/transcript/message/60129096#60129096
% and following discussion.
+ % 2022-12-26: https://chat.stackexchange.com/transcript/message/62644791#62644791
+ % and following discussion.
Frank Mittelbach,
% 2021-10-14: https://github.com/latex3/latex2e/issues/687
- `\texttt{samcarter}',
+ \username{samcarter},
% 2021-10-14: https://chat.stackexchange.com/transcript/message/59361777#59361777
% 2021-10-21: https://chat.stackexchange.com/transcript/message/59418309#59418309
Alan Munn,
@@ -2391,17 +2502,20 @@ 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 `\texttt{niluxv}'.
+ and \username{niluxv}.
% 2022-01-05: https://github.com/gusbrs/zref-clever/issues/4
- % 2022-01-05: https://github.com/gusbrs/zref-clever/pull/5
The package's language files have been provided or improved thanks to:
Denis Bitouzé (French),
% 2021-11-25: https://github.com/gusbrs/zref-clever/issues/1
François Lagarde (French), % 'flagarde'
% 2021-12-09: discussion at https://github.com/gusbrs/zref-clever/issues/1
- and `\texttt{niluxv}' (Dutch).
+ \username{niluxv} (Dutch),
% 2022-01-09: https://github.com/gusbrs/zref-clever/pull/5
+ % 2022-12-27: https://github.com/gusbrs/zref-clever/pull/12
+ % 2022-12-27: https://github.com/gusbrs/zref-clever/pull/13
+ and Matteo Ferrigato (Italian). % 'matteo339'
+ % 2022-12-12: https://github.com/gusbrs/zref-clever/issues/11
If I have inadvertently left anyone off the list I apologize, and please let
me know, so that I can correct the oversight.