X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Foutput_latex.cpp;h=4883d1b4f7a96329e52d99cad39a4545375fbed1;hb=4db3e641ed6765e005343010cb90ee8af26f8f99;hp=2af9831d780f175aa61c26ea24e42601658d8050;hpb=dc5d63ae242e902269d327630587f1e2aa52a6c8;p=lyx.git diff --git a/src/output_latex.cpp b/src/output_latex.cpp index 2af9831d78..4883d1b4f7 100644 --- a/src/output_latex.cpp +++ b/src/output_latex.cpp @@ -351,22 +351,24 @@ void getArgInsets(otexstream & os, OutputParams const & runparams, Layout::LaTeX string const name = prefix + convert(i); if ((*lait).first == name) { Layout::latexarg arg = (*lait).second; + docstring preset = arg.presetarg; + if (!arg.defaultarg.empty()) { + if (!preset.empty()) + preset += ","; + preset += arg.defaultarg; + } if (arg.mandatory) { docstring ldelim = arg.ldelim.empty() ? from_ascii("{") : arg.ldelim; docstring rdelim = arg.rdelim.empty() ? from_ascii("}") : arg.rdelim; - os << ldelim << arg.presetarg << rdelim; - } else if (!arg.presetarg.empty()) { - docstring ldelim = arg.mandatory ? - from_ascii("{") : from_ascii("["); - docstring rdelim = arg.mandatory ? - from_ascii("}") : from_ascii("]"); - if (!arg.ldelim.empty()) - ldelim = arg.ldelim; - if (!arg.rdelim.empty()) - rdelim = arg.rdelim; - os << ldelim << arg.presetarg << rdelim; + os << ldelim << preset << rdelim; + } else if (!preset.empty()) { + docstring ldelim = arg.ldelim.empty() ? + from_ascii("[") : arg.ldelim; + docstring rdelim = arg.rdelim.empty() ? + from_ascii("]") : arg.rdelim; + os << ldelim << preset << rdelim; } else if (find(required.begin(), required.end(), (*lait).first) != required.end()) { docstring ldelim = arg.ldelim.empty() ? @@ -571,7 +573,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); @@ -808,7 +809,6 @@ void TeXOnePar(Buffer const & buf, } } - runparams.local_font = &par.getFirstFontSettings(bparams); parStartCommand(par, os, runparams, style); Font const outerfont = text.outerFont(pit); @@ -889,7 +889,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? @@ -1039,6 +1039,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(); @@ -1076,7 +1079,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 @@ -1194,8 +1196,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.