texlive[68128] Master/texmf-dist: tagpdf (31aug23)
commits+karl at tug.org
commits+karl at tug.org
Thu Aug 31 23:42:02 CEST 2023
Revision: 68128
http://tug.org/svn/texlive?view=revision&revision=68128
Author: karl
Date: 2023-08-31 23:42:02 +0200 (Thu, 31 Aug 2023)
Log Message:
-----------
tagpdf (31aug23)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/tagpdf/README.md
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-AF-file.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-alt-actualtext.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-attribute.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-formula-problem.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-list.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-mc-manual-para-split-obsolete.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-softhyphen.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-spaceglyph-listings.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-structure-obsolete.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/ex-tagpdf-template.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/tagpdf-code.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/tagpdf.pdf
trunk/Master/texmf-dist/doc/latex/tagpdf/tagpdf.tex
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-backend.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-checks.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-data.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-generic.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-luacode.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-shared.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-roles.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-space.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-struct.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-tree.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-user.dtx
trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf.dtx
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-inline.def
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty
trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/README.md
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tagpdf/README.md 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/doc/latex/tagpdf/README.md 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-AF-file.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-alt-actualtext.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-attribute.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-formula-problem.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-list.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-mc-manual-para-split-obsolete.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-softhyphen.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-spaceglyph-listings.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-structure-obsolete.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/ex-tagpdf-template.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/tagpdf-code.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/tagpdf.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/tagpdf/tagpdf.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/tagpdf/tagpdf.tex 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/doc/latex/tagpdf/tagpdf.tex 2023-08-31 21:42:02 UTC (rev 68128)
@@ -16,8 +16,8 @@
}
\DebugBlocksOff
\makeatletter
-\def\UlrikeFischer at package@version{0.98k}
-\def\UlrikeFischer at package@date{2023-08-04}
+\def\UlrikeFischer at package@version{0.98l}
+\def\UlrikeFischer at package@date{2023-08-30}
\makeatother
\documentclass[bibliography=totoc,a4paper]{article}
@@ -537,6 +537,11 @@
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 @@
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}
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-backend.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-backend.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-backend.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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"
}
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-checks.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-checks.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-checks.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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}
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-data.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-data.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-data.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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 @@
% 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 @@
% 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 @@
% \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 @@
% \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 @@
% \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 @@
% 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 @@
% 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,∅
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-generic.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-generic.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-generic.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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,11 +55,11 @@
% \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}
@@ -66,16 +66,10 @@
%
%\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 at g__tag_MCID_abs_int} }
+ { \int_eval:n{\c at 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 at 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 at g_@@_MCID_abs_int
+ \int_gincr:N \c at g_@@_MCID_abs_int
+ \@@_ref_label:en
+ {
+ mcid-\int_use:N \c at 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 at 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 at g_@@_MCID_abs_int
+ \tl_set:Nx \l_@@_mc_ref_abspage_tl
+ {
+ \@@_ref_value:enn %3 args
+ {
+ mcid-\int_use:N \c at 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 at 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
{
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-luacode.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-luacode.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-luacode.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-shared.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-shared.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-shared.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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 at 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 at 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}
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-roles.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-roles.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-roles.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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}
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-space.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-space.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-space.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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}
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-struct.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-struct.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-struct.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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,9 +635,12 @@
/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 }
@@ -635,6 +647,11 @@
{
\@@_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 }
{
@@ -641,8 +658,7 @@
\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,7 +668,8 @@
% 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 }
@@ -659,9 +676,14 @@
{
\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 at g_@@_struct_abs_int
\@@_prop_new:c { g_@@_struct_\int_eval:n { \c at g_@@_struct_abs_int }_prop }
+%<debug> \prop_new:c { g_@@_struct_debug_\int_eval:n {\c at g_@@_struct_abs_int}_prop }
\@@_new_output_prop_handler:n {\int_eval:n { \c at g_@@_struct_abs_int }}
\@@_seq_new:c { g_@@_struct_kids_\int_eval:n { \c at g_@@_struct_abs_int }_seq}
+%<debug> \seq_new:c { g_@@_struct_debug_kids_\int_eval:n {\c at g_@@_struct_abs_int}_seq }
\exp_args:Ne
\pdf_object_new:n
{ @@/struct/\int_eval:n { \c at 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 at g_@@_struct_abs_int}_prop }
+%<debug> { g_@@_struct_\int_eval:n {\c at g_@@_struct_abs_int}_prop }
+%<debug> \prop_gput:cnx
+%<debug> { g_@@_struct_debug_\int_eval:n {\c at 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 at 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 at 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,7 +1645,7 @@
{ \int_eval:n {\c at g_@@_struct_abs_int} }
\g_@@_struct_tag_tl
\g_@@_struct_tag_NS_tl
- }
+ }
}
{
\msg_warning:nnn{ tag }{struct-label-unknown}{#1}
@@ -1579,7 +1652,7 @@
}
}
}
-%</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}
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-tree.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-tree.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-tree.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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
}
}
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-user.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-user.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf-user.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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,8 +508,46 @@
,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 at 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}
%
% \section{Commands to extend document commands}
% The following commands and code parts are not core command of tagpdf.
@@ -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>
Modified: trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf.dtx 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/source/latex/tagpdf/tagpdf.dtx 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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 at 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}
%
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-base.sty 2023-08-31 21:42:02 UTC (rev 68128)
@@ -25,7 +25,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf.dtx
-\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 }
\AddToHook{begindocument}
{
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-generic.sty 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-mc-generic.dtx
-\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}
\cs_set_protected:Npn \tag_mc_begin:n #1 %#1 keyval
{
@@ -47,7 +47,7 @@
\tl_if_empty:NF {\l__tag_mc_key_label_tl}
{
\exp_args:NV
- \__tag_mc_handle_mc_label:n \l__tag_mc_key_label_tl
+ \__tag_mc_handle_mc_label:e \l__tag_mc_key_label_tl
}
\bool_if:NF \l__tag_mc_key_stash_bool
{
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug-lua.sty 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,6 +19,35 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-mc-luacode.dtx
+\ProvidesExplPackage {tagpdf-debug-lua} {2023-08-30} {0.98l}
+ {part of tagpdf - debugging code related to marking chunks - lua mode}
+\cs_set_protected:Npn \__tag_mc_handle_stash:n #1 %1 mcidnum
+ {
+ \__tag_check_mc_used:n { #1 }
+ \seq_gput_right:cn % Don't fill a lua table due to the command in the item,
+ % so use the kernel command
+ { g__tag_struct_kids_\g__tag_struct_stack_current_tl _seq }
+ {
+ \__tag_mc_insert_mcid_kids:n {#1}%
+ }
+ \seq_gput_right:cn % Don't fill a lua table due to the command in the item,
+ % so use the kernel command
+ { g__tag_struct_debug_kids_\g__tag_struct_stack_current_tl _seq }
+ {
+ MC~#1%
+ }
+ \lua_now:e
+ {
+ ltx.__tag.func.store_struct_mcabs
+ (
+ \g__tag_struct_stack_current_tl,#1
+ )
+ }
+ \prop_gput:Nxx
+ \g__tag_mc_parenttree_prop
+ { #1 }
+ { \g__tag_struct_stack_current_tl }
+ }
%%
%%
%% End of file `tagpdf-debug-lua.sty'.
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-debug.sty 2023-08-31 21:42:02 UTC (rev 68128)
@@ -26,7 +26,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf.dtx
-\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}
\prop_gput:Nnn \g_msg_module_type_prop { tag / debug} {}
@@ -41,6 +41,24 @@
\RequirePackage {tagpdf-debug-generic} %
}
%% File: tagpdf-checks.dtx
+\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 }
+ \\
+ =========================
+ }
\msg_new:nnn { tag / debug } {mc-begin} { MC~begin~#1~with~options:~\tl_to_str:n{#2}~[\msg_line_context:] }
\msg_new:nnn { tag / debug } {mc-end} { MC~end~#1~[\msg_line_context:] }
@@ -138,11 +156,95 @@
+\keys_define:nn { __tag / show }
+ {
+ ,debug/structures .code:n =
+ {
+ \int_step_inline:nnn{#1}{\c at g__tag_struct_abs_int}
+ {
+ \msg_term:nnxxxx
+ { tag/debug } { show-struct }
+ { ##1 }
+ {
+ \prop_map_function:cN
+ {g__tag_struct_debug_##1_prop}
+ \msg_show_item_unbraced:nn
+ }
+ { } { }
+ \msg_term:nnxxxx
+ { tag/debug } { show-kids }
+ { ##1 }
+ {
+ \seq_map_function:cN
+ {g__tag_struct_debug_kids_##1_seq}
+ \msg_show_item_unbraced:n
+ }
+ { } { }
+ }
+ }
+ ,debug/structures .default:n = 0
+ }
%% File: tagpdf-mc-shared.dtx
%% File: tagpdf-tree.dtx
%% File: tagpdf-roles.dtx
%% File: tagpdf-struct.dtx
+\prop_new:c { g__tag_struct_debug_0_prop }
+\prop_gset_eq:cc
+ { g__tag_struct_debug_0_prop }
+ { g__tag_struct_0_prop }
+\prop_gremove:cn { g__tag_struct_debug_0_prop }{Namespaces}
+\seq_new:c { g__tag_struct_debug_kids_0_seq }
+\cs_set_protected:Npn \__tag_struct_kid_mc_gput_right:nn #1 #2 %#1 structure num, #2 MCID absnum%
+ {
+ \__tag_seq_gput_right:cx
+ { g__tag_struct_kids_#1_seq }
+ {
+ \__tag_struct_mcid_dict:n {#2}
+ }
+ \seq_gput_right:cn
+ { g__tag_struct_debug_kids_#1_seq }
+ {
+ MC~#2
+ }
+ \__tag_seq_gput_right:cn
+ { g__tag_struct_kids_#1_seq }
+ {
+ \prop_item:Nn \g__tag_struct_cont_mc_prop {#2}
+ }
+ }
+\cs_set_protected:Npn\__tag_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct
+ {
+ \__tag_seq_gput_right:cx
+ { g__tag_struct_kids_#1_seq }
+ {
+ \pdf_object_ref:n { __tag/struct/#2 }
+ }
+ \seq_gput_right:cn
+ { g__tag_struct_debug_kids_#1_seq }
+ {
+ Struct~#2
+ }
+ }
+
+\cs_set_protected:Npn\__tag_struct_kid_OBJR_gput_right:nnn #1 #2 #3
+ {
+ \pdf_object_unnamed_write:nn
+ { dict }
+ {
+ /Type/OBJR/Obj~#2/Pg~#3
+ }
+ \__tag_seq_gput_right:cx
+ { g__tag_struct_kids_#1_seq }
+ {
+ \pdf_object_ref_last:
+ }
+ \seq_gput_right:cx
+ { g__tag_struct_debug_kids_#1_seq }
+ {
+ OBJR~reference
+ }
+ }
\cs_set_protected:Npn \tag_struct_begin:n #1 %#1 key-val
{
\__tag_check_if_active_struct:TF
@@ -150,8 +252,10 @@
\group_begin:
\int_gincr:N \c at g__tag_struct_abs_int
\__tag_prop_new:c { g__tag_struct_\int_eval:n { \c at g__tag_struct_abs_int }_prop }
+ \prop_new:c { g__tag_struct_debug_\int_eval:n {\c at g__tag_struct_abs_int}_prop }
\__tag_new_output_prop_handler:n {\int_eval:n { \c at g__tag_struct_abs_int }}
\__tag_seq_new:c { g__tag_struct_kids_\int_eval:n { \c at g__tag_struct_abs_int }_seq}
+ \seq_new:c { g__tag_struct_debug_kids_\int_eval:n {\c at g__tag_struct_abs_int}_seq }
\exp_args:Ne
\pdf_object_new:n
{ __tag/struct/\int_eval:n { \c at g__tag_struct_abs_int } }
@@ -277,6 +381,24 @@
%\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop }
%\seq_show:c {g__tag_struct_kids_\l__tag_struct_stack_parent_tmpa_tl _seq}
}
+ \prop_gset_eq:cc
+ { g__tag_struct_debug_\int_eval:n {\c at g__tag_struct_abs_int}_prop }
+ { g__tag_struct_\int_eval:n {\c at g__tag_struct_abs_int}_prop }
+ \prop_gput:cnx
+ { g__tag_struct_debug_\int_eval:n {\c at g__tag_struct_abs_int}_prop }
+ { P }
+ {
+ \bool_if:NTF \l__tag_struct_elem_stash_bool
+ {no~parent:~stashed}
+ {
+ parent~structure:~\l__tag_struct_stack_parent_tmpa_tl\c_space_tl =~
+ \l__tag_get_parent_tmpa_tl
+ }
+ }
+ \prop_gput:cnx
+ { g__tag_struct_debug_\int_eval:n {\c at g__tag_struct_abs_int}_prop }
+ { NS }
+ { \g__tag_struct_tag_NS_tl }
%\prop_show:c { g__tag_struct_\g__tag_struct_stack_current_tl _prop }
%\seq_show:c {g__tag_struct_kids_\l__tag_struct_stack_parent_tmpa_tl _seq}
\__tag_debug_struct_begin_insert:n { #1 }
@@ -323,6 +445,67 @@
\__tag_debug_struct_end_check:n{#1}
\tag_struct_end:
}
+\cs_set_protected:Npn \tag_struct_use:n #1 %#1 is the label
+ {
+ \__tag_check_if_active_struct:T
+ {
+ \prop_if_exist:cTF
+ { g__tag_struct_\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop } %
+ {
+ \__tag_check_struct_used:n {#1}
+ %add the label structure as kid to the current structure (can be the root)
+ \__tag_struct_kid_struct_gput_right:xx
+ { \g__tag_struct_stack_current_tl }
+ { \__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0} }
+ %add the current structure to the labeled one as parents
+ \__tag_prop_gput:cnx
+ { g__tag_struct_\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop }
+ { P }
+ {
+ \pdf_object_ref:e { __tag/struct/\g__tag_struct_stack_current_tl }
+ }
+ \prop_gset_eq:cc
+ { g__tag_struct_debug_\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop }
+ { g__tag_struct_\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop }
+ \prop_gput:cnx
+ { g__tag_struct_debug_\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop }
+ { P }
+ {
+ parent~structure:~\g__tag_struct_stack_current_tl\c_space_tl=~
+ \g__tag_struct_tag_tl
+ }
+ \prop_gput:cnx
+ { g__tag_struct_debug_\int_eval:n {\c at g__tag_struct_abs_int}_prop }
+ { NS }
+ { \g__tag_struct_tag_NS_tl }
+ \__tag_struct_get_parentrole:eNN
+ {\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}}
+ \l__tag_tmpa_tl
+ \l__tag_tmpb_tl
+ \__tag_check_parent_child:VVVVN
+ \g__tag_struct_tag_tl
+ \g__tag_struct_tag_NS_tl
+ \l__tag_tmpa_tl
+ \l__tag_tmpb_tl
+ \l__tag_parent_child_check_tl
+ \int_compare:nNnT {\l__tag_parent_child_check_tl}<0
+ {
+ \cs_set_eq:NN \l__tag_role_remap_tag_tl \g__tag_struct_tag_tl
+ \cs_set_eq:NN \l__tag_role_remap_NS_tl \g__tag_struct_tag_NS_tl
+ \__tag_role_remap:
+ \cs_gset_eq:NN \g__tag_struct_tag_tl \l__tag_role_remap_tag_tl
+ \cs_gset_eq:NN \g__tag_struct_tag_NS_tl \l__tag_role_remap_NS_tl
+ \__tag_struct_set_tag_info:eVV
+ { \int_eval:n {\c at g__tag_struct_abs_int} }
+ \g__tag_struct_tag_tl
+ \g__tag_struct_tag_NS_tl
+ }
+ }
+ {
+ \msg_warning:nnn{ tag }{struct-label-unknown}{#1}
+ }
+ }
+ }
%% File: tagpdf-space.dtx
%%
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-luatex.def 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-backend.dtx
-\ProvidesExplFile {tagpdf-luatex.def} {2023-08-04} {0.98k}
+\ProvidesExplFile {tagpdf-luatex.def} {2023-08-30} {0.98l}
{tagpdf~driver~for~luatex}
{
\fontencoding{TU}\fontfamily{lmr}\fontseries{m}\fontshape{n}\fontsize{10pt}{10pt}\selectfont
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,10 +19,8 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-mc-generic.dtx
-\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}
-\__tag_prop_new:N \g__tag_MCID_byabspage_prop
-
\tl_new:N \l__tag_mc_ref_abspage_tl
\tl_new:N \l__tag_mc_tmpa_tl
@@ -246,51 +244,85 @@
\cs_set_eq:NN \__tag_mc_bmc:n \pdf_bmc:n
\cs_set_eq:NN \__tag_mc_emc: \pdf_emc:
\cs_set_eq:NN \__tag_mc_bdc:nn \pdf_bdc:nn
-\cs_generate_variant:Nn \__tag_mc_bdc:nn {nx}
-\cs_new_protected:Npn \__tag_mc_bdc_mcid:nn #1 #2
+\cs_set_eq:NN \__tag_mc_bdc_shipout:ee \pdf_bdc_shipout:ee
+\bool_if:NTF\g__tag_delayed_shipout_bool
{
- \int_gincr:N \c at g__tag_MCID_abs_int
- \tl_set:Nx \l__tag_mc_ref_abspage_tl
+ \hook_gput_code:nnn {shipout/before}{tagpdf}{ \flag_clear:n { __tag/mcid } }
+ \cs_set_protected:Npn \__tag_mc_bdc_mcid:nn #1 #2
{
- \__tag_ref_value:enn %3 args
+ \int_gincr:N \c at g__tag_MCID_abs_int
+ \__tag_ref_label:en
+ {
+ mcid-\int_use:N \c at g__tag_MCID_abs_int
+ }
+ {mc}
+ \__tag_mc_bdc_shipout:ee
+ {#1}
{
- mcid-\int_use:N \c at g__tag_MCID_abs_int
+ /MCID~\flag_height:n { __tag/mcid }
+ \flag_raise:n { __tag/mcid }~ #2
}
- { tagabspage }
- {-1}
}
- \prop_get:NoNTF
- \g__tag_MCID_byabspage_prop
- {
- \l__tag_mc_ref_abspage_tl
+ }
+ {
+ \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 }
+ \__tag_prop_new:N \g__tag_MCID_byabspage_prop
+ \int_new:N \g__tag_MCID_tmp_bypage_int
+ \cs_generate_variant:Nn \__tag_mc_bdc:nn {nx}
+ \ref_attribute_gset:nnnn {tagmcid } {0} { now }
+ { \int_use:N \g__tag_MCID_tmp_bypage_int }
+ \cs_new_protected:Npn \__tag_mc_bdc_mcid:nn #1 #2
+ {
+ \int_gincr:N \c at g__tag_MCID_abs_int
+ \tl_set:Nx \l__tag_mc_ref_abspage_tl
+ {
+ \__tag_ref_value:enn %3 args
+ {
+ mcid-\int_use:N \c at g__tag_MCID_abs_int
+ }
+ { tagabspage }
+ {-1}
+ }
+ \prop_get:NoNTF
+ \g__tag_MCID_byabspage_prop
+ {
+ \l__tag_mc_ref_abspage_tl
+ }
+ \l__tag_mc_tmpa_tl
+ {
+ %key already present, use value for MCID and add 1 for the next
+ \int_gset:Nn \g__tag_MCID_tmp_bypage_int { \l__tag_mc_tmpa_tl }
+ \__tag_prop_gput:Nxx
+ \g__tag_MCID_byabspage_prop
+ { \l__tag_mc_ref_abspage_tl }
+ { \int_eval:n {\l__tag_mc_tmpa_tl +1} }
+ }
+ {
+ %key not present, set MCID to 0 and insert 1
+ \int_gzero:N \g__tag_MCID_tmp_bypage_int
+ \__tag_prop_gput:Nxx
+ \g__tag_MCID_byabspage_prop
+ { \l__tag_mc_ref_abspage_tl }
+ {1}
+ }
+ \__tag_ref_label:en
+ {
+ mcid-\int_use:N \c at g__tag_MCID_abs_int
+ }
+ { mc }
+ \__tag_mc_bdc:nx
+ {#1}
+ { /MCID~\int_eval:n { \g__tag_MCID_tmp_bypage_int }~ \exp_not:n { #2 } }
}
- \l__tag_mc_tmpa_tl
- {
- %key already present, use value for MCID and add 1 for the next
- \int_gset:Nn \g__tag_MCID_tmp_bypage_int { \l__tag_mc_tmpa_tl }
- \__tag_prop_gput:Nxx
- \g__tag_MCID_byabspage_prop
- { \l__tag_mc_ref_abspage_tl }
- { \int_eval:n {\l__tag_mc_tmpa_tl +1} }
- }
- {
- %key not present, set MCID to 0 and insert 1
- \int_gzero:N \g__tag_MCID_tmp_bypage_int
- \__tag_prop_gput:Nxx
- \g__tag_MCID_byabspage_prop
- { \l__tag_mc_ref_abspage_tl }
- {1}
- }
- \__tag_ref_label:en
- {
- mcid-\int_use:N \c at g__tag_MCID_abs_int
- }
- { mc }
- \__tag_mc_bdc:nx
- {#1}
- { /MCID~\int_eval:n { \g__tag_MCID_tmp_bypage_int }~ \exp_not:n { #2 } }
}
-\cs_new_protected:Npn \__tag_mc_bdc_mcid:n #1
+ \cs_new_protected:Npn \__tag_mc_bdc_mcid:n #1
{
\__tag_mc_bdc_mcid:nn {#1} {}
}
@@ -357,7 +389,7 @@
\tl_if_empty:NF {\l__tag_mc_key_label_tl}
{
\exp_args:NV
- \__tag_mc_handle_mc_label:n \l__tag_mc_key_label_tl
+ \__tag_mc_handle_mc_label:e \l__tag_mc_key_label_tl
}
\bool_if:NF \l__tag_mc_key_stash_bool
{
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-lua.sty 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-mc-luacode.dtx
-\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 }
\hook_gput_code:nnn{begindocument}{tagpdf/mc}
{
@@ -148,7 +148,7 @@
{
\lua_now:e {ltx.__tag.func.mc_insert_kids (#1,1) }
}
-\cs_new:Nn \__tag_mc_handle_stash:n %1 mcidnum
+\cs_new_protected:Npn \__tag_mc_handle_stash:n #1 %1 mcidnum
{
\__tag_check_mc_used:n { #1 }
\seq_gput_right:cn % Don't fill a lua table due to the command in the item,
@@ -169,7 +169,6 @@
{ #1 }
{ \g__tag_struct_stack_current_tl }
}
-
\cs_generate_variant:Nn \__tag_mc_handle_stash:n { x }
\cs_set_protected:Nn \tag_mc_begin:n
{
@@ -197,7 +196,7 @@
\tl_if_empty:NF {\l__tag_mc_key_label_tl}
{
\exp_args:NV
- \__tag_mc_handle_mc_label:n \l__tag_mc_key_label_tl
+ \__tag_mc_handle_mc_label:e \l__tag_mc_key_label_tl
}
% if not stashed record the absolute number
\bool_if:NF \l__tag_mc_key_stash_bool
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-book.def 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \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,
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-inline.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-inline.def 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex-inline.def 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \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,
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-latex.def 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \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,
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-mathml.def 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-08-04} {0.98k}
+%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-08-30} {0.98l}
abs,abs,mathml,
and,and,mathml,
annotation,annotation,mathml,
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf.def 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \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,
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-ns-pdf2.def 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \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,
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child-2.csv 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \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,∅
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf-parent-child.csv 2023-08-31 21:42:02 UTC (rev 68128)
@@ -19,7 +19,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf-data.dtx
-%% \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,∅,∅
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf.lua 2023-08-31 21:42:02 UTC (rev 68128)
@@ -24,8 +24,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"
}
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty 2023-08-31 21:42:02 UTC (rev 68128)
@@ -28,7 +28,7 @@
%% and all files in that bundle must be distributed together.
%%
%% File: tagpdf.dtx
-\ProvidesExplPackage {tagpdf} {2023-08-04} {0.98k}
+\ProvidesExplPackage {tagpdf} {2023-08-30} {0.98l}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -52,8 +52,16 @@
}
\prop_gput:Nnn \g_msg_module_name_prop { tag }{ tagpdf }
\bool_new:N\g__tag_mode_lua_bool
+\bool_new:N\g__tag_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__tag_delayed_shipout_bool
+ }
\DeclareOption {luamode} { \sys_if_engine_luatex:T { \bool_gset_true:N \g__tag_mode_lua_bool } }
\DeclareOption {genericmode}{ \bool_gset_false:N\g__tag_mode_lua_bool }
+\DeclareOption {disabledelayedshipout}{ \bool_gset_false:N\g__tag_delayed_shipout_bool }
\ExecuteOptions{luamode}
\ProcessOptions
\RequirePackage{l3ref-tmp}
@@ -124,7 +132,7 @@
\bool_new:N \l__tag_active_struct_bool
\bool_set_true:N \l__tag_active_struct_bool
\bool_new:N \g__tag_tagunmarked_bool
-\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}
@@ -149,8 +157,11 @@
{ \int_use:N \g_shipout_readonly_int }
\ref_attribute_gset:nnnn { tagmcabs } {0} { now }
{ \int_use:N \c at g__tag_MCID_abs_int }
-\ref_attribute_gset:nnnn {tagmcid } {0} { now }
- { \int_use:N \g__tag_MCID_tmp_bypage_int }
+
+\flag_new:n { __tag/mcid }
+\ref_attribute_gset:nnnn {tagmcid } {0} { shipout }
+ { \flag_height:n { __tag/mcid } }
+
\cs_new_protected:Npn \__tag_ref_label:nn #1 #2 %#1 label, #2 name of list mc or struct
{
\@bsphack
@@ -578,7 +589,6 @@
%% File: tagpdf-mc-shared.dtx
\cs_new:Npn \__tag_get_mc_abs_cnt: { \int_use:N \c at g__tag_MCID_abs_int }
-\int_new:N \g__tag_MCID_tmp_bypage_int
\bool_new:N \g__tag_in_mc_bool
\__tag_prop_new:N \g__tag_mc_parenttree_prop
\seq_new:N \g__tag_mc_stack_seq
@@ -589,9 +599,9 @@
\tl_new:N \g__tag_mc_key_tag_tl
\tl_new:N \l__tag_mc_key_label_tl
\tl_new:N \l__tag_mc_key_properties_tl
-\cs_new:Nn \__tag_mc_handle_mc_label:n
+\cs_new:Npn \__tag_mc_handle_mc_label:e #1
{
- \__tag_ref_label:en{tagpdf-#1}{mc}
+ \ref_label:en{tagpdf-#1}{tagabspage,tagmcabs}
}
\cs_new_protected:Npn \__tag_mc_set_label_used:n #1 %#1 labelname
{
@@ -896,10 +906,13 @@
{% page#1:mcid##1:\l__tag_tmpa_tl :content
\tl_put_right:Nx \l__tag_parenttree_content_tl
{
- \pdf_object_if_exist:eT { __tag/struct/\l__tag_tmpa_tl }
+ \pdf_object_if_exist:eTF { __tag/struct/\l__tag_tmpa_tl }
{
\pdf_object_ref:e { __tag/struct/\l__tag_tmpa_tl }
}
+ {
+ null
+ }
\c_space_tl
}
}
@@ -1904,7 +1917,6 @@
{ g__tag_struct_0_prop }
{ parentrole }
{ {StructTreeRoot}{pdf} }
-
\pdf_version_compare:NnF < {2.0}
{
\__tag_prop_gput:cnx
@@ -1992,7 +2004,6 @@
}
}
\cs_generate_variant:Nn \__tag_struct_kid_mc_gput_right:nn {nx}
-
\cs_new_protected:Npn\__tag_struct_kid_struct_gput_right:nn #1 #2 %#1 num of parent struct, #2 kid struct
{
\__tag_seq_gput_right:cx
@@ -2000,7 +2011,7 @@
{
\pdf_object_ref:n { __tag/struct/#2 }
}
- }
+ }
\cs_generate_variant:Nn \__tag_struct_kid_struct_gput_right:nn {xx}
\cs_new_protected:Npn\__tag_struct_kid_OBJR_gput_right:nnn #1 #2 #3 %#1 num of parent struct,
@@ -2018,9 +2029,7 @@
\pdf_object_ref_last:
}
}
-
\cs_generate_variant:Nn\__tag_struct_kid_OBJR_gput_right:nnn { xxx }
-
\cs_new_protected:Npn\__tag_struct_exchange_kid_command:N #1 %#1 = seq var
{
\seq_gpop_left:NN #1 \l__tag_tmpa_tl
Modified: trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty 2023-08-31 21:41:49 UTC (rev 68127)
+++ trunk/Master/texmf-dist/tex/latex/tagpdf/tagpdfdocu-patches.sty 2023-08-31 21:42:02 UTC (rev 68128)
@@ -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}
More information about the tex-live-commits
mailing list.