Blame xsl/newtbl.xsl

Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
Packit 0f19cf
    xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
Packit 0f19cf
    xmlns:exsl="http://exslt.org/common"
Packit 0f19cf
    exclude-result-prefixes="doc exsl" version='1.0'>
Packit 0f19cf
  
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="tbl.defcolspec">
Packit 0f19cf
  <xsl:param name="colnum" select="1"/>
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="align"/>
Packit 0f19cf
  <xsl:param name="rowsep"/>
Packit 0f19cf
  <xsl:param name="colsep"/>
Packit 0f19cf
  <xsl:param name="cols"/>
Packit 0f19cf
  <xsl:param name="autowidth"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$colnum <= $cols">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="$colspec/colspec[@colnum = $colnum]">
Packit 0f19cf
        <xsl:copy-of select="$colspec/colspec[@colnum = $colnum]"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:variable name="natwidth">
Packit 0f19cf
          <xsl:call-template name="natural-width">
Packit 0f19cf
            <xsl:with-param name="autowidth" select="$autowidth"/>
Packit 0f19cf
            <xsl:with-param name="colnum" select="$colnum"/>
Packit 0f19cf
          </xsl:call-template>
Packit 0f19cf
        </xsl:variable>
Packit 0f19cf
 
Packit 0f19cf
        
Packit 0f19cf
                 rowsep='{$rowsep}' colsep='{$colsep}' 
Packit 0f19cf
                 colwidth='\newtblstarfactor'>
Packit 0f19cf
          <xsl:if test="$natwidth = 1">
Packit 0f19cf
            <xsl:attribute name="autowidth">1</xsl:attribute>
Packit 0f19cf
          </xsl:if>
Packit 0f19cf
        </colspec>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
    <xsl:call-template name="tbl.defcolspec">
Packit 0f19cf
      <xsl:with-param name="colnum" select="$colnum + 1"/>
Packit 0f19cf
      <xsl:with-param name="align" select="$align"/>
Packit 0f19cf
      <xsl:with-param name="rowsep" select="$rowsep"/>
Packit 0f19cf
      <xsl:with-param name="colsep" select="$colsep"/>
Packit 0f19cf
      <xsl:with-param name="cols" select="$cols"/>
Packit 0f19cf
      <xsl:with-param name="autowidth" select="$autowidth"/>
Packit 0f19cf
      <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="replace-string">
Packit 0f19cf
  <xsl:param name="text"/>
Packit 0f19cf
  <xsl:param name="replace"/>
Packit 0f19cf
  <xsl:param name="with"/>
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="contains($text,$replace)">
Packit 0f19cf
      <xsl:value-of select="substring-before($text,$replace)"/>
Packit 0f19cf
      <xsl:value-of select="$with"/>
Packit 0f19cf
      <xsl:call-template name="replace-string">
Packit 0f19cf
        
Packit 0f19cf
                        select="substring-after($text,$replace)"/>
Packit 0f19cf
        <xsl:with-param name="replace" select="$replace"/>
Packit 0f19cf
        <xsl:with-param name="with" select="$with"/>
Packit 0f19cf
      </xsl:call-template>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:value-of select="$text"/>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     It should be able to do this:
Packit 0f19cf
     a+b+c+d*+e+f -> a+b+c+e+f
Packit 0f19cf
     a+b+c+d*     -> a+b+c
Packit 0f19cf
     d*+e+f       -> e+f      
Packit 0f19cf
-->
Packit 0f19cf
<xsl:template name="colfixed.get">
Packit 0f19cf
  <xsl:param name="width" select="@colwidth"/>
Packit 0f19cf
  <xsl:param name="stared" select="'0'"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="contains($width, '*')">
Packit 0f19cf
      
Packit 0f19cf
                    select="substring-after(substring-after($width, '*'), '+')"/>
Packit 0f19cf
      <xsl:if test="contains(substring-before($width, '*'), '+')">
Packit 0f19cf
        <xsl:call-template name="colfixed.get">
Packit 0f19cf
          <xsl:with-param name="width" select="substring-before($width, '*')"/>
Packit 0f19cf
          <xsl:with-param name="stared" select="'1'"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
        <xsl:if test="$after!=''">
Packit 0f19cf
          <xsl:text>+</xsl:text>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      <xsl:value-of select="$after"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$stared='1'">
Packit 0f19cf
      <xsl:value-of select="substring-before($width, '+')"/>
Packit 0f19cf
      <xsl:if test="contains(substring-after($width, '+'), '+')">
Packit 0f19cf
        <xsl:text>+</xsl:text>
Packit 0f19cf
        <xsl:call-template name="colfixed.get">
Packit 0f19cf
          <xsl:with-param name="width" select="substring-after($width, '+')"/>
Packit 0f19cf
          <xsl:with-param name="stared" select="'1'"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:value-of select="$width"/>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="colstar.get">
Packit 0f19cf
  <xsl:param name="width"/>
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="contains($width, '+')">
Packit 0f19cf
      <xsl:call-template name="colstar.get">
Packit 0f19cf
        <xsl:with-param name="width" select="substring-after($width, '+')"/>
Packit 0f19cf
      </xsl:call-template>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="string(number($width))='NaN'">1</xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:value-of select="number($width)"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     is its natural size determined by the column cells contents -->
Packit 0f19cf
<xsl:template name="natural-width">
Packit 0f19cf
  <xsl:param name="autowidth"/>
Packit 0f19cf
  <xsl:param name="colnum" select="1"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  
Packit 0f19cf
                  (contains($autowidth,'default') or
Packit 0f19cf
                   contains($autowidth,'all'))">1</xsl:when>
Packit 0f19cf
  
Packit 0f19cf
                  contains($autowidth,'all')">1</xsl:when>
Packit 0f19cf
  
Packit 0f19cf
                  contains($autowidth,'column')">1</xsl:when>
Packit 0f19cf
  <xsl:otherwise>0</xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="colspec" mode="newtbl">
Packit 0f19cf
  <xsl:param name="colnum" select="1"/>
Packit 0f19cf
  <xsl:param name="align"/>
Packit 0f19cf
  <xsl:param name="colsep"/>
Packit 0f19cf
  <xsl:param name="rowsep"/>
Packit 0f19cf
  <xsl:param name="autowidth"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="natwidth">
Packit 0f19cf
    <xsl:call-template name="natural-width">
Packit 0f19cf
      <xsl:with-param name="autowidth" select="$autowidth"/>
Packit 0f19cf
      <xsl:with-param name="colnum">
Packit 0f19cf
         <xsl:choose><xsl:when test="@colnum">
Packit 0f19cf
           <xsl:value-of select="@colnum"/>
Packit 0f19cf
         </xsl:when>
Packit 0f19cf
         <xsl:otherwise>
Packit 0f19cf
           <xsl:value-of select="$colnum"/>
Packit 0f19cf
         </xsl:otherwise></xsl:choose>
Packit 0f19cf
      </xsl:with-param>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:copy>
