[LyX/master] DocBook: don't force outputting an <abstract> when it would only contain comments.

Thibaut Cuvelier tcuvelier at lyx.org
Sun Feb 6 05:13:49 UTC 2022


commit 643cbfe557a61cef62a9c4c19c80029735f8bd4b
Author: Thibaut Cuvelier <tcuvelier at lyx.org>
Date:   Sun Feb 6 06:44:29 2022 +0100

    DocBook: don't force outputting an <abstract> when it would only contain comments.
    
    Before this patch, LyX would forcibly create an <abstract> tag even when there was no abstract in the document; this behaviour is sometimes desirable, but not when the abstract only contains comments (that's not valid DocBook: there must be a paragraph or assimilated within the abstract).
---
 src/output_docbook.cpp |   12 ++++++++++--
 1 files changed, 10 insertions(+), 2 deletions(-)

diff --git a/src/output_docbook.cpp b/src/output_docbook.cpp
index 71d3b83..5458e7a 100644
--- a/src/output_docbook.cpp
+++ b/src/output_docbook.cpp
@@ -1020,12 +1020,20 @@ void outputDocBookInfo(
 			}
 		}
 
-		// 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;


More information about the lyx-cvs mailing list