1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus
{
loading
}{
ConTeXt
Attribute
Macros
Viewerlayers
}
15
16
17
18
19
20
21
22
23\unprotect
24
25\registerctxluafile
{
attr
lay
}{}
26
27
28
29\installcorenamespace
{
viewerlayer
}
30
31\installcommandhandler
\??viewerlayer
{
viewerlayer
}
\??viewerlayer
32
33\setupviewerlayer
34 [
\c!state
=
\v!start
,
35 \c!title
=
,
36 \c!export
=
\v!yes
,
37 \c!printable
=
\v!yes
,
38 \c!scope
=
\v!local
,
39 \c!method
=
\v!none
]
40
41\appendtoks
42 \clf_defineviewerlayer
43 tag
{
\currentviewerlayer
}
44 title
{
\viewerlayerparameter
\c!title
}
45 visible
{
\viewerlayerparameter
\c!state
}
46 editable
{
\v!yes
}
47 export
{
\viewerlayerparameter
\c!export
}
48 printable
{
\viewerlayerparameter
\c!printable
}
49 scope
{
\viewerlayerparameter
\c!scope
}
50 \relax
51 \doif
{
\viewerlayerparameter
\c!method
}
\v!command
52 {
\setuxvalue
{
\e!start
#
1
}{
\startviewerlayer
[
\currentviewerlayer
]
}
53 \setuxvalue
{
\e!stop
#
1
}{
\stopviewerlayer
}}
54\to
\everydefineviewerlayer
55
56\unexpanded
\def
\startviewerlayer
[#
1
]
{
\clf_startviewerlayer
{
#
1
}}
57\unexpanded
\def
\stopviewerlayer
{
\clf_stopviewerlayer
}
58\unexpanded
\def
\viewerlayer
[#
1
]
{
\groupedcommand
59 {
\clf_startviewerlayer
{
#
1
}}
60 {
\clf_stopviewerlayer
}}
61
62
63
64\newtoks
\currentviewerlayertoks
65
66\def
\currentviewerlayer
{
\the
\currentviewerlayertoks
}
67
68\appendtoks
69 \let
\currentviewerlayer
\empty
70\to
\everybeforepagebody
71
72
73
74\installcorenamespace
{
layoutcomponentattribute
}
75
76\def
\attr_layoutcomponent_initialize
#
1
77 {
\edef
\layoutcomponentboxattribute
{
\clf_definedlayoutcomponent
{
#
1
}}
78 \edef
\layoutcomponentboxattribute
{
attr
\viewerlayerattribute
\layoutcomponentboxattribute
\relax
}
79 \expandafter
\glet
\csname
\??layoutcomponentattribute
#
1
\endcsname
\layoutcomponentboxattribute
}
80
81\def
\attr_layoutcomponent_set
#
1
82 {
\expandafter\let\expandafter
\layoutcomponentboxattribute
\csname
\??layoutcomponentattribute
#
1
\endcsname
83 \ifx
\layoutcomponentboxattribute
\relax
84 \attr_layoutcomponent_initialize
{
#
1
}
85 \fi
}
86
87\def
\attr_layoutcomponent_reset
88 {
\let
\layoutcomponentboxattribute
\empty
}
89
90\let
\setlayoutcomponentattribute
\gobbleoneargument
91\let
\resetlayoutcomponentattribute
\relax
92\let
\layoutcomponentboxattribute
\empty
93
94\unexpanded
\def
\showlayoutcomponents
95 {
\let
\setlayoutcomponentattribute
\attr_layoutcomponent_set
96 \let
\resetlayoutcomponentattribute
\attr_layoutcomponent_reset
}
97
98\unexpanded
\def
\attr_layoutcomponent_cleanup
99 {
\clf_cleanuplayers
}
100
101\appendtoks
102 \attr_layoutcomponent_cleanup
103\to
\everyshipout
104
105\protect
\endinput
106