<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
	xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="text"/>

<!-- *********************************************************************** -->
<!-- Sections -->

<!-- Depth	Name
     =====	====
     1		section
     2		subsection
     3		subsubsection
     4		paragraph
     5		subparagraph	# Dosn't work.
  -->

<xsl:template match="section[count(ancestor-or-self::section) &lt;= 4]">
	<xsl:variable name="depth" select="count(ancestor-or-self::section)"/>
	<xsl:text>&#xa;\</xsl:text>
	<xsl:choose>
		<xsl:when test="$depth = 1">section</xsl:when>
		<xsl:when test="$depth = 2">subsection</xsl:when>
		<xsl:when test="$depth = 3">subsubsection</xsl:when>
		<xsl:when test="$depth = 4">paragraph</xsl:when>
	<!--	<xsl:when test="$depth = 5">subparagraph</xsl:when> -->
		</xsl:choose>
	<xsl:if test="@numbered='false'">*</xsl:if>
	<xsl:text>{</xsl:text>
	<xsl:apply-templates select="title/node()"/>
	<xsl:text>}&#xa;</xsl:text>
	<xsl:apply-templates select="*[name()!='title']"/>
	</xsl:template>

<!-- *********************************************************************** -->
<!-- General TeX Structures -->

<!-- '\$name{$content}' -->
<xsl:template match="cite|emph|textbf|texttt|textit">
	<xsl:text>\</xsl:text>
	<xsl:value-of select="name()"/>
	<xsl:text>{</xsl:text>
	<xsl:apply-templates select="node()"/>
	<xsl:text>}</xsl:text>
	</xsl:template>

<!-- '\$begin{$name}$content\end{$name}' -->
<xsl:template match="quote|verbatim">
	<xsl:text>\begin{</xsl:text>
	<xsl:value-of select="name()"/>
	<xsl:text>}</xsl:text>
	<xsl:apply-templates select="node()"/>
	<xsl:text>\end{</xsl:text>
	<xsl:value-of select="name()"/>
	<xsl:text>}</xsl:text>
	</xsl:template>

<!-- '{\$name $content}' -->
<xsl:template match="
	tiny|scriptsize|footnotesize|small|
	normalsize|large|Large|LARGE|huge|Huge
">
	<xsl:text>{</xsl:text>
	<xsl:text>\</xsl:text>
	<xsl:value-of select="name()"/>
	<xsl:text> </xsl:text>
	<xsl:apply-templates select="node()"/>
	<xsl:text>}</xsl:text>
	</xsl:template>

<!-- *********************************************************************** -->
<!-- Figures -->

<xsl:template match="figure">
\begin{figure<xsl:if test="@wide = 'yes'">*</xsl:if>}<xsl:if test="@placement">
[<xsl:value-of select="@placement"/>]</xsl:if>
\centering
<xsl:apply-templates select="node()[name() != 'caption']"/>
<xsl:if test="caption">\caption{<xsl:apply-templates select="caption"/>}</xsl:if>
\end{figure<xsl:if test="@wide = 'yes'">*</xsl:if>}
	</xsl:template>

<!-- *********************************************************************** -->
<!-- Postscript Figures -->
<xsl:template match="epsfig|psfig">
\<xsl:value-of select="name()"/>{file=<xsl:value-of select="@file"/>}
	</xsl:template>

<xsl:template match="includegraphics">
	<xsl:text>\includegraphics</xsl:text>
	<xsl:if test="@scale">[scale=<xsl:value-of select="@scale"/>]</xsl:if>
	<xsl:text>{</xsl:text><xsl:value-of select="@file"/><xsl:text>}</xsl:text>
	</xsl:template>

<!-- *********************************************************************** -->
<!-- Synthetic Structures -->

<xsl:template match="b">
	<xsl:text>\textbf{</xsl:text>
	<xsl:apply-templates select="node()"/>
	<xsl:text>}</xsl:text>
	</xsl:template>

<xsl:template match="i">
	<xsl:text>\textit{</xsl:text>
	<xsl:apply-templates select="node()"/>
	<xsl:text>}</xsl:text>
	</xsl:template>

<xsl:template match="br">\\&#xa;</xsl:template>

<xsl:template match="para|p">
	<xsl:text>&#xa;&#xa;</xsl:text>
	<xsl:apply-templates/>
	<xsl:text>&#xa;&#xa;</xsl:text>
	</xsl:template>

<!--
<xsl:template match="text()[name(..) = 'para']">
	<xsl:text> </xsl:text>
	<xsl:value-of select="normalize-space(.)"/>
	<xsl:text> </xsl:text>
	</xsl:template>
-->

