From: Richard Heck Date: Sat, 14 Nov 2009 20:38:22 +0000 (+0000) Subject: Fix single character output for MathML. Kind of. X-Git-Tag: 2.0.0~5143 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=0229c21be465059d08d32880aff6556675cc6791;p=features.git Fix single character output for MathML. Kind of. git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31990 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/mathed/InsetMathChar.cpp b/src/mathed/InsetMathChar.cpp index 8166b53d52..64e258e779 100644 --- a/src/mathed/InsetMathChar.cpp +++ b/src/mathed/InsetMathChar.cpp @@ -159,14 +159,23 @@ void InsetMathChar::octave(OctaveStream & os) const } +// We have a bit of a problem here. MathML wants to know whether the +// character represents an "identifier" or an "operator", and we have +// no general way of telling. So we shall guess: If it's mathalpha, +// then we'll treat it as an identifier, otherwise as an operator. +// Worst case: We get bad spacing. void InsetMathChar::mathmlize(MathStream & ms) const { switch (char_) { - case '<': ms << "<"; break; - case '>': ms << ">"; break; - case '&': ms << "&"; break; - default: ms.os().put(char_); break; + case '<': ms << "<"; break; + case '>': ms << ">"; break; + case '&': ms << "&"; break; + default: break; } + + char const * type = (isalpha(char_) || Encodings::isMathAlpha(char_)) ? "mi" : "mo"; + // we don't use MTag and ETag because we do not want the spacing + ms << "<" << type << ">" << char_ << ""; }