]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
TR1: move TR1 check to config.h / buildsystem
[lyx.git] / src / Paragraph.cpp
index 5ec2adfeefed9fc0f8c8d613900dd631441e5588..150c28d6a9adafe53b8be2cdc7d224dbf3d297e9 100644 (file)
@@ -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;
 }