X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FEncoding.cpp;h=2aece9a25c3127b258855ee0fd3938d42b668ce9;hb=2098f1d8c20d51e63e670bcdc9da8996068975bf;hp=899d8e178600ee7d39dd273c74a717fa697bc3c8;hpb=29117ed90974bcea60aa8d7ca5a29584194e6ef0;p=lyx.git diff --git a/src/Encoding.cpp b/src/Encoding.cpp index 899d8e1786..2aece9a25c 100644 --- a/src/Encoding.cpp +++ b/src/Encoding.cpp @@ -436,8 +436,11 @@ char_type Encodings::fromLaTeXCommand(docstring const & cmd, bool & combining) } -docstring Encodings::fromLaTeXCommand(docstring const & cmd, docstring & rem) +docstring Encodings::fromLaTeXCommand(docstring const & cmd, docstring & rem, + int cmdtype) { + bool const mathmode = cmdtype & MATH_CMD; + bool const textmode = cmdtype & TEXT_CMD; docstring symbols; size_t i = 0; size_t const cmdend = cmd.size(); @@ -468,8 +471,10 @@ docstring Encodings::fromLaTeXCommand(docstring const & cmd, docstring & rem) size_t unicmd_size = 0; char_type c = 0; for (; it != uniend; ++it) { - docstring const math = it->second.mathcommand; - docstring const text = it->second.textcommand; + docstring const math = mathmode ? it->second.mathcommand + : docstring(); + docstring const text = textmode ? it->second.textcommand + : docstring(); size_t cur_size = max(math.size(), text.size()); // The current math or text unicode command cannot // match, or we already matched a longer one @@ -601,7 +606,7 @@ void Encodings::validate(char_type c, LaTeXFeatures & features, bool for_mathed) } } if (for_mathed && isMathSym(c)) { - features.require("relsize"); + features.require("amstext"); features.require("lyxmathsym"); } #endif @@ -691,8 +696,14 @@ Encoding const * Encodings::fromLyXName(string const & name) const } -Encoding const * Encodings::fromLaTeXName(string const & name) const +Encoding const * Encodings::fromLaTeXName(string const & n) const { + string name = n; + // FIXME: if we have to test for too many of these synonyms, + // we should instead extend the format of lib/encodings + if (n == "ansinew") + name = "cp1252"; + // We don't use find_if because it makes copies of the pairs in // the map. // This linear search is OK since we don't have many encodings.