Blame xsl/citation.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
<xsl:param name="citation.natbib.use" select="'0'"/>
Packit 0f19cf
<xsl:param name="citation.natbib.options"/>
Packit 0f19cf
<xsl:param name="citation.default.style"/>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template name="citation.setup">
Packit 0f19cf
  <xsl:if test="$citation.natbib.use!='0'">
Packit 0f19cf
    <xsl:text>\usepackage</xsl:text>
Packit 0f19cf
    <xsl:if test="$citation.natbib.options!=''">
Packit 0f19cf
      <xsl:text>[</xsl:text>
Packit 0f19cf
      <xsl:value-of select="$citation.natbib.options"/>
Packit 0f19cf
      <xsl:text>]</xsl:text>
Packit 0f19cf
    </xsl:if>
Packit 0f19cf
    <xsl:text>{natbib}
</xsl:text>
Packit 0f19cf
  </xsl:if>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     are converted safely to latex strings. Special care about the optional
Packit 0f19cf
     enclosing curly braces telling to use this content block [{...}] so that
Packit 0f19cf
     you can put some '[...]' in it. -->
Packit 0f19cf
Packit 0f19cf
<xsl:template name="cite-parse">
Packit 0f19cf
  <xsl:param name="macro"/>
Packit 0f19cf
Packit 0f19cf
  <xsl:variable name="brackets">
Packit 0f19cf
    <xsl:choose>
Packit 0f19cf
    
Packit 0f19cf
                    contains(substring-after($macro,'[{'),'}]')">
Packit 0f19cf
      <xsl:value-of select="'[{ }]'"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    
Packit 0f19cf
                    contains(substring-after($macro,'['),']')">
Packit 0f19cf
      <xsl:value-of select="'[ ]'"/>
Packit 0f19cf
    </xsl:when>
Packit 0f19cf
    </xsl:choose>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="$brackets!=''">
Packit 0f19cf
    <xsl:variable name="bs" select="substring-before($brackets,' ')"/>
Packit 0f19cf
    <xsl:variable name="be" select="substring-after($brackets,' ')"/>
Packit 0f19cf
    
Packit 0f19cf
                  select="substring-before(substring-after($macro,$bs),$be)"/>
Packit 0f19cf
    <xsl:value-of select="substring-before($macro,$bs)"/>
Packit 0f19cf
    <xsl:value-of select="$bs"/>
Packit 0f19cf
    
Packit 0f19cf
    <xsl:call-template name="normalize-scape">
Packit 0f19cf
      <xsl:with-param name="string" select="$opt"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
    <xsl:value-of select="$be"/>
Packit 0f19cf
    <xsl:call-template name="cite-parse">
Packit 0f19cf
      
Packit 0f19cf
                      select="substring-after($macro,concat($bs,$opt,$be))"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:value-of select="$macro"/>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
     The citation styles are disabled if natbib is not used -->
Packit 0f19cf
Packit 0f19cf
<xsl:template match="citation" mode="cite-style">
Packit 0f19cf
  
Packit 0f19cf
  <xsl:variable name="pi">
Packit 0f19cf
    <xsl:call-template name="pi.dblatex_citestyle"/>
Packit 0f19cf
  </xsl:variable>
Packit 0f19cf
Packit 0f19cf
  <xsl:choose>
Packit 0f19cf
  <xsl:when test="$citation.natbib.use='0'">
Packit 0f19cf
    <xsl:text>\cite</xsl:text>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  
Packit 0f19cf
                             starts-with(@role,'\Cite'))">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:call-template name="cite-parse">
Packit 0f19cf
      <xsl:with-param name="macro" select="@role"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:when test="starts-with($pi,'\cite') or starts-with($pi,'\Cite')">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:call-template name="cite-parse">
Packit 0f19cf
      <xsl:with-param name="macro" select="$pi"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:when test="$citation.default.style!=''">
Packit 0f19cf
    
Packit 0f19cf
    <xsl:call-template name="cite-parse">
Packit 0f19cf
      <xsl:with-param name="macro" select="$citation.default.style"/>
Packit 0f19cf
    </xsl:call-template>
Packit 0f19cf
  </xsl:when>
Packit 0f19cf
  <xsl:otherwise>
Packit 0f19cf
    <xsl:text>\cite</xsl:text>
Packit 0f19cf
  </xsl:otherwise>
Packit 0f19cf
  </xsl:choose>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
Packit 0f19cf
<xsl:template match="citation">
Packit 0f19cf
  <xsl:apply-templates select="." mode="cite-style"/>
Packit 0f19cf
  <xsl:text>{</xsl:text>
Packit 0f19cf
  
Packit 0f19cf
  <xsl:value-of select="."/>
Packit 0f19cf
  <xsl:text>}</xsl:text>
Packit 0f19cf
</xsl:template>
Packit 0f19cf
Packit 0f19cf
</xsl:stylesheet>