Packit 0f19cf
    <xsl:for-each select="@*"><xsl:copy/></xsl:for-each>
Packit 0f19cf
    <xsl:if test="$natwidth = 1">
Packit 0f19cf
      <xsl:attribute name="autowidth">1</xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:if test="not(@colnum)">
Packit 0f19cf
      <xsl:attribute name="colnum"><xsl:value-of select="$colnum"/>
Packit 0f19cf
      </xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:variable name="fixed">
Packit 0f19cf
      <xsl:call-template name="colfixed.get"/>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$fixed!=''">
Packit 0f19cf
      <xsl:attribute name="fixedwidth">
Packit 0f19cf
        <xsl:value-of select="$fixed"/>
Packit 0f19cf
      </xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="contains(@colwidth,'*')">
Packit 0f19cf
      <xsl:attribute name="colwidth">
Packit 0f19cf
        <xsl:call-template name="replace-string">
Packit 0f19cf
          <xsl:with-param name="text" select="@colwidth"/>
Packit 0f19cf
          <xsl:with-param name="replace">*</xsl:with-param>
Packit 0f19cf
          <xsl:with-param name="with">\newtblstarfactor</xsl:with-param>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:attribute>
Packit 0f19cf
      <xsl:attribute name="star">
Packit 0f19cf
        <xsl:call-template name="colstar.get">
Packit 0f19cf
          <xsl:with-param name="width" select="substring-before(@colwidth, '*')"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="not(string(@colwidth))">
Packit 0f19cf
      <xsl:attribute name="colwidth">\newtblstarfactor</xsl:attribute>
Packit 0f19cf
      <xsl:attribute name="star">1</xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:if test="not(@align)">
Packit 0f19cf
      <xsl:attribute name="align"><xsl:value-of select="$align"/>
Packit 0f19cf
      </xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:if test="not(@rowsep)">
Packit 0f19cf
      <xsl:attribute name="rowsep"><xsl:value-of select="$rowsep"/>
Packit 0f19cf
      </xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:if test="not(@colsep)">
Packit 0f19cf
      <xsl:attribute name="colsep"><xsl:value-of select="$colsep"/>
Packit 0f19cf
      </xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:variable name="bgcolor">
Packit 0f19cf
      <xsl:call-template name="pi.dblatex_bgcolor"/>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    <xsl:if test="$bgcolor != ''">
Packit 0f19cf
      <xsl:attribute name="bgcolor"><xsl:value-of select="$bgcolor"/>
Packit 0f19cf
      </xsl:attribute>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
Packit 0f19cf
  </xsl:copy>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="nextcolnum">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="@colnum"><xsl:value-of select="@colnum + 1"/></xsl:when>
Packit 0f19cf
      <xsl:otherwise><xsl:value-of select="$colnum + 1"/></xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                       select="following-sibling::colspec[1]">
Packit 0f19cf
    <xsl:with-param name="colnum" select="$nextcolnum"/>
Packit 0f19cf
    <xsl:with-param name="align" select="$align"/>
Packit 0f19cf
    <xsl:with-param name="colsep" select="$colsep"/>
Packit 0f19cf
    <xsl:with-param name="rowsep" select="$rowsep"/>
Packit 0f19cf
    <xsl:with-param name="autowidth" select="$autowidth"/>
Packit 0f19cf
  </xsl:apply-templates>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="tbl.colspec">
Packit 0f19cf
  <xsl:param name="autowidth"/>
Packit 0f19cf
  <xsl:param name="align"/>
Packit 0f19cf
  <xsl:param name="rowsep"/>
Packit 0f19cf
  <xsl:param name="colsep"/>
Packit 0f19cf
  <xsl:param name="cols"/>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="givencolspec">
Packit 0f19cf
    <xsl:apply-templates mode="newtbl" select="colspec[1]">
Packit 0f19cf
      <xsl:with-param name="align" select="$align"/>
Packit 0f19cf
      <xsl:with-param name="rowsep" select="$rowsep"/>
Packit 0f19cf
      <xsl:with-param name="colsep" select="$colsep"/>
Packit 0f19cf
      <xsl:with-param name="autowidth" select="$autowidth"/>
Packit 0f19cf
    </xsl:apply-templates>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:call-template name="tbl.defcolspec">
Packit 0f19cf
    <xsl:with-param name="colspec" select="exsl:node-set($givencolspec)"/>
Packit 0f19cf
    <xsl:with-param name="cols" select="$cols"/>
Packit 0f19cf
    <xsl:with-param name="align" select="$align"/>
Packit 0f19cf
    <xsl:with-param name="rowsep" select="$rowsep"/>
Packit 0f19cf
    <xsl:with-param name="colsep" select="$colsep"/>
Packit 0f19cf
    <xsl:with-param name="autowidth" select="$autowidth"/>
Packit 0f19cf
  </xsl:call-template>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="tbl.blankentry">
Packit 0f19cf
  <xsl:param name="colnum"/>
Packit 0f19cf
  <xsl:param name="colend"/>
Packit 0f19cf
  <xsl:param name="rownum"/>
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="entries"/>
Packit 0f19cf
  <xsl:param name="rowcolor"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$colnum <= $colend">
Packit 0f19cf
    
Packit 0f19cf
                  select="$entries/*[self::entry or self::entrytbl]
Packit 0f19cf
                                    [@colstart=$colnum and @rowend >= $rownum]"/>
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="$entry">
Packit 0f19cf
        
Packit 0f19cf
        <xsl:copy-of select="$entry"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:variable name="bgcolor">
Packit 0f19cf
          <xsl:choose>
Packit 0f19cf
          <xsl:when test="$rowcolor != ''">
Packit 0f19cf
            <xsl:value-of select="$rowcolor"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:otherwise>
Packit 0f19cf
            <xsl:value-of select="$colspec/colspec[@colnum=$colnum]/@bgcolor"/>
Packit 0f19cf
          </xsl:otherwise>
Packit 0f19cf
          </xsl:choose>
Packit 0f19cf
        </xsl:variable>
Packit 0f19cf
        
Packit 0f19cf
        
Packit 0f19cf
               rowstart='{$rownum}' rowend='{$rownum}'
Packit 0f19cf
               colsep='{$colspec/colspec[@colnum=$colnum]/@colsep}'
Packit 0f19cf
               defrowsep='{$colspec/colspec[@colnum=$colnum]/@rowsep}'
Packit 0f19cf
               align='{$colspec/colspec[@colnum=$colnum]/@align}'
Packit 0f19cf
               bgcolor='{$bgcolor}'/>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
    <xsl:variable name="nextcol">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="$entry">
Packit 0f19cf
          <xsl:value-of select="$entry/@colend"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:value-of select="$colnum"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    <xsl:call-template name="tbl.blankentry">
Packit 0f19cf
      <xsl:with-param name="colnum" select="$nextcol + 1"/>
Packit 0f19cf
      <xsl:with-param name="colend" select="$colend"/>
Packit 0f19cf
      <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
      <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
      <xsl:with-param name="rowcolor" select="$rowcolor"/>
