}
// Main logic.
- if (openWrapper)
+ if (openWrapper) {
xml::openTag(xs, lay.docbookwrappertag(), lay.docbookwrapperattr(), lay.docbookwrappertagtype());
+ if (lay.docbookgeneratetitle()) {
+ docstring const label = par->params().labelString();
+
+ xml::openTag(xs, "title", "", "paragraph");
+ xs << (!label.empty() ? label : from_ascii("No title"));
+ xml::closeTag(xs, "title", "paragraph");
+ }
+ }
+
const string & tag = lay.docbooktag();
if (tag != "NONE") {
auto xmltag = xml::ParTag(tag, lay.docbookattr());
std::vector<docstring> pars_prepend;
std::vector<docstring> pars;
std::vector<docstring> pars_append;
- tie(pars_prepend, pars, pars_append) = par->simpleDocBookOnePar(buf, runparams, text.outerFont(std::distance(text.paragraphs().begin(), par)), 0, false, ignoreFonts);
+ tie(pars_prepend, pars, pars_append) =
+ par->simpleDocBookOnePar(buf, runparams, text.outerFont(std::distance(text.paragraphs().begin(), par)),
+ 0, false, ignoreFonts);
for (docstring const & parXML : pars_prepend)
xs << XMLStream::ESCAPE_NONE << parXML;
bool documentHasSections = false;
while (bpit < epit) {
- LASSERT(bpit < paragraphs.size(), return make_tuple(documentHasSections, bpit));
+ LASSERT(static_cast<size_t>(bpit) < paragraphs.size(), return make_tuple(documentHasSections, bpit));
Layout const &style = paragraphs[bpit].layout();
documentHasSections |= isLayoutSectioningOrSimilar(style);
// There should never be any section here, except for the first paragraph (a title can be part of <info>).
// (Just a sanity check: if this fails, this function could end up processing the whole document.)
if (cpit != bpit && isLayoutSectioningOrSimilar(par.layout())) {
- LYXERR0("Assertion failed: section found in potential <info> paragraphs.");
+ LYXERR(Debug::OUTFILE, "Assertion failed: section found in potential <info> paragraphs.");
break;
}
}
}
- // Actually output the abstract if there is something to do. Don't count line feeds or spaces in this,
- // even though they must be properly output if there is some abstract.
+ // Actually output the abstract if there is something to do. Don't count line feeds, spaces, or comments
+ // in this -- even though line feeds and spaces must be properly output if there is some abstract.
abstract = os2.str();
docstring cleaned = abstract;
cleaned.erase(std::remove_if(cleaned.begin(), cleaned.end(), lyx::isSpace), cleaned.end());
+ size_t beginComment;
+ size_t endComment;
+ while ((beginComment = cleaned.find(from_ascii("<!--"))) != lyx::docstring::npos) {
+ if ((endComment = cleaned.find(from_ascii("-->"), beginComment)) != lyx::docstring::npos) {
+ cleaned.erase(cleaned.begin() + beginComment, cleaned.begin() + endComment + 3);
+ }
+ }
+
// Nothing? Then there is no abstract!
if (cleaned.empty())
hasAbstract = false;