Commit | Line | Data |
---|---|---|
e3de7874 MW |
1 | %%% -*- mode: latex; TeX-PDF-mode: t -*- |
2 | %%% | |
3 | %%% Copyright (c) 2020 Mark Wooding | |
4 | %%% | |
5 | %%% This document is free software. You can you can redistribute it and/or | |
6 | %%% modify it under the terms of the GNU General Public License as published | |
7 | %%% by the Free Software Foundation; either version 3 of the License, or (at | |
8 | %%% your option) any later version. | |
9 | %%% | |
10 | %%% This document is distributed in the hope that it will be useful, but | |
11 | %%% WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | %%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General | |
13 | %%% Public License for more details. | |
14 | %%% | |
15 | %%% You should have received a copy of the GNU General Public License along | |
16 | %%% with this document. If not, see <https://www.gnu.org/licenses/>. | |
17 | %%% | |
18 | %%% Alternatively, you may share and adapt this document under the terms of | |
19 | %%% the Creative Commons Attribution--ShareAlike 4.0 International License | |
20 | %%% (CC BY-SA 4.0); see https://creativecommons.org/licenses/by-sa/4.0/ | |
21 | ||
22 | \documentclass[a4paper, 10pt]{article} | |
23 | ||
24 | \usepackage[T1]{fontenc} | |
25 | \usepackage[palatino, helvetica, courier, maths=cmr]{mdwfonts} | |
26 | \usepackage[margin=20mm]{geometry} | |
27 | ||
28 | \newdimen\titlewidth \titlewidth = 70mm | |
29 | ||
30 | \pagestyle{empty} | |
31 | \errorcontextlines = 50 | |
32 | \showboxbreadth = \maxdimen \showboxdepth = \maxdimen | |
33 | ||
34 | \newif\iftop \toptrue | |
35 | \def\doctor #1{% | |
36 | \omit | |
37 | \vrule \iftop\else height 24pt \fi width 0pt depth 6pt | |
38 | \large \sffamily \bfseries | |
39 | \ignorespaces #1\unskip \hfil | |
40 | &&&&&\cr | |
41 | } | |
42 | \def\season #1{% | |
43 | \omit | |
44 | \vrule width 0pt height 14pt depth 4pt | |
45 | \sffamily \bfseries | |
46 | \ignorespaces #1\unskip \hfil | |
47 | &&&&&\cr | |
48 | } | |
49 | \def\lost#1{\textit{#1}} | |
50 | ||
51 | \newdimen\hrwd \hrwd=0.2pt | |
52 | \def\zwd#1{\hbox to 0pt{\hss#1\hss}} | |
53 | ||
54 | \def\nil{\nil} | |
55 | \def\gobble#1{} | |
56 | \def\newqueue#1{% | |
57 | \expandafter\newtoks\csname q/#1\endcsname | |
58 | } | |
59 | ||
60 | \def\enqueue#1#2{% | |
61 | \global\csname q/#1\expandafter\endcsname= | |
62 | \expandafter{\the\csname q/#1\endcsname{#2}}% | |
63 | } | |
64 | \def\grabhead#1#2\endstop{\def\head{#1}} | |
65 | \def\gethead#1{\expandafter\grabhead\the\csname q/#1\endcsname\nil\endstop} | |
66 | \def\drophead#1{% | |
67 | \gethead{#1}% | |
68 | \edef\t{\global\csname q/#1\endcsname=% | |
69 | \noexpand\expandafter{\noexpand\gobble\the\csname q/#1\endcsname}}\t | |
70 | } | |
71 | \def\dequeue#1#2{% | |
72 | \gethead{#1}% | |
73 | \ifx\head\nil\def\head{#2}% | |
74 | \else\drophead{#1}\fi | |
75 | \head% | |
76 | } | |
77 | \def\foreach#1#2{% | |
78 | \def\next{% | |
79 | \gethead{#1}% | |
80 | \ifx\head\nil\let\next=\relax | |
81 | \else\drophead{#1}#2\fi | |
82 | \next% | |
83 | }% | |
84 | \next | |
85 | } | |
86 | ||
87 | \newqueue{t0} | |
88 | \newqueue{t1} | |
89 | \newqueue{t2} | |
90 | \newqueue{t3} | |
91 | \newqueue{name} | |
92 | ||
93 | \def\namedef#1{\expandafter\gdef\csname#1\endcsname} | |
94 | \def\namelet#1{\global\expandafter\let\csname#1\endcsname=} | |
95 | \def\nameuse#1{\csname#1\endcsname} | |
96 | ||
97 | \def\emptytrack{empty} | |
98 | \def\fulltrack{full} | |
99 | ||
100 | \namelet{dflt/empty}\relax | |
101 | \namedef{dflt/full}{\hfil\vrule\hfil} | |
102 | ||
103 | \namelet{dots/empty}\strut | |
104 | \namedef{dots/full}{\strut\raisebox{-2pt}{\smash{{$\vdots$}}}} | |
105 | ||
106 | \namedef{top/empty}#1{\strut} | |
107 | \namedef{top/full}#1{% | |
108 | \strut | |
109 | \nameuse{sym/#1}% | |
110 | \enqueue{name}{$\phantom+$ \nameuse{name/#1}}% | |
111 | } | |
112 | ||
113 | \namelet{trk/t0}\emptytrack | |
114 | \namelet{trk/t1}\emptytrack | |
115 | \namelet{trk/t2}\emptytrack | |
116 | \namelet{trk/t3}\emptytrack | |
117 | ||
118 | \def\track#1#2{\hfil\dequeue{#1}{\nameuse{dflt/\nameuse{trk/#1}}}\hfil} | |
119 | ||
120 | \def\trkendmarker#1{% | |
121 | \hfil | |
122 | \vrule depth -3pt | |
123 | \kern-\hrwd | |
124 | \zwd{#1}% | |
125 | \kern\hrwd | |
126 | \hfil | |
127 | } | |
128 | ||
129 | \def\join#1#2#3{% | |
130 | \enqueue{#1}{#2}% | |
131 | \namedef{sym/#1}{#2}% | |
132 | \namedef{name/#1}{#3}% | |
133 | \namelet{trk/#1}\fulltrack | |
134 | \enqueue{name}{$+$ #3}% | |
135 | } | |
136 | \def\depart#1{% | |
137 | \enqueue{#1}{\trkendmarker{\vrule height 3.2pt depth -2.8pt width 4pt}}% | |
138 | \namelet{trk/#1}\emptytrack | |
139 | } | |
140 | \def\die#1{% | |
141 | \enqueue{#1}{\trkendmarker{$\times$}}% | |
142 | \namelet{trk/#1}\emptytrack | |
143 | } | |
144 | \def\joindie#1#2#3{% | |
145 | \enqueue{#1}{\zwd{#2}\zwd{$\times$}}% | |
146 | \enqueue{name}{$+$ #3}% | |
147 | } | |
148 | ||
149 | \def\namelist#1{% | |
150 | \setbox0=\vtop{\foreach{name}{\hbox{\strut\head}}}% | |
151 | \dp0=0pt \box0 | |
152 | } | |
153 | ||
154 | \def\pagebreak{% | |
155 | \omit | |
156 | &\omit\hfil\nameuse{dots/\nameuse{trk/t0}}\hfil% | |
157 | &\omit\hfil\nameuse{dots/\nameuse{trk/t1}}\hfil% | |
158 | &\omit\hfil\nameuse{dots/\nameuse{trk/t2}}\hfil% | |
159 | &\omit\hfil\nameuse{dots/\nameuse{trk/t3}}\hfil% | |
160 | \cr | |
161 | \noalign{\newpage}% | |
162 | \omit | |
163 | &\omit\hfil\nameuse{top/\nameuse{trk/t0}}{t0}\hfil% | |
164 | &\omit\hfil\nameuse{top/\nameuse{trk/t1}}{t1}\hfil% | |
165 | &\omit\hfil\nameuse{top/\nameuse{trk/t2}}{t2}\hfil% | |
166 | &\omit\hfil\nameuse{top/\nameuse{trk/t3}}{t3}\hfil% | |
167 | &\cr | |
168 | \omit | |
169 | &\omit\hfil\nameuse{dots/\nameuse{trk/t0}}\hfil% | |
170 | &\omit\hfil\nameuse{dots/\nameuse{trk/t1}}\hfil% | |
171 | &\omit\hfil\nameuse{dots/\nameuse{trk/t2}}\hfil% | |
172 | &\omit\hfil\nameuse{dots/\nameuse{trk/t3}}\hfil% | |
173 | \global\toptrue | |
174 | \cr | |
175 | } | |
176 | ||
177 | \edef\oldoutput{\the\output} | |
178 | %\output={\showbox255 \oldoutput} | |
179 | ||
180 | \begin{document} | |
181 | ||
182 | \topskip = 0pt | |
183 | \baselineskip = 0pt | |
184 | \lineskip = 0pt | |
185 | ||
186 | \global\def\\{&&&&&\cr} | |
187 | \halign% | |
188 | {\strut\hbox to \titlewidth{\qquad\ignorespaces#\unskip\hfil}% | |
189 | &\track{t0}{#}% | |
190 | &\track{t1}{#}% | |
191 | &\track{t2}{#}% | |
192 | &\track{t3}{#}% | |
193 | &\quad\namelist{#}% | |
194 | \global\topfalse\cr% | |
195 | % | |
196 | &\omit\qquad&\omit\qquad&\omit\qquad&\omit\qquad\cr\cr | |
197 | % | |
198 | \doctor{The First Doctor (1963--1966)} | |
199 | % | |
200 | \season{Season 1} | |
201 | % | |
202 | An Unearthly Child \join{t0}{S}{Susan Foreman} | |
203 | \join{t1}{B}{Barbara Wright} | |
204 | \join{t2}{I}{Ian Chesterton} \\ | |
205 | The Daleks \\ | |
206 | The Edge of Destruction \\ | |
207 | \lost{Marco Polo} \\ | |
208 | The Keys of Marinus \\ | |
209 | The Aztecs \\ | |
210 | The Sensorites \\ | |
211 | The Reign of Terror \\ | |
212 | % | |
213 | \season{Season 2} | |
214 | Planet of Giants \\ | |
215 | The Dalek Invasion of Earth \depart{t0} \\ | |
216 | The Rescue \join{t3}{V}{Vicki Pallister} \\ | |
217 | The Romans \\ | |
218 | The Web Planet \\ | |
219 | \lost{The Crusade} \\ | |
220 | The Space Museum \\ | |
221 | The Chase \depart{t1} \depart{t2} | |
222 | \join{t0}{S}{Stephen Taylor} \\ | |
223 | The Time Meddler \\ | |
224 | % | |
225 | \season{Season 3} | |
226 | \lost{Galaxy Four} \\ | |
227 | \lost{Mission to the Unknown} \\ | |
228 | \lost{The Myth Makers} \depart{t3} | |
229 | \join{t1}{K}{Katarina} \\ | |
230 | \lost{The Daleks' Master Plan} | |
231 | \die{t1} | |
232 | \joindie{t2}{S}{Sara Kingdom} \\ | |
233 | \lost{The Massacre of St Bartholomew's Eve} | |
234 | \join{t3}{D}{Dodo Chaplet} \\ | |
235 | The Ark \\ | |
236 | \lost{The Celestial Toymaker} \\ | |
237 | The Gunfighters \\ | |
238 | \lost{The Savages} \depart{t0} \\ | |
239 | The War Machines \depart{t3} | |
240 | \join{t1}{P}{Polly Wright} | |
241 | \join{t2}{B}{Ben Jackson} \\ | |
242 | % | |
243 | \season{Season 4} | |
244 | \lost{The Smugglers} \\ | |
245 | The Tenth Planet \\ | |
246 | % | |
247 | \pagebreak | |
248 | \doctor{The Second Doctor (1966--1969)} | |
249 | % | |
250 | \season{Season 4 (cont.)} | |
251 | The Power of the Daleks \\ | |
252 | \lost{The Highlanders} \join{t0}{J}{Jamie McCrimmon} \\ | |
253 | The Underwater Menace \\ | |
254 | The Moonbase \\ | |
255 | \lost{The Macra Terror} \\ | |
256 | \lost{The Faceless Ones} \depart{t1} \depart{t2} \\ | |
257 | \lost{The Evil of the Daleks} \join{t3}{V}{Victoria Waterfield} \\ | |
258 | % | |
259 | \season{Season 5} | |
260 | The Tomb of the Cybermen \\ | |
261 | \lost{The Abominable Snowmen} \\ | |
262 | The Ice Warriors \\ | |
263 | The Enemy of the World \\ | |
264 | The Web of Fear \\ | |
265 | \lost{Fury from the Deep} \depart{t3} \\ | |
266 | \lost{The Wheel in Space} \join{t1}{Z}{Zoe Heriot} \\ | |
267 | % | |
268 | \season{Season 6} | |
269 | The Dominators \\ | |
270 | The Mind Robber \\ | |
271 | The Invasion \\ | |
272 | The Krotons \\ | |
273 | The Seeds of Death \\ | |
274 | \lost{The Space Pirates} \\ | |
275 | The War Games \depart{t0} \depart{t1} \\ | |
276 | % | |
277 | \pagebreak | |
278 | \doctor{The Third Doctor (1970--1974)} | |
279 | % | |
280 | \season{Season 7} | |
281 | Spearhead from Space \join{t0}{L}{Elizabeth Shaw} \\ | |
282 | Doctor Who and the Siluarians \\ | |
283 | The Ambassadors of Death \\ | |
284 | Inferno \depart{t0} \\ | |
285 | % | |
286 | \season{Season 8} | |
287 | Terror of the Autons \join{t1}{J}{Jo Grant} \\ | |
288 | The Mind of Evil \\ | |
289 | The Claws of Axos \\ | |
290 | Colony in Space \\ | |
291 | The Daemons \\ | |
292 | % | |
293 | \season{Season 9} | |
294 | Day of the Daleks \\ | |
295 | The Curse of Peladon \\ | |
296 | The Sea Devils \\ | |
297 | The Mutants \\ | |
298 | The Time Monster \\ | |
299 | The Three Doctors \\ | |
300 | % | |
301 | \season{Season 10} | |
302 | Carnival of Monsters \\ | |
303 | Frontier in Space \\ | |
304 | Planet of the Daleks \\ | |
305 | The Green Death \depart{t1} \\ | |
306 | The Time Warrior \join{t0}{S}{Sarah Jane Smith} \\ | |
307 | % | |
308 | \season{Season 11} | |
309 | Invasion of the Dinosaurs \\ | |
310 | Death to the Daleks \\ | |
311 | The Monster of Peladon \\ | |
312 | Planet of the Spiders \\ | |
313 | % | |
314 | \pagebreak | |
315 | \doctor{The Fourth Doctor (1974--1981)} | |
316 | % | |
317 | \season{Season 12} | |
318 | Robot \join{t1}{H}{Harry Sullivan} \\ | |
319 | The Ark in Space \\ | |
320 | The Sontaran Experiment \\ | |
321 | Genesis of the Daleks \\ | |
322 | Revenge of the Cybermen \\ | |
323 | % | |
324 | \season{Season 13} | |
325 | Terror of the Zygons \depart{t1} \\ | |
326 | Planet of Evil \\ | |
327 | Pyramids of Mars \\ | |
328 | The Android Invasion \\ | |
329 | The Brain of Morbius \\ | |
330 | The Seeds of Doom \\ | |
331 | % | |
332 | \season{Season 14} | |
333 | The Masque of Mandragora \\ | |
334 | The Hand of Fear \depart{t0} \\ | |
335 | The Deadly Assassin \\ | |
336 | The Face of Evil \join{t0}{L}{Leela} \\ | |
337 | The Robots of Death \\ | |
338 | The Talons of Weng-Chiang \\ | |
339 | % | |
340 | \season{Season 15} | |
341 | Horror of Fang Rock \\ | |
342 | The Invisible Enemy \join{t1}{K}{K--9} \\ | |
343 | Image of the Fendahl \\ | |
344 | The Sun Makers \\ | |
345 | Underworld \\ | |
346 | The Invasion of Time \depart{t0} \\ | |
347 | % | |
348 | \season{Season 16 (The Key to Time)} | |
349 | The Ribos Operation \join{t0}{R}{Romanadvoratrelundar | |
350 | (`Romana')} \\ | |
351 | The Pirate Planet \\ | |
352 | The Stones of Blood \\ | |
353 | The Androids of Tara \\ | |
354 | The Power of Kroll \\ | |
355 | The Armageddon Factor \\ | |
356 | % | |
357 | \season{Season 17} | |
358 | Destiny of the Daleks \\ | |
359 | City of Death \\ | |
360 | The Creature from the Pit \\ | |
361 | Nightmare of Eden \\ | |
362 | The Horns of Nimon \\ | |
363 | \lost{Shada} \\ | |
364 | % | |
365 | \season{Season 18} | |
366 | The Leisure Hive \\ | |
367 | Meglos \\ | |
368 | Full Circle \join{t2}{A}{Adric} \\ | |
369 | State of Decay \\ | |
370 | Warriors' Gate \depart{t0} \depart{t1} \\ | |
371 | The Keeper of Traken \join{t3}{N}{Nyssa of Traken} \\ | |
372 | Logopolis \join{t0}{T}{Tegan Jovanka} \\ | |
373 | % | |
374 | \pagebreak | |
375 | \doctor{The Fifth Doctor (1981--1984)} | |
376 | % | |
377 | \season{Season 19} | |
378 | Castrovalva \\ | |
379 | Four to Doomsday \\ | |
380 | Kinda \\ | |
381 | The Visitation \\ | |
382 | Black Orchid \\ | |
383 | Earthshock \die{t2} \\ | |
384 | Time-Flight \\ | |
385 | % | |
386 | \season{Season 20} | |
387 | Arc of Infinity \\ | |
388 | Snakedance \\ | |
389 | Mawdryn Undead \join{t1}{T}{Vislor Turlough} \\ | |
390 | Terminus \depart{t3} \\ | |
391 | Enlightenment \\ | |
392 | The King’s Demons \join{t2}{K}{Kameleon} \\ | |
393 | % | |
394 | \season{(Special)} | |
395 | The Five Doctors \\ | |
396 | % | |
397 | \season{Season 21} | |
398 | Warriors of the Deep \\ | |
399 | The Awakening \\ | |
400 | Frontios \\ | |
401 | Resurrection of the Daleks \depart{t0} \\ | |
402 | Planet of Fire \depart{t1} | |
403 | \die{t2} | |
404 | \join{t3}{P}{Perpugilliam | |
405 | `Peri' Brown} \\ | |
406 | The Caves of Androzani \\ | |
407 | % | |
408 | \pagebreak | |
409 | \doctor{The Sixth Doctor (1984--1986)} | |
410 | % | |
411 | \season{Season 21 (cont.)} | |
412 | The Twin Dilemma \\ | |
413 | % | |
414 | \season{Season 22} | |
415 | Attack of the Cybermen \\ | |
416 | Vengeance on Varos \\ | |
417 | The Mark of the Rani \\ | |
418 | The Two Doctors \\ | |
419 | Timelash \\ | |
420 | Revelation of the Daleks \\ | |
421 | % | |
422 | \season{Season 23 (The Trial of a Time Lord)} | |
423 | The Mysterious Planet \\ | |
424 | Mindwarp \die{t3} \\ | |
425 | Terror of the Vervoids \join{t0}{M}{Melanie Bush} \\ | |
426 | The Ultimate Foe \\ | |
427 | % | |
428 | \doctor{The Seventh Doctor (1987--1989)} | |
429 | % | |
430 | \season{Season 24} | |
431 | Time and the Rani \\ | |
432 | Paradise Towers \\ | |
433 | Delta and the Bannerman \\ | |
434 | Dragonfire \depart{t0} | |
435 | \join{t1}{A}{Dorothy `Ace' | |
436 | McShane Gale} \\ | |
437 | % | |
438 | \season{Season 25} | |
439 | Remembrance of the Daleks \\ | |
440 | The Happiness Patrol \\ | |
441 | Silver Nemesis \\ | |
442 | The Greatest Show in the Galaxy \\ | |
443 | % | |
444 | \season{Season 26} | |
445 | Battlefield \\ | |
446 | Ghost Light \\ | |
447 | The Curse of Fenric \\ | |
448 | Survival \depart{t1} \\ | |
449 | % | |
450 | } | |
451 | ||
452 | \end{document} |