--- mathmlc2p.xsl	2005-07-06 15:32:23.000000000 -0500
+++ mathmlc2p-5.xsl	2005-07-06 16:45:37.000000000 -0500
@@ -125,7 +125,15 @@
       <mrow><mn><xsl:value-of select="text()[1]"/></mn><mo>/</mo><mn><xsl:value-of select="text()[2]"/></mn></mrow>
     </xsl:when>
     <xsl:otherwise>
-      <mn><xsl:value-of select="."/></mn>
+      <xsl:choose>
+        <!-- If child elements exist assume presentation markup -->
+        <xsl:when test="*">
+	  <mrow><xsl:copy-of select="*"/></mrow>
+        </xsl:when>
+        <xsl:otherwise>
+          <mn><xsl:value-of select="."/></mn>
+        </xsl:otherwise>
+      </xsl:choose>
     </xsl:otherwise>
     </xsl:choose>
   </xsl:otherwise>
@@ -195,15 +203,47 @@
     </xsl:choose>
   </xsl:when>
   <xsl:when test="./@type='vector'">
-    <mi fontweight="bold">
-      <xsl:value-of select="text()"/>
-    </mi>
+    <xsl:choose>
+      <!-- If child nodes exist assume presentation markup -->
+      <xsl:when test="*">
+	<xsl:choose>
+	  <!-- if first child is msub do not bold subscript -->
+	  <xsl:when test="*[1][self::m:msub]">
+	    <msub>
+	      <mrow><mstyle fontweight="bold"><mrow><xsl:apply-templates select="m:msub/*[1]"/></mrow></mstyle></mrow>
+	      <mrow><xsl:apply-templates select="m:msub/*[2]"/></mrow>
+	    </msub>
+	  </xsl:when>
+	  <!-- if first child is msup do not bold superscript -->
+	  <xsl:when test="*[1][self::m:msup]">
+	    <msup>
+	      <mrow><mstyle fontweight="bold"><mrow><xsl:apply-templates select="m:msup/*[1]"/></mrow></mstyle></mrow>
+	      <mrow><xsl:apply-templates select="msup/*[2]"/></mrow>
+	    </msup>
+	  </xsl:when>
+	  <!-- if first child is msubsup do not bold scripts -->
+	  <xsl:when test="*[1][self::m:msubsup]">
+	    <msubsup>
+              <mrow><mstyle fontweight="bold"><mrow><xsl:apply-templates select="m:msubsup/*[1]"/></mrow></mstyle></mrow>
+	      <mrow><xsl:apply-templates select="m:msubsup/*[2]"/></mrow>
+	      <mrow><xsl:apply-templates select="m:msubsup/*[3]"/></mrow>
+	    </msubsup>
+	  </xsl:when>
+          <xsl:otherwise>
+	    <mrow><xsl:copy-of select="*"/></mrow>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:when>
+      <xsl:otherwise>
+        <mi fontweight="bold"><xsl:value-of select="text()"/></mi>
+      </xsl:otherwise>
+    </xsl:choose>       
   </xsl:when>
   <!-- type 'set' seems to be deprecated (use 4.4.12 instead); besides, there is no easy way to translate set identifiers to chars in ISOMOPF -->
   <xsl:otherwise>  <!-- no type attribute provided -->
     <xsl:choose>
-    <xsl:when test="count(node()) != count(text())">
-      <!--test if children are not all text nodes, meaning there is markup assumed to be presentation markup-->
+      <!-- If children elements exist assume presentation markup-->
+    <xsl:when test="*">
 	<mrow><xsl:copy-of select="*"/></mrow>
     </xsl:when>
     <xsl:otherwise>  <!-- common case -->

