]> git.lyx.org Git - lyx.git/blobdiff - src/output_latex.cpp
Hide some internals of Changes:
[lyx.git] / src / output_latex.cpp
index a98ffb8c154b2ef55250a926dca06a11467c337f..1aa55e30180e2d55be68708aa1c298506988e57e 100644 (file)
@@ -115,11 +115,13 @@ TeXEnvironment(Buffer const & buf,
        ParagraphList::const_iterator const priorpit =
                pit == paragraphs.begin() ? pit : boost::prior(pit);
 
-       bool const use_prev_env_language = priorpit->layout().isEnvironment()
+       bool const use_prev_env_language = prev_env_language_ != 0
+                       && priorpit->layout().isEnvironment()
                        && (priorpit->getDepth() > pit->getDepth()
                            || (priorpit->getDepth() == pit->getDepth()
                                && priorpit->layout() != pit->layout()));
 
+       Encoding const * const prev_encoding = runparams.encoding;
        Language const * const par_language = pit->getParLanguage(bparams);
        Language const * const doc_language = bparams.language;
        Language const * const prev_par_language =
@@ -250,11 +252,14 @@ TeXEnvironment(Buffer const & buf,
                os << "\\end{" << from_ascii(style.latexname()) << "}\n";
                texrow.newline();
                prev_env_language_ = par_language;
+               runparams.encoding = prev_encoding;
        }
 
        if (leftindent_open) {
                os << "\\end{LyXParagraphLeftIndent}\n";
                texrow.newline();
+               prev_env_language_ = par_language;
+               runparams.encoding = prev_encoding;
        }
 
        if (par != paragraphs.end())
@@ -352,7 +357,8 @@ ParagraphList::const_iterator TeXOnePar(Buffer const & buf,
        // environment with nesting depth greater than (or equal to, but with
        // a different layout) the current one. If there is no previous
        // paragraph, the previous language is the outer language.
-       bool const use_prev_env_language = priorpit->layout().isEnvironment()
+       bool const use_prev_env_language = prev_env_language_ != 0
+                       && priorpit->layout().isEnvironment()
                        && (priorpit->getDepth() > pit->getDepth()
                            || (priorpit->getDepth() == pit->getDepth()
                                && priorpit->layout() != pit->layout()));
@@ -499,6 +505,8 @@ ParagraphList::const_iterator TeXOnePar(Buffer const & buf,
                }
        }
 
+       Encoding const * const prev_encoding = runparams.encoding;
+
        bool const useSetSpace = bparams.documentClass().provides("SetSpace");
        if (pit->allowParagraphCustomization()) {
                if (pit->params().startOfAppendix()) {
@@ -580,8 +588,10 @@ ParagraphList::const_iterator TeXOnePar(Buffer const & buf,
                os << "\\" << from_ascii(font.latexSize()) << " \\par}";
        } else if (need_par) {
                os << "\\par}";
-       } else if (is_command)
+       } else if (is_command) {
                os << '}';
+               runparams.encoding = prev_encoding;
+       }
 
        bool pending_newline = false;
        switch (style.latextype) {