diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty | 219 |
1 files changed, 87 insertions, 132 deletions
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty index a8d3eb3762b..9b3872e9a84 100644 --- a/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty +++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf-mc-code-generic.sty @@ -4,9 +4,9 @@ %% %% The original source files were: %% -%% tagpdf-mc.dtx (with options: `generic') +%% tagpdf-mc-generic.dtx (with options: `generic') %% -%% Copyright (C) 2019 Ulrike Fischer +%% Copyright (C) 2019-2021 Ulrike Fischer %% %% It may be distributed and/or modified under the conditions of %% the LaTeX Project Public License (LPPL), either version 1.3c of @@ -19,13 +19,16 @@ %% and all files in that bundle must be distributed together. %% %% File: tagpdf-mc.dtx -\ProvidesExplPackage {tagpdf-mc-code-generic} {2021-06-14} {0.82} +\ProvidesExplPackage {tagpdf-mc-code-generic} {2021-06-29} {0.9} {part of tagpdf - code related to marking chunks - generic mode} - +\bool_new:N \g__tag_in_mc_bool \__tag_prop_new:N \g__tag_MCID_byabspage_prop -\bool_new:N \g__tag_in_mc_bool +\tl_new:N \l__tag_mc_ref_abspage_tl + +\tl_new:N \l__tag_mc_tmpa_tl + \prg_new_conditional:Nnn \__tag_mc_if_in: {p,T,F,TF} { @@ -35,29 +38,11 @@ } \prg_new_eq_conditional:NNn \tag_mc_if_in: \__tag_mc_if_in: {p,T,F,TF} - -\cs_new_protected:Nn \__tag_mc_bmc:n - { - \pdf_bmc:n {#1} - } - -\cs_new_protected:Nn \__tag_mc_emc: - { - \pdf_emc: - %\__tag_pdfliteral_page:n - } - -\cs_new_protected:Nn \__tag_mc_bdc:nn - { - \pdf_bdc:nn { #1 } { #2 } - } - +\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} - -\tl_new:N \l__tag_mc_ref_abspage_tl %will store the abspage value of label -\tl_new:N \l__tag_mc_tmp_tl - -\cs_new:Nn \__tag_mc_bdc_mcid:nn +\cs_new_protected:Npn \__tag_mc_bdc_mcid:nn #1 #2 { \int_gincr:N \c@g__tag_MCID_abs_int \tl_set:Nx \l__tag_mc_ref_abspage_tl @@ -74,14 +59,14 @@ { \l__tag_mc_ref_abspage_tl } - \l__tag_mc_tmp_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_tmp_tl } + \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_tmp_tl +1} } + { \int_eval:n {\l__tag_mc_tmpa_tl +1} } } { %key not present, set MCID to 0 and insert 1 @@ -96,38 +81,96 @@ mcid-\int_use:N \c@g__tag_MCID_abs_int } { mc } - %\exp_args:Nnx \__tag_mc_bdc:nx {#1} { /MCID~\int_eval:n { \g__tag_MCID_tmp_bypage_int }~ \exp_not:n { #2 } } } - -\cs_new:Nn \__tag_mc_bdc_mcid:n +\cs_new_protected:Npn \__tag_mc_bdc_mcid:n #1 { \__tag_mc_bdc_mcid:nn {#1} {} } -\cs_new:Nn \__tag_mc_bmc_artifact: +\cs_new_protected:Npn \__tag_mc_handle_mcid:nn #1 #2 %#1 tag, #2 properties { - \__tag_mc_bmc:n {Artifact} + \__tag_mc_bdc_mcid:nn {#1} {#2} } -\cs_new:Nn \__tag_mc_bmc_artifact:n +\cs_generate_variant:Nn \__tag_mc_handle_mcid:nn {VV} + +\cs_new_protected:Npn \__tag_mc_handle_stash:n #1 %1 mcidnum { - \__tag_mc_bdc:nn {Artifact}{/Type/#1} + \__tag_check_mc_used:n {#1} + \__tag_struct_kid_mc_gput_right:nn + { \g__tag_struct_stack_current_tl } + {#1} + \prop_gput:Nxx \g__tag_mc_parenttree_prop + {#1} + { \g__tag_struct_stack_current_tl } } +\cs_generate_variant:Nn \__tag_mc_handle_stash:n { x } +\cs_new_protected:Npn \__tag_mc_bmc_artifact: + { + \__tag_mc_bmc:n {Artifact} + } +\cs_new_protected:Npn \__tag_mc_bmc_artifact:n #1 + { + \__tag_mc_bdc:nn {Artifact}{/Type/#1} + } +\cs_new_protected:Npn \__tag_mc_handle_artifact:N #1 + % #1 is a var containing the artifact type + { + \tl_if_empty:NTF #1 + { \__tag_mc_bmc_artifact: } + { \exp_args:NV\__tag_mc_bmc_artifact:n #1 } + } - -\tl_new:N \l__tag_mc_key_tag_tl -\tl_new:N \g__tag_mc_key_tag_tl %for "outside" queries -\tl_new:N \l__tag_mc_key_properties_tl +\cs_new:Nn \__tag_get_data_mc_tag: { \g__tag_mc_key_tag_tl } +\cs_new_protected:Npn \tag_mc_begin:n #1 %#1 keyval + { + \__tag_check_if_active_mc:T + { + \group_begin: %hm + \__tag_check_mc_if_nested: + \bool_gset_true:N \g__tag_in_mc_bool + \keys_set:nn { __tag / mc } {#1} + \bool_if:NTF \l__tag_mc_artifact_bool + { %handle artifact + \__tag_mc_handle_artifact:N \l__tag_mc_artifact_type_tl + } + { %handle mcid type + \__tag_check_mc_tag:N \l__tag_mc_key_tag_tl + \__tag_mc_handle_mcid:VV + \l__tag_mc_key_tag_tl + \l__tag_mc_key_properties_tl + \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 + } + \bool_if:NF \l__tag_mc_key_stash_bool + { + \__tag_mc_handle_stash:x { \int_use:N \c@g__tag_MCID_abs_int } + } + } + \group_end: + } + } +\cs_new_protected:Nn \tag_mc_end: + { + \__tag_check_if_active_mc:T + { + \__tag_check_mc_if_open: + \bool_gset_false:N \g__tag_in_mc_bool + \tl_gset:Nn \g__tag_mc_key_tag_tl { } + \__tag_mc_emc: + } + } \keys_define:nn { __tag / mc } { - tag .code:n = % the name (H,P,Spa) etc + tag .code:n = % the name (H,P,Span) etc { - %%????????? \pdfescapename?? \tl_set:Nx \l__tag_mc_key_tag_tl { #1 } \tl_gset:Nx \g__tag_mc_key_tag_tl { #1 } }, @@ -181,98 +224,10 @@ \exp_args:Nnx \keys_set:nn { __tag / mc } - { artifact-bool, artifact-type=#1 } + { __artifact-bool, __artifact-type=#1 } }, artifact .default:n = {notype} } - -\cs_new:Nn \__tag_mc_handle_artifact:N %#1 contains the artifact type - { - \tl_if_empty:NTF #1 - { \__tag_mc_bmc_artifact: } - { \exp_args:No\__tag_mc_bmc_artifact:n {#1} } - } - -\cs_new:Nn \__tag_mc_handle_mcid:nn %#1 tag, #2 properties - { - \__tag_mc_bdc_mcid:nn {#1} {#2} - } - -\cs_generate_variant:Nn \__tag_mc_handle_mcid:nn {VV} - -\cs_new:Nn \__tag_mc_handle_stash:n %1 mcidnum - { - \__tag_check_mc_used:n {#1} - \__tag_struct_kid_mc_gput_right:nn - { \g__tag_struct_stack_current_tl } - {#1} - \prop_gput:Nxx \g__tag_mc_parenttree_prop - {#1} - { \g__tag_struct_stack_current_tl } - } - -\cs_new_protected:Nn \tag_mc_begin:n - { - \group_begin: %hm - \__tag_check_mc_if_nested: - \bool_gset_true:N \g__tag_in_mc_bool - \keys_set:nn { __tag / mc } {#1} - \bool_if:NTF \l__tag_mc_artifact_bool - { %handle artifact - \__tag_mc_handle_artifact:N \l__tag_mc_artifact_type_tl - } - { %handle mcid type - \__tag_check_mc_tag:N \l__tag_mc_key_tag_tl - \__tag_mc_handle_mcid:VV - \l__tag_mc_key_tag_tl - \l__tag_mc_key_properties_tl - \tl_if_empty:NF {\l__tag_mc_key_label_tl} - { - \__tag_mc_handle_mc_label:n { \l__tag_mc_key_label_tl } - } - \bool_if:NF \l__tag_mc_key_stash_bool - { - \__tag_mc_handle_stash:n { \int_use:N \c@g__tag_MCID_abs_int } - } - } - \group_end: - } - -\cs_new_protected:Nn \tag_mc_end: - { - \__tag_check_mc_if_open: - \bool_gset_false:N \g__tag_in_mc_bool - \tl_gset:Nn \g__tag_mc_key_tag_tl { } - \__tag_mc_emc: - } - -\cs_new_protected:Nn \tag_mc_use:n %#1: label name - { - \tl_set:Nx \l_tmpa_tl { \__tag_ref_value:enn{tagpdf-#1}{tagmcabs}{} } - \tl_if_empty:NTF\l_tmpa_tl - { - \msg_warning:nnn {tag} {mc-label-unknown} {#1} - } - { - \prop_gput:Nxx - \g__tag_mc_parenttree_prop - { - \__tag_ref_value:enn {tagpdf-#1} {tagmcabs} {} - } - { - \g__tag_struct_stack_current_tl - } - \__tag_struct_kid_mc_gput_right:nn - { - \g__tag_struct_stack_current_tl - } - { - \__tag_ref_value:enn {tagpdf-#1} {tagmcabs} {} - } - } - } - -\cs_new:Nn \__tag_get_data_mc_tag: { \g__tag_mc_key_tag_tl } %% %% %% End of file `tagpdf-mc-code-generic.sty'. |