1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
|
%%
%% A quick presentation about the macros
%%
input pathalong;
input slideshow;
author("Patrick TJ McPhee");
title("Introducing slide-show macros");
keywords("presentations metapost");
copyright("Copyright 2001 Patrick TJ McPhee. You may redistribute and modify for any purpose, but must acknowledge significant quotation.");
continue;
nextfig;
defaultscale := 2;
draw textunder((0,.5in){up}..{right}(2in,1in), "Introducing") shifted (1in,3in) withcolor textcolour;
endfig;
nextfig;
blabel.rt("Slide Show Macros", (2in,2in));
endfig;
defaultscale := 1;
nextfig;
draw pathalong((0,.5in){up}..{right}(2in,1in), "by Patrick TJ McPhee") shifted (1in,3in) withcolor textcolour;
hyperdest("Start");
endfig;
discontinue;
header("Rationale");
bpoint("Primarily an intellectual exercise");
bpoint("But may be useful for graphics-intensive presentations which don't use much text");
bpoint("Slideshow provides support for this irritating style of bullet presentation");
bpoint("And writes out some pdfmarks, which you would otherwise have to look up yourself");
picture dimtieb;
dimtieb := image(draw pathalong((0,.5in){up}..(.5in,1in){right}..(.5in, 0in){-1,-1}..{.1,-1}(.5in,-.5in),
"Did I mention the intellectual exercise bit?") withcolor textcolour;);
dimtieb := dimtieb rotatedaround(center dimtieb, 90);
dimtieb := dimtieb shifted - llcorner dimtieb;
bpoint(dimtieb);
discontinue;
header("Current practice");
bpoint("A presentation might have several components:");
vardef procbox(expr s) =
save p;
picture p;
p := s infont defaultfont scaled defaultscale;
pickup thin nib;
addto p doublepath bbox p withpen currentpen;
p
enddef;
vardef resultbox(expr s) =
save p;
picture p;
p := s infont defaultfont scaled defaultscale;
pickup thin nib;
addto p doublepath (ulcorner p)..tension 2..(urcorner p)..(lrcorner p)..
tension 2..(llcorner p)..cycle
withpen currentpen;
p
enddef;
picture lt, mp, dvi, gs, postp, vres, pres, fpres;
lt := procbox("laTeX") shifted (.05 lawidth, .2laheight);
mp := procbox("metapost") shifted (.05 lawidth, .1laheight);
dvi := procbox("DVI processor") shifted (.2 lawidth, .15laheight);
vres := resultbox("viewable result") shifted (.4 lawidth, .15 laheight);
gs := procbox("distiller") shifted (.65 lawidth, .15laheight);
pres := resultbox("presentation") shifted (.8 lawidth, .15laheight);
postp := procbox("post-processor") shifted (.7 lawidth, .3laheight);
fpres := resultbox("final presentation") shifted (.45 lawidth, .3laheight);
nextfig;
bullet.in("text prepared with laTeX");
draw lt withcolor white;
endfig;
nextfig;
bullet.in("graphics prepared with metapost (okay, 2 components)");
draw mp withcolor red;
endfig;
nextfig;
bullet.in("which are combined with dvi processing software");
pickup thin nib;
drawarrow (.5[lrcorner mp,urcorner mp]){right}..{right}(.5[llcorner dvi,ulcorner dvi])
withcolor .25[red,white];
drawarrow (.5[lrcorner lt,urcorner lt]){right}..{right}(.5[llcorner dvi,ulcorner dvi])
withcolor .25[white,red];
draw dvi withcolor .5[white,red];
endfig;
nextfig;
bullet.in("the resulting postscript is viewable, but must be distilled into the presentation");
pickup thin nib;
drawarrow (.5[lrcorner dvi,urcorner dvi])..(.5[llcorner vres,ulcorner vres])
withcolor .1[.5[red,white],green];
draw vres withcolor .5[.5[white,red],green];
endfig;
nextfig;
pickup thin nib;
drawarrow (.5[lrcorner vres,urcorner vres])..(.5[llcorner gs,ulcorner gs])
withcolor .6[.5[red,white],green];
draw gs withcolor .75[.5[white,red],green];
endfig;
nextfig;
pickup thin nib;
drawarrow (.5[lrcorner gs,urcorner gs])..(.5[llcorner pres,ulcorner pres])
withcolor .75[.5[white,red],green];
draw pres withcolor green;
endfig;
nextfig;
pickup thin nib;
bullet.in("and it's often post-processed to make it slick and professional-looking like this one");
pickup thin nib;
drawarrow (.5[lrcorner pres,urcorner pres]){right}..{left}(.5[lrcorner postp,urcorner postp])
withcolor .5[green,white];
draw postp withcolor .75[green,white];
endfig;
nextfig;
pickup thin nib;
drawarrow (.5[llcorner postp,ulcorner postp])..(.5[lrcorner fpres,urcorner fpres])
withcolor .95[green,white];
draw fpres withcolor white;
endfig;
discontinue;
header("The slideshow advantage");
bpoint("With the slideshow macros:");
nextfig;
bullet.in("Only one input format is possible");
draw mp withcolor red;
endfig;
nextfig;
bullet.in("Which converts rapidly into viewable output");
pickup thick nib;
drawarrow (.5[lrcorner mp,urcorner mp]){right}..{right}(.5[llcorner vres,ulcorner vres])
withcolor .5[red,.5[.5[white,red],green]];
% I hope it's clear by this point that I'm playing this for laughs
draw vres withcolor .5[.5[white,red],green];
endfig;
nextfig;
bullet.in("And then distills into the presentation");
pickup thick nib;
drawarrow (.5[lrcorner vres,urcorner vres]){right}
..{right}(.5[llcorner fpres,ulcorner fpres])
withcolor .5[.5[.5[white,red],green],white];
draw fpres withcolor white;
endfig;
nextfig;
bullet.in("From which no post-processing is needed, since there are no post-processors supporting these macros");
endfig;
discontinue;
header("Limitations");
bpoint("Metapost doesn't handle text very well");
bpoint("It's difficult to include non-metapost graphics (e.g., bit-maps)");
bpoint("There's no provision for producing print-only versions of the information");
bpoint("There's no concept of presentation styles");
bpoint("It generally requires some configuration of ghostscript and metapost, especially if you use math");
bpoint("The other methods for producing presentations using TeX-family tools aren't as complicated as I suggested");
bpoint.in("I personally use my own plain-TeX style with just TeX, metapost, and dvipdfm");
discontinue;
header("Strengths");
bpoint("Measurably less complex than metaobj");
bpoint("Small and simple, so shouldn't conflict with too many truly useful metapost packages");
bpoint("The ability to build up drawings can be helpful");
bpoint("And so are the pdfmarks");
bpoint("It's useful for cases where laTeX is used as a framework for a bunch of metapost slides");
bpoint("So it was worth uploading to CTAN, but it's not going to change the world");
discontinue;
header(nullpicture);
nextfig;
hyperlabel(breaktowidth("Thanks for sticking to the end. Click on this text to start over.", .5lawidth)(ignore), (.5lawidth, .5laheight), "Start");
endfig;
end
|