******************************************************************** -->
<xsl:template match="inlineequation">
- <xsl:apply-templates/>
+ <xsl:choose>
+ <xsl:when test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
+ <xsl:apply-templates select="alt"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:apply-templates/>
+ </xsl:otherwise>
+ </xsl:choose>
+</xsl:template>
+
+<xsl:template match="equation/mediaobject | informalequation/mediaobject">
+ <xsl:if test="$passivetex.extensions = 0 or $tex.math.in.alt = ''">
+ <fo:block>
+ <xsl:call-template name="select.mediaobject"/>
+ <xsl:apply-templates select="caption"/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation/graphic | informalequation/graphic">
+ <xsl:if test="$passivetex.extensions = 0 or $tex.math.in.alt = ''">
+ <fo:block>
+ <xsl:call-template name="process.image"/>
+ </fo:block>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="inlineequation/alt">
+ <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
+ <xsl:processing-instruction name="xmltex">
+ <xsl:text>$</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>$</xsl:text>
+ </xsl:processing-instruction>
+ </xsl:if>
+</xsl:template>
+
+<xsl:template match="equation/alt | informalequation/alt">
+ <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
+ <xsl:processing-instruction name="xmltex">
+ <xsl:text>$$</xsl:text>
+ <xsl:value-of select="."/>
+ <xsl:text>$$</xsl:text>
+ </xsl:processing-instruction>
+ </xsl:if>
</xsl:template>
<xsl:template match="alt">
+ <xsl:if test="$passivetex.extensions != 0 and $tex.math.in.alt != ''">
+ <xsl:message>
+ Your equation is misplaced. It should be in inlineequation, equation or informalequation.
+ </xsl:message>
+ </xsl:if>
</xsl:template>
<!-- just send the MathML all the way through... -->
<xsl:template match="alt">
</xsl:template>
+<!-- Support for TeX math in alt -->
+
+<xsl:template match="*" mode="collect.tex.math">
+ <xsl:call-template name="write.text.chunk">
+ <xsl:with-param name="filename" select="$tex.math.file"/>
+ <xsl:with-param name="method" select="'text'"/>
+ <xsl:with-param name="content">
+ <xsl:choose>
+ <xsl:when test="$tex.math.in.alt = 'plain'">
+ <xsl:call-template name="tex.math.plain.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.plain"/>
+ <xsl:call-template name="tex.math.plain.tail"/>
+ </xsl:when>
+ <xsl:when test="$tex.math.in.alt = 'latex'">
+ <xsl:call-template name="tex.math.latex.head"/>
+ <xsl:apply-templates select="." mode="collect.tex.math.latex"/>
+ <xsl:call-template name="tex.math.latex.tail"/>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:message>
+ Unsupported TeX math notation:
+ <xsl:value-of select="$tex.math.in.alt"/>
+ </xsl:message>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:with-param>
+ <xsl:with-param name="encoding" select="$default.encoding"/>
+ </xsl:call-template>
+</xsl:template>
+
+<!-- PlainTeX -->
+
+<xsl:template name="tex.math.plain.head">
+ <xsl:text>\nopagenumbers 
</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.plain.tail">
+ <xsl:text>\bye 
</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="inlinegraphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="inlinegraphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} 
</xsl:text>
+ <xsl:text>$</xsl:text>
+ <xsl:value-of select="alt"/>
+ <xsl:text>$ 
</xsl:text>
+ <xsl:text>\vfill\eject 
</xsl:text>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.plain">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} 
</xsl:text>
+ <xsl:text>$$</xsl:text>
+ <xsl:value-of select="alt"/>
+ <xsl:text>$$ 
</xsl:text>
+ <xsl:text>\vfill\eject 
</xsl:text>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.plain"/>
+
+<!-- LaTeX -->
+
+<xsl:template name="tex.math.latex.head">
+ <xsl:text>\documentclass{article} 
</xsl:text>
+ <xsl:text>\pagestyle{empty} 
</xsl:text>
+ <xsl:text>\begin{document} 
</xsl:text>
+</xsl:template>
+
+<xsl:template name="tex.math.latex.tail">
+ <xsl:text>\end{document} 
</xsl:text>
+</xsl:template>
+
+<xsl:template match="inlineequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="inlinegraphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="inlinegraphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="inlinemediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} 
</xsl:text>
+ <xsl:text>$</xsl:text>
+ <xsl:value-of select="alt"/>
+ <xsl:text>$ 
</xsl:text>
+ <xsl:text>\newpage 
</xsl:text>
+</xsl:template>
+
+<xsl:template match="equation|informalequation" mode="collect.tex.math.latex">
+ <xsl:variable name="filename">
+ <xsl:choose>
+ <xsl:when test="graphic">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="graphic"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject.filename">
+ <xsl:with-param name="olist" select="mediaobject/*"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+ <xsl:text>\special{dvi2bitmap outputfile </xsl:text>
+ <xsl:value-of select="$filename"/>
+ <xsl:text>} 
</xsl:text>
+ <xsl:text>$$</xsl:text>
+ <xsl:value-of select="alt"/>
+ <xsl:text>$$ 
</xsl:text>
+ <xsl:text>\newpage 
</xsl:text>
+</xsl:template>
+
+<xsl:template match="text()" mode="collect.tex.math.latex"/>
+
+<!-- Extracting image filename from mediaobject and graphic elements -->
+
+<xsl:template name="select.mediaobject.filename">
+ <xsl:param name="olist"
+ select="imageobject|imageobjectco
+ |videoobject|audioobject|textobject"/>
+ <xsl:param name="count">1</xsl:param>
+
+ <xsl:if test="$count <= count($olist)">
+ <xsl:variable name="object" select="$olist[position()=$count]"/>
+
+ <xsl:variable name="useobject">
+ <xsl:choose>
+ <!-- The phrase is never used -->
+ <xsl:when test="name($object)='textobject' and $object/phrase">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- The first textobject is not a reasonable fallback for equation image -->
+ <xsl:when test="name($object)='textobject'">
+ <xsl:text>0</xsl:text>
+ </xsl:when>
+ <!-- If there's only one object, use it -->
+ <xsl:when test="$count = 1 and count($olist) = 1">
+ <xsl:text>1</xsl:text>
+ </xsl:when>
+ <!-- Otherwise, see if this one is a useable graphic -->
+ <xsl:otherwise>
+ <xsl:choose>
+ <!-- peek inside imageobjectco to simplify the test -->
+ <xsl:when test="local-name($object) = 'imageobjectco'">
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object/imageobject"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="is.acceptable.mediaobject">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:variable>
+
+ <xsl:choose>
+ <xsl:when test="$useobject='1'">
+ <xsl:call-template name="mediaobject.filename">
+ <xsl:with-param name="object" select="$object"/>
+ </xsl:call-template>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:call-template name="select.mediaobject">
+ <xsl:with-param name="olist" select="$olist"/>
+ <xsl:with-param name="count" select="$count + 1"/>
+ </xsl:call-template>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:if>
+</xsl:template>
+
</xsl:stylesheet>
--- /dev/null
+<refentry id="tex.math.in.alt">
+<refmeta>
+<refentrytitle>tex.math.in.alt</refentrytitle>
+<refmiscinfo role="type">string</refmiscinfo>
+</refmeta>
+<refnamediv>
+<refname>tex.math.in.alt</refname>
+<refpurpose></refpurpose>
+</refnamediv>
+
+<refsynopsisdiv>
+<src:fragment id='tex.math.in.alt.frag'>
+<xsl:param name="tex.math.in.alt" select="''"/>
+</src:fragment>
+</refsynopsisdiv>
+
+<refsect1><title>Description</title>
+
+<para>If you want type math directly in TeX notation into
+<sgmltag>alt</sgmltag> element, this parameter specifies notation
+used. Currently are supported two values --
+<literal>plain</literal> and <literal>latex</literal>. Empty value
+means that you are not using TeX math.</para>
+
+<para>If you want use this feature, you should process your FO with
+PassiveTeX, which only supports TeX math notation. When calling
+stylsheet, don't forget to specify also
+passivetex.extensions=1.</para>
+
+<para>If you want equations in HTML, just process generated file
+<filename>tex-math-equations.tex</filename> by TeX or LaTeX. Then run
+dvi2bitmap program on result DVI file. You will get images for
+equations in your document.</para>
+
+</refsect1>
+</refentry>