Make it possible to generate 29tsoc ebooks
[project-aon.git] / common / xsl / latex-old.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 table tr th td" />
13 <xsl:preserve-space elements="p choice" />
14
15 <!--
16
17 To Implement:
18
19 The implementation of tables is incomplete and kludgy.
20
21 -->
22
23
24 <!-- ====================== parameters ========================== -->
25
26 <xsl:param name="title-color"><xsl:text>0.0,0.0,0.0</xsl:text></xsl:param>
27 <xsl:param name="use-illustrators" />
28 <xsl:param name="language"><xsl:text>en</xsl:text></xsl:param>
29 <xsl:param name="pagelayout"><xsl:text>twoside</xsl:text></xsl:param>
30 <xsl:param name="usesouvenirfont"><xsl:text>no</xsl:text></xsl:param>
31 <xsl:param name="papersize"><xsl:text>a4paper</xsl:text></xsl:param>
32 <xsl:param name="papersize_de"><xsl:text>a5paper</xsl:text></xsl:param>
33 <xsl:param name="papersize_es"><xsl:text>a4paper</xsl:text></xsl:param>
34 <xsl:param name="papersize_us"><xsl:text>letterpaper</xsl:text></xsl:param>
35
36
37 <!-- ======================= variables ========================== -->
38
39 <xsl:variable name="newline">
40 <xsl:text>
41 </xsl:text>
42 </xsl:variable>
43
44 <xsl:variable name="newparagraph">
45  <xsl:value-of select="$newline" />
46  <xsl:value-of select="$newline" />
47 </xsl:variable>
48
49
50 <!-- ======================== Templates ========================= -->
51
52 <!-- ================= hierarchical sections ==================== -->
53
54 <xsl:template match="meta" />
55
56 <!-- ::::::::::::::::::: top-level section :::::::::::::::::::::: -->
57
58 <xsl:template match="/gamebook/section[@id='title']">
59
60 <xsl:text>
61 \RequirePackage{ifpdf}
62 \ifpdf
63     \documentclass[pdftex,a4paper,fontsize=12pt,</xsl:text><xsl:value-of select="$pagelayout" /><xsl:text>,BCOR10mm,DIV=calc,headinclude,cleardoublepage=empty]{scrbook}
64 \else
65     \documentclass[a4paper,fontsize=12pt,</xsl:text><xsl:value-of select="$pagelayout" /><xsl:text>,BCOR10mm,DIV=calc,headinclude,cleardoublepage=empty]{scrbook}
66 \fi
67
68 </xsl:text>
69 <xsl:choose>
70 <xsl:when test="$language='es'">
71     <xsl:text>
72 % Use this if you are compiling spanish PDFs:
73 \usepackage[latin1]{inputenc}
74 \usepackage[spanish]{babel}
75     </xsl:text>
76 </xsl:when>
77 </xsl:choose>
78 <xsl:choose>
79 <xsl:when test="$usesouvenirfont='yes'">
80     <xsl:text>
81 %% Souvenir font %%
82 \usepackage{souvenir}
83 \renewcommand{\rmdefault}{souvnrttf}
84     </xsl:text>
85   <xsl:value-of select="$newline" />
86 </xsl:when>
87 <xsl:otherwise>
88     <xsl:text>
89 %% TrueType font %%
90 \usepackage[T1]{fontenc}
91     </xsl:text>
92 </xsl:otherwise>
93 </xsl:choose>
94
95 <xsl:text>
96 \ifpdf
97     \newcommand{\pdfgraphics}{\ifpdf\DeclareGraphicsExtensions{.pdf,.jpg}\fi}
98 \fi
99
100 %% One-sided %%
101 % For US books:
102 %\documentclass[letterpaper,12pt,oneside]{book}
103 % For european books:
104 %\documentclass[a4paper,12pt,oneside]{book}
105
106  \usepackage{ifpdf}
107  \ifpdf
108      \usepackage[pdftex]{graphicx}
109      \pdfobjcompresslevel=2
110      \pdfminorversion=6
111   \else
112      \usepackage{graphicx}
113   \fi
114  \usepackage[pdftex]{graphicx}
115  \usepackage{pslatex}
116  \usepackage{ifthen}
117  %% color info %%
118  \usepackage{color}
119  \definecolor{titlecolor}{rgb}{</xsl:text><xsl:value-of select="$title-color" /><xsl:text>}
120  \definecolor{lightgray}{gray}{0.75}
121
122  %% headers and footers %%
123  \usepackage{fancyhdr}
124
125  \renewcommand{\chaptermark}[1]{}
126  \renewcommand{\sectionmark}[1]{}
127  \fancyhf{}
128
129  \ifthenelse{\boolean{@twoside}}%
130  {%% Two-sided %%
131   \fancyhead[CO]{\iffloatpage{}{</xsl:text><xsl:value-of select="/gamebook/meta/creator[@class='short']" /><xsl:text>}}
132   \fancyhead[CE]{\iffloatpage{}{\bfseries </xsl:text><xsl:value-of select="/gamebook/meta/title[1]" /><xsl:text>}}
133   \fancyhead[LO,RE]{\iffloatpage{}{\thepage}}}
134  {%% One-sided %%
135   \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>}}}
136   \fancyhead[R]{\iffloatpage{}{\thepage}}}
137   \renewcommand{\headrulewidth}{\iffloatpage{0pt}{0.4pt}}
138
139  \fancypagestyle{plain}{
140   \fancyhf{}
141   \renewcommand{\headrulewidth}{0pt}
142  }
143
144  \fancypagestyle{empty}{
145   \fancyhf{}
146   \renewcommand{\headrulewidth}{0pt}
147  }
148
149  %% hyper-references %%
150  \ifpdf
151     \usepackage[pdftex,colorlinks=true,linkcolor=black,bookmarks=false]{hyperref}
152 % XMP information for PDF file, could actually be done with pdfinfo
153     \usepackage{hyperxmp}
154     \hypersetup{%
155        pdftitle={</xsl:text><xsl:apply-templates select="/gamebook/meta/title[1]" /><xsl:text>},
156        pdfauthor={</xsl:text>
157     <xsl:apply-templates select="/gamebook/meta/rights[@class='copyrights']" />
158     <xsl:choose>
159      <xsl:when test="$language='es'">
160       <xsl:text> Publicado por </xsl:text>
161      </xsl:when>
162      <xsl:otherwise>
163       <xsl:text> Published by </xsl:text>
164      </xsl:otherwise>
165     </xsl:choose>
166     <xsl:apply-templates select="/gamebook/meta/publisher[1]" />
167     <xsl:text>.},
168        pdflicenseurl={http://www.projectaon.org/en/Main/License},
169 %% We need a meta-variable for the series in order to include it here:
170        pdfsubject={Lone Wolf Series},
171        pdfkeywords={lone wolf, project aon}
172      }
173  \else
174      \usepackage[colorlinks=true,linkcolor=black,bookmarks=false]{hyperref}
175  \fi
176
177
178  %% custom style info %%
179  \setlength{\parindent}{0pt}
180  \setlength{\parskip}{1em}
181  \setlength{\headheight}{18pt}
182  \addtolength{\headwidth}{\marginparwidth}
183  \addtolength{\headwidth}{\marginparsep}
184  \setlength{\textheight}{44\baselineskip}
185  \ifthenelse{\lengthtest{\paperwidth = 210mm}}%
186    {%% if A4 (210.0 mm x 297.0 mm)
187    \addtolength{\topmargin}{-1\baselineskip}}%
188    {%% else if letter (8.5" x 11" == 215.9 mm x 279.4 mm)
189    \addtolength{\topmargin}{-2.5\baselineskip}}
190
191  \raggedbottom
192
193  %% new environments %%
194  \newenvironment{aonchoice}{\begin{list}{}{\setlength{\topsep}{0pt}} \item}{\end{list}}
195  \newenvironment{aoncombat}{\begin{list}{}{\setlength{\topsep}{0pt}} \item}{\end{list}}
196  \newenvironment{aonitemize}{\begin{list}{}{\setlength{\topsep}{0pt} \setlength{\parsep}{0pt} \setlength{\itemsep}{0pt}}}{\end{list}}
197  \newenvironment{aonordereditemize}{\begin{list}{\arabic{aoncounter}.}{\usecounter{aoncounter} \setlength{\topsep}{0pt} \setlength{\parsep}{0pt} \setlength{\itemsep}{0pt}}}{\end{list}}
198  \newcounter{aoncounter}
199
200 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
201 \begin{document}
202 \ifpdf
203     \pdfgraphics
204 \fi
205
206 \begin{titlepage}
207
208  \vspace*{\stretch{0.7}}
209  \begin{center}
210   \Huge{\textcolor{titlecolor}{\textbf{</xsl:text><xsl:apply-templates select="/gamebook/meta/title[1]" /><xsl:text>}}} \vspace{-0.8em}\\
211
212   \vspace*{\stretch{1}}
213   \normalsize{</xsl:text><xsl:apply-templates select="/gamebook/meta/creator[@class='medium']" /><xsl:text>}
214  \end{center}
215  \vspace*{\stretch{1.3}}
216
217  \pagestyle{empty}
218
219  \newpage
220
221  \vspace*{\stretch{1}}
222
223  </xsl:text>
224  <xsl:apply-templates select="/gamebook/meta/rights[@class='license-notification']" />
225
226    <xsl:choose>
227     <xsl:when test="$language='es'">
228      <xsl:text>Fecha de Publicaci&oacute;n: </xsl:text>
229     </xsl:when>
230     <xsl:otherwise>
231      <xsl:text>Publication Date: </xsl:text>
232     </xsl:otherwise>
233    </xsl:choose>
234    <xsl:value-of select="/gamebook/meta/date[@class='publication']/day" />
235    <xsl:text> </xsl:text>
236    <xsl:choose>
237     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 1">
238      <xsl:choose>
239       <xsl:when test="$language='es'"><xsl:text>de enero de</xsl:text></xsl:when>
240       <xsl:otherwise><xsl:text>January</xsl:text></xsl:otherwise>
241      </xsl:choose>
242     </xsl:when>
243     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 2">
244      <xsl:choose>
245       <xsl:when test="$language='es'"><xsl:text>de febrero de</xsl:text></xsl:when>
246       <xsl:otherwise><xsl:text>February</xsl:text></xsl:otherwise>
247      </xsl:choose>
248     </xsl:when>
249     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 3">
250      <xsl:choose>
251       <xsl:when test="$language='es'"><xsl:text>de marzo de</xsl:text></xsl:when>
252       <xsl:otherwise><xsl:text>March</xsl:text></xsl:otherwise>
253      </xsl:choose>
254     </xsl:when>
255     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 4">
256      <xsl:choose>
257       <xsl:when test="$language='es'"><xsl:text>de abril de</xsl:text></xsl:when>
258       <xsl:otherwise><xsl:text>April</xsl:text></xsl:otherwise>
259      </xsl:choose>
260     </xsl:when>
261     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 5">
262      <xsl:choose>
263       <xsl:when test="$language='es'"><xsl:text>de mayo de</xsl:text></xsl:when>
264       <xsl:otherwise><xsl:text>May</xsl:text></xsl:otherwise>
265      </xsl:choose>
266     </xsl:when>
267     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 6">
268      <xsl:choose>
269       <xsl:when test="$language='es'"><xsl:text>de junio de</xsl:text></xsl:when>
270       <xsl:otherwise><xsl:text>June</xsl:text></xsl:otherwise>
271      </xsl:choose>
272     </xsl:when>
273     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 7">
274      <xsl:choose>
275       <xsl:when test="$language='es'"><xsl:text>de julio de</xsl:text></xsl:when>
276       <xsl:otherwise><xsl:text>July</xsl:text></xsl:otherwise>
277      </xsl:choose>
278     </xsl:when>
279     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 8">
280      <xsl:choose>
281       <xsl:when test="$language='es'"><xsl:text>de agosto de</xsl:text></xsl:when>
282       <xsl:otherwise><xsl:text>August</xsl:text></xsl:otherwise>
283      </xsl:choose>
284     </xsl:when>
285     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 9">
286      <xsl:choose>
287       <xsl:when test="$language='es'"><xsl:text>de septiembre de</xsl:text></xsl:when>
288       <xsl:otherwise><xsl:text>September</xsl:text></xsl:otherwise>
289      </xsl:choose>
290     </xsl:when>
291     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 10">
292      <xsl:choose>
293       <xsl:when test="$language='es'"><xsl:text>de octubre de</xsl:text></xsl:when>
294       <xsl:otherwise><xsl:text>October</xsl:text></xsl:otherwise>
295      </xsl:choose>
296     </xsl:when>
297     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 11">
298      <xsl:choose>
299       <xsl:when test="$language='es'"><xsl:text>de noviembre de</xsl:text></xsl:when>
300       <xsl:otherwise><xsl:text>November</xsl:text></xsl:otherwise>
301      </xsl:choose>
302     </xsl:when>
303     <xsl:when test="/gamebook/meta/date[@class='publication']/month = 12">
304      <xsl:choose>
305       <xsl:when test="$language='es'"><xsl:text>de diciembre de</xsl:text></xsl:when>
306       <xsl:otherwise><xsl:text>December</xsl:text></xsl:otherwise>
307      </xsl:choose>
308     </xsl:when>
309     <xsl:otherwise>
310      <xsl:text>Invalid Month</xsl:text>
311     </xsl:otherwise>
312    </xsl:choose>
313  <xsl:text> </xsl:text>
314  <xsl:value-of select="/gamebook/meta/date[@class='publication']/year" />
315  <xsl:text>
316
317  </xsl:text>
318  <xsl:apply-templates select="/gamebook/meta/description[@class='publication']" />
319  <xsl:text>
320
321  \vspace*{\stretch{3}}
322
323  \pagestyle{empty}
324
325 \end{titlepage}
326
327 \clearpage{\pagestyle{empty}\cleardoublepage}
328
329  \vspace*{\stretch{1}}
330
331  \thispagestyle{empty}
332  </xsl:text>
333  <xsl:apply-templates select="/gamebook/meta/description[@class='blurb']" />
334  <xsl:apply-templates select="/gamebook/meta/creator[@class='long']" />
335  <xsl:text>
336
337  \vspace*{\stretch{3}}
338
339 \clearpage{\pagestyle{empty}\cleardoublepage}
340
341  \pagestyle{fancy}
342
343 \begin{frontmatter}
344 </xsl:text>
345
346  <xsl:apply-templates select="data/section[@class='frontmatter']" />
347
348 <xsl:text>
349 \end{frontmatter}
350
351 </xsl:text>
352 <xsl:if test="data/section[@class='mainmatter']">
353  <xsl:text>\begin{mainmatter}
354
355  </xsl:text>
356
357  <xsl:apply-templates select="data/section[@class='mainmatter']" />
358
359  <xsl:text>
360  \end{mainmatter}
361  </xsl:text>
362 </xsl:if>
363
364 <xsl:if test="data/section[@class='numbered']">
365  <xsl:apply-templates select="data/section[@class='numbered']" />
366 </xsl:if>
367
368  <xsl:text>
369 \begin{backmatter}
370 \ifthenelse{\boolean{@twoside}}%
371  {%% Two-sided %%
372   \fancyhead[RO,LE]{}}
373  {%% One-sided %%
374   \fancyhead[R]{}}
375
376  \setcounter{topnumber}{6}
377  \renewcommand{\topfraction}{1}
378  \renewcommand{\textfraction}{0}
379  \setlength{\floatsep}{10pt}
380
381  </xsl:text>
382  <xsl:apply-templates select="data/section[@class='backmatter']" />
383  <xsl:text>
384
385 \end{backmatter}
386
387 \end{document}
388 </xsl:text>
389
390 </xsl:template>
391
392 <xsl:template match="/gamebook/section[@id='toc']" />
393
394 <xsl:template match="section" />
395
396 <!-- ::::::::::: second-level frontmatter sections :::::::::::::: -->
397
398 <xsl:template match="/gamebook/section/data/section[@class='frontmatter']">
399
400  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
401  <xsl:value-of select="$newparagraph" />
402
403  <xsl:text>{\huge \hypertarget{</xsl:text>
404   <xsl:value-of select="@id" />
405  <xsl:text>}{</xsl:text>
406  <xsl:apply-templates select="meta/title" />
407  <xsl:text>}}</xsl:text>
408  <xsl:value-of select="$newline" />
409  <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
410   <xsl:apply-templates select="meta/title" />
411  <xsl:text>}}</xsl:text>
412  <xsl:value-of select="$newparagraph" />
413
414  <xsl:apply-templates />
415
416 </xsl:template>
417
418 <!-- :::::::::::: third-level front matter sections ::::::::::::: -->
419
420 <xsl:template match="/gamebook/section/data/section/data/section[@class='frontmatter']">
421
422  <xsl:text>{\LARGE \hypertarget{</xsl:text>
423   <xsl:value-of select="@id" />
424  <xsl:text>}{</xsl:text>
425  <xsl:apply-templates select="meta/title" />
426  <xsl:text>}}</xsl:text>
427  <xsl:value-of select="$newparagraph" />
428
429  <xsl:apply-templates />
430 </xsl:template>
431
432 <xsl:template match="/gamebook/section/data/section/data/section[@class='frontmatter-separate']">
433
434  <xsl:text>\newpage</xsl:text><xsl:value-of select="$newline" />
435  <xsl:text>{\LARGE \hypertarget{</xsl:text>
436   <xsl:value-of select="@id" />
437  <xsl:text>}{</xsl:text>
438  <xsl:apply-templates select="meta/title" />
439  <xsl:text>}}</xsl:text>
440  <xsl:value-of select="$newline" />
441  <xsl:text>\addcontentsline{toc}{subsection}{\protect\numberline{}{</xsl:text>
442   <xsl:apply-templates select="meta/title" />
443  <xsl:text>}}</xsl:text>
444  <xsl:value-of select="$newparagraph" />
445
446  <xsl:apply-templates />
447 </xsl:template>
448
449 <!-- :::::::::::: fourth-level front matter sections :::::::::::: -->
450
451 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='frontmatter']">
452  <xsl:text>{\Large \hypertarget{</xsl:text>
453   <xsl:value-of select="@id" />
454  <xsl:text>}{</xsl:text>
455  <xsl:apply-templates select="meta/title" />
456  <xsl:text>}}</xsl:text>
457  <xsl:value-of select="$newparagraph" />
458
459  <xsl:apply-templates />
460 </xsl:template>
461
462 <!-- ::::::::::::: fifth-level front matter sections :::::::::::: -->
463
464 <xsl:template match="/gamebook/section/data/section/data/section/data/section/data/section[@class='frontmatter']">
465  <xsl:text>{\large \hypertarget{</xsl:text>
466   <xsl:value-of select="@id" />
467  <xsl:text>}{</xsl:text>
468  <xsl:apply-templates select="meta/title" />
469  <xsl:text>}}</xsl:text>
470  <xsl:value-of select="$newparagraph" />
471
472  <xsl:apply-templates />
473 </xsl:template>
474
475 <!-- ::::::::::: second-level main matter sections :::::::::::::: -->
476
477 <xsl:template match="/gamebook/section/data/section[@class='mainmatter']">
478  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
479  <xsl:value-of select="$newparagraph" />
480
481  <xsl:text>{\huge \hypertarget{</xsl:text>
482   <xsl:value-of select="@id" />
483  <xsl:text>}{</xsl:text>
484  <xsl:apply-templates select="meta/title" />
485  <xsl:text>}}</xsl:text>
486  <xsl:value-of select="$newline" />
487  <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
488   <xsl:apply-templates select="meta/title" />
489  <xsl:text>}}</xsl:text>
490  <xsl:value-of select="$newparagraph" />
491
492  <xsl:apply-templates />
493
494 </xsl:template>
495
496 <!-- :::::::::::: third-level main matter sections ::::::::::::: -->
497
498 <xsl:template match="/gamebook/section/data/section/data/section[@class='mainmatter'] | /gamebook/section/data/section/data/section[@class='mainmatter-separate']">
499
500  <xsl:text>\newpage</xsl:text><xsl:value-of select="$newline" />
501  <xsl:text>{\LARGE \hypertarget{</xsl:text>
502   <xsl:value-of select="@id" />
503  <xsl:text>}{</xsl:text>
504  <xsl:apply-templates select="meta/title" />
505  <xsl:text>}}</xsl:text>
506  <xsl:value-of select="$newline" />
507  <xsl:text>\addcontentsline{toc}{subsection}{\protect\numberline{}{</xsl:text>
508   <xsl:apply-templates select="meta/title" />
509  <xsl:text>}}</xsl:text>
510  <xsl:value-of select="$newparagraph" />
511
512  <xsl:apply-templates />
513 </xsl:template>
514
515 <!-- :::::::::::: fourth-level main matter sections :::::::::::: -->
516
517 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='mainmatter'] | /gamebook/section/data/section/data/section/data/section[@class='mainmatter-separate']">
518  <xsl:text>{\Large \hypertarget{</xsl:text>
519   <xsl:value-of select="@id" />
520  <xsl:text>}{</xsl:text>
521  <xsl:apply-templates select="meta/title" />
522  <xsl:text>}}</xsl:text>
523  <xsl:value-of select="$newparagraph" />
524
525  <xsl:apply-templates />
526 </xsl:template>
527
528 <!-- ::::::::::::: fifth-level main matter sections :::::::::::: -->
529
530 <xsl:template match="/gamebook/section/data/section/data/section/data/section/data/section[@class='mainmatter']">
531  <xsl:text>{\large \hypertarget{</xsl:text>
532   <xsl:value-of select="@id" />
533  <xsl:text>}{</xsl:text>
534  <xsl:apply-templates 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 glossary sections ::::::::::::: -->
542 <!-- Glossary sections should be contained in a second level section. -->
543
544 <xsl:template match="/gamebook/section/data/section/data/section[@class='glossary'] | /gamebook/section/data/section/data/section[@class='glossary-separate']">
545
546  <xsl:text>\newpage</xsl:text><xsl:value-of select="$newline" />
547  <xsl:text>{\LARGE \hypertarget{</xsl:text>
548   <xsl:value-of select="@id" />
549  <xsl:text>}{</xsl:text>
550  <xsl:apply-templates select="meta/title" />
551  <xsl:text>}}</xsl:text>
552  <xsl:value-of select="$newparagraph" />
553
554  <xsl:apply-templates />
555 </xsl:template>
556
557 <!-- :::::::::::::::::: numbered sections ::::::::::::::::::::::: -->
558
559 <xsl:template match="/gamebook/section/data/section[@class='numbered']">
560  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text> <xsl:value-of select="$newparagraph" />
561
562  <xsl:if test="position() = 1">
563   <xsl:text>\newcommand{\aonmarks}{
564     \ifthenelse{\equal{\leftmark}{\rightmark}}
565       {\rightmark}
566       {\rightmark{} - \leftmark}
567   \ifthenelse{\boolean{@twoside}}%
568    {%% Two-sided %%
569     \fancyhead[RO,LE]{\iffloatpage{}{\large{\bfseries \aonmarks}}}
570     \fancyhead[LO,RE]{\iffloatpage{}{\thepage}}}
571    {%% One-sided %%
572     \fancyhead[R]{\iffloatpage{}{\large{\bfseries \aonmarks}}}
573     \fancyhead[L]{\iffloatpage{}{\thepage}}%
574     }
575    }</xsl:text> <xsl:value-of select="$newparagraph" />
576  </xsl:if>
577
578  <xsl:if test="not( self::node()[@id='numbered'] )">
579   <xsl:text>{\huge \hypertarget{</xsl:text>
580    <xsl:value-of select="@id" />
581   <xsl:text>}{</xsl:text>
582   <xsl:apply-templates select="meta/title" />
583   <xsl:text>}}</xsl:text>
584   <xsl:value-of select="$newline" />
585  </xsl:if>
586  <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
587   <xsl:apply-templates select="meta/title" />
588  <xsl:text>}}</xsl:text>
589  <xsl:value-of select="$newparagraph" />
590
591  <xsl:apply-templates />
592
593  <xsl:value-of select="$newparagraph" />
594  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
595 </xsl:template>
596
597 <xsl:template match="/gamebook/section/data/section[@class='numbered']/data/section[@class='numbered']">
598  <xsl:variable name="section-title" select="meta/title[1]" />
599
600 <xsl:value-of select="$newline" />
601 <xsl:text>\vspace{\parskip} \hypertarget{</xsl:text>
602 <xsl:value-of select="@id" />
603 <xsl:text>}{} \hspace*{\fill} \markboth{</xsl:text>
604 <xsl:value-of select="$section-title" />
605 <xsl:text>}{</xsl:text>
606 <xsl:value-of select="$section-title" />
607 <xsl:text>} {\Large \bfseries </xsl:text>
608 <xsl:value-of select="$section-title" />
609 <xsl:text>} \hspace*{\fill}\\*[\parskip]</xsl:text>
610 <xsl:value-of select="$newline" />
611
612 <xsl:for-each select="data/illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]">
613  <xsl:text>\hspace*{\fill} \mbox{\itshape \hyperlink{ill</xsl:text>
614  <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="1" />
615        <xsl:choose>
616         <xsl:when test="$language='es'">
617  <xsl:text>}{Ilustraci&oacute;n </xsl:text>
618         </xsl:when>
619         <xsl:otherwise>
620  <xsl:text>}{Illustration </xsl:text>
621         </xsl:otherwise>
622        </xsl:choose>
623  <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="I" />
624  <xsl:text>}}\hspace*{\fill}\\*[\parskip]</xsl:text>
625 </xsl:for-each>
626
627  <xsl:apply-templates />
628
629 </xsl:template>
630
631 <!-- :::::::::::: second-level backmatter sections :::::::::::::: -->
632
633 <xsl:template match="/gamebook/section/data/section[@class='backmatter']">
634
635  <xsl:text>\clearpage{}</xsl:text>
636  <xsl:value-of select="$newparagraph" />
637
638  <xsl:text>{\huge \hypertarget{</xsl:text>
639   <xsl:value-of select="@id" />
640  <xsl:text>}{</xsl:text>
641  <xsl:apply-templates select="meta/title" />
642  <xsl:text>}}</xsl:text>
643  <xsl:value-of select="$newline" />
644  <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
645   <xsl:apply-templates select="meta/title" />
646  <xsl:text>}}</xsl:text>
647  <xsl:value-of select="$newparagraph" />
648
649  <xsl:apply-templates />
650 </xsl:template>
651
652 <!-- ::::::::::::: third-level back matter sections ::::::::::::: -->
653
654 <xsl:template match="/gamebook/section/data/section/data/section[@class='backmatter']">
655  <xsl:text>{\LARGE \hypertarget{</xsl:text>
656   <xsl:value-of select="@id" />
657  <xsl:text>}{</xsl:text>
658  <xsl:apply-templates select="meta/title" />
659  <xsl:text>}}</xsl:text>
660  <xsl:value-of select="$newparagraph" />
661
662  <xsl:apply-templates />
663 </xsl:template>
664
665 <!-- ::::::::::::: fourth-level back matter sections ::::::::::::: -->
666
667 <xsl:template match="/gamebook/section/data/section/data/section/data/section[@class='backmatter']">
668  <xsl:text>{\Large \hypertarget{</xsl:text>
669   <xsl:value-of select="@id" />
670  <xsl:text>}{</xsl:text>
671  <xsl:apply-templates select="meta/title" />
672  <xsl:text>}}</xsl:text>
673  <xsl:value-of select="$newparagraph" />
674
675  <xsl:apply-templates />
676 </xsl:template>
677
678 <!-- :::::::::::::::::: dedication template ::::::::::::::::::::: -->
679
680 <xsl:template match="id( 'dedicate' )">
681  
682  <xsl:text>\vspace*{\stretch{1}}</xsl:text>
683  <xsl:value-of select="$newparagraph" />
684  <xsl:text>\begin{center}</xsl:text>
685  <xsl:value-of select="$newline" />
686  <xsl:text>\thispagestyle{empty}</xsl:text>
687  <xsl:value-of select="$newline" />
688  <xsl:text>\itshape </xsl:text>
689  <xsl:apply-templates select="data/p" />
690  <xsl:value-of select="$newline" />
691  <xsl:text>\end{center}</xsl:text>
692  <xsl:value-of select="$newparagraph" />
693  <xsl:text>\vspace*{\stretch{3}}</xsl:text>
694  <xsl:value-of select="$newline" />
695
696  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
697  <xsl:value-of select="$newline" />
698  <xsl:text>\tableofcontents</xsl:text>
699  <xsl:value-of select="$newline" />
700  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
701  <xsl:value-of select="$newline" />
702
703  <xsl:text>\setcounter{page}{1}</xsl:text><xsl:value-of select="$newline" />
704  <xsl:text>\pagenumbering{arabic}</xsl:text><xsl:value-of select="$newline" />
705
706 </xsl:template>
707
708 <!-- ::::::::::::::::::::: map template ::::::::::::::::::::::::: -->
709
710 <xsl:template match="id( 'map' )">
711  <xsl:variable name="map-title" select="meta/title" />
712
713  <xsl:text>\clearpage{\pagestyle{empty}\cleardoublepage}</xsl:text>
714  <xsl:value-of select="$newparagraph" />
715
716   <xsl:for-each select="data/illustration[contains( $use-illustrators, concat( ':', meta/creator, ':' ) ) ]">
717    <xsl:variable name="illustration-src" select="instance[@class='pdf']/@src" />
718
719    <xsl:text>\hypertarget{map}{map}</xsl:text>
720    <xsl:value-of select="$newline" />
721    <xsl:text>\addcontentsline{toc}{section}{\protect\numberline{}{</xsl:text>
722     <xsl:apply-templates select="$map-title" />
723    <xsl:text>}}</xsl:text>
724    <xsl:value-of select="$newparagraph" />
725
726 <!--   <xsl:value-of select="$newline" />
727    <xsl:text>\begin{figure}[!h]</xsl:text>
728    <xsl:value-of select="$newline" />
729     <xsl:text>\centering</xsl:text>
730     <xsl:value-of select="$newline" />
731     <xsl:text>\thispagestyle{empty}</xsl:text>
732     <xsl:value-of select="$newline" />
733     <xsl:text>\rotatebox{90}{\includegraphics[width=550pt,keepaspectratio]{</xsl:text><xsl:value-of select="$illustration-src" /><xsl:text>}}%</xsl:text>
734     <xsl:value-of select="$newline" />
735    <xsl:text>\end{figure}</xsl:text> -->
736
737    <xsl:text>\thispagestyle{empty}</xsl:text><xsl:value-of select="$newline" />
738    <xsl:text>\newlength{\saveunitlength}</xsl:text><xsl:value-of select="$newline" />
739    <xsl:text>\setlength{\saveunitlength}{\unitlength}</xsl:text><xsl:value-of select="$newline" />
740    <xsl:text>\setlength{\unitlength}{1mm}</xsl:text><xsl:value-of select="$newline" />
741    <xsl:text>\ifthenelse{\boolean{@twoside}}%</xsl:text><xsl:value-of select="$newline" />
742    <xsl:text> {%% Two-sided %%</xsl:text><xsl:value-of select="$newline" />
743    <xsl:text>  \begin{picture}(10,10)</xsl:text><xsl:value-of select="$newline" />
744    <xsl:text>  \put(-23,-188){\includegraphics[angle=90,origin=c,width=20cm,height=28cm,keepaspectratio]{map.pdf}}</xsl:text><xsl:value-of select="$newline" />
745    <xsl:text>  \end{picture}}%</xsl:text><xsl:value-of select="$newline" />
746    <xsl:text> {%% One-sided %%</xsl:text><xsl:value-of select="$newline" />
747    <xsl:text>  \begin{picture}(10,10)</xsl:text><xsl:value-of select="$newline" />
748    <xsl:text>  \put(-29,-188){\includegraphics[angle=90,origin=c,width=20cm,height=28cm,keepaspectratio]{map.pdf}}</xsl:text><xsl:value-of select="$newline" />
749    <xsl:text>  \end{picture}}</xsl:text><xsl:value-of select="$newline" />
750    <xsl:text>\setlength{\unitlength}{\saveunitlength}</xsl:text><xsl:value-of select="$newline" />
751
752   </xsl:for-each>
753 </xsl:template>
754
755 <!-- ==================== block elements ======================== -->
756
757 <xsl:template match="p">
758  <xsl:apply-templates />
759  <xsl:value-of select="$newparagraph" />
760 </xsl:template>
761
762 <xsl:template match="ul">
763  <xsl:text>\begin{aonitemize}</xsl:text><xsl:value-of select="$newline" />
764  <xsl:apply-templates />
765  <xsl:text>\end{aonitemize}</xsl:text>
766  <xsl:value-of select="$newparagraph" />
767 </xsl:template>
768
769 <xsl:template match="ul[@class='unbulleted']">
770  <xsl:text>\begin{aonitemize}</xsl:text><xsl:value-of select="$newline" />
771  <xsl:apply-templates />
772  <xsl:text>\end{aonitemize}</xsl:text>
773  <xsl:value-of select="$newparagraph" />
774 </xsl:template>
775
776 <xsl:template match="ol">
777  <xsl:text>\begin{enumerate}</xsl:text><xsl:value-of select="$newline" />
778  <xsl:apply-templates />
779  <xsl:text>\end{enumerate}</xsl:text>
780  <xsl:value-of select="$newparagraph" />
781 </xsl:template>
782
783 <xsl:template match="dl">
784  <xsl:apply-templates />
785 </xsl:template>
786
787 <xsl:template match="table">
788  <xsl:text>\begin{tabular}{*{</xsl:text>
789  <xsl:for-each select="tr[1]">
790    <xsl:value-of select="count(descendant::*[not(child::*)])" />
791  </xsl:for-each>
792  <xsl:text>}{l}}</xsl:text>
793  <xsl:value-of select="$newline" />
794   <xsl:apply-templates />
795  <xsl:text>\end{tabular}</xsl:text>
796  <xsl:value-of select="$newparagraph" />
797 </xsl:template>
798
799 <xsl:template match="tr">
800  <xsl:apply-templates />
801  <xsl:text>\\&#10;</xsl:text>
802 </xsl:template>
803
804 <xsl:template match="th">
805  <xsl:text>\multicolumn{</xsl:text>
806     <xsl:choose>
807     <xsl:when test="@colspan!=0"><xsl:value-of select="@colspan" /></xsl:when>
808     <xsl:otherwise><xsl:text>1</xsl:text></xsl:otherwise>
809     </xsl:choose>
810  <xsl:text>}{</xsl:text>
811  <xsl:choose>
812   <xsl:when test="@align='left'"><xsl:text>l}{\bfseries </xsl:text></xsl:when>
813   <xsl:when test="@align='right'"><xsl:text>r}{\bfseries </xsl:text></xsl:when>
814   <xsl:when test="@align='center'"><xsl:text>c}{\bfseries </xsl:text></xsl:when>
815   <xsl:otherwise><xsl:text>l}{\bfseries </xsl:text></xsl:otherwise>
816  </xsl:choose>
817   <xsl:apply-templates />
818  <xsl:text>} </xsl:text>
819  <xsl:if test="position()!=last()"><xsl:text> &amp; </xsl:text></xsl:if>
820 </xsl:template>
821
822 <xsl:template match="td">
823  <xsl:text>\multicolumn{</xsl:text>
824     <xsl:choose>
825     <xsl:when test="@colspan!=0"><xsl:value-of select="@colspan" /></xsl:when>
826     <xsl:otherwise><xsl:text>1</xsl:text></xsl:otherwise>
827     </xsl:choose>
828  <xsl:text>}{</xsl:text>
829  <xsl:choose>
830   <xsl:when test="@align='left'"><xsl:text>l}{</xsl:text></xsl:when>
831   <xsl:when test="@align='right'"><xsl:text>r}{</xsl:text></xsl:when>
832   <xsl:when test="@align='center'"><xsl:text>c}{</xsl:text></xsl:when>
833   <xsl:otherwise><xsl:text>l}{</xsl:text></xsl:otherwise>
834  </xsl:choose>
835   <xsl:apply-templates />
836  <xsl:text>} </xsl:text>
837  <xsl:if test="position()!=last()"><xsl:text> &amp; </xsl:text></xsl:if>
838 </xsl:template>
839
840 <xsl:template match="combat">
841  <xsl:text>\begin{aoncombat}</xsl:text>
842   <xsl:apply-templates select="enemy" />
843   <xsl:choose>
844    <xsl:when test="enemy-attribute[@class='combatskill']">
845     <xsl:choose>
846      <xsl:when test="$language='es'">
847       <xsl:text>: {\small DESTREZA~EN~EL~COMBATE}~</xsl:text>
848      </xsl:when>
849      <xsl:otherwise>
850       <xsl:text>: {\small COMBAT~SKILL}~</xsl:text>
851      </xsl:otherwise>
852     </xsl:choose>
853     <xsl:value-of select="enemy-attribute[@class='combatskill']" />
854    </xsl:when>
855    <xsl:when test="enemy-attribute[@class='closecombatskill']">
856     <xsl:choose>
857      <xsl:when test="$language='es'">
858       <xsl:text>: {\small DESTREZA~EN~EL~COMBATE~DE~PROXIMIDAD}~</xsl:text>
859      </xsl:when>
860      <xsl:otherwise>
861       <xsl:text>: {\small CLOSE~COMBAT~SKILL}~</xsl:text>
862      </xsl:otherwise>
863     </xsl:choose>
864     <xsl:value-of select="enemy-attribute[@class='closecombatskill']" />
865    </xsl:when>
866   </xsl:choose>
867   <xsl:choose>
868    <xsl:when test="enemy-attribute[@class='endurance']">
869     <xsl:choose>
870      <xsl:when test="$language='es'">
871       <xsl:text> ~~{\small RESISTENCIA}~</xsl:text>
872      </xsl:when>
873      <xsl:otherwise>
874       <xsl:text> ~~{\small ENDURANCE}~</xsl:text>
875      </xsl:otherwise>
876     </xsl:choose>
877     <xsl:value-of select="enemy-attribute[@class='endurance']" />
878    </xsl:when>
879    <xsl:when test="enemy-attribute[@class='target']">
880     <xsl:choose>
881      <xsl:when test="$language='es'">
882       <xsl:text>~(puntos~de~{\small OBJETIVO})~</xsl:text>
883      </xsl:when>
884      <xsl:otherwise>
885       <xsl:text>~({\small TARGET}~points)~</xsl:text>
886      </xsl:otherwise>
887     </xsl:choose>
888     <xsl:value-of select="enemy-attribute[@class='target']" />
889    </xsl:when>
890    <xsl:when test="enemy-attribute[@class='resistance']">
891     <xsl:choose>
892      <xsl:when test="$language='es'">
893       <xsl:text>~(puntos~de~{\small RESISTENCIA})~</xsl:text>
894      </xsl:when>
895      <xsl:otherwise>
896       <xsl:text>~({\small RESISTANCE}~points)~</xsl:text>
897      </xsl:otherwise>
898     </xsl:choose>
899     <xsl:value-of select="enemy-attribute[@class='resistance']" />
900    </xsl:when>
901   </xsl:choose>
902  <xsl:text>\end{aoncombat}</xsl:text>
903  <xsl:value-of select="$newparagraph" />
904 </xsl:template>
905
906 <xsl:template match="choice">
907  <xsl:variable name="link">
908   <xsl:value-of select="@idref" />
909  </xsl:variable>
910
911  <xsl:text>\nopagebreak\begin{aonchoice}</xsl:text>
912   <xsl:for-each select="* | text()">
913    <xsl:choose>
914     <xsl:when test="self::link-text">
915      <xsl:text>\hyperlink{</xsl:text>
916      <xsl:value-of select="$link" />
917      <xsl:text>}{\bfseries </xsl:text>
918       <xsl:apply-templates />
919      <xsl:text>}</xsl:text>
920     </xsl:when>
921     <xsl:otherwise>
922      <xsl:apply-templates select="." />
923     </xsl:otherwise>
924    </xsl:choose>
925   </xsl:for-each>
926  <xsl:text>\end{aonchoice}</xsl:text>
927  <xsl:value-of select="$newparagraph" />
928 </xsl:template>
929
930 <xsl:template match="signpost">
931  <xsl:text>\begin{center}</xsl:text><xsl:apply-templates /><xsl:text>\end{center}</xsl:text>
932  <xsl:value-of select="$newparagraph" />
933 </xsl:template>
934
935 <xsl:template match="blockquote">
936  <xsl:text>\begin{quote}</xsl:text><xsl:apply-templates /><xsl:text>\end{quote}</xsl:text>
937  <xsl:value-of select="$newparagraph" />
938 </xsl:template>
939
940 <xsl:template match="illustration">
941  <xsl:choose>
942   <xsl:when test="instance[@class='pdf'] and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
943    <xsl:text>\begin{figure}[</xsl:text>
944    <xsl:choose>
945     <xsl:when test="@class='inline'">!ht</xsl:when>
946     <xsl:when test="@class='float'">p</xsl:when>
947     <xsl:when test="@class='accent'">bt</xsl:when>
948     <xsl:otherwise><xsl:text>invalid class</xsl:text></xsl:otherwise>
949    </xsl:choose>
950    <xsl:text>]</xsl:text>
951    <xsl:value-of select="$newline" />
952    <xsl:text>\centering</xsl:text>
953    <xsl:value-of select="$newline" />
954    <xsl:text>\includegraphics</xsl:text>
955    <xsl:if test="@class='float'">
956     <!--<xsl:text>[width=\textwidth,keepaspectratio]</xsl:text>-->
957     <xsl:text>[width=\textwidth,height=570pt,keepaspectratio]</xsl:text>
958    </xsl:if>
959    <xsl:text>{</xsl:text>
960     <xsl:value-of select="instance[@class='pdf']/@src" />
961    <xsl:text>} %</xsl:text>
962    <xsl:if test="@class='float'">
963     <xsl:value-of select="$newline" />
964     <xsl:text>\vspace*{\fill}</xsl:text>
965     <xsl:value-of select="$newline" />
966     <xsl:text>\\ \mbox{ \hypertarget{ill</xsl:text>
967      <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="1" />
968        <xsl:choose>
969         <xsl:when test="$language='es'">
970             <xsl:text>}{Ilustraci&oacute;n </xsl:text>
971         </xsl:when>
972         <xsl:otherwise>
973             <xsl:text>}{Illustration </xsl:text>
974         </xsl:otherwise>
975        </xsl:choose>
976      <xsl:number count="illustration[@class='float' and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )]" from="/" level="any" format="I" />
977     <xsl:text>}}\\[1em]{\itshape </xsl:text>
978     <xsl:apply-templates select="meta/description" />
979     <xsl:text>}</xsl:text>
980    </xsl:if>
981    <xsl:value-of select="$newline" />
982    <xsl:text>\end{figure}</xsl:text>
983    <xsl:value-of select="$newline" />
984   </xsl:when>
985
986   <xsl:when test="instance[@class='tex'] and contains( $use-illustrators, concat( ':', meta/creator, ':' ) )">
987    <xsl:value-of select="$newline" />
988    <xsl:text>\begin{figure}[!h]</xsl:text>
989    <xsl:value-of select="$newline" />
990     <xsl:text>\centering</xsl:text>
991     <xsl:value-of select="$newline" />
992     <xsl:text>\input{</xsl:text><xsl:value-of select="instance[@class='tex']/@src" /><xsl:text>}</xsl:text>
993     <xsl:value-of select="$newline" />
994    <xsl:text>\end{figure}</xsl:text>
995    <xsl:value-of select="$newline" />
996
997    <xsl:text>\clearpage{}</xsl:text>   
998    <xsl:value-of select="$newparagraph" />
999   </xsl:when>
1000
1001   <xsl:otherwise />
1002
1003  </xsl:choose>
1004 </xsl:template>
1005
1006 <xsl:template match="instance" />
1007
1008 <xsl:template match="footnotes" />
1009
1010 <xsl:template match="footnote">
1011  <xsl:apply-templates />
1012 </xsl:template>
1013
1014 <xsl:template match="hr">
1015  <xsl:text>\rule{\textwidth}{0.4pt}</xsl:text>
1016  <xsl:value-of select="$newline" />
1017 </xsl:template>
1018
1019 <xsl:template match="dt">
1020  <xsl:text>{\bfseries </xsl:text><xsl:apply-templates /><xsl:text>}\\*\\*</xsl:text>
1021  <xsl:value-of select="$newline" />
1022 </xsl:template>
1023
1024 <xsl:template match="dd">
1025  <xsl:apply-templates />
1026  <xsl:value-of select="$newparagraph" />
1027 </xsl:template>
1028
1029 <xsl:template match="li">
1030  <xsl:text>\item </xsl:text><xsl:apply-templates />
1031  <xsl:value-of select="$newline" />
1032 </xsl:template>
1033
1034 <!-- ==================== inline elements ======================= -->
1035
1036 <xsl:template match="a">
1037  <xsl:if test="@idref">
1038   <xsl:text>\hyperlink{</xsl:text>
1039   <xsl:value-of select="@idref" />
1040   <xsl:text>}{</xsl:text>
1041  </xsl:if>
1042  <xsl:if test="@id">
1043   <xsl:text>\hypertarget{</xsl:text>
1044   <xsl:value-of select="@id" />
1045   <xsl:text>}{</xsl:text>
1046  </xsl:if>
1047
1048  <xsl:apply-templates />
1049
1050  <xsl:if test="@idref">
1051   <xsl:text>}</xsl:text>
1052  </xsl:if>
1053  <xsl:if test="@id">
1054   <xsl:text>}</xsl:text>
1055  </xsl:if>
1056 </xsl:template>
1057
1058 <xsl:template match="a[@class='footnote']">
1059  <xsl:apply-templates />
1060  <xsl:text>\footnote{</xsl:text>
1061  <xsl:for-each select="id( @idref )">
1062   <xsl:apply-templates />
1063  </xsl:for-each>
1064  <xsl:text>}</xsl:text>
1065 </xsl:template>
1066
1067 <xsl:template match="em">
1068  <xsl:text>\emph{</xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1069 </xsl:template>
1070
1071 <xsl:template match="strong">
1072  <xsl:text>{\bfseries </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1073 </xsl:template>
1074
1075 <xsl:template match="cite">
1076  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1077 </xsl:template>
1078
1079 <xsl:template match="thought">
1080  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1081 </xsl:template>
1082
1083 <xsl:template match="onomatopoeia">
1084  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1085 </xsl:template>
1086
1087 <xsl:template match="spell">
1088  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1089 </xsl:template>
1090
1091 <xsl:template match="item">
1092  <xsl:apply-templates />
1093 </xsl:template>
1094
1095 <xsl:template match="foreign">
1096  <xsl:text>{\itshape </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1097 </xsl:template>
1098
1099 <xsl:template match="quote">
1100  <xsl:text>&lsquot;</xsl:text>
1101   <xsl:apply-templates />
1102   <xsl:if test="not(self::*[@class='open-ended'])"><xsl:text>&rsquot;</xsl:text></xsl:if>
1103 </xsl:template>
1104
1105 <xsl:template match="quote//quote">
1106  <xsl:text>&ldquot;</xsl:text>
1107   <xsl:apply-templates />
1108   <xsl:if test="not(self::*[@class='open-ended'])"><xsl:text>&rdquot;</xsl:text></xsl:if>
1109 </xsl:template>
1110
1111 <xsl:template match="code">
1112  <xsl:text>{\ttfamily </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1113 </xsl:template>
1114
1115 <xsl:template match="line">
1116  <xsl:apply-templates />
1117  <xsl:if test="position( ) != last( )">\\</xsl:if>
1118 </xsl:template>
1119
1120 <xsl:template match="br">
1121  <xsl:text>\\</xsl:text>
1122 </xsl:template>
1123
1124 <xsl:template match="typ[@class='attribute']">
1125  <xsl:text>{\small </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1126 </xsl:template>
1127
1128 <xsl:template match="footnote//typ[@class='attribute']">
1129  <xsl:text>{\scriptsize </xsl:text><xsl:apply-templates /><xsl:text>}</xsl:text>
1130 </xsl:template>
1131
1132
1133 <!-- ==================== character elements ==================== -->
1134 <!--
1135
1136 These templates define the mapping between the character elements used in
1137 the Project Aon instances of Gamebook XML and the ISO-8859-1
1138 characters.
1139
1140 Portions Copyright International Organization for Standardization 1986 
1141 Permission to copy in any form is granted for use with conforming SGML 
1142 systems and applications as defined in ISO 8879, provided this notice 
1143 is included in all copies.
1144
1145 -->
1146
1147 <!-- JFS: TODO - probably the \definitions need to be in {} to prevent 
1148      issues if followed by text -->
1149
1150 <!-- ~~~~~~~~~~~~~~~~~~~~~ Special Characters ~~~~~~~~~~~~~~~~~~~~ -->
1151
1152 <xsl:template match="ch.apos"><xsl:text>&#39;</xsl:text></xsl:template><!-- apostrophe = single quotation mark -->
1153 <xsl:template match="ch.nbsp"><xsl:text>~</xsl:text></xsl:template><!-- no-break space = non-breaking space, U+00A0 ISOnum -->
1154 <xsl:template match="ch.iexcl"><xsl:text>{\textexclamdown}</xsl:text></xsl:template><!-- inverted exclamation mark, U+00A1 ISOnum -->
1155 <xsl:template match="ch.cent"><xsl:text>\textcent</xsl:text></xsl:template><!-- cent sign, U+00A2 ISOnum -->
1156 <xsl:template match="ch.pound"><xsl:text>\pounds</xsl:text></xsl:template><!-- pound sign, U+00A3 ISOnum -->
1157 <xsl:template match="ch.curren"><xsl:text>\textcurrency</xsl:text></xsl:template><!-- currency sign, U+00A4 ISOnum -->
1158 <xsl:template match="ch.yen"><xsl:text>\textyen</xsl:text></xsl:template><!-- yen sign = yuan sign, U+00A5 ISOnum -->
1159 <xsl:template match="ch.brvbar"><xsl:text>\textbar</xsl:text></xsl:template><!-- broken bar = broken vertical bar, U+00A6 ISOnum -->
1160 <xsl:template match="ch.sect"><xsl:text>\textsection</xsl:text></xsl:template><!-- section sign, U+00A7 ISOnum -->
1161 <xsl:template match="ch.uml"><xsl:text>\ddot{}</xsl:text></xsl:template><!-- diaeresis = spacing diaeresis, U+00A8 ISOdia -->
1162 <xsl:template match="ch.copy"><xsl:text>{\copyright}</xsl:text></xsl:template><!-- copyright sign, U+00A9 ISOnum -->
1163 <xsl:template match="ch.ordf"><xsl:text>\textordfeminine</xsl:text></xsl:template><!-- feminine ordinal indicator, U+00AA ISOnum -->
1164 <xsl:template match="ch.laquo"><xsl:text>{\guillemotleft}</xsl:text></xsl:template><!-- left-pointing double angle quotation mark = left pointing guillemet, U+00AB ISOnum -->
1165 <xsl:template match="ch.not"><xsl:text>\textlnot</xsl:text></xsl:template><!-- not sign, U+00AC ISOnum -->
1166 <xsl:template match="ch.shy"><xsl:text>\-</xsl:text></xsl:template><!-- soft hyphen = discretionary hyphen, U+00AD ISOnum -->
1167 <xsl:template match="ch.reg"><xsl:text>{\texttrademark}</xsl:text></xsl:template><!-- registered sign = registered trade mark sign, U+00AE ISOnum -->
1168 <xsl:template match="ch.macr"><xsl:text>\textasciimacron</xsl:text></xsl:template><!-- macron = spacing macron = overline = APL overbar, U+00AF ISOdia -->
1169 <xsl:template match="ch.deg"><xsl:text>\textdegree</xsl:text></xsl:template><!-- degree sign, U+00B0 ISOnum -->
1170 <xsl:template match="ch.plusmn"><xsl:text>\textpm</xsl:text></xsl:template><!-- plus-minus sign = plus-or-minus sign, U+00B1 ISOnum -->
1171 <xsl:template match="ch.sup2"><xsl:text>^2</xsl:text></xsl:template><!-- superscript two = superscript digit two = squared, U+00B2 ISOnum -->
1172 <xsl:template match="ch.sup3"><xsl:text>^3</xsl:text></xsl:template><!-- superscript three = superscript digit three = cubed, U+00B3 ISOnum -->
1173 <xsl:template match="ch.acute"><xsl:text>\'</xsl:text></xsl:template><!-- acute accent = spacing acute, U+00B4 ISOdia -->
1174 <xsl:template match="ch.micro"><xsl:text>\textmu</xsl:text></xsl:template><!-- micro sign, U+00B5 ISOnum -->
1175 <xsl:template match="ch.para"><xsl:text>\textparagraph</xsl:text></xsl:template><!-- pilcrow sign  = paragraph sign, U+00B6 ISOnum -->
1176 <xsl:template match="ch.middot"><xsl:text>\textperiodcentered</xsl:text></xsl:template><!-- middle dot = Georgian comma = Greek middle dot, U+00B7 ISOnum -->
1177 <xsl:template match="ch.cedil"><xsl:text>\c{c}</xsl:text></xsl:template><!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
1178 <xsl:template match="ch.sup1"><xsl:text>^1</xsl:text></xsl:template><!-- superscript one = superscript digit one, U+00B9 ISOnum -->
1179 <xsl:template match="ch.ordm"><xsl:text>\textordmasculine</xsl:text></xsl:template><!-- masculine ordinal indicator, U+00BA ISOnum -->
1180 <xsl:template match="ch.raquo"><xsl:text>{\guillemotright}</xsl:text></xsl:template><!-- right-pointing double angle quotation mark = right pointing guillemet, U+00BB ISOnum -->
1181 <xsl:template match="ch.frac14"><xsl:text>$\frac{1}{4}$</xsl:text></xsl:template><!-- vulgar fraction one quarter = fraction one quarter, U+00BC ISOnum -->
1182 <xsl:template match="ch.frac12"><xsl:text>$\frac{1}{2}$</xsl:text></xsl:template><!-- vulgar fraction one half = fraction one half, U+00BD ISOnum -->
1183 <xsl:template match="ch.frac34"><xsl:text>$\frac{3}{4}$</xsl:text></xsl:template><!-- vulgar fraction three quarters = fraction three quarters, U+00BE ISOnum -->
1184 <xsl:template match="ch.frac13"><xsl:text>$\frac{1}{3}$</xsl:text></xsl:template><!-- vulgar fraction 1/3, U+2153 ISOnum -->
1185 <xsl:template match="ch.frac23"><xsl:text>$\frac{2}{3}$</xsl:text></xsl:template><!-- vulgar fraction 2/3, U+2154 ISOnum -->
1186 <xsl:template match="ch.frac15"><xsl:text>$\frac{1}{5}$</xsl:text></xsl:template><!-- vulgar fraction 1/5, U+2155 ISOnum -->
1187 <xsl:template match="ch.frac25"><xsl:text>$\frac{2}{5}$</xsl:text></xsl:template><!-- vulgar fraction 2/5, U+2156 ISOnum -->
1188 <xsl:template match="ch.frac35"><xsl:text>$\frac{3}{5}$</xsl:text></xsl:template><!-- vulgar fraction 3/5, U+2157 ISOnum -->
1189 <xsl:template match="ch.frac45"><xsl:text>$\frac{4}{5}$</xsl:text></xsl:template><!-- vulgar fraction 4/5, U+2158 ISOnum -->
1190 <xsl:template match="ch.frac16"><xsl:text>$\frac{1}{6}$</xsl:text></xsl:template><!-- vulgar fraction 1/6, U+2159 ISOnum -->
1191 <xsl:template match="ch.frac56"><xsl:text>$\frac{5}{6}$</xsl:text></xsl:template><!-- vulgar fraction 5/6, U+215A ISOnum -->
1192 <xsl:template match="ch.frac17"><xsl:text>$\frac{1}{7}$</xsl:text></xsl:template><!-- vulgar fraction 1/7, U+2150 ISOnum -->
1193 <xsl:template match="ch.frac18"><xsl:text>$\frac{1}{8}$</xsl:text></xsl:template><!-- vulgar fraction 1/8, U+215B ISOnum -->
1194 <xsl:template match="ch.frac38"><xsl:text>$\frac{3}{8}$</xsl:text></xsl:template><!-- vulgar fraction 3/8, U+215C ISOnum -->
1195 <xsl:template match="ch.frac58"><xsl:text>$\frac{5}{8}$</xsl:text></xsl:template><!-- vulgar fraction 5/8, U+215D ISOnum -->
1196 <xsl:template match="ch.frac78"><xsl:text>$\frac{7}{8}$</xsl:text></xsl:template><!-- vulgar fraction 7/8, U+215E ISOnum -->
1197 <xsl:template match="ch.frac19"><xsl:text>$\frac{1}{9}$</xsl:text></xsl:template><!-- vulgar fraction 1/9, U+2151 ISOnum -->
1198 <xsl:template match="ch.frac110"><xsl:text>$\frac{1}{10}$</xsl:text></xsl:template><!-- vulgar fraction 1/10, U+2152 ISO num -->
1199 <xsl:template match="ch.iquest"><xsl:text>{\textquestiondown}</xsl:text></xsl:template><!-- inverted question mark = turned question mark, U+00BF ISOnum -->
1200 <xsl:template match="ch.Agrave"><xsl:text>&#192;</xsl:text></xsl:template><!-- latin capital letter A with grave = latin capital letter A grave, U+00C0 ISOlat1 -->
1201 <xsl:template match="ch.Aacute"><xsl:text>&#193;</xsl:text></xsl:template><!-- latin capital letter A with acute, U+00C1 ISOlat1 -->
1202 <xsl:template match="ch.Acirc"><xsl:text>&#194;</xsl:text></xsl:template><!-- latin capital letter A with circumflex, U+00C2 ISOlat1 -->
1203 <xsl:template match="ch.Atilde"><xsl:text>&#195;</xsl:text></xsl:template><!-- latin capital letter A with tilde, U+00C3 ISOlat1 -->
1204 <xsl:template match="ch.Auml"><xsl:text>&#196;</xsl:text></xsl:template><!-- latin capital letter A with diaeresis, U+00C4 ISOlat1 -->
1205 <xsl:template match="ch.Aring"><xsl:text>&#197;</xsl:text></xsl:template><!-- latin capital letter A with ring above = latin capital letter A ring, U+00C5 ISOlat1 -->
1206 <xsl:template match="ch.AElig"><xsl:text>&#198;</xsl:text></xsl:template><!-- latin capital letter AE = latin capital ligature AE, U+00C6 ISOlat1 -->
1207 <xsl:template match="ch.Ccedil"><xsl:text>&#199;</xsl:text></xsl:template><!-- latin capital letter C with cedilla, U+00C7 ISOlat1 -->
1208 <xsl:template match="ch.Egrave"><xsl:text>&#200;</xsl:text></xsl:template><!-- latin capital letter E with grave, U+00C8 ISOlat1 -->
1209 <xsl:template match="ch.Eacute"><xsl:text>&#201;</xsl:text></xsl:template><!-- latin capital letter E with acute, U+00C9 ISOlat1 -->
1210 <xsl:template match="ch.Ecirc"><xsl:text>&#202;</xsl:text></xsl:template><!-- latin capital letter E with circumflex, U+00CA ISOlat1 -->
1211 <xsl:template match="ch.Euml"><xsl:text>&#203;</xsl:text></xsl:template><!-- latin capital letter E with diaeresis, U+00CB ISOlat1 -->
1212 <xsl:template match="ch.Igrave"><xsl:text>&#204;</xsl:text></xsl:template><!-- latin capital letter I with grave, U+00CC ISOlat1 -->
1213 <xsl:template match="ch.Iacute"><xsl:text>&#205;</xsl:text></xsl:template><!-- latin capital letter I with acute, U+00CD ISOlat1 -->
1214 <xsl:template match="ch.Icirc"><xsl:text>&#206;</xsl:text></xsl:template><!-- latin capital letter I with circumflex, U+00CE ISOlat1 -->
1215 <xsl:template match="ch.Iuml"><xsl:text>&#207;</xsl:text></xsl:template><!-- latin capital letter I with diaeresis, U+00CF ISOlat1 -->
1216 <xsl:template match="ch.ETH"><xsl:text>&#208;</xsl:text></xsl:template><!-- latin capital letter ETH, U+00D0 ISOlat1 -->
1217 <xsl:template match="ch.Ntilde"><xsl:text>&#209;</xsl:text></xsl:template><!-- latin capital letter N with tilde, U+00D1 ISOlat1 -->
1218 <xsl:template match="ch.Ograve"><xsl:text>&#210;</xsl:text></xsl:template><!-- latin capital letter O with grave, U+00D2 ISOlat1 -->
1219 <xsl:template match="ch.Oacute"><xsl:text>&#211;</xsl:text></xsl:template><!-- latin capital letter O with acute, U+00D3 ISOlat1 -->
1220 <xsl:template match="ch.Ocirc"><xsl:text>&#212;</xsl:text></xsl:template><!-- latin capital letter O with circumflex, U+00D4 ISOlat1 -->
1221 <xsl:template match="ch.Otilde"><xsl:text>&#213;</xsl:text></xsl:template><!-- latin capital letter O with tilde, U+00D5 ISOlat1 -->
1222 <xsl:template match="ch.Ouml"><xsl:text>&#214;</xsl:text></xsl:template><!-- latin capital letter O with diaeresis, U+00D6 ISOlat1 -->
1223 <xsl:template match="ch.times"><xsl:text>&#215;</xsl:text></xsl:template><!-- multiplication sign, U+00D7 ISOnum -->
1224 <xsl:template match="ch.Oslash"><xsl:text>&#216;</xsl:text></xsl:template><!-- latin capital letter O with stroke = latin capital letter O slash, U+00D8 ISOlat1 -->
1225 <xsl:template match="ch.Ugrave"><xsl:text>&#217;</xsl:text></xsl:template><!-- latin capital letter U with grave, U+00D9 ISOlat1 -->
1226 <xsl:template match="ch.Uacute"><xsl:text>&#218;</xsl:text></xsl:template><!-- latin capital letter U with acute, U+00DA ISOlat1 -->
1227 <xsl:template match="ch.Ucirc"><xsl:text>&#219;</xsl:text></xsl:template><!-- latin capital letter U with circumflex, U+00DB ISOlat1 -->
1228 <xsl:template match="ch.Uuml"><xsl:text>&#220;</xsl:text></xsl:template><!-- latin capital letter U with diaeresis, U+00DC ISOlat1 -->
1229 <xsl:template match="ch.Yacute"><xsl:text>&#221;</xsl:text></xsl:template><!-- latin capital letter Y with acute, U+00DD ISOlat1 -->
1230 <xsl:template match="ch.THORN"><xsl:text>&#222;</xsl:text></xsl:template><!-- latin capital letter THORN, U+00DE ISOlat1 -->
1231 <xsl:template match="ch.szlig"><xsl:text>&#223;</xsl:text></xsl:template><!-- latin small letter sharp s = ess-zed, U+00DF ISOlat1 -->
1232 <xsl:template match="ch.agrave"><xsl:text>&#224;</xsl:text></xsl:template><!-- latin small letter a with grave = latin small letter a grave, U+00E0 ISOlat1 -->
1233 <xsl:template match="ch.aacute"><xsl:text>&#225;</xsl:text></xsl:template><!-- latin small letter a with acute, U+00E1 ISOlat1 -->
1234 <xsl:template match="ch.acirc"><xsl:text>&#226;</xsl:text></xsl:template><!-- latin small letter a with circumflex, U+00E2 ISOlat1 -->
1235 <xsl:template match="ch.atilde"><xsl:text>&#227;</xsl:text></xsl:template><!-- latin small letter a with tilde, U+00E3 ISOlat1 -->
1236 <xsl:template match="ch.auml"><xsl:text>&#228;</xsl:text></xsl:template><!-- latin small letter a with diaeresis, U+00E4 ISOlat1 -->
1237 <xsl:template match="ch.aring"><xsl:text>&#229;</xsl:text></xsl:template><!-- latin small letter a with ring above = latin small letter a ring, U+00E5 ISOlat1 -->
1238 <xsl:template match="ch.aelig"><xsl:text>&#230;</xsl:text></xsl:template><!-- latin small letter ae = latin small ligature ae, U+00E6 ISOlat1 -->
1239 <xsl:template match="ch.ccedil"><xsl:text>&#231;</xsl:text></xsl:template><!-- latin small letter c with cedilla, U+00E7 ISOlat1 -->
1240 <xsl:template match="ch.egrave"><xsl:text>&#232;</xsl:text></xsl:template><!-- latin small letter e with grave, U+00E8 ISOlat1 -->
1241 <xsl:template match="ch.eacute"><xsl:text>&#233;</xsl:text></xsl:template><!-- latin small letter e with acute, U+00E9 ISOlat1 -->
1242 <xsl:template match="ch.ecirc"><xsl:text>&#234;</xsl:text></xsl:template><!-- latin small letter e with circumflex, U+00EA ISOlat1 -->
1243 <xsl:template match="ch.euml"><xsl:text>&#235;</xsl:text></xsl:template><!-- latin small letter e with diaeresis, U+00EB ISOlat1 -->
1244 <xsl:template match="ch.igrave"><xsl:text>&#236;</xsl:text></xsl:template><!-- latin small letter i with grave, U+00EC ISOlat1 -->
1245 <xsl:template match="ch.iacute"><xsl:text>&#237;</xsl:text></xsl:template><!-- latin small letter i with acute, U+00ED ISOlat1 -->
1246 <xsl:template match="ch.icirc"><xsl:text>&#238;</xsl:text></xsl:template><!-- latin small letter i with circumflex, U+00EE ISOlat1 -->
1247 <xsl:template match="ch.iuml"><xsl:text>&#239;</xsl:text></xsl:template><!-- latin small letter i with diaeresis, U+00EF ISOlat1 -->
1248 <xsl:template match="ch.eth"><xsl:text>&#240;</xsl:text></xsl:template><!-- latin small letter eth, U+00F0 ISOlat1 -->
1249 <xsl:template match="ch.ntilde"><xsl:text>&#241;</xsl:text></xsl:template><!-- latin small letter n with tilde, U+00F1 ISOlat1 -->
1250 <xsl:template match="ch.ograve"><xsl:text>&#242;</xsl:text></xsl:template><!-- latin small letter o with grave, U+00F2 ISOlat1 -->
1251 <xsl:template match="ch.oacute"><xsl:text>&#243;</xsl:text></xsl:template><!-- latin small letter o with acute, U+00F3 ISOlat1 -->
1252 <xsl:template match="ch.ocirc"><xsl:text>&#244;</xsl:text></xsl:template><!-- latin small letter o with circumflex, U+00F4 ISOlat1 -->
1253 <xsl:template match="ch.otilde"><xsl:text>&#245;</xsl:text></xsl:template><!-- latin small letter o with tilde, U+00F5 ISOlat1 -->
1254 <xsl:template match="ch.ouml"><xsl:text>&#246;</xsl:text></xsl:template><!-- latin small letter o with diaeresis, U+00F6 ISOlat1 -->
1255 <xsl:template match="ch.divide"><xsl:text>&#247;</xsl:text></xsl:template><!-- division sign, U+00F7 ISOnum -->
1256 <xsl:template match="ch.oslash"><xsl:text>&#248;</xsl:text></xsl:template><!-- latin small letter o with stroke, = latin small letter o slash, U+00F8 ISOlat1 -->
1257 <xsl:template match="ch.ugrave"><xsl:text>&#249;</xsl:text></xsl:template><!-- latin small letter u with grave, U+00F9 ISOlat1 -->
1258 <xsl:template match="ch.uacute"><xsl:text>&#250;</xsl:text></xsl:template><!-- latin small letter u with acute, U+00FA ISOlat1 -->
1259 <xsl:template match="ch.ucirc"><xsl:text>&#251;</xsl:text></xsl:template><!-- latin small letter u with circumflex, U+00FB ISOlat1 -->
1260 <xsl:template match="ch.uuml"><xsl:text>&#252;</xsl:text></xsl:template><!-- latin small letter u with diaeresis, U+00FC ISOlat1 -->
1261 <xsl:template match="ch.yacute"><xsl:text>&#253;</xsl:text></xsl:template><!-- latin small letter y with acute, U+00FD ISOlat1 -->
1262 <xsl:template match="ch.thorn"><xsl:text>&#254;</xsl:text></xsl:template><!-- latin small letter thorn, U+00FE ISOlat1 -->
1263 <xsl:template match="ch.yuml"><xsl:text>&#255;</xsl:text></xsl:template><!-- latin small letter y with diaeresis, U+00FF ISOlat1 -->
1264
1265 <!-- ~~~~~~~~~~~~~~~~~~~~~ Special Characters ~~~~~~~~~~~~~~~~~~~~ -->
1266
1267 <xsl:template match="ch.ampersand">\&amp;</xsl:template><!-- ampersand -->
1268 <xsl:template match="ch.lsquot">\textquoteleft </xsl:template><!-- opening left quotation mark -->
1269 <xsl:template match="ch.rsquot">\textquoteright </xsl:template><!-- closing right quotation mark -->
1270 <xsl:template match="ch.ldquot">``</xsl:template><!-- opening left double quotation mark -->
1271 <xsl:template match="ch.rdquot">''</xsl:template><!-- closing right double quotation mark -->
1272 <xsl:template match="ch.minus">$-$</xsl:template><!-- mathematical minus -->
1273 <xsl:template match="ch.endash">--</xsl:template><!-- endash -->
1274 <xsl:template match="ch.emdash">---</xsl:template><!-- emdash -->
1275 <xsl:template match="ch.ellips">&nbsp;~\ldots </xsl:template><!-- ellipsis -->
1276 <xsl:template match="ch.lellips">\ldots&nbsp;~</xsl:template><!-- left ellipsis, used at the beginning of edited material -->
1277 <xsl:template match="ch.blankline">\_\_\_\_\_\_\_</xsl:template><!-- blank line to be filled in -->
1278 <xsl:template match="ch.percent"><xsl:text>\%</xsl:text></xsl:template><!-- percent sign -->
1279 <xsl:template match="ch.thinspace"><xsl:text>\ </xsl:text></xsl:template><!-- small horizontal space for use between adjacent quotation marks - added mainly for LaTeX's sake -->
1280 <xsl:template match="ch.frac116"><xsl:text>1/16</xsl:text></xsl:template><!-- vulgar fraction one sixteenth = fraction on sixteenth -->
1281 <xsl:template match="ch.plus"><xsl:text>+</xsl:text></xsl:template><!-- mathematical plus -->
1282
1283 <!-- ==================== named templates ======================= -->
1284
1285 <!--
1286  A "subroutine" to generate a link to the current section, with the section title (expanded with "Section " in case of a numbered section) as link text.
1287 -->
1288 <xsl:template name="section-title-link">
1289  <!-- will the list always contain the closest ancestor first? -->
1290  <xsl:variable name="section-title">
1291   <!-- numbered or not? -->
1292   <xsl:if test="ancestor::section[position()=1]/@class='numbered'">
1293    <xsl:choose>
1294     <xsl:when test="$language='es'">
1295      <xsl:text>Secci&oacute;n </xsl:text>
1296     </xsl:when>
1297     <xsl:otherwise>
1298      <xsl:text>Section </xsl:text>
1299     </xsl:otherwise>
1300    </xsl:choose>
1301   </xsl:if>
1302   <xsl:apply-templates select="ancestor::section[position()=1]/meta/title[1]" />
1303  </xsl:variable>
1304  
1305  <a>
1306   <xsl:attribute name="href"><xsl:text>#</xsl:text><xsl:value-of select="ancestor::section[position()=1]/@id" /></xsl:attribute>
1307   <xsl:value-of select="$section-title" />
1308  </a>
1309 </xsl:template>
1310
1311 </xsl:transform>