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
|
\ProvidesExplPackage {tagpdf-roles-code} {2019/03/20} {0.60}
{part of tagpdf - code related to roles and structure names}
\__uftag_seq_new:N \g__uftag_role_tags_seq %to get names from numbers
\__uftag_prop_new:N \g__uftag_role_tags_prop %to get numbers from names
%The list of standard adobe tags.
\clist_const:Nn \c__uftag_role_sttags_clist
{%possible root elements
Document, %A complete document. This is the root element of any structure tree containing
%multiple parts or multiple articles.
Part, %A large-scale division of a document.
Art, %A relatively self-contained body of text constituting a single narrative or exposition
%subelements
Sect, %A container for grouping related content elements.
Div, %A generic block-level element or group of elements
BlockQuote, %A portion of text consisting of one or more paragraphs attributed to someone other
%than the author of the surrounding text.
Caption, %A brief portion of text describing a table or figure.
TOC, %A list made up of table of contents item entries (structure tag TOCI; see below)
%and/or other nested table of contents entries
TOCI, %An individual member of a table of contents. This entry's children can be any of
%the following structure tags:
%Lbl,Reference,NonStruct,P,TOC
Index,
NonStruct, %probably not needed
H,
H1,
H2,
H3,
H4,
H5,
H6,
P,
L, %list
LI, %list item (around label and list item body)
Lbl, %list label
LBody, %list item body
Table,
TR, %table row
TH, %table header cell
TD, %table data cell
THead, %table header (n rows)
TBody, %table rows
TFoot, %table footer
Span, %generic inline marker
Quote, %inline quote
Note, % footnote, endnote. Lbl can be child
Reference, % A citation to content elsewhere in the document.
BibEntry, %bibentry
Code, %
Link, %
Annot,
Figure,
Formula,
Form,
Artifact
}
% get tag name from number: \seq_item:Nn \g__uftag_role_tags_seq { n }
%\seq_gset_from_clist:NN \g__uftag_role_tags_seq \c__uftag_role_tags_clist
\clist_map_inline:Nn \c__uftag_role_sttags_clist
{
\__uftag_seq_gput_right:Nn \g__uftag_role_tags_seq { #1 }
}
% get tag number from name: \prop_item:Nn \g__uftag_role_tags_prop { name }
\int_step_inline:nnnn { 1 }{ 1 }{ \seq_count:N \g__uftag_role_tags_seq }
{
\__uftag_prop_gput:Nxn \g__uftag_role_tags_prop
{
\seq_item:Nn \g__uftag_role_tags_seq { #1 }
}
{ #1 }
}
\cs_new:Nn \__uftag_role_get_tag_from_index:nn
{
\__uftag_seq_item:cn { #1_seq } { #2 }
}
\cs_new:Nn \__uftag_role_get_index_from_tag:nn
{
\__uftag_prop_item:cn { #1_prop } { #2 }
}
% new tags and the rolemap
\__uftag_prop_new:N \g__uftag_role_rolemap_prop
\cs_new:Nn \__uftag_role_add_tag:nn %new name, reference to old
{
\__uftag_seq_gput_right:Nn \g__uftag_role_tags_seq { #1 }
\__uftag_prop_gput:Nnx \g__uftag_role_tags_prop { #1 }
{
\seq_count:N \g__uftag_role_tags_seq
}
\__uftag_check_add_tag_role:nn {#1}{#2}
\tl_if_empty:nF { #2 }
{
\__uftag_prop_gput:Nnn \g__uftag_role_rolemap_prop
{ #1 } { #2 }
}
}
\cs_generate_variant:Nn \__uftag_role_add_tag:nn {xx}
\keys_define:nn { uftag / setup }
{
add-new-tag .code:n =
{
\seq_set_split:Nnn \l_tmpa_seq { / } {#1/}
\__uftag_role_add_tag:xx
{
\seq_item:Nn \l_tmpa_seq {1}
}
{
\seq_item:Nn \l_tmpa_seq {2}
}
}
}
\endinput
|