]> git.lyx.org Git - lyx.git/blobdiff - src/output_latex.cpp
Update bindfiles to latest fileformat
[lyx.git] / src / output_latex.cpp
index 4acbe654331ab67fe2bb0acc41158f860721e0f4..31211d1c8554cc01c6897cfe9bc2aaadc1a30e72 100644 (file)
@@ -523,7 +523,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 +574,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 +810,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 +890,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?
@@ -1041,6 +1040,9 @@ void latexParagraphs(Buffer const & buf,
                     OutputParams const & runparams,
                     string const & everypar)
 {
+       LASSERT(runparams.par_begin <= runparams.par_end,
+               { os << "% LaTeX Output Error\n"; return; } );
+
        BufferParams const & bparams = buf.params();
 
        bool const maintext = text.isMainText();
@@ -1078,7 +1080,6 @@ void latexParagraphs(Buffer const & buf,
        }
 
        ParagraphList const & paragraphs = text.paragraphs();
-       LASSERT(runparams.par_begin <= runparams.par_end, /**/);
 
        if (runparams.par_begin == runparams.par_end) {
                // The full doc will be exported but it is easier to just rely on
@@ -1196,8 +1197,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.