X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_latex.cpp;h=312199d62c0f39405fb0aba242c9a9ac547ed960;hb=d6fecb4aa47899ea3fe02d1699e0ffc81f364910;hp=4acbe654331ab67fe2bb0acc41158f860721e0f4;hpb=41060c9723f6bf5ee5e1e888961338a62bb0302e;p=lyx.git diff --git a/src/output_latex.cpp b/src/output_latex.cpp index 4acbe65433..312199d62c 100644 --- a/src/output_latex.cpp +++ b/src/output_latex.cpp @@ -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? @@ -1041,6 +1044,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 +1084,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 +1201,12 @@ pair 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.