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