1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Packaging Macros Objects}
15
16\unprotect
17
18\registerctxluafile{packobj}{autosuffix}
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40\installcorenamespace {objects}
41
42\mutable\def\objectoffset{1cm}
43
44\newif \ifinobject
45\newbox \b_pack_objects
46\newdimension\d_pack_objects_offset \permanent\def\objectmargin{\the\d_pack_objects_offset}
47\newdimension\d_pack_objects_width \permanent\def\objectwidth {\the\d_pack_objects_width}
48\newdimension\d_pack_objects_height \permanent\def\objectheight{\the\d_pack_objects_height}
49\newdimension\d_pack_objects_depth \permanent\def\objectdepth {\the\d_pack_objects_depth}
50
51
52
53
54
55
56
57
58\permanent\protected\def\setreferencedobject #1#2{\begingroup\taggingpause\synctexpause\d_pack_objects_offset\objectoffset\inobjecttrue\dowithnextbox{\pack_objects_set_yes{#1}{#2}}}
59\permanent\protected\def\settightreferencedobject #1#2{\begingroup\taggingpause\synctexpause\d_pack_objects_offset\zeropoint \inobjecttrue\dowithnextbox{\pack_objects_set_yes{#1}{#2}}}
60\permanent\protected\def\setunreferencedobject #1#2{\begingroup\taggingpause\synctexpause\d_pack_objects_offset\objectoffset\inobjecttrue\dowithnextbox{\pack_objects_set_nop{#1}{#2}}}
61\permanent\protected\def\settightunreferencedobject#1#2{\begingroup\taggingpause\synctexpause\d_pack_objects_offset\zeropoint \inobjecttrue\dowithnextbox{\pack_objects_set_nop{#1}{#2}}}
62
63\aliased\let\setobject \setreferencedobject
64\aliased\let\settightobject\settightreferencedobject
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88\newconstant\c_pack_objects_offset_mode
89\newconstant\c_pack_objects_delay
90
91\protected\def\pack_objects_set_yes#1#2
92 {\ifcase\c_pack_objects_offset_mode
93 \ifzeropt\d_pack_objects_offset
94 \pack_objects_package_nop\nextbox
95 \else
96 \pack_objects_package_yes\nextbox
97 \fi
98 \else
99 \pack_objects_package_nop\nextbox
100 \fi
101 \clf_registerreferencedobject
102 {#1}{#2}
103 \b_pack_objects
104 \d_pack_objects_offset
105 \c_pack_objects_offset_mode
106 \c_pack_objects_delay
107 \synctexresume
108 \endgroup}
109
110\protected\def\pack_objects_set_nop#1#2
111 {\ifcase\c_pack_objects_offset_mode
112 \ifzeropt\d_pack_objects_offset
113 \pack_objects_package_nop\nextbox
114 \else
115 \pack_objects_package_yes\nextbox
116 \fi
117 \else
118 \pack_objects_package_nop\nextbox
119 \fi
120 \clf_registerobject
121 {#1}{#2}
122 \b_pack_objects
123 \d_pack_objects_offset
124 \c_pack_objects_offset_mode
125 \c_pack_objects_delay
126 \synctexresume
127 \endgroup}
128
129\def\pack_objects_package_nop#1
130 {\setbox\b_pack_objects\hpack{\box#1}}
131
132\def\pack_objects_package_yes#1
133 {\d_pack_objects_width {\wd#12\d_pack_objects_offset}
134 \d_pack_objects_height{\ht#1 \d_pack_objects_offset}
135 \d_pack_objects_depth {\dp#1 \d_pack_objects_offset}
136 \setbox\b_pack_objects\hpack{\hskip\d_pack_objects_offset\box#1}
137 \wd\b_pack_objects\d_pack_objects_width
138 \ht\b_pack_objects\d_pack_objects_height
139 \dp\b_pack_objects\d_pack_objects_depth}
140
141\permanent\protected\def\getobject#1#2
142 {\begingroup
143 \synctexpause
144 \clf_restoreobject{#1}{#2}
145 \ifzeropt\d_pack_objects_offset\else
146 \d_pack_objects_offset\d_pack_objects_offset
147 \pack_objects_package_yes\b_pack_objects
148 \fi
149 \box\b_pack_objects
150 \synctexresume
151 \endgroup}
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174\immutable\def\defaultobjectreference{0}
175\immutable\def\defaultobjectpage {\realfolio}
176
177
178
179
180
181
182\aliased\let\dogetobjectreference \getobjectreference
183\aliased\let\dogetobjectreferencepage\getobjectreferencepage
184
185\aliased\let\doifobjectfoundelse \doifelseobjectfound
186\aliased\let\doifobjectreferencefoundelse\doifelseobjectreferencefound
187
188
189
190\mutable\lettonothing\lastpredefinedsymbol
191
192\permanent\protected\def\predefinesymbol[#1]
193 {\begingroup
194 \xdef\lastpredefinedsymbol{#1}
195 \settightobject{SYM}{#1}\hbox{\symbol[#1]}
196 \getobjectreference{SYM}{#1}\m_back_object_reference
197 \clf_registerbackendsymbol{#1}\m_back_object_reference\relax
198 \endgroup}
199
200\protect \endinput
201 |