+ std::string entity;
+ switch (char_) {
+ case '<': entity = "<"; break;
+ case '>': entity = ">"; break;
+ case '&': entity = "&"; break;
+ case ' ': {
+ ms << from_ascii(" ");
+ return;
+ }
+ default: break;
+ }
+
+ if (ms.inText()) {
+ if (entity.empty())
+ ms.os().put(char_);
+ else
+ ms << from_ascii(entity);
+ return;
+ }
+
+ if (!entity.empty()) {
+ ms << "<mo>" << from_ascii(entity) << "</mo>";
+ return;
+ }
+
+ char const * type =
+ (isAlphaASCII(char_) || Encodings::isMathAlpha(char_))
+ ? "mi" : "mo";
+ // we don't use MTag and ETag because we do not want the spacing
+ ms << "<" << type << ">" << char_type(char_) << "</" << type << ">";
+}
+
+
+void InsetMathChar::htmlize(HtmlStream & ms) const
+{
+ std::string entity;