Blame xsl/mathml2/tables.xsl

Packit 0f19cf

Packit 0f19cf
Packit 0f19cf
		xmlns:m="http://www.w3.org/1998/Math/MathML"
Packit 0f19cf
                version='1.0'>
Packit 0f19cf
                
Packit 0f19cf

Packit 0f19cf
Packit 0f19cf
     This file is part of the XSLT MathML Library distribution.
Packit 0f19cf
     See ./README or http://www.raleigh.ru/MathML/mmltex for
Packit 0f19cf
     copyright and other information                                        -->
Packit 0f19cf

Packit 0f19cf

Packit 0f19cf
<xsl:template match="m:mtd[@columnspan]">
Packit 0f19cf
	<xsl:text>\multicolumn{</xsl:text>
Packit 0f19cf
	<xsl:value-of select="@columnspan"/>
Packit 0f19cf
	<xsl:text>}{c}{</xsl:text>
Packit 0f19cf
	<xsl:apply-templates/>
Packit 0f19cf
	<xsl:text>}</xsl:text>
Packit 0f19cf
	<xsl:if test="count(following-sibling::*)>0">
Packit 0f19cf
		<xsl:text>& </xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf

Packit 0f19cf

Packit 0f19cf
<xsl:template match="*" mode="mtd">
Packit 0f19cf
	<xsl:if test="@columnalign='right' or @columnalign='center'">
Packit 0f19cf
		<xsl:text>\hfill </xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
  
Packit 0f19cf
	<xsl:choose>
Packit 0f19cf
		<xsl:when test="self::m:mtd">
Packit 0f19cf
			<xsl:apply-templates/>
Packit 0f19cf
		</xsl:when>
Packit 0f19cf
		<xsl:otherwise>
Packit 0f19cf
			<xsl:apply-templates select="."/>
Packit 0f19cf
		</xsl:otherwise>
Packit 0f19cf
	</xsl:choose>
Packit 0f19cf
	<xsl:if test="@columnalign='left' or @columnalign='center'">
Packit 0f19cf
		<xsl:text>\hfill </xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
	<xsl:if test="count(following-sibling::*)>0 and parent::m:mtr">
Packit 0f19cf
Packit 0f19cf
	Also for m:mtd[@columnspan] and m:mtr  -->
Packit 0f19cf
		<xsl:text>& </xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf

Packit 0f19cf
<xsl:template match="text()" mode="mtr"/>
Packit 0f19cf
<xsl:template match="text()" mode="mtd"/>
Packit 0f19cf

Packit 0f19cf
<xsl:template match="m:mtr" mode="mtr">
Packit 0f19cf
	<xsl:apply-templates mode="mtd"/>
Packit 0f19cf
	<xsl:if test="count(following-sibling::*)>0">
Packit 0f19cf
		<xsl:text>\\ </xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf

Packit 0f19cf
<xsl:template match="*" mode="mtr">
Packit 0f19cf
	<xsl:apply-templates select="." mode="mtd"/>
Packit 0f19cf
	<xsl:if test="count(following-sibling::*)>0">
Packit 0f19cf
		<xsl:text>\\ </xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf

