From efa3955204ed0773da3f242280d67874e6983bf8 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Jos=C3=A9=20Matox?= Date: Mon, 29 Jan 2007 20:28:44 +0000 Subject: [PATCH] Fix bug 2841 git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@16938 a592a061-630c-0410-9148-cb99ea01b6c8 --- lib/generate_contributions.py | 8 ++++++++ src/output_docbook.C | 20 ++++++++++++++++++-- 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/lib/generate_contributions.py b/lib/generate_contributions.py index a75f75d8fa..a3c08a33ee 100755 --- a/lib/generate_contributions.py +++ b/lib/generate_contributions.py @@ -641,6 +641,14 @@ contributers = [ "22 February 2005", u"Fix to a very hard-to-find egcs bug that crashed LyX on alpha architecture"), + contributer(u"Harshula Jayasuriya", + "harshula () gmail ! com", + "GPL", + "Re: Bug in export to DocBook", + "m=116884249725701", + "15 January 2007", + u"Fix docbook generation of nested lists"), + contributer(u"David L. Johnson", "david.johnson () lehigh ! edu", "GPL", diff --git a/src/output_docbook.C b/src/output_docbook.C index cb5ec45481..2778dde86e 100644 --- a/src/output_docbook.C +++ b/src/output_docbook.C @@ -167,7 +167,13 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf, sgml::closeTag(os, bstyle->labeltag()); } wrapper = defaultstyle->latexname(); - sgml::openTag(os, bstyle->itemtag()); + // If a sub list (embedded list) appears next with a + // different depth, then there is no need to open + // another tag at the current depth. + if(par->params().depth() == pbegin->params().depth()) { + sgml::openTag(os, bstyle->itemtag()); + } + break; default: break; } @@ -204,7 +210,17 @@ ParagraphList::const_iterator makeEnvironment(Buffer const & buf, } break; case LATEX_ITEM_ENVIRONMENT: - sgml::closeTag(os, bstyle->itemtag()); + // If a sub list (embedded list) appears next, then + // there is no need to close the current tag. + // par should have already been incremented to the next + // element. So we can compare the depth of the next + // element with pbegin. + // We need to be careful, that we don't dereference par + // when par == pend but at the same time that the + // current tag is closed. + if((par != pend && par->params().depth() == pbegin->params().depth()) || par == pend) { + sgml::closeTag(os, bstyle->itemtag()); + } if (!bstyle->labeltag().empty()) sgml::closeTag(os, bstyle->innertag()); break; -- 2.39.2