X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftex2lyx%2FPreamble.cpp;h=622c7df1435a61a5a6963ca5f6e7085173a2ee27;hb=02b2cd50ed925323ad0a1ae6905c424e36da6b6d;hp=dbf4d5cfe99af400ebcfa04dc5a23f5c83995950;hpb=2639734157ed24b07ed86cc3f74650e4acd561aa;p=lyx.git diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp index dbf4d5cfe9..622c7df143 100644 --- a/src/tex2lyx/Preamble.cpp +++ b/src/tex2lyx/Preamble.cpp @@ -21,6 +21,7 @@ #include "Layout.h" #include "Lexer.h" #include "TextClass.h" +#include "version.h" #include "support/convert.h" #include "support/FileName.h" @@ -61,11 +62,12 @@ const char * const known_languages[] = {"acadian", "afrikaans", "albanian", "greek", "hebrew", "hungarian", "icelandic", "indon", "indonesian", "interlingua", "irish", "italian", "japanese", "kazakh", "kurmanji", "latin", "latvian", "lithuanian", "lowersorbian", "lsorbian", "magyar", "malay", "meyalu", "mongolian", "naustrian", -"newzealand", "ngerman", "ngermanb", "norsk", "nynorsk", "polutonikogreek", "polish", -"portuges", "portuguese", "romanian", "russian", "russianb", "samin", -"scottish", "serbian", "serbian-latin", "slovak", "slovene", "spanish", -"swedish", "thai", "turkish", "turkmen", "ukraineb", "ukrainian", -"uppersorbian", "UKenglish", "USenglish", "usorbian", "vietnam", "welsh", +"newzealand", "ngerman", "ngermanb", "norsk", "nswissgerman", "nynorsk", +"polutonikogreek", "polish", "portuges", "portuguese", "romanian", "russian", +"russianb", "samin", "scottish", "serbian", "serbian-latin", "slovak", +"slovene", "spanish", "swedish", "swissgerman", "thai", "turkish", "turkmen", +"ukraineb", "ukrainian", "uppersorbian", "UKenglish", "USenglish", "usorbian", +"vietnam", "welsh", 0}; /** @@ -81,11 +83,12 @@ const char * const known_coded_languages[] = {"french", "afrikaans", "albanian", "greek", "hebrew", "magyar", "icelandic", "bahasa", "bahasa", "interlingua", "irish", "italian", "japanese", "kazakh", "kurmanji", "latin", "latvian", "lithuanian", "lowersorbian", "lowersorbian", "magyar", "bahasam", "bahasam", "mongolian", "naustrian", -"newzealand", "ngerman", "ngerman", "norsk", "nynorsk", "polutonikogreek", "polish", -"portuguese", "portuguese", "romanian", "russian", "russian", "samin", -"scottish", "serbian", "serbian-latin", "slovak", "slovene", "spanish", -"swedish", "thai", "turkish", "turkmen", "ukrainian", "ukrainian", -"uppersorbian", "uppersorbian", "english", "english", "vietnamese", "welsh", +"newzealand", "ngerman", "ngerman", "norsk", "german-ch", "nynorsk", +"polutonikogreek", "polish", "portuguese", "portuguese", "romanian", "russian", +"russian", "samin", "scottish", "serbian", "serbian-latin", "slovak", +"slovene", "spanish", "swedish", "german-ch-old", "thai", "turkish", "turkmen", +"ukrainian", "ukrainian", "uppersorbian", "english", "english", "uppersorbian", +"vietnamese", "welsh", 0}; /// languages with danish quotes (.lyx names) @@ -129,14 +132,12 @@ const char * const known_roman_fonts[] = { "ae", "beraserif", "bookman", "tgbonum", "tgchorus", "tgpagella", "tgschola", "tgtermes", "utopia", 0}; const char * const known_sans_fonts[] = { "avant", "berasans", "biolinum-type1", -"cmbr", "cmss", "helvet", "kurier", "kurierl", "lmss", "tgadventor", "tgheros", 0}; - -const char * const known_kurier_fonts[] = { "kurier", "kurierl", -"kurier-condensed", "kurier-light-condensed", 0}; +"cmbr", "cmss", "helvet", "iwona", "iwonac", "iwonal", "iwonalc", "kurier", +"kurierc", "kurierl", "kurierlc", "lmss", "tgadventor", "tgheros", 0}; const char * const known_typewriter_fonts[] = { "beramono", "cmtl", "cmtt", -"courier", "lmtt", "luximono", "fourier", "lmodern", "mathpazo", "mathptmx", -"newcent", "tgcursor", "txtt", 0}; +"courier", "lmtt", "luximono", "fourier", "libertineMono-type1", "lmodern", +"mathpazo", "mathptmx", "newcent", "tgcursor", "txtt", 0}; const char * const known_math_fonts[] = { "eulervm", "newtxmath", 0}; @@ -296,6 +297,7 @@ string process_keyval_opt(vector & options, string name) /** * known polyglossia language names (including variants) + * FIXME: support spelling=old for german variants (german vs. ngerman LyX names etc) */ const char * const Preamble::polyglossia_languages[] = { "albanian", "croatian", "hebrew", "norsk", "swedish", "amharic", "czech", "hindi", @@ -303,11 +305,11 @@ const char * const Preamble::polyglossia_languages[] = { "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", +"samin", "ukrainian", "bengali", "farsi", "latvian", "sanskrit", "tibetan", "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", "austrian", "american", "ancient", "australian", "british", "monotonic", "newzealand", "polytonic", 0}; @@ -321,11 +323,11 @@ const char * const Preamble::coded_polyglossia_languages[] = { "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", +"samin", "ukrainian", "bengali", "farsi", "latvian", "sanskrit", "tibetan", "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", "naustrian", "american", "ancientgreek", "australian", "british", "greek", "newzealand", "polutonikogreek", 0}; @@ -422,7 +424,8 @@ bool scale_as_percentage(string const & scale, string & percentage) if (pos != string::npos) { string value = scale.substr(pos + 1); if (isStrDbl(value)) { - percentage = convert(100 * convert(value)); + percentage = convert( + static_cast(100 * convert(value))); return true; } } @@ -450,7 +453,7 @@ Preamble::Preamble() : one_language(true), explicit_babel(false), h_biblio_style = "plain"; h_bibtex_command = "default"; h_cite_engine = "basic"; - h_cite_engine_type = "numerical"; + h_cite_engine_type = "default"; h_color = "#008000"; h_defskip = "medskip"; //h_float_placement; @@ -498,7 +501,7 @@ Preamble::Preamble() : one_language(true), explicit_babel(false), //h_pdf_author; //h_pdf_subject; //h_pdf_keywords; - h_pdf_bookmarks = "1"; + h_pdf_bookmarks = "0"; h_pdf_bookmarksnumbered = "0"; h_pdf_bookmarksopen = "0"; h_pdf_bookmarksopenlevel = "1"; @@ -506,7 +509,7 @@ Preamble::Preamble() : one_language(true), explicit_babel(false), h_pdf_pdfborder = "0"; h_pdf_colorlinks = "0"; h_pdf_backref = "section"; - h_pdf_pdfusetitle = "1"; + h_pdf_pdfusetitle = "0"; //h_pdf_pagemode; //h_pdf_quoted_options; h_quotes_language = "english"; @@ -724,14 +727,19 @@ void Preamble::handle_package(Parser &p, string const & name, // sansserif fonts if (is_known(name, known_sans_fonts)) { h_font_sans = name; - if (options.size() == 1) { + if (options.size() >= 1) { if (scale_as_percentage(opts, h_font_sf_scale)) options.clear(); } } - if (name == "biolinum-type1") + if (name == "biolinum-type1") { h_font_sans = "biolinum"; + // biolinum can have several options, e.g. [osf,scaled=0.97] + string::size_type pos = opts.find("osf"); + if (pos != string::npos) + h_font_osf = "true"; + } // typewriter fonts if (is_known(name, known_typewriter_fonts)) { @@ -739,13 +747,17 @@ void Preamble::handle_package(Parser &p, string const & name, // fourier as typewriter is handled in handling of \ttdefault if (name != "fourier") { h_font_typewriter = name; - if (options.size() == 1) { + if (options.size() >= 1) { if (scale_as_percentage(opts, h_font_tt_scale)) options.clear(); } } } + if (name == "libertineMono-type1") { + h_font_typewriter = "libertine-mono"; + } + // font uses old-style figure if (name == "eco") h_font_osf = "true"; @@ -765,6 +777,14 @@ void Preamble::handle_package(Parser &p, string const & name, h_font_math = "minion-ntxm"; } + if (name == "iwona") + if (opts == "math") + h_font_math = "iwona-math"; + + if (name == "kurier") + if (opts == "math") + h_font_math = "kurier-math"; + // after the detection and handling of special cases, we can remove the // fonts, otherwise they would appear in the preamble, see bug #7856 if (is_known(name, known_roman_fonts) || is_known(name, known_sans_fonts) @@ -955,9 +975,24 @@ void Preamble::handle_package(Parser &p, string const & name, h_cite_engine_type = "authoryear"; } + else if (name == "bibtopic") + h_use_bibtopic = "true"; + else if (name == "hyperref") handle_hyperref(options); + else if (name == "algorithm2e") { + // Load "algorithm2e" module + addModule("algorithm2e"); + // Add the package options to the global document options + if (!options.empty()) { + if (h_options.empty()) + h_options = join(options, ","); + else + h_options += ',' + join(options, ","); + } + } + else if (!in_lyx_preamble) { if (options.empty()) h_preamble << "\\usepackage{" << name << '}'; @@ -1039,7 +1074,10 @@ bool Preamble::writeLyXHeader(ostream & os, bool subdoc) } // output the LyX file settings - os << "#LyX file created by tex2lyx " << PACKAGE_VERSION << "\n" + // Important: Keep the version formatting in sync with LyX and + // lyx2lyx (bug 7951) + os << "#LyX file created by tex2lyx " << lyx_version_major << '.' + << lyx_version_minor << '\n' << "\\lyxformat " << LYX_FORMAT << '\n' << "\\begin_document\n" << "\\begin_header\n" @@ -1497,12 +1535,6 @@ void Preamble::parse(Parser & p, string const & forceclass, p.skip_spaces(); in_lyx_preamble = true; } - if (name == "\\bfdefault") - // LyX re-adds this if a kurier font is used - if (is_known(h_font_sans, known_kurier_fonts) && body == "b") { - p.skip_spaces(); - in_lyx_preamble = true; - } // remove the lyxdot definition that is re-added by LyX // if necessary @@ -1533,22 +1565,6 @@ void Preamble::parse(Parser & p, string const & forceclass, in_lyx_preamble = was_in_lyx_preamble; } - else if (t.cs() == "edef"){ - // we only support this for kurier fonts - string const command = p.next_token().asInput(); - p.get_token(); - if (command == "\\sfdefault") { - p.getArg('{', '}'); - if (h_font_sans == "kurier") - h_font_sans = "kurier-condensed"; - if (h_font_sans == "kurierl") - h_font_sans = "kurier-light-condensed"; - p.skip_spaces(); - } - else - h_preamble << "\\edef" << command << "{" << p.getArg('{', '}') << "}\n"; - } - else if (t.cs() == "documentclass") { vector::iterator it; vector opts = split_options(p.getArg('[', ']'));