Packit 0f19cf
<xsl:template match="m:mtable">
Packit 0f19cf
	<xsl:text>\begin{array}{</xsl:text>
Packit 0f19cf
	<xsl:if test="@frame='solid'">
Packit 0f19cf
		<xsl:text>|</xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
	<xsl:variable name="mtr" select="./m:mtr[count(*)!=0][1]"/>
Packit 0f19cf
	
Packit 0f19cf
                                          sum($mtr/m:mtd/@columnspan)"/>
Packit 0f19cf
	<xsl:choose>
Packit 0f19cf
		<xsl:when test="@columnalign">
Packit 0f19cf
			<xsl:variable name="colalign">
Packit 0f19cf
				<xsl:call-template name="colalign">
Packit 0f19cf
					<xsl:with-param name="colalign" select="@columnalign"/>
Packit 0f19cf
				</xsl:call-template>
Packit 0f19cf
			</xsl:variable>
Packit 0f19cf
			<xsl:choose>
Packit 0f19cf
				<xsl:when test="string-length($colalign) > $numbercols">
Packit 0f19cf
					<xsl:value-of select="substring($colalign,1,$numbercols)"/>
Packit 0f19cf
				</xsl:when>
Packit 0f19cf
				<xsl:when test="string-length($colalign) < $numbercols">
Packit 0f19cf
					<xsl:value-of select="$colalign"/>
Packit 0f19cf
					<xsl:call-template name="generate-string">
Packit 0f19cf
						<xsl:with-param name="text" select="substring($colalign,string-length($colalign))"/>
Packit 0f19cf
						<xsl:with-param name="count" select="$numbercols - string-length($colalign)"/>
Packit 0f19cf
					</xsl:call-template>
Packit 0f19cf
				</xsl:when>
Packit 0f19cf
				<xsl:otherwise>
Packit 0f19cf
					<xsl:value-of select="$colalign"/>
Packit 0f19cf
				</xsl:otherwise>
Packit 0f19cf
			</xsl:choose>
Packit 0f19cf
		</xsl:when>
Packit 0f19cf
		<xsl:otherwise>
Packit 0f19cf
			<xsl:call-template name="generate-string">
Packit 0f19cf
				<xsl:with-param name="text" select="'c'"/>
Packit 0f19cf
				<xsl:with-param name="count" select="$numbercols"/>
Packit 0f19cf
			</xsl:call-template>
Packit 0f19cf
		</xsl:otherwise>
Packit 0f19cf
	</xsl:choose>
Packit 0f19cf
	<xsl:if test="@frame='solid'">
Packit 0f19cf
		<xsl:text>|</xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
	<xsl:text>}</xsl:text>
Packit 0f19cf
	<xsl:if test="@frame='solid'">
Packit 0f19cf
		<xsl:text>\hline </xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
	<xsl:apply-templates mode="mtr"/>
Packit 0f19cf
	<xsl:if test="@frame='solid'">
Packit 0f19cf
		<xsl:text>\\ \hline</xsl:text>
Packit 0f19cf
	</xsl:if>
Packit 0f19cf
	<xsl:text>\end{array}</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf

Packit 0f19cf
<xsl:template name="colalign">
Packit 0f19cf
	<xsl:param name="colalign"/>
Packit 0f19cf
	<xsl:choose>
Packit 0f19cf
		<xsl:when test="contains($colalign,' ')">
Packit 0f19cf
			<xsl:value-of select="substring($colalign,1,1)"/>
Packit 0f19cf
			<xsl:call-template name="colalign">
Packit 0f19cf
				<xsl:with-param name="colalign" select="substring-after($colalign,' ')"/>
Packit 0f19cf
			</xsl:call-template>
Packit 0f19cf
		</xsl:when>
Packit 0f19cf
		<xsl:otherwise>
Packit 0f19cf
			<xsl:value-of select="substring($colalign,1,1)"/>
Packit 0f19cf
		</xsl:otherwise>
Packit 0f19cf
	</xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf

Packit 0f19cf
<xsl:template name="generate-string">
Packit 0f19cf

Packit 0f19cf
    <xsl:param name="text"/>
Packit 0f19cf
    <xsl:param name="count"/>
Packit 0f19cf

Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="string-length($text) = 0 or $count <= 0"/>
Packit 0f19cf

Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
	<xsl:value-of select="$text"/>
Packit 0f19cf
	<xsl:call-template name="generate-string">
Packit 0f19cf
	  <xsl:with-param name="text" select="$text"/>
Packit 0f19cf
	  <xsl:with-param name="count" select="$count - 1"/>
Packit 0f19cf
	</xsl:call-template>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf

Packit 0f19cf
</xsl:stylesheet>