Blame xsl/verbatim.xsl

Packit 0f19cf
Packit 0f19cf
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
    XSLT Stylesheet DocBook -> LaTeX 
Packit 0f19cf
    ############################################################################ -->
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:param name="literal.width.ignore">0</xsl:param>
Packit 0f19cf
<xsl:param name="literal.layout.options"/>
Packit 0f19cf
<xsl:param name="literal.lines.showall">1</xsl:param>
Packit 0f19cf
<xsl:param name="literal.role"/>
Packit 0f19cf
<xsl:param name="literal.class">monospaced</xsl:param>
Packit 0f19cf
<xsl:param name="literal.extensions"/>
Packit 0f19cf
<xsl:param name="linenumbering.scope"/>
Packit 0f19cf
<xsl:param name="linenumbering.default"/>
Packit 0f19cf
<xsl:param name="linenumbering.everyNth"/>
Packit 0f19cf
Packit 0f19cf
<xsl:param name="literal.environment">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="contains($literal.extensions,'scale')">
Packit 0f19cf
    <xsl:text>lstcode</xsl:text>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:text>lstlisting</xsl:text>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:param>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="verbatim.setup">
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="substring($literal.environment,1,3) != 'lst'">
Packit 0f19cf
    <xsl:message terminate="yes">
Packit 0f19cf
      <xsl:text>Error: </xsl:text>
Packit 0f19cf
      <xsl:value-of select="$literal.environment"/>
Packit 0f19cf
      <xsl:text>: a listing environment must start with 'lst'</xsl:text>
Packit 0f19cf
    </xsl:message>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  
Packit 0f19cf
                       mode="save.verbatim.preamble"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template name="verbatim.setup2">
Packit 0f19cf
  <xsl:text>\lstsetup
</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="address">
Packit 0f19cf
  <xsl:call-template name="output.verbatim"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template match="text()" mode="save.verbatim"/>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
              mode="save.verbatim">
Packit 0f19cf
  <xsl:call-template name="save.verbatim"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template name="save.verbatim">
Packit 0f19cf
  <xsl:param name="content">
Packit 0f19cf
    <xsl:apply-templates mode="latex.verbatim"/>
Packit 0f19cf
  </xsl:param>
Packit 0f19cf
  <xsl:text>
\begin{SaveVerbatim}{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="generate-id()"/>
Packit 0f19cf
  <xsl:text>}
</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$content"/>
Packit 0f19cf
  <xsl:text>
\end{SaveVerbatim}
</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
<xsl:template name="output.verbatim">
Packit 0f19cf
  <xsl:param name="content">
Packit 0f19cf
    <xsl:apply-templates mode="latex.verbatim"/>
Packit 0f19cf
  </xsl:param>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  
Packit 0f19cf
                  ancestor::legalnotice">
Packit 0f19cf
    <xsl:text>\UseVerbatim{</xsl:text>
Packit 0f19cf
    <xsl:value-of select="generate-id(.)"/>
Packit 0f19cf
    <xsl:text>}</xsl:text>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:text>
\begin{verbatim}</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$content"/>
Packit 0f19cf
    <xsl:text>\end{verbatim}
</xsl:text>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="alt" mode="latex.verbatim"/>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="*" mode="filename.get">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="@entityref">
Packit 0f19cf
    <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:value-of select="@fileref"/>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     programlisting environment. It escapes the tex sequence, *but* prints
Packit 0f19cf
     out the sequence only if probing is not required (i.e. = 0).
Packit 0f19cf
     
Packit 0f19cf
     Probing is used by a parent that wants to know if it contains some
Packit 0f19cf
     element that needs some tex escaping.
Packit 0f19cf
     -->
Packit 0f19cf
Packit 0f19cf
<xsl:template name="verbatim.embed">
Packit 0f19cf
  <xsl:param name="co-tagin" select="'<'"/>
Packit 0f19cf
  <xsl:param name="rnode" select="/"/>
Packit 0f19cf
  <xsl:param name="probe" select="0"/>
Packit 0f19cf
  <xsl:param name="content"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:value-of select="concat($co-tagin, 't>')"/>
Packit 0f19cf
  <xsl:if test="$probe = 0">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="$content != ''">
Packit 0f19cf
        <xsl:value-of select="$content"/>
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>
Packit 0f19cf
  <xsl:value-of select="'</t>'"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     specified by the <style> that drives the corresponding delimiter
