diff options
author | Karl Berry <karl@freefriends.org> | 2023-10-27 19:58:21 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2023-10-27 19:58:21 +0000 |
commit | 3166e6ef8fb8bc54d43ef4c07ddaf9935f5e4857 (patch) | |
tree | 4edbc7846f7ee76cb3fa98769effb8d7ccdfaaf7 /Master/texmf-dist/source | |
parent | 1bd4d7592d3d26ea9d6b670d267f81c11285920d (diff) |
tagpdf (27oct23)
git-svn-id: svn://tug.org/texlive/trunk@68676 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source')
13 files changed, 418 insertions, 314 deletions
diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-backend.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-backend.dtx index fd13c8fd7ea..d6fcd70ff08 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-backend.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-backend.dtx @@ -47,13 +47,13 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{implementation} % \begin{macrocode} %<@@=tag> %<*luatex> -\ProvidesExplFile {tagpdf-luatex.def} {2023-08-30} {0.98l} +\ProvidesExplFile {tagpdf-luatex.def} {2023-10-27} {0.98m} {tagpdf~driver~for~luatex} % \end{macrocode} % \section{Loading the lua} @@ -158,8 +158,8 @@ local ProvidesLuaModule = { name = "tagpdf", - version = "0.98l", --TAGVERSION - date = "2023-08-30", --TAGDATE + version = "0.98m", --TAGVERSION + date = "2023-10-27", --TAGDATE description = "tagpdf lua code", license = "The LATEX Project Public License 1.3c" } diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-checks.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-checks.dtx index 68123ff86c9..dc1456ea308 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-checks.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-checks.dtx @@ -48,7 +48,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{documentation} % \section{Commands} @@ -313,7 +313,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-checks-code} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-checks-code} {2023-10-27} {0.98m} {part of tagpdf - code related to checks, conditionals, debugging and messages} %</header> % \end{macrocode} @@ -717,7 +717,7 @@ \cs_new_protected:Npn \@@_check_struct_used:n #1 %#1 label { \prop_get:cnNT - {g_@@_struct_\@@_ref_value:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop} + {g_@@_struct_\@@_property_ref:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop} {P} \l_@@_tmpa_tl { @@ -884,7 +884,7 @@ { \tl_set:Nx \l_@@_tmpa_tl { - \@@_ref_value_lastpage:nn + \@@_property_ref_lastpage:nn {abspage} {-1} } @@ -898,14 +898,14 @@ {1} {1} { - \@@_ref_value_lastpage:nn + \@@_property_ref_lastpage:nn {tagmcabs} {-1} } { \int_compare:nT { - \@@_ref_value:enn + \@@_property_ref:enn {mcid-####1} {tagabspage} {-1} @@ -916,7 +916,7 @@ \seq_gput_right:Nx \l_tmpa_seq { Page##1-####1- - \@@_ref_value:enn + \@@_property_ref:enn {mcid-####1} {tagmcid} {-1} diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-data.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-data.dtx index f5e3ca8c73b..7ad2a3f327d 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-data.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-data.dtx @@ -47,7 +47,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \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-30} {0.98l} +%% \ProvidesExplFile {tagpdf-ns-latex.def} {2023-10-27} {0.98m} %% {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-30} {0.98l} +%% \ProvidesExplFile {tagpdf-ns-latex-book.def} {2023-10-27} {0.98m} %% {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-30} {0.98l} +%% \ProvidesExplFile {tagpdf-ns-latex-inline.def} {2023-10-27} {0.98m} %% {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-30} {0.98l} +%% \ProvidesExplFile {tagpdf-ns-pdf.def} {2023-10-27} {0.98m} %% {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-30} {0.98l} +%% \ProvidesExplFile {tagpdf-ns-pdf2.def} {2023-10-27} {0.98m} %% {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-30} {0.98l} +%% \ProvidesExplFile {tagpdf-ns-mathml.def} {2023-10-27} {0.98m} % {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-30} {0.98l} +%% \ProvidesExplFile {tagpdf-parent-child.csv} {2023-10-27} {0.98m} ,,,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-30} {0.98l} +%% \ProvidesExplFile {tagpdf-parent-child-2.csv} {2023-10-27} {0.98m} ,,,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/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-generic.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-generic.dtx index 13551c9a5c5..d1f6441a568 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-generic.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-generic.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{documentation} % \end{documentation} @@ -55,11 +55,11 @@ % \begin{macrocode} %<@@=tag> %<*generic> -\ProvidesExplPackage {tagpdf-mc-code-generic} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-mc-code-generic} {2023-10-27} {0.98m} {part of tagpdf - code related to marking chunks - generic mode} %</generic> %<*debug> -\ProvidesExplPackage {tagpdf-debug-generic} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-debug-generic} {2023-10-27} {0.98m} {part of tagpdf - debugging code related to marking chunks - generic mode} %</debug> % \end{macrocode} @@ -542,11 +542,11 @@ \cs_set_protected:Npn \@@_mc_bdc_mcid:nn #1 #2 { \int_gincr:N \c@g_@@_MCID_abs_int - \@@_ref_label:en + \@@_property_record:eV { mcid-\int_use:N \c@g_@@_MCID_abs_int } - {mc} + \c_@@_property_mc_clist \@@_mc_bdc_shipout:ee {#1} { @@ -561,7 +561,7 @@ { \msg_new:nnn { tagpdf } { old-engine } { - The~engine~or~the~PDF management~is~too~old or\\ + 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. @@ -573,14 +573,14 @@ % \end{macrocode} % revert the attribute: % \begin{macrocode} - \ref_attribute_gset:nnnn {tagmcid } {0} { now } - { \int_use:N \g_@@_MCID_tmp_bypage_int } + \@@_property_gset:nnnn {tagmcid } { now } + {0} { \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 + \@@_property_ref:enn %3 args { mcid-\int_use:N \c@g_@@_MCID_abs_int } @@ -609,11 +609,11 @@ { \l_@@_mc_ref_abspage_tl } {1} } - \@@_ref_label:en + \@@_property_record:eV { mcid-\int_use:N \c@g_@@_MCID_abs_int } - { mc } + \c_@@_property_mc_clist \@@_mc_bdc:nx {#1} { /MCID~\int_eval:n { \g_@@_MCID_tmp_bypage_int }~ \exp_not:n { #2 } } diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-luacode.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-luacode.dtx index 066badb9c45..7066237b76e 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-luacode.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-luacode.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{implementation} % The code is splitted into three parts: code shared by all engines, @@ -86,11 +86,11 @@ % \begin{macrocode} %<@@=tag> %<*luamode> -\ProvidesExplPackage {tagpdf-mc-code-lua} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-mc-code-lua} {2023-10-27} {0.98m} {tagpdf - mc code only for the luamode } %</luamode> %<*debug> -\ProvidesExplPackage {tagpdf-debug-lua} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-debug-lua} {2023-10-27} {0.98m} {part of tagpdf - debugging code related to marking chunks - lua mode} %</debug> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-shared.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-shared.dtx index 1fd9ebc559a..e18f7bd1b0b 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-shared.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-mc-shared.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{documentation} % \section{Public Commands} @@ -113,7 +113,7 @@ % \begin{function}[ EXP,added=2023-06-11]{\tag_mc_reset_box:N} % \begin{syntax} -% \cs{tag_mc_reset:N} \Arg{box} +% \cs{tag_mc_reset_box:N} \Arg{box} % \end{syntax} % This resets in lua mode the mc attributes to the one currently in use. % It does nothing in generic mode. @@ -181,7 +181,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-mc-code-shared} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-mc-code-shared} {2023-10-27} {0.98m} {part of tagpdf - code related to marking chunks - code shared by generic and luamode } %</header> @@ -297,7 +297,7 @@ % \begin{macrocode} \cs_new:Npn \@@_mc_handle_mc_label:e #1 { - \ref_label:en{tagpdf-#1}{tagabspage,tagmcabs} + \@@_property_record:en{tagpdf-#1}{tagabspage,tagmcabs} } % \end{macrocode} % \end{macro} @@ -328,7 +328,7 @@ { \@@_check_if_active_struct:T { - \tl_set:Nx \l_@@_tmpa_tl { \@@_ref_value:nnn{tagpdf-#1}{tagmcabs}{} } + \tl_set:Nx \l_@@_tmpa_tl { \@@_property_ref:nnn{tagpdf-#1}{tagmcabs}{} } \tl_if_empty:NTF\l_@@_tmpa_tl { \msg_warning:nnn {tag} {mc-label-unknown} {#1} diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-roles.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-roles.dtx index 0e33e7d1af7..36b46394765 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-roles.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-roles.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{documentation} % \begin{function} @@ -98,7 +98,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-roles-code} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-roles-code} {2023-10-27} {0.98m} {part of tagpdf - code related to roles and structure names} %</header> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-space.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-space.dtx index 249460dc722..191a645b123 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-space.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-space.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{documentation} % \begin{function}{interwordspace (setup-key)} @@ -64,7 +64,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-space-code} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-space-code} {2023-10-27} {0.98m} {part of tagpdf - code related to real space chars} %</header> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-struct.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-struct.dtx index 9e5fbe7fa69..263ae03cfa8 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-struct.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-struct.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{documentation} % \section{Public Commands} @@ -140,7 +140,7 @@ % must refer to an already existing, previously created structure. Such a structure % number can for example be have been stored with \cs{tag_get:n}, but one can also use % a label on the parent structure and then use -% \cs{ref_value:nn}|{tagpdfstruct-label}{tagstruct}| to retrieve it. +% \cs{property_ref:nn}|{tagpdfstruct-label}{tagstruct}| to retrieve it. % \end{function} % \begin{function}{title (struct-key),title-o (struct-key)} % This keys allows to set the dictionary entry @@ -247,7 +247,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-struct-code} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-struct-code} {2023-10-27} {0.98m} {part of tagpdf - code related to storing structure} %</header> % \end{macrocode} @@ -463,9 +463,27 @@ \@@_struct_output_prop_aux:nn {#1}{##1} } } +%</package> % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_struct_prop_gput:nnn} +% The structure props must be filled in various places. +% For this we use a common command which also takes care of the debug package: +% \begin{macrocode} +%<*package|debug> +%<package>\cs_new_protected:Npn \@@_struct_prop_gput:nnn #1 #2 #3 +%<debug>\cs_set_protected:Npn \@@_struct_prop_gput:nnn #1 #2 #3 + { + \@@_prop_gput:cnn + { g_@@_struct_#1_prop }{#2}{#3} +%<debug>\prop_gput:cnn { g_@@_struct_debug_#1_prop } {#2} {#3} + } +\cs_generate_variant:Nn \@@_struct_prop_gput:nnn {nne,nee,nno} +%</package|debug> +% \end{macrocode} +% \end{macro} + % \subsection{Initialization of the StructTreeRoot} % The first structure element, the StructTreeRoot is special, so % created manually. The underlying object is |@@/struct/0| which is currently @@ -475,60 +493,62 @@ % code. This avoid timing issues. % % \begin{macrocode} +%<*package> \tl_gset:Nn \g_@@_struct_stack_current_tl {0} % \end{macrocode} % \begin{macro}{\@@_pdf_name_e:n} % \begin{macrocode} \cs_new:Npn \@@_pdf_name_e:n #1{\pdf_name_from_unicode_e:n{#1}} +%</package> % \end{macrocode} % \end{macro} % % \begin{variable}{g_@@_struct_0_prop,g_@@_struct_kids_0_seq} % \begin{macrocode} +%<*package> \@@_prop_new:c { g_@@_struct_0_prop } \@@_new_output_prop_handler:n {0} \@@_seq_new:c { g_@@_struct_kids_0_seq } -\@@_prop_gput:cnx - { g_@@_struct_0_prop } +\@@_struct_prop_gput:nne + { 0 } { Type } { \pdf_name_from_unicode_e:n {StructTreeRoot} } -\@@_prop_gput:cnx - { g_@@_struct_0_prop } +\@@_struct_prop_gput:nne + { 0 } { S } { \pdf_name_from_unicode_e:n {StructTreeRoot} } -\@@_prop_gput:cnx - { g_@@_struct_0_prop } +\@@_struct_prop_gput:nne + { 0 } { rolemap } { {StructTreeRoot}{pdf} } -\@@_prop_gput:cnx - { g_@@_struct_0_prop } +\@@_struct_prop_gput:nne + { 0 } { 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. % \begin{macrocode} \pdf_version_compare:NnF < {2.0} { - \@@_prop_gput:cnx - { g_@@_struct_0_prop } + \@@_struct_prop_gput:nne + { 0 } { Namespaces } { \pdf_object_ref:n { @@/tree/namespaces } } - } + } +%</package> +% \end{macrocode} +% In debug mode we have to copy the root manually as it is already setup: +% \begin{macrocode} +%<debug>\prop_new:c { g_@@_struct_debug_0_prop } +%<debug>\seq_new:c { g_@@_struct_debug_kids_0_seq } +%<debug>\prop_gset_eq:cc { g_@@_struct_debug_0_prop }{ g_@@_struct_0_prop } +%<debug>\prop_gremove:cn { g_@@_struct_debug_0_prop }{Namespaces} % \end{macrocode} % \end{variable} % @@ -537,6 +557,7 @@ % simply calculated from the structure number. % \begin{macro}{\@@_struct_get_id:n} % \begin{macrocode} +%<*package> \cs_new:Npn \@@_struct_get_id:n #1 %#1=struct num { ( @@ -561,8 +582,8 @@ \cs_new_protected:Npn \@@_struct_set_tag_info:nnn #1 #2 #3 %#1 structure number, #2 tag, #3 NS { - \@@_prop_gput:cnx - { g_@@_struct_#1_prop } + \@@_struct_prop_gput:nne + { #1 } { S } { \pdf_name_from_unicode_e:n {#2} } % } @@ -570,14 +591,14 @@ { \cs_new_protected:Npn \@@_struct_set_tag_info:nnn #1 #2 #3 { - \@@_prop_gput:cnx - { g_@@_struct_#1_prop } + \@@_struct_prop_gput:nne + { #1 } { S } { \pdf_name_from_unicode_e:n {#2} } % \prop_get:NnNT \g_@@_role_NS_prop {#3} \l_@@_get_tmpc_tl { - \@@_prop_gput:cnx - { g_@@_struct_#1_prop } + \@@_struct_prop_gput:nne + { #1 } { NS } { \l_@@_get_tmpc_tl } % } @@ -599,8 +620,8 @@ { parentrole } \l_@@_get_tmpc_tl { - \tl_set:Nx #2{\exp_last_unbraced:NV\use_i:nn \l_@@_get_tmpc_tl} - \tl_set:Nx #3{\exp_last_unbraced:NV\use_ii:nn \l_@@_get_tmpc_tl} + \tl_set:Ne #2{\exp_last_unbraced:NV\use_i:nn \l_@@_get_tmpc_tl} + \tl_set:Ne #3{\exp_last_unbraced:NV\use_ii:nn \l_@@_get_tmpc_tl} } { \tl_clear:N#2 @@ -614,7 +635,7 @@ % Commands to store the kids. Kids in a structure can be a reference to a mc-chunk, % an object reference to another structure element, or a object reference to an % annotation (through an OBJR object). -% \begin{macro}{\@@_struct_kid_mc_gput_right:nn,\@@_struct_kid_mc_gput_right:nx} +% \begin{macro}{\@@_struct_kid_mc_gput_right:nn,\@@_struct_kid_mc_gput_right:ne} % The command to store an mc-chunk, this is a dictionary of type MCR. % It would be possible to write out the content directly as unnamed object % and to store only the object reference, but probably this would be slower, @@ -631,8 +652,8 @@ /Type \c_space_tl /MCR \c_space_tl /Pg \c_space_tl - \pdf_pageobject_ref:n { \@@_ref_value:enn{mcid-#1}{tagabspage}{1} } - /MCID \c_space_tl \@@_ref_value:enn{mcid-#1}{tagmcid}{1} + \pdf_pageobject_ref:n { \@@_property_ref:enn{mcid-#1}{tagabspage}{1} } + /MCID \c_space_tl \@@_property_ref:enn{mcid-#1}{tagmcid}{1} >> } %</package> @@ -658,12 +679,12 @@ \prop_item:Nn \g_@@_struct_cont_mc_prop {#2} } } -%<package>\cs_generate_variant:Nn \@@_struct_kid_mc_gput_right:nn {nx} +%<package>\cs_generate_variant:Nn \@@_struct_kid_mc_gput_right:nn {ne} % \end{macrocode} % \end{macro} % \begin{macro} % { -% \@@_struct_kid_struct_gput_right:nn,\@@_struct_kid_struct_gput_right:xx +% \@@_struct_kid_struct_gput_right:nn,\@@_struct_kid_struct_gput_right:ee % } % This commands adds a structure as kid. We only need to record the object % reference in the sequence. @@ -683,11 +704,11 @@ %<debug> } } -%<package>\cs_generate_variant:Nn \@@_struct_kid_struct_gput_right:nn {xx} +%<package>\cs_generate_variant:Nn \@@_struct_kid_struct_gput_right:nn {ee} % \end{macrocode} % \end{macro} % \begin{macro} -% {\@@_struct_kid_OBJR_gput_right:nnn,\@@_struct_kid_OBJR_gput_right:xxx} +% {\@@_struct_kid_OBJR_gput_right:nnn,\@@_struct_kid_OBJR_gput_right:eee} % At last the command to add an OBJR object. This has to write an object first. % The first argument is the number of the parent structure, the second the % (expanded) object reference of the annotation. The last argument is the page @@ -709,7 +730,7 @@ { \pdf_object_ref_last: } -%<debug> \seq_gput_right:cx +%<debug> \seq_gput_right:ce %<debug> { g_@@_struct_debug_kids_#1_seq } %<debug> { %<debug> OBJR~reference @@ -717,7 +738,7 @@ } %</package|debug> %<*package> -\cs_generate_variant:Nn\@@_struct_kid_OBJR_gput_right:nnn { xxx } +\cs_generate_variant:Nn\@@_struct_kid_OBJR_gput_right:nnn { eee } % \end{macrocode} % \end{macro} % \begin{macro} @@ -752,7 +773,7 @@ { \seq_clear:N \l_@@_tmpa_seq \seq_map_inline:cn { g_@@_struct_kids_#1_seq } - { \seq_put_right:Nx \l_@@_tmpa_seq { ##1 } } + { \seq_put_right:Ne \l_@@_tmpa_seq { ##1 } } %\seq_show:c { g_@@_struct_kids_#1_seq } %\seq_show:N \l_@@_tmpa_seq \seq_remove_all:Nn \l_@@_tmpa_seq {} @@ -779,7 +800,9 @@ \@@_struct_exchange_kid_command:c {g_@@_struct_kids_#1_seq} } - \@@_prop_gput:cnx { g_@@_struct_#1_prop } {K} + \@@_struct_prop_gput:nne + {#1} + {K} { \seq_item:cn { @@ -790,7 +813,9 @@ } % } { %many kids, use an array - \@@_prop_gput:cnx { g_@@_struct_#1_prop } {K} + \@@_struct_prop_gput:nne + {#1} + {K} { [ \seq_use:cn @@ -823,7 +848,7 @@ _entries_seq } { - \tl_put_right:Nx + \tl_put_right:Ne #2 { \prop_if_in:cnT @@ -872,11 +897,11 @@ % \begin{macrocode} \prop_get:cnNF { g_@@_struct_#1_prop } {P}\l_@@_tmpb_tl { - \prop_gput:cnx { g_@@_struct_#1_prop } {P}{\pdf_object_ref:n { @@/struct/0 }} - \prop_gput:cnx { g_@@_struct_#1_prop } {S}{/Artifact} + \prop_gput:cne { g_@@_struct_#1_prop } {P}{\pdf_object_ref:n { @@/struct/0 }} + \prop_gput:cne { g_@@_struct_#1_prop } {S}{/Artifact} \seq_if_empty:cF {g_@@_struct_kids_#1_seq} { - \msg_warning:nnxx + \msg_warning:nnee {tag} {struct-orphan} { #1 } @@ -885,8 +910,8 @@ } \@@_struct_fill_kid_key:n { #1 } \@@_struct_get_dict_content:nN { #1 } \l_@@_tmpa_tl - \exp_args:Nx - \pdf_object_write:nnx + \exp_args:Ne + \pdf_object_write:nne { @@/struct/#1 } {dict} { @@ -939,8 +964,8 @@ } %put the obj number of the annot in the kid entry, this also creates %the OBJR object - \ref_label:nn {__tag_objr_page_#2 }{ tagabspage } - \@@_struct_kid_OBJR_gput_right:xxx + \@@_property_record:nn {@tag@objr@page@#2 }{ tagabspage } + \@@_struct_kid_OBJR_gput_right:eee { \l_@@_struct_stack_parent_tmpa_tl } @@ -948,10 +973,10 @@ #1 % } { - \pdf_pageobject_ref:n { \@@_ref_value:nnn {__tag_objr_page_#2 }{ tagabspage }{1} } + \pdf_pageobject_ref:n { \@@_property_ref:nnn {@tag@objr@page@#2 }{ tagabspage }{1} } } % add the parent obj number to the parent tree: - \exp_args:Nnx + \exp_args:Nne \@@_parenttree_add_objr:nn { #2 @@ -1053,9 +1078,9 @@ { \int_compare_p:nNn {#1}<{\c@g_@@_struct_abs_int} } - { \tl_set:Nx \l_@@_struct_stack_parent_tmpa_tl { \int_eval:n {#1} } } + { \tl_set:Ne \l_@@_struct_stack_parent_tmpa_tl { \int_eval:n {#1} } } { - \msg_warning:nnxx { tag } { struct-unknown } + \msg_warning:nnee { tag } { struct-unknown } { \int_eval:n {#1} } { parent~key~ignored } } @@ -1064,8 +1089,8 @@ tag .code:n = % S property { \seq_set_split:Nne \l_@@_tmpa_seq { / } {#1/\prop_item:Ne\g__tag_role_tags_NS_prop{#1}} - \tl_gset:Nx \g_@@_struct_tag_tl { \seq_item:Nn\l_@@_tmpa_seq {1} } - \tl_gset:Nx \g_@@_struct_tag_NS_tl{ \seq_item:Nn\l_@@_tmpa_seq {2} } + \tl_gset:Ne \g_@@_struct_tag_tl { \seq_item:Nn\l_@@_tmpa_seq {1} } + \tl_gset:Ne \g_@@_struct_tag_NS_tl{ \seq_item:Nn\l_@@_tmpa_seq {2} } \@@_check_structure_tag:N \g_@@_struct_tag_tl }, title .code:n = % T property @@ -1075,8 +1100,8 @@ { #1 } { default } { utf16/hex } - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { T } { <\l_@@_tmpa_str> } }, @@ -1087,8 +1112,8 @@ { #1 } { default } { utf16/hex } - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { T } { <\l_@@_tmpa_str> } }, @@ -1101,8 +1126,8 @@ { #1 } { default } { utf16/hex } - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { Alt } { <\l_@@_tmpa_str> } } @@ -1117,16 +1142,16 @@ { #1 } { default } { utf16/hex } - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { ActualText } { <\l_@@_tmpa_str>} } }, lang .code:n = % Lang property { - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { Lang } { (#1) } }, @@ -1138,10 +1163,11 @@ \tl_clear:N\l_@@_tmpa_tl \clist_map_inline:on {#1} { - \tl_put_right:Nx \l_@@_tmpa_tl - {~\ref_value:nn{tagpdfstruct-##1}{tagstructobj} } + \tl_put_right:Ne \l_@@_tmpa_tl + {~\@@_property_ref:en{tagpdfstruct-##1}{tagstructobj} } } - \@@_struct_gput_data_ref:ee { \int_eval:n {\c@g_@@_struct_abs_int} } {\l_@@_tmpa_tl} + \@@_struct_gput_data_ref:ee + { \int_use:N \c@g_@@_struct_abs_int } {\l_@@_tmpa_tl} }, E .code:n = % E property { @@ -1150,8 +1176,8 @@ { #1 } { default } { utf16/hex } - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { E } { <\l_@@_tmpa_str> } }, @@ -1191,10 +1217,10 @@ {tag-AFfile\int_use:N\g_@@_struct_AFobj_int.#2} {@@/fileobj\int_use:N\g_@@_struct_AFobj_int} \@@_struct_add_AF:ee - { \int_eval:n {\c@g_@@_struct_abs_int} } + { \int_use:N \c@g_@@_struct_abs_int } { \pdf_object_ref:e {@@/fileobj\int_use:N\g_@@_struct_AFobj_int} } - \@@_prop_gput:cnx - { g_@@_struct_\int_use:N\c@g_@@_struct_abs_int _prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { AF } { [ @@ -1218,10 +1244,10 @@ {tag-AFfile\int_use:N\g_@@_struct_AFobj_int.#2} \l_@@_tmpa_tl \@@_struct_add_AF:ee - { \int_eval:n {\c@g_@@_struct_abs_int} } + { \int_use:N \c@g_@@_struct_abs_int } { \l_@@_tmpa_tl } - \@@_prop_gput:cnx - { g_@@_struct_\int_use:N\c@g_@@_struct_abs_int _prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { AF } { [ @@ -1243,14 +1269,14 @@ g_@@_struct_#1_AF_tl } { - \tl_gput_right:cx + \tl_gput_right:ce { g_@@_struct_#1_AF_tl } { \c_space_tl #2 } } { \tl_new:c { g_@@_struct_#1_AF_tl } - \tl_gset:cx + \tl_gset:ce { g_@@_struct_#1_AF_tl } { #2 } } @@ -1262,9 +1288,9 @@ { \pdf_object_if_exist:nTF {#1} { - \@@_struct_add_AF:ee { \int_eval:n {\c@g_@@_struct_abs_int} }{\pdf_object_ref:n {#1}} - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_add_AF:ee { \int_use:N \c@g_@@_struct_abs_int }{\pdf_object_ref:n {#1}} + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { AF } { [ @@ -1274,7 +1300,7 @@ } } { - + % message? } }, ,AFinline .code:n = @@ -1312,8 +1338,8 @@ \pdf_object_if_exist:nTF {#1} { \@@_struct_add_AF:ee { 0 }{\pdf_object_ref:n {#1}} - \@@_prop_gput:cnx - { g_@@_struct_0_prop } + \@@_struct_prop_gput:nne + { 0 } { AF } { [ @@ -1354,23 +1380,25 @@ \exp_args:Ne \pdf_object_new:n { @@/struct/\int_eval:n { \c@g_@@_struct_abs_int } } - \@@_prop_gput:cno - { g_@@_struct_\int_eval:n { \c@g_@@_struct_abs_int }_prop } - { Type } - { /StructElem } + \@@_struct_prop_gput:nnn + { \int_use:N \c@g_@@_struct_abs_int } + { Type } + { /StructElem } \tl_set:Nn \l_@@_struct_stack_parent_tmpa_tl {-1} \keys_set:nn { @@ / struct} { #1 } % \end{macrocode} % \begin{macrocode} \@@_struct_set_tag_info:eVV - { \int_eval:n {\c@g_@@_struct_abs_int} } + { \int_use:N \c@g_@@_struct_abs_int } \g_@@_struct_tag_tl \g_@@_struct_tag_NS_tl - \@@_check_structure_has_tag:n { \int_eval:n {\c@g_@@_struct_abs_int} } + \@@_check_structure_has_tag:n { \int_use:N \c@g_@@_struct_abs_int } \tl_if_empty:NF \l_@@_struct_key_label_tl { - \@@_ref_label:en{tagpdfstruct-\l_@@_struct_key_label_tl}{struct} + \@@_property_record:eV + {tagpdfstruct-\l_@@_struct_key_label_tl} + \c_@@_property_struct_clist } % \end{macrocode} % The structure number of the parent is either taken from the stack or @@ -1394,12 +1422,12 @@ % \end{macrocode} % to target role and role NS % \begin{macrocode} - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } - { rolemap } - { - {\l_@@_struct_roletag_tl}{\l_@@_struct_roletag_NS_tl} - } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } + { rolemap } + { + {\l_@@_struct_roletag_tl}{\l_@@_struct_roletag_NS_tl} + } % \end{macrocode} % we also store which role to use for parent/child test. If the role is % one of Part, Div, NonStruct we have to retrieve it from the parent. @@ -1417,8 +1445,8 @@ { parentrole } \l_@@_get_tmpc_tl { - \@@_prop_gput:cno - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nno + { \int_use:N \c@g_@@_struct_abs_int } { parentrole } { \l_@@_get_tmpc_tl @@ -1426,8 +1454,8 @@ } } { - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { parentrole } { {\l_@@_struct_roletag_tl}{\l_@@_struct_roletag_NS_tl} @@ -1435,7 +1463,7 @@ } % \end{macrocode} % \begin{macrocode} - \seq_gpush:Nx \g_@@_struct_tag_stack_seq + \seq_gpush:Ne \g_@@_struct_tag_stack_seq {{\g_@@_struct_tag_tl}{\l_@@_struct_roletag_tl}} \tl_gset:NV \g_@@_struct_stack_current_tl \c@g_@@_struct_abs_int %\seq_show:N \g_@@_struct_stack_seq @@ -1463,7 +1491,7 @@ { g_@@_struct_ \l_@@_struct_stack_parent_tmpa_tl _prop} {S} \l_@@_tmpa_tl - \msg_warning:nnxxx + \msg_warning:nneee { tag } {role-parent-child} { \l_@@_get_parent_tmpa_tl/\l_@@_get_parent_tmpb_tl } @@ -1478,15 +1506,15 @@ \cs_gset_eq:NN \g_@@_struct_tag_tl \l_@@_role_remap_tag_tl \cs_gset_eq:NN \g_@@_struct_tag_NS_tl \l_@@_role_remap_NS_tl \@@_struct_set_tag_info:eVV - { \int_eval:n {\c@g_@@_struct_abs_int} } + { \int_use:N \c@g_@@_struct_abs_int } \g_@@_struct_tag_tl \g_@@_struct_tag_NS_tl } % \end{macrocode} % Set the Parent. % \begin{macrocode} - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { P } { \pdf_object_ref:e { @@/struct/\l_@@_struct_stack_parent_tmpa_tl } @@ -1496,7 +1524,7 @@ %record this structure as kid: %\tl_show:N \g_@@_struct_stack_current_tl %\tl_show:N \l_@@_struct_stack_parent_tmpa_tl - \@@_struct_kid_struct_gput_right:xx + \@@_struct_kid_struct_gput_right:ee { \l_@@_struct_stack_parent_tmpa_tl } { \g_@@_struct_stack_current_tl } %\prop_show:c { g_@@_struct_\g_@@_struct_stack_current_tl _prop } @@ -1504,12 +1532,13 @@ } % \end{macrocode} % the debug mode stores in second prop and replaces value with more suitable ones. +% (If the structure is updated later this gets perhaps lost, but well ...) % 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> \prop_gput:cne %<debug> { g_@@_struct_debug_\int_eval:n {\c@g_@@_struct_abs_int}_prop } %<debug> { P } %<debug> { @@ -1520,7 +1549,7 @@ %<debug> \l_@@_get_parent_tmpa_tl %<debug> } %<debug> } -%<debug> \prop_gput:cnx +%<debug> \prop_gput:cne %<debug> { g_@@_struct_debug_\int_eval:n {\c@g_@@_struct_abs_int}_prop } %<debug> { NS } %<debug> { \g_@@_struct_tag_NS_tl } @@ -1557,11 +1586,11 @@ } \seq_get:NNT \g_@@_struct_tag_stack_seq \l_@@_tmpa_tl { - \tl_gset:Nx \g_@@_struct_tag_tl + \tl_gset:Ne \g_@@_struct_tag_tl { \exp_last_unbraced:NV\use_i:nn \l_@@_tmpa_tl } \prop_get:NVNT\g_@@_role_tags_NS_prop \g_@@_struct_tag_tl\l_@@_tmpa_tl { - \tl_gset:Nx \g_@@_struct_tag_NS_tl { \l_@@_tmpa_tl } + \tl_gset:Ne \g_@@_struct_tag_NS_tl { \l_@@_tmpa_tl } } } %<debug>\@@_debug_struct_end_insert: @@ -1588,16 +1617,16 @@ \@@_check_if_active_struct:T { \prop_if_exist:cTF - { g_@@_struct_\@@_ref_value:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop } % + { g_@@_struct_\@@_property_ref:enn{tagpdfstruct-#1}{tagstruct}{unknown}_prop } % { \@@_check_struct_used:n {#1} %add the label structure as kid to the current structure (can be the root) - \@@_struct_kid_struct_gput_right:xx + \@@_struct_kid_struct_gput_right:ee { \g_@@_struct_stack_current_tl } - { \@@_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0} } + { \@@_property_ref:enn{tagpdfstruct-#1}{tagstruct}{0} } %add the current structure to the labeled one as parents \@@_prop_gput:cnx - { g_@@_struct_\@@_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}_prop } + { g_@@_struct_\@@_property_ref:enn{tagpdfstruct-#1}{tagstruct}{0}_prop } { P } { \pdf_object_ref:e { @@/struct/\g_@@_struct_stack_current_tl } @@ -1605,27 +1634,20 @@ % \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> \prop_gput:cne +%<debug> { g_@@_struct_debug_\@@_property_ref: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: % \begin{macrocode} \@@_struct_get_parentrole:eNN - {\__tag_ref_value:enn{tagpdfstruct-#1}{tagstruct}{0}} + {\@@_property_ref:enn{tagpdfstruct-#1}{tagstruct}{0}} \l_@@_tmpa_tl \l_@@_tmpb_tl \@@_check_parent_child:VVVVN @@ -1642,7 +1664,7 @@ \cs_gset_eq:NN \g_@@_struct_tag_tl \l_@@_role_remap_tag_tl \cs_gset_eq:NN \g_@@_struct_tag_NS_tl \l_@@_role_remap_NS_tl \@@_struct_set_tag_info:eVV - { \int_eval:n {\c@g_@@_struct_abs_int} } + { \int_use:N \c@g_@@_struct_abs_int } \g_@@_struct_tag_tl \g_@@_struct_tag_NS_tl } @@ -1662,7 +1684,7 @@ % TODO: decide how it should be guarded. Probably by the struct-check. % \begin{macrocode} %<base>\cs_new_protected:Npn \tag_struct_use_num:n #1 {} -%<*package> +%<*package|debug> \cs_set_protected:Npn \tag_struct_use_num:n #1 %#1 is structure number { \@@_check_if_active_struct:T @@ -1678,16 +1700,23 @@ \msg_warning:nnn { tag } {struct-used-twice} {#1} } %add the label structure as kid to the current structure (can be the root) - \@@_struct_kid_struct_gput_right:xx + \@@_struct_kid_struct_gput_right:ee { \g_@@_struct_stack_current_tl } { #1 } %add the current structure to the labeled one as parents - \@@_prop_gput:cnx - { g_@@_struct_#1_prop } + \@@_struct_prop_gput:nne + { #1 } { P } { \pdf_object_ref:e { @@/struct/\g_@@_struct_stack_current_tl } } +%<debug> \prop_gput:cne +%<debug> { g_@@_struct_debug_#1_prop } +%<debug> { P } +%<debug> { +%<debug> parent~structure:~\g_@@_struct_stack_current_tl\c_space_tl=~ +%<debug> \g_@@_struct_tag_tl +%<debug> } % \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 @@ -1711,7 +1740,7 @@ \cs_gset_eq:NN \g_@@_struct_tag_tl \l_@@_role_remap_tag_tl \cs_gset_eq:NN \g_@@_struct_tag_NS_tl \l_@@_role_remap_NS_tl \@@_struct_set_tag_info:eVV - { \int_eval:n {\c@g_@@_struct_abs_int} } + { \int_use:N \c@g_@@_struct_abs_int } \g_@@_struct_tag_tl \g_@@_struct_tag_NS_tl } @@ -1721,7 +1750,7 @@ } } } -%</package> +%</package|debug> % \end{macrocode} % \end{macro} % \begin{macro}[EXP]{\tag_struct_object_ref:n} @@ -1741,9 +1770,13 @@ % % \begin{macro}{\tag_struct_gput:nnn} % This is a command that allows to update the data of a structure. -% The first argument is the -% number of the structure, the second a keyword referring to a function, -% the third the value. Currently the only keyword is \texttt{ref} +% This often can't done simply by replacing the value, as we have to +% preserve and extend existing content. We use therefore dedicated functions +% adjusted to the key in question. +% The first argument is the number of the structure, +% the second a keyword referring to a function, +% the third the value. Currently the only keyword is \texttt{ref} which updates +% the Ref key (an array) % \begin{macrocode} \cs_new_protected:Npn \tag_struct_gput:nnn #1 #2 #3 { @@ -1754,31 +1787,33 @@ {#1}{#3} } \cs_generate_variant:Nn \tag_struct_gput:nnn {ene,nne} +%</package> % \end{macrocode} % \end{macro} % % \begin{macro}{\@@_struct_gput_data_ref:nn} % \begin{macrocode} +%<*package> \cs_new_protected:Npn \@@_struct_gput_data_ref:nn #1 #2 - % #1 receiving struct num, #2 list of object ref + % #1 receiving struct num, #2 list of object ref { \prop_get:cnN { g_@@_struct_#1_prop } {Ref} \l_@@_get_tmpc_tl - \@@_prop_gput:cnx - { g_@@_struct_#1_prop } + \@@_struct_prop_gput:nne + { #1 } { Ref } { \quark_if_no_value:NF\l_@@_get_tmpc_tl { \l_@@_get_tmpc_tl\c_space_tl }#2 } } \cs_generate_variant:Nn \@@_struct_gput_data_ref:nn {ee} % \end{macrocode} % \end{macro} - % \begin{macro} % { % \tag_struct_insert_annot:nn, -% \tag_struct_insert_annot:xx +% \tag_struct_insert_annot:xx, +% \tag_struct_insert_annot:ee % } % \begin{macro}[EXP] % { @@ -1802,7 +1837,7 @@ } } -\cs_generate_variant:Nn \tag_struct_insert_annot:nn {xx} +\cs_generate_variant:Nn \tag_struct_insert_annot:nn {xx,ee} \cs_new:Npn \tag_struct_parent_int: {\int_use:c { c@g_@@_parenttree_obj_int }} %</package> @@ -1813,7 +1848,7 @@ % \section{Attributes and attribute classes} % \begin{macrocode} %<*header> -\ProvidesExplPackage {tagpdf-attr-code} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-attr-code} {2023-10-27} {0.98m} {part of tagpdf - code related to attributes and attribute classes} %</header> % \end{macrocode} @@ -1872,6 +1907,19 @@ } % \end{macrocode} % \end{macro} +% TEMP!!!! +% we temporarly use an internal function for the mapping. This can go +% at the next update +% \begin{macrocode} +\cs_if_free:NTF \seq_set_map_e:NNn + { + \cs_new_eq:NN \@@_seq_set_map_e:NNn \seq_set_map_x:NNn + } + { + \cs_new_eq:NN \@@_seq_set_map_e:NNn \seq_set_map_e:NNn + } +% \end{macrocode} +% % \begin{macro}{attribute-class (struct-key)} % attribute-class has to store the used attribute names so that % they can be added to the ClassMap later. @@ -1880,12 +1928,12 @@ { attribute-class .code:n = { - \clist_set:Nx \l_@@_tmpa_clist { #1 } + \clist_set:Ne \l_@@_tmpa_clist { #1 } \seq_set_from_clist:NN \l_@@_tmpb_seq \l_@@_tmpa_clist % \end{macrocode} % we convert the names into pdf names with slash % \begin{macrocode} - \seq_set_map_x:NNn \l_@@_tmpa_seq \l_@@_tmpb_seq + \@@_seq_set_map_e:NNn \l_@@_tmpa_seq \l_@@_tmpb_seq { \pdf_name_from_unicode_e:n {##1} } @@ -1897,7 +1945,7 @@ } \seq_gput_left:Nn\g_@@_attr_class_used_seq { ##1} } - \tl_set:Nx \l_@@_tmpa_tl + \tl_set:Ne \l_@@_tmpa_tl { \int_compare:nT { \seq_count:N \l_@@_tmpa_seq > 1 }{[} \seq_use:Nn \l_@@_tmpa_seq { \c_space_tl } @@ -1905,8 +1953,8 @@ } \int_compare:nT { \seq_count:N \l_@@_tmpa_seq > 0 } { - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { C } { \l_@@_tmpa_tl } %\prop_show:c { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } @@ -1921,18 +1969,18 @@ { attribute .code:n = % A property (attribute, value currently a dictionary) { - \clist_set:Nx \l_@@_tmpa_clist { #1 } + \clist_set:Ne \l_@@_tmpa_clist { #1 } \clist_if_empty:NF \l_@@_tmpa_clist { \seq_set_from_clist:NN \l_@@_tmpb_seq \l_@@_tmpa_clist % \end{macrocode} % we convert the names into pdf names with slash % \begin{macrocode} - \seq_set_map_x:NNn \l_@@_tmpa_seq \l_@@_tmpb_seq + \@@_seq_set_map_e:NNn \l_@@_tmpa_seq \l_@@_tmpb_seq { \pdf_name_from_unicode_e:n {##1} } - \tl_set:Nx \l_@@_attr_value_tl + \tl_set:Ne \l_@@_attr_value_tl { \int_compare:nT { \seq_count:N \l_@@_tmpa_seq > 1 }{[}%] } @@ -1944,27 +1992,27 @@ } \prop_if_in:NnF \g_@@_attr_objref_prop {##1} {%\prop_show:N \g_@@_attr_entries_prop - \pdf_object_unnamed_write:nx + \pdf_object_unnamed_write:ne { dict } { \prop_item:Nn\g_@@_attr_entries_prop {##1} } - \prop_gput:Nnx \g_@@_attr_objref_prop {##1} {\pdf_object_ref_last:} + \prop_gput:Nne \g_@@_attr_objref_prop {##1} {\pdf_object_ref_last:} } - \tl_put_right:Nx \l_@@_attr_value_tl + \tl_put_right:Ne \l_@@_attr_value_tl { \c_space_tl \prop_item:Nn \g_@@_attr_objref_prop {##1} } % \tl_show:N \l_@@_attr_value_tl } - \tl_put_right:Nx \l_@@_attr_value_tl + \tl_put_right:Ne \l_@@_attr_value_tl { %[ \int_compare:nT { \seq_count:N \l_@@_tmpa_seq > 1 }{]}% } % \tl_show:N \l_@@_attr_value_tl - \@@_prop_gput:cnx - { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop } + \@@_struct_prop_gput:nne + { \int_use:N \c@g_@@_struct_abs_int } { A } { \l_@@_attr_value_tl } } diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-tree.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-tree.dtx index c84ad8a8c5c..41298b2d692 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-tree.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-tree.dtx @@ -47,13 +47,13 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{implementation} % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-tree-code} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-tree-code} {2023-10-27} {0.98m} {part of tagpdf - code related to writing trees and dictionaries to the pdf} %</header> % \end{macrocode} @@ -136,7 +136,7 @@ \hook_gput_code:nnn{begindocument}{tagpdf} { \int_gset:Nn\g_@@_tree_id_pad_int - {\tl_count:e { \@@_ref_value_lastpage:nn{tagstruct}{1000}}+1} + {\tl_count:e { \@@_property_ref_lastpage:nn{tagstruct}{1000}}+1} } % \end{macrocode} @@ -273,7 +273,7 @@ { \int_gset:Nn \c@g_@@_parenttree_obj_int - { \@@_ref_value_lastpage:nn{abspage}{100} } + { \@@_property_ref_lastpage:nn{abspage}{100} } } % \end{macrocode} % \end{macro} @@ -313,18 +313,18 @@ \cs_new_protected:Npn \@@_tree_parenttree_rerun_msg: {} \cs_new_protected:Npn \@@_tree_fill_parenttree: { - \int_step_inline:nnnn{1}{1}{\@@_ref_value_lastpage:nn{abspage}{-1}} %not quite clear if labels are needed. See lua code + \int_step_inline:nnnn{1}{1}{\@@_property_ref_lastpage:nn{abspage}{-1}} %not quite clear if labels are needed. See lua code { %page ##1 \prop_clear:N \l_@@_tmpa_prop - \int_step_inline:nnnn{1}{1}{\@@_ref_value_lastpage:nn{tagmcabs}{-1}} + \int_step_inline:nnnn{1}{1}{\@@_property_ref_lastpage:nn{tagmcabs}{-1}} { %mcid####1 \int_compare:nT - {\@@_ref_value:enn{mcid-####1}{tagabspage}{-1}=##1} %mcid is on current page + {\@@_property_ref:enn{mcid-####1}{tagabspage}{-1}=##1} %mcid is on current page {% yes \prop_put:Nxx \l_@@_tmpa_prop - {\@@_ref_value:enn{mcid-####1}{tagmcid}{-1}} + {\@@_property_ref:enn{mcid-####1}{tagmcid}{-1}} {\prop_item:Nn \g_@@_mc_parenttree_prop {####1}} } } diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf-user.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf-user.dtx index 518a3418128..339d79e1db0 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf-user.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf-user.dtx @@ -46,7 +46,7 @@ % }^^A % } % -% \date{Version 0.98l, released 2023-08-30} +% \date{Version 0.98m, released 2023-10-27} % \maketitle % \begin{documentation} % \section{Setup commands} @@ -250,7 +250,7 @@ % \begin{macrocode} %<@@=tag> %<*header> -\ProvidesExplPackage {tagpdf-user} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-user} {2023-10-27} {0.98m} {tagpdf - user commands} %</header> % \end{macrocode} diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf.dtx b/Master/texmf-dist/source/latex/tagpdf/tagpdf.dtx index be94a640706..668d085169e 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf.dtx +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf.dtx @@ -25,9 +25,9 @@ % \fi % \begin{documentation} % \begin{function}{\ref_value:nnn} -% This is a temporary definition which will have to -% move to l3ref. It allows to locally set a default value if the label or the attribute -% doesn't exist. See issue \#4 in Accessible-xref. +% This is a temporary definition which will be removed once properties have been +% released. It allows to locally set a default value if the label or the attribute +% doesn't exist. % \begin{syntax} % \cs{ref_value:nnn}\Arg{label}\Arg{attribute}\Arg{fallback default} % \end{syntax} @@ -93,7 +93,7 @@ % \begin{macrocode} %<@@=tag> %<*package> -\ProvidesExplPackage {tagpdf} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf} {2023-10-27} {0.98m} { A package to experiment with pdf tagging } \bool_if:nF @@ -119,7 +119,7 @@ % \end{macrocode} %<*debug> % \begin{macrocode} -\ProvidesExplPackage {tagpdf-debug} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-debug} {2023-10-27} {0.98m} { debug code for tagpdf } \@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput} % \end{macrocode} @@ -142,7 +142,7 @@ % we define a base package with dummy functions % \begin{macrocode} %<*base> -\ProvidesExplPackage {tagpdf-base} {2023-08-30} {0.98l} +\ProvidesExplPackage {tagpdf-base} {2023-10-27} {0.98m} {part of tagpdf - provide base, no-op versions of the user commands } %</base> % \end{macrocode} @@ -200,52 +200,48 @@ % \begin{macro}{\@@_lastpagelabel:} % \begin{macrocode} %<*package> - \cs_new_protected:Npn \@@_lastpagelabel: - { - \legacy_if:nT { @filesw } - { - \exp_args:NNnx \exp_args:NNx\iow_now:Nn \@auxout - { - \token_to_str:N \newlabeldata - {@@_LastPage} - { - {abspage} { \int_use:N \g_shipout_readonly_int} - {tagmcabs}{ \int_use:N \c@g_@@_MCID_abs_int } - {tagstruct}{\int_use:N \c@g_@@_struct_abs_int } - } - } - } - } - +\cs_if_exist:NTF \property_new:nnnn + { + \cs_new_protected:Npn \@@_lastpagelabel: + { + \legacy_if:nT { @filesw } + { + \exp_args:NNnx \exp_args:NNx\iow_now:Nn \@auxout + { + \token_to_str:N \new@label@record + {@tag@LastPage} + { + {abspage} { \int_use:N \g_shipout_readonly_int} + {tagmcabs}{ \int_use:N \c@g_@@_MCID_abs_int } + {tagstruct}{\int_use:N \c@g_@@_struct_abs_int } + } + } + } + } + } + { + \cs_new_protected:Npn \@@_lastpagelabel: + { + \legacy_if:nT { @filesw } + { + \exp_args:NNnx \exp_args:NNx\iow_now:Nn \@auxout + { + \token_to_str:N \newlabeldata + {@tag@LastPage} + { + {abspage} { \int_use:N \g_shipout_readonly_int} + {tagmcabs}{ \int_use:N \c@g_@@_MCID_abs_int } + {tagstruct}{\int_use:N \c@g_@@_struct_abs_int } + } + } + } + } + } \AddToHook{enddocument/afterlastpage} {\@@_lastpagelabel:} % \end{macrocode} % \end{macro} % -% \begin{macro}{\ref_value:nnn} -% This allows to locally set a default value if the label or the attribute -% doesn't exist. -% \begin{macrocode} - \cs_if_exist:NF \ref_value:nnn - { - \cs_new:Npn \ref_value:nnn #1#2#3 - { - \exp_args:Nee - \__ref_value:nnn - { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } {#3} - } - \cs_new:Npn \__ref_value:nnn #1#2#3 - { - \tl_if_exist:cTF { g__ref_label_ #1 _ #2 _tl } - { \tl_use:c { g__ref_label_ #1 _ #2 _tl } } - { - #3 - } - } - } -% \end{macrocode} -% \end{macro} - % \section{Variables} % \begin{variable} % { @@ -282,10 +278,10 @@ % \end{variable} % Attribute lists for the label command. We have a list for % mc-related labels, and one for structures. -% \begin{macro}{\c_@@_refmc_clist,\c_@@_refstruct_clist} +% \begin{macro}{\c_@@_property_mc_clist,\c_@@_property_struct_clist} % \begin{macrocode} -\clist_const:Nn \c_@@_refmc_clist {tagabspage,tagmcabs,tagmcid} -\clist_const:Nn \c_@@_refstruct_clist {tagstruct,tagstructobj} +\clist_const:Nn \c_@@_property_mc_clist {tagabspage,tagmcabs,tagmcid} +\clist_const:Nn \c_@@_property_struct_clist {tagstruct,tagstructobj} % \end{macrocode} % \end{macro} % @@ -367,11 +363,110 @@ \cs_generate_variant:Nn \prop_gput:Nnn {Nxx,Nen} \cs_generate_variant:Nn \prop_put:Nnn {Nxx} \cs_generate_variant:Nn \prop_item:Nn {No,Ne} -\cs_generate_variant:Nn \ref_label:nn { nv } \cs_generate_variant:Nn \seq_set_split:Nnn{Nne} \cs_generate_variant:Nn \str_set_convert:Nnnn {Nonn, Noon, Nnon } \cs_generate_variant:Nn \clist_map_inline:nn {on} % \end{macrocode} +% +% \section{Label and Reference commands} +% To ease transition to properties we setup internal definition. They can be replaced +% by the property definitions once that is released. +% \begin{macro}{\@@_property_new:nnnn,\@@_property_gset:nnnn,\@@_property_ref:nnn} +% \begin{macrocode} +\cs_if_exist:NTF \property_new:nnnn + { +% \end{macrocode} +% At first a command to define new properties +% \begin{macrocode} + \cs_new_eq:NN \@@_property_new:nnnn \property_new:nnnn +% \end{macrocode} +% For the non-shipout code we need also the option to reset property +% \begin{macrocode} + \cs_new_eq:NN \@@_property_gset:nnnn \property_gset:nnnn +% \end{macrocode} +% The command to reference while giving a local default. +% \begin{macrocode} + \cs_new_eq:NN \@@_property_ref:nnn \property_ref:nnn + \cs_new_eq:NN \@@_property_ref:nn \property_ref:nn +% \end{macrocode} +% The command to record +% \begin{macrocode} + \cs_new_protected:Npn \@@_property_record:nn #1#2 + { + \@bsphack + \property_record:nn{#1}{#2} + \@esphack + } + } +% \end{macrocode} +% now the same with l3ref-tmp +% \begin{macrocode} + { + \cs_new_protected:Npn \@@_property_new:nnnn #1 #2 #3 #4 + { + \ref_attribute_gset:nnnn {#1}{#3}{#2}{#4} + } + \cs_new_protected:Npn \@@_property_gset:nnnn #1 #2 #3 #4 + { + \ref_attribute_gset:nnnn {#1}{#3}{#2}{#4} + } + \cs_new:Npn \@@_property_ref:nnn #1#2#3 + { + \exp_args:Nee + \__ref_value:nnn + { \tl_to_str:n {#1} } { \tl_to_str:n {#2} } {#3} + } + \cs_new:Npn \__ref_value:nnn #1#2#3 + { + \tl_if_exist:cTF { g__ref_label_ #1 _ #2 _tl } + { \tl_use:c { g__ref_label_ #1 _ #2 _tl } } + { + #3 + } + } + \cs_new_eq:NN \@@_property_ref:nn \ref_value:nn + \cs_new_protected:Npn \@@_property_record:nn #1#2 + { + \@bsphack + \ref_label:nn {#1}{#2} + \@esphack + } +% \end{macrocode} +% to provide problems when switching between main and dev format: +% \begin{macrocode} + \providecommand\new@label@record[2]{} + } +% \end{macrocode} +% And a few variants +% \begin{macrocode} +\cs_generate_variant:Nn \@@_property_ref:nnn {enn} +\cs_generate_variant:Nn \@@_property_ref:nn {en} +\cs_generate_variant:Nn \@@_property_record:nn {en,eV} +% \end{macrocode} +% The graphic code in latex-lab uses an internal tagpdf command, so until the next +% release we need to provide it +% \begin{macrocode} +\cs_new:Npn \@@_ref_value:enn #1#2#3 + { + \tl_if_exist:cTF { g__ref_label_ #1 _ #2 _tl } + { \tl_use:c { g__ref_label_ #1 _ #2 _tl } } + { + #3 + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_property_ref_lastpage:nn} +% A command to retrieve the lastpage label, this will be adapted when there +% is a proper, kernel lastpage label. +% \begin{macrocode} +\cs_new:Npn \@@_property_ref_lastpage:nn #1 #2 + { + \@@_property_ref:nnn {@tag@LastPage}{#1}{#2} + } +% \end{macrocode} +%\end{macro} % \section{Setup label attributes} % \begin{macro}{tagstruct,tagstructobj,tagabspage,tagmcabs,tagmcid} @@ -385,68 +480,29 @@ % With mc-chunks we store the absolute page number |tagabspage|, % the absolute id |tagmcabc|, and the id on the page |tagmcid|. % \begin{macrocode} -\ref_attribute_gset:nnnn { tagstruct } {0} { now } - { \int_use:N \c@g_@@_struct_abs_int } -\ref_attribute_gset:nnnn { tagstructobj } {} { now } +\@@_property_new:nnnn + { tagstruct } { now } + {0} { \int_use:N \c@g_@@_struct_abs_int } +\@@_property_new:nnnn { tagstructobj } { now } {} { \pdf_object_if_exist:eT {@@/struct/\int_use:N \c@g__tag_struct_abs_int} { \pdf_object_ref:e{@@/struct/\int_use:N \c@g_@@_struct_abs_int} } } -\ref_attribute_gset:nnnn { tagabspage } {0} { shipout } - { \int_use:N \g_shipout_readonly_int } -\ref_attribute_gset:nnnn { tagmcabs } {0} { now } - { \int_use:N \c@g_@@_MCID_abs_int } +\@@_property_new:nnnn + { tagabspage } { shipout } + {0} { \int_use:N \g_shipout_readonly_int } +\@@_property_new:nnnn { tagmcabs } { now } + {0} { \int_use:N \c@g_@@_MCID_abs_int } \flag_new:n { @@/mcid } -\ref_attribute_gset:nnnn {tagmcid } {0} { shipout } - { \flag_height:n { @@/mcid } } +\@@_property_new:nnnn {tagmcid } { shipout } + {0} { \flag_height:n { @@/mcid } } % \end{macrocode} % \end{macro} % -% \section{Label commands} -% \begin{macro}{\@@_ref_label:nn} -% A version of |\ref_label:nn| to set a label -% which takes a keyword |mc| or |struct| to -% call the relevant lists. -% TODO: check if |\@bsphack| and |\@esphack| make sense here. -% \begin{macrocode} -\cs_new_protected:Npn \@@_ref_label:nn #1 #2 %#1 label, #2 name of list mc or struct - { - \@bsphack - \ref_label:nv {#1}{c_@@_ref#2_clist} - \@esphack - } -\cs_generate_variant:Nn \@@_ref_label:nn {en} -% \end{macrocode} -% \end{macro} -% \begin{macro}{\@@_ref_value:nnn} -% A local version to retrieve the value. It is a direct wrapper, -% but to keep naming consistent \ldots. It uses the variant defined temporarly -% above. -% \begin{macrocode} -\cs_new:Npn \@@_ref_value:nnn #1 #2 #3 %#1 label, #2 attribute, #3 default - { - \ref_value:nnn {#1}{#2}{#3} - } -\cs_generate_variant:Nn \@@_ref_value:nnn {enn} -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_ref_value_lastpage:nn} -% A command to retrieve the lastpage label, this will be adapted when there -% is a proper, kernel lastpage label. -% \begin{macrocode} -\cs_new:Npn \@@_ref_value_lastpage:nn #1 #2 - { - \ref_value:nnn {@@_LastPage}{#1}{#2} - } -% \end{macrocode} -%\end{macro} - - %\section{Commands to fill seq and prop} % With most engines these are simply copies of the expl3 commands, diff --git a/Master/texmf-dist/source/latex/tagpdf/tagpdf.ins b/Master/texmf-dist/source/latex/tagpdf/tagpdf.ins index d17e709b25f..bdb9b2d1c22 100644 --- a/Master/texmf-dist/source/latex/tagpdf/tagpdf.ins +++ b/Master/texmf-dist/source/latex/tagpdf/tagpdf.ins @@ -2,7 +2,7 @@ File: tagpdf.ins -Copyright (C) 2019-2022 Ulrike Fischer +Copyright (C) 2019-2023 Ulrike Fischer It may be distributed and/or modified under the conditions of the LaTeX Project Public License (LPPL), either version 1.3c of this |