From 78a361778f2ca7cc18e9a5fa6deb20694a9150e5 Mon Sep 17 00:00:00 2001 From: Thibaut Cuvelier Date: Sat, 29 Aug 2020 22:58:23 +0200 Subject: [PATCH 1/1] DocBook: fix float tags (was unduly overridden). The output was not valid for floats without title. --- CMakeLists.txt | 5 +++++ autotests/export/docbook/basic.xml | 4 ++-- lib/layouts/stdfloats.inc | 3 --- src/Floating.cpp | 25 ++++++++++--------------- src/Floating.h | 6 +++--- src/insets/InsetFloat.cpp | 2 +- src/mathed/InsetMathHull.cpp | 2 +- 7 files changed, 22 insertions(+), 25 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d3aa1928fb..90853559a8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,6 +6,11 @@ cmake_minimum_required(VERSION 3.1.0) +set(CMAKE_CXX_STANDARD 20) +set(GNUWIN32_DIR D:/LyX/lyx-unstable/lyx-windows-deps-msvc2017) +set(LYX_USE_QT "QT5") +set(LYX_REQUIRE_SPELLCHECK true) + set(LYX_PROJECT LyX) # Instruct cmake to not use gnu extensions, diff --git a/autotests/export/docbook/basic.xml b/autotests/export/docbook/basic.xml index 430611e490..a4dc276551 100644 --- a/autotests/export/docbook/basic.xml +++ b/autotests/export/docbook/basic.xml @@ -164,7 +164,7 @@ I am a second line of code. - + @@ -182,7 +182,7 @@ I am a second line of code. -
Table that has no caption 1Col 3, row 2
+ Then, one figure:
diff --git a/lib/layouts/stdfloats.inc b/lib/layouts/stdfloats.inc index cd6614a8da..044fcb2c5c 100644 --- a/lib/layouts/stdfloats.inc +++ b/lib/layouts/stdfloats.inc @@ -20,7 +20,6 @@ Float UsesFloatPkg false ListCommand listoftables RefPrefix tab - DocBookTag table End @@ -36,7 +35,6 @@ Float UsesFloatPkg false ListCommand listoffigures RefPrefix fig - DocBookTag figure End @@ -51,7 +49,6 @@ Float IsPredefined false UsesFloatPkg true RefPrefix alg - DocBookTag figure # TODO: No DocBook tag really corresponds... End diff --git a/src/Floating.cpp b/src/Floating.cpp index d44afc3a73..19fbf5f49b 100644 --- a/src/Floating.cpp +++ b/src/Floating.cpp @@ -40,8 +40,7 @@ Floating::Floating(string const & type, string const & placement, usesfloatpkg_(usesfloat), ispredefined_(ispredefined), allowswide_(allowswide), allowssideways_(allowssideways), html_tag_(htmlTag), html_attrib_(htmlAttrib), html_style_(htmlStyle), - docbook_tag_(docbookTag), docbook_attr_(docbookAttr), - docbook_tag_type_(docbookTagType) + docbook_attr_(docbookAttr), docbook_tag_type_(docbookTagType) {} @@ -89,21 +88,17 @@ string const & Floating::docbookAttr() const } -string const & Floating::docbookTag(bool hasTitle) const +string Floating::docbookTag(bool hasTitle) const { - if (docbook_tag_.empty()) { - docbook_tag_ = ""; - if (floattype_ == "figure") { - docbook_tag_ = hasTitle ? "figure" : "informalfigure"; - } else if (floattype_ == "table") { - docbook_tag_ = hasTitle ? "table" : "informaltable"; - } else if (floattype_ == "algorithm") { - // TODO: no good translation for now! Figures are the closest match, as they can contain text. - // Solvable as soon as https://github.com/docbook/docbook/issues/157 has a definitive answer. - docbook_tag_ = "figure"; - } + if (floattype_ == "figure") { + return hasTitle ? "figure" : "informalfigure"; + } else if (floattype_ == "table") { + return hasTitle ? "table" : "informaltable"; + } else if (floattype_ == "algorithm") { + // TODO: no good translation for now! Figures are the closest match, as they can contain text. + // Solvable as soon as https://github.com/docbook/docbook/issues/157 has a definitive answer. + return "figure"; } - return docbook_tag_; } diff --git a/src/Floating.h b/src/Floating.h index 5cfea080e6..977958bc15 100644 --- a/src/Floating.h +++ b/src/Floating.h @@ -81,7 +81,7 @@ public: /// tag type, defaults to "div" std::string const & htmlTag() const; /// - std::string const & docbookTag(bool hasTitle = false) const; + std::string docbookTag(bool hasTitle = false) const; /// std::string const & docbookAttr() const; /// @@ -129,8 +129,8 @@ private: mutable std::string defaultcssclass_; /// docstring html_style_; - /// DocBook tag - mutable std::string docbook_tag_; + // There is no way to override the DocBook tag based on the layouts: half of it is determined by whether the float + // has a title or not, an information that is not available in the layouts. /// attribute (mostly, role) mutable std::string docbook_caption_; /// caption tag (mostly, either caption or title) diff --git a/src/insets/InsetFloat.cpp b/src/insets/InsetFloat.cpp index 24e06b548c..86bcf9d474 100644 --- a/src/insets/InsetFloat.cpp +++ b/src/insets/InsetFloat.cpp @@ -654,7 +654,7 @@ void docbookNoSubfigures(XMLStream & xs, OutputParams const & runparams, const I xs << xml::StartTag(ftype.docbookTag(caption != nullptr), attr); xs << xml::CR(); - if (caption != nullptr) { + if (caption) { xs << xml::StartTag(titleTag); caption->getCaptionAsDocBook(xs, rpNoLabel); xs << xml::EndTag(titleTag); diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp index 5847121069..af30e8eea7 100644 --- a/src/mathed/InsetMathHull.cpp +++ b/src/mathed/InsetMathHull.cpp @@ -2429,7 +2429,7 @@ void InsetMathHull::docbook(XMLStream & xs, OutputParams const & runparams) cons } // DocBook also has , but it comes with a title. - // TODO: recognise \tag from amsmath? + // TODO: recognise \tag from amsmath? This would allow having with a proper title. docstring attr; for (row_type i = 0; i < nrows(); ++i) { -- 2.39.2