+ }
+ }
+
+ if (bstyle->latextype == LATEX_ENVIRONMENT && bstyle->pass_thru)
+ os << "]]>";
+
+ // Closing outter tag
+ sgml::closeTag(os, *pbegin);
+
+ return pend;
+}
+
+
+ParagraphList::const_iterator makeCommand(Buffer const & buf,
+ odocstream & os,
+ OutputParams const & runparams,
+ ParagraphList const & paragraphs,
+ ParagraphList::const_iterator const & pbegin,
+ ParagraphList::const_iterator const & pend)
+{
+ ParagraphList::const_iterator par = pbegin;
+ LyXLayout_ptr const & bstyle = par->layout();
+
+ //Open outter tag
+ sgml::openTag(buf, os, runparams, *pbegin);
+ os << '\n';
+
+ // Label around sectioning number:
+ if (!bstyle->labeltag().empty()) {
+ sgml::openTag(os, bstyle->labeltag());
+ // We don't care about appendix in DOCBOOK.
+ os << par->expandLabel(bstyle, buf.params(), false);
+ sgml::closeTag(os, bstyle->labeltag());
+ }
+
+ // Opend inner tag and close inner tags
+ sgml::openTag(os, bstyle->innertag());
+ par->simpleDocBookOnePar(buf, os, runparams, outerFont(std::distance(paragraphs.begin(), par), paragraphs));
+ sgml::closeTag(os, bstyle->innertag());
+ os << '\n';
+
+ ++par;
+ while (par != pend) {
+ LyXLayout_ptr const & style = par->layout();
+ ParagraphList::const_iterator send;
+
+ switch (style->latextype) {
+ case LATEX_COMMAND: {
+ send = searchCommand(par, pend);
+ par = makeCommand(buf, os, runparams, paragraphs, par,send);
+ break;
+ }
+ case LATEX_ENVIRONMENT:
+ case LATEX_ITEM_ENVIRONMENT: {
+ send = searchEnvironment(par, pend);
+ par = makeEnvironment(buf, os, runparams, paragraphs, par,send);
+ break;
+ }