<xsl:stylesheet xmlns:rng="http://relaxng.org/ns/structure/1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0" xmlns:teix="http://www.tei-c.org/ns/Examples" xmlns:a="http://relaxng.org/ns/compatibility/annotations/1.0" xmlns:edate="http://exslt.org/dates-and-times" xmlns:xd="http://www.pnp-software.com/XSLTdoc" xmlns:estr="http://exslt.org/strings" xmlns:exsl="http://exslt.org/common" extension-element-prefixes="exsl estr edate" exclude-result-prefixes="xd exsl estr edate a rng tei teix" version="1.0">
  
  <xd:doc type="stylesheet">
    
<xd:short>
    TEI stylesheet dealing  with elements from the
    textstructure module, making LaTeX output.
      
</xd:short>
    
<xd:detail>
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public
    License as published by the Free Software Foundation; either
    version 2.1 of the License, or (at your option) any later version.

    This library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
    Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public
    License along with this library; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

   
   
      
</xd:detail>
    
<xd:author>See AUTHORS</xd:author>
    
<xd:cvsId>$Id: textstructure.xsl 4801 2008-09-13 10:05:32Z rahtz $</xd:cvsId>
    
<xd:copyright>2008, TEI Consortium</xd:copyright>
  
</xd:doc>

  
  <xd:doc>
    
<xd:short>Process elements  * in inner mode</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="*" mode="innertext">
    
<xsl:apply-templates select="." />
  
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:TEI</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>



  
<xsl:template match="tei:TEI">
    
    
<xsl:if test="not($realFigures='true')">
      
<xsl:text>%BEGINFIGMAP</xsl:text>
      
<xsl:if test="not($latexLogo='')">
        
<xsl:text>
%FIGMAP 
</xsl:text>
        
<xsl:value-of select="$latexLogo" />
        
<xsl:text> FIG0 </xsl:text>
      
</xsl:if>
      
<xsl:for-each select="//tei:figure">
        
<xsl:variable name="c">
          
<xsl:number level="any" />
        
</xsl:variable>
        
<xsl:text>
%FIGMAP 
</xsl:text>
        
<xsl:variable name="f">
          
<xsl:choose>
            
<xsl:when test="@url">
              
<xsl:value-of select="@url" />
            
</xsl:when>
            
<xsl:when test="@entity">
              
<xsl:value-of select="unparsed-entity-uri(@entity)" />
            
</xsl:when>
            
<xsl:when test="tei:graphic">
              
<xsl:value-of select="tei:graphic/@url" />
            
</xsl:when>
          
</xsl:choose>
        
</xsl:variable>
        
<xsl:choose>
          
<xsl:when test="contains($f,'.')">
            
<xsl:value-of select="$f" />
          
</xsl:when>
          
<xsl:otherwise>
            
<xsl:value-of select="concat($f,'.png')" />
          
</xsl:otherwise>
        
</xsl:choose>
        
<xsl:text> FIG</xsl:text>
        
<xsl:value-of select="$c + 1000" />
        
<xsl:text>
</xsl:text>
      
</xsl:for-each>
      
<xsl:text>
%ENDFIGMAP
</xsl:text>
    
</xsl:if>
    
<xsl:text>\documentclass[</xsl:text>
    
<xsl:value-of select="$classParameters" />
    
<xsl:text>]{</xsl:text>
    
<xsl:value-of select="$docClass" />
    
<xsl:text>}</xsl:text>
    
<xsl:text>\makeatletter
</xsl:text>
    
<xsl:call-template name="latexSetup" />
    
<xsl:call-template name="latexPackages" />
    
<xsl:call-template name="latexLayout" />
    
