]> git.lyx.org Git - lyx.git/blobdiff - src/output_latex.cpp
* Only enter inset which return true on isActive(). This is the behavior in the curso...
[lyx.git] / src / output_latex.cpp
index 6c4db442405d427765166f15b0f1c5e87a68b667..10a4191c0330e23b8bcb254202a988ad754d924e 100644 (file)
@@ -115,8 +115,8 @@ TeXEnvironment(Buffer const & buf,
                        texrow.newline();
                }
 
-               if (lyxrc.language_command_end.empty() ||
-                   par_language->babel() != doc_language->babel() &&
+               if ((lyxrc.language_command_end.empty() ||
+                    par_language->babel() != doc_language->babel()) &&
                    !par_language->babel().empty()) {
                        os << from_ascii(subst(
                                lyxrc.language_command_begin,
@@ -283,10 +283,9 @@ TeXOnePar(Buffer const & buf,
                        texrow.newline();
                }
 
-               if (lyxrc.language_command_end.empty() ||
-                   par_language->babel() != doc_language->babel() &&
-                   !par_language->babel().empty())
-               {
+               if ((lyxrc.language_command_end.empty() ||
+                    par_language->babel() != doc_language->babel()) &&
+                   !par_language->babel().empty()) {
                        os << from_ascii(subst(
                                lyxrc.language_command_begin,
                                "$$lang",
@@ -316,7 +315,7 @@ TeXOnePar(Buffer const & buf,
                                pit->getFontSettings(bparams, i).language()->encoding();
                        if (encoding->package() == Encoding::inputenc &&
                            switchEncoding(os, bparams, false,
-                                          *(runparams.encoding), *encoding) > 0) {
+                                          *(runparams.encoding), *encoding) > 0) {
                                runparams.encoding = encoding;
                                os << '\n';
                                texrow.newline();
@@ -570,7 +569,7 @@ void latexParagraphs(Buffer const & buf,
                                par = TeXOnePar(buf, paragraphs, par, os, texrow,
                                                runparams, everypar);
                        } else if (layout->isEnvironment() ||
-                                  !par->params().leftIndent().zero()) {
+                                  !par->params().leftIndent().zero()) {
                                par = TeXEnvironment(buf, paragraphs, par, os,
                                                     texrow, runparams);
                        } else {
@@ -600,49 +599,57 @@ void latexParagraphs(Buffer const & buf,
 
 
 int switchEncoding(odocstream & os, BufferParams const & bparams,
-                   bool moving_arg, Encoding const & oldEnc,
-                   Encoding const & newEnc)
+                  bool moving_arg, Encoding const & oldEnc,
+                  Encoding const & newEnc)
 {
+       if ((bparams.inputenc != "auto" || moving_arg)
+               && bparams.inputenc != "default")
+               return 0;
+
+       // Do nothing if the encoding is unchanged.
+       if (oldEnc.name() == newEnc.name())
+               return 0;
+
        // FIXME We ignore encoding switches from/to encodings that do
        // neither support the inputenc package nor the CJK package here.
        // This does of course only work in special cases (e.g. switch from
        // tis620-0 to latin1, but the text in latin1 contains ASCII only,
        // but it is the best we can do
-       if (((bparams.inputenc == "auto" && !moving_arg) ||
-            bparams.inputenc == "default") &&
-           oldEnc.name() != newEnc.name() &&
-           oldEnc.package() != Encoding::none &&
-           newEnc.package() != Encoding::none) {
-               LYXERR(Debug::LATEX) << "Changing LaTeX encoding from "
-                                    << oldEnc.name() << " to "
-                                    << newEnc.name() << endl;
-               os << setEncoding(newEnc.iconvName());
-               if (bparams.inputenc != "default") {
-                       docstring const inputenc(from_ascii(newEnc.latexName()));
-                       switch (newEnc.package()) {
-                               case Encoding::none:
-                                       break;
-                               case Encoding::inputenc: {
-                                       int count = inputenc.length();
-                                       if (oldEnc.package() == Encoding::CJK) {
-                                               os << "\\end{CJK}";
-                                               count += 9;
-                                       }
-                                       os << "\\inputencoding{" << inputenc << '}';
-                                       return count + 16;
-                               }
-                               case Encoding::CJK: {
-                                       int count = inputenc.length();
-                                       if (oldEnc.package() == Encoding::CJK) {
-                                               os << "\\end{CJK}";
-                                               count += 9;
-                                       }
-                                       os << "\\begin{CJK}{" << inputenc << "}{}";
-                                       return count + 15;
-                               }
+       if (oldEnc.package() == Encoding::none
+               || newEnc.package() == Encoding::none)
+               return 0;
+
+       LYXERR(Debug::LATEX) << "Changing LaTeX encoding from "
+               << oldEnc.name() << " to "
+               << newEnc.name() << endl;
+       os << setEncoding(newEnc.iconvName());
+       if (bparams.inputenc == "default")
+               return 0;
+
+       docstring const inputenc(from_ascii(newEnc.latexName()));
+       switch (newEnc.package()) {
+               case Encoding::none:
+                       return 0;
+               case Encoding::inputenc: {
+                       int count = inputenc.length();
+                       if (oldEnc.package() == Encoding::CJK) {
+                               os << "\\end{CJK}";
+                               count += 9;
+                       }
+                       os << "\\inputencoding{" << inputenc << '}';
+                       return count + 16;
+                }
+               case Encoding::CJK: {
+                       int count = inputenc.length();
+                       if (oldEnc.package() == Encoding::CJK) {
+                               os << "\\end{CJK}";
+                               count += 9;
                        }
+                       os << "\\begin{CJK}{" << inputenc << "}{}";
+                       return count + 15;
                }
        }
+       // Dead code to avoid a warning:
        return 0;
 }