X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftex2lyx%2FPreamble.cpp;h=4dc363b5e1c563cf14d9c05aab19cfdbb3b7ebf7;hb=02b6586ad7f8631dfd8001e75779baeb7985c80e;hp=8873d3ff97a08781f1efb5b8ee3d19f0c6533cf1;hpb=5ad84b9fbd0421d19af6e328a1ec41e84d65d84a;p=lyx.git diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp index 8873d3ff97..4dc363b5e1 100644 --- a/src/tex2lyx/Preamble.cpp +++ b/src/tex2lyx/Preamble.cpp @@ -88,41 +88,6 @@ const char * const known_coded_languages[] = {"french", "afrikaans", "albanian", "uppersorbian", "uppersorbian", "english", "english", "vietnamese", "welsh", 0}; -/** - * known polyglossia language names (including variants) - */ -const char * const polyglossia_languages[] = { -"albanian", "croatian", "hebrew", "norsk", "swedish", "amharic", "czech", "hindi", -"nynorsk", "syriac", "arabic", "danish", "icelandic", "occitan", "tamil", -"armenian", "divehi", "interlingua", "polish", "telugu", "asturian", "dutch", -"irish", "portuges", "thai", "bahasai", "english", "italian", "romanian", "turkish", -"bahasam", "esperanto", "lao", "russian", "turkmen", "basque", "estonian", "latin", -"samin", "ukrainian", "bengali", "farsi", "latvian", "sanskrit", "urdu", "brazil", -"brazilian", "finnish", "lithuanian", "scottish", "usorbian", "breton", "french", -"lsorbian", "serbian", "vietnamese", "bulgarian", "galician", "magyar", "slovak", -"welsh", "catalan", "german", "malayalam", "slovenian", "coptic", "greek", -"marathi", "spanish", -"american", "ancient", "australian", "british", "monotonic", "newzealand", -"polytonic", 0}; - -/** - * the same as polyglossia_languages with .lyx names - * please keep this in sync with polyglossia_languages line by line! - */ -const char * const coded_polyglossia_languages[] = { -"albanian", "croatian", "hebrew", "norsk", "swedish", "amharic", "czech", "hindi", -"nynorsk", "syriac", "arabic_arabi", "danish", "icelandic", "occitan", "tamil", -"armenian", "divehi", "interlingua", "polish", "telugu", "asturian", "dutch", -"irish", "portuges", "thai", "bahasa", "english", "italian", "romanian", "turkish", -"bahasam", "esperanto", "lao", "russian", "turkmen", "basque", "estonian", "latin", -"samin", "ukrainian", "bengali", "farsi", "latvian", "sanskrit", "urdu", "brazilian", -"brazilian", "finnish", "lithuanian", "scottish", "uppersorbian", "breton", "french", -"lowersorbian", "serbian", "vietnamese", "bulgarian", "galician", "magyar", "slovak", -"welsh", "catalan", "ngerman", "malayalam", "slovene", "coptic", "greek", -"marathi", "spanish", -"american", "ancientgreek", "australian", "british", "greek", "newzealand", -"polutonikogreek", 0}; - /// languages with english quotes (.lyx names) const char * const known_english_quotes_languages[] = {"american", "australian", "bahasa", "bahasam", "brazilian", "canadian", "chinese-simplified", "english", @@ -317,6 +282,42 @@ string process_keyval_opt(vector & options, string name) } // anonymous namespace +/** + * known polyglossia language names (including variants) + */ +const char * const Preamble::polyglossia_languages[] = { +"albanian", "croatian", "hebrew", "norsk", "swedish", "amharic", "czech", "hindi", +"nynorsk", "syriac", "arabic", "danish", "icelandic", "occitan", "tamil", +"armenian", "divehi", "interlingua", "polish", "telugu", "asturian", "dutch", +"irish", "portuges", "thai", "bahasai", "english", "italian", "romanian", "turkish", +"bahasam", "esperanto", "lao", "russian", "turkmen", "basque", "estonian", "latin", +"samin", "ukrainian", "bengali", "farsi", "latvian", "sanskrit", "urdu", "brazil", +"brazilian", "finnish", "lithuanian", "scottish", "usorbian", "breton", "french", +"lsorbian", "serbian", "vietnamese", "bulgarian", "galician", "magyar", "slovak", +"welsh", "catalan", "german", "malayalam", "slovenian", "coptic", "greek", +"marathi", "spanish", +"american", "ancient", "australian", "british", "monotonic", "newzealand", +"polytonic", 0}; + +/** + * the same as polyglossia_languages with .lyx names + * please keep this in sync with polyglossia_languages line by line! + */ +const char * const Preamble::coded_polyglossia_languages[] = { +"albanian", "croatian", "hebrew", "norsk", "swedish", "amharic", "czech", "hindi", +"nynorsk", "syriac", "arabic_arabi", "danish", "icelandic", "occitan", "tamil", +"armenian", "divehi", "interlingua", "polish", "telugu", "asturian", "dutch", +"irish", "portuges", "thai", "bahasa", "english", "italian", "romanian", "turkish", +"bahasam", "esperanto", "lao", "russian", "turkmen", "basque", "estonian", "latin", +"samin", "ukrainian", "bengali", "farsi", "latvian", "sanskrit", "urdu", "brazilian", +"brazilian", "finnish", "lithuanian", "scottish", "uppersorbian", "breton", "french", +"lowersorbian", "serbian", "vietnamese", "bulgarian", "galician", "magyar", "slovak", +"welsh", "catalan", "ngerman", "malayalam", "slovene", "coptic", "greek", +"marathi", "spanish", +"american", "ancientgreek", "australian", "british", "greek", "newzealand", +"polutonikogreek", 0}; + + bool Preamble::indentParagraphs() const { return h_paragraph_separation == "indent"; @@ -754,7 +755,7 @@ void Preamble::handle_package(Parser &p, string const & name, else if (name == "CJK") { // It is impossible to determine the document language if CJK is used. - // All we can do is to notify the user that he has to set this by hisself. + // All we can do is to notify the user that he has to set this by himself. have_CJK = true; // set the encoding to "auto" because it might be set to "default" by the babel handling // and this would not be correct for CJK @@ -985,7 +986,7 @@ bool Preamble::writeLyXHeader(ostream & os, bool subdoc) << "\\font_sc " << h_font_sc << "\n" << "\\font_osf " << h_font_osf << "\n" << "\\font_sf_scale " << h_font_sf_scale << "\n" - << "\\font_tt_scale " << h_font_tt_scale << "\n\n" + << "\\font_tt_scale " << h_font_tt_scale << "\n" << "\\graphics " << h_graphics << "\n" << "\\default_output_format " << h_default_output_format << "\n" << "\\output_sync " << h_output_sync << "\n"; @@ -1158,12 +1159,13 @@ void Preamble::parse(Parser & p, string const & forceclass, // check if the option contains a variant, if yes, extract it string::size_type pos_var = langopts.find("variant"); string::size_type i = langopts.find(',', pos_var); + string::size_type k = langopts.find('=', pos_var); if (pos_var != string::npos){ string variant; if (i == string::npos) - variant = langopts.substr(pos_var + 8, langopts.length() - pos_var - 9); + variant = langopts.substr(k + 1, langopts.length() - k - 2); else - variant = langopts.substr(pos_var + 8, i - pos_var - 8); + variant = langopts.substr(k + 1, i - k - 1); h_language = variant; } p.verbatim_item(); @@ -1186,16 +1188,30 @@ void Preamble::parse(Parser & p, string const & forceclass, h_font_roman = p.getArg('{', '}'); } - else if (t.cs() == "setsansfont") { - // we don't care about the option - p.hasOpt() ? p.getOpt() : string(); - h_font_sans = p.getArg('{', '}'); - } - - else if (t.cs() == "setmonofont") { - // we don't care about the option - p.hasOpt() ? p.getOpt() : string(); - h_font_typewriter = p.getArg('{', '}'); + else if (t.cs() == "setsansfont" || t.cs() == "setmonofont") { + // LyX currently only supports the scale option + string scale; + if (p.hasOpt()) { + string fontopts = p.getArg('[', ']'); + // check if the option contains a scaling, if yes, extract it + string::size_type pos = fontopts.find("Scale"); + if (pos != string::npos) { + string::size_type i = fontopts.find(',', pos); + if (i == string::npos) + scale = scale_as_percentage(fontopts.substr(pos + 1)); + else + scale = scale_as_percentage(fontopts.substr(pos, i - pos)); + } + } + if (t.cs() == "setsansfont") { + if (!scale.empty()) + h_font_sf_scale = scale; + h_font_sans = p.getArg('{', '}'); + } else { + if (!scale.empty()) + h_font_tt_scale = scale; + h_font_typewriter = p.getArg('{', '}'); + } } else if (t.cs() == "date") { @@ -1629,7 +1645,7 @@ string babel2lyx(string const & language) } -string polyglossia2lyx(string const & language) +string Preamble::polyglossia2lyx(string const & language) { char const * const * where = is_known(language, polyglossia_languages); if (where)