Accept attributes in inline image syntax
[multimarkdown] / XSLT / clean-text-allow-latex.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         The `allow-latex` variant does not protect characters needed to express 
12                 LaTeX commands.  Use with caution.
13         
14         MultiMarkdown Version 2.0.b5
15         
16         $Id: clean-text-allow-latex.xslt 488 2008-01-14 00:46:15Z fletcher $
17 -->
18
19 <!-- 
20 # Copyright (C) 2005-2008  Fletcher T. Penney <fletcher@fletcherpenney.net>
21 #
22 # This program is free software; you can redistribute it and/or modify
23 # it under the terms of the GNU General Public License as published by
24 # the Free Software Foundation; either version 2 of the License, or
25 # (at your option) any later version.
26 #
27 # This program is distributed in the hope that it will be useful,
28 # but WITHOUT ANY WARRANTY; without even the implied warranty of
29 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
30 # GNU General Public License for more details.
31 #
32 # You should have received a copy of the GNU General Public License
33 # along with this program; if not, write to the
34 #    Free Software Foundation, Inc.
35 #    59 Temple Place, Suite 330
36 #    Boston, MA 02111-1307 USA
37 -->
38
39         
40 <xsl:stylesheet
41         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
42         xmlns:html="http://www.w3.org/1999/xhtml"
43         version="1.0">
44
45         <!-- Pass XHTML Comments through unaltered (useful for including
46                 raw LaTeX in your MultiMarkdown document) -->
47         <xsl:template match="comment()">
48                 <xsl:value-of select="."/>
49         </xsl:template>
50         
51         <!-- It's easier (for now) to rewrite the entire function, since
52                 certain substitutions need to be deleted... -->
53         <xsl:template name="clean-text">
54                 <xsl:param name="source" />
55                 <xsl:call-template name="replace-substring">
56                         <xsl:with-param name="original">
57                 <xsl:call-template name="replace-substring">
58                         <xsl:with-param name="original">
59                 <xsl:call-template name="replace-substring">
60                         <xsl:with-param name="original">
61                 <xsl:call-template name="replace-substring">
62                         <xsl:with-param name="original">
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:value-of select="$source"/>
100                         </xsl:with-param>
101                         <xsl:with-param name="substring">
102                                 <xsl:text>%20</xsl:text>
103                         </xsl:with-param>
104                         <xsl:with-param name="replacement">
105                                 <xsl:text> </xsl:text>
106                         </xsl:with-param>
107                 </xsl:call-template>
108                         </xsl:with-param>
109                         <xsl:with-param name="substring">
110                                 <xsl:text>e.g. </xsl:text>
111                         </xsl:with-param>
112                         <xsl:with-param name="replacement">
113                                 <xsl:text>e.g.\ </xsl:text>
114                         </xsl:with-param>
115                 </xsl:call-template>
116                         </xsl:with-param>
117                         <xsl:with-param name="substring">
118                                 <xsl:text>i.e. </xsl:text>
119                         </xsl:with-param>
120                         <xsl:with-param name="replacement">
121                                 <xsl:text>i.e.\ </xsl:text>
122                         </xsl:with-param>
123                 </xsl:call-template>
124                         </xsl:with-param>
125                         <xsl:with-param name="substring">
126                                 <xsl:text>&#8212;</xsl:text>
127                         </xsl:with-param>
128                         <xsl:with-param name="replacement">
129                                 <xsl:text>---</xsl:text>
130                         </xsl:with-param>
131                 </xsl:call-template>
132                         </xsl:with-param>
133                         <xsl:with-param name="substring">
134                                 <xsl:text>&#8211;</xsl:text>
135                         </xsl:with-param>
136                         <xsl:with-param name="replacement">
137                                 <xsl:text>--</xsl:text>
138                         </xsl:with-param>
139                 </xsl:call-template>
140                         </xsl:with-param>
141                         <xsl:with-param name="substring">
142                                 <xsl:text>&#8216;</xsl:text>
143                         </xsl:with-param>
144                         <xsl:with-param name="replacement">
145                                 <xsl:text>`</xsl:text>
146                         </xsl:with-param>
147                 </xsl:call-template>
148                         </xsl:with-param>
149                         <xsl:with-param name="substring">
150                                 <xsl:text>&#8221;</xsl:text>
151                         </xsl:with-param>
152                         <xsl:with-param name="replacement">
153                                 <xsl:text>''</xsl:text>
154                         </xsl:with-param>
155                 </xsl:call-template>
156                         </xsl:with-param>
157                         <xsl:with-param name="substring">
158                                 <xsl:text>&#8220;</xsl:text>
159                         </xsl:with-param>
160                         <xsl:with-param name="replacement">
161                                 <xsl:text>``</xsl:text>
162                         </xsl:with-param>
163                 </xsl:call-template>
164                         </xsl:with-param>
165                         <xsl:with-param name="substring">
166                                 <xsl:text>&#8217;</xsl:text>
167                         </xsl:with-param>
168                         <xsl:with-param name="replacement">
169                                 <xsl:text>'</xsl:text>
170                         </xsl:with-param>
171                 </xsl:call-template>
172                         </xsl:with-param>
173                         <xsl:with-param name="substring">
174                                 <xsl:text>%</xsl:text>
175                         </xsl:with-param>
176                         <xsl:with-param name="replacement">
177                                 <xsl:text>\%</xsl:text>
178                         </xsl:with-param>
179                 </xsl:call-template>
180                         </xsl:with-param>
181                         <xsl:with-param name="substring">
182                                 <xsl:text>&amp;</xsl:text>
183                         </xsl:with-param>
184                         <xsl:with-param name="replacement">
185                                 <xsl:text>\&amp;</xsl:text>
186                         </xsl:with-param>
187                 </xsl:call-template>
188                         </xsl:with-param>
189                         <xsl:with-param name="substring">
190                                 <xsl:text>_</xsl:text>
191                         </xsl:with-param>
192                         <xsl:with-param name="replacement">
193                                 <xsl:text>\_</xsl:text>
194                         </xsl:with-param>
195                 </xsl:call-template>
196                         </xsl:with-param>
197                         <xsl:with-param name="substring">
198                                 <xsl:text>&#xA9;</xsl:text>
199                         </xsl:with-param>
200                         <xsl:with-param name="replacement">
201                                 <xsl:text>\textcopyright{}</xsl:text>
202                         </xsl:with-param>
203                 </xsl:call-template>
204                         </xsl:with-param>
205                         <xsl:with-param name="substring">
206                                 <xsl:text>#</xsl:text>
207                         </xsl:with-param>
208                         <xsl:with-param name="replacement">
209                                 <xsl:text>\#</xsl:text>
210                         </xsl:with-param>
211                 </xsl:call-template>
212                         </xsl:with-param>
213                         <xsl:with-param name="substring">
214                                 <xsl:text>\$\backslash\$</xsl:text>
215                         </xsl:with-param>
216                         <xsl:with-param name="replacement">
217                                 <xsl:text>$\backslash$</xsl:text>
218                         </xsl:with-param>
219                 </xsl:call-template>
220                         </xsl:with-param>
221                         <xsl:with-param name="substring">
222                                 <xsl:text>~</xsl:text>
223                         </xsl:with-param>
224                         <xsl:with-param name="replacement">
225                                 <xsl:text>\ensuremath{\sim}</xsl:text>
226                         </xsl:with-param>
227                 </xsl:call-template>
228                         </xsl:with-param>
229                         <xsl:with-param name="substring">
230                                 <xsl:text>&#160;</xsl:text>
231                         </xsl:with-param>
232                         <xsl:with-param name="replacement">
233                                 <xsl:text>~</xsl:text>
234                         </xsl:with-param>
235                 </xsl:call-template>
236                         </xsl:with-param>
237                         <xsl:with-param name="substring">
238                                 <xsl:text>&lt;</xsl:text>
239                         </xsl:with-param>
240                         <xsl:with-param name="replacement">
241                                 <xsl:text>$&lt;$</xsl:text>
242                         </xsl:with-param>
243                 </xsl:call-template>
244                         </xsl:with-param>
245                         <xsl:with-param name="substring">
246                                 <xsl:text>&gt;</xsl:text>
247                         </xsl:with-param>
248                         <xsl:with-param name="replacement">
249                                 <xsl:text>$&gt;$</xsl:text>
250                         </xsl:with-param>
251                 </xsl:call-template>
252                         </xsl:with-param>
253                         <xsl:with-param name="substring">
254                                 <xsl:text>&#8595;</xsl:text>
255                         </xsl:with-param>
256                         <xsl:with-param name="replacement">
257                                 <xsl:text>${\displaystyle \downarrow}$</xsl:text>
258                         </xsl:with-param>
259                 </xsl:call-template>
260                         </xsl:with-param>
261                         <xsl:with-param name="substring">
262                                 <xsl:text>&#8593;</xsl:text>
263                         </xsl:with-param>
264                         <xsl:with-param name="replacement">
265                                 <xsl:text>${\displaystyle \uparrow}$</xsl:text>
266                         </xsl:with-param>
267                 </xsl:call-template>
268                         </xsl:with-param>
269                         <xsl:with-param name="substring">
270                                 <xsl:text>&#8230;</xsl:text>
271                         </xsl:with-param>
272                         <xsl:with-param name="replacement">
273                                 <xsl:text>{\ldots}</xsl:text>
274                         </xsl:with-param>
275                 </xsl:call-template>
276         </xsl:template>
277
278 </xsl:stylesheet>