Packit 0f19cf
     sequence. Styles can be nested, so apply the same template mode to
Packit 0f19cf
     children.
Packit 0f19cf
     -->
Packit 0f19cf
Packit 0f19cf
<xsl:template name="verbatim.format">
Packit 0f19cf
  <xsl:param name="co-tagin" select="'<'"/>
Packit 0f19cf
  <xsl:param name="rnode" select="/"/>
Packit 0f19cf
  <xsl:param name="probe" select="0"/>
Packit 0f19cf
  <xsl:param name="style" select="'b'"/>
Packit 0f19cf
  <xsl:param name="content"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:value-of select="concat($co-tagin, $style, '>')"/>
Packit 0f19cf
  <xsl:if test="$probe = 0">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
      <xsl:when test="$content != ''">
Packit 0f19cf
        <xsl:value-of select="$content"/>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:apply-templates mode="latex.programlisting">
Packit 0f19cf
          <xsl:with-param name="co-tagin" select="$co-tagin"/>
Packit 0f19cf
          <xsl:with-param name="rnode" select="$rnode"/>
Packit 0f19cf
          <xsl:with-param name="probe" select="$probe"/>
Packit 0f19cf
        </xsl:apply-templates>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  <xsl:value-of select="concat('</', $style, '>')"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     process it.
Packit 0f19cf
     -->
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
              mode="latex.programlisting">
Packit 0f19cf
  <xsl:param name="co-tagin" select="'<'"/>
Packit 0f19cf
  <xsl:param name="rnode" select="/"/>
Packit 0f19cf
  <xsl:param name="probe" select="0"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:value-of select="concat($co-tagin, 't', '>')"/>
Packit 0f19cf
  <xsl:value-of select="."/>
Packit 0f19cf
  <xsl:value-of select="concat('</', 't', '>')"/>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     text() adapted to this environment, and apply to its children the same
Packit 0f19cf
     template. -->
Packit 0f19cf
Packit 0f19cf
<xsl:template match="*" mode="latex.programlisting">
Packit 0f19cf
  <xsl:param name="co-tagin" select="'<'"/>
Packit 0f19cf
  <xsl:param name="rnode" select="/"/>
Packit 0f19cf
  <xsl:param name="probe" select="0"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:if test="$output.quietly = 0">
Packit 0f19cf
    <xsl:message>
Packit 0f19cf
      <xsl:value-of select="local-name(.)"/>
Packit 0f19cf
      <xsl:text>: default template used in programlisting or screen</xsl:text>
Packit 0f19cf
    </xsl:message>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  <xsl:apply-templates mode="latex.programlisting">
Packit 0f19cf
    <xsl:with-param name="co-tagin" select="$co-tagin"/>
Packit 0f19cf
    <xsl:with-param name="rnode" select="$rnode"/>
Packit 0f19cf
    <xsl:with-param name="probe" select="$probe"/>
Packit 0f19cf
  </xsl:apply-templates>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     to an external file -->
Packit 0f19cf
Packit 0f19cf
<xsl:template match="programlisting|screen|literallayout" mode="internal">
Packit 0f19cf
  <xsl:param name="opt"/>
Packit 0f19cf
  <xsl:param name="co-tagin"/>
Packit 0f19cf
  <xsl:param name="rnode" select="/"/>
Packit 0f19cf
  <xsl:param name="env" select="'lstlisting'"/>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
  <xsl:text>
\begin{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$env"/>
Packit 0f19cf
  <xsl:text>}</xsl:text>
Packit 0f19cf
  <xsl:if test="$opt!=''">
