X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Finsets%2FInsetERT.cpp;h=a023f7a464af403154af95fa6ae37737f977997e;hb=85946aae;hp=403df75032da7d1c5263c65e785b42be7d68cbd1;hpb=a6b07608d8e9de24383d3ebaec20b6b265ed9314;p=lyx.git diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp index 403df75032..a023f7a464 100644 --- a/src/insets/InsetERT.cpp +++ b/src/insets/InsetERT.cpp @@ -25,8 +25,10 @@ #include "Lexer.h" #include "LyXAction.h" #include "OutputParams.h" +#include "xml.h" #include "ParagraphParameters.h" #include "Paragraph.h" +#include #include "support/docstream.h" #include "support/gettext.h" @@ -90,25 +92,30 @@ int InsetERT::plaintext(odocstringstream & os, } -int InsetERT::docbook(odocstream & os, OutputParams const &) const +void InsetERT::docbook(XMLStream & xs, OutputParams const & runparams) const { - // FIXME can we do the same thing here as for LaTeX? - ParagraphList::const_iterator par = paragraphs().begin(); - ParagraphList::const_iterator end = paragraphs().end(); + auto const begin = paragraphs().begin(); + auto par = begin; + auto const end = paragraphs().end(); + + odocstringstream os2; + XMLStream xs2(os2); - int lines = 0; + // Recreate the logic of makeParagraphs in output_docbook.cpp, but much simplified: never open + // in an ERT, use simple line breaks. while (par != end) { - pos_type siz = par->size(); - for (pos_type i = 0; i < siz; ++i) - os.put(par->getChar(i)); + par->simpleDocBookOnePar(buffer(), xs2, runparams, text().outerFont(distance(begin, par))); + + // New line after each paragraph of the ERT, save the last one. ++par; - if (par != end) { - os << "\n"; - ++lines; - } + if (par != end) + xs << "\n"; } - return lines; + // Output the ERT as a comment with the appropriate escaping. + xs << XMLStream::ESCAPE_NONE << ""; }