X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Fmathed%2FInsetMathString.cpp;h=8aac4f38a8d4f723fa569391887d0fde7decb190;hb=cdc847fd304019a19425a0d5d9d42a556a937097;hp=bfa17019b0a88f3d3904cdb2e621904e33d37137;hpb=4ad2d0e15c998c42110da4119379e5df049203c1;p=lyx.git diff --git a/src/mathed/InsetMathString.cpp b/src/mathed/InsetMathString.cpp index bfa17019b0..8aac4f38a8 100644 --- a/src/mathed/InsetMathString.cpp +++ b/src/mathed/InsetMathString.cpp @@ -3,7 +3,7 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * \author André Pönitz + * \author André Pönitz * * Full author contact details are available in file CREDITS. */ @@ -11,15 +11,23 @@ #include #include "InsetMathString.h" + +#include "MathFactory.h" +#include "MathExtern.h" #include "MathStream.h" #include "MathSupport.h" #include "Encoding.h" +#include "MetricsInfo.h" +#include "support/debug.h" #include "support/gettext.h" +#include "support/lassert.h" #include "support/lstrings.h" #include "support/textutils.h" +using lyx::support::escape; + namespace lyx { @@ -86,84 +94,16 @@ void InsetMathString::octave(OctaveStream & os) const } -void InsetMathString::mathmlize(MathStream & os) const +void InsetMathString::mathmlize(MathStream &) const { -/* - if (code_ == LM_TC_VAR) - os << " " << str_ << " "; - else if (code_ == LM_TC_CONST) - os << " " << str_ << " "; - else if (code_ == LM_TC_RM || code_ == LM_TC_TEXTRM) - os << " " << str_ << " "; - else -*/ - os << str_; + // useless, no doubt, but we should not be here + LATTEST(false); } void InsetMathString::write(WriteStream & os) const { - if (!os.latex()) { - os << str_; - return; - } - - docstring::const_iterator cit = str_.begin(); - docstring::const_iterator end = str_.end(); - - bool in_forced_mode = false; - while (cit != end) { - char_type const c = *cit; - try { - docstring command(1, c); - if (c < 0x80 || Encodings::latexMathChar(c, command)) { - if (os.textMode()) { - if (c < 0x80 && in_forced_mode) { - os << '}'; - in_forced_mode = false; - } - if (c >= 0x80 && !in_forced_mode) { - os << "\\ensuremath{"; - in_forced_mode = true; - } - } else if (in_forced_mode) { - os << '}'; - in_forced_mode = false; - } - } else { - if (os.textMode()) { - if (in_forced_mode) { - os << '}'; - in_forced_mode = false; - } - } else if (!in_forced_mode) { - os << "\\lyxmathsym{"; - in_forced_mode = true; - } - } - os << command; - // We may need a space if the command contains a macro - // and the last char is ASCII. - if (lyx::support::contains(command, '\\') - && isAlphaASCII(command[command.size() - 1])) - os.pendingSpace(true); - } catch (EncodingException & e) { - if (os.dryrun()) { - // FIXME: this is OK for View->Source - // but math preview will likely fail. - os << "<" << _("LyX Warning: ") - << _("uncodable character") << " '"; - os << docstring(1, e.failed_char); - os << "'>"; - } else { - // throw again - throw(e); - } - } - ++cit; - } - if (in_forced_mode) - os << '}'; + writeString(str_, os); }