]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/preamble.cpp
tex2lyx/preamble.cpp: support Vietnamese (since format 291)
[lyx.git] / src / tex2lyx / preamble.cpp
index 5c3a4e6269f4fcf6b0ed3f6d7e1c90ec86956e9c..ce6593982a57ea5d77503b2939d06d5c9c2d737a 100644 (file)
@@ -56,21 +56,24 @@ namespace {
 //"chinese-simplified", "chinese-traditional", "japanese", "korean"
 // Both changes require first that support for non-babel languages (CJK,
 // armtex) is added.
-const char * const known_languages[] = { "afrikaans", "american", "arabic",
-"arabtex", "austrian", "bahasa", "basque", "belarusian", "brazil", "brazilian",
-"breton", "british", "bulgarian", "canadian", "canadien", "catalan",
-"croatian", "czech", "danish", "dutch", "english", "esperanto", "estonian",
-"finnish", "francais", "french", "frenchb", "frenchle", "frenchpro",
-"galician", "german", "germanb", "greek", "hebrew", "icelandic", "irish",
-"italian", "kazakh", "latvian", "lithuanian", "lsorbian", "magyar",
-"naustrian", "ngerman", "ngermanb", "norsk", "nynorsk", "polish", "portuges",
-"portuguese", "romanian", "russian", "russianb", "scottish", "serbian", "slovak",
-"slovene", "spanish", "swedish", "thai", "turkish", "ukraineb", "ukrainian",
-"usorbian", "welsh", 0};
-
-//add this when updating to lyxformat 305:
-//bahasai, indonesian, and indon = equal to bahasa
-//malay and meyalu = equal to bahasam
+const char * const known_languages[] = { "afrikaans", "albanian", "american",
+"arabic", "arabtex", "austrian", "bahasa", "bahasai", "bahasam", "basque",
+"belarusian", "brazil", "brazilian", "breton", "british", "bulgarian",
+"canadian", "canadien", "catalan", "croatian", "czech", "danish", "dutch",
+"english", "esperanto", "estonian", "finnish", "francais", "french",
+"frenchb", "frenchle", "frenchpro", "galician", "german", "germanb", "greek",
+"hebrew", "icelandic", "indon", "indonesian", "interlingua", "irish",
+"italian", "kazakh", "latin", "latvian", "lithuanian", "lsorbian", "magyar",
+"malay", "meyalu", "naustrian", "ngerman", "ngermanb", "norsk", "nynorsk",
+"polish", "portuges", "portuguese", "romanian", "russian", "russianb",
+"samin", "scottish", "serbian", "serbian-latin", "slovak", "slovene",
+"spanish", "swedish", "thai", "turkish", "ukraineb", "ukrainian",
+"usorbian", "vietnam", "welsh", 0};
+
+const char * const known_bahasa_languages[] = {"bahasa", "bahasai",
+                                               "indon", "indonesian", 0};
+const char * const known_bahasam_languages[] = {"bahasam", "malay",
+                                               "meyalu", 0};
 const char * const known_brazilian_languages[] = {"brazil", "brazilian", 0};
 const char * const known_french_languages[] = {"french", "frenchb", "francais",
                                                "frenchle", "frenchpro", 0};
@@ -90,7 +93,7 @@ const char * const known_english_quotes_languages[] = {"american", "canadian",
 //"spanish-mexico"
 const char * const known_french_quotes_languages[] = {"albanian", "arabic",
 "basque", "canadien", "catalan", "galician", "greek", "italian", "norsk",
-"nynorsk", "spanish", "turkish", 0};
+"nynorsk", "spanish", "turkish", "vietnam", 0};
 
 const char * const known_german_quotes_languages[] = {"austrian", "bulgarian",
 "czech", "icelandic", "lithuanian", "lsorbian", "naustrian", "serbian",
@@ -99,7 +102,7 @@ const char * const known_german_quotes_languages[] = {"austrian", "bulgarian",
 const char * const known_polish_quotes_languages[] = {"afrikaans", "croatian",
 "dutch", "estonian", "magyar", "polish", "romanian", 0};
 
-const char * const known_swedish_quotes_languages[] = {"bahasa", "finnish", 
+const char * const known_swedish_quotes_languages[] = {"finnish",
 "swedish", 0};
 
 char const * const known_fontsizes[] = { "10pt", "11pt", "12pt", 0 };
@@ -143,8 +146,26 @@ string h_font_osf                = "false";
 string h_font_sf_scale           = "100";
 string h_font_tt_scale           = "100";
 string h_graphics                = "default";
+string h_float_placement;
 string h_paperfontsize           = "default";
 string h_spacing                 = "single";
+string h_use_hyperref            = "0";
+string h_pdf_title;
+string h_pdf_author;
+string h_pdf_subject;
+string h_pdf_keywords;
+string h_pdf_bookmarks           = "1";
+string h_pdf_bookmarksnumbered   = "0";
+string h_pdf_bookmarksopen       = "0";
+string h_pdf_bookmarksopenlevel  = "1";
+string h_pdf_breaklinks          = "0";
+string h_pdf_pdfborder           = "0";
+string h_pdf_colorlinks          = "0";
+string h_pdf_backref             = "0";
+string h_pdf_pagebackref         = "0";
+string h_pdf_pdfusetitle         = "1";
+string h_pdf_pagemode;
+string h_pdf_quoted_options;
 string h_papersize               = "default";
 string h_use_geometry            = "false";
 string h_use_amsmath             = "1";
@@ -160,6 +181,7 @@ string h_quotes_language         = "english";
 string h_papercolumns            = "1";
 string h_papersides              = string();
 string h_paperpagestyle          = "default";
+string h_listings_params;
 string h_tracking_changes        = "false";
 string h_output_changes          = "false";
 string h_margins                 = "";
@@ -172,6 +194,10 @@ string babel2lyx(string language)
                return "arabic_arabtex";
        if (language == "arabic")
                return "arabic_arabi";
+       if (language == "lsorbian")
+               return "lowersorbian";
+       if (language == "usorbian")
+               return "uppersorbian";
        return language;
 }
 
@@ -459,7 +485,11 @@ void handle_package(Parser &p, string const & name, string const & opts,
 void end_preamble(ostream & os, TextClass const & /*textclass*/)
 {
        // merge synonym languages
-       if (is_known(h_language, known_brazilian_languages))
+       if (is_known(h_language, known_bahasa_languages))
+               h_language = "bahasa";
+       else if (is_known(h_language, known_bahasam_languages))
+               h_language = "bahasam";
+       else if (is_known(h_language, known_brazilian_languages))
                h_language = "brazilian";
        else if (is_known(h_language, known_french_languages))
                h_language = "french";
@@ -504,6 +534,8 @@ void end_preamble(ostream & os, TextClass const & /*textclass*/)
                h_quotes_language = "swedish";
        //english
        else if (is_known(h_language, known_english_quotes_languages)
+               || is_known(h_language, known_bahasa_languages)
+               || is_known(h_language, known_bahasam_languages)
                || is_known(h_language, known_brazilian_languages)
                || is_known(h_language, known_portuguese_languages))
                h_quotes_language = "english";
@@ -530,10 +562,37 @@ void end_preamble(ostream & os, TextClass const & /*textclass*/)
           << "\\font_osf " << h_font_osf << "\n"
           << "\\font_sf_scale " << h_font_sf_scale << "\n"
           << "\\font_tt_scale " << h_font_tt_scale << "\n"
-          << "\\graphics " << h_graphics << "\n"
-          << "\\paperfontsize " << h_paperfontsize << "\n"
+          << "\\graphics " << h_graphics << "\n";
+       if (!h_float_placement.empty())
+               os << "\\float_placement " << h_float_placement << "\n";
+       os << "\\paperfontsize " << h_paperfontsize << "\n"
           << "\\spacing " << h_spacing << "\n"
-          << "\\papersize " << h_papersize << "\n"
+          << "\\use_hyperref " << h_use_hyperref << '\n';
+       if (h_use_hyperref == "1") {
+               if (!h_pdf_title.empty())
+                       os << "\\pdf_title \"" << h_pdf_title << "\"\n";
+               if (!h_pdf_author.empty())
+                       os << "\\pdf_author \"" << h_pdf_author << "\"\n";
+               if (!h_pdf_subject.empty())
+                       os << "\\pdf_subject \"" << h_pdf_subject << "\"\n";
+               if (!h_pdf_keywords.empty())
+                       os << "\\pdf_keywords \"" << h_pdf_keywords << "\"\n";
+               os << "\\pdf_bookmarks " << h_pdf_bookmarks << "\n"
+                     "\\pdf_bookmarksnumbered " << h_pdf_bookmarksnumbered << "\n"
+                     "\\pdf_bookmarksopen " << h_pdf_bookmarksopen << "\n"
+                     "\\pdf_bookmarksopenlevel " << h_pdf_bookmarksopenlevel << "\n"
+                     "\\pdf_breaklinks " << h_pdf_breaklinks << "\n"
+                     "\\pdf_pdfborder " << h_pdf_pdfborder << "\n"
+                     "\\pdf_colorlinks " << h_pdf_colorlinks << "\n"
+                     "\\pdf_backref " << h_pdf_backref << "\n"
+                     "\\pdf_pagebackref " << h_pdf_pagebackref << "\n"
+                     "\\pdf_pdfusetitle " << h_pdf_pdfusetitle << '\n';
+               if (!h_pdf_pagemode.empty())
+                       os << "\\pdf_pagemode " << h_pdf_pagemode << '\n';
+               if (!h_pdf_quoted_options.empty())
+                       os << "\\pdf_quoted_options \"" << h_pdf_quoted_options << "\"\n";
+       }
+       os << "\\papersize " << h_papersize << "\n"
           << "\\use_geometry " << h_use_geometry << "\n"
           << "\\use_amsmath " << h_use_amsmath << "\n"
           << "\\use_esint " << h_use_esint << "\n"
@@ -548,8 +607,10 @@ void end_preamble(ostream & os, TextClass const & /*textclass*/)
           << "\\quotes_language " << h_quotes_language << "\n"
           << "\\papercolumns " << h_papercolumns << "\n"
           << "\\papersides " << h_papersides << "\n"
-          << "\\paperpagestyle " << h_paperpagestyle << "\n"
-          << "\\tracking_changes " << h_tracking_changes << "\n"
+          << "\\paperpagestyle " << h_paperpagestyle << "\n";
+       if (!h_listings_params.empty())
+               os << "\\listings_params " << h_listings_params << "\n";
+       os << "\\tracking_changes " << h_tracking_changes << "\n"
           << "\\output_changes " << h_output_changes << "\n"
           << "\\end_header\n\n"
           << "\\begin_body\n";