]> git.lyx.org Git - lyx.git/blobdiff - src/output_docbook.C
Fix #1736
[lyx.git] / src / output_docbook.C
index 69e04977d02917473ddbfda7e6da037f8ab91a83..ead3b3cc31d11edb5c9c5bc35d2202cc61a8717f 100644 (file)
@@ -102,11 +102,16 @@ ParagraphList::const_iterator makeParagraph(Buffer const & buf,
                                            ParagraphList::const_iterator const & pbegin,
                                            ParagraphList::const_iterator const & pend)
 {
+       LyXLayout_ptr const & defaultstyle = buf.params().getLyXTextClass().defaultLayout();
        for(ParagraphList::const_iterator par = pbegin; par != pend; ++par) {
-               sgml::openTag(buf, os, *par);
-               par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs));
-               sgml::closeTag(os, *par);
-               os << '\n';
+               if (par->layout() == defaultstyle && par->emptyTag()) {
+                       par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs));
+               } else {
+                       sgml::openTag(buf, os, runparams, *par);
+                       par->simpleDocBookOnePar(buf, os, runparams, outerFont(par - paragraphs.begin(), paragraphs));
+                       sgml::closeTag(os, *par);
+                       os << '\n';
+               }
        }
        return pend;
 }
@@ -125,22 +130,22 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
        string item_tag;
 
        // Opening outter tag
-       sgml::openTag(buf, os, *pbegin);
+       sgml::openTag(buf, os, runparams, *pbegin);
        os << '\n';
-       if (bstyle->latextype == LATEX_ENVIRONMENT and bstyle->innertag() == "CDATA")
+       if (bstyle->latextype == LATEX_ENVIRONMENT and bstyle->pass_thru)
                os << "<![CDATA[";
 
        while (par != pend) {
                LyXLayout_ptr const & style = par->layout();
                ParagraphList::const_iterator send;
-               string id = par->getID();
+               string id = par->getID(buf, runparams);
                string wrapper = "";
                pos_type sep = 0;
 
                // Opening inner tag
                switch (bstyle->latextype) {
                case LATEX_ENVIRONMENT:
-                       if (!bstyle->innertag().empty() and bstyle->innertag() != "CDATA") {
+                       if (!bstyle->innertag().empty()) {
                                sgml::openTag(os, bstyle->innertag(), id);
                        }
                        break;
@@ -184,7 +189,7 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
                // Closing inner tag
                switch (bstyle->latextype) {
                case LATEX_ENVIRONMENT:
-                       if (!bstyle->innertag().empty() and bstyle->innertag() != "CDATA") {
+                       if (!bstyle->innertag().empty()) {
                                sgml::closeTag(os, bstyle->innertag());
                                os << '\n';
                        }
@@ -199,7 +204,7 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf,
                }
        }
 
-       if (bstyle->latextype == LATEX_ENVIRONMENT and bstyle->innertag() == "CDATA")
+       if (bstyle->latextype == LATEX_ENVIRONMENT and bstyle->pass_thru)
                os << "]]>";
 
        // Closing outter tag
@@ -220,7 +225,7 @@ ParagraphList::const_iterator makeCommand(Buffer const & buf,
        LyXLayout_ptr const & bstyle = par->layout();
 
        //Open outter tag
-       sgml::openTag(buf, os, *pbegin);
+       sgml::openTag(buf, os, runparams, *pbegin);
        os << '\n';
 
        // Label around sectioning number: