summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-09-01 03:01:08 +0000
committerNorbert Preining <norbert@preining.info>2023-09-01 03:01:08 +0000
commita6340ee3ba0294ecd24259d39642d27d804187b2 (patch)
treecc82e5c3e6d1b796a6f2a530aea279ff238b556c /macros/latex
parent7cda3a1cc32bd43dab837e2b73046dab2aeaec98 (diff)
CTAN sync 202309010301
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/highlightx/README.md8
-rw-r--r--macros/latex/contrib/highlightx/doc/highlightx-doc.pdfbin0 -> 167620 bytes
-rw-r--r--macros/latex/contrib/highlightx/doc/highlightx-doc.tex843
-rw-r--r--macros/latex/contrib/highlightx/tex/highlightx.sty328
-rw-r--r--macros/latex/contrib/huawei/huawei.dtx131
-rw-r--r--macros/latex/contrib/huawei/huawei.pdfbin808197 -> 809255 bytes
-rw-r--r--macros/latex/contrib/jwjournal/README.md54
-rw-r--r--macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdfbin70876 -> 115307 bytes
-rw-r--r--macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex14
-rw-r--r--macros/latex/contrib/jwjournal/jwjournal-demo-en.pdfbin34389 -> 75218 bytes
-rw-r--r--macros/latex/contrib/jwjournal/jwjournal-demo-en.tex10
-rw-r--r--macros/latex/contrib/jwjournal/jwjournal-demo-fr.pdfbin35287 -> 77570 bytes
-rw-r--r--macros/latex/contrib/jwjournal/jwjournal-demo-fr.tex10
-rw-r--r--macros/latex/contrib/jwjournal/jwjournal.cls79
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md19
-rw-r--r--macros/latex/contrib/siunitx/siunitx-angle.dtx44
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin650000 -> 647812 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-complex.dtx42
-rw-r--r--macros/latex/contrib/siunitx/siunitx-compound.dtx25
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx458
-rw-r--r--macros/latex/contrib/siunitx/siunitx-print.dtx52
-rw-r--r--macros/latex/contrib/siunitx/siunitx-quantity.dtx14
-rw-r--r--macros/latex/contrib/siunitx/siunitx-symbol.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx-table.dtx33
-rw-r--r--macros/latex/contrib/siunitx/siunitx-unit.dtx6
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx11
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin705590 -> 705662 bytes
-rw-r--r--macros/latex/contrib/tagpdf/README.md4
-rw-r--r--macros/latex/contrib/tagpdf/ex-AF-file.pdf108
-rw-r--r--macros/latex/contrib/tagpdf/ex-alt-actualtext.pdfbin33866 -> 34221 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-attribute.pdf94
-rw-r--r--macros/latex/contrib/tagpdf/ex-formula-problem.pdf82
-rw-r--r--macros/latex/contrib/tagpdf/ex-list.pdf164
-rw-r--r--macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf136
-rw-r--r--macros/latex/contrib/tagpdf/ex-softhyphen.pdf82
-rw-r--r--macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf74
-rw-r--r--macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf104
-rw-r--r--macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf106
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-backend.dtx8
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-checks.dtx34
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.pdfbin1606540 -> 1571495 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-data.dtx18
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx155
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx24
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx23
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-roles.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-space.dtx4
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-struct.dtx111
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-tree.dtx9
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-user.dtx43
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.dtx27
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.pdfbin1077014 -> 1082447 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.tex16
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty2
54 files changed, 2644 insertions, 971 deletions
diff --git a/macros/latex/contrib/highlightx/README.md b/macros/latex/contrib/highlightx/README.md
new file mode 100644
index 0000000000..6b7890a62e
--- /dev/null
+++ b/macros/latex/contrib/highlightx/README.md
@@ -0,0 +1,8 @@
+highlightx is a package to highlight paragraphs or formulas.
+-------------------------------------------------------------------------
+highlightx est un package pour surligner des paragraphes ou des formules.
+-------------------------------------------------------------------------
+Author : Cédric Pierquet
+email : cpierquet@outlook.fr
+Licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txt
+Source : https://tex.stackexchange.com/questions/5959/cool-text-highlighting-in-latex \ No newline at end of file
diff --git a/macros/latex/contrib/highlightx/doc/highlightx-doc.pdf b/macros/latex/contrib/highlightx/doc/highlightx-doc.pdf
new file mode 100644
index 0000000000..41e5bd8427
--- /dev/null
+++ b/macros/latex/contrib/highlightx/doc/highlightx-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/highlightx/doc/highlightx-doc.tex b/macros/latex/contrib/highlightx/doc/highlightx-doc.tex
new file mode 100644
index 0000000000..bcf972b0c8
--- /dev/null
+++ b/macros/latex/contrib/highlightx/doc/highlightx-doc.tex
@@ -0,0 +1,843 @@
+% !TeX TXS-program:compile = txs:///lualatex
+
+\documentclass[french,11pt,a4paper]{article}
+%\usepackage[utf8]{inputenc}
+%\usepackage[T1]{fontenc}
+\usepackage{amsmath,amssymb}
+\usepackage{fontspec}
+\setmonofont[Scale=MatchLowercase]{Inconsolatazi4}
+\usepackage{highlightx}
+\usepackage{enumitem}
+\usepackage{codehigh}
+\usepackage{multicol}
+\usepackage{tabularray}
+\usepackage{lipsum}
+\usepackage{fancyvrb}
+\usepackage{fancyhdr}
+\usepackage{fontawesome5}
+\fancyhf{}
+\renewcommand{\headrulewidth}{0pt}
+%\rhead{\sffamily\small\affloetalab[Legende]}
+\lfoot{\sffamily\small [highlightx]}
+\cfoot{\sffamily\small - \thepage{} -}
+\rfoot{\hyperlink{matoc}{\small\faArrowAltCircleUp[regular]}}
+\usepackage{hologo}
+\providecommand\tikzlogo{Ti\textit{k}Z}
+\providecommand\TeXLive{\TeX{}Live\xspace}
+\providecommand\PSTricks{\textsf{PSTricks}\xspace}
+\let\pstricks\PSTricks
+\let\TikZ\tikzlogo
+
+\usepackage{hyperref}
+\urlstyle{same}
+\hypersetup{pdfborder=0 0 0}
+\usepackage[margin=1.5cm]{geometry}
+\setlength{\parindent}{0pt}
+\def\TPversion{0.1.0}
+\def\TPdate{31 août 2023}
+\usepackage{tcolorbox}
+\tcbuselibrary{skins,hooks}
+\sethlcolor{lightgray!25}
+\NewDocumentCommand\MontreCode{ m }{%
+ \hl{\vphantom{\texttt{pf}}\texttt{#1}}%
+}
+\usepackage{babel}
+
+\begin{document}
+
+\pagestyle{fancy}
+
+\thispagestyle{empty}
+
+\begin{center}
+ \begin{minipage}{0.88\linewidth}
+ \begin{tcolorbox}[colframe=yellow,colback=yellow!15]
+ \begin{center}
+ \begin{tabular}{c}
+ {\Huge \texttt{highlightx}}\\
+ \\
+ {\LARGE Commandes pour surligner formules ou paragraphes,} \\
+ \\
+ {\LARGE avec un effet main levée, à l'aide des packages} \\
+ \\
+ {\LARGE \MontreCode{soul} ou \MontreCode{tikz}.} \\
+ \\
+ {\LARGE $\rhd$ Commandes [fr] ou [en] $\lhd$} \\
+ \\
+ {\small \texttt{Version \TPversion{} -- \TPdate}}
+ \end{tabular}
+ \end{center}
+ \end{tcolorbox}
+\end{minipage}
+\end{center}
+
+\begin{center}
+ \begin{tabular}{c}
+ \texttt{Cédric Pierquet}\\
+ {\ttfamily c pierquet -- at -- outlook . fr}\\
+ \texttt{\url{https://github.com/cpierquet/highlightx}}
+\end{tabular}
+\end{center}
+
+\hrule
+
+\vfill
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+Surligner une formule en ligne, avec un effet \textit{main levée}, comme $\SurlignerFormule{f(x)=\displaystyle\frac{1}{1+x}}$.
+
+\vspace*{5mm}
+
+Surligner une formule en ligne, sans effet, comme $\SurlignerFormule*[Bord=red,Fond=teal!25]{f(x)=\displaystyle\int_0^4 x^2 + 1\,\text{d}x}$.
+\end{tcolorbox}
+
+\vspace*{5mm}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+Et en mode hors ligne :
+
+\[ \SurlignerFormule[Fond=green!25,Bord=red]{A=\begin{pmatrix}1&2\\3&4\end{pmatrix}}<thick>. \]
+\end{tcolorbox}
+
+\vspace*{5mm}
+
+\begin{tcolorbox}[colframe=lightgray,colback=lightgray!5]
+Et on peut même mettre en forme un paragraphe (dans une \MontreCode{tcbox}), généré aléatoirement grâce au site \url{https://ipsum.one/} par exemple : \og \genhighlightpar{Enfin, comme le dernier coup de dix heures retentissait encore, il étendit la main et prit celle de Mme Rênal, qui la retira aussitôt. Julien, sans trop savoir ce qu’il faisait, la saisit de nouveau. Quoique bien ému lui-même, il fut frappé de la froideur glaciale de la main qu’il prenait ; il la serrait avec une force convulsive ; on fit un dernier effort pour la lui ôter, mais enfin cette main lui resta.} \fg
+\end{tcolorbox}
+
+\vspace*{5mm}
+
+Et dans un paragraphe classique, on peut mettre des effets, comme par exemple avec le texte suivant, généré aléatoirement grâce au site \url{https://ipsum.one/} par exemple : \og \SurlignerTexte[orange!25,draw=teal]{Une scie à eau se compose d’un hangar au bord d’un ruisseau. Le toit est soutenu par une charpente qui porte sur quatre gros piliers en bois. À huit ou dix pieds d’élévation, au milieu du hangar, on voit une scie qui monte et descend, tandis qu’un mécanisme fort simple pousse contre cette scie une pièce de bois. C’est une roue mise en mouvement par le ruisseau qui fait aller ce double mécanisme ; celui de la scie qui monte et descend, et celui qui pousse doucement la pièce de bois vers la scie, qui la débite en planches.} \fg
+
+\vfill~
+
+\pagebreak
+
+\phantomsection
+
+\hypertarget{matoc}{}
+
+\tableofcontents
+
+\vspace*{5mm}
+
+\hrule
+
+\vspace*{5mm}
+
+\section{Le package highlightx}
+
+\subsection{Solutions existantes}
+
+Le package \MontreCode{soul} permet de surligner du texte, de manière efficace, mais avec des formules mathématiques le surlignage n'est pas forcément optimal.
+
+Il est également possible d'utiliser \MontreCode{fcolorbox} pour des formules mathématiques.
+
+\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+On peut surligner \hl{avec la commande \texttt{hl} du package \texttt{soul}}.\\
+Avec une formule, du style \hl{$\int_0^4 x^2\,\text{d}x$}, on constate un léger décalage.\\\\
+Aucun souci avec \texttt{hl} pour un paragraphe : \og \hl{Une scie à eau se compose d’un
+hangar au bord d’un ruisseau. Le toit est soutenu par une charpente qui porte sur quatre
+gros piliers en bois. À huit ou dix pieds d’élévation, au milieu du hangar, on voit une
+scie qui monte et descend, tandis qu’un mécanisme fort simple pousse contre cette scie
+une pièce de bois.} \fg.\\\\
+Et maintenant avec \texttt{fcolorbox} : \colorbox{lightgray!25}{$\int_0^4 x^2\,\text{d}x$}.
+\end{demohigh}
+
+\pagebreak
+
+\subsection{Possibilités et limitations}
+
+L'idée du package \MontreCode{highlightx} est de proposer des commandes, simples et basiques, pour \textit{surligner} :
+
+\begin{itemize}
+ \item du texte simple ou multi-lignes (paragraphes) ;
+ \item des formules en mode math en ligne ou hors-ligne (grâce à \TikZ) ;
+ \item avec un effet de bordure à \textit{main levée} (sauf pour un paragraphe dans une \MontreCode{tcbox}).
+\end{itemize}
+
+{\small\faBomb}~Pour le moment le surlignement avec effet en mode paragraphe n'est pas compatible avec des environnements (comme \MontreCode{tcolorbox}), donc dans ce cas il n'y aura pas d'effet possible.
+
+\medskip
+
+{\small\faAngellist}~Le code permettant de surligner un paragraphe avec effet vient d'une solution proposée par l'internaute \MontreCode{gusbrs}, dans un fil de discussion du site \MontreCode{tex.stackexchange} :
+
+\smallskip
+
+\hfill\url{https://tex.stackexchange.com/questions/5959/cool-text-highlighting-in-latex}\hfill~
+
+\subsection{Chargement}
+
+Le package se charge dans le préambule, via \MontreCode{\textbackslash usepackage\{highlightx\}}.
+
+Les seuls packages chargés sont :
+
+\begin{itemize}
+ \item \MontreCode{soul}, \MontreCode{atbegshi}, \MontreCode{etoolbox} ;
+ \item \MontreCode{tikz} avec les librairies \MontreCode{tikzmark,calc,decorations.pathmorphing} ;
+ \item \MontreCode{xstring} et \MontreCode{simplekv}.
+\end{itemize}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+\usepackage{highlightx}
+\end{codehigh}
+
+{\small\faAngleDoubleRight}~\MontreCode{highlightx} est compatible avec les compilations usuelles en \textsf{latex}, \textsf{pdflatex}, \textsf{lualatex} ou \textsf{xelatex}.
+
+\medskip
+
+{\small\faBomb}~Des erreurs peuvent apparaître lors de la compilation, dans ce cas une nouvelle compilation sera nécessaire afin de placer correctement les effets de surlignage !
+
+\subsection{Commandes disponibles}
+
+Les commandes proposées par le package \MontreCode{highlightx} sont :
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Commande pour surligner une formule (mode math)
+\SurlignerFormule
+
+%Commande pour surligner du texte
+\SurlignerTexte
+
+%Commande pour surligner du texte de manière basique, sans effet
+\genhighlightpar
+\end{codehigh}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+Par exemple $\SurlignerFormule{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+Ou bien :
+\[ \SurlignerFormule{A=\begin{pmatrix}1&2\\3&4\end{pmatrix}}. \]
+
+Et : \og \SurlignerTexte{Une scie à eau se compose d’un
+hangar au bord d’un ruisseau. Le toit est soutenu par une charpente qui porte sur quatre
+gros piliers en bois. À huit ou dix pieds d’élévation, au milieu du hangar, on voit une
+scie qui monte et descend, tandis qu’un mécanisme fort simple pousse contre cette scie
+une pièce de bois.} \fg.
+\end{codehigh}
+
+Par exemple $\SurlignerFormule{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+Ou bien :
+\[ \SurlignerFormule{A=\begin{pmatrix}1&2\\3&4\end{pmatrix}}. \]
+
+Et : \og \SurlignerTexte{Une scie à eau se compose d’un
+hangar au bord d’un ruisseau. Le toit est soutenu par une charpente qui porte sur quatre
+gros piliers en bois. À huit ou dix pieds d’élévation, au milieu du hangar, on voit une
+scie qui monte et descend, tandis qu’un mécanisme fort simple pousse contre cette scie
+une pièce de bois.} \fg.
+
+\pagebreak
+
+\section{Les commandes}
+
+\subsection{Surligner une formule}
+
+La commande dédiée à la mise en évidence d'une formule mathématique est \MontreCode{\textbackslash SurlignerFormule} :
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Commande pour surligner une formule (mode math)
+\SurlignerFormule(*)[Clés]{Formule}<options tikz>
+\end{codehigh}
+
+Concernant cette commande :
+
+\begin{itemize}
+ \item la version étoilée désactive l'effet \textit{main levée} ;
+ \item les clés disponibles sont :
+ \begin{itemize}
+ \item \MontreCode{Fond} pour la couleur de fond (\MontreCode{yellow!35} par défaut) ;
+ \item \MontreCode{Bord} pour une éventuelle bordure, \MontreCode{none} ou \MontreCode{couleur} (\MontreCode{none} par défaut) ;
+ \item \MontreCode{Texte} pour une couleur de texte (\MontreCode{black} par défaut) ;
+ \item \MontreCode{Offset} pour \textit{élargir} le surlignage, sous la forme \MontreCode{Offset} ou \MontreCode{OffsetH/OffsetV} (\MontreCode{1pt/2pt} par défaut) ;
+ \end{itemize}
+ \item la formule est insérée dans un groupe \MontreCode{\textbackslash ensuremath} ;
+ \item les \textit{options tikz} sont optionnelles.
+\end{itemize}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+$\SurlignerFormule{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+$\SurlignerFormule*{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+$\SurlignerFormule[Fond=teal!35]{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+$\SurlignerFormule[Fond=teal!35,Bord=red]{f(x)=\displaystyle\frac{1}{1+x}}<thick>$.\\
+$\SurlignerFormule[Offset=5mm/2mm]{f(x)=\displaystyle\frac{1}{1+x}}$\\
+$\SurlignerFormule*[Texte=red]{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+\end{codehigh}
+
+$\SurlignerFormule{f(x)=\displaystyle\frac{1}{1+x}}$
+\qquad
+$\SurlignerFormule*{f(x)=\displaystyle\frac{1}{1+x}}$
+\qquad
+$\SurlignerFormule[Fond=teal!35]{f(x)=\displaystyle\frac{1}{1+x}}$
+\qquad
+$\SurlignerFormule[Fond=teal!35,Bord=red]{f(x)=\displaystyle\frac{1}{1+x}}<thick>$
+\qquad
+$\SurlignerFormule[Offset=5mm/2mm]{f(x)=\displaystyle\frac{1}{1+x}}$
+\qquad
+$\SurlignerFormule*[Texte=red]{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+
+\bigskip
+
+Le style \textit{main levée} est fixé par défaut, mais peut être modifié en adaptant le style \TikZ{} suivant :
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Style main levée
+\tikzstyle{encadreformule}=[%
+ decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}]
+\end{codehigh}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+\tikzstyle{encadreformule}=[%
+ decorate,decoration={random steps,amplitude=4mm,segment length=10mm}]
+
+$\SurlignerFormule{f(x)=\displaystyle\frac{1}{1+x}}$
+\end{codehigh}
+
+\tikzstyle{encadreformule}=[decorate,decoration={random steps,amplitude=4mm,segment length=10mm}]
+
+$\SurlignerFormule{f(x)=\displaystyle\frac{1}{1+x}}$
+
+\tikzstyle{encadreformule}=[decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}]
+
+\subsection{Surligner du texte, y compris multilignes}
+
+La commande dédiée à la mise en évidence d'une formule mathématique est \MontreCode{\textbackslash SurlignerTexte} :
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Commande pour surligner du texte
+\SurlignerTexte[options tikz]{texte}
+\end{codehigh}
+
+Concernant cette commande, pour laquelle le fonctionnement (interne) est très différent du mode \textit{math} :
+
+\begin{itemize}
+ \item les options tikz permettent de spécifier la couleur de fond et l'éventuelle couleur de bordure, grâce à \MontreCode{[couleurfond,draw=couleurbord]}.
+\end{itemize}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Paragraphes venant du site https://ipsum.one/
+
+Un premier paragraphe : \og \SurlignerTexte{Quand Julien aperçut les ruines pittoresques
+de l’ancienne église de Vergy, il remarqua que depuis l’avant-veille il n’avait pas pensé
+une seule fois à Mme de Rênal. L’autre jour en partant, cette femme m’a rappelé la distance
+infinie qui nous sépare, elle m’a traité comme le fils d’un ouvrier. Sans doute elle a voulu
+me marquer son repentir de m’avoir laissé sa main la veille... Elle est pourtant bien jolie,
+cette main ! quel charme ! quelle noblesse dans les regards de cette femme !} \fg.
+
+Un deuxième paragraphe : \og \SurlignerTexte[teal!35,draw=red]{Ce ne fut que dans la nuit
+du samedi au dimanche, après trois jours de pourparlers, que l’orgueil de l’abbé Maslon plia
+devant la peur du maire qui se changeait en courage. Il fallut écrire une lettre mielleuse à
+l’abbé Chélan, pour le prier d’assister à la cérémonie de la relique de Bray-le-Haut, si
+toutefois son grand âge et ses infirmités le lui permettaient. M. Chélan demanda et obtint
+une lettre d’invitation pour Julien qui devait l’accompagner en qualité de sous-diacre.} \fg.
+\end{codehigh}
+
+Un premier paragraphe : \og \SurlignerTexte{Quand Julien aperçut les ruines pittoresques
+de l’ancienne église de Vergy, il remarqua que depuis l’avant-veille il n’avait pas pensé
+une seule fois à Mme de Rênal. L’autre jour en partant, cette femme m’a rappelé la distance
+infinie qui nous sépare, elle m’a traité comme le fils d’un ouvrier. Sans doute elle a voulu
+me marquer son repentir de m’avoir laissé sa main la veille... Elle est pourtant bien jolie,
+cette main ! quel charme ! quelle noblesse dans les regards de cette femme !} \fg.
+
+\medskip
+
+Un deuxième paragraphe : \og \SurlignerTexte[teal!35,draw=red]{Ce ne fut que dans la nuit
+du samedi au dimanche, après trois jours de pourparlers, que l’orgueil de l’abbé Maslon plia
+devant la peur du maire qui se changeait en courage. Il fallut écrire une lettre mielleuse à
+l’abbé Chélan, pour le prier d’assister à la cérémonie de la relique de Bray-le-Haut, si
+toutefois son grand âge et ses infirmités le lui permettaient. M. Chélan demanda et obtint
+une lettre d’invitation pour Julien qui devait l’accompagner en qualité de sous-diacre.} \fg.
+
+\subsection{Surlignement \og classique \fg, au cas où\ldots}
+
+Au cas où le surlignement multilignes précédent ne fonctionne pas (dans un environnement spécifique par exemple\ldots), il est possible d'utiliser une commande \textit{générique}, qui utilise uniquement le package \MontreCode{soul} (donc pas d'effet !), qui est \MontreCode{\textbackslash genhighlightpar}.
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Commande générique pour surligner du texte
+\genhighlightpar[couleur]{texte}
+\end{codehigh}
+
+Concernant cette commande, le premier argument (optionnel) est la couleur de fond, et le second argument (obligatoire) est le texte à mettre en évidence.
+
+\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+Un paragraphe : \og \genhighlightpar[orange!35]{Pour arriver à la considération publique
+à Verrières, l’essentiel est de ne pas adopter, tout en bâtissant beaucoup de murs, quelque
+plan apporté d’Italie par ces maçons, qui au printemps traversent les gorges du Jura pour
+gagner Paris. Une telle innovation vaudrait à l’imprudent bâtisseur une éternelle réputation
+de mauvaise tête, et il serait à jamais perdu auprès des gens sages et modérés qui distribuent
+la considération en Franche-Comté.} \fg.
+\end{demohigh}
+
+\pagebreak
+
+\section{English commands}
+
+\subsection{Introduction}
+
+There's also english versions of the commands :
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Hightlight formula (math mode)
+\HighlightFormula
+
+%Highlight text
+\HighlightText
+
+%Basic highlight text, without effect
+\genhighlightpar
+\end{codehigh}
+
+\subsection{Highlight formula}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Hightlight formula (math mode)
+\HighlightFormula(*)[keys]{formula}<tikz options>
+\end{codehigh}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+$\HighlightFormula{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+$\HighlightFormula*{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+$\HighlightFormula[bg=teal!35]{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+$\HighlightFormula[bg=teal!35,border=red]{f(x)=\displaystyle\frac{1}{1+x}}<thick>$.\\
+$\HighlightFormula[offset=5mm/2mm]{f(x)=\displaystyle\frac{1}{1+x}}$\\
+$\HighlightFormula*[text=red]{f(x)=\displaystyle\frac{1}{1+x}}$.\\
+\end{codehigh}
+
+$\HighlightFormula{f(x)=\displaystyle\frac{1}{1+x}}$
+\qquad
+$\HighlightFormula*{f(x)=\displaystyle\frac{1}{1+x}}$
+\qquad
+$\HighlightFormula[bg=teal!35]{f(x)=\displaystyle\frac{1}{1+x}}$
+\qquad
+$\HighlightFormula[bg=teal!35,border=red]{f(x)=\displaystyle\frac{1}{1+x}}<thick>$
+\qquad
+$\HighlightFormula[offset=5mm/2mm]{f(x)=\displaystyle\frac{1}{1+x}}$
+\qquad
+$\HighlightFormula*[text=red]{f(x)=\displaystyle\frac{1}{1+x}}$.
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%handwriting style
+\tikzstyle{borderformula}=[%
+ decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}]
+\end{codehigh}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+\tikzstyle{borderformula}=[%
+ decorate,decoration={random steps,amplitude=4mm,segment length=10mm}]
+
+$\HighlightFormula{f(x)=\displaystyle\frac{1}{1+x}}$
+\end{codehigh}
+
+\tikzstyle{borderformula}=[decorate,decoration={random steps,amplitude=4mm,segment length=10mm}]
+
+$\HighlightFormula{f(x)=\displaystyle\frac{1}{1+x}}$
+
+\tikzstyle{borderformula}=[decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}]
+
+\subsection{Highlight text}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Highlight text, with effect
+\HighlightText[tikz options]{text}
+\end{codehigh}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%Paragraphs from https://ipsum.one/
+
+A first one : \HighlightText{In order to modify it, he has only to press his hand lightly
+on a small wheel, measuring hardly a foot in diameter, and placed within his reach. Immediately
+the valves open, the steam from the boilers rushes along the conducting tubes into the two
+cylinders of the small engine, the pistons move rapidly, and the rudder instantly obeys.
+If this plan succeeds, a man will be able to direct the gigantic body of the 'Great Eastern'
+with one finge}.
+
+A second one : \HighlightText[teal!35,draw=red]{On Wednesday night the weather was very bad,
+my balance was strangely variable, and I was obliged to lean with my knees and elbows against
+the sideboard, to prevent myself from falling. Portmanteaus and bags came in and out of my cabin;
+an unusual hubbub reigned in the adjoining saloon, in which two or three hundred packages were
+making expeditions from one end to the other, knocking the tables and chairs with loud crashes;
+doors slammed, the boards creaked, the partitions made that groaning noise peculiar to pine wood;
+bottles and glasses jingled together in their racks, and a cataract of plates and dishes rolled
+about on the pantry floors}.
+\end{codehigh}
+
+A first one : \HighlightText{In order to modify it, he has only to press his hand lightly
+on a small wheel, measuring hardly a foot in diameter, and placed within his reach. Immediately
+the valves open, the steam from the boilers rushes along the conducting tubes into the two
+cylinders of the small engine, the pistons move rapidly, and the rudder instantly obeys.
+If this plan succeeds, a man will be able to direct the gigantic body of the 'Great Eastern'
+with one finge}.
+
+\medskip
+
+A second one : \HighlightText[teal!35,draw=red]{On Wednesday night the weather was very bad,
+my balance was strangely variable, and I was obliged to lean with my knees and elbows against
+the sideboard, to prevent myself from falling. Portmanteaus and bags came in and out of my cabin ;
+an unusual hubbub reigned in the adjoining saloon, in which two or three hundred packages were
+making expeditions from one end to the other, knocking the tables and chairs with loud crashes ;
+doors slammed, the boards creaked, the partitions made that groaning noise peculiar to pine wood ;
+bottles and glasses jingled together in their racks, and a cataract of plates and dishes rolled
+about on the pantry floors}.
+
+\subsection{Generic highlight, without effect}
+
+\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%generic command, without effect
+\genhighlightpar[color]{text}
+\end{codehigh}
+
+\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+A paragraph : \genhighlightpar[violet!35]{This steam-ship is indeed a masterpiece of naval
+construction ; more than a vessel, it is a floating city, part of the country, detached from
+English soil, which after having crossed the sea, unites itself to the American Continent.
+I pictured to myself this enormous bulk borne on the waves, her defiant struggle with the wind,
+her boldness before the powerless sea, her indifference to the billows, her stability in the
+midst of that element which tosses 'Warriors' and 'Solferinos' like ship's boats.}.
+\end{demohigh}
+
+
+%Le style global des boîtes est défini par :
+%
+%\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\tcbset{baseboite/.style={
+% enhanced,sharp corners=uphill,boxrule=\eptraitboite,%
+% before skip=0.5em,after skip=0.5em,%
+% colback=white,top=4mm,%
+% left={\margeboite-\margeinttitreboite-\eptraitboite},%
+% right={\margeboite-\margeinttitreboite-\eptraitboite}
+%}%
+%}
+%\end{codehigh}
+%
+%À noter que le \MontreCode{\textbackslash margeboite-\textbackslash margeinttitreboite-\textbackslash eptraitboite} vient :
+%
+%\begin{itemize}
+% \item des \MontreCode{\textbackslash margeinttitreboite} du paramètre \MontreCode{inner sep} du nœud Ti\textit{k}Z ;
+% \item des \MontreCode{\textbackslash eptraitboite} du paramètre \MontreCode{boxrule} de la boîte \textit{titre}.
+%\end{itemize}
+%
+%\subsection{Paramétrage simple de la boîte}
+%
+%Il est possible de rajouter ou modifier quelques éléments de chaque boîte (les clés suivantes sont cumulables) :
+%
+%\begin{itemize}
+% \item un \textsf{sous-titre} (couleur \textsf{rouge foncé}) peut être ajouté (en haut à droite de la boîte), via la clé \MontreCode{[SousTitre=...]} ;
+% \item le label peut être modifié :
+% \begin{itemize}
+% \item le compteur peut être désactivé, grâce à la clé \MontreCode{[Compteur=false]} ;
+% \item la clé \MontreCode{[Pluriel]} force le pluriel du label ;
+% \item un complément peut être rajouté entre le label et le compteur grâce à la clé \MontreCode{[ModifLabel=...]} ;
+% \item un complément peut être rajouté après le compteur grâce à la clé \MontreCode{[ComplementTitre=...]} ;
+% \end{itemize}
+% \item une petite image (type \textit{filigrane}) peut être rajoutée (de hauteur 24pt et pivotée de 45° dans le sens horaire par défaut), dans le coin \textit{bas-droite} de la boîte :
+% \begin{itemize}
+% \item en spécifiant l'image grâce à la clé \MontreCode{[Logo=...]} ;
+% \item en spécifiant hauteur/rotation/opacité grâce aux clés \MontreCode{[HauteurLogo=...]} , \MontreCode{[RotationLogo=...]} et \MontreCode{[OpaciteLogo=...]}.
+% \end{itemize}
+%\end{itemize}
+%
+%Des options spécifiques \MontreCode{tcolorbox} peuvent être passées en option à l'environnement, elles sont à mettre entre \MontreCode{<...>} avant le corps de l'environnement.
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\setcounter{CompteurBoiteDemo}{0}
+%\begin{BoiteDeDemo}[Compteur=false]
+%\lipsum[1][1-2]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\begin{BoiteDeDemo}[Pluriel]<width=0.5\linewidth>
+%\lipsum[1][1-2]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\begin{BoiteDeDemo}[SousTitre={Un petit sous-titre}]
+%\lipsum[1][1-2]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\begin{BoiteDeDemo}[ComplementTitre={ - Un complément de titre}]%noter l'espace ;-)
+%\lipsum[1][1-2]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\begin{BoiteDeDemo}[ModifLabel={ super important}]%noter l'espace ;-)
+%\lipsum[1][1-2]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\begin{BoiteDeDemo}[Logo={example-image}]
+%\lipsum[1][3-4]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\begin{BoiteDeDemo}[Logo={example-image},HauteurLogo=5mm,RotationLogo=10]
+%\lipsum[1][3-4]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\pagebreak
+%
+%Et en \textit{cumulant} des clés de personnalisation on peut obtenir :
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\begin{BoiteDeDemo}[%
+% ModifLabel={s super importants},ComplementTitre={ (vraiment super importants)},%
+% SousTitre={- Source -},Compteur=false,Logo={example-image-a},%
+% HauteurLogo=1cm,RotationLogo=15,OpaciteLogo=1
+% ]
+%\lipsum[2][1-4]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\subsection{Personnalisation \textit{intermédiaire}}
+%
+%Il est possible de paramétrer \textit{facilement} certaines options, via la commande \MontreCode{\textbackslash ParamBoites[...]} :
+%
+%\begin{itemize}
+% \item la police du label grâce à la clé \MontreCode{[PoliceTitre=...]} (\verb*|\bfseries\sffamily| par défaut) ;
+% \item la police du sous-titre grâce à la clé \MontreCode{[PoliceSousTitre=...]} (\verb*|\small\bfseries\sffamily| par défaut) ;
+% \item la couleur de base du sous-titre grâce à la clé \MontreCode{[CouleurSousTitre=...]} (\verb*|red| par défaut) ;
+% \item les marges gauche et droite grâce à la clé \MontreCode{[Marge=...]} (\verb*|4mm| par défaut) ;
+% \item l'épaisseur des bordures grâce à la clé \MontreCode{[EpaisseurBordure=...]} (\verb*|1.25pt| par défaut) ;
+% \item la marge spécifique pour la boîte \textit{titre} grâce à clé \MontreCode{[MargeTitre=...]} (\verb*|3pt| par défaut).
+%\end{itemize}
+%
+%\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\ParamBoites[%
+% Marge=2cm,MargeTitre=2mm,%
+% PoliceTitre=\large\bfseries\ttfamily,%
+% PoliceSousTitre=\scriptsize\bfseries\sffamily,%
+% CouleurSousTitre=orange]
+%\end{codehigh}
+%
+%\ParamBoites[Marge=2cm,MargeTitre=2mm,PoliceTitre=\large\bfseries\ttfamily,PoliceSousTitre=\scriptsize\bfseries\sffamily,CouleurSousTitre=orange]
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\begin{BoiteDeDemo}[SousTitre={- Un petit sous-titre -}]
+%\lipsum[1][1-2]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%On peut revenir aux paramètres par défaut grâce à la commande \MontreCode{\textbackslash ParamBoites} (sans argument).
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\ParamBoites
+%\begin{BoiteDeDemo}[SousTitre={- Un petit sous-titre -}]
+%\lipsum[1][1-2]
+%\end{BoiteDeDemo}
+%\end{demohigh}
+%
+%\pagebreak
+%
+%\section{Utilisation avancée}
+%
+%\subsection{Styles spécifiques}
+%
+%Il est possible quand même de modifier \textit{en profondeur} les boîtes créées, en redéfinissant les commandes suivantes via \verb*|\RenewDocumentCommand| :
+%
+%\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\NewDocumentCommand\TitreBoite{ m m m m }{%
+% %1=couleur
+% %2=icone
+% %3=nom
+% %4=compteur
+% % \BoxModifLabel = texte entre label et compteur
+% % \BoxCpltTitle = Texte après le compteur
+% \node[inner sep=\margeinttitreboite,rounded corners=3pt,draw=#1,line width=\eptraitboite,%
+% rectangle,fill=#1!5!white,anchor=west,xshift=\margeboite,text=black,%
+% font=\policetitreboite]%
+% at (frame.north west)
+% {%
+% \,\IfStrEq{#2}{}{}{{\small#2}~}\vphantom{Ppé}%
+% \ifboolKV[Boites]{Pluriel}{\StrBehind{#3}{/}}{\StrBefore{#3}{/}}%
+% \IfStrEq{\BoxModifLabel}{}{}{\BoxModifLabel}\ifboolKV[Boites]{Compteur}{~#4}{}%
+% \IfStrEq{\BoxCpltTitle}{}{}{\BoxCpltTitle}\,%
+% } ;
+%}
+%\end{codehigh}
+%
+%\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\NewDocumentCommand\SousTitreBoite{ }{%\BoxSubTitle = Sous-titre
+% \node[fill=white,anchor=east,xshift=-\margeboite,text=red!75!black,%
+% font=\policesoustitreboite] at (frame.north east) %
+% {\vphantom{Ppé}\BoxSubTitle} ;
+%}
+%\end{codehigh}
+%
+%\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\NewDocumentCommand\LogoCoinDroit{ }{%
+% \begin{tcbclipinterior}%
+% \node[opacity=\BoxOpaciteLogo,rotate=-\BoxRotationLogo]%
+% at ($(interior.south east)+(-10pt,10pt)$) %
+% {\includegraphics[height=\BoxHauteurLogo]{\BoxLogo}};%
+% \end{tcbclipinterior}%
+%}
+%\end{codehigh}
+%
+%\pagebreak
+%
+%\subsection{Exemple de personnalisations avancées}
+%
+%Par exemple, on peut modifier globalement le comportement de la boîte :
+%
+%\begin{codehigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\tcbset{baseboite/.style={
+% enhanced,boxrule=0.75pt,%
+% center,width=0.75\linewidth,%
+% before skip=1em,after skip=1em,%
+% colback=white,top=4mm,left=1mm,right=1mm
+% }%
+%}
+%\RenewDocumentCommand\TitreBoite{ m m m m }{%
+% \node[inner sep=2pt,draw=#1,line width=0.75pt,rounded corners,%
+% rectangle,fill=white,anchor=center,xshift=-1cm,text=black,%
+% font=\policetitreboite]%
+% at (frame.north)
+% {%
+% ~#2 #3\ifboolKV[Boites]{Compteur}{~#4}{}\IfStrEq{\BoxCpltTitle}{}{}{\BoxCpltTitle}~
+% } ;
+%}
+%\RenewDocumentCommand\SousTitreBoite{ }{%
+% \node[fill=white,anchor=center,%
+% font=\policesoustitreboite] at (frame.south) {\vphantom{pP}\BoxSubTitle} ;
+%}
+%\ParamBoites[PoliceTitre=\bfseries,PoliceSousTitre=\small\sffamily]
+%\CreationBoite{BoxDef}{CompteurDefi}{\faAddressBook}{Définition}
+%\CreationBoite[lime]{BoxProp}{CompteurProp}{\faAmbulance}{Propriété}
+%\end{codehigh}
+%
+%\tcbset{baseboite/.style={
+%enhanced,boxrule=0.75pt,%
+%center,width=0.75\linewidth,%
+%before skip=1em,after skip=1em,%
+%colback=white,top=4mm,left=1mm,right=1mm
+%}%
+%}
+%
+%\RenewDocumentCommand\TitreBoite{ m m m m }{%
+%\node[inner sep=2pt,draw=#1,line width=0.75pt,rounded corners,%
+%rectangle,fill=white,anchor=center,text=black,%
+%font=\policetitreboite]%
+%at (frame.north)
+%{%
+%~#2 #3\ifboolKV[Boites]{Compteur}{~#4}{}\IfStrEq{\BoxCpltTitle}{}{}{\BoxCpltTitle}~
+%} ;
+%}
+%
+%\RenewDocumentCommand\SousTitreBoite{ }{%
+%\node[fill=white,anchor=center,%
+%font=\policesoustitreboite] at (frame.south) %
+%{\vphantom{pP}\BoxSubTitle} ;
+%}
+%
+%\ParamBoites[PoliceTitre=\bfseries,PoliceSousTitre=\small\sffamily]
+%
+%\CreationBoite{BoxDef}{CompteurDefi}{\faAddressBook}{Définition}
+%\CreationBoite[lime]{BoxProp}{CompteurProp}{\faAmbulance}{Propriété}
+%
+%\begin{demohigh}
+%On va montrer en situation :
+%
+%\begin{BoxDef}[ComplementTitre={ (importante)},SousTitre={- Fin -}]
+%\lipsum[1][1-2]
+%\end{BoxDef}
+%
+%\begin{BoxProp}[ComplementTitre={ (très importante)},Compteur=false]
+%\lipsum[1][3-4]
+%\end{BoxProp}
+%
+%Voili voilà !
+%\end{demohigh}
+%
+%\pagebreak
+%
+%\subsection{Galerie pour des boîtes à destination de cours}
+%
+%Pour les exemples suivants, les paramètres et styles ont été remis par défaut.
+%
+%Toute couleur (\MontreCode{xcolor} n'est pas chargé avec des options spécifiques) peut être utilisée pour créer une boîte.
+%
+%\tcbset{baseboite/.style={
+% enhanced,sharp corners=uphill,boxrule=1.25pt,%
+% before skip=0.5em,after skip=0.5em,%
+% colback=white,top=4mm,left={\margeboite-4.25pt},right={\margeboite-4.25pt}
+%}%
+%}
+%
+%\RenewDocumentCommand\TitreBoite{ m m m m }{%
+% %1=couleur
+% %2=icone
+% %3=nom
+% %4=compteur
+% % \BoxModifLabel = texte entre label et compteur
+% % \BoxCpltTitle = Texte après le compteur
+% \node[inner sep=3pt,rounded corners=3pt,draw=#1,line width=1.25pt,%
+% rectangle,fill=#1!5!white,anchor=west,xshift=\margeboite,text=black,%
+% font=\policetitreboite]%
+% at (frame.north west)
+% {%
+% \,\IfStrEq{#2}{}{}{{\small#2}~}\vphantom{Ppé}%
+% \ifboolKV[Boites]{Pluriel}{\StrBehind{#3}{/}}{\StrBefore{#3}{/}}%
+% \IfStrEq{\BoxModifLabel}{}{}{\BoxModifLabel}\ifboolKV[Boites]{Compteur}{~#4}{}%
+% \IfStrEq{\BoxCpltTitle}{}{}{\BoxCpltTitle}\,%
+% } ;
+%}
+%
+%\RenewDocumentCommand\SousTitreBoite{ }{%\BoxSubTitle = Sous-titre
+% \node[fill=white,anchor=east,xshift=-\margeboite,text=red!75!black,%
+% font=\policesoustitreboite] at (frame.north east) %
+% {\vphantom{Ppé}\BoxSubTitle} ;
+%}
+%
+%\RenewDocumentCommand\LogoCoinDroit{ }{%
+% \begin{tcbclipinterior}%
+% \node[opacity=\BoxOpaciteLogo,rotate=-\BoxRotationLogo]%
+% at ($(interior.south east)+(-10pt,10pt)$) %
+% {\includegraphics[height=\BoxHauteurLogo]{\BoxLogo}};%
+% \end{tcbclipinterior}%
+%}
+%
+%\begin{demohigh}[language=latex/latex2,style/main=cyan!10,style/code=cyan!10]
+%\ParamBoites %on remet à 0 les paramètres
+%\CreationBoite[teal]{EnvDefi}{CptDefi}{\faIcon[regular]{comment-dots}}{Définition/Définitions}
+%\CreationBoite[yellow]{EnvHumour}{CptHumour}{\faIcon[regular]{laugh-wink}}{Humour/Humours}
+%\CreationBoite[violet]{EnvProp}{CptProp}{\faCog}{Propriété/Propriétés}
+%\CreationBoite[red]{EnvThm}{CptThm}{\faBullhorn}{Théorème/Théorèmes}
+%\CreationBoite[blue]{EnvRmq}{CptRmq}{\faHandPointRight[regular]}{Remarque/Remarques}
+%
+%\begin{EnvDefi}
+%\lipsum[1][3-4]
+%\end{EnvDefi}
+%
+%\begin{EnvHumour}
+%\lipsum[2][3-4]
+%\end{EnvHumour}
+%
+%\begin{EnvProp}
+%\lipsum[2][3-4]
+%\end{EnvProp}
+%
+%\begin{EnvThm}
+%\lipsum[2][3-4]
+%\end{EnvThm}
+%
+%\begin{EnvRmq}[Pluriel,Logo={example-image-1x1},SousTitre={ - Fondamentales -}]
+%\lipsum[3][1-7]
+%\end{EnvRmq}
+%\end{demohigh}
+%
+%\pagebreak
+%
+%\section{Historique}
+%
+%\verb|v0.1.0|~:~~~~Version initiale
+%
+%\vspace*{15mm}
+%
+%\pagebreak
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/highlightx/tex/highlightx.sty b/macros/latex/contrib/highlightx/tex/highlightx.sty
new file mode 100644
index 0000000000..fb7a8babf2
--- /dev/null
+++ b/macros/latex/contrib/highlightx/tex/highlightx.sty
@@ -0,0 +1,328 @@
+% Author : C. Pierquet
+% licence : Released under the LaTeX Project Public License v1.3c or later, see http://www.latex-project.org/lppl.txtf
+% source : https://tex.stackexchange.com/questions/5959/cool-text-highlighting-in-latex
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{highlightx}[2023/08/31 0.1.0 Macros pour surligner du texte, meme en mode paragraphe]
+
+%====HISTORIQUE
+% v 0.1.0 Version initiale [fr] et [en]
+
+%====BASE
+\RequirePackage{soul}
+\RequirePackage{atbegshi}
+\RequirePackage{etoolbox}
+\RequirePackage{tikz}
+\RequirePackage{xstring}
+\RequirePackage{simplekv}
+\usetikzlibrary{tikzmark,calc,decorations.pathmorphing}
+\colorlet{hlcolback}{yellow!35}
+
+%====COMMANDES POUR FORMULES
+\tikzstyle{encadreformule}=[decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}]
+\tikzstyle{borderformula}=[decorate,decoration={random steps,amplitude=0.5pt,segment length=1em}]
+
+\defKV[surlignformule]{%
+ Fond=\def\surlignformulefond{#1},%
+ Bord=\def\surlignformulebord{#1},%
+ Texte=\def\surlignformuletexte{#1},%
+ Offset=\def\surlignformuleoffset{#1}
+}
+\setKVdefault[surlignformule]{%
+ Fond=hlcolback,%
+ Bord=none,%
+ Texte=black,%
+ Offset=1pt/2pt
+}
+
+\NewDocumentCommand\SurlignerFormule{ s O{\surlignformulefond} m D<>{} }{%
+ \useKVdefault[surlignformule]%
+ \setKV[surlignformule]{#2}%
+ \IfSubStr{\surlignformuleoffset}{/}%
+ {%
+ \StrCut{\surlignformuleoffset}{/}{\surlignformuleoffsetH}{\surlignformuleoffsetV}%
+ }%
+ {%
+ \def\surlignformuleoffsetH{\surlignformuleoffset}\def\surlignformuleoffsetV{\surlignformuleoffset}%
+ }%
+ \tikzmarknode[inner sep=0pt,outer sep=0pt]{formule}{\ensuremath{#3}}%
+ \begin{tikzpicture}[remember picture,overlay]
+ \IfBooleanTF{#1}%
+ {%
+ \fill[\surlignformulefond,draw=\surlignformulebord,#4] ([xshift=-\surlignformuleoffsetH,yshift=-\surlignformuleoffsetV]formule.south west) rectangle ([xshift=\surlignformuleoffsetH,yshift=\surlignformuleoffsetV]formule.north east) node[text=\surlignformuletexte,midway] {\ensuremath{#3}} ;
+ }%
+ {%
+ \fill[\surlignformulefond,draw=\surlignformulebord,encadreformule,#4] ([xshift=-\surlignformuleoffsetH,yshift=-\surlignformuleoffsetV]formule.south west) rectangle ([xshift=\surlignformuleoffsetH,yshift=\surlignformuleoffsetV]formule.north east) node[text=\surlignformuletexte,midway] {\ensuremath{#3}} ;
+ }
+ \end{tikzpicture}%
+}
+
+\defKV[hlformula]{%
+ bg=\def\hlformulabg{#1},%
+ border=\def\hlformulaborder{#1},%
+ text=\def\surlignformulatext{#1},%
+ offset=\def\hlformulaoffset{#1}
+}
+\setKVdefault[hlformula]{%
+ bg=hlcolback,%
+ border=none,%
+ text=black,%
+ offset=1pt/2pt
+}
+
+\NewDocumentCommand\HighlightFormula{ s O{\surlignformulefond} m D<>{} }{%
+ \useKVdefault[hlformula]%
+ \setKV[hlformula]{#2}%
+ \IfSubStr{\hlformulaoffset}{/}%
+ {%
+ \StrCut{\hlformulaoffset}{/}{\hlformulaoffsetH}{\hlformulaoffsetV}%
+ }%
+ {%
+ \def\hlformulaoffsetH{\hlformulaoffset}\def\hlformulaoffsetV{\hlformulaoffset}%
+ }%
+ \tikzmarknode[inner sep=0pt,outer sep=0pt]{formula}{\ensuremath{#3}}%
+ \begin{tikzpicture}[remember picture,overlay]
+ \IfBooleanTF{#1}%
+ {%
+ \fill[\hlformulabg,draw=\hlformulaborder,#4] ([xshift=-\hlformulaoffsetH,yshift=-\hlformulaoffsetV]formula.south west) rectangle ([xshift=\hlformulaoffsetH,yshift=\hlformulaoffsetV]formula.north east) node[text=\surlignformulatext,midway] {\ensuremath{#3}} ;
+ }%
+ {%
+ \fill[\hlformulabg,draw=\hlformulaborder,borderformula,#4] ([xshift=-\hlformulaoffsetH,yshift=-\hlformulaoffsetV]formula.south west) rectangle ([xshift=\hlformulaoffsetH,yshift=\hlformulaoffsetV]formula.north east) node[text=\surlignformulatext,midway] {\ensuremath{#3}} ;
+ }
+ \end{tikzpicture}%
+}
+
+%====COMMANDES POUR PARAGRAPHES SIMPLES (tcbox par exemple)
+\NewDocumentCommand\genhighlightpar{ O{hlcolback} m }{%
+ {\sethlcolor{#1}\hl{#2}}%
+}
+
+%====COMPTEURS ET VARIABLES
+\newlength{\txtdec@depth}
+\setlength{\txtdec@depth}{.5ex}
+\newlength{\txtdec@height}
+\setlength{\txtdec@height}{\f@size pt} % sensible default
+\newcounter{txtdec@hyphmark}
+\newcounter{txtdec@decormark}
+\setcounter{txtdec@decormark}{1}
+\newcounter{txtdec@hyphdraw}
+\setcounter{txtdec@hyphdraw}{1}
+\newcounter{txtdec@decordraw}
+\setcounter{txtdec@decordraw}{1}
+\newcounter{txtdec@thenextpage}
+\newtoggle{txtdec@unfinisheddecor}
+\newtoggle{txtdec@stayonpage}
+\newtoggle{txtdec@stayondecor}
+\newtoggle{txtdec@stayonline}
+
+%====COMMANDES AUXILIAIRES
+% from https://tex.stackexchange.com/a/33765/105447
+\newcommand{\gettikzxy}[3]{%
+ \tikz@scan@one@point\pgfutil@firstofone#1\relax
+ \edef#2{\the\pgf@x}%
+ \edef#3{\the\pgf@y}%
+}
+
+% the drawing macros
+\tikzset{%
+ defaultdecor/.style={%
+ fill=hlcolback,
+ decoration = {random steps, amplitude=0.5pt, segment length=1em},
+ outer sep = -15pt,
+ inner sep = 0pt,
+ decorate}%
+}
+
+\newcommand{\txtdec@draw@all}{%
+ \tikzset{thisdecor/.style/.expanded=\csuse{decor@tikz@style@\thetxtdec@decordraw}}%
+ \path[defaultdecor, thisdecor]
+ ($(\Xbegin,\Ybegin)+(0,-\txtdec@depth)$) rectangle
+ ($(\Xend,\Yend)+(0,\txtdec@height-\txtdec@depth)$) ;
+}
+
+\newcommand{\txtdec@draw@begin}{%
+ \tikzset{thisdecor/.style/.expanded=\csuse{decor@tikz@style@\thetxtdec@decordraw}}%
+ \path[defaultdecor, thisdecor]
+ ($(\Xbegin,\Ybegin)+(0,-\txtdec@depth)$) rectangle
+ ($(\Xlineend,\Ylineend)+(0,\txtdec@height-\txtdec@depth)$) ;
+}
+
+\newcommand{\txtdec@draw@middle}{%
+ \tikzset{thisdecor/.style/.expanded=\csuse{decor@tikz@style@\thetxtdec@decordraw}}%
+ \path[defaultdecor, thisdecor]
+ ($(\Xlinebegin,\Ylinebegin)+(0,-\txtdec@depth)$) rectangle
+ ($(\Xlineend,\Ylineend)+(0,\txtdec@height-\txtdec@depth)$) ;
+}
+
+\newcommand{\txtdec@draw@end}{%
+ \tikzset{thisdecor/.style/.expanded=\csuse{decor@tikz@style@\thetxtdec@decordraw}}%
+ \path[defaultdecor, thisdecor]
+ ($(\Xlinebegin,\Ylinebegin)+(0,-\txtdec@depth)$) rectangle
+ ($(\Xend,\Yend)+(0,\txtdec@height-\txtdec@depth)$) ;
+}
+
+% using soul to set tikzmarks
+\def\SOUL@tdleaders{%
+ \stepcounter{txtdec@hyphmark}%
+ \tikzmark{p\thepage.d\arabic{txtdec@decormark}.\arabic{txtdec@hyphmark}}%
+ \leaders\hrule\@depth\z@\@height\z@\relax
+}
+\def\SOUL@tdunderline#1{{%
+ \setbox\z@\hbox{#1}%
+ \dimen@=\wd\z@
+ \dimen@i=\SOUL@uloverlap
+ \advance\dimen@2\dimen@i
+ \rlap{%
+ \null
+ \kern-\dimen@i
+ \SOUL@ulcolor{\SOUL@tdleaders\hskip\dimen@}%
+ \hskip\dimen@
+ }%
+ \unhcopy\z@
+}}
+\def\SOUL@tdpreamble{%
+ \spaceskip\SOUL@spaceskip
+ \setcounter{txtdec@hyphmark}{0}%
+ \tikzmark{p\thepage.d\arabic{txtdec@decormark}.begin}%
+}
+\def\SOUL@tdeverysyllable{%
+ \SOUL@tdunderline{%
+ \the\SOUL@syllable
+ \SOUL@setkern\SOUL@charkern
+ }%
+ \stepcounter{txtdec@hyphmark}%
+ \tikzmark{p\thepage.d\arabic{txtdec@decormark}.\arabic{txtdec@hyphmark}}%
+}
+\def\SOUL@tdeveryhyphen{%
+ \discretionary{%
+ \unkern
+ \SOUL@tdunderline{%
+ \SOUL@setkern\SOUL@hyphkern
+ \SOUL@sethyphenchar
+ }%
+ \stepcounter{txtdec@hyphmark}%
+ \tikzmark{p\thepage.d\arabic{txtdec@decormark}.\arabic{txtdec@hyphmark}}%
+ }{}{}%
+}
+\def\SOUL@tdeveryexhyphen#1{%
+ \SOUL@setkern\SOUL@hyphkern
+ \SOUL@tdunderline{#1}%
+ \stepcounter{txtdec@hyphmark}%
+ \tikzmark{p\thepage.d\arabic{txtdec@decormark}.\arabic{txtdec@hyphmark}}%
+ \discretionary{}{}{%
+ \SOUL@setkern\SOUL@charkern
+ }%
+}
+\def\SOUL@tdpostamble{%
+ % create an extra mark, vertically displaced, to create an exit condition for the last line
+ \stepcounter{txtdec@hyphmark}%
+ \raisebox{-5pt}{\tikzmark{p\thepage.d\arabic{txtdec@decormark}.\arabic{txtdec@hyphmark}}}%
+ \tikzmark{p\thepage.d\arabic{txtdec@decormark}.end}%
+ \stepcounter{txtdec@decormark}%
+}
+\def\SOUL@tdsetup{%
+ \SOUL@setup
+ \let\SOUL@preamble\SOUL@tdpreamble
+ \let\SOUL@everysyllable\SOUL@tdeverysyllable
+ \let\SOUL@everyhyphen\SOUL@tdeveryhyphen
+ \let\SOUL@everyexhyphen\SOUL@tdeveryexhyphen
+ \let\SOUL@postamble\SOUL@tdpostamble
+}
+
+%====COMMANDES PRINCIPALES
+\DeclareRobustCommand*\SurlignerTexte[1][]{%
+ \csxdef{decor@tikz@style@\thetxtdec@decormark}{#1}%
+ \csxdef{decor@fsize@\thetxtdec@decormark}{\f@size pt}%
+ \SOUL@tdsetup\SOUL@%
+}
+
+\DeclareRobustCommand*\HighlightText[1][]{%
+ \csxdef{decor@tikz@style@\thetxtdec@decormark}{#1}%
+ \csxdef{decor@fsize@\thetxtdec@decormark}{\f@size pt}%
+ \SOUL@tdsetup\SOUL@%
+}
+
+\AtBeginShipout{%
+ \AtBeginShipoutUpperLeft{%
+ % getting the number of the next page
+ \setcounter{txtdec@thenextpage}{\thepage}%
+ \stepcounter{txtdec@thenextpage}%
+ % if the current decoration occurs on this page, stay on it
+ \iftikzmark{p\thepage.d\arabic{txtdec@decordraw}.\arabic{txtdec@hyphdraw}}{%
+ \toggletrue{txtdec@stayonpage}}{}%
+ \whileboolexpr{togl {txtdec@stayonpage}}{%
+ \begin{tikzpicture}[remember picture, overlay]
+ \setlength{\txtdec@height}{\csuse{decor@fsize@\thetxtdec@decordraw}}%
+ \iftikzmark{p\thepage.d\arabic{txtdec@decordraw}.begin}{%
+ % if current decor begins in current page, get coordinates
+ \gettikzxy{(pic cs:p\thepage.d\arabic{txtdec@decordraw}.begin)}{\Xbegin}{\Ybegin}}{%
+ % if current decor begins in previous page, set to top left of the page
+ \gettikzxy{(current page.north west)}{\Xbegin}{\Ybegin}}%
+ \iftikzmark{p\thepage.d\arabic{txtdec@decordraw}.end}{%
+ % if current decor ends in current page, get coordinates
+ \gettikzxy{(pic cs:p\thepage.d\arabic{txtdec@decordraw}.end)}{\Xend}{\Yend}}{%
+ % if current decor ends in future page, set to bottom right of the page
+ \gettikzxy{(current page.south east)}{\Xend}{\Yend}}%
+ \ifdim\Ybegin=\Yend % the simplest case, a single line
+ \txtdec@draw@all
+ \stepcounter{txtdec@decordraw}%
+ \else % current textdecor has a line break
+ \toggletrue{txtdec@stayondecor}%
+ \whileboolexpr{togl {txtdec@stayondecor}}{%
+ \gettikzxy{(pic cs:p\thepage.d\arabic{txtdec@decordraw}.\arabic{txtdec@hyphdraw})}{\Xlinebegin}{\Ylinebegin}%
+ \edef\Xcurrent{\Xlinebegin}%
+ \edef\Ycurrent{\Ylinebegin}%
+ \edef\Xnext{\Xcurrent}%
+ \edef\Ynext{\Ycurrent}%
+ \toggletrue{txtdec@stayonline}%
+ \whileboolexpr{togl {txtdec@stayonline}}{%
+ \ifdim\Ycurrent=\Ynext
+ \stepcounter{txtdec@hyphdraw}%
+ % if the following tikzmark exists, we are at a page break
+ \iftikzmark{p\arabic{txtdec@thenextpage}.d\arabic{txtdec@decordraw}.\arabic{txtdec@hyphdraw}}{%
+ \edef\Xcurrent{\Xnext}%
+ \edef\Ycurrent{\Ynext}%
+ \gettikzxy{(current page.south east)}{\Xnext}{\Ynext}
+ \togglefalse{txtdec@stayondecor}%
+ }{% else, we remain on the same page
+ \iftikzmark{p\thepage.d\arabic{txtdec@decordraw}.\arabic{txtdec@hyphdraw}}{%
+ \edef\Xcurrent{\Xnext}%
+ \edef\Ycurrent{\Ynext}%
+ \gettikzxy{(pic cs:p\thepage.d\arabic{txtdec@decordraw}.\arabic{txtdec@hyphdraw})}{\Xnext}{\Ynext}}{}%
+ }%
+ \else
+ \edef\Xlineend{\Xcurrent}%
+ \edef\Ylineend{\Ycurrent}%
+ % if we are on the first line of the current decoration
+ \ifdim\Ylinebegin=\Ybegin
+ \txtdec@draw@begin
+ \else
+ % if we are on the last line of the current decoration
+ \ifdim\Ycurrent=\Yend
+ \txtdec@draw@end
+ \stepcounter{txtdec@decordraw}%
+ \setcounter{txtdec@hyphdraw}{1}%
+ \togglefalse{txtdec@stayondecor}%
+ % if we are in a middle line of the decoration
+ \else
+ \txtdec@draw@middle
+ \fi
+ \fi
+ \togglefalse{txtdec@stayonline}%
+ \fi
+ }%
+ }%
+ \fi
+ \end{tikzpicture}%
+ % if the beginning of the next decor does not exist in this page, leave this page
+ \iftikzmark{p\thepage.d\arabic{txtdec@decordraw}.begin}{}{%
+ \togglefalse{txtdec@stayonpage}}%
+ % if the continuation of the current decor exists in the next page, leave this page
+ \iftikzmark{p\arabic{txtdec@thenextpage}.d\arabic{txtdec@decordraw}.\arabic{txtdec@hyphdraw}}{%
+ \togglefalse{txtdec@stayonpage}}{}%
+ }%
+ }%
+}
+
+
+\endinput \ No newline at end of file
diff --git a/macros/latex/contrib/huawei/huawei.dtx b/macros/latex/contrib/huawei/huawei.dtx
index 7297aae941..f2b24f8581 100644
--- a/macros/latex/contrib/huawei/huawei.dtx
+++ b/macros/latex/contrib/huawei/huawei.dtx
@@ -50,7 +50,7 @@
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{huawei}
%<*class>
-[2023-08-09 0.18.0 Template for Huawei Documents]
+[2023-08-31 0.18.1 Template for Huawei Documents]
%</class>
%<*driver>
\documentclass{ltxdoc}
@@ -447,7 +447,7 @@ $pdflatex = 'pdflatex %O --shell-escape %S';
% Then, we configure |enumitem|:
% \begin{macrocode}
-\RequirePackage{enumitem}
+\RequirePackage[inline]{enumitem}
\setlist{nosep}
% \end{macrocode}
@@ -707,7 +707,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
\begin{textblock}{14}[0.5,0.5](8,8)%
\tikz \node[minimum width=14\TPHorizModule] {%
\fontsize{64}{64}\selectfont\sffamily\scshape%
- \color{gray!20}\rotatebox{30}{it is a draft}
+ \color{gray!20}\rotatebox{30}{it is a draft}%
};%
\end{textblock}%
\else\fi%
@@ -725,7 +725,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
\begin{textblock}{8}[1,0](15.8,0.2)%
\raggedleft\huawei@header{%
\ifdefined\huawei@nosecurity\else%
- \thesecurity
+ \thesecurity%
\fi%
}%
\end{textblock}%
@@ -737,14 +737,14 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
\ifdefined\huawei@anonymous\else%
\theauthor%
\ifdefined\huawei@nosecurity\else%
- \ifx\theid\empty\else, \theid\fi
+ \ifx\theid\empty\else, \theid\fi%
\fi%
\ifdefined\huawei@nobrand\else%
\newline
\fi%
\fi%
\ifdefined\huawei@nobrand\else%
- \thecompany{}
+ \thecompany{}%
\fi%
}%
\fi%
@@ -781,35 +781,38 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
% Then, we redefine |\maketitle|:
% \begin{macrocode}
\makeatletter\renewcommand\maketitle{%
- \vspace*{18pt}
- {\bfseries{\Huge\thetitle\par}}
+ \vspace*{18pt}%
+ {\bfseries{\Huge\raggedright\thetitle\par}}%
\ifx\thesubtitle\empty\else%
- {\color{gray!50!black}\large\thesubtitle\par}
- \fi
+ {\color{gray!50!black}\large\raggedright\thesubtitle\par}%
+ \fi%
\ifdefined\huawei@nobrand\else%
\ifdefined\huawei@anonymous\else%
\ifx\thecompany\empty\else%
- \thecompany\newline
- \fi
- \fi
- \fi
- \ifx\theauthor\empty\else%
- {\scshape\ifdefined\huawei@anonymous
- Anonymous Authors
- \else%
- \theauthor
- \fi}%
+ \thecompany\par%
+ \fi%
+ \fi%
\fi%
- \ifdefined\huawei@anonymous\else%
- \ifx\theauthor\empty\else
- \ifdefined\huawei@nobrand\else%
- \ifx\theid\empty\else
- $\;$/ {\theid}
- \fi
- \fi
- \fi
- \fi
- \vspace{2em}
+ \parbox{.6\textwidth}{\raggedright%
+ \ifx\theauthor\empty\else%
+ {\scshape\ifdefined\huawei@anonymous%
+ Anonymous Authors%
+ \else%
+ \theauthor%
+ \fi}%
+ \fi%
+ \ifdefined\huawei@anonymous\else%
+ \ifx\theauthor\empty\else%
+ \ifdefined\huawei@nobrand\else%
+ \ifx\theid\empty\else%
+ $\;$/ {\theid}%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+ \par%
+ }%
+ \vspace{2em}%
}\makeatother
% \end{macrocode}
% \end{macro}
@@ -869,7 +872,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
cannot be held liable for the use of and reliance of
the opinions, estimates, forecasts and findings in
these documents.
- \par
+ \par%
\endgroup%
}\makeatother
% \end{macrocode}
@@ -878,25 +881,25 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
% \begin{macro}{\PrintFirstPage}
% Then, we define |\PrintFirstPage|:
% \begin{macrocode}
-\makeatletter\newcommand\PrintFirstPage[1]{
- \ifdefined\huawei@landscape\else
+\makeatletter\newcommand\PrintFirstPage[1]{%
+ \ifdefined\huawei@landscape\else%
\PackageError{huawei}{It's allowed to use
PrintFirstPage only in landscape mode}{Read huawei.pdf
for more information}
- \fi
- \huawei@bar
+ \fi%
+ \huawei@bar%
\def\param{#1}%
- \ifx\param\empty\else
- \includegraphics[height=2in]{#1}
- \newline
- \fi
- \vspace*{0.5in}
- \maketitle
- \ifdefined\huawei@nocover\else
- \begin{textblock}{14}[1,1](14,14)
- \raggedleft\includegraphics[height=3.6in]{huawei-cover-picture.pdf}
- \end{textblock}
- \fi
+ \ifx\param\empty\else%
+ \includegraphics[height=2in]{#1}%
+ \newline%
+ \fi%
+ \vspace*{0.5in}%
+ \maketitle%
+ \ifdefined\huawei@nocover\else%
+ \begin{textblock}{14}[1,1](14,14)%
+ \raggedleft\includegraphics[height=3.6in]{huawei-cover-picture.pdf}%
+ \end{textblock}%
+ \fi%
}\makeatother
% \end{macrocode}
% \end{macro}
@@ -904,32 +907,32 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
% \begin{macro}{\PrintLastPage}
% Then, we define |\PrintLastPage|:
% \begin{macrocode}
-\makeatletter\newcommand\PrintLastPage{
- \ifdefined\huawei@landscape\else
+\makeatletter\newcommand\PrintLastPage{%
+ \ifdefined\huawei@landscape\else%
\PackageError{huawei}{It's allowed to use
PrintLastPage only in landscape mode}{Read huawei.pdf
for more information}
- \fi
- \newpage
- \vspace*{1in}
- \begin{center}
- \begin{minipage}{0.6\columnwidth}\raggedright
- \normalsize
- \setlength{\parskip}{6pt}
- {\Huge\color{red}\textbf{Thank you!}}
-
- \vspace{0.5in}
-
+ \fi%
+ \newpage%
+ \vspace*{1in}%
+ \begin{center}%
+ \begin{minipage}{0.6\columnwidth}\raggedright%
+ \normalsize%
+ \setlength{\parskip}{6pt}%
+ {\Huge\color{red}\textbf{Thank you!}}%
+ \par%
+ \vspace{0.5in}%
+ \par%
Bring digital to every person, home and organization
- \newline
+ \newline%
for a fully connected, intelligent world.
-
+ \par%
\textbf{%
Copyright \copyright{} \the\year{} \thecompany{}
\newline
All Rights Reserved.%
}
-
+ \par%
The information in this document may contain predictive
statements including, without limitation, statements regarding
the future financial and operating results, future product
@@ -942,7 +945,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
The author%
\else%
\thecompany{}%
- \fi
+ \fi%
may change the information at any time without notice.
\end{minipage}
\end{center}%
@@ -976,7 +979,7 @@ xscale=#1, inner sep=0pt, outer sep=0pt]
% Then, we set the background color of the document, if required by the |dark| class option:
% \begin{macrocode}
-\makeatletter\ifdefined\huawei@dark
+\makeatletter\ifdefined\huawei@dark%
\RequirePackage{pagecolor}%
\pagecolor{black}%
\color{white}%
diff --git a/macros/latex/contrib/huawei/huawei.pdf b/macros/latex/contrib/huawei/huawei.pdf
index f002dcbce5..e744f240b8 100644
--- a/macros/latex/contrib/huawei/huawei.pdf
+++ b/macros/latex/contrib/huawei/huawei.pdf
Binary files differ
diff --git a/macros/latex/contrib/jwjournal/README.md b/macros/latex/contrib/jwjournal/README.md
index 996d0376a0..20f9f77307 100644
--- a/macros/latex/contrib/jwjournal/README.md
+++ b/macros/latex/contrib/jwjournal/README.md
@@ -13,7 +13,16 @@ Codewise, it is as simple as below:
Today I visited the botanical garden!
- [Food] And had ice-cream for lunch!
+ [Food] And had *ice cream* for lunch!
+
+ >>> This botanical garden has a history of nearly two hundred years, take a look at this photo:
+ || <0.40> {example-image}
+
+ (( <0.45> {example-image-a}
+ <- <5>
+ )) <0.50> {example-image-b}
+ <- <5>
+ (( <0.45> {example-image-c}
```
> It is also possible to write the date as `2023/01/01`.
@@ -35,28 +44,34 @@ By the way, the conversion from plain date string like `2023-01-01` to natural l
The structure of the document is very simple:
```latex
-\documentclass[11pt, paperstyle=light yellow, color entry]{jwjournal}
+\documentclass[11pt, paperstyle = light yellow, color entry]{jwjournal}
+\UseLanguage{⟨language⟩}
\begin{document}
+
+
% Your journal
+
+
\end{document}
```
-The options are:
-- `month-day-year` or `day-month-year` for other date format
-- `paperstyle = ...` adjusts the paper color, options include: lightyellow、yellow、parchment、green、lightgray、gray、nord、dark...
-- `color entry` adds more color to the title of each entry
-- `scroll` turns on the scroll mode and can generate a single-page pdf similar to a long screenshot
+The available class options include:
+- `month-day-year` or `day-month-year` for using other date format;
+- `paperstyle = ...` adjusts the paper color, choices include: `light yellow`, `yellow`, `parchment`, `green`, `light gray`, `gray`, `nord`, `dark`...
+- `color entry` adds more color to the title of each entry;
+- `scroll` turns the scroll mode on, which generates a single-page pdf similar to a long screenshot.
-And there are only three major syntaxes for the main text:
+Here are the major syntaxes for your main text:
1) Title
- - Any line begins with date like `2023-01-01` would be regard as the *Title* line.
+ - Any line begins with date like `2023-01-01` or `2023/01/01` would be regard as the *Title* line.
- You may write the weather and/or location after the date.
- Example:
```
- 2023-01-01 Sunny --- Apartment
+ 2023-01-01 Sunny | Apartment
```
-2) Note
+ > With the options `month-day-year` or `day-month-year`, you can also write date in the format `mm-dd-yyyy` or `dd-mm-yyyy`, respectively. You may refer to the English and French demo documents for examples.
+1) Note
- Any line begins with something like `[Note]` would be regard as the *Note* line.
- Example:
```
@@ -64,10 +79,17 @@ And there are only three major syntaxes for the main text:
```
The space(s) between `[Note]` and the text following it would be ignored.
> You may also use `【` and `】`, which is especially useful when writing Chinese.
-3) Displayed images can be included via one of the following ways:
- - `|| <⟨width⟩> {⟨image file name⟩}` or `|| {⟨image file name⟩} <⟨width⟩>`: show image in the middle.
- - `(( <⟨width⟩> {⟨image file name⟩}` or `(( {⟨image file name⟩} <⟨width⟩>`: show image on the left.
- - `)) <⟨width⟩> {⟨image file name⟩}` or `)) {⟨image file name⟩} <⟨width⟩>`: show image on the right.
+1) Emphasis
+ - You may emphasize text as with Markdown:
+ - `*⟨text⟩*` is emphasizing;
+ - `**⟨text⟩**` is bolding;
+ - `***⟨text⟩***` is bolding and emphasizing.
+ - You may put text in a colored block via `>>>`, its usage is like the `>` in Markdown for blockquote.
+1) Image
+ - Displayed images can be included via one of the following ways:
+ - `|| <⟨width⟩> {⟨image file name⟩}` or `|| {⟨image file name⟩} <⟨width⟩>`: show image in the middle.
+ - `(( <⟨width⟩> {⟨image file name⟩}` or `(( {⟨image file name⟩} <⟨width⟩>`: show image on the left.
+ - `)) <⟨width⟩> {⟨image file name⟩}` or `)) {⟨image file name⟩} <⟨width⟩>`: show image on the right.
> The `<⟨width⟩>` is optional. Here `⟨width⟩` is a number like `0.75`, the unit is `\linewidth`. When `<⟨width⟩>` is not given, the width would be full `\linewidth`.
With a few more for icing on the cake:
@@ -111,6 +133,8 @@ With a few more for icing on the cake:
> You may also refer to the demo documents to see their behaviors in action.
+> And don't forget that you are still using LaTeX! Thus if the provided syntax does not satisfy you, there are always LaTeX commands as a fallback.
+
Indentations are not important, but paragraphs need to be separated by a blank line. For the sake of readability, it is recommended to organize your text as one of the following ways:
- with indentation:
```
diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf b/macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf
index 40281336ad..7980506f1e 100644
--- a/macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf
+++ b/macros/latex/contrib/jwjournal/jwjournal-demo-cn.pdf
Binary files differ
diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex b/macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex
index 5ed5d23589..9cd0937d84 100644
--- a/macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex
+++ b/macros/latex/contrib/jwjournal/jwjournal-demo-cn.tex
@@ -12,21 +12,23 @@
在文中出现的日期和标注不会被识别: 2022-12-25、[标注]、【标注】,放心使用!
- [体育] 一些关于体育赛事的事情
+ [文本] 你可以使用*斜体*、**粗体**或者***两者结合***。
- 【学习】 % 【...】与 [...] 效果相同
- 一些关于学习的事情
+ 【说明】 % 【...】与 [...] 效果相同
+ 在一些特殊情况需要把星号用 \texttt{\{\}} 隔开:**像**{}***这***{}*样*。
- 图片这可以这样引入:
+ >>> 像这样可以把文本放在色彩框内。
- || <.4> {example-image-a} % 或者 || {example-image-a} <.4>
+ 图片可以这样引入:
+
+ || <.4> {example-image} % 或者 || {example-image} <.4>
>> (图片的注释)
>> (更多注释)
也可以靠左或者靠右显示:
(( <.4> {example-image-a} % 或者 (( {example-image-a} <.4>
-> <.3> % 加入一点竖直间距,例如这里是 0.3\baselineskip
- )) <.4> {example-image-a} % 或者 )) {example-image-a} <.4>
+ )) <.4> {example-image-b} % 或者 )) {example-image-b} <.4>
diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-en.pdf b/macros/latex/contrib/jwjournal/jwjournal-demo-en.pdf
index 04b98e6366..eeffdf0183 100644
--- a/macros/latex/contrib/jwjournal/jwjournal-demo-en.pdf
+++ b/macros/latex/contrib/jwjournal/jwjournal-demo-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-en.tex b/macros/latex/contrib/jwjournal/jwjournal-demo-en.tex
index 5a5d8740c9..0fb357e3ee 100644
--- a/macros/latex/contrib/jwjournal/jwjournal-demo-en.tex
+++ b/macros/latex/contrib/jwjournal/jwjournal-demo-en.tex
@@ -10,20 +10,22 @@
Dates and annotations appearing in the text will not be recognized: 12/25/2022, [Note], so feel free to write these.
- [Sports] something about sporting events.
+ [Text] You can write text in *italics*, **bold** or ***both***.
- [Learning] something about learning.
+ [Remark] In some special cases, it would be necessary to separate the asterisks with~\texttt{\{\}}: **like**{}***this***{}*one*.
+
+ >>> You can put text inside a colored block like this.
Images can be included via:
- || <.4> {example-image-a} % or || {example-image-a} <.4>
+ || <.4> {example-image} % or || {example-image} <.4>
>> (Remark on the image)
>> (More remark...)
You may also show the image on the left or on the right:
(( <.4> {example-image-a} % or (( {example-image-a} <.4>
-> <.3> % add some vertical spacing, here is 0.3\baselineskip
- )) <.4> {example-image-a} % or )) {example-image-a} <.4>
+ )) <.4> {example-image-b} % or )) {example-image-b} <.4>
diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-fr.pdf b/macros/latex/contrib/jwjournal/jwjournal-demo-fr.pdf
index 7303b8b07e..98da8d1897 100644
--- a/macros/latex/contrib/jwjournal/jwjournal-demo-fr.pdf
+++ b/macros/latex/contrib/jwjournal/jwjournal-demo-fr.pdf
Binary files differ
diff --git a/macros/latex/contrib/jwjournal/jwjournal-demo-fr.tex b/macros/latex/contrib/jwjournal/jwjournal-demo-fr.tex
index 865402e254..f83a5d4ae1 100644
--- a/macros/latex/contrib/jwjournal/jwjournal-demo-fr.tex
+++ b/macros/latex/contrib/jwjournal/jwjournal-demo-fr.tex
@@ -12,20 +12,22 @@
Les dates et annotations apparaissant dans le texte ne seront pas détectées : 25/12/2022, [Note], alors n'hésitez pas à les écrire !
- [Sports] quelque chose sur les événements sportifs.
+ [Texte] Vous pouvez écrire votre texte en *italique*, **gras** ou ***les deux***.
- [Apprendre] quelque chose sur l'apprentissage.
+ [Remarque] Dans certains cas particuliers, il serait nécessaire de séparer les astérisques par~\texttt{\{\}} : **comme**{}***cet***{}*exemple*.
+
+ >>> Vous pouvez mettre votre texte dans un bloc coloré comme celui-ci.
Les images peuvent être incluses via :
- || <.4> {example-image-a} % ou || {example-image-a} <.4>
+ || <.4> {example-image} % ou || {example-image} <.4>
>> (Remarque sur l'image)
>> (Plus de remarque...)
Vous pouvez également afficher l'image à gauche ou à droite :
(( <.4> {example-image-a} % ou (( {example-image-a} <.4>
-> <.3> % ajouter un certain espace vertical, ici c'est 0.3\baselineskip
- )) <.4> {example-image-a} % ou )) {example-image-a} <.4>
+ )) <.4> {example-image-b} % ou )) {example-image-b} <.4>
diff --git a/macros/latex/contrib/jwjournal/jwjournal.cls b/macros/latex/contrib/jwjournal/jwjournal.cls
index bf03993158..c178db4e59 100644
--- a/macros/latex/contrib/jwjournal/jwjournal.cls
+++ b/macros/latex/contrib/jwjournal/jwjournal.cls
@@ -12,7 +12,7 @@
\NeedsTeXFormat{LaTeX2e}[2022-06-01]
\ProvidesExplClass
{jwjournal}
- {2023/08/30} {}
+ {2023/08/31} {}
{JW's journal class}
\keys_define:nn { jwjournal }
@@ -57,6 +57,14 @@
\colorlet { jwjournal-entry } { . }
+\NewDocumentCommand \JWJournalSeperator { O{jwjournal-entry!60!main-text} }
+ {
+ \enspace
+ \tikz [x=.75ex,y=.75ex,line~width=.2ex,line~join=round,baseline=-.3ex]
+ \draw [#1] (0,.5) -- (.5,1) -- (1,.5) -- (.5,0) -- (0,.5) -- cycle;
+ \enspace
+ }
+
\NewDocumentCommand \JWJournalEntry { m m }
{
\skip_vertical:n { .5 \baselineskip }
@@ -70,7 +78,7 @@
{
\colorlet { jwjournal-entry-background } { paper }
}
- \begin{tcolorbox}[enhanced~jigsaw, breakable,
+ \begin{tcolorbox}[enhanced~jigsaw,
enlarge~left~by=-3.5mm, width=\textwidth+3.5mm,
colback=jwjournal-entry-background,
boxrule=0pt, top=2pt, bottom=2pt, left=2.5mm, right=
@@ -84,15 +92,11 @@
\color {jwjournal-entry!30!main-text}
}
\ProjLibDate {#1}
- \enspace
- \tikz [x=.75ex,y=.75ex,line~width=.2ex,line~join=round,baseline=-.3ex] \draw [jwjournal-entry!60!main-text] (0,.5) -- (.5,1) -- (1,.5) -- (.5,0) -- (0,.5) -- cycle;
- \enspace
+ \JWJournalSeperator{}
\projlib_datetime_display_week_uppercase:n { #1 }
\tl_if_blank:eF { #2 }
{
- \enspace
- \tikz [x=.75ex,y=.75ex,line~width=.2ex,line~join=round,baseline=-.3ex] \draw [jwjournal-entry!60!main-text] (0,.5) -- (.5,1) -- (1,.5) -- (.5,0) -- (0,.5) -- cycle;
- \enspace
+ \JWJournalSeperator{}
#2
}
\end{tcolorbox}
@@ -100,11 +104,10 @@
}
\RequirePackage { enumitem }
-\setlist [ description ] { font = \normalfont\sffamily, leftmargin = 3em, topsep = 0pt }
+\setlist [ description ] { font = \normalfont\sffamily, leftmargin = 3em, topsep = 0pt, labelsep = 1em }
\RenewDocumentCommand \descriptionlabel { m }
{
- \skip_horizontal:n { \labelsep }
- \makebox[\maxof{\width}{2.5em}]{
+ \makebox[\maxof{\width}{2em}][l]{
\tcbox[enhanced~jigsaw, breakable, oversize,
on~line, arc = .12em, outer~arc = .1em,
colframe = jwjournal-entry, colupper=main-text, opacityback = 0,
@@ -119,6 +122,26 @@
\end{description}
}
+\NewDocumentCommand \JWJournalNote { m }
+ {
+ \bool_if:NTF \l__jwjournal_color_entry_bool
+ {
+ \colorlet { jwjournal-note-background } { jwjournal-entry!3!paper }
+ }
+ {
+ \colorlet { jwjournal-note-background } { paper }
+ }
+ \begin{tcolorbox}[enhanced~jigsaw, breakable,
+ colback=jwjournal-note-background,
+ boxrule=0pt, top=2pt, bottom=2pt, left=1em-1mm, right=
+ \bool_if:NTF \l__jwjournal_color_entry_bool
+ { 2mm }
+ { -1mm },
+ borderline~west={1mm}{0mm}{jwjournal-entry!90!main-text!60!paper}, frame~hidden]
+ #1
+ \end{tcolorbox}
+ }
+
\NewDocumentCommand \JWJournalSkip { D<>{.5} }
{
% \vspace{#1\baselineskip}
@@ -316,10 +339,36 @@
{ \c{c_jwjournal_new_line_with_skip_tl} }
\l_jwjournal_tmp_tl
- % \regex_replace_all:nnN
- % { >> (.*) }
- % { \c{JWJournalCompactCenterText}\{\1\} }
- % \l_jwjournal_tmp_tl
+ \regex_replace_all:nnN
+ { \*\*\* (.*?) \*\*\* }
+ { \c{textbf}\{ \c{emph}\{ \1 \} \} }
+ \l_jwjournal_tmp_tl
+ \regex_replace_all:nnN
+ { \*\* (.*?) \*\* }
+ { \c{textbf}\{ \1 \} }
+ \l_jwjournal_tmp_tl
+ \regex_replace_all:nnN
+ { \* (.*?) \* }
+ { \c{emph}\{ \1 \} }
+ \l_jwjournal_tmp_tl
+
+ \regex_replace_once:nnN
+ { >>> \ *? (.*) }
+ { \c{JWJournalNote}\{\1\} }
+ \l_jwjournal_tmp_tl
+ \regex_replace_all:nnN
+ { \ *? >>> \ *? }
+ { }
+ \l_jwjournal_tmp_tl
+ % \exp_args:Nno \regex_split:nnN { >>> } { \l_jwjournal_tmp_tl } \l_tmpa_seq
+ % \seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
+ % \tl_set_eq:NN \l_jwjournal_tmp_tl \l_tmpa_tl
+ % \seq_map_inline:Nn \l_tmpa_seq
+ % {
+ % \tl_put_right:Nn \l_jwjournal_tmp_tl
+ % { \JWJournalNote { ####1 } }
+ % }
+
\exp_args:Nno \regex_split:nnN { >> } { \l_jwjournal_tmp_tl } \l_tmpa_seq
\seq_pop_left:NN \l_tmpa_seq \l_tmpa_tl
\tl_set_eq:NN \l_jwjournal_tmp_tl \l_tmpa_tl
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 92d2a410b3..5f4eb8bb13 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,6 +7,22 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.3.5] - 2023-08-30
+
+### Fixed
+- Correct spacing for uncertainties for integers in
+ tables (see issue
+ [\#690](https://github.com/josephwright/siunitx/issues/690))
+- Prevent expansion of `\text` in literal units (see issue
+ [\#691](https://github.com/josephwright/siunitx/issues/691))
+- Parse empty and zero exponents independently (see issue
+ [\#692](https://github.com/josephwright/siunitx/issues/692))
+- Printing of 'boundary' phrases (see issue
+ [\#693](https://github.com/josephwright/siunitx/issues/693))
+- Handling of font commands inside `\ensuremath` in text
+ mode (see issue
+ [\#694](https://github.com/josephwright/siunitx/issues/694))
+
## [v3.3.4] - 2023-08-24
### Fixed
@@ -1996,7 +2012,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.3.4...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.3.5...HEAD
+[v3.3.5]: https://github.com/josephwright/siunitx/compare/v3.3.4...v3.3.5
[v3.3.4]: https://github.com/josephwright/siunitx/compare/v3.3.3...v3.3.4
[v3.3.3]: https://github.com/josephwright/siunitx/compare/v3.3.2...v3.3.3
[v3.3.2]: https://github.com/josephwright/siunitx/compare/v3.3.1...v3.3.2
diff --git a/macros/latex/contrib/siunitx/siunitx-angle.dtx b/macros/latex/contrib/siunitx/siunitx-angle.dtx
index da61a09fec..5489fbfec3 100644
--- a/macros/latex/contrib/siunitx/siunitx-angle.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-angle.dtx
@@ -62,7 +62,11 @@
%
% \section{Formatting angles}
%
-% \begin{function}{\siunitx_angle:n, \siunitx_angle:nnn}
+% \begin{function}
+% {
+% \siunitx_angle:n, \siunitx_angle:x,
+% \siunitx_angle:nnn, \siunitx_angle:xxx
+% }
% \begin{syntax}
% \cs{siunitx_angle:n} \Arg{angle}
% \cs{siunitx_angle:nnn} \Arg{degrees} \Arg{minutes} \Arg{seconds}
@@ -236,9 +240,9 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\siunitx_angle:n, \@@_angle:n}
-% \begin{macro}{\siunitx_angle:nnn}
-% \begin{macro}{\@@_arc_convert:n}
+% \begin{macro}{\siunitx_angle:n, \siunitx_angle:x, \@@_angle:n}
+% \begin{macro}{\siunitx_angle:nnn, \siunitx_angle:xxx}
+% \begin{macro}{\@@_arc_convert:n, \@@_arc_convert:x}
% The first step here is to force format conversion if required. Going to
% a decimal is easy, going to arc format is a bit more painful: avoid
% repeating calculations mainly for code readability.
@@ -258,10 +262,11 @@
}
}
}
+\cs_generate_variant:Nn \siunitx_angle:n { x }
\cs_new_protected:Npn \@@_angle:n #1
{
\bool_if:NTF \l_@@_force_arc_bool
- { \exp_args:Ne \@@_arc_convert:n { \fp_eval:n {#1} } }
+ { \@@_arc_convert:x { \fp_eval:n {#1} } }
{
\siunitx_number_parse:nN {#1} \l_@@_degrees_tl
\siunitx_number_process:NN \l_@@_degrees_tl \l_@@_degrees_tl
@@ -279,7 +284,7 @@
{
\bool_if:NTF \l_@@_force_decimal_bool
{
- \exp_args:Ne \siunitx_angle:n
+ \siunitx_angle:x
{ \fp_eval:n { #1 + (#2) / 60 + (#3) / 3600 } }
}
{ \@@_arc_sign:nnn {#1} {#2} {#3} }
@@ -297,25 +302,24 @@
\l_@@_seconds_tl
}
}
+\cs_generate_variant:Nn \siunitx_angle:nnn { xxx }
\cs_new_protected:Npn \@@_arc_convert:n #1
{
- \use:x
+ \siunitx_angle:xxx
+ { \fp_eval:n { trunc(#1,0) } }
+ { \fp_eval:n { trunc((#1 - trunc(#1,0)) * 60,0) } }
{
- \siunitx_angle:nnn
- { \fp_eval:n { trunc(#1,0) } }
- { \fp_eval:n { trunc((#1 - trunc(#1,0)) * 60,0) } }
+ \fp_eval:n
{
- \fp_eval:n
- {
- (
- (#1 - trunc(#1,0)) * 60
- - trunc((#1 - trunc(#1,0)) * 60,0)
- )
- * 60
- }
+ (
+ (#1 - trunc(#1,0)) * 60
+ - trunc((#1 - trunc(#1,0)) * 60,0)
+ )
+ * 60
}
}
}
+\cs_generate_variant:Nn \@@_arc_convert:n { x }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -399,11 +403,11 @@
{
\tl_if_empty:cF { l_@@_ ##1 _tl }
{
- \exp_args:Ncc \siunitx_number_process:NN
+ \siunitx_number_process:cc
{ l_@@_ ##1 _tl } { l_@@_ ##1 _tl }
\tl_set:cx { l_@@_ ##1 _tl }
{
- \exp_args:Nc \siunitx_number_output:NN
+ \siunitx_number_output:cN
{ l_@@_ ##1 _tl } \q_nil
}
}
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index 5ee4a1467b..493c8aeced 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-complex.dtx b/macros/latex/contrib/siunitx/siunitx-complex.dtx
index 21a8fa3be9..af0b882c94 100644
--- a/macros/latex/contrib/siunitx/siunitx-complex.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-complex.dtx
@@ -66,7 +66,7 @@
% assumptions concerning \LaTeXe{} commands in the submodule beyond those in the
% core number and unit submodules.
%
-% \begin{function}{\siunitx_complex_number:n}
+% \begin{function}{\siunitx_complex_number:n, \siunitx_complex_number:x}
% \begin{syntax}
% \cs{siunitx_complex_number:n} \Arg{number}
% \end{syntax}
@@ -93,7 +93,12 @@
% \cs{siunitx_complex_number:n}.
% \end{function}
%
-% \begin{function}{\siunitx_complex_quantity:nn, \siunitx_complex_quantity:nnn}
+% \begin{function}
+% {
+% \siunitx_complex_quantity:nn ,
+% \siunitx_complex_quantity:xn ,
+% \siunitx_complex_quantity:nnn
+% }
% \begin{syntax}
% \cs{siunitx_complex_quantity:nn} \Arg{number} \Arg{units}
% \cs{siunitx_complex_quantity:nnn} \Arg{magnitude} \Arg{angle} \Arg{units}
@@ -686,9 +691,9 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\siunitx_complex_number:n}
+% \begin{macro}{\siunitx_complex_number:n, \siunitx_complex_number:x}
% \begin{macro}{\siunitx_complex_number:nn, \@@_number:nn}
-% \begin{macro}{\siunitx_complex_quantity:nn}
+% \begin{macro}{\siunitx_complex_quantity:nn, \siunitx_complex_quantity:xn}
% \begin{macro}{\siunitx_complex_quantity:nnn, \@@_quantity:nnn}
% The work here is pretty trivial: only conversion between forms makes
% things a bit more intricate.
@@ -717,6 +722,7 @@
}
}
}
+\cs_generate_variant:Nn \siunitx_complex_number:n { x }
\cs_new_protected:Npn \siunitx_complex_number:nn #1#2
{
\bool_lazy_or:nnTF
@@ -734,7 +740,7 @@
{ \l_@@_force_cartesian_bool }
{ \l_siunitx_number_parse_bool }
{
- \exp_args:Ne \siunitx_complex_number:n
+ \siunitx_complex_number:x
{ \@@_convert_cartesian:nn {#1} {#2} }
}
{
@@ -764,6 +770,7 @@
{ \siunitx_quantity:nn {#1} {#2} }
}
}
+\cs_generate_variant:Nn \siunitx_complex_quantity:nn { x }
\cs_new_protected:Npn \siunitx_complex_quantity:nnn #1#2#3
{
\bool_lazy_or:nnTF
@@ -781,7 +788,7 @@
{ \l_@@_force_cartesian_bool }
{ \l_siunitx_number_parse_bool }
{
- \exp_args:Ne \siunitx_complex_quantity:nn
+ \siunitx_complex_quantity:xn
{ \@@_convert_cartesian:nn {#1} {#2} }
{#3}
}
@@ -1053,7 +1060,7 @@
\siunitx_print_number:V \l_@@_tmp_tl
\bool_if:NT \l_@@_polar_degree_bool
{
- \exp_args:NV \siunitx_unit_format:nN \l_@@_symbol_degree_tl \l_@@_tmp_tl
+ \siunitx_unit_format:VN \l_@@_symbol_degree_tl \l_@@_tmp_tl
\nobreak
\siunitx_print_unit:V \l_@@_tmp_tl
}
@@ -1087,14 +1094,18 @@
% \subsection{Conversion}
%
% \begin{macro}[EXP]
-% {\@@_convert_cartesian:nn, \@@_convert_cartesian_aux:nn}
+% {
+% \@@_convert_cartesian:nn ,
+% \@@_convert_cartesian_aux:nn ,
+% \@@_convert_cartesian_aux:ee
+% }
% \begin{macro}[EXP]{\@@_convert_cartesian_aux:w}
% Conversion to Cartesian form is easy as we have two inputs and need to
% do no parsing here at all.
% \begin{macrocode}
\cs_new:Npn \@@_convert_cartesian:nn #1#2
{
- \exp_args:Nee \@@_convert_cartesian_aux:nn
+ \@@_convert_cartesian_aux:ee
{
\fp_to_tl:n
{ (#1) * cos \bool_if:NT \l_@@_polar_degree_bool { d } (#2) }
@@ -1108,6 +1119,7 @@
{
\@@_convert_cartesian_aux:w #1 e e \q_mark #2 e e \q_stop
}
+\cs_generate_variant:Nn \@@_convert_cartesian_aux:nn { ee }
\cs_new:Npn \@@_convert_cartesian_aux:w
#1 e #2 e #3 \q_mark #4 e #5 e #6 \q_stop
{
@@ -1132,8 +1144,10 @@
% \begin{macro}[EXP]{\@@_convert_polar_auxiv:nnw}
% \begin{macro}[EXP]{\@@_convert_polar_auxv:nnw}
% \begin{macro}[EXP]{\@@_convert_polar_auxvi:nnn}
-% \begin{macro}[EXP]{\@@_convert_polar_auxvii:nnn}
-% \begin{macro}[EXP]{\@@_convert_polar_auxviii:nn}
+% \begin{macro}[EXP]
+% {\@@_convert_polar_auxvii:nnn, \@@_convert_polar_auxvii:eee}
+% \begin{macro}[EXP]
+% {\@@_convert_polar_auxviii:nn, \@@_convert_polar_auxviii:ee}
% A simplified parser for complex numbers which works by expansion,
% then converts to polar form.
% \begin{macrocode}
@@ -1181,21 +1195,23 @@
}
\cs_new:Npn \@@_convert_polar_auxvi:nnn #1#2#3
{
- \exp_args:Neee \@@_convert_polar_auxvii:nnn
+ \@@_convert_polar_auxvii:eee
{ \tl_if_blank:nTF {#1} { 0 } {#1} }
{ \tl_if_blank:nTF {#2} { 0 } {#2} }
{ \tl_if_blank:nF {#3} { e#3 } }
}
\cs_new:Npn \@@_convert_polar_auxvii:nnn #1#2#3
{
- \exp_args:Nee \@@_format_polar_auxviii:nn
+ \@@_format_polar_auxviii:ee
{ \fp_eval:n { sqrt ( (#1#3)^2 + (#2#3)^2 ) } }
{
\fp_eval:n
{ atan \bool_if:NT \l_@@_polar_degree_bool { d } (#2 , #1) }
}
}
+\cs_generate_variant:Nn \@@_convert_polar_auxvii:nnn { eee }
\cs_new:Npn \@@_format_polar_auxviii:nn #1#2 { {#1} {#2} }
+\cs_generate_variant:Nn \@@_format_polar_auxviii:nn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/contrib/siunitx/siunitx-compound.dtx b/macros/latex/contrib/siunitx/siunitx-compound.dtx
index 0ce984f4a0..691ebf86c5 100644
--- a/macros/latex/contrib/siunitx/siunitx-compound.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-compound.dtx
@@ -535,7 +535,7 @@
% \begin{macro}{\siunitx_compound_number:n}
% \begin{macro}{\@@_format:n}
% \begin{macro}{\@@_format:nn}
-% \begin{macro}{\@@_format:nnn}
+% \begin{macro}{\@@_format:nnn, \@@_format:xxn}
% Printing a generic set starts with the question of whether we want to
% extract exponents. If we do, then there is the work to do with extraction.
% Either way, the printing is handed off to a common function. We do a quick
@@ -554,7 +554,7 @@
\seq_clear:N \l_@@_tmp_seq
\bool_if:NTF \l_siunitx_number_parse_bool
{
- \exp_args:Nxx \@@_format:nnn
+ \@@_format:xxn
{ \tl_head:n {#1} }
{ \tl_tail:n {#1} }
{#2}
@@ -575,6 +575,7 @@
}
{ \@@_format_aux:nnn {#1} {#2} {#3} }
}
+\cs_generate_variant:Nn \@@_format:nnn { xx }
\cs_new_protected:Npn \@@_format_aux:nnn #1#2#3
{
\siunitx_number_parse:nN {#1} \l_@@_tmp_tl
@@ -699,7 +700,7 @@
% \@@_format_combine-exponent_aux:n ,
% \@@_format_extract-exponent_aux:n
% }
-% \begin{macro}{\@@_extract_exp:nN}
+% \begin{macro}{\@@_extract_exp:nN, \@@_extract_exp:VN}
% \begin{macro}{\@@_extract_exp:nnnnnnnN}
% Actually formatting the units is much the same as is done in
% the quantities module, except that we have to cover the multiplication
@@ -738,7 +739,7 @@
{
\bool_set_true:N \l_@@_exp_combine_bool
\siunitx_number_process:NN \l_@@_tmp_tl \l_@@_first_tl
- \exp_args:NV \@@_extract_exp:nN
+ \@@_extract_exp:VN
\l_@@_first_tl \l_@@_tmp_fp
#1 \l_@@_tmp_fp \l_@@_unit_tl
}
@@ -775,6 +776,7 @@
}
\cs_new_protected:Npn \@@_extract_exp:nN #1#2
{ \@@_extract_exp:nnnnnnnN #1 #2 }
+\cs_generate_variant:Nn \@@_extract_exp:nN { V }
\cs_new_protected:Npn \@@_extract_exp:nnnnnnnN #1#2#3#4#5#6#7#8
{ \fp_set:Nn #8 {#6#7} }
% \end{macrocode}
@@ -820,7 +822,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_quantity_auxi:nn #1#2
{
- \@@_print_boundary:V \l_@@_boundary_close_tl
+ \@@_print_boundary:V \l_@@_boundary_open_tl
\seq_clear:N \l_@@_tmp_seq
\tl_map_inline:nn {#1}
{
@@ -872,8 +874,8 @@
% \end{macro}
%
% \begin{macro}{\@@_print:N}
-% \begin{macro}{\@@_print:nnN, \@@_print:xxN}
-% \begin{macro}{\@@_print:nnnN}
+% \begin{macro}{\@@_print:nnN, \@@_print:nVN, \@@_print:xnN, \@@_print:xxN}
+% \begin{macro}{\@@_print:nnnN, \@@_print:xnnN}
% \begin{macro}{\@@_print_aux:n}
% \begin{macro}{\@@_print_aux:nn}
% \begin{macro}{\@@_print_quantity:n, \@@_print_quantity:x}
@@ -900,14 +902,14 @@
}
#1
}
- { \@@_print:xxN { } { \exp_not:V \l_@@_exp_tl } #1 }
+ { \@@_print:nVN { } \l_@@_exp_tl #1 }
}
\cs_new_protected:Npn \@@_print:nnN #1#2#3
{
- \exp_args:Nx \@@_print:nnnN
+ \@@_print:xnnN
{ \seq_count:N \l_@@_tmp_seq } {#1} {#2} #3
}
-\cs_generate_variant:Nn \@@_print:nnN { xx }
+\cs_generate_variant:Nn \@@_print:nnN { nV , x , xx }
% \end{macrocode}
% A rather long auxiliary as we want a way to have the brackets/exponent
% available. The actual flow is simple enough: see how many entries there are
@@ -938,7 +940,7 @@
\seq_item:Nn \l_@@_tmp_seq { 2 }
\exp_not:n {#3}
}
- \@@_print_boundary:V \l_@@_boundary_open_tl
+ \@@_print_boundary:V \l_@@_boundary_close_tl
}
}
{
@@ -953,6 +955,7 @@
\@@_print_boundary:V \l_@@_boundary_close_tl
}
}
+\cs_generate_variant:Nn \@@_print:nnnN { x }
\cs_new_protected:Npn \@@_print_aux:n #1 { }
\cs_new_protected:Npn \@@_print_aux:nn #1#2
{
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index 5bba843ce6..2218e61022 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -94,8 +94,8 @@
% \end{quote}
% where the two sign parts must be single tokens if present,
% and all other components
-% must be given in braces. The number will have at least one digit for both the
-% \meta{integer} and \meta{exponent} parts: these are required. The
+% must be given in braces. The number will have at least one digit for either the
+% \meta{integer} and \meta{exponent} parts.. The
% \meta{uncertainty} part should either be blank or contain an
% \meta{identifier} (as a brace group), followed by one or more data entries.
% Valid uncertainty \meta{identifiers} currently are
@@ -115,7 +115,7 @@
% \cs{empty}.
% \end{function}
%
-% \begin{function}{\siunitx_number_process:NN}
+% \begin{function}{\siunitx_number_process:NN, \siunitx_number_process:cc}
% \begin{syntax}
% \cs{siunitx_number_process:N} \meta{tl~var1} \meta{tl~var2}
% \end{syntax}
@@ -131,10 +131,12 @@
% with the result stored in \meta{tl~var2}.
% \end{function}
%
-% \begin{function}[rEXP]
+% \begin{function}[EXP]
% {
-% \siunitx_number_output:N, \siunitx_number_output:n,
-% \siunitx_number_output:NN, \siunitx_number_output:nN
+% \siunitx_number_output:N, \siunitx_number_output:c
+% \siunitx_number_output:n,
+% \siunitx_number_output:NN, \siunitx_number_output:cN
+% \siunitx_number_output:nN
% }
% \begin{syntax}
% \cs{siunitx_number_output:N} \meta{number}
@@ -179,7 +181,8 @@
% \begin{function}[EXP]
% {
% \siunitx_number_adjust_exponent:Nn ,
-% \siunitx_number_adjust_exponent:nn
+% \siunitx_number_adjust_exponent:nn ,
+% \siunitx_number_adjust_exponent:Vn
% }
% \begin{syntax}
% \cs{siunitx_number_adjust_exponent:Nn} \meta{number} \Arg{fp~expr}
@@ -711,7 +714,7 @@
% Variants not provided by \pkg{expl3}.
% \begin{macrocode}
\cs_generate_variant:Nn \keys_set:nn { nx }
-\cs_generate_variant:Nn \tl_if_blank:nTF { f }
+\cs_generate_variant:Nn \tl_if_blank:nTF { e }
\cs_generate_variant:Nn \tl_if_in:NnTF { NV }
\cs_generate_variant:Nn \tl_if_in:nnTF { nV }
\cs_generate_variant:Nn \tl_remove_all:Nn { NV }
@@ -799,8 +802,6 @@
% \end{quote}
% where all components must be given in braces. \emph{All} of the components
% must be present in a stored number (\foreign{i.e.}~at the end of parsing).
-% The number must have at least one digit for both the \meta{integer} and
-% \meta{exponent} parts.
%
% A non-empty \meta{uncertainty} must contain one leading brace group
% containing an identifier, then zero or more brace groups which contain
@@ -1078,7 +1079,7 @@
\tl_put_right:NV \l_@@_uncert_tl \l_@@_flex_tl
\tl_if_empty:NF \l_@@_uncert_tl
{
- \tl_if_blank:fTF { \exp_after:wN \use_iv:nnnn \l_@@_parsed_tl }
+ \tl_if_blank:eTF { \exp_after:wN \use_iv:nnnn \l_@@_parsed_tl }
{ \@@_parse_combine_uncert: }
{ \tl_clear:N \l_@@_parsed_tl }
}
@@ -1098,11 +1099,21 @@
% \begin{macro}{\@@_parse_combine_uncert:}
% \begin{macro}[EXP]{\@@_parse_combine_uncert:nnnn}
% \begin{macro}[EXP]{\@@_parse_combine_uncert:nn}
-% \begin{macro}[EXP]{\@@_parse_combine_uncert_loop:nnnnnnn}
-% \begin{macro}[EXP]{\@@_parse_combine_uncert:nnnnnn}
-% \begin{macro}[EXP]{\@@_parse_combine_uncert:nnnnnnn}
+% \begin{macro}[EXP]
+% {
+% \@@_parse_combine_uncert_loop:nnnnnnn ,
+% \@@_parse_combine_uncert_loop:nnnnnnn
+% }
+% \begin{macro}[EXP]
+% {\@@_parse_combine_uncert:nnnnnn, \@@_parse_combine_uncert:ennnnn}
+% \begin{macro}[EXP]
+% {\@@_parse_combine_uncert:nnnnnnn, \@@_parse_combine_uncert:ennnnnn}
% \begin{macro}[EXP]{\@@_parse_combine_uncert:nnnnn}
-% \begin{macro}[EXP]{\@@_parse_combine_uncert_aux:nnnn}
+% \begin{macro}[EXP]
+% {
+% \@@_parse_combine_uncert_aux:nnnn ,
+% \@@_parse_combine_uncert_aux:eenn
+% }
% \begin{macro}[EXP]{\@@_parse_combine_uncert:N}
% \begin{macro}[EXP]{\@@_parse_combine_uncert:w}
% \begin{macro}[EXP]{\@@_parse_combine_uncert_end:nnn}
@@ -1148,10 +1159,11 @@
{
\quark_if_recursion_tail_stop_do:nn {#4}
{ \@@_parse_combine_uncert_end:nnn {#1} {#2} {#3} }
- \exp_args:Nf \@@_parse_combine_uncert:nnnnnn
+ \@@_parse_combine_uncert:ennnnn
{ \int_eval:n { \tl_count:n {#1} - \tl_count:n {#6} } }
{#1} {#2} {#3} {#5} {#6}
}
+\cs_generate_variant:Nn \@@_parse_combine_uncert_loop:nnnnnnn { nee }
% \end{macrocode}
% The difference in places between the two decimal parts is now found: this
% is done just once to avoid having to parse token lists twice. The value
@@ -1160,10 +1172,11 @@
% \begin{macrocode}
\cs_new:Npn \@@_parse_combine_uncert:nnnnnn #1
{
- \exp_args:Nf \@@_parse_combine_uncert:nnnnnnn
+ \@@_parse_combine_uncert:ennnnnn
{ \prg_replicate:nn { \int_abs:n {#1} } { 0 } }
{#1}
}
+\cs_generate_variant:Nn \@@_parse_combine_uncert:nnnnnn { e }
\cs_new:Npn \@@_parse_combine_uncert:nnnnnnn #1#2#3#4#5#6#7
{
\int_compare:nNnTF {#2} > 0
@@ -1176,6 +1189,7 @@
{ #3 #1 } {#4} {#5} {#6} {#7}
}
}
+\cs_generate_variant:Nn \@@_parse_combine_uncert:nnnnnnn { e }
% \end{macrocode}
% We now ensure that the decimal part is never entirely blank \emph{if} there
% are decimal-part uncertainty digits. There is also a need to handle the
@@ -1184,7 +1198,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_parse_combine_uncert:nnnnn #1#2#3#4#5
{
- \exp_args:Nee \@@_parse_combine_uncert_aux:nnnn
+ \@@_parse_combine_uncert_aux:eenn
{
\bool_lazy_and:nnTF
{ \tl_if_blank_p:n {#1} }
@@ -1201,8 +1215,8 @@
}
\cs_new:Npn \@@_parse_combine_uncert_aux:nnnn #1#2#3#4
{
- \exp_args:Neee \@@_parse_combine_uncert_loop:nnnnnnn
- { \exp_not:n {#1} }
+ \@@_parse_combine_uncert_loop:neennnn
+ {#1}
{
\exp_not:n {#3}
\tl_if_blank:nF {#2} { S }
@@ -1212,6 +1226,7 @@
\tl_if_blank:nF {#2} { { \exp_not:n {#2} } }
}
}
+\cs_generate_variant:Nn \@@_parse_combine_uncert_aux:nnnn { ee }
% \end{macrocode}
% A short routine to remove any leading zeros in the uncertainty part,
% which are not needed for the compact representation used by the module.
@@ -1309,7 +1324,7 @@
{
\tl_if_empty:NTF \l_siunitx_number_input_exponent_tl
{
- \tl_set:Nn \l_@@_exponent_tl { { } 0 }
+ \tl_set:Nn \l_@@_exponent_tl { { } { } }
\tl_if_empty:NF \l_@@_parsed_tl
{ \@@_parse_loop: }
}
@@ -1343,7 +1358,7 @@
\cs_new_protected:Npn \@@_parse_exponent_auxii:nn #1#2
{
\quark_if_nil:nTF {#2}
- { \tl_set:Nn \l_@@_exponent_tl { { } 0 } }
+ { \tl_set:Nn \l_@@_exponent_tl { { } { } } }
{
\tl_set:Nn \l_@@_arg_tl {#1}
\tl_if_blank:nTF {#2}
@@ -1669,7 +1684,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_parse_loop_after_decimal:NN #1#2
{
- \tl_if_blank:fTF { \exp_after:wN \use_none:n #1 }
+ \tl_if_blank:eTF { \exp_after:wN \use_none:n #1 }
{
\quark_if_recursion_tail_stop_do:Nn #2
{ \@@_parse_loop_break:w \q_recursion_stop }
@@ -1759,7 +1774,11 @@
% \begin{macro}{\@@_parse_uncert_marker:w}
% \begin{macro}{\@@_parse_uncert_marker:nnnnN}
% \begin{macro}{\@@_parse_uncert_marker:nnnnnN}
-% \begin{macro}{\@@_parse_uncert_marker:nnnnnnN}
+% \begin{macro}
+% {
+% \@@_parse_uncert_marker:nnnnnnN ,
+% \@@_parse_uncert_marker:xnnnnnN
+% }
% \begin{macro}{\@@_parse_uncert_after:N}
% Parsing a combined uncertainty has a very restricted range of allowed
% tokens. A closing uncertainty token in the first place is an error,
@@ -1935,7 +1954,7 @@
}
\cs_new_protected:Npn \@@_parse_uncert_marker:nnnnnN #1#2#3#4#5#6
{
- \exp_args:Ne \@@_parse_uncert_marker:nnnnnnN
+ \@@_parse_uncert_marker:xnnnnnN
{ \int_eval:n { \tl_count:n {#4} } }
{#1} {#2} {#3} {#4} {#5} #6
}
@@ -1971,6 +1990,7 @@
}
#5#6#7
}
+\cs_generate_variant:Nn \@@_parse_uncert_marker:nnnnnnN { x }
% \end{macrocode}
% At the end of collection, we can either start another one or be done:
% either way we move the data around.
@@ -2177,7 +2197,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\siunitx_number_process:NN}
+% \begin{macro}{\siunitx_number_process:NN, \siunitx_number_process:cc}
% \begin{macro}{\@@_process:nnnnnnnNN}
% A top-level interface for the processing tools. Rounding happens in all
% cases, but exponents are only processed if the value is not $0$.
@@ -2194,6 +2214,7 @@
\@@_digits:NN #2 #2
}
}
+\cs_generate_variant:Nn \siunitx_number_process:NN { cc }
\cs_new_protected:Npn \@@_process:nnnnnnnNN #1#2#3#4#5#6#7#8#9
{
\bool_lazy_and:nnTF
@@ -2215,35 +2236,34 @@
% \begin{macro}{\@@_exponent:NN}
% \begin{macro}[EXP]
% {
+% \@@_exponent:nnnnnnn ,
+% \@@_exponent_aux:nnnnnnn ,
% \@@_exponent_engineering:nnnnnnn ,
% \@@_exponent_fixed:nnnnnnn ,
-% \@@_exponent_input:nnnnnnn ,
% \@@_exponent_scientific:nnnnnnn
% }
% \begin{macro}[EXP]
% {
-% \@@_exponent_fixed:nnnnnnnn ,
-% \@@_exponent_scientific:nnnnnnnn
+% \@@_exponent_fixed:nnnnnnnn ,
+% \@@_exponent_fixed:ennnnnnn ,
+% \@@_exponent_scientific:nnnnnnnn ,
+% \@@_exponent_scientific:ennnnnnn
% }
% \begin{macro}[EXP]{\@@_exponent_scientific:nnnw}
-% \begin{macro}[EXP]{\@@_exponent_shift:nnn,\@@_exponent_shift:nnf}
+% \begin{macro}[EXP]{\@@_exponent_shift:nnn, \@@_exponent_shift:nne}
% \begin{macro}[EXP]{\@@_exponent_shift_down:nnnw}
% \begin{macro}[EXP]{\@@_exponent_shift_down:nnn}
% \begin{macro}[EXP]{\@@_exponent_shift_down:nw}
% \begin{macro}[EXP]{\@@_exponent_shift_up:nnn}
% \begin{macro}[EXP]{\@@_exponent_shift_up:nnw}
% \begin{macro}[EXP]
-% {
-% \@@_exponent_shift_up_aux:nnn ,
-% \@@_exponent_shift_up_aux:fnn ,
-% \@@_exponent_shift_up_aux:ffn
-% }
+% {\@@_exponent_shift_up_aux:nnn, \@@_exponent_shift_up_aux:een}
% \begin{macro}[EXP]{\@@_exponent_shift_uncert:nw}
% \begin{macro}[EXP]
-% {\@@_exponent_shift_uncert_S:nnnn, \@@_exponent_shift_uncert_S:fnnn}
+% {\@@_exponent_shift_uncert_S:nnnn, \@@_exponent_shift_uncert_S:ennn}
% \begin{macro}[EXP]{\@@_exponent_uncert:n}
% \begin{macro}[EXP]{\@@_exponent_finalise:n}
-% \begin{macro}[EXP]{\@@_exponent_engineering_aux:nnnnnnn}
+% \begin{macro}[EXP]{\@@_exponentcd te_engineering_aux:nnnnnnn}
% \begin{macro}[EXP]
% {
% \@@_exponent_engineering_0:nnnn ,
@@ -2254,7 +2274,7 @@
% \begin{macro}[EXP]{\@@_exponent_engineering_uncert:nn}
% \begin{macro}[EXP]{\@@_exponent_engineering_uncert_S:nnn}
% \begin{macro}[EXP]{\@@_exponent_threshold:nnnnnnn}
-% \begin{macro}[EXP]{\@@_exponent_threshold:nn}
+% \begin{macro}[EXP]{\@@_exponent_threshold:nn, \@@_exponent_threshold:en}
% \begin{macro}[EXP]{\@@_exponent_threshold:nnnnnnnn}
% Manipulating an exponent is done using a single expansion function
% \emph{unless} dealing with engineering-style output. The latter is easier
@@ -2265,21 +2285,31 @@
\cs_new_protected:Npn \@@_exponent:NN #1#2
{
\tl_set:Nx #2
- {
- \cs:w
- @@_exponent_ \l_@@_exponent_mode_tl :nnnnnnn
- \exp_after:wN
- \cs_end: #1
- }
+ { \exp_after:wN \@@_exponent:nnnnnnn #1 }
\str_if_eq:VnT \l_@@_exponent_mode_tl { engineering }
{
\tl_set:Nx #2
{ \exp_after:wN \@@_exponent_engineering_aux:nnnnnnn #2 }
}
}
+\cs_new:Npn \@@_exponent:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \str_if_eq:VnTF \l_@@_exponent_mode_tl { input }
+ { \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } }
+ {
+ \tl_if_blank:nTF {#7}
+ { \@@_exponent_aux:nnnnnnn {#1} {#2} {#3} {#4} {#5} {#6} { 0 } }
+ { \@@_exponent_aux:nnnnnnn {#1} {#2} {#3} {#4} {#5} {#6} {#7} }
+ }
+ }
+\cs_new:Npn \@@_exponent_aux:nnnnnnn #1#2#3#4#5#6#7
+ {
+ \use:c { @@_exponent_ \l_@@_exponent_mode_tl :nnnnnnn }
+ {#1} {#2} {#3} {#4} {#5} {#6} {#7}
+ }
\cs_new:Npn \@@_exponent_fixed:nnnnnnn #1#2#3#4#5#6#7
{
- \exp_args:Nf \@@_exponent_fixed:nnnnnnnn
+ \@@_exponent_fixed:ennnnnnn
{ \int_eval:n { \l_@@_exponent_fixed_int - (#6#7) } }
{#1} {#2} {#3} {#4} {#5} {#6} {#7}
}
@@ -2291,8 +2321,7 @@
{ \int_compare:nNnT \l_@@_exponent_fixed_int < 0 { - } }
{ \int_abs:n \l_@@_exponent_fixed_int }
}
-\cs_new:Npn \@@_exponent_input:nnnnnnn #1#2#3#4#5#6#7
- { \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } }
+\cs_generate_variant:Nn \@@_exponent_fixed:nnnnnnnn { e }
% \end{macrocode}
% To convert to scientific notation, the key question is to find the number
% of significant places. That is easy enough if the number has a non-zero
@@ -2301,7 +2330,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_exponent_scientific:nnnnnnn #1#2#3#4#5#6#7
{
- \exp_args:Nf \@@_exponent_scientific:nnnnnnnn
+ \@@_exponent_scientific:ennnnnnn
{ \int_eval:n { \tl_count:n {#3} } }
{#1} {#2} {#3} {#4} {#5} {#6} {#7}
}
@@ -2323,6 +2352,7 @@
\@@_exponent_finalise:n { #1 + #7#8 - 1 }
}
}
+\cs_generate_variant:Nn \@@_exponent_scientific:nnnnnnnn { e }
\cs_new_eq:NN \@@_exponent_engineering:nnnnnnn
\@@_exponent_scientific:nnnnnnn
\cs_new:Npn \@@_exponent_scientific:nnnw #1#2#3#4#5 \q_stop
@@ -2351,7 +2381,7 @@
{ {#2} {#3} }
}
}
-\cs_generate_variant:Nn \@@_exponent_shift:nnn { nnf }
+\cs_generate_variant:Nn \@@_exponent_shift:nnn { nne }
% \end{macrocode}
% For shifting the exponent down, there is first a loop to reserve the
% integer part before doing the work: that of course has to be undone
@@ -2385,7 +2415,7 @@
{
\tl_if_blank:nTF {#3}
{
- \@@_exponent_shift_up_aux:ffn
+ \@@_exponent_shift_up_aux:een
{ \int_eval:n { #1 + 1 } }
{ \str_if_eq:nnF {#2} { 0 } {#2} 0 }
{ }
@@ -2395,7 +2425,7 @@
}
\cs_new:Npn \@@_exponent_shift_up:nnw #1#2#3#4 \q_stop
{
- \@@_exponent_shift_up_aux:ffn
+ \@@_exponent_shift_up_aux:een
{ \int_eval:n { #1 + 1 } }
{ \str_if_eq:nnF {#2} { 0 } {#2} #3 }
{#4}
@@ -2417,7 +2447,7 @@
{ \@@_exponent_shift_up:nnn {#1} {#2} {#3} }
}
}
-\cs_generate_variant:Nn \@@_exponent_shift_up_aux:nnn { f , ff }
+\cs_generate_variant:Nn \@@_exponent_shift_up_aux:nnn { ee }
% \end{macrocode}
% If the shift has put digits into the integer part, we have to adjust the
% uncertainty accordingly. First, we grab the data, then adjust by the
@@ -2438,7 +2468,7 @@
\@@_exponent_uncert:n { { S } { 0 } }
}
{
- \use:c { @@_exponent_shift_uncert_ \use_i:nn #3 :fnnn }
+ \@@_exponent_shift_uncert_S:ennn
{ \prg_replicate:nn {#1} { 0 } }
{#2}
#3
@@ -2450,7 +2480,7 @@
#2
\@@_exponent_uncert:n { { S } { #4#1 } }
}
-\cs_generate_variant:Nn \@@_exponent_shift_uncert_S:nnnn { f }
+\cs_generate_variant:Nn \@@_exponent_shift_uncert_S:nnnn { e }
\cs_new:Npn \@@_exponent_uncert:n #1 { { \exp_not:n {#1} } }
% \end{macrocode}
% Tidy up the exponent to put the sign in the right place.
@@ -2503,7 +2533,7 @@
}
{
{ \exp_not:n {#1} \exp_not:o { \tl_head:w #2 \q_stop } }
- { \exp_not:f { \tl_tail:n {#2} } }
+ { \tl_tail:n {#2} }
{ \exp_not:n {#3} }
}
\@@_exponent_finalise:n { #4 - 1 }
@@ -2527,7 +2557,7 @@
}
{
{ \exp_not:n {#1#3} \exp_not:o { \tl_head:w #4 \q_stop } }
- { \exp_not:f { \tl_tail:n {#4} } }
+ { \tl_tail:n {#4} }
{ \exp_not:n {#2} }
}
}
@@ -2552,16 +2582,17 @@
% \begin{macrocode}
\cs_new:Npn \@@_exponent_threshold:nnnnnnn #1#2#3#4#5#6#7
{
- \exp_args:Ne \@@_exponent_threshold:nn
+ \@@_exponent_threshold:en
{
\@@_exponent_scientific:nnnnnnn
{#1} {#2} {#3} {#4} {#5} {#6} {#7}
}
{ {#1} {#2} {#3} {#4} {#5} {#6} {#7} }
}
-\cs_new:Npn \@@_exponent_threshold:nn #1#2
+\cs_new:Npn \@@_exponent_threshold:nn #1#2
{ \@@_exponent_threshold:nnnnnnnn #1 {#2} }
-\cs_new:Npn \@@_exponent_threshold:nnnnnnnn #1#2#3#4#5#6#7#8
+\cs_generate_variant:Nn \@@_exponent_threshold:nn { e }
+\cs_new:Npn \@@_exponent_threshold:nnnnnnnn #1#2#3#4#5#6#7#8
{
\bool_lazy_and:nnTF
{ \int_compare_p:nNn {#6#7} > \l_@@_lower_threshold_int }
@@ -2569,7 +2600,6 @@
{ \exp_not:n {#8} }
{ \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } }
}
-
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -2751,25 +2781,39 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_round:nnn, \@@_round:fnn}
+% \begin{macro}[EXP]{\@@_round:nnn, \@@_round:enn}
% \begin{macro}[EXP]{\@@_round:nnnn, \@@_round:Vnnn}
% \begin{macro}[EXP]
% {
% \@@_round_auxi:nnnnN ,
% \@@_round_auxii:nnnnN ,
% \@@_round_auxiii:nnnnN ,
-% \@@_round_auxiv:nnnnN
+% \@@_round_auxiii:ennnN ,
+% \@@_round_auxiv:nnnnN ,
+% \@@_round_auxiv:ennnN
% }
% \begin{macro}[EXP]{\@@_round_auxv:nnnN, \@@_round_auxvi:nnnN}
% \begin{macro}[EXP]{\@@_round_auxvii:nnnTF}
% \begin{macro}[EXP]{\@@_round_auxviii:nnN, \@@_round_auxix:nnN}
% \begin{macro}[EXP]{\@@_round_final_integer:nnw, \@@_round_final_decimal:nnw}
-% \begin{macro}[EXP]{\@@_round_final_signicant:n}
-% \begin{macro}[EXP]{\@@_round_final_signicant:N}
-% \begin{macro}[EXP]{\@@_round_final_signicant:w}
-% \begin{macro}[EXP]{\@@_round_final_output:nn, \@@_round_final_output:ff}
-% \begin{macro}[EXP]{\@@_round_final:nn, \@@_round_final:fn}
-% \begin{macro}[EXP]{\@@_round_final_shift:nn, \@@_round_final_shift:ff}
+% \begin{macro}[EXP]
+% {\@@_round_final_significant:n, \@@_round_final_significant:e}
+% \begin{macro}[EXP]{\@@_round_final_significant:N}
+% \begin{macro}[EXP]{\@@_round_final_significant:w}
+% \begin{macro}[EXP]
+% {
+% \@@_round_final_output:nn ,
+% \@@_round_final_output:ne ,
+% \@@_round_final_output:en ,
+% \@@_round_final_output:ee
+% }
+% \begin{macro}[EXP]{\@@_round_final:nn, \@@_round_final:en}
+% \begin{macro}[EXP]
+% {
+% \@@_round_final_shift:nn ,
+% \@@_round_final_shift:en ,
+% \@@_round_final_shift:ee
+% }
% \begin{macro}[EXP]{\@@_round_final_shift:Nw}
% \begin{macro}[EXP]
% {
@@ -2779,7 +2823,7 @@
% \@@_round_scientific:nn
% }
% \begin{macro}[EXP]{\@@_round_engineering:NNNNn}
-% \begin{macro}[EXP]{\@@_round_engineering:nnN}
+% \begin{macro}[EXP]{\@@_round_engineering:nnN, \@@_round_engineering:VnN}
% \begin{macro}[EXP]{\@@_round_truncate:n, \@@_round_truncate_direct:n}
% \begin{macro}[EXP]{\@@_round_truncate:nnN}
% Actually doing the rounding needs us to work from the least significant
@@ -2793,7 +2837,7 @@
\@@_round:Vnnn \l_@@_round_dir_tl
{#1} {#2} {#3}
}
-\cs_generate_variant:Nn \@@_round:nnn { f }
+\cs_generate_variant:Nn \@@_round:nnn { e }
\cs_new:Npn \@@_round:nnnn #1#2#3#4
{
\@@_round_auxi:nnnnN {#1} {#2} {#3} { }
@@ -2845,11 +2889,12 @@
}
\int_compare:nNnTF {#1} > 0
{
- \exp_args:Nf \@@_round_auxiii:nnnnN
+ \@@_round_auxiii:ennnN
{ \int_eval:n { #1 - 1 } } {#2} {#3} { #5#4 }
}
{ \@@_round_auxv:nnnN {#2} {#4} {#3} #5 }
}
+\cs_generate_variant:Nn \@@_round_auxiii:nnnnN { e }
\cs_new:Npn \@@_round_auxiv:nnnnN #1#2#3#4#5
{
\quark_if_recursion_tail_stop_do:Nn #5
@@ -2863,11 +2908,12 @@
}
\int_compare:nNnTF {#1} > 0
{
- \exp_args:Nf \@@_round_auxiv:nnnnN
+ \@@_round_auxiv:ennnN
{ \int_eval:n { #1 - 1 } } {#2} { #3 0 } { #5#4 }
}
{ \@@_round_auxvi:nnnN {#2} {#4} {#3} #5 }
}
+\cs_generate_variant:Nn \@@_round_auxiv:nnnnN { e }
% \end{macrocode}
% We now have the discarded digits, the matching filler and the
% next digit. So we can make the decision on rounding: that
@@ -2934,7 +2980,7 @@
{
\str_if_eq:nnTF {#1} { 0 }
{
- \@@_round_final_output:ff
+ \@@_round_final_output:ne
{ 1 }
{ \@@_round_truncate:n {#2} }
}
@@ -2961,7 +3007,7 @@
}
}
{
- \@@_round_final:fn
+ \@@_round_final:en
{ \int_eval:n { #3 + 1 } }
{ \@@_round_final_decimal:nnw {#1} {#2} }
}
@@ -2973,15 +3019,12 @@
{
\tl_if_blank:nTF {#1}
{
- \@@_round_final_shift:ff
- {
- \exp_last_unbraced:Nf 1
- { \@@_round_truncate_direct:n {#2} } 0
- }
+ \@@_round_final_shift:en
+ { 1 \@@_round_truncate_direct:n {#2} 0 }
{ }
}
{
- \@@_round_final_shift:ff
+ \@@_round_final_shift:ee
{ 1 #2 }
{ \@@_round_truncate:n {#1} }
}
@@ -2989,7 +3032,7 @@
\int_compare:nNnTF {#3} = 9
{ \@@_round_auxix:nnN {#1} { 0 #2 } }
{
- \@@_round_final:fn
+ \@@_round_final:en
{ \int_eval:n { #3 + 1 } }
{ \@@_round_final_integer:nnw {#1} {#2} }
}
@@ -3000,15 +3043,15 @@
\cs_new:Npn \@@_round_final_decimal:nnw
#1#2#3 \q_recursion_tail \q_recursion_stop
{
- \@@_round_final_output:ff
+ \@@_round_final_output:ee
{ \tl_reverse:n {#1} }
{ \tl_reverse:n {#3} #2 }
}
\cs_new:Npn \@@_round_final_integer:nnw
#1#2#3 \q_recursion_tail \q_recursion_stop
{
- \@@_round_final_output:ff
- { \exp_args:Ne \@@_round_final_significant:n { \tl_reverse:n {#3} #2 } }
+ \@@_round_final_output:en
+ { \@@_round_final_significant:e { \tl_reverse:n {#3} #2 } }
{#1}
}
\cs_new:Npn \@@_round_final_significant:n #1
@@ -3016,6 +3059,7 @@
\@@_round_final_significant:N #1
\q_recursion_tail \q_recursion_stop
}
+\cs_generate_variant:Nn \@@_round_final_significant:n { e }
\cs_new:Npn \@@_round_final_significant:N #1
{
\quark_if_recursion_tail_stop_do:Nn #1 { 0 }
@@ -3030,10 +3074,10 @@
#1 \q_recursion_tail \q_recursion_stop
{#1}
\cs_new:Npn \@@_round_final_output:nn #1#2 { {#1} {#2} }
-\cs_generate_variant:Nn \@@_round_final_output:nn { ff }
+\cs_generate_variant:Nn \@@_round_final_output:nn { ne , e , ee }
\cs_new:Npn \@@_round_final:nn #1#2
{ #2 #1 }
-\cs_generate_variant:Nn \@@_round_final:nn { f }
+\cs_generate_variant:Nn \@@_round_final:nn { e }
% \end{macrocode}
% Here we deal with the case where rounding applies along with an
% exponent set based on number of places. We can only get here if an
@@ -3055,7 +3099,7 @@
}
{ {#1} {#2} }
}
-\cs_generate_variant:Nn \@@_round_final_shift:nn { ff }
+\cs_generate_variant:Nn \@@_round_final_shift:nn { en , ee }
\cs_new:Npn \@@_round_engineering:nn #1#2
{
\int_compare:nNnTF { \tl_count:n {#1} } = 4
@@ -3072,7 +3116,7 @@
\cs_new:Npn \@@_round_engineering:NNNNn #1#2#3#4#5
{
{#1}
- \exp_args:NV \@@_round_engineering:nnN
+ \@@_round_engineering:VnN
\l_@@_round_precision_int { }
#2#3#4#5 \q_recursion_tail \q_recursion_stop
}
@@ -3083,6 +3127,7 @@
{ \use_i_delimit_by_q_recursion_stop:nw { {#2} } }
{ \@@_round_engineering:nnN { #1 - 1 } { #2#3 } }
}
+\cs_generate_variant:Nn \@@_round_engineering:nnN { V }
\cs_new:Npn \@@_round_fixed:nn #1#2 { {#1} {#2} }
\cs_new:Npn \@@_round_input:nn #1#2 { {#1} {#2} }
\cs_new:Npn \@@_round_scientific:nn #1#2
@@ -3092,7 +3137,7 @@
{ \str_if_eq_p:Vn \l_@@_round_mode_tl { figures } }
{ { 1 } { } }
{
- \@@_exponent_shift:nnf
+ \@@_exponent_shift:nne
{ 1 } {#1} { \@@_round_truncate_direct:n {#2} }
}
\@@_round_final_shift:Nw 1
@@ -3195,7 +3240,8 @@
%
% \begin{macro}[EXP]{\@@_round_figures:nnnnnnn, \@@_round_figures_aux:nnnnnnn}
% \begin{macro}[EXP]{\@@_round_figures_count:nnN}
-% \begin{macro}[EXP]{\@@_round_figures_count:nnnN}
+% \begin{macro}[EXP]
+% {\@@_round_figures_count:nnnN, \@@_round_figures_count:ennN}
% Rounding to figures only makes sense if the number is not $0$, so we start
% by filtering out that case. We then check that
% there is no uncertainty, and that the number of figures requested is
@@ -3245,7 +3291,7 @@
{
\int_compare:nNnTF {#1} > \l_@@_round_precision_int
{
- \@@_round:fnn
+ \@@_round:enn
{ \int_eval:n { #1 - \l_@@_round_precision_int } }
{#2} {#3}
}
@@ -3254,9 +3300,10 @@
{ \l_@@_round_precision_int - (#1) } {#2} {#3}
}
}
- \exp_args:Nf \@@_round_figures_count:nnnN
+ \@@_round_figures_count:ennN
{ \int_eval:n { #1 + 1 } } {#2} {#3}
}
+\cs_generate_variant:Nn \@@_round_figures_count:nnnN { e }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3264,7 +3311,7 @@
%
% \begin{macro}[EXP]{\@@_round_places:nnnnnnn}
% \begin{macro}[EXP]{\@@_round_places_decimal:nn, \@@_round_places_integer:nn}
-% \begin{macro}[EXP]{\@@_round_places_finalise:n}
+% \begin{macro}[EXP]{\@@_round_places_finalise:n, \@@_round_places_finalise:e}
% \begin{macro}[EXP]{\@@_round_places_finalise:nnnnnnn}
% \begin{macro}[EXP]{\@@_round_places_finalise:nnnnn}
% The first step when rounding to a fixed number of places is to establish
@@ -3277,7 +3324,7 @@
{
\tl_if_blank:nTF {#5}
{
- \exp_args:Ne \@@_round_places_finalise:n
+ \@@_round_places_finalise:e
{
\exp_not:n { {#1} {#2} }
\int_compare:nNnTF \l_@@_round_precision_int > 0
@@ -3299,7 +3346,7 @@
{#1} {#2}
}
{
- \@@_round:fnn
+ \@@_round:enn
{
\int_eval:n
{ 0 \tl_count:n {#2} - \l_@@_round_precision_int }
@@ -3309,7 +3356,7 @@
}
\cs_new:Npn \@@_round_places_integer:nn #1#2
{
- \@@_round:fnn
+ \@@_round:enn
{
\int_eval:n
{ 0 \tl_count:n {#2} - \l_@@_round_precision_int }
@@ -3347,6 +3394,7 @@
}
{ \exp_not:n { {#1} {#2} {#3} {#4} {#5} {#6} {#7} } }
}
+\cs_generate_variant:Nn \@@_round_places_finalise:n { e }
\cs_new:Npn \@@_round_places_finalise:nnnnn #1#2#3#4#5
{
{
@@ -3364,17 +3412,28 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_round_uncertainty:nnnnnnn}
-% \begin{macro}[EXP]{\@@_round_uncertainty:nnn}
-% \begin{macro}[EXP]{\@@_round_uncertainty:nnnn}
+% \begin{macro}[EXP]{\@@_round_uncertainty:nnn, \@@_round_uncertainty:nno}
+% \begin{macro}[EXP]
+% {\@@_round_uncertainty:nnnn, \@@_round_uncertainty:ennn}
% \begin{macro}[EXP]{\@@_round_uncertainty:nnnnnn}
% \begin{macro}[EXP]
% {
% \@@_round_uncertainty_auxi:nnnnn ,
% \@@_round_uncertainty_auxii:nnnnn
% }
-% \begin{macro}[EXP]{\@@_round_uncertainty_auxiii:nnnnnnn}
+% \begin{macro}[EXP]
+% {
+% \@@_round_uncertainty_auxiii:nnnnnnn ,
+% \@@_round_uncertainty_auxiii:eennnnn
+% }
% \begin{macro}[EXP]{\@@_round_uncertainty_zeros:nnnn}
-% \begin{macro}[EXP]{\@@_round_uncertainty_auxiv:nnnnnnN}
+% \begin{macro}[EXP]
+% {
+% \@@_round_uncertainty_auxiv:nnnnnnN ,
+% \@@_round_uncertainty_auxiv:nennnnN ,
+% \@@_round_uncertainty_auxiv:ennnnnN ,
+% \@@_round_uncertainty_auxiv:eennnnN
+% }
% \begin{macro}[EXP]{\@@_round_uncertainty_auxv:nnnN}
% \begin{macro}[EXP]{\@@_round_uncertainty_auxvi:nn}
% \begin{macro}[EXP]{\@@_round_uncertainty_auxvii:nnNnnn}
@@ -3406,7 +3465,7 @@
\str_if_eq:eeTF { \tl_head:n {#5} } { S }
{
\exp_not:n { {#1} {#2} }
- \exp_args:Nnno \@@_round_uncertainty:nnn
+ \@@_round_uncertainty:nno
{#3} {#4} { \use_ii:nn #5 }
{#6} {#7}
}
@@ -3420,13 +3479,14 @@
% \begin{macrocode}
\cs_new:Npn \@@_round_uncertainty:nnn #1#2#3
{
- \exp_args:Nf \@@_round_uncertainty:nnnn
+ \@@_round_uncertainty:ennn
{
\int_eval:n
{ \tl_count:n {#3} - \l_@@_round_precision_int }
}
{#1} {#2} {#3}
}
+\cs_generate_variant:Nn \@@_round_uncertainty:nnn { nno }
\cs_new:Npn \@@_round_uncertainty:nnnn #1#2#3#4
{
\use:e
@@ -3437,6 +3497,7 @@
{#2} {#3} {#1} {#4}
}
}
+\cs_generate_variant:Nn \@@_round_uncertainty:nnnn { e }
% \end{macrocode}
% The number of digits to remove from the main part and the detail of
% zero filling depends on whether we rounded up the uncertainty. So there
@@ -3455,7 +3516,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_round_uncertainty_auxi:nnnnn #1#2#3#4#5
{
- \exp_args:Nf \@@_round_uncertainty_auxiv:nnnnnnN
+ \@@_round_uncertainty_auxiv:ennnnnN
{ \@@_round_uncertainty_zeros:nnnn {#1} {#3} {#4} {#5} }
{#4}
{#2} {#3} {#1} { }
@@ -3467,7 +3528,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_round_uncertainty_auxii:nnnnn #1#2#3#4#5
{
- \exp_args:Nff \@@_round_uncertainty_auxiii:nnnnnnn
+ \@@_round_uncertainty_auxiii:eennnnn
{ \tl_count:n {#5} }
{ \tl_count:n {#3} }
{#1} {#2} {#3} {#4} {#5}
@@ -3479,26 +3540,21 @@
\bool_lazy_and:nnTF
{ \int_compare_p:nNn \l_@@_round_precision_int = 2 }
{ \int_compare_p:nNn {#1} = {#2} }
- {
- \exp_args:Nnf \@@_round_uncertainty_auxiv:nnnnnnN
- { 0 }
- }
- {
- \exp_args:Nnf \@@_round_uncertainty_auxiv:nnnnnnN
- { }
- }
+ { \@@_round_uncertainty_auxiv:nennnnN { 0 } }
+ { \@@_round_uncertainty_auxiv:nennnnN { } }
{ \int_eval:n { #6 + 1 } }
{#4} {#5} { 1 } { }
\@@_round_uncertainty_auxvii:nnNnnn
}
{
- \exp_args:Nff \@@_round_uncertainty_auxiv:nnnnnnN
+ \@@_round_uncertainty_auxiv:eennnnN
{ \@@_round_uncertainty_zeros:nnnn {#3} {#5} {#6} {#7} }
{ \int_eval:n { #6 + 1 } }
{#4} {#5} { 1 } {#3}
\@@_round_uncertainty_auxvii:nnNnnn
}
}
+\cs_generate_variant:Nn \@@_round_uncertainty_auxiii:nnnnnnn { ee }
\cs_new:Npn \@@_round_uncertainty_zeros:nnnn #1#2#3#4
{
\prg_replicate:nn
@@ -3530,6 +3586,7 @@
{#3} #7
\@@_round_end:nnn { { S } { #5#6 #1 } }
}
+\cs_generate_variant:Nn \@@_round_uncertainty_auxiv:nnnnnnN { ne , e , ee }
\cs_new:Npn \@@_round_uncertainty_auxv:nnnN #1#2#3#4
{
\int_compare:nNnT { \tl_count:n {#1} } > { \tl_count:n {#3} }
@@ -3668,27 +3725,30 @@
%
% \subsection{Number modification}
%
-% \begin{macro}[rEXP]{\siunitx_number_adjust_exponent:nn}
-% \begin{macro}[rEXP]{\siunitx_number_adjust_exponent:Nn}
-% \begin{macro}[rEXP]{\@@_adjust_exp:nnnnnnnn}
-% \begin{macro}[rEXP]{\@@_adjust_exp:nn}
-% \begin{macro}[rEXP]{\@@_adjust_exp:nNw}
+% \begin{macro}[EXP]
+% {\siunitx_number_adjust_exponent:nn, \siunitx_number_adjust_exponent:Vn}
+% \begin{macro}[EXP]{\siunitx_number_adjust_exponent:Nn}
+% \begin{macro}[EXP]{\@@_adjust_exp:nnnnnnnn}
+% \begin{macro}[EXP]{\@@_adjust_exp:nn, \@@_adjust_exp:en}
+% \begin{macro}[EXP]{\@@_adjust_exp:nNw}
% A simply case of breaking down and rebuilding the number.
% \begin{macrocode}
\cs_new:Npn \siunitx_number_adjust_exponent:nn #1#2
{ \@@_adjust_exp:nnnnnnnn #1 {#2} }
+\cs_generate_variant:Nn \siunitx_number_adjust_exponent:nn { V }
\cs_new:Npn \siunitx_number_adjust_exponent:Nn #1#2
{
\tl_if_empty:NF #1
- { \exp_args:NV \siunitx_number_adjust_exponent:nn #1 {#2} }
+ { \siunitx_number_adjust_exponent:Vn #1 {#2} }
}
\cs_new:Npn \@@_adjust_exp:nnnnnnnn #1#2#3#4#5#6#7#8
{
\exp_not:n { {#1} {#2} {#3} {#4} {#5} }
- \exp_args:Ne \@@_adjust_exp:nn { \fp_eval:n { #6#7 + #8 } } {#6}
+ \@@_adjust_exp:en { \fp_eval:n { #6#7 + #8 } } {#6}
}
\cs_new:Npn \@@_adjust_exp:nn #1#2
{ \@@_adjust_exp:nNw {#2} #1 \q_stop }
+\cs_generate_variant:Nn \@@_adjust_exp:nn { e }
\cs_new:Npn \@@_adjust_exp:nNw #1#2#3 \q_stop
{
\token_if_eq_meaning:NNTF #2 -
@@ -3851,87 +3911,88 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}[rEXP]{\siunitx_number_output:N}
-% \begin{macro}[rEXP]{\siunitx_number_output:n}
-% \begin{macro}[rEXP]{\siunitx_number_output:NN}
-% \begin{macro}[rEXP]{\siunitx_number_output:nN}
-% \begin{macro}[rEXP]{\@@_output:Nn}
-% \begin{macro}[rEXP]{\@@_output:nn}
-% \begin{macro}[rEXP]{\@@_output:nnnnnnn}
-% \begin{macro}[rEXP]{\@@_output_bracket:nn}
-% \begin{macro}[rEXP]{\@@_output_bracket:w}
-% \begin{macro}[rEXP]{\@@_output_comparator:nn}
-% \begin{macro}[rEXP]{\@@_output_sign:nnn}
-% \begin{macro}[rEXP]{\@@_output_sign:nN}
-% \begin{macro}[rEXP]
+% \begin{macro}[EXP]{\siunitx_number_output:N, \siunitx_number_output:c}
+% \begin{macro}[EXP]{\siunitx_number_output:n}
+% \begin{macro}[EXP]{\siunitx_number_output:NN, \siunitx_number_output:cN}
+% \begin{macro}[EXP]{\siunitx_number_output:nN}
+% \begin{macro}[EXP]{\@@_output:Nn}
+% \begin{macro}[EXP]{\@@_output:nn}
+% \begin{macro}[EXP]{\@@_output:nnnnnnn}
+% \begin{macro}[EXP]{\@@_output_bracket:nn}
+% \begin{macro}[EXP]{\@@_output_bracket:w}
+% \begin{macro}[EXP]{\@@_output_comparator:nn}
+% \begin{macro}[EXP]{\@@_output_sign:nnn}
+% \begin{macro}[EXP]{\@@_output_sign:nN}
+% \begin{macro}[EXP]
% {\@@_output_sign_color:w, \@@_output_sign_brackets:w}
-% \begin{macro}[rEXP]{\@@_output_integer:nnn}
-% \begin{macro}[rEXP]{\@@_output_decimal:nn, \@@_output_decimal:fn}
-% \begin{macro}[rEXP]{\@@_output_digits:nn}
-% \begin{macro}[rEXP]{\@@_output_digit_separator:N}
-% \begin{macro}[rEXP]{\@@_output_integer_3_3:n}
-% \begin{macro}[rEXP]
+% \begin{macro}[EXP]{\@@_output_integer:nnn}
+% \begin{macro}[EXP]{\@@_output_decimal:nn, \@@_output_decimal:en}
+% \begin{macro}[EXP]{\@@_output_digits:nn}
+% \begin{macro}[EXP]{\@@_output_digit_separator:N}
+% \begin{macro}[EXP]{\@@_output_integer_3_3:n}
+% \begin{macro}[EXP]
% {
% \@@_output_integer_aux_0:n,
% \@@_output_integer_aux_1:n,
% \@@_output_integer_aux_2:n
% }
-% \begin{macro}[rEXP]{\@@_output_integer_first:nnNN}
-% \begin{macro}[rEXP]{\@@_output_integer_loop:NNNN}
-% \begin{macro}[rEXP]{\@@_output_integer_first:n}
-% \begin{macro}[rEXP]{\@@_output_integer_aux:n}
-% \begin{macro}[rEXP]{\@@_output_integer_loop:NnnN}
-% \begin{macro}[rEXP]{\@@_output_decimal_3_3:n}
-% \begin{macro}[rEXP]{\@@_output_decimal_loop:NNNN}
-% \begin{macro}[rEXP]{\@@_output_decimal_3_2:n}
-% \begin{macro}[rEXP]{\@@_output_decimal:NNNw}
-% \begin{macro}[rEXP]{\@@_output_decimal_loop:NN}
-% \begin{macro}[rEXP]{\@@_output_decimal_first:n}
-% \begin{macro}[rEXP]{\@@_output_decimal_loop:NnnN}
-% \begin{macro}[rEXP]{\@@_output_uncertainty:nnn}
-% \begin{macro}[rEXP]{\@@_output_uncertainty_unaligned:n}
-% \begin{macro}[rEXP]{\@@_output_uncert:nnnn}
-% \begin{macro}[rEXP]{\@@_output_uncert:nnnnn}
-% \begin{macro}[rEXP]{\@@_output_uncert_loop:nnN}
-% \begin{macro}[rEXP]{\@@_output_uncert_loop:nnNw}
-% \begin{macro}[rEXP]
+% \begin{macro}[EXP]{\@@_output_integer_first:nnNN}
+% \begin{macro}[EXP]{\@@_output_integer_loop:NNNN}
+% \begin{macro}[EXP]{\@@_output_integer_first:n}
+% \begin{macro}[EXP]{\@@_output_integer_aux:n, \@@_output_integer_aux:e}
+% \begin{macro}[EXP]{\@@_output_integer_loop:NnnN}
+% \begin{macro}[EXP]{\@@_output_decimal_3_3:n}
+% \begin{macro}[EXP]{\@@_output_decimal_loop:NNNN}
+% \begin{macro}[EXP]{\@@_output_decimal_3_2:n}
+% \begin{macro}[EXP]{\@@_output_decimal:NNNw}
+% \begin{macro}[EXP]{\@@_output_decimal_loop:NN}
+% \begin{macro}[EXP]{\@@_output_decimal_first:n}
+% \begin{macro}[EXP]{\@@_output_decimal_loop:NnnN}
+% \begin{macro}[EXP]{\@@_output_uncertainty:nnn}
+% \begin{macro}[EXP]{\@@_output_uncertainty_unaligned:n}
+% \begin{macro}[EXP]{\@@_output_uncert:nnnn}
+% \begin{macro}[EXP]{\@@_output_uncert:nnnnn, \@@_output_uncert:Vnnnn}
+% \begin{macro}[EXP]{\@@_output_uncert_loop:nnN}
+% \begin{macro}[EXP]{\@@_output_uncert_loop:nnNw}
+% \begin{macro}[EXP]
% {
% \@@_output_uncert_desc_bracket:n ,
% \@@_output_uncert_desc_bracket-separator:n ,
% \@@_output_uncert_desc_separator:n ,
% \@@_output_uncert_desc_subscript:n
% }
-% \begin{macro}[rEXP]{\@@_output_uncert_A_loop:nnn, \@@_output_uncert_S_loop:nnn}
-% \begin{macro}[rEXP]{\@@_output_uncert_S_loop:w}
-% \begin{macro}[rEXP]{\@@_output_uncert_A:nnnn, \@@_output_uncert_A_multi:nnnn}
-% \begin{macro}[rEXP]{\@@_output_uncert_A:nnnnn}
-% \begin{macro}[rEXP]
+% \begin{macro}[EXP]{\@@_output_uncert_A_loop:nnn, \@@_output_uncert_S_loop:nnn}
+% \begin{macro}[EXP]{\@@_output_uncert_S_loop:w}
+% \begin{macro}[EXP]{\@@_output_uncert_A:nnnn, \@@_output_uncert_A_multi:nnnn}
+% \begin{macro}[EXP]{\@@_output_uncert_A:nnnnn}
+% \begin{macro}[EXP]
% {
% \@@_output_uncert_S:nnnn ,
% \@@_output_uncert_S_sep:nnnn ,
% \@@_output_uncert_S_multi:nnnn
% }
-% \begin{macro}[rEXP]
+% \begin{macro}[EXP]
% {
% \@@_output_uncert_S_compact:nn ,
% \@@_output_uncert_S_compact-marker:nn ,
% \@@_output_uncert_S_full:nn
% }
-% \begin{macro}[rEXP]
+% \begin{macro}[EXP]
% {\@@_output_uncert_augment:nnnn}
-% \begin{macro}[rEXP]
-% {\@@_output_uncert_augment:nnn}
-% \begin{macro}[rEXP]
-% {\@@_output_uncert_augment:nnnw, \@@_output_uncert_augment:fnnw}
-% \begin{macro}[rEXP]{\@@_output_uncert_augment:nnw}
-% \begin{macro}[rEXP]
+% \begin{macro}[EXP]
+% {\@@_output_uncert_augment:nnn, \@@_output_uncert_augment:enn}
+% \begin{macro}[EXP]
+% {\@@_output_uncert_augment:nnnw, \@@_output_uncert_augment:ennw}
+% \begin{macro}[EXP]{\@@_output_uncert_augment:nnw}
+% \begin{macro}[EXP]
% {
% \@@_output_exponent:nnnnn ,
% \@@_output_exponent_auxi:nnnnn ,
-% \@@_output_exponent_auxii:nnnnn
+% \@@_output_exponent_auxii:nnnnn ,
+% \@@_output_exponent_auxiii:nnnnn
% }
-% \begin{macro}[rEXP]{\@@_output_exponent_auxiii:nn}
-% \begin{macro}[rEXP]{\@@_output_end:}
+% \begin{macro}[EXP]{\@@_output_exponent_auxiv:nn}
+% \begin{macro}[EXP]{\@@_output_end:}
% The approach to formatting a single number is to split into
% the constituent parts. All of the parts are assembled including
% inserting tabular alignment markers (which may be empty) for each
@@ -3939,10 +4000,12 @@
% \begin{macrocode}
\cs_new:Npn \siunitx_number_output:N #1
{ \@@_output:Nn #1 { } }
+\cs_generate_variant:Nn \siunitx_number_output:N { c }
\cs_new:Npn \siunitx_number_output:n #1
{ \@@_output:nn #1 { } }
\cs_new:Npn \siunitx_number_output:NN #1#2
{ \@@_output:Nn #1 {#2} }
+\cs_generate_variant:Nn \siunitx_number_output:NN { c }
\cs_new:Npn \siunitx_number_output:nN #1#2
{ \@@_output:nn #1 {#2} }
\cs_new:Npn \@@_output:Nn #1#2
@@ -3982,7 +4045,11 @@
{
\bool_lazy_or_p:nn
{ \l_@@_zero_exponent_bool }
- { ! \str_if_eq_p:nn {#2} { 0 } }
+ {
+ ! \bool_lazy_or_p:nn
+ { \tl_if_blank_p:n {#2} }
+ { \str_if_eq_p:nn {#2} { 0 } }
+ }
}
}
\@@_output_bracket:w
@@ -4118,7 +4185,7 @@
{ \@@_output_digits:nn { decimal } {#1} }
}
}
-\cs_generate_variant:Nn \@@_output_decimal:nn { f }
+\cs_generate_variant:Nn \@@_output_decimal:nn { e }
\cs_new:Npn \@@_output_digits:nn #1#2
{
\bool_if:cTF { l_@@_group_ #1 _ bool }
@@ -4192,13 +4259,14 @@
% \begin{macrocode}
\cs_new:Npn \@@_output_integer_first:n #1
{
- \exp_args:Ne \@@_output_integer_aux:n { \tl_reverse:n {#1} }
+ \@@_output_integer_aux:e { \tl_reverse:n {#1} }
}
\cs_new:Npn \@@_output_integer_aux:n #1
{
\@@_output_integer_loop:NnnN \l_@@_group_first_int { 0 } { }
#1 \q_recursion_tail \q_recursion_stop
}
+\cs_generate_variant:Nn \@@_output_integer_aux:n { e }
\cs_new:Npn \@@_output_integer_loop:NnnN #1#2#3#4
{
\quark_if_recursion_tail_stop_do:Nn #4 {#3}
@@ -4325,7 +4393,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_output_uncert:nnnn #1#2#3#4
{
- \exp_args:NV \@@_output_uncert:nnnnn \l_@@_uncert_desc_clist
+ \@@_output_uncert:Vnnnn \l_@@_uncert_desc_clist
{#1} {#2} {#3} {#4}
}
\cs_new:Npn \@@_output_uncert:nnnnn #1#2#3#4#5
@@ -4333,6 +4401,7 @@
\@@_output_uncert_loop:nnN {#2} {#3}
#4 \q_recursion_tail #1 , \q_recursion_stop {#5}
}
+\cs_generate_variant:Nn \@@_output_uncert:nnnnn { V }
\cs_new:Npn \@@_output_uncert_loop:nnN #1#2#3
{
\quark_if_recursion_tail_stop:N #3
@@ -4473,7 +4542,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_output_uncert_augment:nnnn #1#2#3#4
{
- \exp_args:Nf \@@_output_uncert_augment:nnn
+ \@@_output_uncert_augment:enn
{ \int_eval:n { \tl_count:n {#1} - \tl_count:n {#2} } }
{#3} {#4}
}
@@ -4481,7 +4550,7 @@
{
\int_compare:nNnTF {#1} > 0
{
- \@@_output_uncert_augment:fnnw
+ \@@_output_uncert_augment:ennw
{ \int_eval:n { #1 - 1 } }
{#3}
{ }
@@ -4489,7 +4558,7 @@
}
{
0
- \@@_output_decimal:fn
+ \@@_output_decimal:en
{
\prg_replicate:nn { \int_abs:n {#1} } { 0 }
#2
@@ -4497,6 +4566,7 @@
{#3}
}
}
+\cs_generate_variant:Nn \@@_output_uncert_augment:nnn { e }
\cs_new:Npn \@@_output_uncert_augment:nnnw #1#2#3#4
{
\quark_if_nil:NF #4
@@ -4504,14 +4574,14 @@
\int_compare:nNnTF {#1} = 0
{ \@@_output_uncert_augment:nnw {#3#4} {#2} }
{
- \@@_output_uncert_augment:fnnw
+ \@@_output_uncert_augment:ennw
{ \int_eval:n { #1 - 1 } }
{#2}
{#3#4}
}
}
}
-\cs_generate_variant:Nn \@@_output_uncert_augment:nnnw { f }
+\cs_generate_variant:Nn \@@_output_uncert_augment:nnnw { e }
\cs_new:Npn \@@_output_uncert_augment:nnw #1#2#3 \q_nil
{
\@@_output_digits:nn { integer } {#1}
@@ -4529,18 +4599,28 @@
\cs_new:Npn \@@_output_exponent:nnnnn #1#2#3#4#5
{
\exp_not:n {#5}
+ \str_if_empty:nTF {#2}
+ {
+ \bool_if:NTF \l_@@_zero_exponent_bool
+ { \@@_output_exponent_auxi:nnnnn {#1} { 0 } {#3} {#4} {#5} }
+ { \exp_not:n {#5} }
+ }
+ { \@@_output_exponent_auxi:nnnnn {#1} {#2} {#3} {#4} {#5} }
+ }
+\cs_new:Npn \@@_output_exponent_auxi:nnnnn #1#2#3#4#5
+ {
\bool_lazy_or:nnTF
{ \l_@@_zero_exponent_bool }
{ ! \str_if_eq_p:nn {#2} { 0 } }
{
\tl_if_empty:NTF \l_@@_output_exp_marker_tl
- { \@@_output_exponent_auxi:nnnnn }
{ \@@_output_exponent_auxii:nnnnn }
+ { \@@_output_exponent_auxiii:nnnnn }
{#1} {#2} {#3} {#4} {#5}
}
{ \exp_not:n {#5} }
}
-\cs_new:Npn \@@_output_exponent_auxi:nnnnn #1#2#3#4#5
+\cs_new:Npn \@@_output_exponent_auxii:nnnnn #1#2#3#4#5
{
\bool_lazy_or:nnT
{
@@ -4562,15 +4642,15 @@
\exp_not:n {#5}
\exp_not:V \l_@@_exponent_base_tl
^
- { \@@_output_exponent_auxiii:nnn { } {#1} {#2} }
+ { \@@_output_exponent_auxiv:nnn { } {#1} {#2} }
}
-\cs_new:Npn \@@_output_exponent_auxii:nnnnn #1#2#3#4#5
+\cs_new:Npn \@@_output_exponent_auxiii:nnnnn #1#2#3#4#5
{
\exp_not:n {#5}
\exp_not:V \l_@@_output_exp_marker_tl
- \@@_output_exponent_auxiii:nnn { \mathord } {#1} {#2}
+ \@@_output_exponent_auxiv:nnn { \mathord } {#1} {#2}
}
-\cs_new:Npn \@@_output_exponent_auxiii:nnn #1#2#3
+\cs_new:Npn \@@_output_exponent_auxiv:nnn #1#2#3
{
\tl_if_blank:nTF {#2}
{
diff --git a/macros/latex/contrib/siunitx/siunitx-print.dtx b/macros/latex/contrib/siunitx/siunitx-print.dtx
index 6786aba79e..f802bd7353 100644
--- a/macros/latex/contrib/siunitx/siunitx-print.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-print.dtx
@@ -106,7 +106,7 @@
% {
% \siunitx_print_number:n, \siunitx_print_number:V,
% \siunitx_print_number:x,
-% \siunitx_print_unit:n, \siunitx_print_unit:V,
+% \siunitx_print_unit:n, \siunitx_print_unit:V, \siunitx_print_unit:o,
% \siunitx_print_unit:x
% }
% \begin{syntax}
@@ -347,12 +347,10 @@
\AtBeginDocument { \RequirePackage { color } }
% \end{macrocode}
%
-% \begin{macro}{\tl_replace_all:NVn}
% Required variants.
% \begin{macrocode}
\cs_generate_variant:Nn \tl_replace_all:Nnn { NV }
% \end{macrocode}
-% \end{macro}
%
% \begin{variable}{\l_@@_tmp_tl}
% Scratch space.
@@ -461,7 +459,7 @@
% {
% \siunitx_print_number:n, \siunitx_print_number:V,
% \siunitx_print_number:x,
-% \siunitx_print_unit:n, \siunitx_print_unit:V,
+% \siunitx_print_unit:n, \siunitx_print_unit:V, \siunitx_print_unit:o,
% \siunitx_print_unit:x
% }
% \begin{macro}{\@@_aux:nn}
@@ -476,14 +474,14 @@
\cs_generate_variant:Nn \siunitx_print_number:n { V , x }
\cs_new_protected:Npn \siunitx_print_unit:n #1
{ \@@_aux:nn { unit } {#1} }
-\cs_generate_variant:Nn \siunitx_print_unit:n { V , x }
+\cs_generate_variant:Nn \siunitx_print_unit:n { V , o , x }
\cs_new_protected:Npn \@@_aux:nn #1#2
{
\tl_if_empty:oF {#2}
{
\tl_if_empty:cTF { l_@@_ #1 _color_tl }
{ \use:n }
- { \exp_args:Nv \textcolor { l_@@_ #1 _color_tl } }
+ { \ExpandArgs { v } \textcolor { l_@@_ #1 _color_tl } }
{
\use:c
{
@@ -576,11 +574,12 @@
% \begin{macro}{\@@_math_replace:Nn}
% \begin{macro}
% {
-% \@@_math_auxiii:n,
-% \@@_math_auxiv:n,
+% \@@_math_auxiii:n ,
+% \@@_math_auxiii:V ,
+% \@@_math_auxiv:n ,
% \@@_math_auxv:n
% }
-% \begin{macro}{\@@_math_auxvi:Nn}
+% \begin{macro}{\@@_math_auxvi:Nn, \@@_math_auxvi:NV}
% \begin{macro}{\@@_math_auxvii:N}
% \begin{macro}{\@@_math_auxviii:w}
% \begin{macro}{\@@_math_auxix:Nn}
@@ -677,7 +676,7 @@
\exp_after:wN \@@_math_replace:Nn
\l_@@_math_html_tl
\q_recursion_tail { } \q_recursion_stop
- \exp_args:NV \@@_math_auxiii:n \l_@@_tmp_tl
+ \@@_math_auxiii:V \l_@@_tmp_tl
\group_end:
}
% \end{macrocode}
@@ -718,6 +717,7 @@
{ \@@_math_auxiv:n }
{#1}
}
+\cs_generate_variant:Nn \@@_math_auxiii:n { V }
% \end{macrocode}
% Now we deal with the font selection in math mode. There are two possible
% cases. First, we are retaining the current math font, and the active one is
@@ -747,6 +747,7 @@
}
\cs_new_protected:Npn \@@_math_auxvi:Nn #1#2
{ \@@_math_ensure:n { #1 {#2} } }
+\cs_generate_variant:Nn \@@_math_auxvi:Nn { NV }
\cs_new_protected:Npn \@@_math_auxvii:N #1
{
\quark_if_recursion_tail_stop_do:Nn #1 { \@@_math_auxv:n }
@@ -775,8 +776,7 @@
\tl_replace_all:Nnn \exp_not:N \l_@@_tmp_tl
{ ^ }
{ \exp_not:N \@@_math_super:n }
- \exp_not:N \exp_args:NNV \@@_math_auxvi:Nn
- #1 \exp_not:N \l_@@_tmp_tl
+ \@@_math_auxvi:NV #1 \exp_not:N \l_@@_tmp_tl
\group_end:
}
\cs_new_protected:Npx \@@_math_sub:n #1
@@ -831,6 +831,7 @@
%
% \begin{macro}{\siunitx_print_text:n}
% \begin{macro}{\@@_text_replace:n, \@@_text_replace_aux:n}
+% \begin{macro}{\@@_text_replace_font:N}
% \begin{macro}[EXP]{\@@_text_replace_first:N}
% \begin{macro}{\@@_text_replace:N}
% \begin{macro}{\@@_text_replace:NNn}
@@ -865,7 +866,8 @@
}
{ \selectfont }
\tl_use:N \l_@@_text_font_tl
- \exp_args:NnV \tl_if_head_eq_meaning:nNTF {#1} \l_siunitx_unit_fraction_tl
+ \exp_last_unbraced:Nno \tl_if_head_eq_meaning:nNTF
+ {#1} \l_siunitx_unit_fraction_tl
{ \@@_text_fraction:Nnn #1 }
{ \@@_text_replace:n {#1} }
}
@@ -874,6 +876,11 @@
% To get math mode material to print in text mode, various search-and-replace
% steps are needed. We use \tn{protected@edef} to deal with commands, partly
% for speed and partly as it deals with anything nested inside \cs{mathord}.
+% On the other hand, the unit font command has to be handled at exactly one
+% level, so that it does not affect anything inside for example
+% \cs{ensuremath}. That means preventing any change inside the
+% \tn{protected@edef}, hence the \cs{cs_set_eq:NN} to \cs{scan_stop:}
+% (for \LaTeXe{} robust commands).
% \begin{macrocode}
\cs_new_protected:Npn \@@_text_replace:n #1
{
@@ -884,8 +891,12 @@
\tl_set:Nn \l_@@_tmp_tl {#1}
\tl_if_empty:NF \l_@@_tmp_tl
{
+ \@@_text_replace_font:N \l_@@_tmp_tl
\tl_if_empty:NF \l_siunitx_unit_font_tl
- { \exp_after:wN \cs_set_eq:NN \l_siunitx_unit_font_tl \use:n }
+ {
+ \exp_after:wN
+ \cs_set_eq:NN \l_siunitx_unit_font_tl \scan_stop:
+ }
\cs_set:Npn \mathord ##1
{ \@@_text_replace_first:N ##1 }
\group_begin:
@@ -911,6 +922,14 @@
\group_end:
}
\cs_new_protected:Npn \@@_text_replace_aux:n #1 {#1}
+\cs_new_protected:Npn \@@_text_replace_font:N #1
+ {
+ \tl_if_empty:NF \l_siunitx_unit_font_tl
+ {
+ \tl_replace_all:NVn #1
+ \l_siunitx_unit_font_tl { \use:n }
+ }
+ }
\cs_new:Npn \@@_text_replace_first:N #1
{
\str_case:nnF {#1}
@@ -939,6 +958,7 @@
\exp_not:N \q_recursion_tail
{ ? }
\exp_not:N \q_recursion_stop
+ \@@_text_replace_font:N #1
}
\cs_new_protected:Npn \@@_text_replace:NNn #1#2#3
{
@@ -963,7 +983,8 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_print_replace_frac:n #1
{
- \exp_args:NnV \tl_if_head_eq_meaning:nNTF {#1} \l_siunitx_unit_fraction_tl
+ \exp_last_unbraced:Nno \tl_if_head_eq_meaning:nNTF
+ {#1} \l_siunitx_unit_fraction_tl
{ \@@_text_fraction:Nnn #1 }
{ \mbox { \@@_text_replace:n {#1} } }
}
@@ -1085,6 +1106,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \subsection{Standard settings for module options}
%
diff --git a/macros/latex/contrib/siunitx/siunitx-quantity.dtx b/macros/latex/contrib/siunitx/siunitx-quantity.dtx
index 2b2e783eed..a89ee78682 100644
--- a/macros/latex/contrib/siunitx/siunitx-quantity.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-quantity.dtx
@@ -222,7 +222,7 @@
% \begin{macro}{\@@_parsed_aux:w}
% \begin{macro}{\@@_parsed_aux:nnnw}
% \begin{macro}{\@@_parsed_aux:nnnnw}
-% \begin{macro}{\@@_parsed_aux:nnnn}
+% \begin{macro}{\@@_parsed_aux:nnnn, \@@_parsed_aux:onnn}
% \begin{macro}{\@@_parsed_aux:nnn}
% For quantities, there is bit to do to combine things. The first question is
% whether we are parsing at all: if not, things are quite short. Notice that
@@ -268,7 +268,7 @@
\cs_new_protected:cpn { @@_parsed_combine-exponent:n } #1
{
\siunitx_number_process:NN \l_@@_number_tl \l_@@_number_tl
- \exp_args:NV \@@_extract_exp:nNN
+ \@@_extract_exp:VNN
\l_@@_number_tl \l_@@_tmp_fp \l_@@_number_tl
\siunitx_unit_format_combine_exponent:nnN {#1}
\l_@@_tmp_fp \l_@@_unit_tl
@@ -303,7 +303,7 @@
{ \@@_parsed_aux:nnnnw {#1} {#2} {#3} {#4} ? }
\cs_new_protected:Npn \@@_parsed_aux:nnnnw
#1#2#3#4 #5 \q_nil #6 \q_stop
- { \exp_args:No \@@_parsed_aux:nnnn { \use_none:n #5#6 } {#1} {#2} {#3#4} }
+ { \@@_parsed_aux:onnn { \use_none:n #5#6 } {#1} {#2} {#3#4} }
\cs_new_protected:Npn \@@_parsed_aux:nnnn #1#2#3#4
{
\tl_if_blank:nTF {#4}
@@ -332,6 +332,7 @@
}
}
}
+\cs_generate_variant:Nn \@@_parsed_aux:nnnn { o }
% \end{macrocode}
% For the case of a separated uncertainty with repeated units, we print the
% two parts independently. The third argument here is the exponent if there
@@ -353,13 +354,14 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_extract_exp:nNN}
+% \begin{macro}{\@@_extract_exp:nNN, \@@_extract_exp:VNN}
% \begin{macro}{\@@_extract_exp:nnnnnnnNN}
% To extract the exponent part for a combined prefix, we decompose the value
% and remove it.
% \begin{macrocode}
\cs_new_protected:Npn \@@_extract_exp:nNN #1#2#3
{ \@@_extract_exp:nnnnnnnNN #1 #2 #3 }
+\cs_generate_variant:Nn \@@_extract_exp:nNN { V }
\cs_new_protected:Npn \@@_extract_exp:nnnnnnnNN #1#2#3#4#5#6#7#8#9
{
\fp_set:Nn #8 {#6#7}
@@ -397,9 +399,7 @@
{ \nobreak }
\siunitx_print_unit:n {#2}
}
- {
- \exp_args:No \siunitx_print_unit:n { \use_none:n #2 }
- }
+ { \siunitx_print_unit:o { \use_none:n #2 } }
}
}
\cs_generate_variant:Nn \siunitx_quantity_print:nn { nV , VV , xV }
diff --git a/macros/latex/contrib/siunitx/siunitx-symbol.dtx b/macros/latex/contrib/siunitx/siunitx-symbol.dtx
index 8a7bad09b8..037e39ffc7 100644
--- a/macros/latex/contrib/siunitx/siunitx-symbol.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-symbol.dtx
@@ -286,7 +286,7 @@
{
\@ifpackageloaded { hyperref }
{
- \exp_args:Nx \pdfstringdefDisableCommands
+ \ExpandArgs { x } \pdfstringdefDisableCommands
{
\cs_set_eq:NN \siunitx_print_text:n \exp_not:N \use:n
\siunitx_declare_unit:Nn \exp_not:N \ohm
diff --git a/macros/latex/contrib/siunitx/siunitx-table.dtx b/macros/latex/contrib/siunitx/siunitx-table.dtx
index 3fe8d34a5d..1eaf959a6b 100644
--- a/macros/latex/contrib/siunitx/siunitx-table.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-table.dtx
@@ -235,6 +235,11 @@
%<@@=siunitx_table>
% \end{macrocode}
%
+% Required core variants.
+% \begin{macrocode}
+\cs_generate_variant:Nn \keys_set:nn { nx }
+% \end{macrocode}
+%
% \begin{variable}{\l_@@_tmp_box, \l_@@_tmp_dim, \l_@@_tmp_tl}
% Scratch space.
% \begin{macrocode}
@@ -445,7 +450,7 @@
{
\exp_args:NNV \group_end:
\@@_collect_end:n \l_@@_collect_tl
- \exp_args:NV \@@_split:nNNN
+ \@@_split:VNNN
\l_@@_collect_tl
\l_@@_before_tl
\l_@@_number_tl
@@ -487,7 +492,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\@@_split:nNNN}
+% \begin{macro}{\@@_split:nNNN, \@@_split:VNNN}
% \begin{macro}{\@@_split_loop:NNN}
% \begin{macro}{\@@_split_group:NNNn}
% \begin{macro}{\@@_split_token:NNNN}
@@ -504,6 +509,7 @@
\@@_split_tidy:N #2
\@@_split_tidy:N #4
}
+\cs_generate_variant:Nn \@@_split:nNNN { V }
\cs_new_protected:Npn \@@_split_loop:NNN #1#2#3
{
\peek_remove_spaces:n
@@ -853,7 +859,7 @@
\l_@@_before_model_tl
\l_@@_model_tl
\l_@@_after_model_tl
- \exp_args:NV \@@_generate_model:n \l_@@_model_tl
+ \@@_generate_model:V \l_@@_model_tl
\tl_set:Nn \l_@@_align_mode_tl { format }
} ,
table-model-setup .tl_set:N =
@@ -877,10 +883,10 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_generate_model:n}
+% \begin{macro}{\@@_generate_model:n, \@@_generate_model:V}
% \begin{macro}{\@@_generate_model:nnnnnnn}
% \begin{macro}[EXP]{\@@_generate_model_S:nnw}
-% \begin{macro}[EXP]{\@@_generate_model_S:nnn}
+% \begin{macro}[EXP]{\@@_generate_model_S:nnn, \@@_generate_model_S:een}
% Creating a model for a table at this stage means parsing the format and
% converting that to an appropriate model. Things are quite straight-forward
% other than the uncertainty part. At this stage there is no point in
@@ -902,6 +908,7 @@
\l_@@_format_tl
}
}
+\cs_generate_variant:Nn \@@_generate_model:n { V }
\cs_new_protected:Npn \@@_generate_model:nnnnnnn #1#2#3#4#5#6#7
{
\tl_set:Nx \l_@@_model_tl
@@ -922,9 +929,9 @@
}
\exp_not:n { {#6} }
{
- \int_compare:nNnTF {#7} = 0
+ \int_compare:nNnTF { 0#7 } = 0
{ 0 }
- { \prg_replicate:nn {#7} { 8 } }
+ { \prg_replicate:nn { 0#7 } { 8 } }
}
}
}
@@ -932,7 +939,7 @@
{
{ S }
{
- \exp_args:Nff \@@_generate_model_S:nnn
+ \@@_generate_model_S:een
{ \tl_count:n {#1} } { \tl_count:n {#3} }
{#3}
}
@@ -951,6 +958,7 @@
}
{ 8 }
}
+\cs_generate_variant:Nn \@@_generate_model_S:nnn { ee }
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -1271,7 +1279,12 @@
#1 \q_nil #2 \q_nil #3 \q_nil #4 \q_nil #5
\q_nil #6 \q_nil #7 \q_nil #8 \q_stop
{
- \exp_not:n {#1#2#3#4#5#6}
+ \bool_lazy_and:nnTF
+ { \tl_if_blank_p:n {#1#2} }
+ { ! \tl_if_blank_p:n {#3} }
+ { { } }
+ { \exp_not:n {#1#2} }
+ \exp_not:n {#3#4#5#6}
\tl_if_blank:nT {#1#2#3#4#5#6} { { } }
\exp_not:n {#7#8}
}
@@ -1298,7 +1311,7 @@
\group_begin:
\bool_if:NT \l_@@_auto_round_bool
{
- \exp_args:Nx \keys_set:nn { siunitx }
+ \keys_set:nx { siunitx }
{
round-mode = places ,
round-pad = true ,
diff --git a/macros/latex/contrib/siunitx/siunitx-unit.dtx b/macros/latex/contrib/siunitx/siunitx-unit.dtx
index 34ccb1ec82..ee458b3f88 100644
--- a/macros/latex/contrib/siunitx/siunitx-unit.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-unit.dtx
@@ -93,7 +93,7 @@
%
% \section{Formatting units}
%
-% \begin{function}{\siunitx_unit_format:nN}
+% \begin{function}{\siunitx_unit_format:nN, \siunitx_unit_format:VN}
% \begin{syntax}
% \cs{siunitx_unit_format:nN} \Arg{units} \meta{tl~var}
% \end{syntax}
@@ -1062,7 +1062,7 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\siunitx_unit_format:nN}
+% \begin{macro}{\siunitx_unit_format:nN, \siunitx_unit_format:VN}
% \begin{macro}{\siunitx_unit_format_extract_prefixes:nNN}
% \begin{macro}{\siunitx_unit_format_combine_exponent:nnN}
% \begin{macro}{\siunitx_unit_format_multiply:nnN}
@@ -1098,6 +1098,7 @@
\fp_set:Nn \l_@@_multiple_fp { \c_one_fp }
\@@_format:nNN {#1} #2 \l_@@_tmp_fp
}
+\cs_generate_variant:Nn \siunitx_unit_format:nN { V }
\cs_new_protected:Npn \siunitx_unit_format_extract_prefixes:nNN #1#2#3
{
\bool_set_true:N \l_@@_prefix_exp_bool
@@ -1249,6 +1250,7 @@
{ \token_to_str:N ^ } { ^ }
\tl_replace_all:Nnn \exp_not:N \l_@@_tmp_tl
{ \token_to_str:N _ } { \c_@@_math_subscript_tl }
+ \cs_set_eq:NN \exp_not:N \text \scan_stop:
\char_set_active_eq:NN ^
\exp_not:N \@@_format_literal_superscript:
\char_set_active_eq:NN _
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 96f6999841..f2ec215fa5 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2023-08-24} {3.3.4}
+\ProvidesExplPackage {siunitx} {2023-08-30} {3.3.5}
{A comprehensive (SI) units package}
% \end{macrocode}
%
@@ -572,7 +572,7 @@
\cs_set_protected:Npn \@@_tmp:w \NC@do ##1##2 \NC@do #1
{ \NC@list { \NC@do ##1 \NC@do #1 ##2 } }
\exp_after:wN \@@_tmp:w \the \NC@list
- \exp_args:NNc \renewcommand * { NC@rewrite@ #1 } [ 1 ] [ ]
+ \ExpandArgs { Nc } \renewcommand * { NC@rewrite@ #1 } [ 1 ] [ ]
{
\@temptokena \expandafter
{
@@ -629,7 +629,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_bookmark_cmd:Nnn #1#2#3
{
- \exp_args:Nc \DeclareExpandableDocumentCommand
+ \ExpandArgs { c } \DeclareExpandableDocumentCommand
{ \cs_to_str:N #1 \c_space_tl ( pdfstring ~ context ) }
{#2} {#3}
}
@@ -788,12 +788,13 @@
{
0
\exp_not:N \@@_list_count:w \c_space_tl
- #1 \exp_not:n { ; \q_recursion_tail ; \q_recursion_stop }
+ #1
+ \exp_not:n { ; \s_stop \use_none_delimit_by_q_stop:w ; \q_stop }
}
}
\cs_new:Npx \@@_list_count:w #1 ;
{
- \exp_not:n { \exp_args:Nf \quark_if_recursion_tail_stop:n } {#1}
+ \exp_not:N \use_none_delimit_by_s_stop:w #1 \exp_not:N \s_stop
\exp_not:N \tl_if_blank:nF {#1} { + 1 }
\exp_not:N \@@_list_count:w \c_space_tl
}
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index edd301f219..000d5790d6 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md
index 555e13337e..961b6e2161 100644
--- a/macros/latex/contrib/tagpdf/README.md
+++ b/macros/latex/contrib/tagpdf/README.md
@@ -1,6 +1,6 @@
#tagpdf — A package to create tagged pdf
-Packageversion: 0.98k
-Packagedate: 2023/08/04
+Packageversion: 0.98l
+Packagedate: 2023/08/30
Author: Ulrike Fischer
## License
diff --git a/macros/latex/contrib/tagpdf/ex-AF-file.pdf b/macros/latex/contrib/tagpdf/ex-AF-file.pdf
index 0ff5805d5f..41e750a736 100644
--- a/macros/latex/contrib/tagpdf/ex-AF-file.pdf
+++ b/macros/latex/contrib/tagpdf/ex-AF-file.pdf
@@ -1,11 +1,11 @@
%PDF-2.0
%
23 0 obj
-<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20230804192949+02'00') /Size 151 /CheckSum (C612D20D328FD1A0CF5848A18384AC20) >> /Length 151 >>
+<< /Subtype /application#2Fx-tex/Type /EmbeddedFile /Params<</ModDate (D:20230830231109+02'00') /Size 151 /CheckSum (BADAD63AAC8953B42877D379D71F03C9) >> /Length 151 >>
stream
%% LaTeX2e file `example-input-file.tex'
%% generated by the `filecontents' environment
-%% from source `ex-AF-file' on 2023/08/04.
+%% from source `ex-AF-file' on 2023/08/30.
%%
Additional info!
@@ -15,7 +15,7 @@ endobj
<< /Type /Filespec /AFRelationship /Unspecified /F <FEFF006500780061006D0070006C0065002D0069006E007000750074002D00660069006C0065002E007400650078> /UF <FEFF006500780061006D0070006C0065002D0069006E007000750074002D00660069006C0065002E007400650078> /EF<</F 23 0 R/UF 23 0 R>> >>
endobj
26 0 obj
-<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20230804) >> /Length 19 >>
+<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20230830) >> /Length 19 >>
stream
Bär with teh shirt
endstream
@@ -24,7 +24,7 @@ endobj
<< /Type /Filespec /AFRelationship /Supplement /F <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /UF <FEFF007400610067002D0041004600660069006C00650031002E007400780074> /EF<</F 26 0 R/UF 26 0 R>> >>
endobj
29 0 obj
-<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20230804) >> /Length 4 >>
+<< /Subtype /text#2Fplain/Type /EmbeddedFile /Params<</ModDate (D:20230830) >> /Length 4 >>
stream
Duck
endstream
@@ -33,7 +33,7 @@ endobj
<< /Type /Filespec /AFRelationship /Supplement /F <FEFF007400610067002D0041004600660069006C00650032002E007400780074> /UF <FEFF007400610067002D0041004600660069006C00650032002E007400780074> /EF<</F 29 0 R/UF 29 0 R>> >>
endobj
32 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11034 >>
+<< /Type /Metadata /Subtype /XML /Length 11382 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -103,6 +103,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -137,13 +143,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -185,7 +191,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -215,7 +221,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -236,17 +242,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:30:18+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:11:25+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-AF-file.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:30:18+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:30:18+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:30:18+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:11:25+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:11:25+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:11:25+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:38d5a844-2217-4081-87cc-b2129dc357a6</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:67330fdd-2c56-4383-81b3-0ec390a6bfd1</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:4d6334e8-8cfa-44b2-8ddf-e31f3ddae4d9</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -344,7 +350,7 @@ endobj
<< /Type /Namespace /NS (https://www.latex-project.org/ns/inline/2022) /RoleMapNS 19 0 R >>
endobj
20 0 obj
-<< /Type /Namespace /NS (data:,B8DAD688-8800-C46F-E7F5-429E1A290228) >>
+<< /Type /Namespace /NS (data:,CEF0968F-94E5-866F-7E1D-6C99EF80C88B) >>
endobj
7 0 obj
[ 8 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R ]
@@ -446,60 +452,60 @@ endobj
<< /Type /Catalog /Pages 37 0 R /MarkInfo 38 0 R/Lang (de-DE)/Metadata 32 0 R/StructTreeRoot 5 0 R >>
endobj
47 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230804193018+02'00')/ModDate (D:20230804193018+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230830231125+02'00')/ModDate (D:20230830231125+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 48
0000000002 65535 f
-0000013364 00000 n
+0000013712 00000 n
0000000003 00000 f
0000000004 00000 f
0000000009 00000 f
-0000015799 00000 n
-0000013447 00000 n
-0000015222 00000 n
-0000013658 00000 n
+0000016147 00000 n
+0000013795 00000 n
+0000015570 00000 n
+0000014006 00000 n
0000000011 00000 f
-0000013726 00000 n
+0000014074 00000 n
0000000013 00000 f
-0000013796 00000 n
+0000014144 00000 n
0000000021 00000 f
-0000014438 00000 n
-0000013877 00000 n
-0000014716 00000 n
-0000014545 00000 n
-0000015024 00000 n
-0000014823 00000 n
-0000015133 00000 n
+0000014786 00000 n
+0000014225 00000 n
+0000015064 00000 n
+0000014893 00000 n
+0000015372 00000 n
+0000015171 00000 n
+0000015481 00000 n
0000000000 00000 f
-0000015290 00000 n
+0000015638 00000 n
0000000020 00000 n
0000000382 00000 n
-0000015403 00000 n
+0000015751 00000 n
0000000673 00000 n
0000000828 00000 n
-0000015535 00000 n
+0000015883 00000 n
0000001062 00000 n
0000001202 00000 n
-0000015667 00000 n
+0000016015 00000 n
0000001436 00000 n
-0000013301 00000 n
-0000013166 00000 n
-0000012560 00000 n
-0000019537 00000 n
-0000019891 00000 n
-0000013411 00000 n
-0000013504 00000 n
-0000013621 00000 n
-0000015904 00000 n
-0000018353 00000 n
-0000016090 00000 n
-0000018574 00000 n
-0000019691 00000 n
-0000019953 00000 n
-0000020071 00000 n
+0000013649 00000 n
+0000013514 00000 n
+0000012908 00000 n
+0000019885 00000 n
+0000020239 00000 n
+0000013759 00000 n
+0000013852 00000 n
+0000013969 00000 n
+0000016252 00000 n
+0000018701 00000 n
+0000016438 00000 n
+0000018922 00000 n
+0000020039 00000 n
+0000020301 00000 n
+0000020419 00000 n
trailer
-<< /Size 48 /Root 46 0 R /Info 47 0 R /ID [ <EB7C0636F11F81FDD9D080CAE7D81B4A> <EB7C0636F11F81FDD9D080CAE7D81B4A> ] >>
+<< /Size 48 /Root 46 0 R /Info 47 0 R /ID [ <89DE760DC5086CB2FFEDEFAA6BD2DA9B> <89DE760DC5086CB2FFEDEFAA6BD2DA9B> ] >>
startxref
-20294
+20642
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf b/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
index f43da375d1..2ff37d0b04 100644
--- a/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
+++ b/macros/latex/contrib/tagpdf/ex-alt-actualtext.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-attribute.pdf b/macros/latex/contrib/tagpdf/ex-attribute.pdf
index 4eb4ff455d..31963fef52 100644
--- a/macros/latex/contrib/tagpdf/ex-attribute.pdf
+++ b/macros/latex/contrib/tagpdf/ex-attribute.pdf
@@ -7,7 +7,7 @@ endobj
<< <</O /Layout /Borderstyle /Dotted >> >>
endobj
21 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11036 >>
+<< /Type /Metadata /Subtype /XML /Length 11384 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -77,6 +77,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -111,13 +117,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -159,7 +165,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -189,7 +195,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -210,17 +216,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:31:19+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:12:08+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-attribute.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:31:19+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:31:19+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:31:19+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:12:08+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:12:08+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:12:08+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:7a9cf910-1c19-429a-8f24-339c62d8a57f</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:2e9261fa-4639-4b72-826b-dd496923bab9</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:d01ecca6-7bad-4daf-84dc-c57583be006a</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -443,51 +449,51 @@ endobj
<< /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (de_DE)/Metadata 21 0 R/StructTreeRoot 5 0 R >>
endobj
38 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/Title (Title)/CreationDate (D:20230804193119+02'00')/ModDate (D:20230804193119+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/Title (Title)/CreationDate (D:20230830231208+02'00')/ModDate (D:20230830231208+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 39
0000000002 65535 f
-0000012497 00000 n
+0000012845 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000014540 00000 n
-0000012580 00000 n
-0000012899 00000 n
+0000014888 00000 n
+0000012928 00000 n
+0000013247 00000 n
0000000000 00000 f
-0000013528 00000 n
-0000013613 00000 n
-0000013705 00000 n
-0000013789 00000 n
-0000013879 00000 n
+0000013876 00000 n
+0000013961 00000 n
+0000014053 00000 n
+0000014137 00000 n
+0000014227 00000 n
0000000020 00000 n
0000000071 00000 n
-0000014008 00000 n
-0000014148 00000 n
-0000014232 00000 n
-0000014322 00000 n
-0000014431 00000 n
+0000014356 00000 n
+0000014496 00000 n
+0000014580 00000 n
+0000014670 00000 n
+0000014779 00000 n
0000000132 00000 n
-0000012410 00000 n
-0000012268 00000 n
-0000011258 00000 n
-0000016880 00000 n
-0000017234 00000 n
-0000012544 00000 n
-0000012644 00000 n
-0000012862 00000 n
-0000013402 00000 n
-0000014658 00000 n
-0000015836 00000 n
-0000014735 00000 n
-0000014809 00000 n
-0000016072 00000 n
-0000017034 00000 n
-0000017296 00000 n
-0000017414 00000 n
+0000012758 00000 n
+0000012616 00000 n
+0000011606 00000 n
+0000017228 00000 n
+0000017582 00000 n
+0000012892 00000 n
+0000012992 00000 n
+0000013210 00000 n
+0000013750 00000 n
+0000015006 00000 n
+0000016184 00000 n
+0000015083 00000 n
+0000015157 00000 n
+0000016420 00000 n
+0000017382 00000 n
+0000017644 00000 n
+0000017762 00000 n
trailer
-<< /Size 39 /Root 37 0 R /Info 38 0 R /ID [ <6E7D71013228F6DA006A90DF510CF242> <6E7D71013228F6DA006A90DF510CF242> ] >>
+<< /Size 39 /Root 37 0 R /Info 38 0 R /ID [ <C0D9194F0F8325FEE262A9FEBD89B665> <C0D9194F0F8325FEE262A9FEBD89B665> ] >>
startxref
-17651
+17999
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-formula-problem.pdf b/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
index 6d8c1bfefd..229ae70db3 100644
--- a/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
+++ b/macros/latex/contrib/tagpdf/ex-formula-problem.pdf
@@ -30,7 +30,7 @@ endobj
<< /ExtGState 1 0 R /Font << /F15 15 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
19 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11042 >>
+<< /Type /Metadata /Subtype /XML /Length 11390 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -100,6 +100,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -134,13 +140,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -182,7 +188,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -212,7 +218,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -233,17 +239,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:31:50+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:12:29+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-formula-problem.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:31:50+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:31:50+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:31:50+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:12:29+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:12:29+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:12:29+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:8eb2ce1d-b2ec-440a-8bc2-73733eb3eeb0</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:16d13dfb-e7a3-4f18-860c-443e275fa999</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:edd036c8-c70f-4410-8f43-8f745826598f</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>2</prism:pageCount>
</rdf:Description>
@@ -419,46 +425,46 @@ endobj
<< /Type /Catalog /Pages 16 0 R /MarkInfo 23 0 R/Lang (de-DE)/Metadata 19 0 R/StructTreeRoot 5 0 R >>
endobj
33 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230804193150+02'00')/ModDate (D:20230804193150+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230830231229+02'00')/ModDate (D:20230830231229+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 34
0000000002 65535 f
-0000012468 00000 n
+0000012816 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000013955 00000 n
-0000012551 00000 n
-0000012789 00000 n
+0000014303 00000 n
+0000012899 00000 n
+0000013137 00000 n
0000000000 00000 f
-0000013292 00000 n
-0000013399 00000 n
-0000013505 00000 n
+0000013640 00000 n
+0000013747 00000 n
+0000013853 00000 n
0000000637 00000 n
0000000502 00000 n
0000000020 00000 n
-0000018039 00000 n
-0000018393 00000 n
-0000013617 00000 n
-0000013723 00000 n
+0000018387 00000 n
+0000018741 00000 n
+0000013965 00000 n
+0000014071 00000 n
0000000724 00000 n
-0000012381 00000 n
-0000012246 00000 n
-0000011856 00000 n
-0000012515 00000 n
-0000012621 00000 n
-0000012752 00000 n
-0000014056 00000 n
-0000016812 00000 n
-0000014257 00000 n
-0000014333 00000 n
-0000017048 00000 n
-0000018193 00000 n
-0000018462 00000 n
-0000018580 00000 n
+0000012729 00000 n
+0000012594 00000 n
+0000012204 00000 n
+0000012863 00000 n
+0000012969 00000 n
+0000013100 00000 n
+0000014404 00000 n
+0000017160 00000 n
+0000014605 00000 n
+0000014681 00000 n
+0000017396 00000 n
+0000018541 00000 n
+0000018810 00000 n
+0000018928 00000 n
trailer
-<< /Size 34 /Root 32 0 R /Info 33 0 R /ID [ <313B6B151EAE693C9D4A2842B7659ACE> <313B6B151EAE693C9D4A2842B7659ACE> ] >>
+<< /Size 34 /Root 32 0 R /Info 33 0 R /ID [ <C438D9F37967D5A1217C11DDDBD5EC00> <C438D9F37967D5A1217C11DDDBD5EC00> ] >>
startxref
-18803
+19151
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-list.pdf b/macros/latex/contrib/tagpdf/ex-list.pdf
index 762ec0df25..d5885d53b7 100644
--- a/macros/latex/contrib/tagpdf/ex-list.pdf
+++ b/macros/latex/contrib/tagpdf/ex-list.pdf
@@ -1,7 +1,7 @@
%PDF-1.7
%
48 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11031 >>
+<< /Type /Metadata /Subtype /XML /Length 11379 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -71,6 +71,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -105,13 +111,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -153,7 +159,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -183,7 +189,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -204,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:32:24+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:12:52+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-list.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:32:24+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:32:24+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:32:24+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:12:52+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:12:52+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:12:52+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:4c749825-1de7-414c-879f-29e4d0bef66e</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:e5956d13-e998-4dd3-8296-ce8ffcafc35b</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:4f234d81-ca31-480c-8267-5daf94e5542c</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -647,85 +653,85 @@ endobj
<< /Type /Catalog /Pages 54 0 R /MarkInfo 55 0 R/Lang (en-US)/Metadata 48 0 R/StructTreeRoot 5 0 R >>
endobj
72 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230804193224+02'00')/ModDate (D:20230804193224+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230830231252+02'00')/ModDate (D:20230830231252+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 73
0000000002 65535 f
-0000013164 00000 n
+0000013512 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000018701 00000 n
-0000013247 00000 n
-0000014086 00000 n
+0000019049 00000 n
+0000013595 00000 n
+0000014434 00000 n
0000000000 00000 f
-0000014882 00000 n
-0000014983 00000 n
-0000015059 00000 n
-0000015135 00000 n
-0000015222 00000 n
-0000015329 00000 n
-0000015419 00000 n
-0000015529 00000 n
-0000015613 00000 n
-0000015701 00000 n
-0000015824 00000 n
-0000015914 00000 n
-0000016024 00000 n
-0000016108 00000 n
-0000016196 00000 n
-0000016319 00000 n
-0000016406 00000 n
-0000016517 00000 n
-0000016607 00000 n
-0000016717 00000 n
-0000016801 00000 n
-0000016889 00000 n
-0000017012 00000 n
-0000017102 00000 n
-0000017212 00000 n
-0000017296 00000 n
-0000017384 00000 n
-0000017507 00000 n
-0000017594 00000 n
-0000017709 00000 n
-0000017799 00000 n
-0000017909 00000 n
-0000017993 00000 n
-0000018081 00000 n
-0000018204 00000 n
-0000018294 00000 n
-0000018405 00000 n
-0000018489 00000 n
-0000018577 00000 n
+0000015230 00000 n
+0000015331 00000 n
+0000015407 00000 n
+0000015483 00000 n
+0000015570 00000 n
+0000015677 00000 n
+0000015767 00000 n
+0000015877 00000 n
+0000015961 00000 n
+0000016049 00000 n
+0000016172 00000 n
+0000016262 00000 n
+0000016372 00000 n
+0000016456 00000 n
+0000016544 00000 n
+0000016667 00000 n
+0000016754 00000 n
+0000016865 00000 n
+0000016955 00000 n
+0000017065 00000 n
+0000017149 00000 n
+0000017237 00000 n
+0000017360 00000 n
+0000017450 00000 n
+0000017560 00000 n
+0000017644 00000 n
+0000017732 00000 n
+0000017855 00000 n
+0000017942 00000 n
+0000018057 00000 n
+0000018147 00000 n
+0000018257 00000 n
+0000018341 00000 n
+0000018429 00000 n
+0000018552 00000 n
+0000018642 00000 n
+0000018753 00000 n
+0000018837 00000 n
+0000018925 00000 n
0000000020 00000 n
-0000013065 00000 n
-0000012923 00000 n
-0000011141 00000 n
-0000028828 00000 n
-0000021876 00000 n
-0000029182 00000 n
-0000013211 00000 n
-0000013367 00000 n
-0000014049 00000 n
-0000014678 00000 n
-0000018819 00000 n
-0000020778 00000 n
-0000018951 00000 n
-0000019025 00000 n
-0000021012 00000 n
-0000022027 00000 n
+0000013413 00000 n
+0000013271 00000 n
+0000011489 00000 n
+0000029176 00000 n
0000022224 00000 n
-0000027363 00000 n
-0000022560 00000 n
-0000022683 00000 n
-0000027599 00000 n
-0000028982 00000 n
-0000029244 00000 n
-0000029362 00000 n
+0000029530 00000 n
+0000013559 00000 n
+0000013715 00000 n
+0000014397 00000 n
+0000015026 00000 n
+0000019167 00000 n
+0000021126 00000 n
+0000019299 00000 n
+0000019373 00000 n
+0000021360 00000 n
+0000022375 00000 n
+0000022572 00000 n
+0000027711 00000 n
+0000022908 00000 n
+0000023031 00000 n
+0000027947 00000 n
+0000029330 00000 n
+0000029592 00000 n
+0000029710 00000 n
trailer
-<< /Size 73 /Root 71 0 R /Info 72 0 R /ID [ <A805B03F80D8DCD32E332F5BD885CFF4> <A805B03F80D8DCD32E332F5BD885CFF4> ] >>
+<< /Size 73 /Root 71 0 R /Info 72 0 R /ID [ <019D2B53AF4CC011A02E911AD5A1AC04> <019D2B53AF4CC011A02E911AD5A1AC04> ] >>
startxref
-29585
+29933
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
index d837eb5607..f7777952e4 100644
--- a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
+++ b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
@@ -1,13 +1,7 @@
%PDF-1.7
%
-9 0 obj
-<< /MCID 0 >>
-endobj
-11 0 obj
-<< /MCID 0 >>
-endobj
-14 0 obj
-<< /Length 2891 >>
+12 0 obj
+<< /Length 2896 >>
stream
/opacity1 gs
/Artifact BMC
@@ -16,7 +10,7 @@ q
[] 0 d 0 J 0.398 w 0 0 m 343.711 0 l S
Q
EMC
-/P /l3pdf1 BDC
+/P <</MCID 0 >> BDC
BT
/F15 9.96264 Tf
1 0 0 1 121.813 658.164 Tm [<002A0060001C0062>-415<0032003B003200620069001C0062>-415<004200540062006D004B>-416<001C>-415<004D0042006200480058>-416<006F00420070>55<001C004B>28<006D0062>-414<0070>55<001C00600042006D0062>-414<002F0051004800510060>-416<006D0069>-415<002F00510048005100600058>-416<0036>82<006D0062002B0032>-414<0070>27<00320048>-415<0032004D0042004B0058>]TJ
@@ -33,14 +27,14 @@ EMC
endstream
endobj
-10 0 obj
-<< /Type /Page /Contents 14 0 R /Resources 13 0 R /MediaBox [ 0 0 612 792 ] /Tabs /S /Parent 16 0 R >>
+9 0 obj
+<< /Type /Page /Contents 12 0 R /Resources 11 0 R /MediaBox [ 0 0 612 792 ] /Tabs /S /Parent 14 0 R >>
endobj
-13 0 obj
-<< /Properties <</l3pdf1 9 0 R>>/ExtGState 1 0 R /Font << /F15 15 0 R >> /ProcSet [ /PDF /Text ] >>
+11 0 obj
+<< /ExtGState 1 0 R /Font << /F15 13 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
-17 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11056 >>
+15 0 obj
+<< /Type /Metadata /Subtype /XML /Length 11404 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -110,6 +104,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -144,13 +144,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -192,7 +192,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -222,7 +222,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -243,17 +243,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:32:51+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:13:12+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-mc-manual-para-split-obsolete.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:32:51+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:32:51+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:32:51+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:13:12+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:13:12+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:13:12+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:c33d64b4-96ec-4e48-8f27-0b3edc831547</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:1ec3ab74-bc70-4881-8156-ed22cfb7642f</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:2887128f-21c5-4c52-8669-a58e88f41682</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>2</prism:pageCount>
</rdf:Description>
@@ -272,8 +272,8 @@ stream
<?xpacket end="w"?>
endstream
endobj
-19 0 obj
-<< /Length 1908 >>
+17 0 obj
+<< /Length 1913 >>
stream
/opacity1 gs
/Artifact BMC
@@ -282,7 +282,7 @@ q
[] 0 d 0 J 0.398 w 0 0 m 343.711 0 l S
Q
EMC
-/P /l3pdf2 BDC
+/P <</MCID 0 >> BDC
BT
/F15 9.96264 Tf
1 0 0 1 160.667 658.164 Tm [<0062002B003200480032006000420062005B006D0032>-423<001C006D003B006D0032>-424<006200420069>-423<001C004B00320069>-424<006D0060004D001C0058>-424<004C006D00480048001C>-424<0070>27<00510048006D00690054001C0069>-422<001C00480042005B006D00320069>-424<0069005100600069005100600058>-424<002A0060001C0062>-424<001C00480042005B006D001C004B002D>]TJ
@@ -297,25 +297,25 @@ EMC
endstream
endobj
-12 0 obj
-<< /Type /Page /Contents 19 0 R /Resources 18 0 R /MediaBox [ 0 0 612 792 ] /Tabs /S /Parent 16 0 R >>
+10 0 obj
+<< /Type /Page /Contents 17 0 R /Resources 16 0 R /MediaBox [ 0 0 612 792 ] /Tabs /S /Parent 14 0 R >>
endobj
-18 0 obj
-<< /Properties <</l3pdf2 11 0 R>>/ExtGState 1 0 R /Font << /F15 15 0 R >> /ProcSet [ /PDF /Text ] >>
+16 0 obj
+<< /ExtGState 1 0 R /Font << /F15 13 0 R >> /ProcSet [ /PDF /Text ] >>
endobj
1 0 obj
<< /opacity1 <</ca 1/CA 1>> >>
endobj
-20 0 obj
+18 0 obj
[ 28 [ 500 ] 35 [ 556 ] 42 [ 722 444 ] 45 [ 278 764 556 ] 49 [ 681 444 ] 54 [ 653 306 ] 59 [ 500 ] 63 [ 556 ] 65 [ 361 278 ] 68 [ 306 ] 72 [ 278 ] 75 [ 833 750 556 ] 81 [ 500 ] 83 [ 681 556 ] 88 [ 278 ] 90 [ 778 528 ] 96 [ 392 556 394 ] 105 [ 389 ] 109 [ 556 ] 111 [ 750 528 ] 114 [ 722 ] ]
endobj
-22 0 obj
+20 0 obj
<< /Length 15 >>
stream
endstream
endobj
-23 0 obj
+21 0 obj
<< /Subtype /CIDFontType0C /Length 4657 >>
stream

@@ -327,10 +327,10 @@ m
endstream
endobj
-21 0 obj
-<< /Type /FontDescriptor /FontName /DUCKUG+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 23 0 R /CIDSet 22 0 R >>
+19 0 obj
+<< /Type /FontDescriptor /FontName /DUCKUG+LMRoman10-Regular /Flags 4 /FontBBox [ -430 -290 1417 1127 ] /Ascent 1127 /CapHeight 683 /Descent -290 /ItalicAngle 0 /StemV 93 /XHeight 431 /FontFile3 21 0 R /CIDSet 20 0 R >>
endobj
-24 0 obj
+22 0 obj
<< /Length 1155 >>
stream
%!PS-Adobe-3.0 Resource-CMap
@@ -400,25 +400,25 @@ end
endstream
endobj
-15 0 obj
-<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /DUCKUG+LMRoman10-Regular /DescendantFonts [ 25 0 R ] /ToUnicode 24 0 R >>
+13 0 obj
+<< /Type /Font /Subtype /Type0 /Encoding /Identity-H /BaseFont /DUCKUG+LMRoman10-Regular /DescendantFonts [ 23 0 R ] /ToUnicode 22 0 R >>
endobj
-25 0 obj
-<< /Type /Font /Subtype /CIDFontType0 /BaseFont /DUCKUG+LMRoman10-Regular /FontDescriptor 21 0 R /W 20 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
+23 0 obj
+<< /Type /Font /Subtype /CIDFontType0 /BaseFont /DUCKUG+LMRoman10-Regular /FontDescriptor 19 0 R /W 18 0 R /CIDSystemInfo << /Registry (Adobe) /Ordering (Identity) /Supplement 0 >> >>
endobj
-16 0 obj
-<< /Type /Pages /Count 2 /Kids [ 10 0 R 12 0 R ] >>
+14 0 obj
+<< /Type /Pages /Count 2 /Kids [ 9 0 R 10 0 R ] >>
endobj
-26 0 obj
-<< /Type /Catalog /Pages 16 0 R /Lang (en-US)/Metadata 17 0 R >>
+24 0 obj
+<< /Type /Catalog /Pages 14 0 R /Lang (en-US)/Metadata 15 0 R >>
endobj
-27 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230804193251+02'00')/ModDate (D:20230804193251+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+25 0 obj
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230830231312+02'00')/ModDate (D:20230830231312+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
-0 28
+0 26
0000000002 65535 f
-0000016617 00000 n
+0000016854 00000 n
0000000003 00000 f
0000000004 00000 f
0000000005 00000 f
@@ -426,27 +426,25 @@ xref
0000000007 00000 f
0000000008 00000 f
0000000000 00000 f
+0000002976 00000 n
+0000016648 00000 n
+0000003094 00000 n
0000000020 00000 n
-0000003032 00000 n
-0000000050 00000 n
-0000016381 00000 n
-0000003151 00000 n
-0000000081 00000 n
-0000023238 00000 n
-0000023592 00000 n
-0000003267 00000 n
-0000016500 00000 n
-0000014413 00000 n
-0000016664 00000 n
-0000021787 00000 n
-0000016971 00000 n
-0000017046 00000 n
-0000022023 00000 n
-0000023392 00000 n
-0000023661 00000 n
-0000023742 00000 n
+0000023475 00000 n
+0000023829 00000 n
+0000003181 00000 n
+0000016767 00000 n
+0000014675 00000 n
+0000016901 00000 n
+0000022024 00000 n
+0000017208 00000 n
+0000017283 00000 n
+0000022260 00000 n
+0000023629 00000 n
+0000023897 00000 n
+0000023978 00000 n
trailer
-<< /Size 28 /Root 26 0 R /Info 27 0 R /ID [ <ABF09154E3A1591664AE2C579FE4AD47> <ABF09154E3A1591664AE2C579FE4AD47> ] >>
+<< /Size 26 /Root 24 0 R /Info 25 0 R /ID [ <470CC785A1D0B3B694D43EBE24661D19> <470CC785A1D0B3B694D43EBE24661D19> ] >>
startxref
-23965
+24201
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
index d155a50958..7287b6e5f2 100644
--- a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+++ b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
@@ -1,7 +1,7 @@
%PDF-1.7
%
14 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11037 >>
+<< /Type /Metadata /Subtype /XML /Length 11385 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -71,6 +71,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -105,13 +111,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -153,7 +159,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -183,7 +189,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -204,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:33:20+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:13:31+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-softhyphen.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:33:20+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:33:20+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:33:20+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:13:31+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:13:31+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:13:31+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:aa82e685-4098-469d-861c-3c45dfc700c7</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:811373e4-d45d-4e95-8c0f-0a2541deaf41</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:e1838625-8288-439b-850f-8396de55e668</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -387,43 +393,43 @@ endobj
<< /Type /Catalog /Pages 19 0 R /MarkInfo 20 0 R/Lang (en-US)/Metadata 14 0 R/StructTreeRoot 5 0 R >>
endobj
30 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230804193320+02'00')/ModDate (D:20230804193320+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230830231331+02'00')/ModDate (D:20230830231331+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 31
0000000002 65535 f
-0000012015 00000 n
+0000012363 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000013317 00000 n
-0000012098 00000 n
-0000012316 00000 n
+0000013665 00000 n
+0000012446 00000 n
+0000012664 00000 n
0000000000 00000 f
-0000012832 00000 n
-0000012925 00000 n
-0000013011 00000 n
-0000013121 00000 n
-0000013207 00000 n
+0000013180 00000 n
+0000013273 00000 n
+0000013359 00000 n
+0000013469 00000 n
+0000013555 00000 n
0000000020 00000 n
-0000011928 00000 n
-0000011793 00000 n
-0000011147 00000 n
-0000017266 00000 n
-0000017630 00000 n
-0000012062 00000 n
-0000012148 00000 n
-0000012279 00000 n
-0000013418 00000 n
-0000016066 00000 n
-0000013572 00000 n
-0000013746 00000 n
-0000016306 00000 n
-0000017425 00000 n
-0000017692 00000 n
-0000017810 00000 n
+0000012276 00000 n
+0000012141 00000 n
+0000011495 00000 n
+0000017614 00000 n
+0000017978 00000 n
+0000012410 00000 n
+0000012496 00000 n
+0000012627 00000 n
+0000013766 00000 n
+0000016414 00000 n
+0000013920 00000 n
+0000014094 00000 n
+0000016654 00000 n
+0000017773 00000 n
+0000018040 00000 n
+0000018158 00000 n
trailer
-<< /Size 31 /Root 29 0 R /Info 30 0 R /ID [ <5F6BE19E852F212114F4F37F190A2AC0> <5F6BE19E852F212114F4F37F190A2AC0> ] >>
+<< /Size 31 /Root 29 0 R /Info 30 0 R /ID [ <6B288E973F57BDFEC84F230DEBCFA2E8> <6B288E973F57BDFEC84F230DEBCFA2E8> ] >>
startxref
-18033
+18381
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
index 992a190e2c..7ae6db6779 100644
--- a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+++ b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
@@ -1,7 +1,7 @@
%PDF-1.5
%
10 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11046 >>
+<< /Type /Metadata /Subtype /XML /Length 11394 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -71,6 +71,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -105,13 +111,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -153,7 +159,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -183,7 +189,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -204,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:33:44+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:13:48+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-spaceglyph-listings.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:33:44+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:33:44+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:33:44+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:13:48+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:13:48+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:13:48+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:acdc2435-bf29-4e54-8d09-1c9b6dc32038</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:2c17e3a2-7acc-4dc6-863f-a09158871fe0</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:6a509f48-5cd8-4bd2-864d-46b6f7a3e3af</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -348,39 +354,39 @@ endobj
<< /Type /Catalog /Pages 15 0 R /MarkInfo 16 0 R/Lang (en-US)/Metadata 10 0 R/StructTreeRoot 5 0 R >>
endobj
26 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230804193344+02'00')/ModDate (D:20230804193344+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230830231348+02'00')/ModDate (D:20230830231348+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 27
0000000002 65535 f
-0000011662 00000 n
+0000012010 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000012461 00000 n
-0000011745 00000 n
-0000011884 00000 n
+0000012809 00000 n
+0000012093 00000 n
+0000012232 00000 n
0000000000 00000 f
-0000012387 00000 n
+0000012735 00000 n
0000000020 00000 n
-0000011575 00000 n
-0000011440 00000 n
-0000011156 00000 n
-0000014644 00000 n
-0000014998 00000 n
-0000011709 00000 n
-0000011776 00000 n
-0000011847 00000 n
-0000012562 00000 n
-0000013628 00000 n
-0000012617 00000 n
-0000012692 00000 n
-0000013864 00000 n
-0000014798 00000 n
-0000015060 00000 n
-0000015178 00000 n
+0000011923 00000 n
+0000011788 00000 n
+0000011504 00000 n
+0000014992 00000 n
+0000015346 00000 n
+0000012057 00000 n
+0000012124 00000 n
+0000012195 00000 n
+0000012910 00000 n
+0000013976 00000 n
+0000012965 00000 n
+0000013040 00000 n
+0000014212 00000 n
+0000015146 00000 n
+0000015408 00000 n
+0000015526 00000 n
trailer
-<< /Size 27 /Root 25 0 R /Info 26 0 R /ID [ <C823F3BCF51E8899AC6814D1CC3CAEA5> <C823F3BCF51E8899AC6814D1CC3CAEA5> ] >>
+<< /Size 27 /Root 25 0 R /Info 26 0 R /ID [ <A1D7171338063BC081A09387B55B4DC2> <A1D7171338063BC081A09387B55B4DC2> ] >>
startxref
-15401
+15749
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf b/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
index 39bba38435..55337b9dce 100644
--- a/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
+++ b/macros/latex/contrib/tagpdf/ex-structure-obsolete.pdf
@@ -1,7 +1,7 @@
%PDF-1.7
%
20 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11045 >>
+<< /Type /Metadata /Subtype /XML /Length 11393 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -71,6 +71,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -105,13 +111,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -153,7 +159,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -183,7 +189,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -204,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:34:12+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:14:06+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-structure-obsolete.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:34:12+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:34:12+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:34:12+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:14:06+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:14:06+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:14:06+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:bf5e4a2b-cfa9-4fc5-878c-8f9d2ee95445</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:e330f38b-78ef-4952-8a63-59379e0045b5</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:f6360433-4c88-4e51-80e3-5dcd1d2dd103</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -520,56 +526,56 @@ endobj
<< /Type /Catalog /Pages 26 0 R /MarkInfo 27 0 R/Lang (en-US)/Metadata 20 0 R/StructTreeRoot 5 0 R >>
endobj
43 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230804193412+02'00')/ModDate (D:20230804193412+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230830231406+02'00')/ModDate (D:20230830231406+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 44
0000000002 65535 f
-0000012449 00000 n
+0000012797 00000 n
0000000003 00000 f
0000000004 00000 f
0000000008 00000 f
-0000014509 00000 n
-0000012532 00000 n
-0000012881 00000 n
+0000014857 00000 n
+0000012880 00000 n
+0000013229 00000 n
0000000000 00000 f
-0000013397 00000 n
-0000013482 00000 n
-0000013580 00000 n
-0000013688 00000 n
-0000013796 00000 n
-0000013885 00000 n
-0000013975 00000 n
-0000014085 00000 n
-0000014197 00000 n
-0000014287 00000 n
-0000014397 00000 n
+0000013745 00000 n
+0000013830 00000 n
+0000013928 00000 n
+0000014036 00000 n
+0000014144 00000 n
+0000014233 00000 n
+0000014323 00000 n
+0000014433 00000 n
+0000014545 00000 n
+0000014635 00000 n
+0000014745 00000 n
0000000020 00000 n
-0000012350 00000 n
-0000012215 00000 n
-0000011155 00000 n
-0000022592 00000 n
-0000019358 00000 n
+0000012698 00000 n
+0000012563 00000 n
+0000011503 00000 n
0000022940 00000 n
-0000012496 00000 n
-0000012610 00000 n
+0000019706 00000 n
+0000023288 00000 n
0000012844 00000 n
-0000014610 00000 n
-0000018089 00000 n
-0000014859 00000 n
-0000014934 00000 n
-0000018325 00000 n
-0000019512 00000 n
-0000019712 00000 n
-0000021480 00000 n
-0000019849 00000 n
-0000019925 00000 n
-0000021714 00000 n
-0000022743 00000 n
-0000023002 00000 n
-0000023120 00000 n
+0000012958 00000 n
+0000013192 00000 n
+0000014958 00000 n
+0000018437 00000 n
+0000015207 00000 n
+0000015282 00000 n
+0000018673 00000 n
+0000019860 00000 n
+0000020060 00000 n
+0000021828 00000 n
+0000020197 00000 n
+0000020273 00000 n
+0000022062 00000 n
+0000023091 00000 n
+0000023350 00000 n
+0000023468 00000 n
trailer
-<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <FBC6F25645660BE150AC7E0A877D1A3C> <FBC6F25645660BE150AC7E0A877D1A3C> ] >>
+<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <E81A69FEE9B9E50F0C56DE6BBF434A40> <E81A69FEE9B9E50F0C56DE6BBF434A40> ] >>
startxref
-23343
+23691
%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
index 74d6ce2375..952a516e8f 100644
--- a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+++ b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
@@ -1,7 +1,7 @@
%PDF-2.0
%
27 0 obj
-<< /Type /Metadata /Subtype /XML /Length 11042 >>
+<< /Type /Metadata /Subtype /XML /Length 11390 >>
stream
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
@@ -71,6 +71,12 @@ stream
<pdfaProperty:category>internal</pdfaProperty:category>
<pdfaProperty:description>Part of ISO 14289 standard</pdfaProperty:description>
</rdf:li>
+ <rdf:li rdf:parseType="Resource">
+ <pdfaProperty:name>rev</pdfaProperty:name>
+ <pdfaProperty:valueType>Integer</pdfaProperty:valueType>
+ <pdfaProperty:category>internal</pdfaProperty:category>
+ <pdfaProperty:description>Revision of ISO 14289 standard</pdfaProperty:description>
+ </rdf:li>
</rdf:Seq>
</pdfaSchema:property>
</rdf:li>
@@ -105,13 +111,13 @@ stream
<pdfaProperty:name>publicationName</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationname</pdfaProperty:description>
+ <pdfaProperty:description>Publication name</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>aggregationType</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Publicationtype</pdfaProperty:description>
+ <pdfaProperty:description>Publication type</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>bookEdition</pdfaProperty:name>
@@ -153,7 +159,7 @@ stream
<pdfaProperty:name>isbn</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>ISBNforthepublicationinwhichthedocumentwaspublished</pdfaProperty:description>
+ <pdfaProperty:description>ISBN for the publication in which the document was published</pdfaProperty:description>
</rdf:li>
<rdf:li rdf:parseType="Resource">
<pdfaProperty:name>doi</pdfaProperty:name>
@@ -183,7 +189,7 @@ stream
<pdfaProperty:name>subtitle</pdfaProperty:name>
<pdfaProperty:valueType>Text</pdfaProperty:valueType>
<pdfaProperty:category>external</pdfaProperty:category>
- <pdfaProperty:description>Document'ssubtitle</pdfaProperty:description>
+ <pdfaProperty:description>Document's subtitle</pdfaProperty:description>
</rdf:li>
</rdf:Seq>
</pdfaSchema:property>
@@ -204,17 +210,17 @@ stream
</dc:language>
<dc:date>
<rdf:Seq>
- <rdf:li>2023-08-04T19:34:41+02:00</rdf:li>
+ <rdf:li>2023-08-30T23:14:26+02:00</rdf:li>
</rdf:Seq>
</dc:date>
<dc:format>application/pdf</dc:format>
<dc:source>ex-tagpdf-template.tex</dc:source>
<xmp:CreatorTool>LaTeX</xmp:CreatorTool>
- <xmp:CreateDate>2023-08-04T19:34:41+02:00</xmp:CreateDate>
- <xmp:ModifyDate>2023-08-04T19:34:41+02:00</xmp:ModifyDate>
- <xmp:MetadataDate>2023-08-04T19:34:41+02:00</xmp:MetadataDate>
+ <xmp:CreateDate>2023-08-30T23:14:26+02:00</xmp:CreateDate>
+ <xmp:ModifyDate>2023-08-30T23:14:26+02:00</xmp:ModifyDate>
+ <xmp:MetadataDate>2023-08-30T23:14:26+02:00</xmp:MetadataDate>
<xmpMM:DocumentID>uuid:f320abfc-f6ab-4d12-8719-d176f4d947cf</xmpMM:DocumentID>
- <xmpMM:InstanceID>uuid:b0d16508-7a6f-46eb-85be-98fcc7195b92</xmpMM:InstanceID>
+ <xmpMM:InstanceID>uuid:28e776ee-8e5e-4001-8145-84b430ec9045</xmpMM:InstanceID>
<prism:complianceProfile>three</prism:complianceProfile>
<prism:pageCount>1</prism:pageCount>
</rdf:Description>
@@ -306,7 +312,7 @@ endobj
<< /list [/L 10 0 R] /quote [/BlockQuote 8 0 R] /quotation [/BlockQuote 8 0 R] /theorem-like [/Sect 10 0 R] /verbatim [/P 10 0 R] /codeline [/Sub 10 0 R] /float [/Aside 10 0 R] /figures [/Sect 10 0 R] /tables [/Sect 10 0 R] >>
endobj
20 0 obj
-<< /Type /Namespace /NS (data:,C915417E-46AD-93ED-CAD8-C7CC31FD4A90) /RoleMapNS 21 0 R >>
+<< /Type /Namespace /NS (data:,E037878-4DB6-BAD6-9BC4-368CC7DA7072) /RoleMapNS 21 0 R >>
endobj
7 0 obj
[ 8 0 R 10 0 R 12 0 R 14 0 R 16 0 R 18 0 R 20 0 R ]
@@ -398,56 +404,56 @@ endobj
<< /Type /Catalog /Pages 32 0 R /MarkInfo 33 0 R/Lang (en-US)/Metadata 27 0 R/StructTreeRoot 5 0 R >>
endobj
43 0 obj
-<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230804193441+02'00')/ModDate (D:20230804193441+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
+<< /Producer (luahbtex-1.17.0)/Creator (LaTeX)/CreationDate (D:20230830231426+02'00')/ModDate (D:20230830231426+02'00') /Trapped /False /PTEX.FullBanner (This is LuaHBTeX, Version 1.17.0 (TeX Live 2023)) >>
endobj
xref
0 44
0000000002 65535 f
-0000011584 00000 n
+0000011932 00000 n
0000000003 00000 f
0000000004 00000 f
0000000009 00000 f
-0000014338 00000 n
-0000011667 00000 n
-0000013766 00000 n
-0000011940 00000 n
+0000014685 00000 n
+0000012015 00000 n
+0000014113 00000 n
+0000012288 00000 n
0000000011 00000 f
-0000012008 00000 n
+0000012356 00000 n
0000000013 00000 f
-0000012078 00000 n
+0000012426 00000 n
0000000000 00000 f
-0000012720 00000 n
-0000012159 00000 n
-0000012998 00000 n
-0000012827 00000 n
-0000013306 00000 n
-0000013105 00000 n
-0000013659 00000 n
-0000013415 00000 n
-0000013834 00000 n
-0000013931 00000 n
-0000014018 00000 n
-0000014105 00000 n
-0000014204 00000 n
+0000013068 00000 n
+0000012507 00000 n
+0000013346 00000 n
+0000013175 00000 n
+0000013654 00000 n
+0000013453 00000 n
+0000014007 00000 n
+0000013763 00000 n
+0000014181 00000 n
+0000014278 00000 n
+0000014365 00000 n
+0000014452 00000 n
+0000014551 00000 n
0000000020 00000 n
-0000011521 00000 n
-0000011386 00000 n
-0000011152 00000 n
-0000016944 00000 n
-0000017298 00000 n
-0000011631 00000 n
-0000011708 00000 n
-0000011840 00000 n
-0000011877 00000 n
-0000014460 00000 n
-0000015901 00000 n
-0000014547 00000 n
-0000016122 00000 n
-0000017098 00000 n
-0000017360 00000 n
-0000017478 00000 n
+0000011869 00000 n
+0000011734 00000 n
+0000011500 00000 n
+0000017291 00000 n
+0000017645 00000 n
+0000011979 00000 n
+0000012056 00000 n
+0000012188 00000 n
+0000012225 00000 n
+0000014807 00000 n
+0000016248 00000 n
+0000014894 00000 n
+0000016469 00000 n
+0000017445 00000 n
+0000017707 00000 n
+0000017825 00000 n
trailer
-<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <6547F81A3EBB742947E961C20E32D4E3> <6547F81A3EBB742947E961C20E32D4E3> ] >>
+<< /Size 44 /Root 42 0 R /Info 43 0 R /ID [ <176888C5B80D0D7B066E1A19F543932C> <176888C5B80D0D7B066E1A19F543932C> ] >>
startxref
-17701
+18048
%%EOF
diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
index 761fb21a8b..fd13c8fd7e 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*luatex>
-\ProvidesExplFile {tagpdf-luatex.def} {2023-08-04} {0.98k}
+\ProvidesExplFile {tagpdf-luatex.def} {2023-08-30} {0.98l}
{tagpdf~driver~for~luatex}
% \end{macrocode}
% \section{Loading the lua}
@@ -158,8 +158,8 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.98k", --TAGVERSION
- date = "2023-08-04", --TAGDATE
+ version = "0.98l", --TAGVERSION
+ date = "2023-08-30", --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 5bb332ee86..68123ff86c 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{documentation}
% \section{Commands}
@@ -85,6 +85,7 @@
% \cs{ShowTagging}{mc-data = num} & log+term & lua-only\\
% \cs{ShowTagging}{mc-current} & log+term & \\
% \cs{ShowTagging}{struck-stack= [log\verb+|+show]} & log or term+stop \\
+% \cs{ShowTagging}{debug/structures = num} & log+termn & debug mode only
% \end{tabular}
%
% \subsection{Messages in checks and commands}
@@ -312,7 +313,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-checks-code} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-checks-code} {2023-08-30} {0.98l}
{part of tagpdf - code related to checks, conditionals, debugging and messages}
%</header>
% \end{macrocode}
@@ -446,13 +447,40 @@
The~structures~are~automatically~closed,\\
but~their~nesting~can~be~wrong.
}
+%</package>
% \end{macrocode}
% \end{macro}
-%
+% The following messages are only needed in debug mode.
+% \begin{macro}{show-struct,show-kids}
+% This two messages are used to show the current structures in the log and terminal.
+% \begin{macrocode}
+%<*debug>
+\msg_new:nnn { tag/debug } { show-struct }
+ {
+ =========================\\
+ The~structure~#1~
+ \tl_if_empty:nTF {#2}
+ { is~empty \\>~ . }
+ { contains: #2 }
+ \\
+ }
+\msg_new:nnn { tag/debug } { show-kids }
+ {
+ The~structure~has~the~following~kids:
+ \tl_if_empty:nTF {#2}
+ { \\>~ NONE }
+ { #2 }
+ \\
+ =========================
+ }
+%</debug>
+% \end{macrocode}
+% \end{macro}
% \subsection{Attributes}
% Not much yet, as attributes aren't used so much.
% \begin{macro}{attr-unknown}
% \begin{macrocode}
+%<*package>
\msg_new:nnn { tag } {attr-unknown} { attribute~#1~is~unknown}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
index 89fc6df804..9c50835360 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 77da019ba5..f5e3ca8c73 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \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} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-ns-latex.def} {2023-08-30} {0.98l}
%% {latex} {https://www.latex-project.org/ns/dflt/2022}{}
title, Title, pdf2,
part, Title, pdf2,
@@ -92,7 +92,7 @@ text, P, pdf2,
% It is bound to change
% \begin{macrocode}
%<*ns-latex-book>
-%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2023-08-30} {0.98l}
%% {latex-book} {https://www.latex-project.org/ns/book/2022}{}
chapter, H1,pdf2,
section, H2,pdf2,
@@ -108,7 +108,7 @@ subparagraph, H6,pdf2,
% loaded.
% \begin{macrocode}
%<*ns-latex-inline>
-%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2023-08-30} {0.98l}
%% {latex-inline} {https://www.latex-project.org/ns/inline/2022}{}
chapter, Span, pdf2,
section, Span, pdf2,
@@ -122,7 +122,7 @@ P, Span, pdf2,
% \section{The pdf namespace data}
% \begin{macrocode}
%<*ns-pdf>
-%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2023-08-30} {0.98l}
%% {pdf} {http://iso.org/pdf/ssn}{}
StructTreeRoot,StructTreeRoot,pdf,D,
Document,Document,pdf,D,
@@ -190,7 +190,7 @@ Strong,Span,pdf,I,
% \section{The pdf 2.0 namespace data}
% \begin{macrocode}
%<*ns-pdf2>
-%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2023-08-30} {0.98l}
%% {pdf2} {http://iso.org/pdf2/ssn}{}
Document,Document,pdf2,D,
Part,Part,pdf2,G,
@@ -246,7 +246,7 @@ Strong,Strong,pdf2,I,
% \section{The mathml namespace data}
% \begin{macrocode}
%<*ns-mathml>
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-08-30} {0.98l}
% {mathml}{http://www.w3.org/1998/Math/MathML}{}
abs,abs,mathml,
and,and,mathml,
@@ -481,7 +481,7 @@ xor,xor,mathml,
% This will perhaps change in future.
% \begin{macrocode}
%<*parent-child>
-%% \ProvidesExplFile {tagpdf-parent-child.csv} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-parent-child.csv} {2023-08-30} {0.98l}
,,,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,∅,∅
@@ -536,7 +536,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} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2023-08-30} {0.98l}
,,,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 e9654f9ce6..13551c9a5c 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{documentation}
% \end{documentation}
@@ -55,27 +55,21 @@
% \begin{macrocode}
%<@@=tag>
%<*generic>
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2023-08-30} {0.98l}
{part of tagpdf - code related to marking chunks - generic mode}
%</generic>
%<*debug>
-\ProvidesExplPackage {tagpdf-debug-generic} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-debug-generic} {2023-08-30} {0.98l}
{part of tagpdf - debugging code related to marking chunks - generic mode}
%</debug>
% \end{macrocode}
%
%\subsection{Variables}
%
-% \begin{variable}{\g_@@_MCID_byabspage_prop}
-% This property will hold the current maximum on a page
-% it will contain key-value of type \meta{abspagenum}=\meta{max mcid}
-%
% \begin{macrocode}
%<*generic>
-\@@_prop_new:N \g_@@_MCID_byabspage_prop
% \end{macrocode}
-% \end{variable}
-
+%
% \begin{variable}{\l_@@_mc_ref_abspage_tl}
% We need a ref-label system to ensure that the MCID cnt
% restarts at 0 on a new page
@@ -270,8 +264,8 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_mc_insert_extra_tmb:n #1 % #1 stream: e.g. main or footnote
{
- \@@_check_typeout_v:n {=>~ first~ \seq_use:Nn \l__tag_mc_firstmarks_seq {,~}}
- \@@_check_typeout_v:n {=>~ bot~ \seq_use:Nn \l__tag_mc_botmarks_seq {,~}}
+ \@@_check_typeout_v:n {=>~ first~ \seq_use:Nn \l_@@_mc_firstmarks_seq {,~}}
+ \@@_check_typeout_v:n {=>~ bot~ \seq_use:Nn \l_@@_mc_botmarks_seq {,~}}
\@@_check_if_mc_tmb_missing:TF
{
\@@_check_typeout_v:n {=>~ TMB~ ~ missing~ --~ inserted}
@@ -298,7 +292,7 @@
{
\seq_item:cn { g_@@_mc_#1_marks_seq } {2}
}
- { \int_eval:n{\c@g__tag_MCID_abs_int} }
+ { \int_eval:n{\c@g_@@_MCID_abs_int} }
{
\seq_item:cn { g_@@_mc_#1_marks_seq } {3}
}
@@ -435,7 +429,7 @@
% Some debugging info:
% \begin{macrocode}
% \iow_term:n { First~ mark~ from~ this~ box: }
-% \seq_log:N \l__tag_mc_firstmarks_seq
+% \seq_log:N \l_@@_mc_firstmarks_seq
% \end{macrocode}
% If this mark was empty then clearly the bottom mark will too be
% empty. Thus in this case we make use of the saved bot mark from
@@ -450,7 +444,7 @@
\@@_check_typeout_v:n
{
No~ marks~ so~ use~ saved~ bot~ mark:~
- \seq_use:cn {g__tag_mc_#2_marks_seq} {,~} \iow_newline:
+ \seq_use:cn {g_@@_mc_#2_marks_seq} {,~} \iow_newline:
}
\seq_set_eq:Nc \l_@@_mc_firstmarks_seq {g_@@_mc_#2_marks_seq}
% \end{macrocode}
@@ -510,18 +504,19 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{ \@@_mc_bmc:n,\@@_mc_emc:,\@@_mc_bdc:nn,\@@_mc_bdc:nx}
+% \begin{macro}{ \@@_mc_bmc:n,\@@_mc_emc:,\@@_mc_bdc:nn}
% These are the low-level commands. There are now equal to the
% pdfmanagement commands generic mode, but we use an indirection
% in case luamode need something else.
% change 04.08.2018: the commands do not check the validity of the arguments or try
% to escape them, this should be done before using them.
+% change 2023-08-18: we are delaying the writing to the shipout.
% \begin{macrocode}
% #1 tag, #2 properties
\cs_set_eq:NN \@@_mc_bmc:n \pdf_bmc:n
\cs_set_eq:NN \@@_mc_emc: \pdf_emc:
\cs_set_eq:NN \@@_mc_bdc:nn \pdf_bdc:nn
-\cs_generate_variant:Nn \@@_mc_bdc:nn {nx}
+\cs_set_eq:NN \@@_mc_bdc_shipout:ee \pdf_bdc_shipout:ee
% \end{macrocode}
% \end{macro}
%
@@ -536,53 +531,95 @@
% starting with 0 and then successively.
% The first argument is the tag, e.g. |P| or |Span|, the second is used to pass
% more properties.
+% Starting with texlive 2023 this is much simpler and faster as we can use
+% delay the numbering to the shipout.
% We also define a wrapper around the low-level command as luamode will need
% something different.
% \begin{macrocode}
-\cs_new_protected:Npn \@@_mc_bdc_mcid:nn #1 #2
- {
- \int_gincr:N \c@g_@@_MCID_abs_int
- \tl_set:Nx \l_@@_mc_ref_abspage_tl
+\bool_if:NTF\g_@@_delayed_shipout_bool
+ {
+ \hook_gput_code:nnn {shipout/before}{tagpdf}{ \flag_clear:n { @@/mcid } }
+ \cs_set_protected:Npn \@@_mc_bdc_mcid:nn #1 #2
{
- \@@_ref_value:enn %3 args
- {
- mcid-\int_use:N \c@g_@@_MCID_abs_int
+ \int_gincr:N \c@g_@@_MCID_abs_int
+ \@@_ref_label:en
+ {
+ mcid-\int_use:N \c@g_@@_MCID_abs_int
+ }
+ {mc}
+ \@@_mc_bdc_shipout:ee
+ {#1}
+ {
+ /MCID~\flag_height:n { @@/mcid }
+ \flag_raise:n { @@/mcid }~ #2
}
- { tagabspage }
- {-1}
- }
- \prop_get:NoNTF
- \g_@@_MCID_byabspage_prop
- {
- \l_@@_mc_ref_abspage_tl
- }
- \l_@@_mc_tmpa_tl
- {
- %key already present, use value for MCID and add 1 for the next
- \int_gset:Nn \g_@@_MCID_tmp_bypage_int { \l_@@_mc_tmpa_tl }
- \@@_prop_gput:Nxx
- \g_@@_MCID_byabspage_prop
- { \l_@@_mc_ref_abspage_tl }
- { \int_eval:n {\l_@@_mc_tmpa_tl +1} }
- }
- {
- %key not present, set MCID to 0 and insert 1
- \int_gzero:N \g_@@_MCID_tmp_bypage_int
- \@@_prop_gput:Nxx
- \g_@@_MCID_byabspage_prop
- { \l_@@_mc_ref_abspage_tl }
- {1}
}
- \@@_ref_label:en
- {
- mcid-\int_use:N \c@g_@@_MCID_abs_int
- }
- { mc }
- \@@_mc_bdc:nx
- {#1}
- { /MCID~\int_eval:n { \g_@@_MCID_tmp_bypage_int }~ \exp_not:n { #2 } }
- }
-\cs_new_protected:Npn \@@_mc_bdc_mcid:n #1
+ }
+% \end{macrocode}
+% if the engine is too old, we have to revert to earlier method.
+% \begin{macrocode}
+ {
+ \msg_new:nnn { tagpdf } { old-engine }
+ {
+ The~engine~or~the~PDF management~is~too~old or\\
+ delayed~shipout~has~been~disabled.\\
+ Fast~numbering~of~MC-chunks~not~available.\\
+ More~compilations~will~be~needed~in~generic~mode.
+ }
+ \msg_warning:nn { tagpdf} { old-engine }
+ \@@_prop_new:N \g_@@_MCID_byabspage_prop
+ \int_new:N \g_@@_MCID_tmp_bypage_int
+ \cs_generate_variant:Nn \@@_mc_bdc:nn {nx}
+% \end{macrocode}
+% revert the attribute:
+% \begin{macrocode}
+ \ref_attribute_gset:nnnn {tagmcid } {0} { now }
+ { \int_use:N \g_@@_MCID_tmp_bypage_int }
+ \cs_new_protected:Npn \@@_mc_bdc_mcid:nn #1 #2
+ {
+ \int_gincr:N \c@g_@@_MCID_abs_int
+ \tl_set:Nx \l_@@_mc_ref_abspage_tl
+ {
+ \@@_ref_value:enn %3 args
+ {
+ mcid-\int_use:N \c@g_@@_MCID_abs_int
+ }
+ { tagabspage }
+ {-1}
+ }
+ \prop_get:NoNTF
+ \g_@@_MCID_byabspage_prop
+ {
+ \l_@@_mc_ref_abspage_tl
+ }
+ \l_@@_mc_tmpa_tl
+ {
+ %key already present, use value for MCID and add 1 for the next
+ \int_gset:Nn \g_@@_MCID_tmp_bypage_int { \l_@@_mc_tmpa_tl }
+ \@@_prop_gput:Nxx
+ \g_@@_MCID_byabspage_prop
+ { \l_@@_mc_ref_abspage_tl }
+ { \int_eval:n {\l_@@_mc_tmpa_tl +1} }
+ }
+ {
+ %key not present, set MCID to 0 and insert 1
+ \int_gzero:N \g_@@_MCID_tmp_bypage_int
+ \@@_prop_gput:Nxx
+ \g_@@_MCID_byabspage_prop
+ { \l_@@_mc_ref_abspage_tl }
+ {1}
+ }
+ \@@_ref_label:en
+ {
+ mcid-\int_use:N \c@g_@@_MCID_abs_int
+ }
+ { mc }
+ \@@_mc_bdc:nx
+ {#1}
+ { /MCID~\int_eval:n { \g_@@_MCID_tmp_bypage_int }~ \exp_not:n { #2 } }
+ }
+ }
+ \cs_new_protected:Npn \@@_mc_bdc_mcid:n #1
{
\@@_mc_bdc_mcid:nn {#1} {}
}
@@ -705,7 +742,7 @@
\tl_if_empty:NF {\l_@@_mc_key_label_tl}
{
\exp_args:NV
- \@@_mc_handle_mc_label:n \l_@@_mc_key_label_tl
+ \@@_mc_handle_mc_label:e \l_@@_mc_key_label_tl
}
\bool_if:NF \l_@@_mc_key_stash_bool
{
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
index 309ba3fd40..066badb9c4 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{implementation}
% The code is splitted into three parts: code shared by all engines,
@@ -86,9 +86,13 @@
% \begin{macrocode}
%<@@=tag>
%<*luamode>
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2023-08-30} {0.98l}
{tagpdf - mc code only for the luamode }
%</luamode>
+%<*debug>
+\ProvidesExplPackage {tagpdf-debug-lua} {2023-08-30} {0.98l}
+ {part of tagpdf - debugging code related to marking chunks - lua mode}
+%</debug>
% \end{macrocode}
% The main function which wanders through the shipout box to inject the literals.
% if the new callback is there, it is used.
@@ -261,7 +265,10 @@
% This is the lua variant for the command to
% put an mcid absolute number in the current structure.
% \begin{macrocode}
-\cs_new:Nn \@@_mc_handle_stash:n %1 mcidnum
+%</luamode>
+%<*luamode|debug>
+%<luamode>\cs_new_protected:Npn \@@_mc_handle_stash:n #1 %1 mcidnum
+%<debug>\cs_set_protected:Npn \@@_mc_handle_stash:n #1 %1 mcidnum
{
\@@_check_mc_used:n { #1 }
\seq_gput_right:cn % Don't fill a lua table due to the command in the item,
@@ -270,6 +277,12 @@
{
\@@_mc_insert_mcid_kids:n {#1}%
}
+%<debug> \seq_gput_right:cn % Don't fill a lua table due to the command in the item,
+%<debug> % so use the kernel command
+%<debug> { g_@@_struct_debug_kids_\g_@@_struct_stack_current_tl _seq }
+%<debug> {
+%<debug> MC~#1%
+%<debug> }
\lua_now:e
{
ltx.@@.func.store_struct_mcabs
@@ -282,7 +295,8 @@
{ #1 }
{ \g_@@_struct_stack_current_tl }
}
-
+%</luamode|debug>
+%<*luamode>
\cs_generate_variant:Nn \@@_mc_handle_stash:n { x }
% \end{macrocode}
% \end{macro}
@@ -321,7 +335,7 @@
\tl_if_empty:NF {\l_@@_mc_key_label_tl}
{
\exp_args:NV
- \@@_mc_handle_mc_label:n \l_@@_mc_key_label_tl
+ \@@_mc_handle_mc_label:e \l_@@_mc_key_label_tl
}
% if not stashed record the absolute number
\bool_if:NF \l_@@_mc_key_stash_bool
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
index 85a03ca90e..1fd9ebc559 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -181,7 +181,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-mc-code-shared} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-mc-code-shared} {2023-08-30} {0.98l}
{part of tagpdf - code related to marking chunks -
code shared by generic and luamode }
%</header>
@@ -227,13 +227,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{variable}{\g_@@_MCID_tmp_bypage_int}
-% The following hold the temporary by page number assigned to a mc.
-% It must be defined in the shared code to avoid problems with labels.
-% \begin{macrocode}
-\int_new:N \g_@@_MCID_tmp_bypage_int
-% \end{macrocode}
-% \end{variable}
%
% \begin{variable}{\g_@@_in_mc_bool}
% This booleans record if a mc is open, to test nesting.
@@ -294,19 +287,17 @@
%
%
% \subsection{Functions}
-% \begin{macro}{\_@@_mc_handle_mc_label:n}
+% \begin{macro}{\@@_mc_handle_mc_label:e}
% The commands labels a mc-chunk. It is used if the user explicitly
% labels the mc-chunk with the |label| key. The argument is the
% value provided by the user. It stores the attributes\\
% |tagabspage|: the absolute page, |\g_shipout_readonly_int|,\\
-% |tagmcabs|: the absolute mc-counter |\c@g_@@_MCID_abs_int|,\\
-% |tagmcid|: the ID of the chunk on the page |\g_@@_MCID_tmp_bypage_int|, this
-% typically settles down after a second compilation.
-% The reference command is defined in tagpdf.dtx and is based on l3ref.
+% |tagmcabs|: the absolute mc-counter |\c@g_@@_MCID_abs_int|.
+% The reference command is based on l3ref.
% \begin{macrocode}
-\cs_new:Nn \_@@_mc_handle_mc_label:n
+\cs_new:Npn \@@_mc_handle_mc_label:e #1
{
- \@@_ref_label:en{tagpdf-#1}{mc}
+ \ref_label:en{tagpdf-#1}{tagabspage,tagmcabs}
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
index 0e65a4be4e..0e33e7d1af 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{documentation}
% \begin{function}
@@ -98,7 +98,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-roles-code} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-roles-code} {2023-08-30} {0.98l}
{part of tagpdf - code related to roles and structure names}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
index 70e5f32d59..249460dc72 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{documentation}
% \begin{function}{interwordspace (setup-key)}
@@ -64,7 +64,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-space-code} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-space-code} {2023-08-30} {0.98l}
{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 0b175aa4f1..9e5fbe7fa6 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -247,7 +247,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-struct-code} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-struct-code} {2023-08-30} {0.98l}
{part of tagpdf - code related to storing structure}
%</header>
% \end{macrocode}
@@ -508,7 +508,16 @@
{ g_@@_struct_0_prop }
{ parentrole }
{ {StructTreeRoot}{pdf} }
-
+%</package>
+%<*debug>
+\prop_new:c { g_@@_struct_debug_0_prop }
+\prop_gset_eq:cc
+ { g_@@_struct_debug_0_prop }
+ { g_@@_struct_0_prop }
+\prop_gremove:cn { g_@@_struct_debug_0_prop }{Namespaces}
+\seq_new:c { g_@@_struct_debug_kids_0_seq }
+%</debug>
+%<*package>
% \end{macrocode}
% Namespaces are pdf 2.0.
% If the code moves into the kernel, the setting must be probably delayed.
@@ -573,7 +582,7 @@
{ \l_@@_get_tmpc_tl } %
}
}
- }
+ }
\cs_generate_variant:Nn \@@_struct_set_tag_info:nnn {eVV}
% \end{macrocode}
% \end{macro}
@@ -626,23 +635,30 @@
/MCID \c_space_tl \@@_ref_value:enn{mcid-#1}{tagmcid}{1}
>>
}
+%</package>
% \end{macrocode}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum%
+%<*package|debug>
+%<package>\cs_new_protected:Npn \@@_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum%
+%<debug>\cs_set_protected:Npn \@@_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum%
{
\@@_seq_gput_right:cx
{ g_@@_struct_kids_#1_seq }
{
\@@_struct_mcid_dict:n {#2}
}
+%<debug> \seq_gput_right:cn
+%<debug> { g_@@_struct_debug_kids_#1_seq }
+%<debug> {
+%<debug> MC~#2
+%<debug> }
\@@_seq_gput_right:cn
{ g_@@_struct_kids_#1_seq }
{
\prop_item:Nn \g_@@_struct_cont_mc_prop {#2}
}
}
-\cs_generate_variant:Nn \@@_struct_kid_mc_gput_right:nn {nx}
-
+%<package>\cs_generate_variant:Nn \@@_struct_kid_mc_gput_right:nn {nx}
% \end{macrocode}
% \end{macro}
% \begin{macro}
@@ -652,16 +668,22 @@
% This commands adds a structure as kid. We only need to record the object
% reference in the sequence.
% \begin{macrocode}
-\cs_new_protected:Npn\@@_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct
+%<package>\cs_new_protected:Npn\@@_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct
+%<debug>\cs_set_protected:Npn\@@_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct
{
\@@_seq_gput_right:cx
{ g_@@_struct_kids_#1_seq }
{
\pdf_object_ref:n { @@/struct/#2 }
}
- }
+%<debug> \seq_gput_right:cn
+%<debug> { g_@@_struct_debug_kids_#1_seq }
+%<debug> {
+%<debug> Struct~#2
+%<debug> }
+ }
-\cs_generate_variant:Nn \@@_struct_kid_struct_gput_right:nn {xx}
+%<package>\cs_generate_variant:Nn \@@_struct_kid_struct_gput_right:nn {xx}
% \end{macrocode}
% \end{macro}
% \begin{macro}
@@ -672,9 +694,10 @@
% object reference
%
% \begin{macrocode}
-\cs_new_protected:Npn\@@_struct_kid_OBJR_gput_right:nnn #1 #2 #3 %#1 num of parent struct,
- %#2 obj reference
- %#3 page object reference
+%<package>\cs_new_protected:Npn\@@_struct_kid_OBJR_gput_right:nnn #1 #2 #3 %#1 num of parent struct,
+%<package> %#2 obj reference
+%<package> %#3 page object reference
+%<debug>\cs_set_protected:Npn\@@_struct_kid_OBJR_gput_right:nnn #1 #2 #3
{
\pdf_object_unnamed_write:nn
{ dict }
@@ -686,10 +709,15 @@
{
\pdf_object_ref_last:
}
+%<debug> \seq_gput_right:cx
+%<debug> { g_@@_struct_debug_kids_#1_seq }
+%<debug> {
+%<debug> OBJR~reference
+%<debug> }
}
-
+%</package|debug>
+%<*package>
\cs_generate_variant:Nn\@@_struct_kid_OBJR_gput_right:nnn { xxx }
-
% \end{macrocode}
% \end{macro}
% \begin{macro}
@@ -1319,8 +1347,10 @@
\group_begin:
\int_gincr:N \c@g_@@_struct_abs_int
\@@_prop_new:c { g_@@_struct_\int_eval:n { \c@g_@@_struct_abs_int }_prop }
+%<debug> \prop_new:c { g_@@_struct_debug_\int_eval:n {\c@g_@@_struct_abs_int}_prop }
\@@_new_output_prop_handler:n {\int_eval:n { \c@g_@@_struct_abs_int }}
\@@_seq_new:c { g_@@_struct_kids_\int_eval:n { \c@g_@@_struct_abs_int }_seq}
+%<debug> \seq_new:c { g_@@_struct_debug_kids_\int_eval:n {\c@g_@@_struct_abs_int}_seq }
\exp_args:Ne
\pdf_object_new:n
{ @@/struct/\int_eval:n { \c@g_@@_struct_abs_int } }
@@ -1461,6 +1491,8 @@
{
\pdf_object_ref:e { @@/struct/\l_@@_struct_stack_parent_tmpa_tl }
}
+% \end{macrocode}
+% \begin{macrocode}
%record this structure as kid:
%\tl_show:N \g_@@_struct_stack_current_tl
%\tl_show:N \l_@@_struct_stack_parent_tmpa_tl
@@ -1470,6 +1502,30 @@
%\prop_show:c { g_@@_struct_\g_@@_struct_stack_current_tl _prop }
%\seq_show:c {g_@@_struct_kids_\l_@@_struct_stack_parent_tmpa_tl _seq}
}
+% \end{macrocode}
+% the debug mode stores in second prop and replaces value with more suitable ones.
+% This must be done outside of the stash boolean.
+% \begin{macrocode}
+%<debug> \prop_gset_eq:cc
+%<debug> { g_@@_struct_debug_\int_eval:n {\c@g_@@_struct_abs_int}_prop }
+%<debug> { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop }
+%<debug> \prop_gput:cnx
+%<debug> { g_@@_struct_debug_\int_eval:n {\c@g_@@_struct_abs_int}_prop }
+%<debug> { P }
+%<debug> {
+%<debug> \bool_if:NTF \l_@@_struct_elem_stash_bool
+%<debug> {no~parent:~stashed}
+%<debug> {
+%<debug> parent~structure:~\l_@@_struct_stack_parent_tmpa_tl\c_space_tl =~
+%<debug> \l_@@_get_parent_tmpa_tl
+%<debug> }
+%<debug> }
+%<debug> \prop_gput:cnx
+%<debug> { g_@@_struct_debug_\int_eval:n {\c@g_@@_struct_abs_int}_prop }
+%<debug> { NS }
+%<debug> { \g_@@_struct_tag_NS_tl }
+% \end{macrocode}
+% \begin{macrocode}
%\prop_show:c { g_@@_struct_\g_@@_struct_stack_current_tl _prop }
%\seq_show:c {g_@@_struct_kids_\l_@@_struct_stack_parent_tmpa_tl _seq}
%<debug> \@@_debug_struct_begin_insert:n { #1 }
@@ -1526,7 +1582,7 @@
% TODO: decide how it should be guarded. Probably by the struct-check.
% \begin{macrocode}
%<base>\cs_new_protected:Npn \tag_struct_use:n #1 {}
-%<*package>
+%<*package|debug>
\cs_set_protected:Npn \tag_struct_use:n #1 %#1 is the label
{
\@@_check_if_active_struct:T
@@ -1547,6 +1603,23 @@
\pdf_object_ref:e { @@/struct/\g_@@_struct_stack_current_tl }
}
% \end{macrocode}
+% debug code
+% \begin{macrocode}
+%<debug> \prop_gset_eq:cc
+%<debug> { g_@@_struct_debug_\@@_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop }
+%<debug> { g_@@_struct_\@@_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop }
+%<debug> \prop_gput:cnx
+%<debug> { g_@@_struct_debug_\@@_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop }
+%<debug> { P }
+%<debug> {
+%<debug> parent~structure:~\g_@@_struct_stack_current_tl\c_space_tl=~
+%<debug> \g_@@_struct_tag_tl
+%<debug> }
+%<debug> \prop_gput:cnx
+%<debug> { g_@@_struct_debug_\int_eval:n {\c@g_@@_struct_abs_int}_prop }
+%<debug> { NS }
+%<debug> { \g_@@_struct_tag_NS_tl }
+% \end{macrocode}
% check if the tag is allowed as child. Here we have to retrieve the
% tag info for the child, while the data for the parent is in
% the global tl-vars:
@@ -1572,14 +1645,14 @@
{ \int_eval:n {\c@g_@@_struct_abs_int} }
\g_@@_struct_tag_tl
\g_@@_struct_tag_NS_tl
- }
+ }
}
{
\msg_warning:nnn{ tag }{struct-label-unknown}{#1}
}
}
}
-%</package>
+%</package|debug>
% \end{macrocode}
% \end{macro}
% \begin{macro}{\tag_struct_use_num:n}
@@ -1740,7 +1813,7 @@
% \section{Attributes and attribute classes}
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {tagpdf-attr-code} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-attr-code} {2023-08-30} {0.98l}
{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 a8b755a1f6..c84ad8a8c5 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-tree-code} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-tree-code} {2023-08-30} {0.98l}
{part of tagpdf - code related to writing trees and dictionaries to the pdf}
%</header>
% \end{macrocode}
@@ -342,10 +342,13 @@
{% page#1:mcid##1:\l_@@_tmpa_tl :content
\tl_put_right:Nx \l_@@_parenttree_content_tl
{
- \pdf_object_if_exist:eT { @@/struct/\l_@@_tmpa_tl }
+ \pdf_object_if_exist:eTF { @@/struct/\l_@@_tmpa_tl }
{
\pdf_object_ref:e { @@/struct/\l_@@_tmpa_tl }
}
+ {
+ null
+ }
\c_space_tl
}
}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
index 50afdf6a77..518a341812 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.98k, released 2023-08-04}
+% \date{Version 0.98l, released 2023-08-30}
% \maketitle
% \begin{documentation}
% \section{Setup commands}
@@ -250,7 +250,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-user} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-user} {2023-08-30} {0.98l}
{tagpdf - user commands}
%</header>
% \end{macrocode}
@@ -508,6 +508,44 @@
,struct-stack / show .code:n = \seq_show:N \g_@@_struct_tag_stack_seq
,struct-stack .default:n = show
}
+%</package>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{debug/structures (show-key)}
+% The following key is available only if the tagpdf-debug package is loaded
+% and shows all structures starting with the one with the number
+% given by the key.
+% \begin{macrocode}
+%<*debug>
+\keys_define:nn { @@ / show }
+ {
+ ,debug/structures .code:n =
+ {
+ \int_step_inline:nnn{#1}{\c@g__tag_struct_abs_int}
+ {
+ \msg_term:nnxxxx
+ { tag/debug } { show-struct }
+ { ##1 }
+ {
+ \prop_map_function:cN
+ {g_@@_struct_debug_##1_prop}
+ \msg_show_item_unbraced:nn
+ }
+ { } { }
+ \msg_term:nnxxxx
+ { tag/debug } { show-kids }
+ { ##1 }
+ {
+ \seq_map_function:cN
+ {g_@@_struct_debug_kids_##1_seq}
+ \msg_show_item_unbraced:n
+ }
+ { } { }
+ }
+ }
+ ,debug/structures .default:n = 0
+ }
+%</debug>
% \end{macrocode}
% \end{macro}
%
@@ -522,7 +560,6 @@
% Until l3ref is in the kernel, we provide a definition for \cs{newlabeldata} in
% the aux-file to avoid errors if a document switches between tagging and non-tagging.
% \begin{macrocode}
-%</package>
%<base>\AddToHook{begindocument}
%<base> {\immediate\write\@mainaux{\string\providecommand\string\newlabeldata[2]{}}}
%<*package>
diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx
index 6da2ba0122..be94a64070 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf.dtx
@@ -93,7 +93,7 @@
% \begin{macrocode}
%<@@=tag>
%<*package>
-\ProvidesExplPackage {tagpdf} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf} {2023-08-30} {0.98l}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -119,7 +119,7 @@
% \end{macrocode}
%<*debug>
% \begin{macrocode}
-\ProvidesExplPackage {tagpdf-debug} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-debug} {2023-08-30} {0.98l}
{ debug code for tagpdf }
\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
% \end{macrocode}
@@ -142,18 +142,28 @@
% we define a base package with dummy functions
% \begin{macrocode}
%<*base>
-\ProvidesExplPackage {tagpdf-base} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf-base} {2023-08-30} {0.98l}
{part of tagpdf - provide base, no-op versions of the user commands }
%</base>
% \end{macrocode}
%\section{Package options}
-% There are only two options to switch for luatex between generic and luamode,
+% There are only two documented options to switch for luatex between generic and luamode,
% TODO try to get rid of them.
+% The option \texttt{disabledelayedshipout} is only temporary to be able to debug
+% problem with the new shipout keyword if needed.
% \begin{macrocode}
%<*package>
\bool_new:N\g_@@_mode_lua_bool
+\bool_new:N\g_@@_delayed_shipout_bool
+\bool_lazy_and:nnT
+ { \bool_if_exist_p:N \l__pdfmanagement_delayed_shipout_bool }
+ { \l__pdfmanagement_delayed_shipout_bool }
+ {
+ \bool_gset_true:N\g_@@_delayed_shipout_bool
+ }
\DeclareOption {luamode} { \sys_if_engine_luatex:T { \bool_gset_true:N \g_@@_mode_lua_bool } }
\DeclareOption {genericmode}{ \bool_gset_false:N\g_@@_mode_lua_bool }
+\DeclareOption {disabledelayedshipout}{ \bool_gset_false:N\g_@@_delayed_shipout_bool }
\ExecuteOptions{luamode}
\ProcessOptions
% \end{macrocode}
@@ -350,7 +360,7 @@
%
% \section{Variants of l3 commands}
% \begin{macrocode}
-\prg_generate_conditional_variant:Nnn \pdf_object_if_exist:n {e}{T,F}
+\prg_generate_conditional_variant:Nnn \pdf_object_if_exist:n {e}{T,F,TF}
\cs_generate_variant:Nn \pdf_object_ref:n {e}
\cs_generate_variant:Nn \pdfannot_dict_put:nnn {nnx}
\cs_generate_variant:Nn \pdffile_embed_stream:nnn {nxx,oxx}
@@ -388,8 +398,11 @@
{ \int_use:N \g_shipout_readonly_int }
\ref_attribute_gset:nnnn { tagmcabs } {0} { now }
{ \int_use:N \c@g_@@_MCID_abs_int }
-\ref_attribute_gset:nnnn {tagmcid } {0} { now }
- { \int_use:N \g_@@_MCID_tmp_bypage_int }
+
+\flag_new:n { @@/mcid }
+\ref_attribute_gset:nnnn {tagmcid } {0} { shipout }
+ { \flag_height:n { @@/mcid } }
+
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf
index d99d76ff95..0118e4bb22 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 b89709b1a9..259e9dfc38 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf.tex
@@ -16,8 +16,8 @@
}
\DebugBlocksOff
\makeatletter
-\def\UlrikeFischer@package@version{0.98k}
-\def\UlrikeFischer@package@date{2023-08-04}
+\def\UlrikeFischer@package@version{0.98l}
+\def\UlrikeFischer@package@date{2023-08-30}
\makeatother
\documentclass[bibliography=totoc,a4paper]{article}
@@ -537,6 +537,11 @@ chars will work, but are currently not taken from the current font. This will
be improved in the next luaotfload version. The compilation with dvilualatex
is not much tested yet.
+\subsection{Changes in version 0.98l}
+
+In 2023 the primitives to write literal code into the pdf have been extended in all engines
+and now allow to delay the expansion of their argument to the shipout. This made it possible to greatly simplify and speed up the code used in generic mode to number the MC-chunks. In most cases building the structure should now need only two or three compilations. The new code requires a current pdfmanagement-testphase and is then used automatically if the new engines are detected.
+
\subsection{Proof of concept: the tagging of the documentation itself}
Starting with version 0.6 the documentation itself has been tagged. The
@@ -2446,6 +2451,13 @@ This command takes as argument a key-val list which implements a number of show
With the value |log| the info is only
written to the log-file, |show| stops the compilation and shows on the terminal.
If no value is used, then the default is |show|.
+
+ \item[\PrintKeyName{debug/structures}] This key is only available if
+ the package \pkg{tagpdf-debug} has been loaded too. It takes as
+ value a number (the default is 0), and shows on the terminal and
+ in the log information about all structures with a number equal or
+ larger than the number. The data avoids to show PDF object numbers
+ to make it more usable for test suites.
\end{description}
diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
index 114ac7646b..af9efe1f75 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} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdfdocu-patches} {2023-08-30} {0.98l}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox,xpatch}