1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17\pushoverloadmode
18
19\startmodule[presentwobbling]
20
21
22\setuppapersize[SM][SM]
23
24\setupinteraction
25 [state=start,
26 contrastcolor=white,
27 color=white,
28 click=no]
29
30\setuplayout
31 [location=middle,
32 topspace=60pt,
33 bottomspace=80pt,
34 backspace=80pt,
35 header=0pt,
36 footer=0pt,
37 width=middle,
38 height=middle]
39
40\setupcolors
41 [textcolor=white]
42
43\setupbodyfont[pagella]
44
45\definecolor[maincolor] [blue]
46\definecolor[extracolor][green]
47
48
49
50
51\startMPdefinitions
52 picture MySoFar ; MySoFar := nullpicture ;
53 path MyLastOne ; MyLastOne := origin -- cycle ;
54 path MyLeftSteps, MyRightSteps ;
55 boolean MyPageDone ; MyPageDone := false ;
56
57 vardef MySmallShape(expr parent) =
58 path p ; p := boundingbox parent ;
59 numeric w, h ; w := bbwidth(p) ; h := bbheight(p) ;
60 urcorner p shifted (uniformdeviate w4,0) --
61 lrcorner p shifted (0,uniformdeviate h4) --
62 llcorner p shifted (uniformdeviate w4,0) --
63 ulcorner p shifted (0,uniformdeviate h4) -- cycle
64 enddef ;
65
66 vardef MyShape(expr parent) =
67 path p ; p := boundingbox parent ;
68 if MyPageDone :
69 MyPageDone := false ;
70 urcorner p shifted (EmWidth uniformdeviate CutSpace2,0) --
71 lrcorner p shifted (0,EmWidth uniformdeviate BottomSpace2) --
72 llcorner p shifted (EmWidth uniformdeviate BackSpace2,0) --
73 ulcorner p shifted (0,EmWidth uniformdeviate TopSpace2) -- cycle
74 else :
75 MyPageDone := true ;
76 urcorner p shifted (0,EmWidth uniformdeviate TopSpace2) --
77 lrcorner p shifted (EmWidth uniformdeviate CutSpace2,0) --
78 llcorner p shifted (0,EmWidth uniformdeviate BottomSpace2) --
79 ulcorner p shifted (EmWidth uniformdeviate BackSpace2,0) -- cycle
80 fi
81 enddef ;
82
83 vardef MyMakeOne =
84 MyLastOne := MyShape(Page) ;
85 enddef ;
86
87 vardef MyAddOne =
88 addto MySoFar also image(fill MyLastOne withcolor "maincolor" withtransparency(1,.25) ; ) ;
89 enddef ;
90
91 vardef MyDrawOne =
92 fill MyLastOne withcolor black ;
93 fill MyLastOne withcolor "maincolor" withtransparency(1,.25) ;
94 enddef ;
95
96 vardef MyDrawPage =
97 draw MySoFar ;
98 enddef ;
99
100 vardef MySetSteps =
101 path l, r ; numeric s ; path ll[], rr[] ; path t ;
102 l := point 2 of MyLastOne -- point 3 of MyLastOne ;
103 r := point 0 of MyLastOne -- point 1 of MyLastOne ;
104 t := topboundary Field[Text][Text] rightenlarged TextWidth leftenlarged TextWidth ;
105 s := bbheight(Field[Text][Text])LineHeight 2 ;
106 t := t shifted (0,TopSkip) ;
107 for i=1 upto s :
108 ll[i] := t intersectionpoint l ;
109 rr[i] := t intersectionpoint r ;
110 t := t shifted (0,LineHeight) ;
111 endfor ;
112 MyLeftSteps := for i=1 upto s : ll[i] -- endfor cycle ;
113 MyRightSteps := for i=1 upto s : rr[i] -- endfor cycle ;
114 enddef ;
115
116 vardef MyDrawText(expr txt) =
117 pair a ; a := (point 1 of MyLastOne) (point 2 of MyLastOne) ;
118 picture p ; p := txt ;
119 p := p
120 shifted (EmWidth,EmWidth)
121 shifted ulcorner txt
122 shifted point 1 of MyLastOne ;
123 p := p rotatedaround(lrcorner p, radian tan(ypart axpart a)) ;
124 setbounds p to origin -- cycle ;
125 draw p ;
126 enddef ;
127
128 vardef MyDrawTitle(expr txt) =
129
130 pair a ; a := (point 3 of MyLastOne) (point 4 of MyLastOne) ;
131 picture p ;
132 if bbheight(txt) > bbwidth(txt) :
133 p := txt ysized(0.8TextHeight) ;
134 else :
135 p := txt xsized(0.8TextWidth) ;
136 fi ;
137 numeric d ; d := arclength(point 2 of MyLastOne -- point 3 of MyLastOne) bbheight(p) ;
138 p := p
139 shifted (BackSpace,d2)
140 shifted ulcorner p
141 shifted point 3 of MyLastOne ;
142
143
144 setbounds p to origin -- cycle ;
145 draw p ;
146 enddef ;
147
148 vardef MyDrawSteps =
149 s := bbheight(Field[Text][Text])LineHeight 2 ;
150 for i=1 upto s :
151 draw ll[i] withpen pencircle scaled 1mm ;
152 draw rr[i] withpen pencircle scaled 1mm ;
153 draw ll[i] -- rr[i] ;
154 endfor ;
155 draw Field[Text][Text] ;
156 enddef ;
157
158\stopMPdefinitions
159
160\startuseMPgraphic{initialization}
161 StartPage ;
162 MySoFar := image(fill Page enlarged 12pt withcolor "maincolor" withtransparency(1,.25) ;) ;
163 MyMakeOne ;
164 MySetSteps ;
165 StopPage ;
166\stopuseMPgraphic
167
168\appendtoks
169 \startnointerference
170 \useMPgraphic{initialization}
171 \stopnointerference
172\to \everystarttext
173
174\unexpanded\def\TitleCommand#1
175 {\framed
176 [frame=off,
177 offset=overlay,
178 align=flushleft,
179 foregroundcolor=white,
180 foregroundstyle={\tfd},
181 bottom=\vskip2\lineheight]
182 {\setupinterlinespace
183 \setupwhitespace[halfline]
184
185 \begstrut
186 #1
187 \endstrut}}
188
189\unexpanded\def\TopicCommand#1
190 {\color[white]{\tfb#1}}
191
192\startuseMPgraphic{page}
193 StartPage ;
194 MyDrawPage ;
195 MyDrawOne ;
196 MySetSteps ;
197 if RealPageNumber == 1 :
198 MyDrawTitle(textext("\TitleCommand{\documentvariable{title}}")) ;
199 MyDrawText (textext("\TopicCommand{\documentvariable{topic}}")) ;
200 fi ;
201
202
203
204
205
206
207 StopPage ;
208\stopuseMPgraphic
209
210\appendtoks
211 \startnointerference
212 \startMPcode
213 MyAddOne ;
214 MyMakeOne ;
215 MySetSteps ;
216 \stopMPcode
217 \stopnointerference
218\to \everyshipout
219
220\defineoverlay[page][\useMPgraphic{page}]
221
222\startuseMPgraphic{symbol}
223 path p ; p := MySmallShape(unitsquare scaled (.6LineHeight)) ;
224 fill p withcolor white ;
225 fill p withcolor "extracolor" withtransparency(1,.25) ;
226\stopuseMPgraphic
227
228\definesymbol[mysymbol][\struttedbox{\useMPgraphic{symbol}}]
229
230\setupitemgroup
231 [itemize] [1]
232 [symbol=mysymbol]
233
234\setupbackgrounds
235 [page]
236 [background=page]
237
238\startluacode
239 local texdimen = tex.dimen
240 function document.SetParShape()
241 local leftpath = metapost.getclippath { mpx = "metafun", data = "clip currentpicture to MyLeftSteps ;" }
242 local rightpath = metapost.getclippath { mpx = "metafun", data = "clip currentpicture to MyRightSteps ;" }
243 local shape = { }
244 for i=1,#leftpath do
245 local left = leftpath[i].x_coord
246 local right = rightpath[i].x_coord
247 local hsize = right - left - (texdimen.backspace + texdimen.cutspace)*number.dimenfactors.bp
248 shape[#shape+1] = string.format("%sbp %sbp",left,hsize)
249 end
250
251
252 context("\\parshape %s %s ",#shape,table.concat(shape," "))
253 end
254\stopluacode
255
256\nopenalties \dontcomplain
257
258\setupwhitespace[none]
259
260\startsetups document:start
261 \bgroup
262 \let\crlf\endgraf
263 \startstandardmakeup
264
265 \stopstandardmakeup
266 \egroup
267\stopsetups
268
269\unexpanded\def\StartText#1#2
270 {\startdocument[title={#1},subtitle={#2}]}
271
272\unexpanded\def\StopText
273 {\stopdocument
274 \setupdocument[title=,topic=]}
275
276\unexpanded\def\StartItems#1
277 {\setupdocument[topic={#1}]
278 \startstandardmakeup[top=,bottom=\vss]
279 \startelement[items][title={#1}]
280 \ctxlua{document.SetParShape()}
281 \StartSteps}
282
283\unexpanded\def\StopItems
284 {\StopSteps
285 \stopelement
286 \stopstandardmakeup}
287
288\unexpanded\def\StartItem
289 {\dontleavehmode
290 \startelement[item]
291 \llap{\symbol[mysymbol]\quad}
292 \ignorespaces}
293
294\unexpanded\def\StopItem
295 {\removeunwantedspaces
296 \nobreak
297 \crlf
298 \stopelement
299 \crlf
300 \FlushStep}
301
302\unexpanded\def\ShapeParagraph
303 {\ctxlua{document.SetParShape()}}
304
305
306
307\unexpanded\def\StartParagraphs#1
308 {\setupdocument[topic={#1}]
309 \startstandardmakeup[top=,bottom=\vss]
310
311 \startelement[paragraphs]
312 \StartSteps}
313
314\unexpanded\def\StopParagraphs
315 {\StopSteps
316 \stopelement
317 \stopstandardmakeup}
318
319\unexpanded\def\StartParagraph
320 {\startelement[paragraph]}
321
322\unexpanded\def\StopParagraph
323 {\par
324 \stopelement
325 \FlushStep}
326
327
328
329\setelementexporttag[items] [nature][display]
330\setelementexporttag[item] [nature][mixed]
331\setelementexporttag[paragraphs][nature][display]
332\setelementexporttag[paragraph] [nature][mixed]
333
334\stopmodule
335
336\continueifinputfile{spresentwobbling.mkiv}
337
338\usemodule[presentcommon]
339
340
341\inputpresentationfile{bachotex2010bachotex2010move.tex}
342 |