X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathDecoration.cpp;h=0349c69ee5f158a04997a38b5cb10cbccf272a3f;hb=21c92c8a129b5f3ff56de33bf2941a25967cffbb;hp=685e65d81f540688019d5fd0888abca16112caab;hpb=054bdc5d1854b9b1b08735e004a5440bff46531a;p=lyx.git diff --git a/src/mathed/InsetMathDecoration.cpp b/src/mathed/InsetMathDecoration.cpp index 685e65d81f..0349c69ee5 100644 --- a/src/mathed/InsetMathDecoration.cpp +++ b/src/mathed/InsetMathDecoration.cpp @@ -38,7 +38,7 @@ namespace lyx { InsetMathDecoration::InsetMathDecoration(Buffer * buf, latexkeys const * key) - : InsetMathNest(buf, 1), key_(key), dh_(0), dy_(0), dw_(0) + : InsetMathNest(buf, 1), key_(key) { // lyxerr << " creating deco " << key->name << endl; } @@ -64,12 +64,6 @@ MathClass InsetMathDecoration::mathClass() const } -bool InsetMathDecoration::isScriptable() const -{ - return mathClass() == MC_OP; -} - - bool InsetMathDecoration::protect() const { return @@ -151,6 +145,7 @@ void InsetMathDecoration::write(WriteStream & os) const os << '\\' << key_->name << '{'; ModeSpecifier specifier(os, currentMode()); os << cell(0) << '}'; + writeLimits(os); } @@ -169,45 +164,46 @@ void InsetMathDecoration::infoize(odocstream & os) const namespace { struct Attributes { Attributes() : over(false) {} - Attributes(bool o, string const & t) - : over(o), tag(t) {} + Attributes(bool o, string const & t, string const & entity) + : over(o), tag(t), entity(entity) {} bool over; string tag; + string entity; }; typedef map TranslationMap; void buildTranslationMap(TranslationMap & t) { // the decorations we need to support are listed in lib/symbols - t["acute"] = Attributes(true, "´"); - t["bar"] = Attributes(true, "‾"); - t["breve"] = Attributes(true, "˘"); - t["check"] = Attributes(true, "ˇ"); - t["ddddot"] = Attributes(true, "⃜"); - t["dddot"] = Attributes(true, "⃛"); - t["ddot"] = Attributes(true, "¨"); - t["dot"] = Attributes(true, "˙"); - t["grave"] = Attributes(true, "`"); - t["hat"] = Attributes(true, "ˆ"); - t["mathring"] = Attributes(true, "˚"); - t["overbrace"] = Attributes(true, "⏞"); - t["overleftarrow"] = Attributes(true, "⟵"); - t["overleftrightarrow"] = Attributes(true, "⟷"); - t["overline"] = Attributes(true, "¯"); - t["overrightarrow"] = Attributes(true, "⟶"); - t["tilde"] = Attributes(true, "˜"); - t["underbar"] = Attributes(false, "_"); - t["underbrace"] = Attributes(false, "⏟"); - t["underleftarrow"] = Attributes(false, "⟵"); - t["underleftrightarrow"] = Attributes(false, "⟷"); + t["acute"] = Attributes(true, "´", "´"); + t["bar"] = Attributes(true, "‾", "¯"); + t["breve"] = Attributes(true, "˘", "˘"); + t["check"] = Attributes(true, "ˇ", "ˇ"); + t["ddddot"] = Attributes(true, "⃜", "⃜"); + t["dddot"] = Attributes(true, "⃛", "⃛"); + t["ddot"] = Attributes(true, "¨", "¨"); + t["dot"] = Attributes(true, "˙", "˙"); + t["grave"] = Attributes(true, "`", "`"); + t["hat"] = Attributes(true, "ˆ", "ˆ"); + t["mathring"] = Attributes(true, "˚", "˚"); + t["overbrace"] = Attributes(true, "⏞", "︷"); + t["overleftarrow"] = Attributes(true, "⟵", "⟵"); + t["overleftrightarrow"] = Attributes(true, "⟷", "⟷"); + t["overline"] = Attributes(true, "¯", "¯"); + t["overrightarrow"] = Attributes(true, "⟶", "⟶"); + t["tilde"] = Attributes(true, "˜", "˜"); + t["underbar"] = Attributes(false, "_", "̲"); + t["underbrace"] = Attributes(false, "⏟", "︸"); + t["underleftarrow"] = Attributes(false, "⟵", "⟵"); + t["underleftrightarrow"] = Attributes(false, "⟷", "⟷"); // this is the macron, again, but it works - t["underline"] = Attributes(false, "¯"); - t["underrightarrow"] = Attributes(false, "⟶"); - t["undertilde"] = Attributes(false, "∼"); - t["utilde"] = Attributes(false, "∼"); - t["vec"] = Attributes(true, "→"); - t["widehat"] = Attributes(true, "^"); - t["widetilde"] = Attributes(true, "∼"); + t["underline"] = Attributes(false, "¯", "¯"); + t["underrightarrow"] = Attributes(false, "⟶", "⟶"); + t["undertilde"] = Attributes(false, "∼", "∼"); + t["utilde"] = Attributes(false, "∼", "∼"); + t["vec"] = Attributes(true, "→", "→"); + t["widehat"] = Attributes(true, "^", "^"); + t["widetilde"] = Attributes(true, "∼", "∼"); } TranslationMap const & translationMap() { @@ -224,10 +220,11 @@ void InsetMathDecoration::mathmlize(MathStream & ms) const TranslationMap::const_iterator cur = t.find(to_utf8(key_->name)); LASSERT(cur != t.end(), return); char const * const outag = cur->second.over ? "mover" : "munder"; + std::string decoration = ms.xmlMode() ? cur->second.entity : cur->second.tag; ms << MTag(outag) << MTag("mrow") << cell(0) << ETag("mrow") << "<" << from_ascii(ms.namespacedTag("mo")) << " stretchy=\"true\">" - << from_ascii(cur->second.tag) + << from_ascii(decoration) << "" << ETag(outag); }