Packit 0f19cf
      <xsl:with-param name="entries" select="$entries"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="check-colrange">
Packit 0f19cf
  <xsl:param name="colnum"/>
Packit 0f19cf
  <xsl:param name="rownum"/>
Packit 0f19cf
  <xsl:param name="colend"/>
Packit 0f19cf
  <xsl:param name="colstart"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="msg">
Packit 0f19cf
    <xsl:text>Invalid table entry row=</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$rownum"/>
Packit 0f19cf
    <xsl:text>/column=</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$colnum"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  <xsl:if test="string(number($colend))='NaN'">
Packit 0f19cf
    <xsl:message terminate="yes">
Packit 0f19cf
      <xsl:value-of select="$msg"/>
Packit 0f19cf
      <xsl:text> (@colend)</xsl:text>
Packit 0f19cf
    </xsl:message>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  <xsl:if test="string(number($colstart))='NaN'">
Packit 0f19cf
    <xsl:message terminate="yes">
Packit 0f19cf
      <xsl:value-of select="$msg"/>
Packit 0f19cf
      <xsl:text> (@colstart)</xsl:text>
Packit 0f19cf
    </xsl:message>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="entry|entrytbl" mode="newtbl.buildentries">
Packit 0f19cf
  <xsl:param name="colnum"/>
Packit 0f19cf
  <xsl:param name="rownum"/>
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="spanspec"/>
Packit 0f19cf
  <xsl:param name="frame"/>
Packit 0f19cf
  <xsl:param name="rowcolor"/>
Packit 0f19cf
  <xsl:param name="entries"/>
Packit 0f19cf
  <xsl:param name="tabletype"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="cols" select="count($colspec/*)"/>
Packit 0f19cf
 
Packit 0f19cf
  <xsl:if test="$colnum <= $cols">
Packit 0f19cf
Packit 0f19cf
    
Packit 0f19cf
        select="$entries/*[self::entry or self::entrytbl]
Packit 0f19cf
                                [@colstart=$colnum and @rowend >= $rownum]"/>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:choose><xsl:when test="$entry">
Packit 0f19cf
      
Packit 0f19cf
      <xsl:copy-of select="$entry"/>
Packit 0f19cf
Packit 0f19cf
      
Packit 0f19cf
      <xsl:apply-templates mode="newtbl.buildentries" select=".">
Packit 0f19cf
        
Packit 0f19cf
                        select="$entries/entry[@colstart=$colnum]/@colend + 1"/>
Packit 0f19cf
        <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
        <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
        <xsl:with-param name="spanspec" select="$spanspec"/>
Packit 0f19cf
        <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
        <xsl:with-param name="rowcolor" select="$rowcolor"/>
Packit 0f19cf
        <xsl:with-param name="entries" select="$entries"/>
Packit 0f19cf
        <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
      </xsl:apply-templates>
Packit 0f19cf
      </xsl:when><xsl:otherwise>
Packit 0f19cf
      
Packit 0f19cf
      <xsl:variable name="span">
Packit 0f19cf
        <xsl:if test="@spanname and $spanspec[@spanname=current()/@spanname]">
Packit 0f19cf
          <xsl:copy-of select="$spanspec[@spanname=current()/@spanname]"/>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      <xsl:variable name="colstart">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="$colspec/colspec[@colname=current()/@colname]">
Packit 0f19cf
            
Packit 0f19cf
                select="$colspec/colspec[@colname=current()/@colname]/@colnum"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="exsl:node-set($span)/spanspec/@namest">
Packit 0f19cf
            
Packit 0f19cf
                                  exsl:node-set($span)/spanspec/@namest]/@colnum"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="@namest">
Packit 0f19cf
            
Packit 0f19cf
                                  current()/@namest]/@colnum"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:otherwise>
Packit 0f19cf
            <xsl:value-of select="$colnum"/>
Packit 0f19cf
          </xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      <xsl:variable name="colend">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="exsl:node-set($span)/spanspec/@nameend">
Packit 0f19cf
            
Packit 0f19cf
                                  exsl:node-set($span)/spanspec/@nameend]/@colnum"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="@nameend">
Packit 0f19cf
            
Packit 0f19cf
                                  current()/@nameend]/@colnum"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:otherwise>
Packit 0f19cf
            <xsl:value-of select="$colstart"/>
Packit 0f19cf
          </xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
Packit 0f19cf
      
Packit 0f19cf
      <xsl:call-template name="check-colrange">
Packit 0f19cf
        <xsl:with-param name="colnum" select="$colnum"/>
Packit 0f19cf
        <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
        <xsl:with-param name="colstart" select="$colstart"/>
Packit 0f19cf
        <xsl:with-param name="colend" select="$colend"/>
Packit 0f19cf
      </xsl:call-template>
Packit 0f19cf
Packit 0f19cf
      
Packit 0f19cf
      <xsl:variable name="coloff">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          <xsl:when test="self::entrytbl">0</xsl:when>
Packit 0f19cf
          <xsl:otherwise>1</xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      <xsl:if test="$colnum < $colstart">
Packit 0f19cf
        
Packit 0f19cf
        <xsl:call-template name="tbl.blankentry">
Packit 0f19cf
          <xsl:with-param name="colnum" select="$colnum"/>
Packit 0f19cf
          <xsl:with-param name="colend" select="$colstart - 1"/>
Packit 0f19cf
          <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
          <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
          <xsl:with-param name="rowcolor" select="$rowcolor"/>
Packit 0f19cf
          <xsl:with-param name="entries" select="$entries"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      <xsl:variable name="colsep">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="@colsep"><xsl:value-of select="@colsep"/></xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="exsl:node-set($span)/spanspec/@colsep">
Packit 0f19cf
            <xsl:value-of select="exsl:node-set($span)/spanspec/@colsep"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:otherwise>
Packit 0f19cf
            
Packit 0f19cf
            <xsl:value-of select="$colspec/colspec[@colnum=$colstart]/@colsep"/>
Packit 0f19cf
          </xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      <xsl:variable name="defrowsep">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="exsl:node-set($span)/spanspec/@rowsep">
Packit 0f19cf
            <xsl:value-of select="exsl:node-set($span)/spanspec/@rowsep"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:otherwise>
Packit 0f19cf
            
Packit 0f19cf
            <xsl:value-of select="$colspec/colspec[@colnum=$colstart]/@rowsep"/>
Packit 0f19cf
          </xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      <xsl:variable name="align">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="string(@align)">
Packit 0f19cf
            <xsl:value-of select="@align"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="exsl:node-set($span)/spanspec/@align">
Packit 0f19cf
            <xsl:value-of select="exsl:node-set($span)/spanspec/@align"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:otherwise>
Packit 0f19cf
            
Packit 0f19cf
            <xsl:value-of select="$colspec/colspec[@colnum=$colstart]/@align"/>
Packit 0f19cf
          </xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
Packit 0f19cf
      
Packit 0f19cf
      <xsl:variable name="valign">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="string(@valign)">
