From 8ac09fc110330afe2dfeff72cf2bd6fdf734d82c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Lars=20Gullik=20Bj=C3=B8nnes?= Date: Tue, 8 May 2001 17:08:44 +0000 Subject: [PATCH] use stringstream, remove some old footnote handling git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@1990 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/BufferView_pimpl.C | 27 ++++-- src/ChangeLog | 10 ++ src/LaTeXFeatures.C | 207 +++++++++++++++++++++++++++-------------- src/LaTeXFeatures.h | 12 ++- src/buffer.C | 70 +++++--------- src/insets/insettext.C | 18 ++-- src/lyxparagraph.h | 2 +- src/paragraph.C | 4 +- 8 files changed, 208 insertions(+), 142 deletions(-) diff --git a/src/BufferView_pimpl.C b/src/BufferView_pimpl.C index 0d252ea5d0..fb46ea88cc 100644 --- a/src/BufferView_pimpl.C +++ b/src/BufferView_pimpl.C @@ -1762,10 +1762,10 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument) owner_->getLyXFunc()->setMessage(tmpinset->EditMessage()); int y = 0; if (is_rtl) { - LyXFont font = + LyXFont const font = TEXT(bv_)->GetFont(buffer_, - TEXT(bv_)->cursor.par(), - TEXT(bv_)->cursor.pos()); + TEXT(bv_)->cursor.par(), + TEXT(bv_)->cursor.pos()); y = tmpinset->descent(bv_,font); } tmpinset->Edit(bv_, 0, y, 0); @@ -2109,13 +2109,16 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument) case LFUN_PROTECTEDSPACE: { - LyXLayout const & style = - textclasslist.Style(buffer_->params.textclass, - TEXT(bv_)->cursor.par()->GetLayout()); + LyXLayout const & style = textclasslist + .Style(buffer_->params.textclass, + TEXT(bv_)->cursor.par()->GetLayout()); if (style.free_spacing) { TEXT(bv_)->InsertChar(bv_, ' '); - update(TEXT(bv_), BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + update(TEXT(bv_), + BufferView::SELECT + | BufferView::FITCUR + | BufferView::CHANGE); } else { bv_->protectedBlank(TEXT(bv_)); } @@ -2126,12 +2129,14 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument) case LFUN_SETMARK: if (TEXT(bv_)->mark_set) { beforeChange(TEXT(bv_)); - update(TEXT(bv_), BufferView::SELECT|BufferView::FITCUR); + update(TEXT(bv_), + BufferView::SELECT|BufferView::FITCUR); owner_->getLyXFunc()->setMessage(N_("Mark removed")); } else { beforeChange(TEXT(bv_)); TEXT(bv_)->mark_set = 1; - update(TEXT(bv_), BufferView::SELECT|BufferView::FITCUR); + update(TEXT(bv_), + BufferView::SELECT|BufferView::FITCUR); owner_->getLyXFunc()->setMessage(N_("Mark set")); } TEXT(bv_)->sel_cursor = TEXT(bv_)->cursor; @@ -2143,7 +2148,9 @@ bool BufferView::Pimpl::Dispatch(kb_action action, string const & argument) TEXT(bv_)->sel_cursor = TEXT(bv_)->cursor; update(TEXT(bv_), - BufferView::SELECT|BufferView::FITCUR|BufferView::CHANGE); + BufferView::SELECT + | BufferView::FITCUR + | BufferView::CHANGE); // It is possible to make it a lot faster still // just comment out the line below... showCursor(); diff --git a/src/ChangeLog b/src/ChangeLog index fc5f99f35e..096a440cc9 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,15 @@ 2001-05-08 Lars Gullik Bjønnes + * paragraph.C (writeFile): remove footflag arg + + * buffer.C (makeLaTeXFile): use stringstream + (latexParagraphs): remove footnot gurba + + * LaTeXFeatures.C (getPackages): use stringstream + (getMacros): likewise + (getTClassPreamble): likewise + (getFloatDefinitions): new method + * paragraph.C (writeFile): reindent (Erase): reindent diff --git a/src/LaTeXFeatures.C b/src/LaTeXFeatures.C index 8fead5dce2..d01f6b3b8b 100644 --- a/src/LaTeXFeatures.C +++ b/src/LaTeXFeatures.C @@ -127,23 +127,24 @@ void LaTeXFeatures::require(string const & name) } -string const LaTeXFeatures::getPackages() +string const LaTeXFeatures::getPackages() const { - string packages; + ostringstream packages; LyXTextClass const & tclass = textclasslist.TextClass(params.textclass); // array-package if (array) - packages += "\\usepackage{array}\n"; + packages << "\\usepackage{array}\n"; // color.sty if (color) { if (params.graphicsDriver == "default") - packages += "\\usepackage{color}\n"; + packages << "\\usepackage{color}\n"; else - packages += "\\usepackage[" - + params.graphicsDriver + "]{color}\n"; + packages << "\\usepackage[" + << params.graphicsDriver + << "]{color}\n"; } // makeidx.sty @@ -151,47 +152,49 @@ string const LaTeXFeatures::getPackages() if (! tclass.provides(LyXTextClass::makeidx) && params.language->babel() != "french") // french provides // \index ! - packages += "\\usepackage{makeidx}\n"; - packages += "\\makeindex\n"; + packages << "\\usepackage{makeidx}\n"; + packages << "\\makeindex\n"; } // graphicx.sty if (graphicx && params.graphicsDriver != "none") { if (params.graphicsDriver == "default") - packages += "\\usepackage{graphicx}\n"; + packages << "\\usepackage{graphicx}\n"; else - packages += "\\usepackage[" - + params.graphicsDriver + "]{graphicx}\n"; + packages << "\\usepackage[" + << params.graphicsDriver + << "]{graphicx}\n"; } // INSET_GRAPHICS: remove this when InsetFig is thrown. // graphics.sty if (graphics && params.graphicsDriver != "none") { if (params.graphicsDriver == "default") - packages += "\\usepackage{graphics}\n"; + packages << "\\usepackage{graphics}\n"; else - packages += "\\usepackage[" - + params.graphicsDriver + "]{graphics}\n"; + packages << "\\usepackage[" + << params.graphicsDriver + << "]{graphics}\n"; } // verbatim.sty if (verbatim) - packages += "\\usepackage{verbatim}\n"; + packages << "\\usepackage{verbatim}\n"; if (algorithm) { - packages += "\\usepackage{algorithm}\n"; + packages << "\\usepackage{algorithm}\n"; } // lyxchess.sty if (chess) { - packages += "\\usepackage{lyxchess}\n"; + packages << "\\usepackage{lyxchess}\n"; } // setspace.sty if ((params.spacing.getSpace() != Spacing::Single && !params.spacing.isDefault()) || setspace) { - packages += "\\usepackage{setspace}\n"; + packages << "\\usepackage{setspace}\n"; } switch (params.spacing.getSpace()) { case Spacing::Default: @@ -200,59 +203,57 @@ string const LaTeXFeatures::getPackages() //packages += "\\singlespacing\n"; break; case Spacing::Onehalf: - packages += "\\onehalfspacing\n"; + packages << "\\onehalfspacing\n"; break; case Spacing::Double: - packages += "\\doublespacing\n"; + packages << "\\doublespacing\n"; break; case Spacing::Other: - std::ostringstream value; - value << params.spacing.getValue(); // setw? - packages += string("\\setstretch{") - + value.str().c_str() + "}\n"; + packages << "\\setstretch{" + << params.spacing.getValue() << "}\n"; break; } //longtable.sty if (longtable) - packages += "\\usepackage{longtable}\n"; + packages << "\\usepackage{longtable}\n"; //rotating.sty if (rotating) - packages += "\\usepackage{rotating}\n"; + packages << "\\usepackage{rotating}\n"; // amssymb.sty if (amssymb || params.use_amsmath) - packages += "\\usepackage{amssymb}\n"; + packages << "\\usepackage{amssymb}\n"; // latexsym.sty if (latexsym) - packages += "\\usepackage{latexsym}\n"; + packages << "\\usepackage{latexsym}\n"; // pifont.sty if (pifont) - packages += "\\usepackage{pifont}\n"; + packages << "\\usepackage{pifont}\n"; // subfigure.sty if (subfigure) - packages += "\\usepackage{subfigure}\n"; + packages << "\\usepackage{subfigure}\n"; // floatflt.sty if (floatflt) - packages += "\\usepackage{floatflt}\n"; + packages << "\\usepackage{floatflt}\n"; // url.sty if (url && ! tclass.provides(LyXTextClass::url)) - packages += "\\IfFileExists{url.sty}{\\usepackage{url}}\n" + packages << "\\IfFileExists{url.sty}{\\usepackage{url}}\n" " {\\newcommand{\\url}{\\texttt}}\n"; // varioref.sty if (varioref) - packages += "\\usepackage{varioref}\n"; + packages << "\\usepackage{varioref}\n"; // prettyref.sty if (prettyref) - packages += "\\usepackage{prettyref}\n"; + packages << "\\usepackage{prettyref}\n"; // float.sty // We only need float.sty if we use non builtin floats. This includes @@ -269,63 +270,66 @@ string const LaTeXFeatures::getPackages() } } if (use_float) - packages += "\\usepackage{float}\n"; + packages << "\\usepackage{float}\n"; } - packages += externalPreambles; + packages << externalPreambles; - return packages; + return packages.str().c_str(); } -string const LaTeXFeatures::getMacros() +string const LaTeXFeatures::getMacros() const { - string macros; + ostringstream macros; // always include this if (true || lyx) - macros += lyx_def + '\n'; + macros << lyx_def << '\n'; if (lyxline) - macros += lyxline_def + '\n'; + macros << lyxline_def << '\n'; if (noun) { - macros += noun_def + '\n'; + macros << noun_def << '\n'; } if (lyxarrow) { - macros += lyxarrow_def + '\n'; + macros << lyxarrow_def << '\n'; } // quotes. if (quotesinglbase) - macros += quotesinglbase_def + '\n'; + macros << quotesinglbase_def << '\n'; if (quotedblbase) - macros += quotedblbase_def + '\n'; + macros << quotedblbase_def << '\n'; if (guilsinglleft) - macros += guilsinglleft_def + '\n'; + macros << guilsinglleft_def << '\n'; if (guilsinglright) - macros += guilsinglright_def + '\n'; + macros << guilsinglright_def << '\n'; if (guillemotleft) - macros += guillemotleft_def + '\n'; + macros << guillemotleft_def << '\n'; if (guillemotright) - macros += guillemotright_def + '\n'; + macros << guillemotright_def << '\n'; // Math mode if (boldsymbol && !amsstyle) - macros += boldsymbol_def + '\n'; + macros << boldsymbol_def << '\n'; if (binom && !amsstyle) - macros += binom_def + '\n'; + macros << binom_def << '\n'; // other if (NeedLyXMinipageIndent) - macros += minipageindent_def; + macros << minipageindent_def; if (LyXParagraphIndent) - macros += paragraphindent_def; + macros << paragraphindent_def; if (NeedLyXFootnoteCode) - macros += floatingfootnote_def; + macros << floatingfootnote_def; // floats + getFloatDefinitions(macros); + +#if 0 // Here we will output the code to create the needed float styles. // We will try to do this as minimal as possible. // \floatstyle{ruled} @@ -369,52 +373,55 @@ string const LaTeXFeatures::getMacros() } } macros += floats.str().c_str(); - +#endif + for (LanguageList::const_iterator cit = UsedLanguages.begin(); cit != UsedLanguages.end(); ++cit) if (!(*cit)->latex_options().empty()) - macros += (*cit)->latex_options() + '\n'; + macros << (*cit)->latex_options() << '\n'; if (!params.language->latex_options().empty()) - macros += params.language->latex_options() + '\n'; + macros << params.language->latex_options() << '\n'; - return macros; + return macros.str().c_str(); } -string const LaTeXFeatures::getTClassPreamble() +string const LaTeXFeatures::getTClassPreamble() const { // the text class specific preamble LyXTextClass const & tclass = textclasslist.TextClass(params.textclass); - string tcpreamble = tclass.preamble(); + ostringstream tcpreamble; + + tcpreamble << tclass.preamble(); for (unsigned int i = 0; i < tclass.numLayouts(); ++i) { if (layout[i]) { - tcpreamble += tclass[i].preamble(); + tcpreamble << tclass[i].preamble(); } } - return tcpreamble; + return tcpreamble.str().c_str(); } -string const LaTeXFeatures::getIncludedFiles(string const fname) const +string const LaTeXFeatures::getIncludedFiles(string const & fname) const { - string sgmlpreamble; - string basename = OnlyPath(fname); + ostringstream sgmlpreamble; + string const basename = OnlyPath(fname); FileMap::const_iterator end = IncludedFiles.end(); for (FileMap::const_iterator fi = IncludedFiles.begin(); fi != end; ++fi) - sgmlpreamble += "\nfirst - + (IsSGMLFilename(fi->second) ? " SYSTEM \"" : " \"" ) - + MakeRelPath(fi->second,basename) + "\">"; + sgmlpreamble << "\nfirst + << (IsSGMLFilename(fi->second) ? " SYSTEM \"" : " \"" ) + << MakeRelPath(fi->second,basename) << "\">"; - return sgmlpreamble; + return sgmlpreamble.str().c_str(); } -void LaTeXFeatures::showStruct() { +void LaTeXFeatures::showStruct() const{ lyxerr << "LyX needs the following commands when LaTeXing:" << "\n***** Packages:" << getPackages() << "\n***** Macros:" << getMacros() @@ -427,3 +434,63 @@ BufferParams const & LaTeXFeatures::bufferParams() const { return params; } + + +void LaTeXFeatures::getFloatDefinitions(ostream & os) const +{ + // Here we will output the code to create the needed float styles. + // We will try to do this as minimal as possible. + // \floatstyle{ruled} + // \newfloat{algorithm}{htbp}{loa} + // \floatname{algorithm}{Algorithm} + UsedFloats::const_iterator cit = usedFloats.begin(); + UsedFloats::const_iterator end = usedFloats.end(); + // ostringstream floats; + for (; cit != end; ++cit) { + Floating const & fl = floatList.getType((*cit)); + + // For builtin floats we do nothing. + if (fl.builtin()) continue; + + // We have to special case "table" and "figure" + if (fl.type() == "tabular" || fl.type() == "figure") { + // Output code to modify "table" or "figure" + // but only if builtin == false + // and that have to be true at this point in the + // function. + string const type = fl.type(); + string const placement = fl.placement(); + string const style = fl.style(); + if (!style.empty()) { + os << "\\floatstyle{" << style << "}\n" + << "\\restylefloat{" << type << "}\n"; + } + if (!placement.empty()) { + os << "\\floatplacement{" << type << "}{" + << placement << "}\n"; + } + } else { + // The other non builtin floats. + + string const type = fl.type(); + string const placement = fl.placement(); + string const ext = fl.ext(); + string const within = fl.within(); + string const style = fl.style(); + string const name = fl.name(); + os << "\\floatstyle{" << style << "}\n" + << "\\newfloat{" << type << "}{" << placement + << "}{" << ext << "}"; + if (!within.empty()) + os << "[" << within << "]"; + os << "\n" + << "\\floatname{" << type << "}{" + << name << "}\n"; + + // What missing here is to code to minimalize the code + // outputted so that the same flotastyle will not be + // used several times. when the same style is still in + // effect. (Lgb) + } + } +} diff --git a/src/LaTeXFeatures.h b/src/LaTeXFeatures.h index 2825c2bf22..2a40539e5e 100644 --- a/src/LaTeXFeatures.h +++ b/src/LaTeXFeatures.h @@ -36,16 +36,18 @@ struct LaTeXFeatures { /// LaTeXFeatures(BufferParams const &, LyXTextClass::size_type n) ; /// The packaes needed by the document - string const getPackages(); + string const getPackages() const; /// The macros definitions needed by the document - string const getMacros(); + string const getMacros() const; /// The definitions needed by the document's textclass - string const getTClassPreamble(); + string const getTClassPreamble() const; /// - string const getIncludedFiles(string const fname) const; + string const getIncludedFiles(string const & fname) const; + /// + void getFloatDefinitions(ostream & os) const; /// - void showStruct(); + void showStruct() const; /// Provide a string name-space to the requirements void require(string const & name); diff --git a/src/buffer.C b/src/buffer.C index 329048aef0..68e11ca773 100644 --- a/src/buffer.C +++ b/src/buffer.C @@ -1464,12 +1464,11 @@ bool Buffer::writeFile(string const & fname, bool flag) const // now write out the buffer paramters. params.writeFile(ofs); - char footnoteflag = 0; char depth = 0; // this will write out all the paragraphs // using recursive descent. - paragraph->writeFile(this, ofs, params, footnoteflag, depth); + paragraph->writeFile(this, ofs, params, depth); // Write marker that shows file is complete ofs << "\n\\the_end" << endl; @@ -1774,13 +1773,13 @@ void Buffer::makeLaTeXFile(string const & fname, ofs << "\\documentclass"; - string options; // the document class options. + ostringstream options; // the document class options. if (tokenPos(tclass.opt_fontsize(), '|', params.fontsize) >= 0) { // only write if existing in list (and not default) - options += params.fontsize; - options += "pt,"; + options << params.fontsize; + options << "pt,"; } @@ -1788,22 +1787,22 @@ void Buffer::makeLaTeXFile(string const & fname, (params.paperpackage == BufferParams::PACKAGE_NONE)) { switch (params.papersize) { case BufferParams::PAPER_A4PAPER: - options += "a4paper,"; + options << "a4paper,"; break; case BufferParams::PAPER_USLETTER: - options += "letterpaper,"; + options << "letterpaper,"; break; case BufferParams::PAPER_A5PAPER: - options += "a5paper,"; + options << "a5paper,"; break; case BufferParams::PAPER_B5PAPER: - options += "b5paper,"; + options << "b5paper,"; break; case BufferParams::PAPER_EXECUTIVEPAPER: - options += "executivepaper,"; + options << "executivepaper,"; break; case BufferParams::PAPER_LEGALPAPER: - options += "legalpaper,"; + options << "legalpaper,"; break; } } @@ -1812,26 +1811,25 @@ void Buffer::makeLaTeXFile(string const & fname, if (params.sides != tclass.sides()) { switch (params.sides) { case LyXTextClass::OneSide: - options += "oneside,"; + options << "oneside,"; break; case LyXTextClass::TwoSides: - options += "twoside,"; + options << "twoside,"; break; } - } // if needed if (params.columns != tclass.columns()) { if (params.columns == 2) - options += "twocolumn,"; + options << "twocolumn,"; else - options += "onecolumn,"; + options << "onecolumn,"; } if (!params.use_geometry && params.orientation == BufferParams::ORIENTATION_LANDSCAPE) - options += "landscape,"; + options << "landscape,"; // language should be a parameter to \documentclass use_babel = false; @@ -1851,17 +1849,18 @@ void Buffer::makeLaTeXFile(string const & fname, language_options += (*cit)->babel() + ','; language_options += params.language->babel(); if (lyxrc.language_global_options) - options += language_options + ','; + options << language_options << ','; } // the user-defined options if (!params.options.empty()) { - options += params.options + ','; + options << params.options << ','; } - - if (!options.empty()){ - options = strip(options, ','); - ofs << '[' << options << ']'; + + string strOptions(options.str().c_str()); + if (!strOptions.empty()){ + strOptions = strip(strOptions, ','); + ofs << '[' << strOptions << ']'; } ofs << '{' @@ -2219,9 +2218,6 @@ void Buffer::latexParagraphs(ostream & ofs, LyXParagraph * par, { bool was_title = false; bool already_title = false; - std::ostringstream ftnote; - TexRow ft_texrow; - int ftcount = 0; // if only_body while (par != endpar) { @@ -2242,32 +2238,12 @@ void Buffer::latexParagraphs(ostream & ofs, LyXParagraph * par, already_title = true; was_title = false; } - // We are at depth 0 so we can just use - // ordinary \footnote{} generation - // flag this with ftcount - ftcount = -1; + if (layout.isEnvironment()) { par = par->TeXEnvironment(this, params, ofs, texrow); } else { par = par->TeXOnePar(this, params, ofs, texrow, false); } - - // Write out what we've generated... - if (ftcount >= 1) { - if (ftcount > 1) { - ofs << "\\addtocounter{footnote}{-" - << ftcount - 1 - << '}'; - } - ofs << ftnote.str(); - texrow += ft_texrow; - - // The extra .c_str() is needed when we use - // lyxstring instead of the STL string class. - ftnote.str(string().c_str()); - ft_texrow.reset(); - ftcount = 0; - } } // It might be that we only have a title in this document if (was_title && !already_title) { diff --git a/src/insets/insettext.C b/src/insets/insettext.C index b4aead7368..b72b19a4a3 100644 --- a/src/insets/insettext.C +++ b/src/insets/insettext.C @@ -165,7 +165,7 @@ void InsetText::Write(Buffer const * buf, ostream & os) const void InsetText::WriteParagraphData(Buffer const * buf, ostream & os) const { - par->writeFile(buf, os, buf->params, 0, 0); + par->writeFile(buf, os, buf->params, 0); } @@ -947,7 +947,7 @@ InsetText::LocalDispatch(BufferView * bv, break; case LFUN_PASTESELECTION: { - string clip(bv->getClipboard()); + string const clip(bv->getClipboard()); if (clip.empty()) break; @@ -1118,9 +1118,8 @@ int InsetText::Ascii(Buffer const * buf, ostream & os, int linelen) const LyXParagraph * p = par; unsigned int lines = 0; - string tmp; while (p) { - tmp = buf->asciiParagraph(p, linelen); + string const tmp = buf->asciiParagraph(p, linelen); lines += countChar(tmp, '\n'); os << tmp; p = p->next(); @@ -1133,11 +1132,11 @@ int InsetText::DocBook(Buffer const * buf, ostream & os) const { LyXParagraph * p = par; unsigned int lines = 0; - int desc=0; + int desc = 0; string tmp; while (p) { - buf->SimpleDocBookOnePar(os,tmp,p,desc,0); + buf->SimpleDocBookOnePar(os, tmp, p, desc, 0); p = p->next(); } @@ -1148,7 +1147,7 @@ int InsetText::DocBook(Buffer const * buf, ostream & os) const void InsetText::Validate(LaTeXFeatures & features) const { LyXParagraph * p = par; - while(p) { + while (p) { p->validate(features); p = p->next(); } @@ -1243,6 +1242,7 @@ InsetText::moveRight(BufferView * bv, bool activate_inset, bool selecting) return moveRightIntern(bv, false, activate_inset, selecting); } + UpdatableInset::RESULT InsetText::moveLeft(BufferView * bv, bool activate_inset, bool selecting) { @@ -1558,6 +1558,7 @@ LyXParagraph * InsetText::cpar(BufferView * bv) const return TEXT(bv)->cursor.par(); } + bool InsetText::cboundary(BufferView * bv) const { return TEXT(bv)->cursor.boundary(); @@ -1691,6 +1692,7 @@ void InsetText::removeNewlines() } } + bool InsetText::nodraw() const { if (the_locking_inset) @@ -1698,6 +1700,7 @@ bool InsetText::nodraw() const return UpdatableInset::nodraw(); } + int InsetText::scroll(bool recursive) const { int sx = UpdatableInset::scroll(false); @@ -1708,6 +1711,7 @@ int InsetText::scroll(bool recursive) const return sx; } + bool InsetText::doClearArea() const { return !locked || (need_update & (FULL|INIT)); diff --git a/src/lyxparagraph.h b/src/lyxparagraph.h index 6b823baeb4..05bc96d3ce 100644 --- a/src/lyxparagraph.h +++ b/src/lyxparagraph.h @@ -110,7 +110,7 @@ public: /// void writeFile(Buffer const *, std::ostream &, BufferParams const &, - char, char) const; + char) const; /// void validate(LaTeXFeatures &) const; diff --git a/src/paragraph.C b/src/paragraph.C index 314c4829c3..8472c72e59 100644 --- a/src/paragraph.C +++ b/src/paragraph.C @@ -178,7 +178,7 @@ LyXParagraph::~LyXParagraph() void LyXParagraph::writeFile(Buffer const * buf, ostream & os, BufferParams const & bparams, - char footflag, char dth) const + char dth) const { // The beginning or end of a deeper (i.e. nested) area? if (dth != params.depth()) { @@ -327,7 +327,7 @@ void LyXParagraph::writeFile(Buffer const * buf, ostream & os, // now write the next paragraph if (next_) - next_->writeFile(buf, os, bparams, footflag, dth); + next_->writeFile(buf, os, bparams, dth); } -- 2.39.2