1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16\startmodule
[
present
stepwise
]
17
18\unprotect
19
20\startmode
[
paper
,
print
]
21 \let
\StartSteps
\relax
22 \let
\StopSteps
\relax
23 \let
\FlushStep
\relax
24 \let
\ResetStep
\relax
25 \let
\StartBusy
\relax
26 \let
\StopBusy
\relax
27 \endinput
28\stopmode
29
30\newcount
\c_module_pre_steps_current
31\newcount
\c_module_pre_steps_maximum
32\newcount
\c_module_pre_steps_nesting_step
33\newcount
\c_module_pre_steps_nesting_steps
34\newcount
\c_module_pre_steps_nesting_busy
35
36\def
\StepCounter
{
\the
\c_module_pre_steps_current
}
37\def
\StepMaximum
{
\the
\c_module_pre_steps_maximum
}
38\def
\StepLayer
{
step
:
\the
\c_module_pre_steps_current
}
39\def
\NextStepLayer
{
step
:
\the\numexpr
\c_module_pre_steps_current
\plusone
\relax
}
40\def
\FirstStepLayer
{
step
:
1
}
41
42\useJSscripts
[
stp
]
43
44\startsetups
[
set
stepper
]
45
46 \ifnum
\getvariable
{
stepper
}{
nofsteps
}
>
\c_module_pre_steps_maximum
47
48 \dostepwiserecurse
{
\numexpr
\c_module_pre_steps_maximum
\plusone
\relax
}
{
\getvariable
{
stepper
}{
nofsteps
}}
{
1
}
{
49 \doifnotmode
{
nosteps
,
nostep
}
{
50 \expanded
{
\defineviewerlayer
[
step
:
\recurselevel
][
state
=
stop
,
scope
=
global
]
}
51 }
52 }
53
54 \global
\c_module_pre_steps_maximum
\getvariable
{
stepper
}{
nofsteps
}
\relax
55
56 \fi
57
58\stopsetups
59
60\setvariables
61 [
stepper
]
62 [
set
=
\setups
{
set
stepper
}
,
63 nofsteps
=
5
0
]
64
65\defineviewerlayer
[
step
:
busy
][
state
=
start
]
66
67\definereference
[
SetupStepper
]
[
JS
(
SetupStepper
{
step
,
\StepMaximum
}
)]
68\definereference
[
ResetStepper
]
[
JS
(
ResetStepper
)]
69\definereference
[
CheckStepper
]
[
JS
(
CheckStepper
{
\StepCounter
}
)]
70\definereference
[
InvokeStepper
]
[
JS
(
InvokeStepper
)]
71
72
73
74\unexpanded
\def
\ResetStep
75 {
\iftrialtypesetting
\else
76 \global
\c_module_pre_steps_current
\zerocount
77 \fi
}
78
79\unexpanded
\def
\NextStep
80 {
\iftrialtypesetting
\else
81 \global\advance
\c_module_pre_steps_current
\plusone
82 \fi
}
83
84\unexpanded
\def
\PrevStep
85 {
\iftrialtypesetting
\else
86 \global\advance
\c_module_pre_steps_current
\minusone
87 \fi
}
88
89\unexpanded
\def
\FlushStep
90 {
\iftrialtypesetting
\else
91 \StopStep
92 \NextStep
93 \StartStep
94 \fi
}
95
96\unexpanded
\def
\StartStep
97 {
\iftrialtypesetting
\else
98 \global\advance
\c_module_pre_steps_nesting_step
\plusone
99 \ifcase
\c_module_pre_steps_nesting_step
\or
100 \startviewerlayer
[
\StepLayer
]
101 \fi
102 \fi
103 \ignorespaces
}
104
105\unexpanded
\def
\StopStep
106 {
\removeunwantedspaces
107 \iftrialtypesetting
\else
108 \ifcase
\c_module_pre_steps_nesting_step
\or
109 \stopviewerlayer
110 \fi
111 \global\advance
\c_module_pre_steps_nesting_step
\minusone
112 \fi
}
113
114\unexpanded
\def
\StartSteps
115 {
\iftrialtypesetting
\else
116 \global\advance
\c_module_pre_steps_nesting_steps
\plusone
117 \ifcase
\c_module_pre_steps_nesting_steps
\or
118 \ResetStep
119 \NextStep
120 \StartStep
121 \fi
122 \fi
}
123
124\unexpanded
\def
\StopSteps
125 {
\iftrialtypesetting
\else
126 \ifcase
\c_module_pre_steps_nesting_steps
\or
127 \StopStep
128 \PrevStep
129 \fi
130 \global\advance
\c_module_pre_steps_nesting_steps
\minusone
131 \fi
}
132
133\unexpanded
\def
\StartBusy
134 {
\iftrialtypesetting
\else
135 \global\advance
\c_module_pre_steps_nesting_busy
\plusone
136 \ifcase
\c_module_pre_steps_nesting_busy
\or
137 \startviewerlayer
[
step
:
busy
]
138 \fi
139 \fi
140 \ignorespaces
}
141
142\unexpanded
\def
\StopBusy
143 {
\removeunwantedspaces
144 \iftrialtypesetting
\else
145 \ifcase
\c_module_pre_steps_nesting_busy
\or
146 \stopviewerlayer
147 \fi
148 \global\advance
\c_module_pre_steps_nesting_busy
\minusone
149 \fi
}
150
151
152
153\unexpanded
\def
\StartLocalSteps
154 {
\ResetStep
}
155
156\unexpanded
\def
\StopLocalSteps
157 {}
158
159\unexpanded
\def
\StartLocalStep
160 {
\NextStep
161 \StartStep
}
162
163\unexpanded
\def
\StopLocalStep
164 {
\StopStep
}
165
166\appendtoks
167 \ResetStep
168\to
\everyaftershipout
169
170\setupinteraction
171 [
172 closeaction
=
ResetStepper
,
173 openpageaction
=
CheckStepper
,
174 closepageaction
=
ResetStepper
]
175
176\defineoverlay
[
invoke
][
\overlaybutton
{
InvokeStepper
}
]
177
178\setupbackgrounds
179 [
text
]
180 [
background
=
invoke
]
181
182
183
184\useMPlibrary
[
nav
]
185
186\definepalet
187 [
navplus
]
188 [
attach
=
interactioncolor
,
189 comment
=
interactioncolor
]
190
191\setupcomment
192 [
symbol
=
{
comment
normal
,
comment
down
}
,
193 textlayer
=
\StepLayer
,
194 option
=
buffer
,
195 height
=
\textheight
,
196 width
=
\textwidth
,
197 margin
=
0
pt
]
198
199\setupattachments
200 [
symbol
=
{
attach
normal
,
attach
down
}
,
201 textlayer
=
\StepLayer
]
202
203
204
205
206
207
208
209
210
211
212
213
214\protect
215
216\stopmodule
217