Packit 0f19cf
            <xsl:value-of select="@valign"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="../@valign">
Packit 0f19cf
            <xsl:value-of select="../@valign"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="../../@valign">
Packit 0f19cf
            <xsl:value-of select="../../@valign"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
Packit 0f19cf
      <xsl:variable name="cellcolor">
Packit 0f19cf
        <xsl:call-template name="pi.dblatex_bgcolor"/>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
Packit 0f19cf
      <xsl:variable name="bgcolor">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          <xsl:when test="$cellcolor != ''">
Packit 0f19cf
            <xsl:value-of select="$cellcolor"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:when test="$rowcolor != ''">
Packit 0f19cf
            <xsl:value-of select="$rowcolor"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:when test="$colspec/colspec[@colnum=$colstart]/@bgcolor">
Packit 0f19cf
            <xsl:value-of select="$colspec/colspec[@colnum=$colstart]/@bgcolor"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:when test="ancestor::*[self::table or self::informaltable]/@bgcolor">
Packit 0f19cf
            
Packit 0f19cf
                                              self::informaltable]/@bgcolor"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      
Packit 0f19cf
      <xsl:copy>
Packit 0f19cf
        <xsl:for-each select="@*"><xsl:copy/></xsl:for-each>
Packit 0f19cf
        <xsl:attribute name="colstart">
Packit 0f19cf
          <xsl:value-of select="$colstart"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:attribute name="colend">
Packit 0f19cf
          <xsl:value-of select="$colend"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:attribute name="coloff">
Packit 0f19cf
          <xsl:value-of select="$coloff"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:attribute name="rowstart">
Packit 0f19cf
          <xsl:value-of select="$rownum"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:attribute name="rowend">
Packit 0f19cf
          <xsl:choose>
Packit 0f19cf
            <xsl:when test="@morerows and @morerows > 0">
Packit 0f19cf
              <xsl:value-of select="@morerows + $rownum"/>
Packit 0f19cf
            </xsl:when>
Packit 0f19cf
            <xsl:otherwise>
Packit 0f19cf
              <xsl:value-of select="$rownum"/>
Packit 0f19cf
            </xsl:otherwise>
Packit 0f19cf
          </xsl:choose>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:attribute name="colsep">
Packit 0f19cf
          <xsl:value-of select="$colsep"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:attribute name="defrowsep">
Packit 0f19cf
          <xsl:value-of select="$defrowsep"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:attribute name="align">
Packit 0f19cf
          <xsl:value-of select="$align"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:attribute name="valign">
Packit 0f19cf
          <xsl:value-of select="$valign"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        <xsl:if test="$bgcolor != ''">
Packit 0f19cf
          <xsl:attribute name="bgcolor">
Packit 0f19cf
            <xsl:value-of select="$bgcolor"/>
Packit 0f19cf
          </xsl:attribute>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
        <xsl:attribute name="tabletype">
Packit 0f19cf
          <xsl:value-of select="$tabletype"/>
Packit 0f19cf
        </xsl:attribute>
Packit 0f19cf
        
Packit 0f19cf
        
Packit 0f19cf
        <xsl:element name="output">
Packit 0f19cf
          <xsl:apply-templates select="." mode="output"/>
Packit 0f19cf
        </xsl:element>
Packit 0f19cf
      </xsl:copy>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
                    not(following-sibling::*[self::entry or self::entrytbl][1])">
Packit 0f19cf
        
Packit 0f19cf
        <xsl:call-template name="tbl.blankentry">
Packit 0f19cf
          <xsl:with-param name="colnum" select="$colend + 1"/>
Packit 0f19cf
          <xsl:with-param name="colend" select="$cols"/>
Packit 0f19cf
          <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
          <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
          <xsl:with-param name="rowcolor" select="$rowcolor"/>
Packit 0f19cf
          <xsl:with-param name="entries" select="$entries"/>
Packit 0f19cf
          <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
               select="following-sibling::*[self::entry or self::entrytbl][1]">
Packit 0f19cf
        <xsl:with-param name="colnum" select="$colend + 1"/>
Packit 0f19cf
        <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
        <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
        <xsl:with-param name="spanspec" select="$spanspec"/>
Packit 0f19cf
        <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
        <xsl:with-param name="rowcolor" select="$rowcolor"/>
Packit 0f19cf
        <xsl:with-param name="entries" select="$entries"/>
Packit 0f19cf
        <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
      </xsl:apply-templates>
Packit 0f19cf
    </xsl:otherwise></xsl:choose>
Packit 0f19cf
  </xsl:if>  
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="entry|entrytbl" mode="newtbl">
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="context"/>
Packit 0f19cf
  <xsl:param name="frame"/>
Packit 0f19cf
  <xsl:param name="rownum"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="cols" select="count($colspec/*)"/>
Packit 0f19cf
  
Packit 0f19cf
      <xsl:if test="@colstart > $cols">
Packit 0f19cf
      <xsl:message>BANG</xsl:message>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
  -->
Packit 0f19cf
  <xsl:if test="@colstart <= $cols">
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
                  select="$colspec/colspec[@colnum=current()/@colstart]/@autowidth"/>
Packit 0f19cf
Packit 0f19cf
    
Packit 0f19cf
                  select="not($autowidth and (@rowstart != $rownum))"/>
Packit 0f19cf
Packit 0f19cf
    
