]> git.lyx.org Git - lyx.git/commitdiff
Correct placement of the \selectlanguage commands.
authorDekel Tsur <dekelts@tau.ac.il>
Sat, 3 Nov 2001 17:15:43 +0000 (17:15 +0000)
committerDekel Tsur <dekelts@tau.ac.il>
Sat, 3 Nov 2001 17:15:43 +0000 (17:15 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@2962 a592a061-630c-0410-9148-cb99ea01b6c8

src/ChangeLog
src/lyxrc.C
src/paragraph.C

index 586d6cd26b99a748168fba06c01063cc79597459..326a1668650479e745328b39d3a951e7d4ffaa43 100644 (file)
@@ -1,3 +1,8 @@
+2001-11-03  Dekel Tsur  <dekelts@tau.ac.il>
+
+       * paragraph.C (TeXOnePar): Correct placement of \selectlanguage
+       commands.
+
 2001-10-31  Jean-Marc Lasgouttes  <Jean-Marc.Lasgouttes@inria.fr>
 
        * gettext.C (locale_init): set LC_NUMERIC to "C" even if nls is
index f0d70852e3fe5d4991e659acddcf5baa9608cdcd..d8b811cfd2ec0f1e28f10ad06c06cc66e22ea8c5 100644 (file)
@@ -243,7 +243,6 @@ void LyXRC::setDefaults() {
        language_use_babel = true;
        language_package = "\\usepackage{babel}";
        language_command_begin = "\\selectlanguage{$$lang}";
-       language_command_end = "\\selectlanguage{$$lang}";
        language_command_local = "\\foreignlanguage{$$lang}{";
        default_language = "english";
        //
index 36d87fbc28bbd45290ebf0e5325d3f29eef533f7..fbdeb4f36dd14b4c7a253514ad066cfd47996b42 100644 (file)
@@ -1281,14 +1281,30 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
 
        Language const * language = getParLanguage(bparams);
        Language const * doc_language = bparams.language;
-       Language const * previous_language = previous_
-               ? previous_->getParLanguage(bparams) : doc_language;
-       if (language->babel() != doc_language->babel() &&
-           language->babel() != previous_language->babel()) {
-               os << subst(lyxrc.language_command_begin, "$$lang",
-                           language->babel())
-                  << endl;
-               texrow.newline();
+       Language const * previous_language = previous()
+               ? previous()->getParLanguage(bparams) : doc_language;
+
+       if (language->babel() != previous_language->babel()
+           // check if we already put language command in TeXEnvironment()
+           && !(textclasslist.Style(bparams.textclass, layout).isEnvironment()
+                && (!previous() || previous()->layout != layout ||
+                    previous()->params().depth() != params().depth()))) {
+
+               if (!lyxrc.language_command_end.empty() &&
+                   previous_language->babel() != doc_language->babel()) {
+                       os << subst(lyxrc.language_command_end, "$$lang",
+                                   previous_language->babel())
+                          << endl;
+                       texrow.newline();
+               }
+
+               if (lyxrc.language_command_end.empty() ||
+                   language->babel() != doc_language->babel()) {
+                       os << subst(lyxrc.language_command_begin, "$$lang",
+                                   language->babel())
+                          << endl;
+                       texrow.newline();
+               }
        }
 
        if (bparams.inputenc == "auto" &&
@@ -1345,15 +1361,6 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
        } else if (is_command)
                os << "}";
 
-       if (language->babel() != doc_language->babel() &&
-           (!next_ ||
-            next_->getParLanguage(bparams)->babel() != language->babel()))
-       {
-               os << endl 
-                  << subst(lyxrc.language_command_end, "$$lang",
-                           doc_language->babel());
-       }
-       
        switch (style.latextype) {
        case LATEX_ITEM_ENVIRONMENT:
        case LATEX_LIST_ENVIRONMENT:
@@ -1411,6 +1418,24 @@ Paragraph * Paragraph::TeXOnePar(Buffer const * buf,
        if (next_) {
                os << '\n';
                texrow.newline();
+       } else {
+               // Since \selectlanguage write the language to the aux file,
+               // we need to reset the language at the end of footnote or
+               // float.
+
+               if (language->babel() != doc_language->babel()) {
+                       if (lyxrc.language_command_end.empty())
+                               os << subst(lyxrc.language_command_begin,
+                                           "$$lang",
+                                           doc_language->babel())
+                                  << endl;
+                       else
+                               os << subst(lyxrc.language_command_end,
+                                           "$$lang",
+                                           language->babel())
+                                  << endl;
+                       texrow.newline();
+               }
        }
 
        lyxerr[Debug::LATEX] << "TeXOnePar...done " << next_ << endl;
@@ -1734,6 +1759,29 @@ Paragraph * Paragraph::TeXEnvironment(Buffer const * buf,
                textclasslist.Style(bparams.textclass,
                                    layout);
 
+       Language const * language = getParLanguage(bparams);
+       Language const * doc_language = bparams.language;
+       Language const * previous_language = previous_
+               ? previous_->getParLanguage(bparams) : doc_language;
+       if (language->babel() != previous_language->babel()) {
+
+               if (!lyxrc.language_command_end.empty() &&
+                   previous_language->babel() != doc_language->babel()) {
+                       os << subst(lyxrc.language_command_end, "$$lang",
+                                   previous_language->babel())
+                          << endl;
+                       texrow.newline();
+               }
+
+               if (lyxrc.language_command_end.empty() ||
+                   language->babel() != doc_language->babel()) {
+                       os << subst(lyxrc.language_command_begin, "$$lang",
+                                   language->babel())
+                          << endl;
+                       texrow.newline();
+               }
+       }
+
        if (style.isEnvironment()){
                if (style.latextype == LATEX_LIST_ENVIRONMENT) {
                        os << "\\begin{" << style.latexname() << "}{"