1
<?xml version="1.0" encoding='utf-8'?>
2
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
3
                xmlns:db="http://docbook.org/ns/docbook"
4
                version="1.0">
5
                
6
<xsl:output method="text" />
7
8
<xsl:param name="font.main" select="'Liberation Serif'" />
9
<xsl:param name="font.sans" select="'Ubuntu'" />
10
<xsl:param name="font.mono" select="'Liberation Mono'" />
11
12
<xsl:param name="theme" select="'Antibes'" />
13
<xsl:param name="theme.colors" select="'seahorse'" />
14
15
<xsl:template match="/*">
16
  <xsl:text>\documentclass[xetex]{beamer}&#10;</xsl:text>
17
  <xsl:text>\usetheme{</xsl:text>
18
  <xsl:value-of select="$theme" />
19
  <xsl:text>}&#10;</xsl:text>
20
  <xsl:text>\usecolortheme{</xsl:text>
21
  <xsl:value-of select="$theme.colors" />
22
  <xsl:text>}&#10;</xsl:text>
23
  <xsl:call-template name="packages" />
24
  <xsl:apply-templates select="db:info" />
25
  <xsl:text>\begin{document}&#10;</xsl:text>
26
  <xsl:text>\maketitle&#10;</xsl:text>
27
  <xsl:apply-templates select="db:chapter|db:section" />
28
  <xsl:text>\end{document}&#10;</xsl:text>
29
</xsl:template>
30
31
<xsl:template name="packages">
32
  <xsl:text>
33
\usepackage{fontspec}
34
\usepackage{xltxtra}
35
  </xsl:text>
36
  <xsl:text>\setmainfont{</xsl:text>
37
  <xsl:value-of select="$font.main" />
38
  <xsl:text>}&#10;</xsl:text>
39
  <xsl:text>\setsansfont{</xsl:text>
40
  <xsl:value-of select="$font.sans" />
41
  <xsl:text>}&#10;</xsl:text>
42
  <xsl:text>\setmonofont{</xsl:text>
43
  <xsl:value-of select="$font.mono" />
44
  <xsl:text>}&#10;</xsl:text>
45
  <xsl:text>\usepackage[russian]{polyglossia}&#10;</xsl:text>
46
  <xsl:text>\usepackage{cmap}&#10;</xsl:text>
47
  <xsl:text>\usepackage{graphicx}&#10;</xsl:text>
48
</xsl:template>
49
50
<xsl:template match="/*/db:info">
51
  <xsl:text>\title{</xsl:text>
52
  <xsl:value-of select="db:title" />
53
  <xsl:text>}&#10;</xsl:text>
54
  <xsl:text>\author{</xsl:text>
55
  <xsl:apply-templates select="db:author" />
56
  <xsl:text>}&#10;</xsl:text>
57
  <xsl:text>\date{</xsl:text>
58
  <xsl:value-of select="db:date" />
59
  <xsl:text>}&#10;</xsl:text>
60
</xsl:template>
61
62
<xsl:template match="db:title" mode="frame">
63
  <xsl:text>\frametitle{</xsl:text>
64
  <xsl:value-of select="." />
65
  <xsl:text>}&#10;</xsl:text>
66
</xsl:template>
67
68
<xsl:template match="db:author">
69
  <xsl:value-of select="db:personname/db:firstname" />
70
  <xsl:text> </xsl:text>
71
  <xsl:value-of select="db:personname/db:othername" />
72
  <xsl:text> </xsl:text>
73
  <xsl:value-of select="db:personname/db:surname" />
74
  <xsl:text> &lt;</xsl:text>
75
  <xsl:value-of select="db:email"/>
76
  <xsl:text>&gt;</xsl:text>
77
</xsl:template>
78
79
<xsl:template match="/*/db:chapter|/*/db:section">
80
  <xsl:text>\begin{frame}</xsl:text>
81
  <xsl:if test=".//db:literallayout">
82
    <xsl:text>[fragile]</xsl:text>
83
  </xsl:if>
84
  <xsl:text>&#10;</xsl:text>
85
  <xsl:apply-templates select="db:info/db:title|db:title" mode="frame" />
86
  <xsl:apply-templates select="*[name()!='info' and name()!='title']" />
87
  <xsl:text>\end{frame}&#10;</xsl:text>