Packit 0f19cf
    <xsl:text>\multicolumn{</xsl:text>
Packit 0f19cf
    <xsl:value-of select="@colend - @colstart + 1"/>
Packit 0f19cf
    <xsl:text>}{</xsl:text>
Packit 0f19cf
    <xsl:apply-templates select="." mode="tbl.colfmt">
Packit 0f19cf
      <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
      <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
      <xsl:with-param name="autowidth" select="$autowidth"/>
Packit 0f19cf
    </xsl:apply-templates>
Packit 0f19cf
    <xsl:text>}{</xsl:text>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="@morerows and @morerows > 0 and $moreprint">
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      <xsl:if test="not($autowidth)">
Packit 0f19cf
        <xsl:text>\setlength{\newtblcolwidth}{</xsl:text>
Packit 0f19cf
        
Packit 0f19cf
        <xsl:call-template name="tbl.colwidth">
Packit 0f19cf
          <xsl:with-param name="col" select="@colstart"/>
Packit 0f19cf
          <xsl:with-param name="colend" select="@colend"/>
Packit 0f19cf
          <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
        <xsl:text>}</xsl:text>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      <xsl:text>\multirowii</xsl:text>
Packit 0f19cf
      
Packit 0f19cf
      
Packit 0f19cf
      <xsl:if test="@valign and @valign!=''">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
        <xsl:when test="@valign = 'top'"><xsl:text>[p]</xsl:text></xsl:when>
Packit 0f19cf
        <xsl:when test="@valign = 'bottom'"><xsl:text>[b]</xsl:text></xsl:when>
Packit 0f19cf
        <xsl:otherwise><xsl:text>[m]</xsl:text></xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      
Packit 0f19cf
      <xsl:text>{</xsl:text>
Packit 0f19cf
      <xsl:value-of select="@morerows + 1"/>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="not($autowidth)">
Packit 0f19cf
          <xsl:text>}{</xsl:text>
Packit 0f19cf
          
Packit 0f19cf
          
Packit 0f19cf
          
Packit 0f19cf
          <xsl:if test="@rowstart != $rownum">
Packit 0f19cf
            <xsl:text>-</xsl:text>
Packit 0f19cf
          </xsl:if>
Packit 0f19cf
          <xsl:text>\newtblcolwidth}{</xsl:text>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:text>}{*}{</xsl:text>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="@rotate and @rotate != 0">
Packit 0f19cf
      <xsl:text>\rotatebox{90}{</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="not($autowidth)">  
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="@align = 'left'">
Packit 0f19cf
          <xsl:text>\raggedright</xsl:text>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="@align = 'right'">
Packit 0f19cf
          <xsl:text>\raggedleft</xsl:text>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="@align = 'center'">
Packit 0f19cf
          <xsl:text>\centering</xsl:text>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:when test="@align = 'justify'"></xsl:when>
Packit 0f19cf
        <xsl:when test="@align != ''">
Packit 0f19cf
          <xsl:message>Word-wrapped alignment 
Packit 0f19cf
          select="@align"/> not supported</xsl:message>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:if>  
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="$context = 'thead'">
Packit 0f19cf
        <xsl:value-of select="$newtbl.format.thead"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:when test="$context = 'tbody'">
Packit 0f19cf
        <xsl:value-of select="$newtbl.format.tbody"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:when test="$context = 'tfoot'">
Packit 0f19cf
        <xsl:value-of select="$newtbl.format.tfoot"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:message>Unknown context <xsl:value-of select="$context"/>
Packit 0f19cf
        </xsl:message>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$moreprint">
Packit 0f19cf
      <xsl:text>%
</xsl:text>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="output">
Packit 0f19cf
          <xsl:value-of select="output"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:apply-templates select="." mode="output"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
      <xsl:text>%
</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="@morerows and @morerows > 0 and $moreprint">
Packit 0f19cf
      <xsl:text>}</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="@rotate and @rotate != 0">
Packit 0f19cf
      <xsl:text>}</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:text>}</xsl:text>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="@colend != $cols">
Packit 0f19cf
      <xsl:text>&</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
  </xsl:if> 
Packit 0f19cf
  
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="entry" mode="output">
Packit 0f19cf
  <xsl:call-template name="normalize-border">
Packit 0f19cf
    <xsl:with-param name="string">
Packit 0f19cf
      <xsl:apply-templates/>
Packit 0f19cf
    </xsl:with-param>
Packit 0f19cf
  </xsl:call-template>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="entrytbl" mode="output">
Packit 0f19cf
  <xsl:call-template name="tgroup">
Packit 0f19cf
    <xsl:with-param name="tablewidth" select="'\linewidth-2\arrayrulewidth'"/>
Packit 0f19cf
    <xsl:with-param name="tableframe" select="'none'"/>
Packit 0f19cf
  </xsl:call-template>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="clines.build">
Packit 0f19cf
  <xsl:param name="entries"/>
Packit 0f19cf
  <xsl:param name="rownum"/>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="thisrowsep" select="@rowsep"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:for-each select="$entries/*">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="@rowend = $rownum">
Packit 0f19cf
      <xsl:variable name="dorowsep">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="@rowsep">
Packit 0f19cf
            <xsl:value-of select="@rowsep"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:when test="$thisrowsep">
Packit 0f19cf
            <xsl:value-of select="$thisrowsep"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          
Packit 0f19cf
          <xsl:otherwise>
Packit 0f19cf
            <xsl:value-of select="@defrowsep"/>
Packit 0f19cf
          </xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:variable>
Packit 0f19cf
      <xsl:if test="$dorowsep = 1">
Packit 0f19cf
        <xsl:text>\cline{</xsl:text>
Packit 0f19cf
        <xsl:value-of select="@colstart"/>
Packit 0f19cf
        <xsl:text>-</xsl:text>
Packit 0f19cf
        <xsl:value-of select="@colend"/>
Packit 0f19cf
        <xsl:text>}</xsl:text>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:for-each>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="hhline.build">
Packit 0f19cf
  <xsl:param name="entries"/>
Packit 0f19cf
  <xsl:param name="rownum"/>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="thisrowsep" select="@rowsep"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:text>\hhline{</xsl:text>
Packit 0f19cf
  <xsl:for-each select="$entries/*">
Packit 0f19cf
    <xsl:variable name="dorowsep">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        
Packit 0f19cf
        <xsl:when test="@rowend != $rownum">
Packit 0f19cf
          <xsl:value-of select="0"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        
Packit 0f19cf
        <xsl:when test="@rowsep">
Packit 0f19cf
          <xsl:value-of select="@rowsep"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        
Packit 0f19cf
        <xsl:when test="$thisrowsep">
Packit 0f19cf
          <xsl:value-of select="$thisrowsep"/>
Packit 0f19cf
        </xsl:when>
Packit 0f19cf
        
Packit 0f19cf
        <xsl:otherwise>
Packit 0f19cf
          <xsl:value-of select="@defrowsep"/>
Packit 0f19cf
        </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:variable name="hsep">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
        <xsl:when test="$dorowsep = 1">-</xsl:when>
Packit 0f19cf
        <xsl:otherwise>~</xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="@colstart = @colend">
Packit 0f19cf
        <xsl:value-of select="$hsep"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:text>*{</xsl:text>
Packit 0f19cf
        <xsl:value-of select="@colend - @colstart + 1"/>
Packit 0f19cf
        <xsl:text>}{</xsl:text>
Packit 0f19cf
        <xsl:value-of select="$hsep"/>
Packit 0f19cf
        <xsl:text>}</xsl:text>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:for-each>
Packit 0f19cf
  <xsl:text>}</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="row" mode="newtbl">
Packit 0f19cf
  <xsl:param name="tabletype"/>
Packit 0f19cf
  <xsl:param name="rownum"/>
Packit 0f19cf
  <xsl:param name="rows"/>
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="spanspec"/>
Packit 0f19cf
  <xsl:param name="frame"/>
Packit 0f19cf
  <xsl:param name="oldentries"><nop/></xsl:param>
Packit 0f19cf
  <xsl:param name="rowstack"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="bgcolor.pi">
Packit 0f19cf
    <xsl:call-template name="pi.dblatex_bgcolor"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="rowcolor">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="$bgcolor.pi!=''">
Packit 0f19cf
        <xsl:value-of select="$bgcolor.pi"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:when test="ancestor::thead">
Packit 0f19cf
        <xsl:value-of select="$newtbl.bgcolor.thead"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
   
Packit 0f19cf
  <xsl:variable name="entries">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="(entry|entrytbl)[1]">
Packit 0f19cf
        <xsl:apply-templates mode="newtbl.buildentries" select="(entry|entrytbl)[1]">