<xsl:text>
\@ifundefined{chapter}{%
    \def\DivI{\section}
    \def\DivII{\subsection}
    \def\DivIII{\subsubsection}
    \def\DivIV{\paragraph}
    \def\DivV{\subparagraph}
    \def\DivIStar[#1]#2{\section*{#2}}
    \def\DivIIStar[#1]#2{\subsection*{#2}}
    \def\DivIIIStar[#1]#2{\subsubsection*{#2}}
    \def\DivIVStar[#1]#2{\paragraph*{#2}}
    \def\DivVStar[#1]#2{\subparagraph*{#2}}
}{%
    \def\DivI{\chapter}
    \def\DivII{\section}
    \def\DivIII{\subsection}
    \def\DivIV{\subsubsection}
    \def\DivV{\paragraph}
    \def\DivIStar[#1]#2{\chapter*{#2}}
    \def\DivIIStar[#1]#2{\section*{#2}}
    \def\DivIIIStar[#1]#2{\subsection*{#2}}
    \def\DivIVStar[#1]#2{\subsubsection*{#2}}
    \def\DivVStar[#1]#2{\paragraph*{#2}}
}
\makeatother
\def\TheFullDate{
</xsl:text>
<xsl:call-template name="generateDate" />
<xsl:variable name="revdate">
  
<xsl:call-template name="generateRevDate" />
</xsl:variable>
<xsl:if test="not($revdate='')">
  
<xsl:text> (</xsl:text>
  
<xsl:call-template name="i18n">
    
<xsl:with-param name="word">revisedWord</xsl:with-param>
    
</xsl:call-template>
    
<xsl:value-of select="$revdate" />
    
<xsl:text>)</xsl:text>
</xsl:if>
<xsl:text>}
\def\TheID{
</xsl:text>
<xsl:choose>
  
<xsl:when test="not($REQUEST='')">
    
<xsl:value-of select="not($REQUEST='')" />
  
</xsl:when>
  
<xsl:when test="ancestor-or-self::tei:TEI/tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno">
    
<xsl:value-of select="ancestor-or-self::tei:TEI/tei:teiHeader/tei:fileDesc/tei:publicationStmt/tei:idno" />
  
</xsl:when>

</xsl:choose>
<xsl:text>}
\def\TheDate{
</xsl:text>
<xsl:call-template name="generateDate" />
<xsl:text>}
\title{
</xsl:text>
<xsl:call-template name="generateTitle" />
<xsl:text>}
\author{
</xsl:text>
<xsl:call-template name="generateAuthor" />
<xsl:text>}
\begin{document}
</xsl:text>
<xsl:call-template name="latexBegin" />
<!-- certainly don't touch the next few lines -->
<xsl:text disable-output-escaping="yes">
\catcode`\$=12\relax
\catcode`\^=12\relax
\catcode`\~=12\relax
\catcode`\#=12\relax
\catcode`\%=12\relax
</xsl:text>
<xsl:text disable-output-escaping="yes">\let\tabcellsep&amp;
\catcode`\&amp;=12\relax 
</xsl:text>
<xsl:apply-templates select="tei:text" />
<xsl:call-template name="latexEnd" />
<xsl:text>
\end{document}
</xsl:text>
</xsl:template>

  
  <xd:doc>
    
<xd:short>Process elements  tei:back</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:back">
    
<xsl:if test="not(preceding::tei:back)">
      
<xsl:text>\backmatter </xsl:text>
 
</xsl:if>
    
<xsl:apply-templates />
  
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:body</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:body">
    
<xsl:if test="not(preceding::tei:body) and preceding::tei:front">
      
<xsl:text>\mainmatter </xsl:text>
 
</xsl:if>
    
<xsl:apply-templates />
  
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:body in inner mode</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:body|tei:back|tei:front" mode="innertext">
    
<xsl:apply-templates />
  
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:closer</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:closer">
 \begin{quote}
<xsl:apply-templates />\end{quote}
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:dateline</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:dateline">
 \rightline{
<xsl:apply-templates />}
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process the tei:div elements</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:div0|tei:div1|tei:div2|tei:div3|tei:div4|tei:div5">
    
<xsl:choose>
      
<xsl:when test="@type='letter'">
        
<xsl:text>\subsection*{</xsl:text>
        
<xsl:for-each select="tei:head">
          
<xsl:apply-templates />
        
</xsl:for-each>
        
<xsl:text>}</xsl:text>
        
<xsl:apply-templates />
      
</xsl:when>
      
<xsl:when test="@type='bibliography'">
      \begin{thebibliography}{1}
      
<xsl:call-template name="bibliography" />
      \end{thebibliography}  
    
</xsl:when>
      
<xsl:otherwise>
        
<xsl:apply-templates />
      
</xsl:otherwise>
    
</xsl:choose>
  
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:divGen[@type='toc']</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:divGen[@type='toc']">
\tableofcontents
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:front</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:front">
    
<xsl:if test="not(preceding::tei:front)">
      
<xsl:text>\frontmatter </xsl:text>
 
</xsl:if>
    
<xsl:apply-templates />
  
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:opener</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:opener">
 \begin{quote}
<xsl:apply-templates />\end{quote}
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:l</xd:short>
    
<xd:detail>If verseNumbering is requested,
 counts all the verse lines since the last container (
<gi>div1</gi> by
 default) and labels every fifth verse using a LaTeX box 3 ems wide.
 
</xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:l">
    
<xsl:choose>
      
<xsl:when test="$verseNumbering='true'">
         
<xsl:variable name="id" select="generate-id()" />
         
<xsl:variable name="pos">
           
<xsl:for-each select="ancestor::*[name()=$resetVerseLineNumbering]//l">
               
<xsl:if test="generate-id()=$id">
                   
<xsl:value-of select="position()" />
               
</xsl:if>
           
</xsl:for-each>
         
</xsl:variable>
         
<xsl:choose>
            
<xsl:when test="$pos mod $everyHowManyLines = 0">
              
<xsl:text>\leftline{\makebox[3em][r]{</xsl:text><xsl:value-of select="$pos" /><xsl:text>}\quad{}</xsl:text>
               
<xsl:apply-templates /><xsl:text>}</xsl:text> 
           
</xsl:when>
           
<xsl:otherwise>
               
<xsl:text>\leftline{\makebox[3em][r]{}\quad{}</xsl:text>
               
<xsl:apply-templates /><xsl:text>}</xsl:text> 
           
</xsl:otherwise>
         
</xsl:choose>
      
</xsl:when>
      
<xsl:when test="ancestor::tei:quote">
          
<xsl:apply-templates />\\
      
</xsl:when>
      
<xsl:otherwise>
          \leftline{
<xsl:apply-templates />}
      
</xsl:otherwise>
    
</xsl:choose>
  
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:text</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:text">
    
<xsl:choose>
      
<xsl:when test="parent::tei:TEI">
        
<xsl:apply-templates />
      
</xsl:when>
      
<xsl:when test="parent::tei:group">
        
<xsl:apply-templates />
      
</xsl:when>
      
<xsl:otherwise>
        \par
        \hrule
        \begin{quote}
        \begin{small}
        
<xsl:apply-templates mode="innertext" />
        \end{small}
        \end{quote}
        \hrule
        \par
      
</xsl:otherwise>
    
</xsl:choose>
  
</xsl:template>
  
  <xd:doc>
    
<xd:short>Process elements  tei:titlePage</xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template match="tei:titlePage">
  \begin{titlepage}
<xsl:apply-templates />
  \maketitle
  \end{titlepage}
  \cleardoublepage
</xsl:template>
  
  <xd:doc>
    
<xd:short>[latex] </xd:short>
    
<xd:detail> </xd:detail>
  
</xd:doc>

  
<xsl:template name="generateSimpleTitle">
    
<xsl:choose>
      
<xsl:when test="$useHeaderFrontMatter='true' and ancestor-or-self::tei:TEI/tei:text/tei:front//tei:docTitle">
        
<xsl:value-of select="normalize-space(ancestor-or-self::tei:TEI/tei:text/tei:front//tei:docTitle)" />
      
</xsl:when>
      
<xsl:otherwise>
        
<xsl:value-of select="normalize-space(ancestor-or-self::tei:TEI/tei:teiHeader/tei:fileDesc/tei:titleStmt/tei:title)" />
      
</xsl:otherwise>
    
</xsl:choose>
  
</xsl:template>

</xsl:stylesheet>






































v