FindAdv: Expand the list for handled latin characters

This commit is contained in:
Kornel Benko 2019-03-02 22:00:20 +01:00
parent d50923d48a
commit b21c8b214d

View File

@ -1248,8 +1248,12 @@ void Intervall::addIntervall(int low, int upper)
typedef map<string, string> AccentsMap; typedef map<string, string> AccentsMap;
static AccentsMap accents = map<string, string>(); static AccentsMap accents = map<string, string>();
static void buildaccent(string name, string param, string values) static void buildaccent(string n, string param, string values)
{ {
stringstream s(n);
string name;
const char delim = '|';
while (getline(s, name, delim)) {
size_t start = 0; size_t start = 0;
for (size_t i = 0; i < param.size(); i++) { for (size_t i = 0; i < param.size(); i++) {
string key = name + "{" + param[i] + "}"; string key = name + "{" + param[i] + "}";
@ -1271,25 +1275,29 @@ static void buildaccent(string name, string param, string values)
} }
} }
} }
}
static void buildAccentsMap() static void buildAccentsMap()
{ {
accents["imath"] = "ı"; accents["imath"] = "ı";
accents["ddot{\\imath}"] = "ï"; accents["ddot{\\imath}"] = "ï";
accents["acute{\\imath}"] = "í"; accents["acute{\\imath}"] = "í";
accents["tilde{\\imath}"] = "ĩ";
accents["jmath"] = "ȷ";
accents["hat{\\jmath}"] = "ĵ";
accents["lyxmathsym{ß}"] = "ß"; accents["lyxmathsym{ß}"] = "ß";
buildaccent("ddot", "aeouyAEOUY", "äëöüÿÄËÖÜŸ"); buildaccent("ddot", "aeouyAEOUY", "äëöüÿÄËÖÜŸ"); // umlaut
buildaccent("dot", "aeoyzAEOYZ", "ȧėȯẏżȦĖȮẎŻ"); buildaccent("dot", "aeoyzAEOYZ", "ȧėȯẏżȦĖȮẎŻ");
buildaccent("acute", "aeouyAEOUY", "äëöüÿÄËÖÜŸ"); buildaccent("acute", "aAcCeElLoOnNrRsSuUyYzZI", "áÁćĆéÉĺĹóÓńŃŕŔśŚúÚýÝźŹÍ");
/* /*
buildaccent("dacute", "oOuU", "őŐűŰ"); buildaccent("dacute", "oOuU", "őŐűŰ");
buildaccent("H", "oOuU", "őŐűŰ"); // dacute in text buildaccent("H", "oOuU", "őŐűŰ"); // dacute in text
*/ */
buildaccent("mathring", "uU", "ůŮ"); buildaccent("mathring|r", "uU", "ůŮ");
buildaccent("r", "uU", "ůŮ"); //mathring in text buildaccent("check", "cCdDeElLnNrRsSTzZ", "čČďĎěĚľĽňŇřŘšŠŤžŽ"); // caron
buildaccent("check", "cdnrszCDNRSZ", "čďřňšžČĎŘŇŠŽ"); buildaccent("hat", "cCgGhHJsSwWyYoOgG", "ĉĈĝĜĥĤĴŝŜŵŴŷŶôÔĝĜ"); // circ
buildaccent("hat", "cCoOgGhHsS", "ĉĈôÔĝĜĥĤŝŜ"); buildaccent("bar|=", "aAeEoOuU", "āĀēĒōŌūŪ"); // macron
buildaccent("bar", "aAeE", "āĀēĒ"); buildaccent("tilde", "I", "Ĩ"); // macron
} }
/* /*
@ -1300,7 +1308,7 @@ void Intervall::removeAccents()
{ {
if (accents.empty()) if (accents.empty())
buildAccentsMap(); buildAccentsMap();
static regex const accre("\\\\((lyxmathsym|ddot|dot|acute|mathring|r|check|check|hat|bar)\\{[^\\{\\}]+\\}|imath)"); static regex const accre("\\\\((lyxmathsym|ddot|dot|acute|mathring|r|check|check|hat|bar|=)\\{[^\\{\\}]+\\}|imath|jmath)");
smatch sub; smatch sub;
for (sregex_iterator itacc(par.begin(), par.end(), accre), end; itacc != end; ++itacc) { for (sregex_iterator itacc(par.begin(), par.end(), accre), end; itacc != end; ++itacc) {
sub = *itacc; sub = *itacc;