Packit 0f19cf
          <xsl:with-param name="colnum" select="1"/>
Packit 0f19cf
          <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
          <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
          <xsl:with-param name="spanspec" select="$spanspec"/>
Packit 0f19cf
          <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
          <xsl:with-param name="rowcolor" select="$rowcolor"/>
Packit 0f19cf
          <xsl:with-param name="entries" select="exsl:node-set($oldentries)"/>
Packit 0f19cf
          <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
        </xsl:apply-templates>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:copy-of select="exsl:node-set($oldentries)"/>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="context" select="local-name(..)"/>
Packit 0f19cf
  <xsl:variable name="row-output">
Packit 0f19cf
    <xsl:if test="$context = 'thead'">
Packit 0f19cf
      <xsl:value-of select="$rowstack"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
Packit 0f19cf
    <xsl:if test="$rownum = 1">
Packit 0f19cf
      
Packit 0f19cf
      <xsl:if test="$frame = 'all' or $frame = 'top' or $frame = 'topbot'">
Packit 0f19cf
        <xsl:text>\hline</xsl:text>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      <xsl:text>
</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
Packit 0f19cf
    <xsl:apply-templates select="exsl:node-set($entries)/*" mode="newtbl">
Packit 0f19cf
      <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
      <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
      <xsl:with-param name="context" select="$context"/>
Packit 0f19cf
      <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
    </xsl:apply-templates>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:text>\tabularnewline
</xsl:text>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$rownum != $rows">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
      <xsl:when test="$newtbl.use.hhline='1'">
Packit 0f19cf
        <xsl:call-template name="hhline.build">
Packit 0f19cf
          <xsl:with-param name="entries" select="exsl:node-set($entries)"/>
Packit 0f19cf
          <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:call-template name="clines.build">
Packit 0f19cf
          <xsl:with-param name="entries" select="exsl:node-set($entries)"/>
Packit 0f19cf
          <xsl:with-param name="rownum" select="$rownum"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$context != 'thead'">
Packit 0f19cf
    <xsl:value-of select="$row-output"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="following-sibling::row[1]">
Packit 0f19cf
      <xsl:apply-templates mode="newtbl" select="following-sibling::row[1]">
Packit 0f19cf
        <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
        <xsl:with-param name="rownum" select="$rownum + 1"/>
Packit 0f19cf
        <xsl:with-param name="rows" select="$rows"/>
Packit 0f19cf
        <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
        <xsl:with-param name="spanspec" select="$spanspec"/>
Packit 0f19cf
        <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
        <xsl:with-param name="oldentries" select="$entries"/>
Packit 0f19cf
        <xsl:with-param name="rowstack" select="$row-output"/>
Packit 0f19cf
      </xsl:apply-templates>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="$context = 'tfoot'">
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      
Packit 0f19cf
      <xsl:if test="$context = 'thead'">
Packit 0f19cf
        
Packit 0f19cf
                                     |ancestor::informaltable)[last()]"
Packit 0f19cf
                             mode="newtbl.endhead">
Packit 0f19cf
          <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
          <xsl:with-param name="headrows" select="$row-output"/>
Packit 0f19cf
        </xsl:apply-templates>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
Packit 0f19cf
      
Packit 0f19cf
                           select="(../following-sibling::tbody/row)[1]">
Packit 0f19cf
        <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
        <xsl:with-param name="rownum" select="$rownum + 1"/>
Packit 0f19cf
        <xsl:with-param name="rows" select="$rows"/>
Packit 0f19cf
        <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
        <xsl:with-param name="spanspec" select="$spanspec"/>
Packit 0f19cf
        <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
        <xsl:with-param name="oldentries" select="$entries"/>
Packit 0f19cf
      </xsl:apply-templates>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="tbl.colwidth">
Packit 0f19cf
  <xsl:param name="col"/>
Packit 0f19cf
  <xsl:param name="colend"/>
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:value-of select="$colspec/colspec[@colnum=$col]/@colwidth"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$col < $colend">
Packit 0f19cf
    <xsl:text>+2\tabcolsep+\arrayrulewidth+</xsl:text>
Packit 0f19cf
    <xsl:call-template name="tbl.colwidth">
Packit 0f19cf
      <xsl:with-param name="col" select="$col + 1"/>
Packit 0f19cf
      <xsl:with-param name="colend" select="$colend"/>
Packit 0f19cf
      <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template name="tbl.colwidth2">
Packit 0f19cf
  <xsl:param name="col"/>
Packit 0f19cf
  <xsl:param name="colend"/>
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:value-of select="$colspec/colspec[@colnum=$col]/@fixedwidth"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$col < $colend">
Packit 0f19cf
    <xsl:text>+</xsl:text>
Packit 0f19cf
    <xsl:call-template name="tbl.colwidth2">
Packit 0f19cf
      <xsl:with-param name="col" select="$col + 1"/>
Packit 0f19cf
      <xsl:with-param name="colend" select="$colend"/>
Packit 0f19cf
      <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="entry|entrytbl" mode="width.colfmt">
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="color"/>
Packit 0f19cf
  <xsl:param name="rsep"/>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$color != ''">
Packit 0f19cf
    <xsl:value-of select="concat('>{',$color,'}')"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="width">
Packit 0f19cf
    <xsl:call-template name="tbl.colwidth">
Packit 0f19cf
      <xsl:with-param name="col" select="@colstart"/>
Packit 0f19cf
      <xsl:with-param name="colend" select="@colend"/>
Packit 0f19cf
      <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
    <xsl:if test="$rsep = ''">
Packit 0f19cf
      <xsl:text>+\arrayrulewidth</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:if test="@coloff = 0">
Packit 0f19cf
      <xsl:text>+2\tabcolsep</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@valign = 'top'">
Packit 0f19cf
      <xsl:text>p</xsl:text>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="@valign = 'bottom'">
Packit 0f19cf
      <xsl:text>b</xsl:text>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:text>m</xsl:text>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:text>{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$width"/>
Packit 0f19cf
  <xsl:text>}</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="entry|entrytbl" mode="widthx.colfmt">
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="color"/>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
                select="sum(exsl:node-set($colspec)/colspec
Packit 0f19cf
                            [@colnum >= current()/@colstart and 
Packit 0f19cf
                             @colnum <= current()/@colend]/@star)"/>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="width">
Packit 0f19cf
    <xsl:call-template name="tbl.colwidth2">
Packit 0f19cf
      <xsl:with-param name="col" select="@colstart"/>
Packit 0f19cf
      <xsl:with-param name="colend" select="@colend"/>
Packit 0f19cf
      <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="$stars = 0">
Packit 0f19cf
    <xsl:if test="$color != ''">
Packit 0f19cf
      <xsl:value-of select="concat('>{',$color,'}')"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="@valign = 'top'">
Packit 0f19cf
        <xsl:text>p</xsl:text>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:when test="@valign = 'bottom'">
