diff options
author | Karl Berry <karl@freefriends.org> | 2010-07-19 23:16:46 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-07-19 23:16:46 +0000 |
commit | 277ca449c86a187fe858defdcd6aa1830d3b2d0d (patch) | |
tree | a804dd4e397504655fc225e6f582554780c4115d /Master/texmf-dist/source/latex/stex/xsl | |
parent | d515f1120311798486a522c56170bd519d9c6a7a (diff) |
reinstate stex via new .tds.zip
git-svn-id: svn://tug.org/texlive/trunk@19538 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/stex/xsl')
-rw-r--r-- | Master/texmf-dist/source/latex/stex/xsl/ltxml2cnx.xsl | 43 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/stex/xsl/omdocpost.xsl | 441 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/stex/xsl/owl2post.xsl | 62 |
3 files changed, 546 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/stex/xsl/ltxml2cnx.xsl b/Master/texmf-dist/source/latex/stex/xsl/ltxml2cnx.xsl new file mode 100644 index 00000000000..9f854abee37 --- /dev/null +++ b/Master/texmf-dist/source/latex/stex/xsl/ltxml2cnx.xsl @@ -0,0 +1,43 @@ +<?xml version="1.0" encoding="utf-8"?> +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:ltx="http://dlmf.nist.gov/LaTeXML" + xmlns='http://cnx.rice.edu/cnxml' + xmlns:m='http://www.w3.org/1998/Math/MathML' + xmlns:md="http://cnx.rice.edu/mdml/0.4" + xmlns:bib="http://bibtexml.sf.net/" + exclude-result-prefixes="ltx md bib" + version="1.0"> + + <xsl:output method="xml" indent="yes" + doctype-public="-//CNX//DTD CNXML 0.5 plus MathML//EN" + doctype-system="http://cnx.rice.edu/cnxml/0.5/DTD/cnxml_mathml.dtd"/> + + <xsl:strip-space elements="*"/> + +<!-- if there is no other template, give a warning --> +<!-- <xsl:template match="*"> + <xsl:message>Cannot deal with element <xsl:value-of select="local-name()"/> yet! (id=<xsl:value-of select="@xml:id"/>)</xsl:message> + <xsl:comment>elided element <xsl:value-of select="local-name()"/></xsl:comment> + </xsl:template> --> + + <xsl:template match="*"> + <xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy> + </xsl:template> + + <xsl:template match="ltx:Math"> + <xsl:copy-of select="m:math"/> + </xsl:template> + +<xsl:template match="ltx:*"> + <xsl:element name="{local-name()}"> + <xsl:copy-of select="@*"/><xsl:apply-templates/> + </xsl:element> +</xsl:template> + +<xsl:template match="ltx:tabular"> + <table> + <xsl:copy-of select="@*"/><xsl:apply-templates/> + </table> +</xsl:template> + +</xsl:stylesheet> diff --git a/Master/texmf-dist/source/latex/stex/xsl/omdocpost.xsl b/Master/texmf-dist/source/latex/stex/xsl/omdocpost.xsl new file mode 100644 index 00000000000..d49f692a387 --- /dev/null +++ b/Master/texmf-dist/source/latex/stex/xsl/omdocpost.xsl @@ -0,0 +1,441 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- this style sheet transforms the tex.xml file to OMDoc --> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns="http://omdoc.org/ns" + xmlns:omdoc="http://omdoc.org/ns" + xmlns:mcd="http://www.w3.org/ns/mathml-cd" + xmlns:ltx="http://dlmf.nist.gov/LaTeXML" + xmlns:stex="http://kwarc.info/ns/sTeX" + xmlns:m="http://www.w3.org/1998/Math/MathML" + xmlns:om="http://www.openmath.org/OpenMath" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:str="http://exslt.org/strings" + extension-element-prefixes="str" + exclude-result-prefixes="xsl omdoc ltx m om dc"> + +<xsl:output method="xml" indent="yes" cdata-section-elements="data"/> +<xsl:strip-space elements="*"/> + +<!-- these parameters set the paths to the special latexml cds. The default is made so that it works for GenCS --> +<xsl:param name="latexmlcds" select="'../../../slides/extcds/stex'"/> +<xsl:param name="omcds" select="'../../../slides/extcds/omstd'"/> + +<xsl:template match="/"> + <xsl:comment>This OMDoc document is generated from an sTeX-encoded one via LaTeXML, you may want to reconsider editing it.</xsl:comment> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="omdoc:omdoc"> + <xsl:copy> + <xsl:copy-of select="@*"/> + <xsl:apply-templates/> + <xsl:comment>The data elements</xsl:comment> + <xsl:apply-templates mode="extract-data"/> + </xsl:copy> +</xsl:template> + +<xsl:template match="*"> + <xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy> +</xsl:template> + +<xsl:template match="ltx:ERROR"/> +<xsl:template match="*|text()" mode="extract-data"> + <xsl:apply-templates mode="extract-data"/> +</xsl:template> + +<xsl:template match="ltx:Math"> + <xsl:apply-templates select="om:OMOBJ"/> +</xsl:template> + +<!-- we directly access the content of titles --> +<xsl:template match="ltx:title"/> +<xsl:template match="ltx:chapter|ltx:part|ltx:section|ltx:subsection|ltx:subsubsection|ltx:paragraph"> + <omgroup layout="sectioning"> + <xsl:copy-of select="@*"/> + <metadata> + <dc:title><xsl:apply-templates select="ltx:title/*|ltx:title/text()"/></dc:title> + </metadata> + <xsl:apply-templates/> + </omgroup> +</xsl:template> + +<xsl:template match="ltx:p"> + <p><xsl:copy-of select="@*"/><xsl:apply-templates/></p> +</xsl:template> + +<xsl:template match="ltx:para"> + <omtext><xsl:copy-of select="@*"/><CMP><xsl:apply-templates/></CMP></omtext> +</xsl:template> + +<xsl:template match="ltx:text"> + <phrase> + <xsl:copy-of select="@*"/> + <xsl:if test="@font"> + <xsl:attribute name="class"><xsl:value-of select="@font"/></xsl:attribute> + </xsl:if> + <xsl:apply-templates/> + </phrase> +</xsl:template> + + +<xsl:template match="ltx:graphics|ltx:verbatim"> + <omlet action="display" data="#{generate-id()}" show="embed" style="{translate(@options,'=',':')}"> + <xsl:copy-of select="@*"/> + </omlet> +</xsl:template> + +<xsl:template match="omdoc:tikz"> + <omlet action="display" data="#{generate-id()}" show="embed" style="{translate(@options,'=',':')}"> + <xsl:copy-of select="@*"/> + </omlet> +</xsl:template> + +<!-- for citations we just extract the bibrefs at the moment. --> +<xsl:template match="ltx:cite"><xsl:apply-templates select="ltx:bibref"/></xsl:template> +<xsl:template match="ltx:bibref"> + <xsl:for-each select="str:tokenize(@bibrefs,',')"> + <ref type="cite" xref="{.}"/> + </xsl:for-each> +</xsl:template> + +<!-- we ignore LaTeXML breaks --> +<xsl:template match="ltx:break"/> + +<xsl:template match="ltx:figure[ltx:graphics]"> + <omlet action="display" data="#{generate-id(ltx:graphics)}" show="embed" class="float-figure-{@placement}"> + <xsl:if test="@label"> + <xsl:attribute name="xml:id"><xsl:value-of select="@label"/></xsl:attribute> + </xsl:if> + <xsl:if test="ltx:graphics/@options"> + <xsl:attribute name="style"><xsl:value-of select="translate(ltx:graphics/@options,'=',':')"/></xsl:attribute> + </xsl:if> + <xsl:if test="ltx:caption/*|ltx:caption/text()"> + <metadata><dc:title><xsl:apply-templates select="ltx:caption/*|ltx:caption/text()"/></dc:title></metadata> + </xsl:if> + </omlet> +</xsl:template> + +<xsl:template match="ltx:graphics" mode="extract-data"> + <private> + <xsl:attribute name="xml:id"><xsl:value-of select="generate-id()"/></xsl:attribute> + <xsl:variable name="sources" select="str:tokenize(@sources,',')"/> + <xsl:variable name="graphic" select="@graphic"/> + <xsl:for-each select="$sources"> + <xsl:variable name="current" select="."/> + <xsl:variable name="type"> + <xsl:choose> + <xsl:when test="$current='jpg'"> + <xsl:value-of select="'image/jpeg'"/> + </xsl:when> + <xsl:when test="$current='jpeg'"> + <xsl:value-of select="'image/jpeg'"/> + </xsl:when> + <xsl:when test="$current='png'"> + <xsl:value-of select="'image/png'"/> + </xsl:when> + <xsl:when test="$current='gif'"> + <xsl:value-of select="'image/gif'"/> + </xsl:when> + <xsl:when test="$current='eps'"> + <xsl:value-of select="'application/postscript'"/> + </xsl:when> + <xsl:when test="$current='ps'"> + <xsl:value-of select="'application/postscript'"/> + </xsl:when> + <xsl:when test="$current='ai'"> + <xsl:value-of select="'application/postscript'"/> + </xsl:when> + <xsl:when test="$current='pdf'"> + <xsl:value-of select="'application/pdf'"/> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$current"/> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <data format="{$type}" href="{$graphic}.{.}"/> + </xsl:for-each> + </private> +</xsl:template> +<xsl:template match="ltx:verbatim" mode="extract-data"> + <private> + <xsl:attribute name="xml:id"><xsl:value-of select="generate-id()"/></xsl:attribute> + <data format="text"><xsl:value-of select="text()"/></data> + </private> +</xsl:template> + +<xsl:template match="omdoc:tikz|ltx:tikz" mode="extract-data"> + <private> + <xsl:attribute name="xml:id"><xsl:value-of select="generate-id()"/></xsl:attribute> + <data format="tikz"><xsl:value-of select="."/></data> + </private> +</xsl:template> + +<!-- for LaTeXML tables --> +<xsl:template match="ltx:tabular"><table><xsl:apply-templates/></table></xsl:template> +<xsl:template match="ltx:tbody"><xsl:apply-templates/></xsl:template> +<xsl:template match="ltx:tr"><tr><xsl:apply-templates/></tr></xsl:template> +<xsl:template match="ltx:td"><td><xsl:apply-templates/></td></xsl:template> +<xsl:template match="ltx:thead"><xsl:apply-templates/></xsl:template> + +<!-- for LaTeXML references from \url --> +<xsl:template match="ltx:ref[@class='url']"> + <link href="{@href}" class="url"> + <xsl:value-of select="ltx:text"/> + </link> +</xsl:template> + +<xsl:template match="ltx:ref[@labelref]"> + <ref type="cite" xref="{@labelref}"/> +</xsl:template> + +<!-- LaTeXML listings --> +<xsl:template match="ltx:text[@class='listing']"> + <omdoc:phrase type='progsnippet'><xsl:copy-of select="@*"/><xsl:apply-templates/></omdoc:phrase> +</xsl:template> + +<xsl:template match="ltx:listingblock"> + <omlet action='display' show='embed' style='display:block'> + <xsl:copy-of select="@*"/> + <code> + <data format='listingblock'><xsl:apply-templates mode="listing"/></data> + </code> + </omlet> +</xsl:template> + +<xsl:template match="ltx:tabular" mode="listing"> + <table class="listing"><xsl:apply-templates mode="listing"/></table> +</xsl:template> + +<xsl:template match="ltx:tr" mode="listing"> + <tr><xsl:apply-templates mode="listing"/></tr> +</xsl:template> + +<xsl:template match="ltx:td" mode="listing"> + <td><xsl:apply-templates mode="listing"/></td> +</xsl:template> + +<xsl:template match="ltx:text[not(@*)]" mode="listing"> + <xsl:apply-templates mode="listing"/> +</xsl:template> + +<xsl:template match="ltx:text[@font='bold']" mode="listing"> + <keyword><xsl:apply-templates mode="listing"/></keyword> +</xsl:template> + +<xsl:template match="ltx:text[@color]" mode="listing"> + <phrase> + <xsl:attribute name='type'><xsl:text>lstemph</xsl:text></xsl:attribute> + <xsl:attribute name='style'><xsl:text>color:</xsl:text><xsl:value-of select="@color"/></xsl:attribute> + <xsl:apply-templates mode="listing"/> + </phrase> +</xsl:template> + +<xsl:template match="ltx:text[@class]" mode="listing"> + <xsl:apply-templates mode="listing"/> +</xsl:template> + + +<xsl:template match="ltx:*" mode="listing"> + <xsl:message>cannot deal with element <xsl:value-of select="local-name()"/> yet!</xsl:message> +</xsl:template> + + +<xsl:template match="ltx:equation"> + <om:OMOBJ style="display:block"> + <xsl:apply-templates select="ltx:Math/om:OMOBJ/*"/> + </om:OMOBJ> +</xsl:template> + +<!-- equationgroups come from eqnarray and eqnarray*, they really need OMDoc-level parallel markup --> +<xsl:template match="ltx:equationgroup"> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="ltx:equationgroup/ltx:equation"> + <om:OMOBJ style="display:block"> + <xsl:apply-templates select="ltx:MathFork/ltx:Math/om:OMOBJ/*"/> + </om:OMOBJ> +</xsl:template> + + +<!-- for notations --> +<xsl:template match="omdoc:rendering"> + <xsl:apply-templates select="." mode="rendering"/> +</xsl:template> +<xsl:template match="ltx:Math" mode="rendering"> + <xsl:apply-templates select="m:math/*" mode="rendering"/> +</xsl:template> + +<!-- copy where not specified otherwise --> +<xsl:template match="*" mode="rendering"> + <xsl:copy><xsl:copy-of select="@*[not(name()='argprec')]"/><xsl:apply-templates mode="rendering"/></xsl:copy> +</xsl:template> + +<xsl:template match="ltx:text" mode="rendering"> + <text><xsl:value-of select="text()"/></text> +</xsl:template> + +<!-- Template to recover the appropriate argument precedence" --> +<xsl:template name="argument-precedence"> + <xsl:param name="count" select="1"/> + <xsl:param name="precattr" select="1"/> + <xsl:choose> + <xsl:when test="$count > 1"> + <xsl:call-template name="argument-precedence"> + <xsl:with-param name="count" select="$count - 1"/> + <xsl:with-param name="precattr" select="substring-after($precattr,' ')"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="substring-before($precattr,' ')"/> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + +<!-- we have to treat the m:mi that come from an + #i argument invocation differently --> +<xsl:template match="m:mi[starts-with(.,'arg:')]|m:mo[starts-with(.,'arg:')]" mode="rendering"> + <xsl:variable name="precedence"> + <xsl:call-template name="argument-precedence"> + <xsl:with-param name="count" select="substring-after(.,'arg:')"/> + <xsl:with-param name="precattr" select="ancestor::omdoc:rendering[1]/@argprec"/> + </xsl:call-template> + </xsl:variable> + <render name="arg{substring-after(.,'arg:')}"> + <xsl:choose> + <xsl:when test="string($precedence)"> + <xsl:attribute name="precedence"><xsl:value-of select="$precedence"/></xsl:attribute> + </xsl:when> + <xsl:when test="string(ancestor::omdoc:rendering[1]/@precedence)"> + <xsl:attribute name="precedence"><xsl:value-of select="ancestor::omdoc:rendering[1]/@precedence"/></xsl:attribute> + </xsl:when> + <xsl:otherwise/> + </xsl:choose> + </render> +</xsl:template> + + +<!-- make an mrow around the generated things. --> +<xsl:template match="omdoc:style[@format='pmml']"> + <xsl:copy> + <xsl:copy-of select="@*"/> + <element name="mrow" ns="http://www.w3.org/1998/Math/MathML"> + <xsl:apply-templates/> + </element> + </xsl:copy> +</xsl:template> + + +<xsl:template match="omdoc:separator/ltx:Math"> + <xsl:apply-templates select="m:math/*" mode="elementize"/> +</xsl:template> + +<xsl:template match="omdoc:map/ltx:Math"> + <xsl:apply-templates select="m:math/*" mode="elementize"/> +</xsl:template> + + +<xsl:template match="text()" mode="elementize"> + <text><xsl:value-of select="."/></text> +</xsl:template> + +<xsl:template match="ltx:text" mode="elementize"> + <element name="mtext" ns="http://www.w3.org/1998/Math/MathML"> + <xsl:value-of select="."/> + </element> +</xsl:template> + +<xsl:template match="m:*" mode="elementize"> + <element name="{local-name()}" ns="{namespace-uri()}"> + <xsl:for-each select="@*"> + <attribute name="{local-name()}" select="'{.}'"/> + </xsl:for-each> + <xsl:apply-templates mode="elementize"/> + </element> +</xsl:template> + +<!-- get rid of the list OMAs LaTeXML uses --> +<xsl:template match="om:OMA[om:OMS[position()=1 and @name='list' and @cd='latexml']]"> + <xsl:apply-templates select="*[position() > 1]"/> +</xsl:template> + +<!-- special treatment for latexml symbols --> +<!-- we have a set of special CDs that correspond to the ones latexml postulates --> +<!-- they need to be imported whereever necessary --> +<xsl:template match="omdoc:theory"> + <theory> + <xsl:copy-of select="@*"/> + <xsl:if test="//om:OMS[@cd='latexml' and @name='multirelation']"> + <imports from="{$latexmlcds}/multirel.omdoc#multirel"/> + </xsl:if> + <xsl:if test="//om:OMS[@cd='latexml' and + (@name='times' or + @name='divide' or + @name='plus' or + @name='minus')]"> + <imports from="{$omcds}/arith1.omdoc#arith1"/> + </xsl:if> + <xsl:if test="//om:OMS[@cd='latexml' and + (@name='greater-than' or + @name='less-than' or + @name='greater-than-or-equals' or + @name='less-than-or-equals')]"> + <imports from="{$omcds}/relation1.omdoc#relation1"/> + </xsl:if> + <xsl:apply-templates/> + </theory> +</xsl:template> + +<!-- and we need to convert the symbols --> +<xsl:template match="om:OMS[@cd='latexml' and @name='multirelation']"> + <om:OMS cd="multirel" name="multirelation"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='multirelation']"/> + + +<xsl:template match="om:OMS[@cd='latexml' and @name='plus']"> + <om:OMS cd="arith1" name="plus"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='minus']"> + <om:OMS cd="arith1" name="minus"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='times']"> + <om:OMS cd="arith1" name="times"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='divide']"> + <om:OMS cd="arith1" name="divide"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='greater-than']"> + <om:OMS cd="relation1" name="gt"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='greater-than-or-equals']"> + <om:OMS cd="relation1" name="gt"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='less-than']"> + <om:OMS cd="relation1" name="lt"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='less-than-or-equals']"> + <om:OMS cd="relation1" name="lt"/> +</xsl:template> + +<xsl:template match="om:OMS[@cd='latexml' and @name='not-equals']"> + <om:OMS cd="relation1" name="ne"/> +</xsl:template> + +<!-- get rid of the sectioning commands --> +<xsl:template match="omdoc:chapter|omdoc:section|omdoc:subsection|omdoc:subsubsection|omdoc:paragraph|omdoc:subparagraph"> + <omgroup class="{local-name()}"> + <xsl:copy-of select="@*|*"/> + </omgroup> +</xsl:template> +</xsl:stylesheet> diff --git a/Master/texmf-dist/source/latex/stex/xsl/owl2post.xsl b/Master/texmf-dist/source/latex/stex/xsl/owl2post.xsl new file mode 100644 index 00000000000..530d9265c03 --- /dev/null +++ b/Master/texmf-dist/source/latex/stex/xsl/owl2post.xsl @@ -0,0 +1,62 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- this style sheet transforms the tex.xml file to OMDoc --> +<xsl:stylesheet version="1.0" + xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:ltx="http://dlmf.nist.gov/LaTeXML" + xmlns:omdoc="http://omdoc.org/ns" + xmlns:stex="http://kwarc.info/ns/sTeX" + xmlns="http://www.w3.org/2002/07/owl#" + xmlns:owl="http://www.w3.org/2002/07/owl#" + exclude-result-prefixes="xsl omdoc ltx stex owl"> + +<xsl:output method="xml" indent="yes" cdata-section-elements="data"/> +<xsl:strip-space elements="*"/> + +<xsl:template match="/"> + <xsl:comment>This OWL2 ontology is generated from an sTeX-encoded one via LaTeXML, you may want to reconsider editing it.</xsl:comment> + <xsl:apply-templates/> +</xsl:template> + +<xsl:template match="*"> + <xsl:copy><xsl:copy-of select="@*"/><xsl:apply-templates/></xsl:copy> +</xsl:template> + +<xsl:template match="omdoc:imports"> + <Import><xsl:value-of select="@from"/></Import> +</xsl:template> + + +<xsl:template match="owl:Axiom"> + <xsl:variable name="anno" select="*[2]"/> + <xsl:apply-templates select="*[1]"> + <xsl:with-param name="anno" select="$anno"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="ltx:Math|ltx:XMath"> + <xsl:param name="anno"/> + <xsl:apply-templates> + <xsl:with-param name="anno" select="$anno"/> + </xsl:apply-templates> +</xsl:template> + +<xsl:template match="ltx:XMApp[ltx:XMTok[position()=1 and @meaning='list']]"> + <xsl:apply-templates select="*[position() > 1]"/> +</xsl:template> + +<xsl:template match="ltx:XMApp"> + <xsl:param name="anno"/> + <xsl:element name="{ltx:XMTok[1]/@meaning}"> + <xsl:copy-of select="$anno"/> + <xsl:apply-templates select="*[position() > 1]"/> + </xsl:element> +</xsl:template> + +<xsl:template match="ltx:XMTok"> + <Class IRI="{@name}"/> +</xsl:template> + +<xsl:template match="ltx:ERROR"> + <Class IRI="{substring-after(ltx:XMTok,'\')}"/> +</xsl:template> +</xsl:stylesheet> |