X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FParagraph.cpp;h=150c28d6a9adafe53b8be2cdc7d224dbf3d297e9;hb=69036ced3765f40048d62be800c98af3ea2d1b4a;hp=5ec2adfeefed9fc0f8c8d613900dd631441e5588;hpb=8f54bac0045fbd24e1971c9aa161328cdb218e8d;p=lyx.git diff --git a/src/Paragraph.cpp b/src/Paragraph.cpp index 5ec2adfeef..150c28d6a9 100644 --- a/src/Paragraph.cpp +++ b/src/Paragraph.cpp @@ -1079,10 +1079,16 @@ void Paragraph::Private::validate(LaTeXFeatures & features) const Font f; TexRow tr; odocstringstream ods; - owner_->latex(bp, f, ods, tr, features.runparams()); - docstring d = ods.str(); - if (!d.empty()) - features.addPreambleSnippet(to_utf8(d)); + // we have to provide all the optional arguments here, even though + // the last one is the only one we care about. + owner_->latex(bp, f, ods, tr, features.runparams(), 0, -1, true); + docstring const d = ods.str(); + if (!d.empty()) { + // this will have "{" at the beginning, but not at the end + string const content = to_utf8(d); + string const cmd = layout_->latexname(); + features.addPreambleSnippet("\\" + cmd + content + "}"); + } } if (features.runparams().flavor == OutputParams::HTML @@ -1974,26 +1980,24 @@ int Paragraph::Private::endTeXParParams(BufferParams const & bparams, // This one spits out the text of the paragraph -bool Paragraph::latex(BufferParams const & bparams, +void Paragraph::latex(BufferParams const & bparams, Font const & outerfont, odocstream & os, TexRow & texrow, OutputParams const & runparams, - int start_pos, int end_pos) const + int start_pos, int end_pos, bool force) const { LYXERR(Debug::LATEX, "Paragraph::latex... " << this); - if (layout().inpreamble) - return true; - - bool return_value = false; - - bool const allowcust = allowParagraphCustomization(); - // FIXME This check should not be needed. Perhaps issue an // error if it triggers. Layout const & style = inInset().forcePlainLayout() ? bparams.documentClass().plainLayout() : *d->layout_; + if (!force && style.inpreamble) + return; + + bool const allowcust = allowParagraphCustomization(); + // Current base font for all inherited font changes, without any // change caused by an individual character, except for the language: // It is set to the language of the first character. @@ -2228,9 +2232,8 @@ bool Paragraph::latex(BufferParams const & bparams, if (open_font) { #ifdef FIXED_LANGUAGE_END_DETECTION if (next_) { - running_font - .latexWriteEndChanges(os, bparams, runparams, - basefont, + running_font.latexWriteEndChanges(os, bparams, + runparams, basefont, next_->getFont(bparams, 0, outerfont)); } else { running_font.latexWriteEndChanges(os, bparams, @@ -2251,7 +2254,6 @@ bool Paragraph::latex(BufferParams const & bparams, // Needed if there is an optional argument but no contents. if (body_pos > 0 && body_pos == size()) { os << "}]~"; - return_value = false; } if (allowcust && d->endTeXParParams(bparams, os, texrow, runparams) @@ -2262,7 +2264,6 @@ bool Paragraph::latex(BufferParams const & bparams, } LYXERR(Debug::LATEX, "Paragraph::latex... done " << this); - return return_value; }