]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/preamble.C
code cosmetics to the iterator fix
[lyx.git] / src / tex2lyx / preamble.C
index c9b4011e194cbc14eb81eef4b5d18e5b8463ead6..8e8fadd6ed1848b5c952a022fe1128e71dd6fc20 100644 (file)
@@ -45,8 +45,9 @@ namespace {
 
 const char * const known_languages[] = { "austrian", "babel", "bahasa",
 "basque", "breton", "british", "bulgarian", "catalan", "croatian", "czech",
-"danish", "dutch", "english", "esperanto", "estonian", "finnish", "francais",
-"frenchb", "galician", "german", "germanb", "greek", "hebcal", "hebfont",
+"danish", "dutch", "english", "esperanto", "estonian", "finnish",
+"francais", "french", "frenchb", "frenchle", "frenchpro",
+"galician", "german", "germanb", "greek", "hebcal", "hebfont",
 "hebrew", "hebrew_newcode", "hebrew_oldcode", "hebrew_p", "hyphen",
 "icelandic", "irish", "italian", "latin", "lgrcmr", "lgrcmro", "lgrcmss",
 "lgrcmtt", "lgrenc", "lgrlcmss", "lgrlcmtt", "lheclas", "lhecmr",
@@ -56,6 +57,8 @@ const char * const known_languages[] = { "austrian", "babel", "bahasa",
 "russianb", "samin", "scottish", "serbian", "slovak", "slovene", "spanish",
 "swedish", "turkish", "ukraineb", "usorbian", "welsh", 0};
 
+const char * const known_french_languages[] = {"french", "frenchb", "francais",
+                                              "frenchle", "frenchpro", 0};
 char const * const known_fontsizes[] = { "10pt", "11pt", "12pt", 0 };
 
 // some ugly stuff
@@ -69,7 +72,6 @@ string h_graphics                = "default";
 string h_paperfontsize           = "default";
 string h_spacing                 = "single";
 string h_papersize               = "default";
-string h_paperpackage            = "none";
 string h_use_geometry            = "false";
 string h_use_amsmath             = "0";
 string h_cite_engine             = "basic";
@@ -80,11 +82,11 @@ string h_tocdepth                = "3";
 string h_paragraph_separation    = "indent";
 string h_defskip                 = "medskip";
 string h_quotes_language         = "english";
-string h_quotes_times            = "2";
 string h_papercolumns            = "1";
 string h_papersides              = string();
 string h_paperpagestyle          = "default";
 string h_tracking_changes        = "false";
+string h_output_changes          = "false";
 
 
 void handle_opt(vector<string> & opts, char const * const * what, string & target)
@@ -167,10 +169,7 @@ void handle_package(string const & name, string const & opts)
        add_package(name, options);
 
        //cerr << "handle_package: '" << name << "'\n";
-       if (name == "a4wide") {
-               h_papersize = "a4paper";
-               h_paperpackage = "widemarginsa4";
-       } else if (name == "ae")
+       if (name == "ae")
                h_fontscheme = "ae";
        else if (name == "aecompl")
                h_fontscheme = "ae";
@@ -189,9 +188,17 @@ void handle_package(string const & name, string const & opts)
                ; // ignore this
        else if (name == "verbatim")
                ; // ignore this
+       else if (name == "graphicx")
+               ; // ignore this
        else if (is_known(name, known_languages)) {
-               h_language = name;
-               h_quotes_language = name;
+               if (is_known(name, known_french_languages)) {
+                       h_language = "french";
+                       h_quotes_language = "french";
+               } else {
+                       h_language = name;
+                       h_quotes_language = name;
+               }
+
        } else if (name == "natbib") {
                h_cite_engine = "natbib_authoryear";
                vector<string>::iterator it =
@@ -225,7 +232,7 @@ void handle_package(string const & name, string const & opts)
 void end_preamble(ostream & os, LyXTextClass const & /*textclass*/)
 {
        os << "#LyX file created by  tex2lyx 0.1.2\n"
-          << "\\lyxformat 237\n"
+          << "\\lyxformat 245\n"
           << "\\begin_document\n"
           << "\\begin_header\n"
           << "\\textclass " << h_textclass << "\n"
@@ -239,7 +246,6 @@ void end_preamble(ostream & os, LyXTextClass const & /*textclass*/)
           << "\\paperfontsize " << h_paperfontsize << "\n"
           << "\\spacing " << h_spacing << "\n"
           << "\\papersize " << h_papersize << "\n"
-          << "\\paperpackage " << h_paperpackage << "\n"
           << "\\use_geometry " << h_use_geometry << "\n"
           << "\\use_amsmath " << h_use_amsmath << "\n"
           << "\\cite_engine " << h_cite_engine << "\n"
@@ -250,11 +256,11 @@ void end_preamble(ostream & os, LyXTextClass const & /*textclass*/)
           << "\\paragraph_separation " << h_paragraph_separation << "\n"
           << "\\defskip " << h_defskip << "\n"
           << "\\quotes_language " << h_quotes_language << "\n"
-          << "\\quotes_times " << h_quotes_times << "\n"
           << "\\papercolumns " << h_papercolumns << "\n"
           << "\\papersides " << h_papersides << "\n"
           << "\\paperpagestyle " << h_paperpagestyle << "\n"
           << "\\tracking_changes " << h_tracking_changes << "\n"
+          << "\\output_changes " << h_output_changes << "\n"
           << "\\end_header\n\n"
           << "\\begin_body\n";
        // clear preamble for subdocuments
@@ -329,7 +335,8 @@ LyXTextClass const parse_preamble(Parser & p, ostream & os, string const & force
                                star = true;
                        }
                        string const name = p.verbatim_item();
-                       string const opts = p.getOpt();
+                       string const opt1 = p.getOpt();
+                       string const opt2 = p.getFullOpt();
                        string const body = p.verbatim_item();
                        // only non-lyxspecific stuff
                        if (   name != "\\noun"
@@ -345,8 +352,12 @@ LyXTextClass const parse_preamble(Parser & p, ostream & os, string const & force
                                ss << '\\' << t.cs();
                                if (star)
                                        ss << '*';
-                               ss << '{' << name << '}' << opts << '{' << body << "}";
+                               ss << '{' << name << '}' << opt1 << opt2
+                                  << '{' << body << "}";
                                h_preamble << ss.str();
+
+                               // Add the command to the known commands
+                               add_known_command(name, opt1, !opt2.empty());
 /*
                                ostream & out = in_preamble ? h_preamble : os;
                                out << "\\" << t.cs() << "{" << name << "}"
@@ -359,7 +370,13 @@ LyXTextClass const parse_preamble(Parser & p, ostream & os, string const & force
                        vector<string> opts;
                        split(p.getArg('[', ']'), opts, ',');
                        handle_opt(opts, known_languages, h_language);
+                       if (is_known(h_language, known_french_languages))
+                               h_language = "french";
                        handle_opt(opts, known_fontsizes, h_paperfontsize);
+                       // delete "pt" at the end
+                       string::size_type i = h_paperfontsize.find("pt");
+                       if (i != string::npos)
+                               h_paperfontsize.erase(i);
                        h_quotes_language = h_language;
                        h_options = join(opts, ",");
                        h_textclass = p.getArg('{', '}');
@@ -388,8 +405,8 @@ LyXTextClass const parse_preamble(Parser & p, ostream & os, string const & force
                        ss << p.getOpt();
                        ss << '{' << p.verbatim_item() << '}';
                        ss << '{' << p.verbatim_item() << '}';
-                       if (name != "lyxcode" && name != "lyxlist"
-                                       && name != "lyxrightadress" && name != "lyxaddress")
+                       if (name != "lyxcode" && name != "lyxlist" &&
+                           name != "lyxrightadress" && name != "lyxaddress")
                                h_preamble << ss.str();
                }
 
@@ -397,7 +414,8 @@ LyXTextClass const parse_preamble(Parser & p, ostream & os, string const & force
                        string name = p.get_token().cs();
                        while (p.next_token().cat() != catBegin)
                                name += p.get_token().asString();
-                       h_preamble << "\\def\\" << name << '{' << p.verbatim_item() << "}";
+                       h_preamble << "\\def\\" << name << '{'
+                                  << p.verbatim_item() << "}";
                }
 
                else if (t.cs() == "newcolumntype") {