[LyX/master] DocBook: make empty bibliographies empty.

Thibaut Cuvelier tcuvelier at lyx.org
Thu Nov 26 05:26:09 UTC 2020


commit eaf94609092b35872872fb36a19ff34d5e883ef7
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Thu Nov 26 06:52:21 2020 +0100

    DocBook: make empty bibliographies empty.
    
    Even though this means that there is no output tag.
---
 src/insets/InsetBibtex.cpp |   15 +++++++++------
 1 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/src/insets/InsetBibtex.cpp b/src/insets/InsetBibtex.cpp
index 469429d..1df9928 100644
--- a/src/insets/InsetBibtex.cpp
+++ b/src/insets/InsetBibtex.cpp
@@ -1089,6 +1089,13 @@ void InsetBibtex::docbook(XMLStream & xs, OutputParams const &) const
 
 	docstring const reflabel = buffer().B_("References");
 
+	// Check that the bibliography is not empty, to ensure that the document is valid.
+	if (cites.empty()) {
+		xs << XMLStream::ESCAPE_NONE << "<!-- The bibliography is empty! -->";
+		xs << xml::CR();
+		return;
+	}
+
 	// Tell BiblioInfo our purpose (i.e. generate HTML rich text).
 	CiteItem ci;
 	ci.context = CiteItem::Export;
@@ -1100,7 +1107,8 @@ void InsetBibtex::docbook(XMLStream & xs, OutputParams const &) const
 	xs << xml::CR();
 	xs << xml::StartTag("title");
 	xs << reflabel;
-	xs << xml::EndTag("title") << xml::CR();
+	xs << xml::EndTag("title");
+	xs << xml::CR();
 
 	// Translation between keys in each entry and DocBook tags.
 	// IDs for publications; list: http://tdg.docbook.org/tdg/5.2/biblioid.html.
@@ -1156,11 +1164,6 @@ void InsetBibtex::docbook(XMLStream & xs, OutputParams const &) const
 	auto vit = cites.begin();
 	auto ven = cites.end();
 
-	if (vit == ven) {
-		xs << XMLStream::ESCAPE_NONE << "<!-- No entry in the bibliography. -->";
-		xs << xml::CR();
-	}
-
 	for (; vit != ven; ++vit) {
 		auto const biit = bibinfo.find(*vit);
 		if (biit == bibinfo.end())


More information about the lyx-cvs mailing list