88
</xsl:template>
89
90
<xsl:template match="/*/db:chapter[db:informalfigure]|/*/db:section[db:informalfigure]">
91
  <xsl:text>{&#10;</xsl:text>
92
  <xsl:apply-templates select="db:informalfigure//db:imagedata" mode="fullscreen.image" />
93
  <xsl:text>\begin{frame}[plain]
94
\end{frame}
95
}&#10;</xsl:text>
96
</xsl:template>
97
98
<xsl:template match="db:itemizedlist">
99
  <xsl:text>\begin{itemize}&#10;</xsl:text>
100
    <xsl:apply-templates />
101
  <xsl:text>\end{itemize}&#10;</xsl:text>
102
</xsl:template>
103
104
<xsl:template match="db:orderedlist">
105
  <xsl:text>\begin{enumerate}&#10;</xsl:text>
106
    <xsl:apply-templates />
107
  <xsl:text>\end{enumerate}&#10;</xsl:text>
108
</xsl:template>
109
110
<xsl:template match="db:variablelist">
111
  <xsl:text>\begin{description}&#10;</xsl:text>
112
    <xsl:apply-templates />
113
  <xsl:text>\end{description}&#10;</xsl:text>
114
</xsl:template>
115
116
<xsl:template match="db:varlistentry">
117
  <xsl:apply-templates />
118
</xsl:template>
119
120
<xsl:template match="db:varlistentry/db:term">
121
  <xsl:text>\item[</xsl:text>
122
  <xsl:value-of select="."/>
123
  <xsl:text>] </xsl:text>
124
</xsl:template>
125
126
<xsl:template match="db:varlistentry/db:listitem">
127
  <xsl:apply-templates />
128
</xsl:template>
129
130
<xsl:template match="db:orderedlist/db:listitem|db:itemizedlist/db:listitem">
131
  <xsl:text>\item </xsl:text>
132
  <xsl:apply-templates />
133
</xsl:template>
134
135
<xsl:template match="db:listitem/db:simpara">
136
  <xsl:apply-templates />
137
</xsl:template>
138
139
<xsl:template match="db:para|db:simpara">
140
  <xsl:apply-templates />
141
  <xsl:text>&#10;&#10;</xsl:text>
142
</xsl:template>
143
144
<xsl:template match="db:formalpara/db:title">
145
  <xsl:text>\textbf{</xsl:text>
146
  <xsl:apply-templates />
147
  <xsl:text>}&#10;</xsl:text>
148
</xsl:template>
149
150
<xsl:template match="db:formalpara">
151
  <xsl:apply-templates />
152
  <xsl:text>&#10;</xsl:text>
153
</xsl:template>
154
155
<xsl:template match="db:emphasis">
156
  <xsl:text>\emph{</xsl:text>
157
  <xsl:apply-templates />
158
  <xsl:text>}</xsl:text>
159
</xsl:template>
160
161
<xsl:template match="db:emphasis[@role='strong']">
162
  <xsl:text>\textbf{</xsl:text>
163
  <xsl:apply-templates />
164
  <xsl:text>}</xsl:text>
165
</xsl:template>
166
167
<xsl:template match="db:literallayout">
168
  <xsl:if test="@role='small'">
169
    <xsl:text>{\tiny&#10;</xsl:text>
170
  </xsl:if>
171
  <xsl:text>\begin{verbatim}&#10;</xsl:text>
172
  <xsl:value-of select='.' />
173
  <xsl:text>&#10;\end{verbatim}&#10;</xsl:text>
174
  <xsl:if test="@role='small'">
175
    <xsl:text>}&#10;</xsl:text>
176
  </xsl:if>
177
</xsl:template>
178
179
<xsl:template match="db:literal">
180
  <xsl:text>\texttt{</xsl:text>
181
  <xsl:apply-templates />
182
  <xsl:text>}</xsl:text>
183
</xsl:template>
184
185
<xsl:template match="db:informalfigure">
186
  <xsl:apply-templates select=".//db:imagedata" />
187
</xsl:template>
188
189
<xsl:template match="db:informalfigure//db:imagedata">
190
  <xsl:text>\includegraphics[width=\textwidth,height=\textheight,keepaspectratio=true]{</xsl:text>
191
  <xsl:value-of select="@fileref" />
192
  <xsl:text>}&#10;</xsl:text>
193
</xsl:template>
194
195
<xsl:template match="db:informalfigure//db:imagedata" mode="fullscreen.image">
196
  <xsl:text>\usebackgroundtemplate{\includegraphics[width=\textwidth,height=\textheight,keepaspectratio=true]{</xsl:text>
197
  <xsl:value-of select="@fileref" />
198
  <xsl:text>}}&#10;</xsl:text>
199
</xsl:template>
200
201
</xsl:stylesheet>