]> git.lyx.org Git - lyx.git/blobdiff - src/output_latex.cpp
Fix table rotate conversion to 2.0 format
[lyx.git] / src / output_latex.cpp
index 697a3b5028d3cb97a2263cb0e04f588c4ce6d033..312199d62c0f39405fb0aba242c9a9ac547ed960 100644 (file)
@@ -53,6 +53,10 @@ enum OpenEncoding {
        CJK
 };
 
+// FIXME THREAD
+// There could easily be a conflict here, with the export process
+// setting this one way, and a View>Source process (possbily for
+// another Buffer) resetting it.
 static int open_encoding_ = none;
 static int cjk_inherited_ = 0;
 Language const * prev_env_language_ = 0;
@@ -523,7 +527,8 @@ void TeXOnePar(Buffer const & buf,
               string const & everypar,
               int start_pos, int end_pos)
 {
-       BufferParams const & bparams = buf.params();
+       BufferParams const & bparams = runparams_in.is_child
+               ? buf.masterParams() : buf.params();
        ParagraphList const & paragraphs = text.paragraphs();
        Paragraph const & par = paragraphs.at(pit);
        // FIXME This check should not really be needed.
@@ -573,7 +578,6 @@ void TeXOnePar(Buffer const & buf,
 
        if (style.pass_thru) {
                Font const outerfont = text.outerFont(pit);
-               runparams.local_font = &par.getFirstFontSettings(bparams);
                parStartCommand(par, os, runparams, style);
 
                par.latex(bparams, outerfont, os, runparams, start_pos, end_pos);
@@ -810,7 +814,6 @@ void TeXOnePar(Buffer const & buf,
                }
        }
 
-       runparams.local_font = &par.getFirstFontSettings(bparams);
        parStartCommand(par, os, runparams, style);
        Font const outerfont = text.outerFont(pit);
 
@@ -891,7 +894,7 @@ void TeXOnePar(Buffer const & buf,
                // not for ArabTeX
                && (par_language->lang() != "arabic_arabtex"
                    && outer_language->lang() != "arabic_arabtex")
-                    // have we opened and \L or \R environment?
+               // have we opened an \L or \R environment?
                && runparams.local_font != 0
                && runparams.local_font->isRightToLeft() != par_language->rightToLeft()
                // are we about to close the language?
@@ -1198,8 +1201,12 @@ pair<bool, int> switchEncoding(odocstream & os, BufferParams const & bparams,
 {
        Encoding const & oldEnc = *runparams.encoding;
        bool moving_arg = runparams.moving_arg;
-       if (!force && ((bparams.inputenc != "auto" && bparams.inputenc != "default")
-               || moving_arg))
+       // If we switch from/to CJK, we need to switch anyway, despite custom inputenc
+       bool const from_to_cjk = 
+               (oldEnc.package() == Encoding::CJK && newEnc.package() != Encoding::CJK)
+               || (oldEnc.package() != Encoding::CJK && newEnc.package() == Encoding::CJK);
+       if (!force && !from_to_cjk
+           && ((bparams.inputenc != "auto" && bparams.inputenc != "default") || moving_arg))
                return make_pair(false, 0);
 
        // Do nothing if the encoding is unchanged.