Packit 0f19cf
        <xsl:text>b</xsl:text>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:text>m</xsl:text>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:text>{</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$width"/>
Packit 0f19cf
    <xsl:text>}</xsl:text>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:text>>{</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$color"/>
Packit 0f19cf
    <xsl:text>\setlength\hsize{</xsl:text>
Packit 0f19cf
    <xsl:if test="$width != ''">
Packit 0f19cf
      <xsl:value-of select="$width"/>
Packit 0f19cf
      <xsl:text>+</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:value-of select="$stars"/>
Packit 0f19cf
    <xsl:text>\hsize}}X</xsl:text>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="cals.frame">
Packit 0f19cf
  <xsl:param name="frame"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="$frame='void'">none</xsl:when>
Packit 0f19cf
  <xsl:when test="$frame='above'">top</xsl:when>
Packit 0f19cf
  <xsl:when test="$frame='below'">bottom</xsl:when>
Packit 0f19cf
  <xsl:when test="$frame='hsides'">topbot</xsl:when>
Packit 0f19cf
  <xsl:when test="$frame='vsides'">sides</xsl:when>
Packit 0f19cf
  <xsl:when test="$frame='box'">all</xsl:when>
Packit 0f19cf
  <xsl:when test="$frame='border'">all</xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:value-of select="$frame"/>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="entry|entrytbl" mode="tbl.colfmt">
Packit 0f19cf
  <xsl:param name="frame"/>
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="autowidth"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="cols" select="count($colspec/*)"/>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="@colstart = 1 and ($frame = 'all' or $frame = 'sides')">
Packit 0f19cf
    <xsl:text>|</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="rsep">
Packit 0f19cf
    
Packit 0f19cf
                  (@colend != $cols and @colsep = 1)">
Packit 0f19cf
      <xsl:text>|</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="@coloff = 0">
Packit 0f19cf
    <xsl:text>@{}</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="color">
Packit 0f19cf
    <xsl:if test="@bgcolor != ''">
Packit 0f19cf
      <xsl:text>\columncolor</xsl:text>
Packit 0f19cf
      <xsl:call-template name="get-color">
Packit 0f19cf
        <xsl:with-param name="color" select="@bgcolor"/>
Packit 0f19cf
      </xsl:call-template>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="not($autowidth)">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
    <xsl:when test="@tabletype = 'tabularx'">
Packit 0f19cf
      <xsl:apply-templates select="." mode="widthx.colfmt">
Packit 0f19cf
        <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
        <xsl:with-param name="color" select="$color"/>
Packit 0f19cf
      </xsl:apply-templates>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:apply-templates select="." mode="width.colfmt">
Packit 0f19cf
        <xsl:with-param name="colspec" select="$colspec"/>
Packit 0f19cf
        <xsl:with-param name="color" select="$color"/>
Packit 0f19cf
        <xsl:with-param name="rsep" select="$rsep"/>
Packit 0f19cf
      </xsl:apply-templates>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:if test="$color != ''">
Packit 0f19cf
      <xsl:value-of select="concat('>{',$color,'}')"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="@align = 'left'">l</xsl:when>
Packit 0f19cf
      <xsl:when test="@align = 'right'">r</xsl:when>
Packit 0f19cf
      <xsl:when test="@align = 'center'">c</xsl:when>
Packit 0f19cf
      <xsl:otherwise>c</xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="@coloff = 0">
Packit 0f19cf
    <xsl:text>@{}</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  <xsl:value-of select="$rsep"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="table.width">
Packit 0f19cf
  <xsl:param name="fullwidth"/>
Packit 0f19cf
  <xsl:param name="exclude"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="piwidth">
Packit 0f19cf
    <xsl:call-template name="pi.dblatex_table-width">
Packit 0f19cf
      <xsl:with-param name="node" select=".."/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="width">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      
Packit 0f19cf
                      ($exclude='' or not(contains($piwidth,$exclude)))">
Packit 0f19cf
        <xsl:value-of select="$piwidth"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      
Packit 0f19cf
                      ($exclude='' or not(contains(../@width,$exclude)))">
Packit 0f19cf
        <xsl:value-of select="(@width|../@width)[last()]"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      
Packit 0f19cf
                      ($exclude='' or
Packit 0f19cf
                      not(contains($default.table.width,$exclude)))">
Packit 0f19cf
        <xsl:value-of select="$default.table.width"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:value-of select="$fullwidth"/>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="contains($width, '%')">
Packit 0f19cf
      <xsl:value-of select="number(substring-before($width, '%')) div 100"/>
Packit 0f19cf
      <xsl:value-of select="$fullwidth"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:value-of select="$width"/>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="tbl.sizes">
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="width"/>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:text>\setlength{\newtblsparewidth}{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$width"/>
Packit 0f19cf
  <xsl:for-each select="$colspec/*">
Packit 0f19cf
    <xsl:if test="@fixedwidth">
Packit 0f19cf
      <xsl:text>-</xsl:text>
Packit 0f19cf
      <xsl:value-of select="translate(@fixedwidth,'+','-')"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:text>-2\tabcolsep</xsl:text>
Packit 0f19cf
  </xsl:for-each>
Packit 0f19cf
  <xsl:text>}%
</xsl:text>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                select="sum($colspec/colspec/@star)"/>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$numunknown > 0">
Packit 0f19cf
    <xsl:text>\setlength{\newtblstarfactor}{\newtblsparewidth / \real{</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$numunknown"/>
Packit 0f19cf
    <xsl:text>}}%
</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="tbl.valign.x">
Packit 0f19cf
  <xsl:param name="valign"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="valign.param">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
    <xsl:when test="$valign = 'top'"><xsl:text>p</xsl:text></xsl:when>
Packit 0f19cf
    <xsl:when test="$valign = 'bottom'"><xsl:text>b</xsl:text></xsl:when>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:otherwise><xsl:text>m</xsl:text></xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:text>\def\tabularxcolumn#1{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$valign.param"/>
