1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16\unprotect
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32\newconstant\c_grph_buffers_mode
33
34\mutable\lettonothing\lasttypesetbuffer
35
36\permanent\protected\def\typesetbuffer {\bgroup\setconstant\c_grph_buffers_mode\plusone \grph_buffers_typeset}
37\permanent\protected\def\typesetbufferonly{\bgroup\setconstant\c_grph_buffers_mode\zerocount\grph_buffers_typeset}
38
39\tolerant\permanent\protected\def\grph_buffers_typeset[#1]#*[#S#2]
40 {\ifparameters
41 \grph_buffers_typeset_indeed\jobname\empty
42 \or
43 \ifhastok={#1}
44 \grph_buffers_typeset_indeed\jobname{#1}
45 \else
46 \grph_buffers_typeset_indeed{#1}\empty
47 \fi
48 \or
49 \grph_buffers_typeset_indeed{#1}{#2}
50 \fi}
51
52\def\grph_buffers_typeset_indeed#1#2
53 {\iftok{#1}{*}\else
54 \xdef\lasttypesetbuffer{\clf_typesetbuffer{#1}}
55 \fi
56 \ifcase\c_grph_buffers_mode
57
58 \or
59 \externalfigure[\lasttypesetbuffer][#2]
60 \fi
61 \egroup}
62
63\tolerant\permanent\protected\def\runbuffer[#1]#*[#S#2]
64 {\xdef\lasttypesetbuffer{\clf_runbuffer{#1}{#2}}}
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80\installcorenamespace{typesettingfile}
81
82\tolerant\permanent\protected\def\definetypesetting[#1]#*[#2]#*[#S#3]
83 {\ifparameter#1\or
84 \frozen\instance\protected\defcsname\??typesettingfile#1\endcsname{\grph_typesetting_process_indeed{#2}{#3}}
85 \fi}
86
87\tolerant\permanent\protected\def\typesetfile[#1]#*[#S#2]#*[#S#3]
88 {\ifcsname\??typesettingfile#1\endcsname
89 \lastnamedcs{#2}{#3}
90 \orelse\ifparameter#3\or
91 \grph_typesetting_process_indeed{#2}{#3}{#1}{}
92 \orelse\ifparameter#2\or
93 \grph_typesetting_process_indeed{}{#2}{#1}{}
94 \fi}
95
96\defineexternalfigure[typesetting]
97
98\def\grph_typesetting_process_indeed#1#2#3#4
99 {\begingroup
100 \edef\m_typesetting_name{\clf_runcontextjob{#3}{#1}}
101 \ifempty\m_typesetting_name \else
102 \normalexpanded{\externalfigure[\m_typesetting_name][typesetting]}[#2,#4]
103 \fi
104 \endgroup}
105
106
107
108
109
110
111
112
113
114
115
116
117
118\newinteger \c_grph_steps_reference
119\newdimension\d_grph_steps_x
120\newdimension\d_grph_steps_y
121\newbox \b_grph_steps_colorbar
122
123\ifdefined\referring\else \mutable\let\referring\relax \fi
124\ifdefined\marking \else \mutable\let\marking \relax \fi
125\ifdefined\remark \else \mutable\let\remark \relax \fi
126\ifdefined\colorbar \else \mutable\let\colorbar \relax \fi
127
128\tolerant\protected\def\grph_steps_place_figure#1#2#3#4#5
129 {\hbox\bgroup
130 \setbox\scratchbox\hbox
131 {
132 \useexternalfigure[\s!dummy][#2][#3,#5]
133 \externalfigure[\s!dummy]}
134 \setbox\scratchbox\hbox
135 {\externalfigure[#2][#3,#5]}
136 \grph_steps_calculate
137 \startpositioning
138 \enforced\let\referring\grph_steps_one_referring
139 \enforced\let\marking \grph_steps_one_marking
140 \enforced\let\remark \grph_steps_one_remark
141 \enforced\let\colorbar \grph_steps_one_colorbar
142 \position(0,0){\box\scratchbox}
143 \linewidth\onepoint
144 \setuppositioning
145 [\c!unit=pt,
146 \c!xscale=\toscaled\d_grph_steps_x,
147 \c!yscale=\toscaled\d_grph_steps_y,
148 \c!factor=1]
149 \ignorespaces#4
150 \enforced\let\referring\grph_steps_two_referring
151 \enforced\let\marking \grph_steps_two_marking
152 \enforced\let\remark \grph_steps_two_remark
153 \enforced\let\colorbar \grph_steps_two_colorbar
154 \ignorespaces#4\removeunwantedspaces
155 \stoppositioning
156 \ifvoid\b_grph_steps_colorbar\else\box\b_grph_steps_colorbar\fi
157 \egroup}
158
159\protected\def\grph_steps_one_referring(#1,#2)#*(#3,#4)#*[#S#5]
160 {\position(#1,#2){\grph_steps_goto(#3,#4){\externalfigureparameter\c!frames}[#5]}}
161
162\protected\def\grph_steps_one_marking(#1,#2)#*(#3,#4)#*[#S#5]
163 {\position(#1,#2){\grph_steps_this_is(#3,#4){\externalfigureparameter\c!frames}[#5]}}
164
165\protected\def\grph_steps_one_remark (#,#)#*(#,#)#*[#]#*#:#{}
166\protected\def\grph_steps_one_colorbar #[#]{}
167\protected\def\grph_steps_two_referring(#,#)#*(#,#)#*[#]{}
168
169\let\grph_steps_two_marking\grph_steps_two_referring
170
171\protected\def\grph_steps_two_remark
172 {\grph_steps_comment\v!no}
173
174\protected\def\grph_steps_two_colorbar#1[#2]
175 {\begingroup
176 \global\setbox\b_grph_steps_colorbar\vpack
177 {\forgetall
178 \processcommalist[#2]\grph_colorbar_make_step}
179 \global\setbox\b_grph_steps_colorbar\vpack
180 {\hskip2\emwidth\box\b_grph_steps_colorbar}
181 \global\wd\b_grph_steps_colorbar\zeropoint
182 \endgroup}
183
184\protected\def\grph_colorbar_make_step#1
185 {\blackrule[\c!color=#1,\c!width=2\emwidth,\c!height=\exheight,\c!depth=\zeropoint]
186 \endgraf}
187
188\permanent\protected\def\startfigure[#1]#*[#2]#*[#3]#:#4\stopfigure
189 {\ifcstok{\externalfigureparameter\c!option}\v!test
190 \grph_steps_test_figure{#1}{#2}{#3}{#4}
191 \letexternalfigureparameter\c!frames\v!on
192 \else
193 \letexternalfigureparameter\c!frames\v!off
194 \fi
195 \tolerant\defcsname\??externalfigureinstance#1\endcsname[##1]
196 {\grph_steps_place_figure{#1}{#2}{#3}{#4}{##1}
197
198 \enforced\let\figurestatus\plusone}}
199
200\permanent\protected\lettonothing\stopfigure
201
202\ifdefined\referring \else \let\referring\relax \fi
203\ifdefined\marking \else \let\marking \relax \fi
204\ifdefined\remark \else \let\remark \relax \fi
205\ifdefined\colorbar \else \let\colorbar \relax \fi
206
207\protected\def\grph_steps_test_figure#1#2#3#4
208 {\begingroup
209 \setbox\scratchbox\hpack
210 {\useexternalfigure[\s!dummy][#2][\c!wfactor=\v!max]
211 \externalfigure[\s!dummy]}
212 \let\referring\grph_steps_three_referring
213 \let\marking \grph_steps_three_marking
214 \let\remark \grph_steps_three_remark
215 \let\colorbar \grph_steps_three_colorbar
216 \c_grph_steps_reference\zerocount
217 \setbox\scratchboxone\vpack
218 {\hsize240\points
219 \startpositioning
220 \grph_steps_calculate
221 \position(0,0)
222 {\box\scratchbox}
223 \position(0,0)
224 {\basegrid
225 [\c!nx=\externalfigureparameter\c!xmax,
226 \c!dx=\toscaled\d_grph_steps_x,
227 \c!ny=\externalfigureparameter\c!ymax,
228 \c!dy=\toscaled\d_grph_steps_y,
229 \c!xstep=1,
230 \c!ystep=1,
231 \c!scale=1,
232 \c!offset=\v!no,
233 \c!unit=pt]}
234 \setuppositioning
235 [\c!unit=pt,
236 \c!xscale=\toscaled\d_grph_steps_x,
237 \c!yscale=\toscaled\d_grph_steps_y,
238 \c!factor=1]
239 \linewidth\onepoint
240 \ignorespaces#4\removeunwantedspaces
241 \stoppositioning
242 \vfill}
243 \c_grph_steps_reference\zerocount
244 \enforced\let\referring\grph_steps_four_referring
245 \enforced\let\marking \grph_steps_four_marking
246 \enforced\let\remark \grph_steps_four_remark
247 \enforced\let\colorbar \grph_steps_four_colorbar
248 \setbox\scratchboxtwo\vbox
249 {\forgetall
250 \begingroup
251 \tfa\ifempty{#1}#1\else#2\fi
252 \endgroup
253 \blank
254 \tfxx#4
255 \vfilll}
256 \ifdim\ht\scratchboxone>\ht\scratchboxtwo
257 \ht\scratchboxtwo\ht\scratchboxone
258 \else
259 \ht\scratchboxone\ht\scratchboxtwo
260 \fi
261 \hpack
262 {\hskip3\emwidth
263 \tpack{\vskip12\points\box\scratchboxone\vskip6\points}
264 \tpack{\vskip12\points\box\scratchboxtwo\vskip6\points}}
265 \endgroup}
266
267\definesystemconstant{vwa}
268\definesystemconstant{vwb}
269
270\tolerant\protected\def\grph_steps_three_referring(#1,#2)#*(#3,#4)#*[#5]
271 {\advanceby\c_grph_steps_reference\plusone
272 \position(#1,#2)
273 {\hbox{\the\c_grph_steps_reference}}
274 \position(#1,#2)
275 {\gotosomeinternal\s!vwb{#5}\realfolio
276 {\grph_steps_marker(#3,#4)\v!on{\thisissomeinternal\s!vwa{#5}}}}}
277
278\protected\def\grph_steps_three_remark
279 {\grph_steps_comment\v!yes}
280
281\let\grph_steps_three_marking \grph_steps_three_referring
282\let\grph_steps_three_colorbar\grph_steps_one_colorbar
283
284\protected\def\grph_steps_four_referring{\grph_steps_text{\normalstartimath\rightarrow\normalstopimath}}
285\protected\def\grph_steps_four_marking {\grph_steps_text{\normalstartimath\leftarrow \normalstopimath}}
286
287\let\grph_steps_four_remark \grph_steps_one_remark
288\let\grph_steps_four_colorbar\grph_steps_one_colorbar
289
290
291
292\def\grph_steps_calculate
293 {\ifnum0\externalfigureparameter\c!xmax=\zerocount
294 \ifnum0\externalfigureparameter\c!ymax=\zerocount
295 \setexternalfigureparameter\c!ymax{24}
296 \fi
297 \d_grph_steps_y\figureheight
298 \divideby\d_grph_steps_y \externalfigureparameter\c!ymax
299 \d_grph_steps_x\d_grph_steps_y
300 \scratchdimen\figurewidth
301 \advanceby\scratchdimen\d_grph_steps_y
302 \divideby \scratchdimen\d_grph_steps_y
303 \setexternalfigureparameter\c!xmax{\number\scratchdimen}
304 \else
305 \d_grph_steps_x\figurewidth \divideby\d_grph_steps_x \externalfigureparameter\c!xmax\relax
306 \d_grph_steps_y\figureheight \divideby\d_grph_steps_y \externalfigureparameter\c!ymax\relax
307 \fi}
308
309\tolerant\def\grph_steps_comment#1(#2,#3)#*(#4,#5)#*[#S#6]#*#:#7
310 {\position(#2,#3)
311 {\setnostrut
312 \framed[\c!width=#4\d_grph_steps_x,\c!height=#5\d_grph_steps_y,\c!offset=\v!none,\c!frame=#1,#6]{#7}}}
313
314
315
316
317\def\grph_steps_goto(#1,#2)#3[#4]
318 {\gotobox{\vpack{\grph_steps_area(#1,#2)#3{}}}[#4]}
319
320\tolerant\def\grph_steps_text#1(#2,#3)#*(#4,#5)#*[#6]
321 {\advanceby\c_grph_steps_reference\plusone
322 \hbox
323 {\quad
324 \thisissomeinternal\s!vwb{#6}
325 \gotosomeinternal\s!vwa{#6}\realfolio{\hbox to 1.5\emwidth{\the\c_grph_steps_reference\hfill}}
326 \quad#1 (#2,#3) (#4,#5) [#6]\hfill}
327 \endgraf}
328
329\def\grph_steps_this_is(#1,#2)#3[#4]
330 {\grph_steps_area(#1,#2){#3}{\dosetdirectpagereference{#4}}}
331
332\def\grph_steps_area(#1,#2)#3#4
333 {\bgroup
334 \setnostrut
335 \framed[\c!width=#1\d_grph_steps_x,\c!height=#2\d_grph_steps_y,\c!offset=\zeropoint,\c!frame=#3]{#4}
336 \egroup}
337
338\def\grph_steps_marker(#1,#2)#3#4
339 {\framed[\c!width=#1\d_grph_steps_x,\c!height=#2\d_grph_steps_y,\c!offset=\v!none,\c!frame=#3]{#4}}
340
341\protect \endinput
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388 |