diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty | 166 |
1 files changed, 166 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty new file mode 100644 index 00000000000..a9dc7173783 --- /dev/null +++ b/Master/texmf-dist/tex/latex/tagpdf/tagpdf.sty @@ -0,0 +1,166 @@ +\RequirePackage{expl3}[2018/06/14] + +\ProvidesExplPackage {tagpdf} {2018/07/04} {0.1} + {A package to experiment with pdf tagging} + +% storing internal names to my name space: +\cs_set_eq:NN \__uftag_tex_pdffeedback:D \tex_pdffeedback:D +\cs_set_eq:NN \__uftag_tex_pdfextension:D \tex_pdfextension:D +\cs_set_eq:NN \__uftag_tex_immediate:D \tex_immediate:D +\cs_set_eq:NN \__uftag_tex_pdfvariable:D \tex_pdfvariable:D +\cs_set_eq:NN \__uftag_tex_global:D \tex_global:D +\cs_set_eq:NN \__uftag_tex_the:D \tex_the:D +\cs_set_eq:NN \__uftag_tex_pdfliteral:D \tex_pdfliteral:D +\cs_set_eq:NN \__uftag_tex_pdfcatalog:D \tex_pdfcatalog:D +\cs_set_eq:NN \__uftag_tex_pdflastobj:D \tex_pdflastobj:D +\cs_set_eq:NN \__uftag_tex_pdfobj:D \tex_pdfobj:D +\cs_set_eq:NN \__uftag_tex_pdfpageattr:D \tex_pdfpageattr:D +\cs_set_eq:NN \__uftag_tex_pdfpagesattr:D \tex_pdfpagesattr:D +\cs_set_eq:NN \__uftag_tex_pdfpageref:D \tex_pdfpageref:D +\cs_set_eq:NN \__uftag_tex_pdfcompresslevel:D \tex_pdfcompresslevel:D +\cs_set_eq:NN \__uftag_tex_pdfobjcompresslevel:D \tex_pdfobjcompresslevel:D + +%%% package options +\bool_new:N\g__uftag_mode_lua_bool + +\DeclareOption{luamode} { \sys_if_engine_luatex:T { \bool_gset_true:N \g__uftag_mode_lua_bool } } +\DeclareOption{genericmode}{ \bool_gset_false:N\g__uftag_mode_lua_bool } +\ExecuteOptions{luamode} +\ProcessOptions + +%%% some packages +\RequirePackage{xparse} +\RequirePackage{atbegshi} +\RequirePackage{zref-base,zref-lastpage} +\RequirePackage{etoolbox} +\RequirePackage{pdfescape} + +%%% absolute page numbers +\int_new:N \g__uftag_abspage_int +\int_gset:Nn \g__uftag_abspage_int { 0 } +\zref@newlist {tagpdf} +\zref@newprop*{tagabspage} [0] { \int_use:N \g__uftag_abspage_int } +\zref@addprop {tagpdf} {tagabspage} + + +%%% tagpdfsetup, +%%% TODO: checks need to be improved +\int_new:N \l__uftag_loglevel_int +\tl_new:N \l__uftag_tree_tabs_order_tl + +\keys_define:nn { tagpdf-setup } +{ + activate-mc .bool_gset:N = \g_uftag_active_mc_bool, + activate-tree .bool_gset:N = \g_uftag_active_tree_bool, + activate-struct .bool_gset:N = \g_uftag_active_struct_bool, + activate-all .meta:n ={activate-mc,activate-tree,activate-struct}, + check-tags .bool_set:N = \g__uftag_check_tags_bool, + check-tags .initial:n = true, + log .choice:, + log / none .code:n = {\int_set:Nn \l__uftag_loglevel_int { 0 }}, + log / v .code:n = {\int_set:Nn \l__uftag_loglevel_int { 1 }}, + log / vv .code:n = {\int_set:Nn \l__uftag_loglevel_int { 2 }}, + log / vvv .code:n = {\int_set:Nn \l__uftag_loglevel_int { 3 }}, + log / all .code:n = {\int_set:Nn \l__uftag_loglevel_int { 10 }}, + tagunmarked .bool_gset:N = \g__uftag_tagunmarked_bool, + tagunmarked .initial:n = true, + tabsorder .choice:, + tabsorder / row .code:n = {\tl_set:Nn \l__uftag_tree_tabs_order_tl {/Tabs/R}}, + tabsorder / column .code:n = {\tl_set:Nn \l__uftag_tree_tabs_order_tl {/Tabs/C}}, + tabsorder / structure .code:n = {\tl_set:Nn \l__uftag_tree_tabs_order_tl {/Tabs/S}}, + tabsorder / none .code:n = {\tl_set:Nn \l__uftag_tree_tabs_order_tl {}}, + compresslevel .choices:nn = {0,1,2,3,4,5,6,7,8,9} + { + \__uftag_pdfcompresslevel:n {#1} + \__uftag_pdfobjcompresslevel:n {#1} + }, + compresslevel .value_required:n = true, + uncompress .meta:n = { compresslevel = 0 }, +} + + +% commands to escape strings so that they can be safely used in pdf +% currently not much used. But will be needed later, when alt and actualtext are added. +% we probably need the equivalent \pdfescapestring, \pdfescapename \pdfescapehex +% the commands of pdfescape adds an additional layout to allow for babel shorthands +\cs_set_eq:NN \__uftag_pdf_escape_string:Nn \EdefEscapeString +\cs_set_eq:NN \__uftag_pdf_escape_name:Nn \EdefEscapeName +\cs_set_eq:NN \__uftag_pdf_escape_hex:Nn \EdefEscapeHex + +% a hook for later code and an absolute page counter +% should be executed before counters are resetted. +% is it used? +\cs_new:Nn \__uftag_finish_page_hook: { } + +\AtBeginShipout + { + \__uftag_finish_page_hook: + \__uftag_tree_write_pageattr: + \int_gincr:N \g__uftag_abspage_int + } + + +%testing the engines and loading the driver files +\sys_if_engine_xetex:T + { + \PackageError { tagpdf } { xelatex~is~not~supported~-~aborting } {} + \tex_endinput:D + } + +\sys_if_engine_luatex:T + { + \file_input:n {tagpdf-luatex.def} + } + +\sys_if_engine_pdftex:T + { + \file_input:n {tagpdf-pdftex.def} + } + +\sys_if_output_dvi:T + { + \PackageError { tagpdf } { dvi~output~is~not~supported~-~aborting }{} + \tex_endinput:D + } + +\cs_generate_variant:Nn \__uftag_prop_gput:Nnn { Nxn , Nxx, Nnx , cnn, cxn, cnx, cno} +\cs_generate_variant:Nn \__uftag_seq_gput_right:Nn { Nx , No, cn, cx } +\cs_generate_variant:Nn \__uftag_prop_new:N { c } +\cs_generate_variant:Nn \__uftag_seq_new:N { c } +\cs_generate_variant:Nn \__uftag_seq_show:N { c } +\cs_generate_variant:Nn \__uftag_prop_show:N { c } +\cs_generate_variant:Nn \prop_gput:Nnn {Nxx} +\cs_generate_variant:Nn \prop_put:Nnn {Nxx} +\cs_generate_variant:Nn \__uftag_pdfuseobjnum:Nn {Nx} +\cs_generate_variant:Nn \__uftag_pdfuseobjnum:nn {nx,xx} +\cs_generate_variant:Nn \__uftag_gset_pdfpageattr:n {x} + +% few temp tl +\tl_new:N \l__uftag_tmpa_tl +\tl_new:N \l__uftag_tmpb_tl +\tl_new:N \l__uftag_tmpc_tl +\tl_new:N \l__uftag_tmpd_tl +\tl_new:N \l__uftag_tmpe_tl + +% helper function to get the propcount. +% use as \prop_map_function:NN PROP { \__uftag_prop_count:nn -1 } +\cs_new:Nn\__uftag_prop_count:nn { + 1 } + +%% Loading the tagpdf sub packages +\RequirePackage { tagpdf-checks-code } +\RequirePackage { tagpdf-user } +\RequirePackage { tagpdf-tree-code } +\RequirePackage { tagpdf-roles-code } +% mc-code is split: +\RequirePackage { tagpdf-mc-code-shared } +\bool_if:NTF \g__uftag_mode_lua_bool + { + \RequirePackage {tagpdf-mc-code-lua} + } + { + \RequirePackage { tagpdf-mc-code-generic } % + } + +\RequirePackage { tagpdf-struct-code } + +\endinput |