%% %% This is file `tagpdf-debug.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% tagpdf.dtx (with options: `debug') %% tagpdf-checks.dtx (with options: `debug') %% tagpdf-user.dtx (with options: `debug') %% tagpdf-mc-shared.dtx (with options: `debug') %% tagpdf-tree.dtx (with options: `debug') %% tagpdf-roles.dtx (with options: `debug') %% tagpdf-struct.dtx (with options: `debug') %% tagpdf-space.dtx (with options: `debug') %% %% Copyright (C) 2019-2022 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 license or (at your option) any later version. The latest %% version of this license is in the file: %% %% https://www.latex-project.org/lppl.txt %% %% This file is part of the "tagpdf bundle" (The Work in LPPL) %% and all files in that bundle must be distributed together. %% %% File: tagpdf.dtx \ProvidesExplPackage {tagpdf-debug} {2022-01-13} {0.93} { debug code for tagpdf } \@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput} \end{macrocode} \prop_gput:Nnn \g_msg_module_type_prop { tag / debug} {} \prop_gput:Nnn \g_msg_module_name_prop { tag / debug }{tagpdf~DEBUG} \bool_if:NTF \g__tag_mode_lua_bool { \RequirePackage {tagpdf-debug-lua} } { \RequirePackage {tagpdf-debug-generic} % } %% File: tagpdf-checks.dtx \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:] } \cs_new_protected:Npn \__tag_debug_mc_begin_insert:n #1 { \int_compare:nNnT { \l__tag_loglevel_int } > {0} { \msg_note:nnnn { tag / debug } {mc-begin} {inserted} { #1 } } } \cs_new_protected:Npn \__tag_debug_mc_begin_ignore:n #1 { \int_compare:nNnT { \l__tag_loglevel_int } > {0} { \msg_note:nnnn { tag / debug } {mc-begin } {ignored} { #1 } } } \cs_new_protected:Npn \__tag_debug_mc_end_insert: { \int_compare:nNnT { \l__tag_loglevel_int } > {0} { \msg_note:nnn { tag / debug } {mc-end} {inserted} } } \cs_new_protected:Npn \__tag_debug_mc_end_ignore: { \int_compare:nNnT { \l__tag_loglevel_int } > {0} { \msg_note:nnn { tag / debug } {mc-end } {ignored} } } \msg_new:nnn { tag / debug } {struct-begin} { Struct~begin~#1~with~options:~\tl_to_str:n{#2}~[\msg_line_context:] } \msg_new:nnn { tag / debug } {struct-end} { Struct~end~#1~[\msg_line_context:] } \cs_new_protected:Npn \__tag_debug_struct_begin_insert:n #1 { \int_compare:nNnT { \l__tag_loglevel_int } > {0} { \msg_note:nnnn { tag / debug } {struct-begin} {inserted} { #1 } \seq_log:N \g__tag_struct_tag_stack_seq } } \cs_new_protected:Npn \__tag_debug_struct_begin_ignore:n #1 { \int_compare:nNnT { \l__tag_loglevel_int } > {0} { \msg_note:nnnn { tag / debug } {struct-begin } {ignored} { #1 } } } \cs_new_protected:Npn \__tag_debug_struct_end_insert: { \int_compare:nNnT { \l__tag_loglevel_int } > {0} { \msg_note:nnn { tag / debug } {struct-end} {inserted} \seq_log:N \g__tag_struct_tag_stack_seq } } \cs_new_protected:Npn \__tag_debug_struct_end_ignore: { \int_compare:nNnT { \l__tag_loglevel_int } > {0} { \msg_note:nnn { tag / debug } {struct-end } {ignored} } } %% File: tagpdf-user.dtx %% File: tagpdf-mc.dtx %% File: tagpdf-tree.dtx %% File: tagpdf-roles.dtx %% File: tagpdf-struct.dtx \keys_define:nn { __tag / setup } { root-AF .code:n = { \pdf_object_if_exist:nTF {#1} { \__tag_struct_add_AF:en { 0 }{#1} \__tag_prop_gput:cnx { g__tag_struct_0_prop } { AF } { [ \tl_use:c { g__tag_struct_0_AF_tl } ] } } { } }, } \cs_set_protected:Npn \tag_struct_begin:n #1 %#1 key-val { \__tag_check_if_active_struct:TF { \group_begin: \int_gincr:N \c@g__tag_struct_abs_int \__tag_prop_new:c { g__tag_struct_\int_eval:n { \c@g__tag_struct_abs_int }_prop } \__tag_new_output_prop_handler:n {\int_eval:n { \c@g__tag_struct_abs_int }} \__tag_seq_new:c { g__tag_struct_kids_\int_eval:n { \c@g__tag_struct_abs_int }_seq} \exp_args:Ne \pdf_object_new:nn { __tag/struct/\int_eval:n { \c@g__tag_struct_abs_int } } { dict } \__tag_prop_gput:cno { g__tag_struct_\int_eval:n { \c@g__tag_struct_abs_int }_prop } { Type } { /StructElem } \keys_set:nn { __tag / struct} { #1 } \__tag_check_structure_has_tag:n { \int_eval:n {\c@g__tag_struct_abs_int} } \tl_if_empty:NF \l__tag_struct_key_label_tl { \__tag_ref_label:en{tagpdfstruct-\l__tag_struct_key_label_tl}{struct} } %get the potential parent from the stack: \seq_get:NNF \g__tag_struct_stack_seq \l__tag_struct_stack_parent_tmpa_tl { \msg_error:nn { tag } { struct-faulty-nesting } } \seq_gpush:NV \g__tag_struct_stack_seq \c@g__tag_struct_abs_int \seq_gpush:NV \g__tag_struct_tag_stack_seq \g__tag_struct_tag_tl \tl_gset:NV \g__tag_struct_stack_current_tl \c@g__tag_struct_abs_int %\seq_show:N \g__tag_struct_stack_seq \bool_if:NF \l__tag_struct_elem_stash_bool {%set the parent \__tag_prop_gput:cnx { g__tag_struct_\int_eval:n {\c@g__tag_struct_abs_int}_prop } { P } { \pdf_object_ref:e { __tag/struct/\l__tag_struct_stack_parent_tmpa_tl } } %record this structure as kid: %\tl_show:N \g__tag_struct_stack_current_tl %\tl_show:N \l__tag_struct_stack_parent_tmpa_tl \__tag_struct_kid_struct_gput_right:xx { \l__tag_struct_stack_parent_tmpa_tl } { \g__tag_struct_stack_current_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} } %\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 } \group_end: } { \__tag_debug_struct_begin_ignore:n { #1 }} } \cs_set_protected:Nn \tag_struct_end: { %take the current structure num from the stack: %the objects are written later, lua mode hasn't all needed info yet %\seq_show:N \g__tag_struct_stack_seq \__tag_check_if_active_struct:TF { \seq_gpop:NN \g__tag_struct_tag_stack_seq \l__tag_tmpa_tl \seq_gpop:NNTF \g__tag_struct_stack_seq \l__tag_tmpa_tl { \__tag_check_info_closing_struct:o { \g__tag_struct_stack_current_tl } } { \__tag_check_no_open_struct: } % get the previous one, shouldn't be empty as the root should be there \seq_get:NNTF \g__tag_struct_stack_seq \l__tag_tmpa_tl { \tl_gset:NV \g__tag_struct_stack_current_tl \l__tag_tmpa_tl } { \__tag_check_no_open_struct: } \seq_get:NNT \g__tag_struct_tag_stack_seq \l__tag_tmpa_tl { \tl_gset:NV \g__tag_struct_tag_tl \l__tag_tmpa_tl } \__tag_debug_struct_end_insert: } {\__tag_debug_struct_end_ignore:} } %% File: tagpdf-space.dtx %% %% %% End of file `tagpdf-debug.sty'.