<xsl:template match="ol">
	<xsl:text>&#xa;&#xa;</xsl:text>
	<xsl:text>\begin{enumerate}&#xa;</xsl:text>
	<xsl:for-each select="li">
		<xsl:text>\item </xsl:text>
		<xsl:apply-templates/>
		<xsl:text>&#xa;</xsl:text>
		</xsl:for-each>
	<xsl:text>&#xa;\end{enumerate}&#xa;</xsl:text>
	<xsl:text>&#xa;&#xa;</xsl:text>
	</xsl:template>

<xsl:template match="ul">
	<xsl:text>&#xa;&#xa;</xsl:text>
	<xsl:text>\begin{itemize}&#xa;</xsl:text>
	<xsl:for-each select="li">
		<xsl:text>\item </xsl:text>
		<xsl:apply-templates/>
		<xsl:text>&#xa;</xsl:text>
		</xsl:for-each>
	<xsl:text>&#xa;\end{itemize}&#xa;</xsl:text>
	<xsl:text>&#xa;&#xa;</xsl:text>
	</xsl:template>

<!-- *********************************************************************** -->
<!-- Bibliography -->

<xsl:template name="build-bibliography">
\begin{thebibliography}{<xsl:value-of select="count(bibliography/*)"/>}
<xsl:for-each select="bibliography/*">
	<xsl:call-template name="build-bib-item"/>
	<xsl:text>&#xa;&#xa;</xsl:text>
	</xsl:for-each>
\end{thebibliography}
	</xsl:template>

<xsl:template name="build-bib-item">
<!-- Yield the item header -->
<xsl:text>\bibitem{</xsl:text>
<xsl:value-of select="@name"/>
<xsl:text>}&#xa;</xsl:text>

<!-- Yield the Attribution -->
<xsl:choose>
	<xsl:when test="author">
		<xsl:for-each select="author">
			<xsl:if test="position() != 1">, </xsl:if>
			<xsl:if test="position() != 1 and position() = last()">and </xsl:if>
			<xsl:apply-templates select="node()"/>
			</xsl:for-each>
		<xsl:text>&#xa;</xsl:text>
		</xsl:when>
	<xsl:when test="organization">
		<xsl:apply-templates select="organization/node()"/>
		<xsl:text>&#xa;</xsl:text>
		</xsl:when>
	</xsl:choose>

<!-- Yield the Title -->
<xsl:text>\newblock {\em </xsl:text>
<xsl:apply-templates select="title"/>
<xsl:text>}.&#xa;</xsl:text>

<!-- Additonal Information -->
<xsl:if test="publisher|edition|address|year">
	<xsl:text>\newblock </xsl:text>
	<xsl:if test="booktitle">
		<xsl:text>In {\em </xsl:text>
		<xsl:apply-templates select="booktitle"/>
		<xsl:text>}</xsl:text>
		</xsl:if>
	<xsl:if test="publisher">
		<xsl:if test="booktitle">
			<xsl:text>, </xsl:text>
			</xsl:if>
		<xsl:apply-templates select="publisher"/>
		</xsl:if>
	<xsl:if test="edition">
		<xsl:if test="booktitle|publisher">
			<xsl:text>, </xsl:text>
			</xsl:if>
		<xsl:apply-templates select="edition"/>
		<xsl:text> Edition</xsl:text>
		</xsl:if>
	<xsl:if test="address">
		<xsl:if test="booktitle|publisher|edition">
			<xsl:text>, </xsl:text>
			</xsl:if>
		<xsl:apply-templates select="address"/>
		</xsl:if>
	<xsl:if test="year">
		<xsl:if test="booktitle|publisher|edition|address">
			<xsl:text>, </xsl:text>
			</xsl:if>
		<xsl:apply-templates select="year"/>
		</xsl:if>
		<xsl:text>.&#xa;</xsl:text>
	</xsl:if>

<!-- ISBN -->
<xsl:if test="isbn">
	<xsl:text>\newblock ISBN: </xsl:text>
	<xsl:apply-templates select="isbn"/>
	<xsl:text>&#xa;</xsl:text>
	</xsl:if>

<!-- URL -->
<xsl:if test="url">
	<xsl:text>\\ \newblock \verb!</xsl:text>
	<xsl:apply-templates select="url"/>
	<xsl:text>!&#xa;</xsl:text>
	</xsl:if>

	</xsl:template>

<!-- *********************************************************************** -->
<!-- Import various document class handlers -->

<xsl:include href="article2tex.acm.xsl"/>
<xsl:include href="article2tex.llncs.xsl"/>

<!-- *********************************************************************** -->

</xsl:stylesheet>
