Import MMD 2.0b5
[multimarkdown] / XSLT / clean-text.xslt
1 <?xml version='1.0' encoding='utf-8'?>
2
3 <!-- XHTML2LaTeX replace-substring utility file by Fletcher Penney
4         specifically designed for use with MultiMarkdown created XHTML
5         
6         Extracted this routine so that it can be changed more easily by users.
7         
8         This file is responsible for cleaning up special characters into
9                 a LaTeX-friendly format.
10         
11         MultiMarkdown Version 2.0.b5
12                 
13         $Id: clean-text.xslt 488 2008-01-14 00:46:15Z fletcher $
14 -->
15
16 <!-- 
17 # Copyright (C) 2005-2008  Fletcher T. Penney <fletcher@fletcherpenney.net>
18 #
19 # This program is free software; you can redistribute it and/or modify
20 # it under the terms of the GNU General Public License as published by
21 # the Free Software Foundation; either version 2 of the License, or
22 # (at your option) any later version.
23 #
24 # This program is distributed in the hope that it will be useful,
25 # but WITHOUT ANY WARRANTY; without even the implied warranty of
26 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
27 # GNU General Public License for more details.
28 #
29 # You should have received a copy of the GNU General Public License
30 # along with this program; if not, write to the
31 #    Free Software Foundation, Inc.
32 #    59 Temple Place, Suite 330
33 #    Boston, MA 02111-1307 USA
34 -->
35
36         
37 <xsl:stylesheet
38         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
39         xmlns:html="http://www.w3.org/1999/xhtml"
40         version="1.0">
41
42         <!-- Pass XHTML Comments through unaltered (useful for including
43                 raw LaTeX in your MultiMarkdown document) -->
44         <xsl:template match="comment()">
45                 <xsl:value-of select="."/>
46         </xsl:template>
47         
48         <!-- This is a "pointer" function that can be over-ridden easily
49                 in order to add quick additional changes -->
50         <xsl:template name="clean-text">
51                 <xsl:param name="source"/>
52                 <xsl:call-template name="clean-text-utility">
53                         <xsl:with-param name="source">
54                                 <xsl:value-of select="$source"/>
55                         </xsl:with-param>
56                 </xsl:call-template>
57         </xsl:template>
58         
59         <!-- This is the "real" function that does the work.  You can also
60                 override this if you need to make some real changes -->
61         <xsl:template name="clean-text-utility">
62                 <xsl:param name="source" />
63                 <xsl:call-template name="replace-substring">
64                         <xsl:with-param name="original">
65                 <xsl:call-template name="replace-substring">
66                         <xsl:with-param name="original">
67                 <xsl:call-template name="replace-substring">
68                         <xsl:with-param name="original">
69                 <xsl:call-template name="replace-substring">
70                         <xsl:with-param name="original">
71                 <xsl:call-template name="replace-substring">
72                         <xsl:with-param name="original">
73                 <xsl:call-template name="replace-substring">
74                         <xsl:with-param name="original">
75                 <xsl:call-template name="replace-substring">
76                         <xsl:with-param name="original">
77                 <xsl:call-template name="replace-substring">
78                         <xsl:with-param name="original">
79                 <xsl:call-template name="replace-substring">
80                         <xsl:with-param name="original">
81                 <xsl:call-template name="replace-substring">
82                         <xsl:with-param name="original">
83                 <xsl:call-template name="replace-substring">
84                         <xsl:with-param name="original">
85                 <xsl:call-template name="replace-substring">
86                         <xsl:with-param name="original">
87                 <xsl:call-template name="replace-substring">
88                         <xsl:with-param name="original">
89                 <xsl:call-template name="replace-substring">
90                         <xsl:with-param name="original">
91                 <xsl:call-template name="replace-substring">
92                         <xsl:with-param name="original">
93                 <xsl:call-template name="replace-substring">
94                         <xsl:with-param name="original">
95                 <xsl:call-template name="replace-substring">
96                         <xsl:with-param name="original">
97                 <xsl:call-template name="replace-substring">
98                         <xsl:with-param name="original">
99                 <xsl:call-template name="replace-substring">
100                         <xsl:with-param name="original">
101                 <xsl:call-template name="replace-substring">
102                         <xsl:with-param name="original">
103                 <xsl:call-template name="replace-substring">
104                         <xsl:with-param name="original">
105                 <xsl:call-template name="replace-substring">
106                         <xsl:with-param name="original">
107                 <xsl:call-template name="replace-substring">
108                         <xsl:with-param name="original">
109                 <xsl:call-template name="replace-substring">
110                         <xsl:with-param name="original">
111                 <xsl:call-template name="replace-substring">
112                         <xsl:with-param name="original">
113                 <xsl:call-template name="replace-substring">
114                         <xsl:with-param name="original">
115                 <xsl:call-template name="replace-substring">
116                         <xsl:with-param name="original">
117                                 <xsl:value-of select="$source"/>
118                         </xsl:with-param>
119                         <xsl:with-param name="substring">
120                                 <xsl:text>%20</xsl:text>
121                         </xsl:with-param>
122                         <xsl:with-param name="replacement">
123                                 <xsl:text> </xsl:text>
124                         </xsl:with-param>
125                 </xsl:call-template>
126                         </xsl:with-param>
127                         <xsl:with-param name="substring">
128                                 <xsl:text>\</xsl:text>
129                         </xsl:with-param>
130                         <xsl:with-param name="replacement">
131                                 <xsl:text>$\backslash$</xsl:text>
132                         </xsl:with-param>
133                 </xsl:call-template>
134                         </xsl:with-param>
135                         <xsl:with-param name="substring">
136                                 <xsl:text>e.g. </xsl:text>
137                         </xsl:with-param>
138                         <xsl:with-param name="replacement">
139                                 <xsl:text>e.g.\ </xsl:text>
140                         </xsl:with-param>
141                 </xsl:call-template>
142                         </xsl:with-param>
143                         <xsl:with-param name="substring">
144                                 <xsl:text>i.e. </xsl:text>
145                         </xsl:with-param>
146                         <xsl:with-param name="replacement">
147                                 <xsl:text>i.e.\ </xsl:text>
148                         </xsl:with-param>
149                 </xsl:call-template>
150                         </xsl:with-param>
151                         <xsl:with-param name="substring">
152                                 <xsl:text>&#8212;</xsl:text>
153                         </xsl:with-param>
154                         <xsl:with-param name="replacement">
155                                 <xsl:text>---</xsl:text>
156                         </xsl:with-param>
157                 </xsl:call-template>
158                         </xsl:with-param>
159                         <xsl:with-param name="substring">
160                                 <xsl:text>&#8211;</xsl:text>
161                         </xsl:with-param>
162                         <xsl:with-param name="replacement">
163                                 <xsl:text>--</xsl:text>
164                         </xsl:with-param>
165                 </xsl:call-template>
166                         </xsl:with-param>
167                         <xsl:with-param name="substring">
168                                 <xsl:text>&#8216;</xsl:text>
169                         </xsl:with-param>
170                         <xsl:with-param name="replacement">
171                                 <xsl:text>`</xsl:text>
172                         </xsl:with-param>
173                 </xsl:call-template>
174                         </xsl:with-param>
175                         <xsl:with-param name="substring">
176                                 <xsl:text>&#8221;</xsl:text>
177                         </xsl:with-param>
178                         <xsl:with-param name="replacement">
179                                 <xsl:text>''</xsl:text>
180                         </xsl:with-param>
181                 </xsl:call-template>
182                         </xsl:with-param>
183                         <xsl:with-param name="substring">
184                                 <xsl:text>&#8220;</xsl:text>
185                         </xsl:with-param>
186                         <xsl:with-param name="replacement">
187                                 <xsl:text>``</xsl:text>
188                         </xsl:with-param>
189                 </xsl:call-template>
190                         </xsl:with-param>
191                         <xsl:with-param name="substring">
192                                 <xsl:text>&#8217;</xsl:text>
193                         </xsl:with-param>
194                         <xsl:with-param name="replacement">
195                                 <xsl:text>'</xsl:text>
196                         </xsl:with-param>
197                 </xsl:call-template>
198                         </xsl:with-param>
199                         <xsl:with-param name="substring">
200                                 <xsl:text>%</xsl:text>
201                         </xsl:with-param>
202                         <xsl:with-param name="replacement">
203                                 <xsl:text>\%</xsl:text>
204                         </xsl:with-param>
205                 </xsl:call-template>
206                         </xsl:with-param>
207                         <xsl:with-param name="substring">
208                                 <xsl:text>&amp;</xsl:text>
209                         </xsl:with-param>
210                         <xsl:with-param name="replacement">
211                                 <xsl:text>\&amp;</xsl:text>
212                         </xsl:with-param>
213                 </xsl:call-template>
214                         </xsl:with-param>
215                         <xsl:with-param name="substring">
216                                 <xsl:text>}</xsl:text>
217                         </xsl:with-param>
218                         <xsl:with-param name="replacement">
219                                 <xsl:text>\}</xsl:text>
220                         </xsl:with-param>
221                 </xsl:call-template>
222                         </xsl:with-param>
223                         <xsl:with-param name="substring">
224                                 <xsl:text>{</xsl:text>
225                         </xsl:with-param>
226                         <xsl:with-param name="replacement">
227                                 <xsl:text>\{</xsl:text>
228                         </xsl:with-param>
229                 </xsl:call-template>
230                         </xsl:with-param>
231                         <xsl:with-param name="substring">
232                                 <xsl:text>_</xsl:text>
233                         </xsl:with-param>
234                         <xsl:with-param name="replacement">
235                                 <xsl:text>\_</xsl:text>
236                         </xsl:with-param>
237                 </xsl:call-template>
238                         </xsl:with-param>
239                         <xsl:with-param name="substring">
240                                 <xsl:text>$</xsl:text>
241                         </xsl:with-param>
242                         <xsl:with-param name="replacement">
243                                 <xsl:text>\$</xsl:text>
244                         </xsl:with-param>
245                 </xsl:call-template>
246                         </xsl:with-param>
247                         <xsl:with-param name="substring">
248                                 <xsl:text>&#xA9;</xsl:text>
249                         </xsl:with-param>
250                         <xsl:with-param name="replacement">
251                                 <xsl:text>\textcopyright{}</xsl:text>
252                         </xsl:with-param>
253                 </xsl:call-template>
254                         </xsl:with-param>
255                         <xsl:with-param name="substring">
256                                 <xsl:text>#</xsl:text>
257                         </xsl:with-param>
258                         <xsl:with-param name="replacement">
259                                 <xsl:text>\#</xsl:text>
260                         </xsl:with-param>
261                 </xsl:call-template>
262                         </xsl:with-param>
263                         <xsl:with-param name="substring">
264                                 <xsl:text>\$\backslash\$</xsl:text>
265                         </xsl:with-param>
266                         <xsl:with-param name="replacement">
267                                 <xsl:text>$\backslash$</xsl:text>
268                         </xsl:with-param>
269                 </xsl:call-template>
270                         </xsl:with-param>
271                         <xsl:with-param name="substring">
272                                 <xsl:text>^</xsl:text>
273                         </xsl:with-param>
274                         <xsl:with-param name="replacement">
275                                 <xsl:text>\^{}</xsl:text>
276                         </xsl:with-param>
277                 </xsl:call-template>
278                         </xsl:with-param>
279                         <xsl:with-param name="substring">
280                                 <xsl:text>~</xsl:text>
281                         </xsl:with-param>
282                         <xsl:with-param name="replacement">
283                                 <xsl:text>\ensuremath{\sim}</xsl:text>
284                         </xsl:with-param>
285                 </xsl:call-template>
286                         </xsl:with-param>
287                         <xsl:with-param name="substring">
288                                 <xsl:text>&#160;</xsl:text>
289                         </xsl:with-param>
290                         <xsl:with-param name="replacement">
291                                 <xsl:text>~</xsl:text>
292                         </xsl:with-param>
293                 </xsl:call-template>
294                         </xsl:with-param>
295                         <xsl:with-param name="substring">
296                                 <xsl:text>&lt;</xsl:text>
297                         </xsl:with-param>
298                         <xsl:with-param name="replacement">
299                                 <xsl:text>$&lt;$</xsl:text>
300                         </xsl:with-param>
301                 </xsl:call-template>
302                         </xsl:with-param>
303                         <xsl:with-param name="substring">
304                                 <xsl:text>&gt;</xsl:text>
305                         </xsl:with-param>
306                         <xsl:with-param name="replacement">
307                                 <xsl:text>$&gt;$</xsl:text>
308                         </xsl:with-param>
309                 </xsl:call-template>
310                         </xsl:with-param>
311                         <xsl:with-param name="substring">
312                                 <xsl:text>&#8595;</xsl:text>
313                         </xsl:with-param>
314                         <xsl:with-param name="replacement">
315                                 <xsl:text>${\displaystyle \downarrow}$</xsl:text>
316                         </xsl:with-param>
317                 </xsl:call-template>
318                         </xsl:with-param>
319                         <xsl:with-param name="substring">
320                                 <xsl:text>&#8593;</xsl:text>
321                         </xsl:with-param>
322                         <xsl:with-param name="replacement">
323                                 <xsl:text>${\displaystyle \uparrow}$</xsl:text>
324                         </xsl:with-param>
325                 </xsl:call-template>
326                         </xsl:with-param>
327                         <xsl:with-param name="substring">
328                                 <xsl:text>&#8230;</xsl:text>
329                         </xsl:with-param>
330                         <xsl:with-param name="replacement">
331                                 <xsl:text>{\ldots}</xsl:text>
332                         </xsl:with-param>
333                 </xsl:call-template>
334         </xsl:template>
335
336 </xsl:stylesheet>