1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158
|
<?xml version="1.0" encoding="utf-8"?>
<!--
/=====================================================================\
| LaTeXML-bib-xhtml.xsl |
| Converting documents structure to xhtml |
|=====================================================================|
| Part of LaTeXML: |
| Public domain software, produced as part of work done by the |
| United States Government & not subject to copyright in the US. |
|=====================================================================|
| Bruce Miller <bruce.miller@nist.gov> #_# |
| http://dlmf.nist.gov/LaTeXML/ (o o) |
\=========================================================ooo==U==ooo=/
-->
<xsl:stylesheet
version = "1.0"
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform"
xmlns:ltx = "http://dlmf.nist.gov/LaTeXML"
xmlns:f = "http://dlmf.nist.gov/LaTeXML/functions"
extension-element-prefixes="f"
exclude-result-prefixes = "ltx f">
<!-- whether to split bibliography lists into two columns -->
<xsl:param name="USE_TWOCOLUMN_BIB"></xsl:param>
<!-- ======================================================================
Bibliography
[AFTER conversion to presentation by postprocessing! ie only bibitem's]
====================================================================== -->
<!-- We don't really anticipate bibliographies appearing in inline contexts,
so we pretty much ignore the $context switches.
See the CONTEXT discussion in LaTeXML-common -->
<xsl:preserve-space elements="ltx:surname ltx_givenname ltx:lineage
ltx:bib-title ltx:bib-subtitle ltx:bib-key
ltx:bib-type ltx:bib-date ltx:bib-publisher
ltx:bib-organization ltx:bib-place ltx:bib-part
ltx:bib-edition ltx:bib-status ltx:bib-identifier
ltx:bib-reviewe ltx:bib-links ltx:bib-language
ltx:bib-url ltx:bib-extract ltx:bib-note ltx:bib-data"/>
<xsl:template match="ltx:biblist">
<xsl:param name="context"/>
<xsl:choose>
<xsl:when test="$USE_TWOCOLUMN_BIB">
<xsl:apply-templates select="." mode="twocolumns">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:text>
</xsl:text>
<xsl:element name="ul" namespace="{$html_ns}">
<xsl:call-template name="add_id"/>
<xsl:call-template name="add_attributes"/>
<xsl:apply-templates select="." mode="begin">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:apply-templates>
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:apply-templates select="." mode="end">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:text>
</xsl:text>
</xsl:element>
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template match="ltx:biblist" mode="twocolumns">
<xsl:param name="context"/>
<xsl:param name="items" select="ltx:bibitem"/>
<xsl:param name="lines" select="ltx:bibitem/ltx:bibblock | ltx:bibitem"/>
<xsl:param name="halflines" select="ceiling(count($lines) div 2)"/>
<xsl:param name="miditem" select="count($lines[position() < $halflines]/parent::*) + 1"/>
<xsl:call-template name="split-columns">
<xsl:with-param name="context" select="$context"/>
<xsl:with-param name="wrapper" select="'ul'"/>
<xsl:with-param name="items" select="$items"/>
<xsl:with-param name="miditem" select="$miditem"/>
</xsl:call-template>
</xsl:template>
<xsl:template match="ltx:bibitem">
<xsl:param name="context"/>
<xsl:text>
</xsl:text>
<xsl:element name="li" namespace="{$html_ns}">
<xsl:call-template name="add_id"/>
<xsl:call-template name="add_attributes"/>
<xsl:apply-templates select="." mode="begin">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:choose>
<xsl:when test='ltx:tags/ltx:tag[not(@role)]'>
<xsl:apply-templates select='ltx:tags/ltx:tag[not(@role)]'>
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
</xsl:when>
<xsl:when test='ltx:tags/ltx:tag[@role = "refnum"]'>
<xsl:apply-templates select='ltx:tags/ltx:tag[@role = "refnum"]'>
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
</xsl:when>
</xsl:choose>
<xsl:apply-templates select='ltx:bibblock'>
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:apply-templates select="." mode="end">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
<!-- potential future parameterization?
choose which bibtag is used to display? -->
<xsl:template match="ltx:bibitem/ltx:tags/ltx:tag[@role='refnum']">
<xsl:param name="context"/>
<xsl:element name="span" namespace="{$html_ns}">
<xsl:call-template name="add_id"/>
<xsl:call-template name="add_attributes"/>
<xsl:apply-templates select="." mode="begin">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:value-of select="@open"/>
<xsl:apply-templates>
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:value-of select="@close"/>
<xsl:apply-templates select="." mode="end">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
</xsl:element>
</xsl:template>
<!-- By default, I suppose, this should generate a span,
but if you want openbib, use css: .ltx_bibblock{display:block;} -->
<xsl:template match="ltx:bibblock">
<xsl:param name="context"/>
<xsl:text>
</xsl:text>
<xsl:element name="span" namespace="{$html_ns}">
<xsl:call-template name="add_id"/>
<xsl:call-template name="add_attributes"/>
<xsl:apply-templates select="." mode="begin">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:apply-templates>
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:apply-templates select="." mode="end">
<xsl:with-param name="context" select="$context"/>
</xsl:apply-templates>
<xsl:text>
</xsl:text>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
|