blob: 55e9e0c3b8a1649c7319b9abe24925ca99a2fb73 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
\ProvidesExplFile {tagpdf-pdftex.def} {2019/07/02} {0.61}
{tagpdf~driver~for~pdftex}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% driver (pdflatex) commands
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% these should be in expl3!!!
\cs_new:Nn \__uftag_pdf_startlink:{ \pdfstartlink }
\cs_new:Nn \__uftag_pdf_endlink: { \pdfendlink }
\cs_new:Nn \__uftag_pdf_lastlink: { \pdflastlink }
\cs_new:Nn \__uftag_pdf_catalog: { \pdfcatalog }
% needed for \str_set_convert:Nnon
\tl_new:N \g__uftag_inputencoding_tl
\tl_gset:Nn \g__uftag_inputencoding_tl {utf8}
%literal
\cs_new:Nn \__uftag_pdfliteral_page:n { \__uftag_tex_pdfliteral:D page { #1} }
\cs_new:Nn \__uftag_pdfcatalog:n { \__uftag_tex_pdfcatalog:D { #1 } }
% reserve an object num and store the number
\cs_new:Nn \__uftag_pdfreserveobjnum:N % #1 = macro name to be populated with object number
{
\__uftag_tex_pdfobj:D reserveobjnum
\tl_set:Nx #1 { \int_use:N \__uftag_tex_pdflastobj:D }%
}
% add content to an object num stored in a macro
\cs_new:Nn \__uftag_pdfuseobjnum:Nn
{
% #1 = macro containing the object number
% #2 = object contents, as valid PDF
% should #2 be filtered through \pdfstringdef ???
\__uftag_tex_immediate:D \__uftag_tex_pdfobj:D useobjnum~#1~{#2}%
}
\cs_new:Nn \__uftag_pdfuseobjnum:nn
{
% #1 = a number the object number
% #2 = object contents, as valid PDF
% should #2 be filtered through \pdfstringdef ???
\__uftag_check_record_pdfobj_num:n {#1}
\__uftag_tex_immediate:D \__uftag_tex_pdfobj:D useobjnum~#1~{#2}%
}
% obj num of the dictionary for a page:
% the page count starts by 1
% pages can referenced before they are actually created
% no error if the page later doesn't exist
\cs_new:Nn \__uftag_store_pdfpageref:Nn
{
% #1 = macro name to be populated with current page object number
% #2 = number or counter identifying the required page
\tl_set:Nx #1 { \__uftag_tex_pdfpageref:D #2}%
}
% a global version of the command
\cs_new:Nn \__uftag_gstore_pdfpageref:Nn
{
\tl_gset:Nx #1 { \__uftag_tex_pdfpageref:D #2}%
}
\cs_new:Nn \__uftag_pdfobj:Nn
{
% #1 = macro name to refer to this object
% #2 = object contents, as valid PDF
% should #2 be filtered through \pdfstringdef ???
\__uftag_tex_immediate:D \__uftag_tex_pdfobj:D { #2 }
\tl_set:Nx #1 {\int_use:N \__uftag_tex_pdflastobj:D }%
}
% pdfpage**s**attr: for all pages
%% is global needed? Yes. Without it the setting is lost if issued in a group
%
\cs_new:Nn \__uftag_gset_pdfpagesattr:n
{
\__uftag_tex_global:D \__uftag_tex_pdfpagesattr:D { #1 }
}
\cs_new:Nn \__uftag_gadd_pdfpagesattr:n
{
\exp_args:No \__uftag_gset_pdfpagesattr:n { \__uftag_tex_the:D \__uftag_tex_pdfpagesattr:D #1 }
}
% pdfpageattr for one page
% I must avoid to overwrite other entries,
% And I must avoid to add more and more /StructParens
% do we need an immediate version??
\cs_new:Nn \__uftag_gset_pdfpageattr:n
{
\__uftag_tex_global:D \__uftag_tex_pdfpageattr:D { #1 }
}
\cs_new:Nn \__uftag_gadd_pdfpageattr:n
{
\exp_args:No \__uftag_gset_pdfpageattr:n { \__uftag_tex_the:D \__uftag_tex_pdfpageattr:D #1}
}
\cs_new:Nn \__uftag_get_pdfpageattr:N
{
\tl_set:No #1 { \__uftag_tex_the:D \__uftag_tex_pdfpageattr:D }
}
% These commands are only aliases for pdflatex but are defined differently with luatex
% to get also lua tables.
\cs_set_eq:NN \__uftag_prop_new:N \prop_new:N
\cs_set_eq:NN \__uftag_seq_new:N \seq_new:N
\cs_set_eq:NN \__uftag_prop_gput:Nnn \prop_gput:Nnn
\cs_set_eq:NN \__uftag_seq_gput_right:Nn \seq_gput_right:Nn
\cs_set_eq:NN \__uftag_seq_item:cn \seq_item:cn
\cs_set_eq:NN \__uftag_prop_item:cn \prop_item:cn
\cs_set_eq:NN \__uftag_seq_show:N \seq_show:N
\cs_set_eq:NN \__uftag_prop_show:N \prop_show:N
\endinput
|