Packit 0f19cf
    <xsl:text>[</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$opt"/>
Packit 0f19cf
    <xsl:text>]</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                string-length(normalize-space(
Packit 0f19cf
                  substring-before(.,'
')))>0">
Packit 0f19cf
    <xsl:text>
</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  <xsl:apply-templates mode="latex.programlisting">
Packit 0f19cf
    <xsl:with-param name="co-tagin" select="$co-tagin"/>
Packit 0f19cf
    <xsl:with-param name="rnode" select="$rnode"/>
Packit 0f19cf
  </xsl:apply-templates>
Packit 0f19cf
  
Packit 0f19cf
  
Packit 0f19cf
                substring(translate(.,' 	',''),
Packit 0f19cf
                  string-length(translate(.,' 	','')))!='
'">
Packit 0f19cf
    <xsl:text>
</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  <xsl:text>\end{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$env"/>
Packit 0f19cf
  <xsl:text>}
</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="linenumbering">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
    <xsl:when test="@linenumbering='numbered'">1</xsl:when>
Packit 0f19cf
    <xsl:when test="@linenumbering and @linenumbering!='numbered'">0</xsl:when>
Packit 0f19cf
    
Packit 0f19cf
                   (contains(concat(' ',$linenumbering.scope,' '),
Packit 0f19cf
                             concat(' ',local-name(.),' ')))">1</xsl:when>
Packit 0f19cf
    <xsl:otherwise>0</xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
 
Packit 0f19cf
<xsl:template match="programlisting|screen|literallayout">
Packit 0f19cf
  <xsl:param name="rnode" select="/"/>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="width">
Packit 0f19cf
    
Packit 0f19cf
                  @width and string(number(@width))!='NaN'">
Packit 0f19cf
      <xsl:text>\setlength{\lstwidth}{</xsl:text>
Packit 0f19cf
      <xsl:value-of select="@width"/>
Packit 0f19cf
      <xsl:text>\lstcharwidth+2\lstframesep}</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="escaped">
Packit 0f19cf
    <xsl:apply-templates mode="latex.programlisting">
Packit 0f19cf
      <xsl:with-param name="probe" select="1"/>
Packit 0f19cf
    </xsl:apply-templates>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="co-tagin">
Packit 0f19cf
    <xsl:if test="descendant::co or $escaped != ''">
Packit 0f19cf
      <xsl:call-template name="co-tagin-gen"/>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="linenumbered">
Packit 0f19cf
    <xsl:call-template name="linenumbering"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="role">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
    <xsl:when test="@role">
Packit 0f19cf
      <xsl:value-of select="@role"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      <xsl:value-of select="$literal.role"/>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="opt">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$literal.lines.showall='0'">
Packit 0f19cf
      <xsl:text>showlines=false,</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$role='overflow'">
Packit 0f19cf
      <xsl:text>breaklines=false,</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="contains($literal.extensions, 'scale')">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
      
Packit 0f19cf
          ($role='' and $literal.extensions='scale.by.width' and $width!='')">
Packit 0f19cf
        <xsl:text>scale=true,</xsl:text>
Packit 0f19cf
        
Packit 0f19cf
        <xsl:if test="$width=''">
Packit 0f19cf
          <xsl:text>breaklines=false,</xsl:text>
Packit 0f19cf
        </xsl:if>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:text>scale=false,</xsl:text>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="@language">
Packit 0f19cf
      <xsl:text>language={</xsl:text>
Packit 0f19cf
      <xsl:value-of select="@language"/>
Packit 0f19cf
      <xsl:text>},</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$width!=''">
Packit 0f19cf
      <xsl:text>linewidth=\lstwidth,</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$linenumbered=1">
Packit 0f19cf
      <xsl:text>numbers=left,</xsl:text>
Packit 0f19cf
      <xsl:if test="number($linenumbering.everyNth) > 1">
Packit 0f19cf
        <xsl:text>stepnumber=</xsl:text>
Packit 0f19cf
        <xsl:value-of select="number($linenumbering.everyNth)"/>
Packit 0f19cf
        <xsl:text>,</xsl:text>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
    <xsl:when test="@startinglinenumber">
Packit 0f19cf
      <xsl:text>firstnumber=</xsl:text>
Packit 0f19cf
      <xsl:value-of select="@startinglinenumber"/>
Packit 0f19cf
      <xsl:text>,</xsl:text>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:when test="@continuation and (@continuation='continues')">
Packit 0f19cf
      
Packit 0f19cf
      <xsl:text>firstnumber=last</xsl:text>
Packit 0f19cf
      <xsl:text>,</xsl:text>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    <xsl:otherwise>
Packit 0f19cf
      
Packit 0f19cf
      <xsl:text>firstnumber=1</xsl:text>
Packit 0f19cf
      <xsl:text>,</xsl:text>
Packit 0f19cf
    </xsl:otherwise>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="self::literallayout">
Packit 0f19cf
      <xsl:text>backgroundcolor={},</xsl:text>
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
      
Packit 0f19cf
                      $literal.class='monospaced'">
Packit 0f19cf
        <xsl:text>basicstyle=\ttfamily,</xsl:text>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        <xsl:text>basicstyle=\normalfont,flexiblecolumns,</xsl:text>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$co-tagin!=''">
Packit 0f19cf
      <xsl:call-template name="listing-delim">
Packit 0f19cf
        <xsl:with-param name="tagin" select="$co-tagin"/>
Packit 0f19cf
      </xsl:call-template>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  
Packit 0f19cf
  <xsl:if test="$width!=''">
Packit 0f19cf
    <xsl:text>
</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$width"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  
Packit 0f19cf
                  descendant::inlinegraphic[@format='linespecific']|
Packit 0f19cf
                  descendant::textdata">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:text>
\lstinputlisting</xsl:text>
Packit 0f19cf
    <xsl:if test="$opt!=''">
Packit 0f19cf
      <xsl:text>[</xsl:text>
Packit 0f19cf
      <xsl:value-of select="$opt"/>
Packit 0f19cf
      <xsl:text>]</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:text>{</xsl:text>
Packit 0f19cf
    
Packit 0f19cf
        select="descendant::imagedata|descendant::inlinegraphic|
Packit 0f19cf
                descendant::textdata"
Packit 0f19cf
        mode="filename.get"/>
Packit 0f19cf
    <xsl:text>}
</xsl:text>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:apply-templates select="." mode="internal">
Packit 0f19cf
      <xsl:with-param name="rnode" select="$rnode"/>
Packit 0f19cf
      <xsl:with-param name="co-tagin" select="$co-tagin"/>
Packit 0f19cf
      <xsl:with-param name="opt" select="$opt"/>
Packit 0f19cf
      <xsl:with-param name="env" select="$literal.environment"/>
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
Packit 0f19cf
<xsl:template name="listing-delim">
Packit 0f19cf
  <xsl:param name="tagin" select="'<'"/>
Packit 0f19cf
  <xsl:variable name="tex" select="concat($tagin, 't>')"/>
Packit 0f19cf
  <xsl:variable name="bf" select="concat($tagin, 'b>')"/>
Packit 0f19cf
  <xsl:variable name="it" select="concat($tagin, 'i>')"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:text>escapeinside={</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$tex"/>
Packit 0f19cf
  <xsl:text>}{</t>}</xsl:text>
Packit 0f19cf
  <xsl:text>,</xsl:text>
Packit 0f19cf
  <xsl:text>moredelim={**[is][\bfseries]{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$bf"/>
Packit 0f19cf
  <xsl:text>}{</b>}},</xsl:text>
Packit 0f19cf
  <xsl:text>moredelim={**[is][\itshape]{</xsl:text>
Packit 0f19cf
  <xsl:value-of select="$it"/>
Packit 0f19cf
  <xsl:text>}{</i>}},</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     in which context the footnotes are used. A check is done to not cover
Packit 0f19cf
     the other saving points in tables. -->
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
              mode="save.verbatim.preamble">
Packit 0f19cf
  
Packit 0f19cf
                ancestor::footnote">
Packit 0f19cf
    <xsl:apply-templates select="." mode="save.verbatim"/>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     use the fancyvrb verbatim coupled to listings for the rendering stuff.
Packit 0f19cf
     This mode assumes that all the verbatim data is in an external
Packit 0f19cf
     file. Using the save/use commands would work except for linenumbering
Packit 0f19cf
     stuff. -->
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
              mode="save.verbatim">
Packit 0f19cf
  
Packit 0f19cf
                    descendant::inlinegraphic[@format='linespecific']|
Packit 0f19cf
                    descendant::textdata)">
Packit 0f19cf
    <xsl:variable name="str1" select="."/>
Packit 0f19cf
    <xsl:variable name="str">
Packit 0f19cf
      <xsl:apply-templates mode="latex.programlisting"/>
Packit 0f19cf
    </xsl:variable>
Packit 0f19cf
Packit 0f19cf
    <xsl:text>\begin{VerbatimOut}{tmplst-</xsl:text>
Packit 0f19cf
    <xsl:value-of select="generate-id()"/>
Packit 0f19cf
    <xsl:text>}</xsl:text>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
           string-length(
Packit 0f19cf
             normalize-space(substring-before($str1,'
')))>0">
Packit 0f19cf
      <xsl:text>
</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:value-of select="$str"/>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
                  substring(translate($str1,' 	',''),
Packit 0f19cf
                    string-length(translate($str1,' 	','')))!='
'">
Packit 0f19cf
      <xsl:text>
</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:text>\end{VerbatimOut}
</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
                       self::entrytbl or
Packit 0f19cf
                       self::footnote]//
Packit 0f19cf
                     *[self::programlisting or
Packit 0f19cf
                       self::screen or
Packit 0f19cf
                       self::literallayout]">
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="lsopt">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="@language">
Packit 0f19cf
      <xsl:text>language=</xsl:text>
Packit 0f19cf
      <xsl:value-of select="@language"/>
Packit 0f19cf
      <xsl:text>,</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="linenumbered">
Packit 0f19cf
    <xsl:call-template name="linenumbering"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="fvopt">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="$linenumbered=1">
Packit 0f19cf
      <xsl:text>numbers=left,</xsl:text>
Packit 0f19cf
      <xsl:if test="number($linenumbering.everyNth) > 1">
Packit 0f19cf
        <xsl:text>stepnumber=</xsl:text>
Packit 0f19cf
        <xsl:value-of select="number($linenumbering.everyNth)"/>
Packit 0f19cf
        <xsl:text>,</xsl:text>
Packit 0f19cf
      </xsl:if>
Packit 0f19cf
      
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
      <xsl:when test="@startinglinenumber">
Packit 0f19cf
        <xsl:text>firstnumber=</xsl:text>
Packit 0f19cf
        <xsl:value-of select="@startinglinenumber"/>
Packit 0f19cf
        <xsl:text>,</xsl:text>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:when test="@continuation and (@continuation='continues')">
Packit 0f19cf
        
Packit 0f19cf
        <xsl:text>firstnumber=last</xsl:text>
Packit 0f19cf
        <xsl:text>,</xsl:text>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      <xsl:otherwise>
Packit 0f19cf
        
Packit 0f19cf
        <xsl:text>firstnumber=1</xsl:text>
Packit 0f19cf
        <xsl:text>,</xsl:text>
Packit 0f19cf
      </xsl:otherwise>
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:if test="self::literallayout">
Packit 0f19cf
      <xsl:choose>
Packit 0f19cf
      
Packit 0f19cf
                      $literal.class='monospaced'">
Packit 0f19cf
        <xsl:text>fontfamily=tt,</xsl:text>
Packit 0f19cf
      </xsl:when>
Packit 0f19cf
      
Packit 0f19cf
      </xsl:choose>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:text>\begin{fvlisting}</xsl:text>
Packit 0f19cf
  <xsl:if test="$lsopt!=''">
Packit 0f19cf
    <xsl:text>[</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$lsopt"/>
Packit 0f19cf
    <xsl:text>]</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
  <xsl:text>
</xsl:text>
Packit 0f19cf
Packit 0f19cf
  <xsl:text>\VerbatimInput</xsl:text>
Packit 0f19cf
  <xsl:if test="$fvopt!=''">
Packit 0f19cf
    <xsl:text>[</xsl:text>
Packit 0f19cf
    <xsl:value-of select="$fvopt"/>
Packit 0f19cf
    <xsl:text>]</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
Packit 0f19cf
  <xsl:text>{</xsl:text>
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  
Packit 0f19cf
                  descendant::inlinegraphic[@format='linespecific']|
Packit 0f19cf
                  descendant::textdata">
Packit 0f19cf
    
Packit 0f19cf
    
Packit 0f19cf
        select="descendant::imagedata|descendant::inlinegraphic|
Packit 0f19cf
                descendant::textdata"
Packit 0f19cf
        mode="filename.abs.get"/>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:text>tmplst-</xsl:text>
Packit 0f19cf
    <xsl:value-of select="generate-id(.)"/>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
  <xsl:text>}
</xsl:text>
Packit 0f19cf
Packit 0f19cf
  <xsl:text>\end{fvlisting}
</xsl:text>
Packit 0f19cf
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="*" mode="filename.abs.get">
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="@entityref">
Packit 0f19cf
    <xsl:value-of select="unparsed-entity-uri(@entityref)"/>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:when test="contains(@fileref, ':')">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:value-of select="substring-after(@fileref, ':')"/>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:when test="starts-with(@fileref, '/')">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:value-of select="@fileref"/>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:value-of select="$current.dir"/>
Packit 0f19cf
    <xsl:text>/</xsl:text>
Packit 0f19cf
    <xsl:value-of select="@fileref"/>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
</xsl:stylesheet>