From 0ed820fa0b8ea11a390c182286c5b34a2686058a Mon Sep 17 00:00:00 2001 From: Thibaut Cuvelier Date: Sun, 15 Nov 2020 18:43:14 +0100 Subject: [PATCH] DocBook: fix for nomenclature xml:id and glossary paragraphs. Previously, the xml:id's were not consistent among in the text and in the glossary. --- development/autotests/invertedTests | 2 ++ src/insets/InsetNomencl.cpp | 8 +++----- src/insets/InsetNomencl.h | 3 --- src/output_docbook.cpp | 6 +++++- 4 files changed, 10 insertions(+), 9 deletions(-) diff --git a/development/autotests/invertedTests b/development/autotests/invertedTests index 22e481a9e2..f2faf03b2b 100644 --- a/development/autotests/invertedTests +++ b/development/autotests/invertedTests @@ -497,6 +497,8 @@ export/examples(|/de)/Curricula_Vitae/Europe_CV_docbook5 export/examples(|/es)/Curricula_Vitae/Modern_CV_docbook5 # - Chess: multicol not supported. export/examples/Modules/Chessboard_docbook5 +# - Empty figure and table (just a caption, while DocBook requires some content). +export/examples/Localization_Test_docbook5 Sublabel: docbook poster # Posters cannot be properly exported, the LyX documents are too far from diff --git a/src/insets/InsetNomencl.cpp b/src/insets/InsetNomencl.cpp index 5e3c637a60..0e04ca6c25 100644 --- a/src/insets/InsetNomencl.cpp +++ b/src/insets/InsetNomencl.cpp @@ -53,8 +53,7 @@ namespace lyx { ///////////////////////////////////////////////////////////////////// InsetNomencl::InsetNomencl(Buffer * buf, InsetCommandParams const & p) - : InsetCommand(buf, p), - nomenclature_entry_id(xml::uniqueID(from_ascii("nomen"))) + : InsetCommand(buf, p) {} @@ -106,7 +105,7 @@ int InsetNomencl::plaintext(odocstringstream & os, void InsetNomencl::docbook(XMLStream & xs, OutputParams const &) const { - docstring attr = "linkend=\"" + nomenclature_entry_id + "\""; + docstring attr = "linkend=\"" + xml::cleanID(from_ascii("nomen") + getParam("symbol")) + "\""; xs << xml::StartTag("glossterm", attr); xs << xml::escapeString(getParam("symbol")); xs << xml::EndTag("glossterm"); @@ -348,9 +347,8 @@ void InsetPrintNomencl::docbook(XMLStream & xs, OutputParams const & runparams) EntryMap::const_iterator const een = entries.end(); for (; eit != een; ++eit) { NomenclEntry const & ne = eit->second; - string const parid = ne.par->magicLabel(); - xs << xml::StartTag("glossentry", "xml:id=\"" + parid + "\""); + xs << xml::StartTag("glossentry", "xml:id=\"" + xml::cleanID(from_ascii("nomen") + ne.symbol) + "\""); xs << xml::CR(); xs << xml::StartTag("glossterm"); xs << ne.symbol; diff --git a/src/insets/InsetNomencl.h b/src/insets/InsetNomencl.h index 144064977a..1778e01dab 100644 --- a/src/insets/InsetNomencl.h +++ b/src/insets/InsetNomencl.h @@ -73,9 +73,6 @@ private: /// docstring screenLabel() const override; //@} - - /// unique id for this nomenclature entry for docbook export - docstring nomenclature_entry_id; }; diff --git a/src/output_docbook.cpp b/src/output_docbook.cpp index d25d85f573..b43d2b0b58 100644 --- a/src/output_docbook.cpp +++ b/src/output_docbook.cpp @@ -458,7 +458,7 @@ void makeParagraph( special_case |= nInsets == (size_t) par->size() && std::all_of(par->insetList().begin(), par->insetList().end(), [](InsetList::Element inset) { return inset.inset && inset.inset->asInsetMath() && inset.inset->asInsetMath()->getType() != hullSimple; }); - // Tables doe not deserve their own paragraphs (DocBook allows them outside paragraphs). + // Tables do not deserve their own paragraphs (DocBook allows them outside paragraphs). special_case |= nInsets == (size_t) par->size() && std::all_of(par->insetList().begin(), par->insetList().end(), [](InsetList::Element inset) { return inset.inset->lyxCode() == TABULAR_CODE; }); @@ -487,6 +487,10 @@ void makeParagraph( special_case |= nInsets == (size_t) par->size() && std::all_of(par->insetList().begin(), par->insetList().end(), [](InsetList::Element inset) { return inset.inset->lyxCode() == INCLUDE_CODE; }); + // Glossaries should not have a paragraph. + special_case |= nInsets == (size_t) par->size() && std::all_of(par->insetList().begin(), par->insetList().end(), [](InsetList::Element inset) { + return inset.inset->lyxCode() == NOMENCL_PRINT_CODE; + }); bool const open_par = runparams.docbook_make_pars && !runparams.docbook_in_par -- 2.39.5