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\permanent\protected\def\setreferencedobject #1#2{\begingroup\synctexpause\d_pack_objects_offset\objectoffset\inobjecttrue\dowithnextbox{\pack_objects_set_yes{#1}{#2}}}
55\permanent\protected\def\settightreferencedobject #1#2{\begingroup\synctexpause\d_pack_objects_offset\zeropoint \inobjecttrue\dowithnextbox{\pack_objects_set_yes{#1}{#2}}}
56\permanent\protected\def\setunreferencedobject #1#2{\begingroup\synctexpause\d_pack_objects_offset\objectoffset\inobjecttrue\dowithnextbox{\pack_objects_set_nop{#1}{#2}}}
57\permanent\protected\def\settightunreferencedobject#1#2{\begingroup\synctexpause\d_pack_objects_offset\zeropoint \inobjecttrue\dowithnextbox{\pack_objects_set_nop{#1}{#2}}}
58
59\aliased\let\setobject \setreferencedobject
60\aliased\let\settightobject\settightreferencedobject
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84\newconstant\c_pack_objects_offset_mode
85\newconstant\c_pack_objects_delay
86
87\protected\def\pack_objects_set_yes#1#2
88 {\ifcase\c_pack_objects_offset_mode
89 \ifzeropt\d_pack_objects_offset
90 \pack_objects_package_nop\nextbox
91 \else
92 \pack_objects_package_yes\nextbox
93 \fi
94 \else
95 \pack_objects_package_nop\nextbox
96 \fi
97 \clf_registerreferencedobject
98 {#1}{#2}
99 \b_pack_objects
100 \d_pack_objects_offset
101 \c_pack_objects_offset_mode
102 \c_pack_objects_delay
103 \synctexresume
104 \endgroup}
105
106\protected\def\pack_objects_set_nop#1#2
107 {\ifcase\c_pack_objects_offset_mode
108 \ifzeropt\d_pack_objects_offset
109 \pack_objects_package_nop\nextbox
110 \else
111 \pack_objects_package_yes\nextbox
112 \fi
113 \else
114 \pack_objects_package_nop\nextbox
115 \fi
116 \clf_registerobject
117 {#1}{#2}
118 \b_pack_objects
119 \d_pack_objects_offset
120 \c_pack_objects_offset_mode
121 \c_pack_objects_delay
122 \synctexresume
123 \endgroup}
124
125\def\pack_objects_package_nop#1
126 {\setbox\b_pack_objects\hpack{\box#1}}
127
128\def\pack_objects_package_yes#1
129 {\d_pack_objects_width \dimexpr\wd#12\d_pack_objects_offset\relax
130 \d_pack_objects_height\dimexpr\ht#1 \d_pack_objects_offset\relax
131 \d_pack_objects_depth \dimexpr\dp#1 \d_pack_objects_offset\relax
132 \setbox\b_pack_objects\hpack{\hskip\d_pack_objects_offset\box#1}
133 \wd\b_pack_objects\d_pack_objects_width
134 \ht\b_pack_objects\d_pack_objects_height
135 \dp\b_pack_objects\d_pack_objects_depth}
136
137\permanent\protected\def\getobject#1#2
138 {\begingroup
139 \synctexpause
140 \clf_restoreobject{#1}{#2}
141 \ifzeropt\d_pack_objects_offset\else
142 \d_pack_objects_offset\d_pack_objects_offset
143 \pack_objects_package_yes\b_pack_objects
144 \fi
145 \box\b_pack_objects
146 \synctexresume
147 \endgroup}
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170\immutable\def\defaultobjectreference{0}
171\immutable\def\defaultobjectpage {\realfolio}
172
173
174
175
176
177
178\aliased\let\dogetobjectreference \getobjectreference
179\aliased\let\dogetobjectreferencepage\getobjectreferencepage
180
181\aliased\let\doifobjectfoundelse \doifelseobjectfound
182\aliased\let\doifobjectreferencefoundelse\doifelseobjectreferencefound
183
184
185
186\mutable\lettonothing\lastpredefinedsymbol
187
188\permanent\protected\def\predefinesymbol[#1]
189 {\begingroup
190 \xdef\lastpredefinedsymbol{#1}
191 \settightobject{SYM}{#1}\hbox{\symbol[#1]}
192 \getobjectreference{SYM}{#1}\m_back_object_reference
193 \clf_registerbackendsymbol{#1}\m_back_object_reference\relax
194 \endgroup}
195
196\protect \endinput
197 |