Packit 0f19cf
  <xsl:text>{#1}}</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="tbl.begin">
Packit 0f19cf
  <xsl:param name="colspec"/>
Packit 0f19cf
  <xsl:param name="tabletype"/>
Packit 0f19cf
  <xsl:param name="width"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:text>\begin{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$tabletype"/>
Packit 0f19cf
  <xsl:text>}</xsl:text>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="$tabletype = 'tabularx'">
Packit 0f19cf
    <xsl:text>{</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$width"/>
Packit 0f19cf
    <xsl:text>}{</xsl:text>
Packit 0f19cf
    <xsl:for-each select="$colspec/*">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
      <xsl:when test="@star">
Packit 0f19cf
        <xsl:text>>{\hsize=</xsl:text>
Packit 0f19cf
        <xsl:if test="@fixedwidth">
Packit 0f19cf
          <xsl:value-of select="@fixedwidth"/>
Packit 0f19cf
          <xsl:text>+</xsl:text>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
        <xsl:value-of select="@star"/>
Packit 0f19cf
        <xsl:text>\hsize}X</xsl:text>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:text>l</xsl:text>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:for-each>
Packit 0f19cf
    <xsl:text>}</xsl:text>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:text>{</xsl:text>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:for-each select="$colspec/*">
Packit 0f19cf
      <xsl:text>l</xsl:text>
Packit 0f19cf
    </xsl:for-each>
Packit 0f19cf
    <xsl:text>}</xsl:text>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="tgroup" mode="newtbl" name="tgroup">
Packit 0f19cf
  <xsl:param name="tabletype">tabular</xsl:param>
Packit 0f19cf
  <xsl:param name="tablewidth">\linewidth-2\tabcolsep</xsl:param>
Packit 0f19cf
  <xsl:param name="tableframe">all</xsl:param>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="not(self::entrytbl)">
Packit 0f19cf
    <xsl:apply-templates mode="save.verbatim"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  <xsl:text>\begingroup%
</xsl:text>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="../@cellpadding">
Packit 0f19cf
    <xsl:text>\setlength{\tabcolsep}{</xsl:text>
Packit 0f19cf
    <xsl:value-of select="../@cellpadding"/>
Packit 0f19cf
    <xsl:text>}%
</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="cols">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="@cols">
Packit 0f19cf
        <xsl:value-of select="@cols"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        
Packit 0f19cf
                              self::entrytbl])"/>
Packit 0f19cf
        <xsl:message>Warning: table's tgroup lacks cols attribute. 
Packit 0f19cf
        Assuming <xsl:value-of select="count(tbody/row[1]/*)"/>.
Packit 0f19cf
        </xsl:message>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="rows" select="count(*/row)"/>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$rows = 0">
Packit 0f19cf
    <xsl:message>Warning: 0 rows</xsl:message>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="table.width">
Packit 0f19cf
    <xsl:call-template name="table.width">
Packit 0f19cf
      <xsl:with-param name="fullwidth" select="$tablewidth"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="width">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="not(contains($table.width,'auto'))">
Packit 0f19cf
        <xsl:value-of select="$table.width"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:call-template name="table.width">
Packit 0f19cf
          <xsl:with-param name="fullwidth" select="$tablewidth"/>
Packit 0f19cf
          <xsl:with-param name="exclude" select="'auto'"/>
Packit 0f19cf
        </xsl:call-template>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="autowidth">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="contains($table.width,'auto')">
Packit 0f19cf
        
Packit 0f19cf
        <xsl:value-of select="$table.width"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise><xsl:value-of select="$newtbl.autowidth"/></xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                select="@align|parent::node()[not(*/@align)]/@align"/>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                select="@colsep|parent::node()[not(*/@colsep)]/@colsep"/>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                select="@rowsep|parent::node()[not(*/@rowsep)]/@rowsep"/>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="frame">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="../@frame">
Packit 0f19cf
        <xsl:value-of select="../@frame"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise><xsl:value-of select="$tableframe"/></xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="colspec">
Packit 0f19cf
    <xsl:call-template name="tbl.colspec">
Packit 0f19cf
      <xsl:with-param name="autowidth" select="$autowidth"/>
Packit 0f19cf
      <xsl:with-param name="cols" select="$cols"/>
Packit 0f19cf
      <xsl:with-param name="rowsep">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          <xsl:when test="$rowsep"><xsl:value-of select="$rowsep"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:when test="$newtbl.default.rowsep">
Packit 0f19cf
            <xsl:value-of select="$newtbl.default.rowsep"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:otherwise>1</xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:with-param>
Packit 0f19cf
      <xsl:with-param name="colsep">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          <xsl:when test="$colsep"><xsl:value-of select="$colsep"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:when test="$newtbl.default.colsep">
Packit 0f19cf
            <xsl:value-of select="$newtbl.default.colsep"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:otherwise>1</xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:with-param>
Packit 0f19cf
      <xsl:with-param name="align">
Packit 0f19cf
        <xsl:choose>
Packit 0f19cf
          <xsl:when test="$align"><xsl:value-of select="$align"/>
Packit 0f19cf
          </xsl:when>
Packit 0f19cf
          <xsl:otherwise>left</xsl:otherwise>
Packit 0f19cf
        </xsl:choose>
Packit 0f19cf
      </xsl:with-param>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="spanspec" select="spanspec"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:if test="$tabletype != 'tabularx'">
Packit 0f19cf
    <xsl:call-template name="tbl.sizes">
Packit 0f19cf
      <xsl:with-param name="colspec" select="exsl:node-set($colspec)"/>
Packit 0f19cf
      <xsl:with-param name="width" select="$width"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  <xsl:if test="$tabletype = 'tabularx'">
Packit 0f19cf
    <xsl:call-template name="tbl.valign.x">
Packit 0f19cf
      <xsl:with-param name="valign" select="tbody/@valign"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="preceding::tgroup">
Packit 0f19cf
    <xsl:text>
</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
  <xsl:call-template name="tbl.begin">
Packit 0f19cf
    <xsl:with-param name="colspec" select="exsl:node-set($colspec)"/>
Packit 0f19cf
    <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
    <xsl:with-param name="width" select="$width"/>
Packit 0f19cf
  </xsl:call-template>
Packit 0f19cf
Packit 0f19cf
  <xsl:if test="not(thead)">
Packit 0f19cf
    
Packit 0f19cf
                                 |ancestor::informaltable)[last()]"
Packit 0f19cf
                         mode="newtbl.endhead">
Packit 0f19cf
      <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
    </xsl:apply-templates>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
 
Packit 0f19cf
  
Packit 0f19cf
  <xsl:apply-templates mode="newtbl" select="((thead|tbody)/row)[1]">
Packit 0f19cf
    <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
    <xsl:with-param name="rownum" select="1"/>
Packit 0f19cf
    <xsl:with-param name="rows" select="$rows"/>
Packit 0f19cf
    <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
    <xsl:with-param name="colspec" select="exsl:node-set($colspec)"/>
Packit 0f19cf
    <xsl:with-param name="spanspec" select="exsl:node-set($spanspec)"/>
Packit 0f19cf
  </xsl:apply-templates>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:apply-templates mode="newtbl" select="tfoot/row[1]">
Packit 0f19cf
    <xsl:with-param name="tabletype" select="$tabletype"/>
Packit 0f19cf
    <xsl:with-param name="rownum" select="count(thead/row|tbody/row)+1"/>
Packit 0f19cf
    <xsl:with-param name="rows" select="$rows"/>
Packit 0f19cf
    <xsl:with-param name="frame" select="$frame"/>
Packit 0f19cf
    <xsl:with-param name="colspec" select="exsl:node-set($colspec)"/>
Packit 0f19cf
    <xsl:with-param name="spanspec" select="exsl:node-set($spanspec)"/>
Packit 0f19cf
  </xsl:apply-templates>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$frame = 'all' or $frame = 'bottom' or $frame = 'topbot'">
Packit 0f19cf
    <xsl:text>\hline</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  <xsl:text>
</xsl:text>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:text>\end{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$tabletype"/>
Packit 0f19cf
  <xsl:text>}\endgroup%
</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
</xsl:stylesheet>