Initial freepository revision of XML support documents.
[project-aon.git] / xml / latex.xsl
1 <?xml version="1.0"?>
2 <!DOCTYPE xsl:transform [
3  <!ENTITY % latex.characters SYSTEM "ltexchar.mod">
4  %latex.characters;
5 ]>
6
7 <xsl:transform version="1.0"
8   xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
9
10 <xsl:output method="text" encoding="ISO-8859-1" />
11
12 <xsl:strip-space elements="gamebook meta section data ol ul dl li dd footnotes footnote illustration instance" />
13 <xsl:preserve-space elements="p choice" />
14
15 <!--
16
17 $Id$
18
19 $Log$
20 Revision 1.1  2005/01/30 01:32:52  jonathan.blake
21 Initial freepository revision of XML support documents.
22
23 Revision 1.3  2002/10/30 06:33:22  jblake
24 Added capability to filter which illustrators' work is included in the output.
25
26 Revision 1.2  2002/10/20 06:29:58  jblake
27 Added support for CLOSE COMBAT SKILL from the Freeway Warrior books.
28
29 Revision 1.1  2002/10/15 23:30:23  jblake
30 Initial revision
31
32 -->
33
34 <!--
35
36 To Implement:
37
38 The implementation of tables is incomplete and kludgy.
39
40 -->
41
42 <!-- ====================== parameters ========================== -->
43
44 <xsl:param name="title-color"><xsl:text>0.0,0.0,0.0</xsl:text></xsl:param>
45 <xsl:param name="use-illustrators" />
46
47 <!-- ======================= variables ========================== -->
48
49 <xsl:variable name="newline">
50 <xsl:text>
51 </xsl:text>
52 </xsl:variable>
53
54 <xsl:variable name="newparagraph">
55  <xsl:value-of select="$newline" />
56  <xsl:value-of select="$newline" />
57 </xsl:variable>
58
59 <!-- ======================== Templates ========================= -->
60
61 <!-- ================= hierarchical sections ==================== -->
62
63 <xsl:template match="meta" />
64
65 <!-- ::::::::::::::::::: top-level section :::::::::::::::::::::: -->
66
67 <xsl:template match="/gamebook/section[@id='title']">
68
69 <xsl:text>
70 %% Two-sided %%
71 \documentclass[letterpaper,12pt,twoside]{book}
72 %\documentclass[a4paper,12pt,twoside]{book}
73
74 %% One-sided %%
75 %\documentclass[letterpaper,12pt,oneside]{book}
76 %\documentclass[a4paper,12pt,oneside]{book}
77
78  \usepackage[pdftex]{graphicx}
79  \usepackage{ifthen}
80
81  %% color info %%
82  \usepackage{color}
83  \definecolor{titlecolor}{rgb}{</xsl:text><xsl:value-of select="$title-color" /><xsl:text>}
84  \definecolor{lightgray}{gray}{0.75}
85
86  %% headers and footers %%
87  \usepackage{fancyhdr}
88
89  \renewcommand{\chaptermark}[1]{}
90  \renewcommand{\sectionmark}[1]{}
91  \fancyhf{}
92
93  \ifthenelse{\boolean{@twoside}}%
94  {%% Two-sided %%
95   \fancyhead[CO]{\iffloatpage{}{</xsl:text><xsl:value-of select="/gamebook/meta/creator[@class='short']" /><xsl:text>}}
96   \fancyhead[CE]{\iffloatpage{}{\bfseries </xsl:text><xsl:value-of select="/gamebook/meta/title[1]" /><xsl:text>}}
97   \fancyhead[LO,RE]{\iffloatpage{}{\thepage}}}%
98  {%% One-sided %%
99   %\fancyhead[C]{\iffloatpage{}{\bfseries{</xsl:text><xsl:value-of select="/gamebook/meta/title[1]" /><xsl:text>:} \normalfont{</xsl:text><xsl:value-of select="/gamebook/meta/creator[@class='short']" /><xsl:text>}}}
100   %\fancyhead[R]{\iffloatpage{}{\thepage}}}
101  \renewcommand{\headrulewidth}{\iffloatpage{0pt}{0.4pt}}
102
103  \fancypagestyle{plain}{
104   \fancyhf{}
105   \renewcommand{\headrulewidth}{0pt}
106  }
107
108  \fancypagestyle{empty}{
109   \fancyhf{}
110   \renewcommand{\headrulewidth}{0pt}
111  }
112
113  %% hyper-references %%
114  \usepackage[pdftex,colorlinks=true,linkcolor=black,bookmarks=false]{hyperref}
115
116  %% custom style info %%
117  \setlength{\parindent}{0pt}
118  \setlength{\parskip}{1em}
119  \setlength{\headheight}{18pt}
120  \addtolength{\headwidth}{\marginparwidth}
121  \addtolength{\headwidth}{\marginparsep}
122  \setlength{\textheight}{44\baselineskip}
123  \ifthenelse{\lengthtest{\paperwidth = 210mm}}%
124    {%% if A4 (210.0 mm x 297.0 mm)
125    \addtolength{\topmargin}{-1\baselineskip}}%
126    {%% else if letter (8.5" x 11" == 215.9 mm x 279.4 mm)
127    \addtolength{\topmargin}{-2.5\baselineskip}}
128
129  %% TrueType font %%
130  \usepackage[T1]{fontenc}
131  \usepackage{souvenir}
132  %\renewcommand{\rmdefault}{souvnrttf}
133
134  \raggedbottom
135
136  %% new environments %%
137  \newenvironment{aonchoice}{\begin{list}{}{\setlength{\topsep}{0pt}} \item}{\end{list}}
138  \newenvironment{aoncombat}{\begin{list}{}{\setlength{\topsep}{0pt}} \item}{\end{list}}
139  \newenvironment{aonitemize}{\begin{list}{}{\setlength{\topsep}{0pt} \setlength{\parsep}{0pt} \setlength{\itemsep}{0pt}}}{\end{list}}
140  \newenvironment{aonordereditemize}{\begin{list}{\arabic{aoncounter}.}{\usecounter{aoncounter} \setlength{\topsep}{0pt} \setlength{\parsep}{0pt} \setlength{\itemsep}{0pt}}}{\end{list}}
141  \newcounter{aoncounter}
142
143 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
144 \begin{document}
145
146 \begin{titlepage}
147
148  \vspace*{\stretch{0.7}}
149  \begin{center}
150   \Huge{\textcolor{titlecolor}{\textbf{</xsl:text><xsl:value-of select="/gamebook/meta/title[1]" /><xsl:text>}}} \vspace{-0.8em}\\
151
152   \vspace*{\stretch{1}}
153   \normalsize{</xsl:text><xsl:apply-templates select="/gamebook/meta/creator[@class='medium']" /><xsl:text>}
154  \end{center}
155  \vspace*{\stretch{1.3}}
156
157  \pagestyle{empty}
158
159  \newpage
160
161  \vspace*{\stretch{1}}
162
163  </xsl:text>
164  <xsl:apply-templates select="/gamebook/meta/rights[@class='license-notification']" />
165  <xsl:text>
166
167  Publication Date: </xsl:text>
168  <xsl:value-of select="/gamebook/meta/date[@class='publication']/day" />
169  <xsl:text> </xsl:text>
170  <xsl:choose>
171   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 1">
172    <xsl:text>January</xsl:text>
173   </xsl:when>
174   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 2">
175    <xsl:text>February</xsl:text>
176   </xsl:when>
177   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 3">
178    <xsl:text>March</xsl:text>
179   </xsl:when>
180   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 4">
181    <xsl:text>April</xsl:text>
182   </xsl:when>
183   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 5">
184    <xsl:text>May</xsl:text>
185   </xsl:when>
186   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 6">
187    <xsl:text>June</xsl:text>
188   </xsl:when>
189   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 7">
190    <xsl:text>July</xsl:text>
191   </xsl:when>
192   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 8">
193    <xsl:text>August</xsl:text>
194   </xsl:when>
195   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 9">
196    <xsl:text>September</xsl:text>
197   </xsl:when>
198   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 10">
199    <xsl:text>October</xsl:text>
200   </xsl:when>
201   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 11">
202    <xsl:text>November</xsl:text>
203   </xsl:when>
204   <xsl:when test="/gamebook/meta/date[@class='publication']/month = 12">
205    <xsl:text>December</xsl:text>
206   </xsl:when>
207   <xsl:otherwise>
208    <xsl:text>Invalid Month</xsl:text>
209   </xsl:otherwise>
210  </xsl:choose>
211  <xsl:text> </xsl:text>
212  <xsl:value-of select="/gamebook/meta/date[@class='publication']/year" />
213  <xsl:text>
214
215  </xsl:text>
216  <xsl:apply-templates select="/gamebook/meta/description[@class='publication']" />
217  <xsl:text>
218
219  \vspace*{\stretch{3}}
220
221  \pagestyle{empty}
222
223 \end{titlepage}
224
225 \clearpage{\pagestyle{empty}\cleardoublepage}
226
227  \vspace*{\stretch{1}}
228
229  \thispagestyle{empty}
230  </xsl:text>
231  <xsl:apply-templates select="/gamebook/meta/description[@class='blurb']" />
232  <xsl:apply-templates select="/gamebook/meta/creator[@class='long']" />
233  <xsl:text>
234
235  \vspace*{\stretch{3}}
236
237 \clearpage{\pagestyle{empty}\cleardoublepage}
238
239  \pagestyle{fancy}
240
241 \begin{frontmatter}
242 </xsl:text>
243
244  <xsl:apply-templates select="data/section[@class='frontmatter']" />
245
246 <xsl:text>
247 \end{frontmatter}
248
249 </xsl:text>
250 <xsl:if test="data/section[@class='mainmatter']">
251  <xsl:text>\begin{mainmatter}
252
253  </xsl:text>
254
255  <xsl:apply-templates select="data/section[@class='mainmatter']" />
256
257  <xsl:text>
258  \end{mainmatter}
259  </xsl:text>
260 </xsl:if>
261
262 <xsl:if test="data/section[@class='numbered']">
263  <xsl:apply-templates select="data/section[@class='numbered']" />
264 </xsl:if>
265
266  <xsl:text>
267 \begin{backmatter}
268 \ifthenelse{\boolean{@twoside}}%
269  {%% Two-sided %%
270   \fancyhead[RO,LE]{}}
271  {%% One-sided %%
272   \fancyhead[R]{}}
273
274  \setcounter{topnumber}{6}
275  \renewcommand{\topfraction}{1}
276  \renewcommand{\textfraction}{0}
277  \setlength{\floatsep}{10pt}
278
279  </xsl:text>
280  <xsl:apply-templates select="data/section[@class='backmatter']" />
281  <xsl:text>
282
283 \end{backmatter}
284
285 \end{document}
286 </xsl:text>
287
288 </xsl:template>
289
290 <xsl:template match="/gamebook/section[@id='toc']" />
291
292 <xsl:template match="section" />
293
294 <!-- ::::::::::: second-level frontmatter sections :::::::::::::: -->
295
296 <xsl:template match="/gamebook/section/data/section[@class='frontmatter']">
297
298  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
299  <xsl:value-of select="$newparagraph" />
300
301  <xsl:text>{\huge \hypertarget{</xsl:text>
302   <xsl:value-of select="@id" />
303  <xsl:text>}{</xsl:text>
304  <xsl:value-of select="meta/title" />
305  <xsl:text>}}</xsl:text>
306  <xsl:value-of select="$newline" />
307  <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
308   <xsl:value-of select="meta/title" />
309  <xsl:text>}}</xsl:text>
310  <xsl:value-of select="$newparagraph" />
311
312  <xsl:apply-templates />
313
314 </xsl:template>
315
316 <!-- :::::::::::: third-level front matter sections ::::::::::::: -->
317
318 <xsl:template match="/gamebook/section/data/section/data/section[@class='frontmatter']">
319
320  <xsl:text>{\LARGE \hypertarget{</xsl:text>
321   <xsl:value-of select="@id" />
322  <xsl:text>}{</xsl:text>
323  <xsl:value-of select="meta/title" />
324  <xsl:text>}}</xsl:text>
325  <xsl:value-of select="$newparagraph" />
326
327  <xsl:apply-templates />
328 </xsl:template>
329
330 <xsl:template match="/gamebook/section/data/section/data/section[@class='frontmatter-separate']">
331
332  <xsl:text>\newpage</xsl:text><xsl:value-of select="$newline" />
333  <xsl:text>{\LARGE \hypertarget{</xsl:text>
334   <xsl:value-of select="@id" />
335  <xsl:text>}{</xsl:text>
336  <xsl:value-of select="meta/title" />
337  <xsl:text>}}</xsl:text>
338  <xsl:value-of select="$newline" />
339  <xsl:text>\addcontentsline{toc}{subsection}{\protect\numberline{}{</xsl:text>
340   <xsl:value-of select="meta/title" />
341  <xsl:text>}}</xsl:text>
342  <xsl:value-of select="$newparagraph" />
343
344  <xsl:apply-templates />
345 </xsl:template>
346
347 <!-- :::::::::::: fourth-level front matter sections :::::::::::: -->
348
349 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='frontmatter']">
350  <xsl:text>{\Large \hypertarget{</xsl:text>
351   <xsl:value-of select="@id" />
352  <xsl:text>}{</xsl:text>
353  <xsl:value-of select="meta/title" />
354  <xsl:text>}}</xsl:text>
355  <xsl:value-of select="$newparagraph" />
356
357  <xsl:apply-templates />
358 </xsl:template>
359
360 <!-- ::::::::::::: fifth-level front matter sections :::::::::::: -->
361
362 <xsl:template match="/gamebook/section/data/section/data/section/data/section/data/section[@class='frontmatter']">
363  <xsl:text>{\large \hypertarget{</xsl:text>
364   <xsl:value-of select="@id" />
365  <xsl:text>}{</xsl:text>
366  <xsl:value-of select="meta/title" />
367  <xsl:text>}}</xsl:text>
368  <xsl:value-of select="$newparagraph" />
369
370  <xsl:apply-templates />
371 </xsl:template>
372
373 <!-- ::::::::::: second-level main matter sections :::::::::::::: -->
374
375 <xsl:template match="/gamebook/section/data/section[@class='mainmatter']">
376  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
377  <xsl:value-of select="$newparagraph" />
378
379  <xsl:text>{\huge \hypertarget{</xsl:text>
380   <xsl:value-of select="@id" />
381  <xsl:text>}{</xsl:text>
382  <xsl:value-of select="meta/title" />
383  <xsl:text>}}</xsl:text>
384  <xsl:value-of select="$newline" />
385  <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
386   <xsl:value-of select="meta/title" />
387  <xsl:text>}}</xsl:text>
388  <xsl:value-of select="$newparagraph" />
389
390  <xsl:apply-templates />
391
392 </xsl:template>
393
394 <!-- :::::::::::: third-level main matter sections ::::::::::::: -->
395
396 <xsl:template match="/gamebook/section/data/section/data/section[@class='mainmatter'] | /gamebook/section/data/section/data/section[@class='mainmatter-separate']">
397
398  <xsl:text>\newpage</xsl:text><xsl:value-of select="$newline" />
399  <xsl:text>{\LARGE \hypertarget{</xsl:text>
400   <xsl:value-of select="@id" />
401  <xsl:text>}{</xsl:text>
402  <xsl:value-of select="meta/title" />
403  <xsl:text>}}</xsl:text>
404  <xsl:value-of select="$newline" />
405  <xsl:text>\addcontentsline{toc}{subsection}{\protect\numberline{}{</xsl:text>
406   <xsl:value-of select="meta/title" />
407  <xsl:text>}}</xsl:text>
408  <xsl:value-of select="$newparagraph" />
409
410  <xsl:apply-templates />
411 </xsl:template>
412
413 <!-- :::::::::::: fourth-level main matter sections :::::::::::: -->
414
415 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='mainmatter'] | /gamebook/section/data/section/data/section/data/section[@class='mainmatter-separate']">
416  <xsl:text>{\Large \hypertarget{</xsl:text>
417   <xsl:value-of select="@id" />
418  <xsl:text>}{</xsl:text>
419  <xsl:value-of select="meta/title" />
420  <xsl:text>}}</xsl:text>
421  <xsl:value-of select="$newparagraph" />
422
423  <xsl:apply-templates />
424 </xsl:template>
425
426 <!-- ::::::::::::: fifth-level main matter sections :::::::::::: -->
427
428 <xsl:template match="/gamebook/section/data/section/data/section/data/section/data/section[@class='mainmatter']">
429  <xsl:text>{\large \hypertarget{</xsl:text>
430   <xsl:value-of select="@id" />
431  <xsl:text>}{</xsl:text>
432  <xsl:value-of select="meta/title" />
433  <xsl:text>}}</xsl:text>
434  <xsl:value-of select="$newparagraph" />
435
436  <xsl:apply-templates />
437 </xsl:template>
438
439 <!-- :::::::::::: third-level glossary sections ::::::::::::: -->
440 <!-- Glossary sections should be contained in a second level section. -->
441
442 <xsl:template match="/gamebook/section/data/section/data/section[@class='glossary'] | /gamebook/section/data/section/data/section[@class='glossary-separate']">
443
444  <xsl:text>\newpage</xsl:text><xsl:value-of select="$newline" />
445  <xsl:text>{\LARGE \hypertarget{</xsl:text>
446   <xsl:value-of select="@id" />
447  <xsl:text>}{</xsl:text>
448  <xsl:value-of select="meta/title" />
449  <xsl:text>}}</xsl:text>
450  <xsl:value-of select="$newparagraph" />
451
452  <xsl:apply-templates />
453 </xsl:template>
454
455 <!-- :::::::::::::::::: numbered sections ::::::::::::::::::::::: -->
456
457 <xsl:template match="/gamebook/section/data/section[@class='numbered']">
458  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text> <xsl:value-of select="$newparagraph" />
459
460  <xsl:if test="position() = 1">
461   <xsl:text>\newcommand{\aonmarks}{
462     \ifthenelse{\equal{\leftmark}{\rightmark}}
463       {\rightmark}
464       {\rightmark{} - \leftmark}}
465   \ifthenelse{\boolean{@twoside}}%
466    {%% Two-sided %%
467     \fancyhead[RO,LE]{\iffloatpage{}{\large{\bfseries \aonmarks}}}
468     \fancyhead[LO,RE]{\iffloatpage{}{\thepage}}}
469    {%% One-sided %%
470     %\fancyhead[R]{\iffloatpage{}{\large{\bfseries \aonmarks}}}
471     %\fancyhead[L]{\iffloatpage{}{\thepage}}}</xsl:text> <xsl:value-of select="$newparagraph" />
472  </xsl:if>
473
474  <xsl:if test="not( self::node()[@id='numbered'] )">
475   <xsl:text>{\huge \hypertarget{</xsl:text>
476    <xsl:value-of select="@id" />
477   <xsl:text>}{</xsl:text>
478   <xsl:value-of select="meta/title" />
479   <xsl:text>}}</xsl:text>
480   <xsl:value-of select="$newline" />
481  </xsl:if>
482  <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
483   <xsl:value-of select="meta/title" />
484  <xsl:text>}}</xsl:text>
485  <xsl:value-of select="$newparagraph" />
486
487  <xsl:apply-templates />
488
489  <xsl:value-of select="$newparagraph" />
490  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
491 </xsl:template>
492
493 <xsl:template match="/gamebook/section/data/section[@class='numbered']/data/section[@class='numbered']">
494  <xsl:variable name="section-title" select="meta/title[1]" />
495
496 <xsl:value-of select="$newline" />
497 <xsl:text>\vspace{\parskip} \hypertarget{</xsl:text>
498 <xsl:value-of select="@id" />
499 <xsl:text>}{} \hspace*{\fill} \markboth{</xsl:text>
500 <xsl:value-of select="$section-title" />
501 <xsl:text>}{</xsl:text>
502 <xsl:value-of select="$section-title" />
503 <xsl:text>} {\Large \bfseries </xsl:text>
504 <xsl:value-of select="$section-title" />
505 <xsl:text>} \hspace*{\fill}\\*[\parskip]</xsl:text>
506 <xsl:value-of select="$newline" />
507
508 <xsl:for-each select="data/illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]">
509  <xsl:text>\hspace*{\fill} \mbox{\itshape \hyperlink{ill</xsl:text>
510  <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="1" />
511  <xsl:text>}{Illustration </xsl:text>
512  <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="I" />
513  <xsl:text>}}\hspace*{\fill}\\*[\parskip]</xsl:text>
514 </xsl:for-each>
515
516  <xsl:apply-templates />
517
518 </xsl:template>
519
520 <!-- :::::::::::: second-level backmatter sections :::::::::::::: -->
521
522 <xsl:template match="/gamebook/section/data/section[@class='backmatter']">
523
524  <xsl:text>\clearpage{}</xsl:text>
525  <xsl:value-of select="$newparagraph" />
526
527  <xsl:text>{\huge \hypertarget{</xsl:text>
528   <xsl:value-of select="@id" />
529  <xsl:text>}{</xsl:text>
530  <xsl:value-of select="meta/title" />
531  <xsl:text>}}</xsl:text>
532  <xsl:value-of select="$newline" />
533  <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
534   <xsl:value-of select="meta/title" />
535  <xsl:text>}}</xsl:text>
536  <xsl:value-of select="$newparagraph" />
537
538  <xsl:apply-templates />
539 </xsl:template>
540
541 <!-- ::::::::::::: third-level back matter sections ::::::::::::: -->
542
543 <xsl:template match="/gamebook/section/data/section/data/section[@class='backmatter']">
544  <xsl:text>{\LARGE \hypertarget{</xsl:text>
545   <xsl:value-of select="@id" />
546  <xsl:text>}{</xsl:text>
547  <xsl:value-of select="meta/title" />
548  <xsl:text>}}</xsl:text>
549  <xsl:value-of select="$newparagraph" />
550
551  <xsl:apply-templates />
552 </xsl:template>
553
554 <!-- ::::::::::::: fourth-level back matter sections ::::::::::::: -->
555
556 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='backmatter']">
557  <xsl:text>{\Large \hypertarget{</xsl:text>
558   <xsl:value-of select="@id" />
559  <xsl:text>}{</xsl:text>
560  <xsl:value-of select="meta/title" />
561  <xsl:text>}}</xsl:text>
562  <xsl:value-of select="$newparagraph" />
563
564  <xsl:apply-templates />
565 </xsl:template>
566
567 <!-- :::::::::::::::::: dedication template ::::::::::::::::::::: -->
568
569 <xsl:template match="id( 'dedicate' )">
570  
571  <xsl:text>\vspace*{\stretch{1}}</xsl:text>
572  <xsl:value-of select="$newparagraph" />
573  <xsl:text>\begin{center}</xsl:text>
574  <xsl:value-of select="$newline" />
575  <xsl:text>\thispagestyle{empty}</xsl:text>
576  <xsl:value-of select="$newline" />
577  <xsl:text>\itshape </xsl:text>
578  <xsl:apply-templates select="data/p" />
579  <xsl:value-of select="$newline" />
580  <xsl:text>\end{center}</xsl:text>
581  <xsl:value-of select="$newparagraph" />
582  <xsl:text>\vspace*{\stretch{3}}</xsl:text>
583  <xsl:value-of select="$newline" />
584
585  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
586  <xsl:value-of select="$newline" />
587  <xsl:text>\tableofcontents</xsl:text>
588  <xsl:value-of select="$newline" />
589  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
590  <xsl:value-of select="$newline" />
591
592  <xsl:text>\setcounter{page}{1}</xsl:text><xsl:value-of select="$newline" />
593  <xsl:text>\pagenumbering{arabic}</xsl:text><xsl:value-of select="$newline" />
594
595 </xsl:template>
596
597 <!-- ::::::::::::::::::::: map template ::::::::::::::::::::::::: -->
598
599 <xsl:template match="id( 'map' )">
600  <xsl:variable name="map-title" select="meta/title" />
601
602  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
603  <xsl:value-of select="$newparagraph" />
604
605   <xsl:for-each select="data/illustration[contains( $use-illustrators, concat( ':', meta/creator, ':' ) ) ]">
606    <xsl:variable name="illustration-src" select="instance[@class='pdf']/@src" />
607
608    <xsl:text>\hypertarget{map}{~}</xsl:text>
609    <xsl:value-of select="$newline" />
610    <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
611     <xsl:value-of select="$map-title" />
612    <xsl:text>}}</xsl:text>
613    <xsl:value-of select="$newparagraph" />
614
615 <!--   <xsl:value-of select="$newline" />
616    <xsl:text>\begin{figure}[!h]</xsl:text>
617    <xsl:value-of select="$newline" />
618     <xsl:text>\centering</xsl:text>
619     <xsl:value-of select="$newline" />
620     <xsl:text>\thispagestyle{empty}</xsl:text>
621     <xsl:value-of select="$newline" />
622     <xsl:text>\rotatebox{90}{\includegraphics[width=550pt,keepaspectratio]{</xsl:text><xsl:value-of select="$illustration-src" /><xsl:text>}}%</xsl:text>
623     <xsl:value-of select="$newline" />
624    <xsl:text>\end{figure}</xsl:text> -->
625
626    <xsl:text>\thispagestyle{empty}</xsl:text><xsl:value-of select="$newline" />
627    <xsl:text>\newlength{\saveunitlength}</xsl:text><xsl:value-of select="$newline" />
628    <xsl:text>\setlength{\saveunitlength}{\unitlength}</xsl:text><xsl:value-of select="$newline" />
629    <xsl:text>\setlength{\unitlength}{1mm}</xsl:text><xsl:value-of select="$newline" />
630    <xsl:text>\ifthenelse{\boolean{@twoside}}%</xsl:text><xsl:value-of select="$newline" />
631    <xsl:text> {%% Two-sided %%</xsl:text><xsl:value-of select="$newline" />
632    <xsl:text>  \begin{picture}(10,10)</xsl:text><xsl:value-of select="$newline" />
633    <xsl:text>  \put(-23,-188){\includegraphics[angle=90,origin=c,width=20cm,height=28cm,keepaspectratio]{map.pdf}}</xsl:text><xsl:value-of select="$newline" />
634    <xsl:text>  \end{picture}}%</xsl:text><xsl:value-of select="$newline" />
635    <xsl:text> {%% One-sided %%</xsl:text><xsl:value-of select="$newline" />
636    <xsl:text>  \begin{picture}(10,10)</xsl:text><xsl:value-of select="$newline" />
637    <xsl:text>  \put(-29,-188){\includegraphics[angle=90,origin=c,width=20cm,height=28cm,keepaspectratio]{map.pdf}}</xsl:text><xsl:value-of select="$newline" />
638    <xsl:text>  \end{picture}}</xsl:text><xsl:value-of select="$newline" />
639    <xsl:text>\setlength{\unitlength}{\saveunitlength}</xsl:text><xsl:value-of select="$newline" />
640
641   </xsl:for-each>
642 </xsl:template>
643
644 <!-- ==================== block elements ======================== -->
645
646 <xsl:template match="p">
647  <xsl:apply-templates />
648  <xsl:value-of select="$newparagraph" />
649 </xsl:template>
650
651 <xsl:template match="ul">
652  <xsl:text>\begin{aonitemize}</xsl:text><xsl:value-of select="$newline" />
653  <xsl:apply-templates />
654  <xsl:text>\end{aonitemize}</xsl:text>
655  <xsl:value-of select="$newparagraph" />
656 </xsl:template>
657
658 <xsl:template match="ul[@class='unbulleted']">
659  <xsl:text>\begin{aonitemize}</xsl:text><xsl:value-of select="$newline" />
660  <xsl:apply-templates />
661  <xsl:text>\end{aonitemize}</xsl:text>
662  <xsl:value-of select="$newparagraph" />
663 </xsl:template>
664
665 <xsl:template match="ol">
666  <xsl:text>\begin{enumerate}</xsl:text><xsl:value-of select="$newline" />
667  <xsl:apply-templates />
668  <xsl:text>\end{enumerate}</xsl:text>
669  <xsl:value-of select="$newparagraph" />
670 </xsl:template>
671
672 <xsl:template match="dl">
673  <xsl:apply-templates />
674 </xsl:template>
675
676 <xsl:template match="table">
677  <xsl:text>\begin{tabular}{*{</xsl:text>
678  <xsl:for-each select="tr[1]">
679   <xsl:for-each select="th[1]">
680    <xsl:number count="th" />
681   </xsl:for-each>
682  </xsl:for-each>
683  <xsl:text>}{l}}</xsl:text>
684  <xsl:value-of select="$newline" />
685   <xsl:apply-templates />
686  <xsl:text>\end{tabular}</xsl:text>
687  <xsl:value-of select="$newparagraph" />
688 </xsl:template>
689
690 <xsl:template match="tr">
691  <xsl:apply-templates />
692  <xsl:text> \\</xsl:text>
693 </xsl:template>
694
695 <xsl:template match="th">
696  <xsl:text>\multicolumn{1}{</xsl:text>
697  <xsl:choose>
698   <xsl:when test="@align='left'"><xsl:text>l}{\bfseries </xsl:text></xsl:when>
699   <xsl:when test="@align='right'"><xsl:text>r}{\bfseries </xsl:text></xsl:when>
700   <xsl:when test="@align='center'"><xsl:text>c}{\bfseries </xsl:text></xsl:when>
701   <xsl:otherwise><xsl:text>l}{\bfseries </xsl:text></xsl:otherwise>
702  </xsl:choose>
703   <xsl:apply-templates />
704  <xsl:text>} </xsl:text>
705  <xsl:if test="position != last()"><xsl:text>&amp;</xsl:text></xsl:if>
706 </xsl:template>
707
708 <xsl:template match="td">
709  <xsl:text>\multicolumn{1}{</xsl:text>
710  <xsl:choose>
711   <xsl:when test="@align='left'"><xsl:text>l}{</xsl:text></xsl:when>
712   <xsl:when test="@align='right'"><xsl:text>r}{</xsl:text></xsl:when>
713   <xsl:when test="@align='center'"><xsl:text>c}{</xsl:text></xsl:when>
714   <xsl:otherwise><xsl:text>l}{</xsl:text></xsl:otherwise>
715  </xsl:choose>
716   <xsl:apply-templates />
717  <xsl:text>} </xsl:text>
718  <xsl:if test="position != last()"><xsl:text>&amp;</xsl:text></xsl:if>
719 </xsl:template>
720
721 <xsl:template match="combat">
722  <xsl:text>\begin{aoncombat}</xsl:text>
723   <xsl:apply-templates select="enemy" />
724   <xsl:choose>
725    <xsl:when test="enemy-attribute[@class='combatskill']">
726     <xsl:text>: {\small COMBAT~SKILL}~</xsl:text>
727     <xsl:value-of select="enemy-attribute[@class='combatskill']" />
728    </xsl:when>
729    <xsl:when test="enemy-attribute[@class='closecombatskill']">
730     <xsl:text>: {\small CLOSE~COMBAT~SKILL}~</xsl:text>
731     <xsl:value-of select="enemy-attribute[@class='closecombatskill']" />
732    </xsl:when>
733   </xsl:choose>
734   <xsl:text> ~~{\small ENDURANCE}~</xsl:text>
735   <xsl:choose>
736    <xsl:when test="enemy-attribute[@class='target']">
737     <xsl:text>~({\small TARGET}~points)~</xsl:text>
738     <xsl:value-of select="enemy-attribute[@class='target']" />
739    </xsl:when>
740    <xsl:when test="enemy-attribute[@class='resistance']">
741     <xsl:text>~({\small RESISTANCE}~points)~</xsl:text>
742     <xsl:value-of select="enemy-attribute[@class='resistance']" />
743    </xsl:when>
744    <xsl:otherwise>
745     <xsl:value-of select="enemy-attribute[@class='endurance']" />
746    </xsl:otherwise>
747   </xsl:choose>
748  <xsl:text>\end{aoncombat}</xsl:text>
749  <xsl:value-of select="$newparagraph" />
750 </xsl:template>
751
752 <xsl:template match="choice">
753  <xsl:variable name="link">
754   <xsl:value-of select="@idref" />
755  </xsl:variable>
756
757  <xsl:text>\begin{aonchoice}</xsl:text>
758   <xsl:for-each select="* | text()">
759    <xsl:choose>
760     <xsl:when test="self::link-text">
761      <xsl:text>\hyperlink{</xsl:text>
762      <xsl:value-of select="$link" />
763      <xsl:text>}{\bfseries </xsl:text>
764       <xsl:apply-templates />
765      <xsl:text>}</xsl:text>
766     </xsl:when>
767     <xsl:otherwise>
768      <xsl:apply-templates select="." />
769     </xsl:otherwise>
770    </xsl:choose>
771   </xsl:for-each>
772  <xsl:text>\end{aonchoice}</xsl:text>
773  <xsl:value-of select="$newparagraph" />
774 </xsl:template>
775
776 <xsl:template match="signpost">
777  <xsl:text>\begin{center}</xsl:text><xsl:apply-templates /><xsl:text>\end{center}</xsl:text>
778  <xsl:value-of select="$newparagraph" />
779 </xsl:template>
780
781 <xsl:template match="blockquote">
782  <xsl:text>\begin{quote}</xsl:text><xsl:apply-templates /><xsl:text>\end{quote}</xsl:text>
783  <xsl:value-of select="$newparagraph" />
784 </xsl:template>
785
786 <xsl:template match="illustration">
787  <xsl:choose>
788   <xsl:when test="instance[@class='pdf'] and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
789    <xsl:text>\begin{figure}[</xsl:text>
790    <xsl:choose>
791     <xsl:when test="@class='inline'">!ht</xsl:when>
792     <xsl:when test="@class='float'">p</xsl:when>
793     <xsl:when test="@class='accent'">bt</xsl:when>
794     <xsl:otherwise><xsl:text>invalid class</xsl:text></xsl:otherwise>
795    </xsl:choose>
796    <xsl:text>]</xsl:text>
797    <xsl:value-of select="$newline" />
798    <xsl:text>\centering</xsl:text>
799    <xsl:value-of select="$newline" />
800    <xsl:text>\includegraphics</xsl:text>
801    <xsl:if test="@class='float'">
802     <!--<xsl:text>[width=\textwidth,keepaspectratio]</xsl:text>-->
803     <xsl:text>[width=\textwidth,height=570pt,keepaspectratio]</xsl:text>
804    </xsl:if>
805    <xsl:text>{</xsl:text>
806     <xsl:value-of select="instance[@class='pdf']/@src" />
807    <xsl:text>} %</xsl:text>
808    <xsl:if test="@class='float'">
809     <xsl:value-of select="$newline" />
810     <xsl:text>\vspace*{\fill}</xsl:text>
811     <xsl:value-of select="$newline" />
812     <xsl:text>\\ \mbox{ \hypertarget{ill</xsl:text>
813      <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="1" />
814     <xsl:text>}{Illustration </xsl:text>
815      <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="I" />
816     <xsl:text>}}\\[1em]{\itshape </xsl:text>
817     <xsl:apply-templates select="meta/description" />
818     <xsl:text>}</xsl:text>
819    </xsl:if>
820    <xsl:value-of select="$newline" />
821    <xsl:text>\end{figure}</xsl:text>
822    <xsl:value-of select="$newline" />
823   </xsl:when>
824
825   <xsl:when test="instance[@class='tex'] and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
826    <xsl:value-of select="$newline" />
827    <xsl:text>\begin{figure}[!h]</xsl:text>
828    <xsl:value-of select="$newline" />
829     <xsl:text>\centering</xsl:text>
830     <xsl:value-of select="$newline" />
831     <xsl:text>\input{</xsl:text><xsl:value-of select="instance[@class='tex']/@src" /><xsl:text>}</xsl:text>
832     <xsl:value-of select="$newline" />
833    <xsl:text>\end{figure}</xsl:text>
834    <xsl:value-of select="$newline" />
835
836    <xsl:text>\clearpage{}</xsl:text>   
837    <xsl:value-of select="$newparagraph" />
838   </xsl:when>
839
840   <xsl:otherwise />
841
842  </xsl:choose>
843 </xsl:template>
844
845 <xsl:template match="instance" />
846
847 <xsl:template match="footnotes" />
848
849 <xsl:template match="footnote">
850  <xsl:apply-templates />
851 </xsl:template>
852
853 <xsl:template match="hr">
854  <xsl:text>\rule{\textwidth}{0.4pt}</xsl:text>
855  <xsl:value-of select="$newline" />
856 </xsl:template>
857
858 <xsl:template match="dt">
859  <xsl:text>{\bfseries </xsl:text><xsl:apply-templates /><xsl:text>}\\*\\*</xsl:text>
860  <xsl:value-of select="$newline" />
861 </xsl:template>
862
863 <xsl:template match="dd">
864  <xsl:apply-templates />
865  <xsl:value-of select="$newparagraph" />
866 </xsl:template>
867
868 <xsl:template match="li">
869  <xsl:text>\item </xsl:text><xsl:apply-templates />
870  <xsl:value-of select="$newline" />
871 </xsl:template>
872
873 <!-- ==================== inline elements ======================= -->
874
875 <xsl:template match="a">
876  <xsl:if test="@idref">
877   <xsl:text>\hyperlink{</xsl:text>
878   <xsl:value-of select="@idref" />
879   <xsl:text>}{</xsl:text>
880  </xsl:if>
881  <xsl:if test="@id">
882   <xsl:text>\hypertarget{</xsl:text>
883   <xsl:value-of select="@id" />
884   <xsl:text>}{</xsl:text>
885  </xsl:if>
886
887  <xsl:apply-templates />
888
889  <xsl:if test="@idref">
890   <xsl:text>}</xsl:text>
891  </xsl:if>
892  <xsl:if test="@id">
893   <xsl:text>}</xsl:text>
894  </xsl:if>
895 </xsl:template>
896
897 <xsl:template match="a[@class='footnote']">
898  <xsl:apply-templates />
899  <xsl:text>\footnote{</xsl:text>
900  <xsl:for-each select="id( @idref )">
901   <xsl:apply-templates />
902  </xsl:for-each>
903  <xsl:text>}</xsl:text>
904 </xsl:template>
905
906 <xsl:template match="em">
907  <xsl:text>\emph{</xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
908 </xsl:template>
909
910 <xsl:template match="strong">
911  <xsl:text>{\bfseries </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
912 </xsl:template>
913
914 <xsl:template match="cite">
915  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
916 </xsl:template>
917
918 <xsl:template match="thought">
919  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
920 </xsl:template>
921
922 <xsl:template match="onomatopoeia">
923  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
924 </xsl:template>
925
926 <xsl:template match="spell">
927  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
928 </xsl:template>
929
930 <xsl:template match="item">
931  <xsl:apply-templates />
932 </xsl:template>
933
934 <xsl:template match="foreign">
935  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
936 </xsl:template>
937
938 <xsl:template match="quote">
939  <xsl:text>&lsquot;</xsl:text>
940   <xsl:apply-templates />
941  <xsl:text>&rsquot;</xsl:text>
942 </xsl:template>
943
944 <xsl:template match="quote//quote">
945  <xsl:text>&ldquot;</xsl:text>
946   <xsl:apply-templates />
947  <xsl:text>&rdquot;</xsl:text>
948 </xsl:template>
949
950 <xsl:template match="code">
951  <xsl:text>{\ttfamily </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
952 </xsl:template>
953
954 <xsl:template match="br">
955  <xsl:text>\\</xsl:text>
956 </xsl:template>
957
958 <xsl:template match="typ[@class='attribute']">
959  <xsl:text>{\small </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
960 </xsl:template>
961
962 <xsl:template match="footnote//typ[@class='attribute']">
963  <xsl:text>{\scriptsize </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
964 </xsl:template>
965
966 </xsl:transform>