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