1
2
3
4
5
6
7
8
9
10
11
12
13
14\writestatus{loading}{ConTeXt Page Macros MakeUp}
15
16\unprotect
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39\installcorenamespace{makeup}
40\installcorenamespace{makeupdoublesided}
41
42\installcommandhandler \??makeup {makeup} \??makeup
43
44\appendtoks
45 \frozen\instance\setuevalue{\e!start\currentmakeup\e!makeup}{\startmakeup[\currentmakeup]}
46 \frozen\instance\setuevalue{\e!stop \currentmakeup\e!makeup}{\stopmakeup}
47 \doifelselayoutdefined\currentmakeup\donothing{\definelayout[\currentmakeup]}
48\to \everydefinemakeup
49
50
51
52
53\permanent\tolerant\protected\def\startmakeup[#1]#*[#2]
54 {\ifparameters
55 \expandafter\page_makeup_start_nop
56 \else
57 \expandafter\page_makeup_start_yes
58 \fi[#1][#2]}
59
60\aliased\let\stopmakeup\relax
61
62
63
64\protected\def\page_makeup_start_nop[#name][#settings]
65 {\page
66 \setupheader[\c!state=\v!empty]
67 \setupfooter[\c!state=\v!empty]
68 \bgroup
69 \forgetall
70 \dontcomplain
71 \vbox to \textheight \bgroup
72 \setsystemmode\v!makeup
73 \hsize\textwidth
74 \enforced\let\stopmakeup\page_makeup_stop_nop}
75
76\permanent\protected\def\page_makeup_stop_nop
77 {\egroup
78 \egroup
79 \page}
80
81
82
83\newbox \b_page_makeup
84\newtoks\t_page_makeup_every_setup
85
86\def\page_makeup_start_yes[#name]
87 {\doifelsecommandhandler\??makeup{#name}\page_makeup_start_indeed\page_makeup_start_nop[#name]}
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107\def\page_makeup_start_indeed[#name][#settings]
108 {
109 \begingroup
110
111 \xdef\m_page_makeup_name{#name}
112 \let\currentmakeup\m_page_makeup_name
113 \let\currentlayout\m_page_makeup_name
114 \xdef\m_page_makeup_layout_parent{\layoutparameter\s!parent}
115 \setupcurrentmakeup[#settings]
116 \edef\p_page{\makeupparameter\c!page}
117 \ifempty\p_page
118 \endgroup
119 \page
120 \orelse\ifx\p_page\v!no
121
122 \endgroup
123 \else
124 \normalexpanded{\endgroup\page[\p_page]}
125 \fi
126
127
128
129
130 \ifx\m_page_makeup_name\currentlayout
131
132 \orelse\ifx\m_page_makeup_layout_parent\??layout
133
134 \normalexpanded{\setuplayout[#name][\s!parent=\??layout\currentlayout]}
135
136
137 \fi
138 \startlayout[#name]
139 \bgroup
140
141 \let\currentmakeup\m_page_makeup_name
142 \setupcurrentmakeup[#settings]
143 \setsystemmode\v!makeup
144 \the\t_page_makeup_every_setup
145 \makeupparameter\c!commands
146 \forgetall
147 \dontcomplain
148 \global\setbox\b_page_makeup\vbox to \makeupparameter\c!height \bgroup
149 \usemakeupstyleandcolor\c!style\c!color
150 \hsize\makeupparameter\c!width
151 \usealignparameter\makeupparameter
152 \usesetupsparameter\makeupparameter
153 \makeupparameter\c!top
154 \enforced\let\stopmakeup\page_makeup_stop_yes}
155
156\permanent\protected\def\page_makeup_stop_yes
157 {\endgraf
158 \makeupparameter\c!bottom
159 \egroup
160 \strc_pagenumbers_page_state_push
161 \makeupparameter\c!before\relax
162 \begingroup
163 \ifdim\ht\b_page_makeup>\vsize
164 \ht\b_page_makeup\vsize
165 \fi
166 \setuppagenumber[\c!state=\makeupparameter\c!pagestate]
167 \doif{\makeupparameter\c!location}\v!top{\topskip\zeropoint}
168 \edef\p_reference{\makeupparameter\c!reference}
169 \dontleavehmode
170 \usereferenceparameter\makeupparameter
171 \box\b_page_makeup
172 \the\t_page_makeup_every_setup
173 \page
174 \endgroup
175 \makeupparameter\c!after\relax
176 \ifdoublesided \ifodd\realpageno \else
177 \csname\??makeupdoublesided\makeupparameter\c!doublesided\endcsname
178 \fi \fi
179 \strc_pagenumbers_page_state_pop
180 \egroup
181 \stoplayout
182 \ifx\m_page_makeup_name\currentlayout
183 \orelse\ifx\m_page_makeup_layout_parent\??layout
184 \normalexpanded{\setuplayout[\m_page_makeup_name][\s!parent=\??layout]}
185 \fi}
186
187\setvalue{\??makeupdoublesided\v!yes}
188 {\emptyhbox
189 \page}
190
191\setvalue{\??makeupdoublesided\v!empty}
192 {\the\t_page_makeup_every_setup
193
194 \page[\v!blank]
195 \emptyhbox
196 \page}
197
198
199
200\permanent\protected\def\startcolumnmakeup
201 {\bgroup
202 \getrawnoflines\textheight
203 \setbox\scratchbox\vbox to \dimexpr\noflines\lineheight\lineheight\topskip\relax
204 \bgroup
205 \forgetall}
206
207\permanent\protected\def\stopcolumnmakeup
208 {\egroup
209 \dp\scratchbox\zeropoint
210 \wd\scratchbox\textwidth
211 \box\scratchbox
212 \egroup
213 \page_otr_command_synchronize_hsize}
214
215
216
217
218
219\appendtoks
220 \setupfooter[\c!state=\makeupparameter\c!footerstate]
221 \setupheader[\c!state=\makeupparameter\c!headerstate]
222 \setuptext [\c!state=\makeupparameter\c!textstate]
223 \setupbottom[\c!state=\makeupparameter\c!bottomstate]
224 \setuptop [\c!state=\makeupparameter\c!topstate]
225\to \t_page_makeup_every_setup
226
227
228
229\setupmakeup
230 [\c!width=\innermakeupwidth,
231 \c!height=\textheight,
232
233
234
235
236
237
238
239 \c!page=\v!right,
240 \c!doublesided=\v!empty,
241 \c!top=\vss,
242 \c!bottom=\vss,
243 \c!bottomstate=\v!normal,
244 \c!topstate=\v!normal,
245 \c!textstate=\v!normal,
246 \c!headerstate=\v!stop,
247 \c!footerstate=\v!stop,
248 \c!pagestate=\v!stop]
249
250
251\definemakeup
252 [\v!standard]
253 [\c!width=\innermakeupwidth,
254 \c!height=\textheight,
255 \c!page=\v!right,
256 \c!doublesided=\v!empty]
257
258\definemakeup
259 [\v!text]
260 [\c!topstate=\v!start,
261 \c!headerstate=\v!start,
262 \c!textstate=\v!start,
263 \c!footerstate=\v!start,
264 \c!bottomstate=\v!start,
265 \c!doublesided=\v!no,
266 \c!page=\v!yes,
267 \c!top=\pseudostrut\ignorespaces,
268 \c!bottom=\obeydepth\vss]
269
270\definemakeup
271 [\v!page]
272
273\definemakeup
274 [\v!middle]
275 [\v!standard]
276
277
278
279
280\protect
281 |