X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Finsets%2FInsetText.cpp;h=10b15c88edad34abd39a31fb90b9223ff2700e91;hb=48b1e8a0aca2f3f3faa8f1f800568e47792ba9a0;hp=aeb4c43d6ba9192285fa9b2bd2ac490da1781dcf;hpb=0bddf448ef5756eee90c771ff3277dd805b2b0a3;p=lyx.git diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index aeb4c43d6b..10b15c88ed 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -38,14 +38,13 @@ #include "MetricsInfo.h" #include "output_docbook.h" #include "output_latex.h" +#include "output_plaintext.h" #include "output_xhtml.h" #include "OutputParams.h" -#include "output_plaintext.h" #include "Paragraph.h" #include "ParagraphParameters.h" #include "ParIterator.h" #include "Row.h" -#include "xml.h" #include "TexRow.h" #include "texstream.h" #include "TextClass.h" @@ -589,20 +588,52 @@ int InsetText::plaintext(odocstringstream & os, } -int InsetText::docbook(odocstream & os, OutputParams const & runparams) const + +void InsetText::docbook(XMLStream & xs, OutputParams const & rp) const +{ + docbook(xs, rp, WriteEverything); +} + + +void InsetText::docbook(XMLStream & xs, OutputParams const & rp, XHTMLOptions opts) const { - ParagraphList::const_iterator const beg = paragraphs().begin(); + // we will always want to output all our paragraphs when we are + // called this way. + OutputParams runparams = rp; + runparams.par_begin = 0; + runparams.par_end = text().paragraphs().size(); + + if (undefined()) { + xs.startDivision(false); + docbookParagraphs(text_, buffer(), xs, runparams); + xs.endDivision(); + return; + } + + InsetLayout const & il = getLayout(); + if (opts & WriteOuterTag && !il.docbooktag().empty() && il.docbooktag() != "NONE") { + docstring attrs = docstring(); + if (!il.docbookattr().empty()) + attrs += from_ascii(il.docbookattr()); + if (il.docbooktag() == "link") + attrs += from_ascii(" xlink:href=\"") + text_.asString() + from_ascii("\""); + xs << xml::StartTag(il.docbooktag(), attrs); + } - if (!undefined()) - xml::openTag(os, getLayout().latexname(), - beg->getID(buffer(), runparams) + getLayout().latexparam()); + // No need for labels that are generated from counters. - docbookParagraphs(text_, buffer(), os, runparams); + // With respect to XHTML, paragraphs are still allowed here. + if (!allowMultiPar()) + runparams.docbook_make_pars = false; + if (il.isPassThru()) + runparams.pass_thru = true; - if (!undefined()) - xml::closeTag(os, getLayout().latexname()); + xs.startDivision(false); + docbookParagraphs(text_, buffer(), xs, runparams); + xs.endDivision(); - return 0; + if (opts & WriteOuterTag) + xs << xml::EndTag(il.docbooktag()); } @@ -842,6 +873,14 @@ void InsetText::updateBuffer(ParIterator const & it, UpdateType utype, bool cons // Record in this inset is embedded in a title layout // This is needed to decide when \maketitle is output. intitle_context_ = it.paragraph().layout().intitle; + // Also check embedding layouts + size_t const n = it.depth(); + for (size_t i = 0; i < n; ++i) { + if (it[i].paragraph().layout().intitle) { + intitle_context_ = true; + break; + } + } } else { DocumentClass const & tclass = buffer().masterBuffer()->params().documentClass(); // Note that we do not need to call: