X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Ftex2lyx%2FPreamble.cpp;h=bb74519f57d958250e2e9fbc8b06ab94f84549b1;hb=1a073ea416674ed37b65a333126a65369a2882be;hp=9d72a5e77bfeed4dd4397e0608598a745c9df24e;hpb=df6589a97e1dd6647b98cecd8ee071031563fe85;p=lyx.git diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp index 9d72a5e77b..bb74519f57 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" @@ -129,10 +130,8 @@ 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", @@ -181,9 +180,9 @@ const char * const known_xetex_packages[] = {"arabxetex", "fixlatvian", const char * const known_lyx_packages[] = {"amsbsy", "amsmath", "amssymb", "amstext", "amsthm", "array", "babel", "booktabs", "calc", "CJK", "color", "float", "fontspec", "graphicx", "hhline", "ifthen", "longtable", "makeidx", -"multirow", "nomencl", "pdfpages", "refstyle", "rotating", "rotfloat", "splitidx", -"setspace", "subscript", "textcomp", "tipa", "tipx", "tone", "ulem", "url", -"varioref", "verbatim", "wrapfig", "xunicode", 0}; +"multirow", "nomencl", "pdfpages", "prettyref", "refstyle", "rotating", +"rotfloat", "splitidx", "setspace", "subscript", "textcomp", "tipa", "tipx", +"tone", "ulem", "url", "varioref", "verbatim", "wrapfig", "xunicode", 0}; // used for the handling of \newindex int index_number = 0; @@ -303,10 +302,10 @@ 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", +"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", "american", "ancient", "australian", "british", "monotonic", "newzealand", "polytonic", 0}; @@ -321,10 +320,10 @@ 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", +"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", "american", "ancientgreek", "australian", "british", "greek", "newzealand", "polutonikogreek", 0}; @@ -450,7 +449,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 +497,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 +505,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"; @@ -522,9 +521,10 @@ Preamble::Preamble() : one_language(true), explicit_babel(false), h_use_geometry = "false"; h_use_default_options = "false"; h_use_hyperref = "false"; - h_use_refstyle = "0"; + h_use_refstyle = false; h_use_packages["amsmath"] = "1"; h_use_packages["amssymb"] = "0"; + h_use_packages["cancel"] = "0"; h_use_packages["esint"] = "1"; h_use_packages["mhchem"] = "0"; h_use_packages["mathdots"] = "0"; @@ -770,7 +770,7 @@ void Preamble::handle_package(Parser &p, string const & name, || is_known(name, known_typewriter_fonts) || is_known(name, known_math_fonts)) ; - else if (name == "amsmath" || name == "amssymb" || + else if (name == "amsmath" || name == "amssymb" || name == "cancel" || name == "esint" || name == "mhchem" || name == "mathdots" || name == "mathtools" || name == "stackrel" || name == "stmaryrd" || name == "undertilde") @@ -897,9 +897,6 @@ void Preamble::handle_package(Parser &p, string const & name, h_language_package = "\\usepackage{" + name + "}"; } - else if (name == "prettyref") - ; // ignore this FIXME: Use the package separator mechanism instead - else if (name == "lyxskak") { // ignore this and its options const char * const o[] = {"ps", "mover", 0}; @@ -910,7 +907,9 @@ void Preamble::handle_package(Parser &p, string const & name, if (name == "splitidx") h_use_indices = "true"; if (name == "refstyle") - h_use_refstyle = "1"; + h_use_refstyle = true; + else if (name == "prettyref") + h_use_refstyle = false; if (!in_lyx_preamble) { h_preamble << package_beg_sep << name << package_mid_sep << "\\usepackage{" @@ -958,6 +957,18 @@ void Preamble::handle_package(Parser &p, string const & name, 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 +1050,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" @@ -1411,17 +1425,11 @@ void Preamble::parse(Parser & p, string const & forceclass, string const name = p.verbatim_item(); string const body1 = p.verbatim_item(); string const body2 = p.verbatim_item(); - // store the in_lyx_preamble setting - bool const was_in_lyx_preamble = in_lyx_preamble; - if (name == "subref" - || name == "thmref" - || name == "lemref") { - p.skip_spaces(); - preamble.registerAutomaticallyLoadedPackage("refstyle"); - in_lyx_preamble = true; - } // only non-lyxspecific stuff - if (!in_lyx_preamble) { + if (in_lyx_preamble && + (name == "subref" || name == "thmref" || name == "lemref")) + p.skip_spaces(); + else { ostringstream ss; ss << '\\' << t.cs(); ss << '{' << name << '}' @@ -1429,15 +1437,13 @@ void Preamble::parse(Parser & p, string const & forceclass, << '{' << body2 << '}'; h_preamble << ss.str(); } - // restore the in_lyx_preamble setting - in_lyx_preamble = was_in_lyx_preamble; } else if (t.cs() == "AtBeginDocument") { string const name = p.verbatim_item(); - // store the in_lyx_preamble setting - bool const was_in_lyx_preamble = in_lyx_preamble; - if (name == "\\providecommand\\partref[1]{\\ref{part:#1}}" + // only non-lyxspecific stuff + if (in_lyx_preamble && + (name == "\\providecommand\\partref[1]{\\ref{part:#1}}" || name == "\\providecommand\\chapref[1]{\\ref{chap:#1}}" || name == "\\providecommand\\secref[1]{\\ref{sec:#1}}" || name == "\\providecommand\\subref[1]{\\ref{sub:#1}}" @@ -1451,20 +1457,14 @@ void Preamble::parse(Parser & p, string const & forceclass, || name == "\\providecommand\\lemref[1]{\\ref{lem:#1}}" || name == "\\providecommand\\thmref[1]{\\ref{thm:#1}}" || name == "\\providecommand\\corref[1]{\\ref{cor:#1}}" - || name == "\\providecommand\\propref[1]{\\ref{prop:#1}}") { + || name == "\\providecommand\\propref[1]{\\ref{prop:#1}}")) p.skip_spaces(); - preamble.registerAutomaticallyLoadedPackage("refstyle"); - in_lyx_preamble = true; - } - // only non-lyxspecific stuff - if (!in_lyx_preamble) { + else { ostringstream ss; ss << '\\' << t.cs(); ss << '{' << name << '}'; h_preamble << ss.str(); } - // restore the in_lyx_preamble setting - in_lyx_preamble = was_in_lyx_preamble; } else if (t.cs() == "newcommand" || t.cs() == "newcommandx" @@ -1511,12 +1511,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 @@ -1547,22 +1541,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('[', ']'));