1 <?xml version='1.0' encoding="UTF-8"?>
\r
2 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
\r
3 xmlns:m="http://www.w3.org/1998/Math/MathML"
\r
6 <!-- ====================================================================== -->
\r
7 <!-- $Id: tables.xsl 149 2006-09-12 21:23:53Z fletcher $
\r
8 This file is part of the XSLT MathML Library distribution.
\r
9 See ./README or http://www.raleigh.ru/MathML/mmltex for
\r
10 copyright and other information
\r
11 Modified by Fletcher T. Penney for MultiMarkdown Version 2.0.a -->
\r
12 <!-- ====================================================================== -->
\r
14 <xsl:template match="m:mtd[@columnspan]">
\r
15 <xsl:text>\multicolumn{</xsl:text>
\r
16 <xsl:value-of select="@columnspan"/>
\r
17 <xsl:text>}{c}{</xsl:text>
\r
18 <xsl:apply-templates/>
\r
19 <xsl:text>}</xsl:text>
\r
20 <xsl:if test="count(following-sibling::*)>0">
\r
21 <xsl:text>& </xsl:text>
\r
26 <xsl:template match="m:mtd">
\r
27 <xsl:if test="@columnalign='right' or @columnalign='center'">
\r
28 <xsl:text>\hfill </xsl:text>
\r
30 <xsl:apply-templates/>
\r
31 <xsl:if test="@columnalign='left' or @columnalign='center'">
\r
32 <xsl:text>\hfill </xsl:text>
\r
34 <xsl:if test="count(following-sibling::*)>0">
\r
35 <!-- this test valid for Sablotron, another form - test="not(position()=last())".
\r
36 Also for m:mtd[@columnspan] and m:mtr -->
\r
37 <xsl:text>& </xsl:text>
\r
41 <xsl:template match="m:mtr">
\r
42 <xsl:apply-templates/>
\r
43 <xsl:if test="count(following-sibling::*)>0">
\r
44 <xsl:text>\\ </xsl:text>
\r
48 <xsl:template match="m:mtable">
\r
49 <xsl:text>\begin{array}{</xsl:text>
\r
50 <xsl:if test="@frame='solid'">
\r
51 <xsl:text>|</xsl:text>
\r
53 <xsl:variable name="numbercols" select="count(./m:mtr[1]/m:mtd[not(@columnspan)])+sum(./m:mtr[1]/m:mtd/@columnspan)"/>
\r
55 <xsl:when test="@columnalign">
\r
56 <xsl:variable name="colalign">
\r
57 <xsl:call-template name="colalign">
\r
58 <xsl:with-param name="colalign" select="@columnalign"/>
\r
59 </xsl:call-template>
\r
62 <xsl:when test="string-length($colalign) > $numbercols">
\r
63 <xsl:value-of select="substring($colalign,1,$numbercols)"/>
\r
65 <xsl:when test="string-length($colalign) < $numbercols">
\r
66 <xsl:value-of select="$colalign"/>
\r
67 <xsl:call-template name="generate-string">
\r
68 <xsl:with-param name="text" select="substring($colalign,string-length($colalign))"/>
\r
69 <xsl:with-param name="count" select="$numbercols - string-length($colalign)"/>
\r
70 </xsl:call-template>
\r
73 <xsl:value-of select="$colalign"/>
\r
78 <xsl:call-template name="generate-string">
\r
79 <xsl:with-param name="text" select="'c'"/>
\r
80 <xsl:with-param name="count" select="$numbercols"/>
\r
81 </xsl:call-template>
\r
84 <xsl:if test="@frame='solid'">
\r
85 <xsl:text>|</xsl:text>
\r
87 <xsl:text>}</xsl:text>
\r
88 <xsl:if test="@frame='solid'">
\r
89 <xsl:text>\hline </xsl:text>
\r
91 <xsl:apply-templates/>
\r
92 <xsl:if test="@frame='solid'">
\r
93 <xsl:text>\\ \hline</xsl:text>
\r
95 <xsl:text>\end{array}</xsl:text>
\r
98 <xsl:template name="colalign">
\r
99 <xsl:param name="colalign"/>
\r
101 <xsl:when test="contains($colalign,' ')">
\r
102 <xsl:value-of select="substring($colalign,1,1)"/>
\r
103 <xsl:call-template name="colalign">
\r
104 <xsl:with-param name="colalign" select="substring-after($colalign,' ')"/>
\r
105 </xsl:call-template>
\r
108 <xsl:value-of select="substring($colalign,1,1)"/>
\r
113 <xsl:template name="generate-string">
\r
114 <!-- template from XSLT Standard Library v1.1 -->
\r
115 <xsl:param name="text"/>
\r
116 <xsl:param name="count"/>
\r
119 <xsl:when test="string-length($text) = 0 or $count <= 0"/>
\r
122 <xsl:value-of select="$text"/>
\r
123 <xsl:call-template name="generate-string">
\r
124 <xsl:with-param name="text" select="$text"/>
\r
125 <xsl:with-param name="count" select="$count - 1"/>
\r
126 </xsl:call-template>
\r