[LyX/master] \use_nomentbl -> \nomencl_opts

Juergen Spitzmueller spitz at lyx.org
Thu Aug 22 03:37:13 UTC 2024


commit 0ca600b93b57049819c114f442d7a5138fe10085
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Thu Aug 22 05:35:47 2024 +0200

    \use_nomentbl -> \nomencl_opts
    
    This allows for support of more options
    
    As the param is only a few hours old, no lyx2lyx handling is needed
---
 lib/lyx2lyx/lyx_2_5.py          | 21 +++++++++++----------
 src/Buffer.cpp                  |  1 +
 src/BufferParams.cpp            | 10 ++++++----
 src/BufferParams.h              |  4 ++--
 src/LaTeXFeatures.cpp           |  4 ++--
 src/frontends/qt/GuiIndices.cpp |  5 +++--
 src/insets/InsetNomencl.cpp     |  2 +-
 src/tex2lyx/Preamble.cpp        | 19 ++++---------------
 src/tex2lyx/Preamble.h          |  4 ++--
 src/tex2lyx/text.cpp            |  2 +-
 10 files changed, 33 insertions(+), 39 deletions(-)

diff --git a/lib/lyx2lyx/lyx_2_5.py b/lib/lyx2lyx/lyx_2_5.py
index cd224fe946..74a74339c7 100644
--- a/lib/lyx2lyx/lyx_2_5.py
+++ b/lib/lyx2lyx/lyx_2_5.py
@@ -717,18 +717,23 @@ def revert_index_sc(document):
 def revert_nomentbl(document):
     """Revert nomentbl inset to ERT."""
 
-    i = find_token(document.header, "\\use_nomentbl", 0)
+    # intermediate format
+    i = find_token(document.header, "\\nomencl_options", 0)
     if i == -1:
-        document.warning("Malformed document! Missing \\use_nomentbl")
-        return
-    if get_value(document.header, "\\use_nomentbl", i) == 0:
-        # just remove header
-        del document.header[i]
+        # nothing to do
         return
 
+    opts = get_value(document.header, "\\nomencl_options", i)
     # remove header
     del document.header[i]
 
+    # store options
+    document.append_local_layout([r"### Inserted by lyx2lyx (nomencl) ###",
+                                  r"PackageOptions nomencl %s" % opts])
+
+    if opts.find("nomentbl") == -1:
+        return
+    
     # revert insets to ERT
     have_nomencl = False
     i = 0
@@ -853,10 +858,6 @@ def revert_nomentbl(document):
         document.body[i : j + 1] = res
 
         i += 1
-        
-    if have_nomencl:
-        document.append_local_layout([r"### Inserted by lyx2lyx (nomencl) ###",
-                                      r"PackageOptions nomencl nomentbl"])
 
 
 ##
diff --git a/src/Buffer.cpp b/src/Buffer.cpp
index cdbfe5f0e2..6adafdf18e 100644
--- a/src/Buffer.cpp
+++ b/src/Buffer.cpp
@@ -969,6 +969,7 @@ int Buffer::readHeader(Lexer & lex)
 	params().biblatex_citestyle.erase();
 	params().multibib.erase();
 	params().lineno_opts.clear();
+	params().nomencl_opts.clear();
 	params().spellignore().clear();
 
 	for (int i = 0; i < 4; ++i) {
diff --git a/src/BufferParams.cpp b/src/BufferParams.cpp
index 8f1563e516..f14ae84190 100644
--- a/src/BufferParams.cpp
+++ b/src/BufferParams.cpp
@@ -492,7 +492,6 @@ BufferParams::BufferParams()
 	use_formatted_ref = false;
 	use_minted = false;
 	use_lineno = false;
-	use_nomentbl = false;
 
 	// map current author
 	author_map_[pimpl_->authorlist.get(0).bufferId()] = 0;
@@ -1212,8 +1211,9 @@ string BufferParams::readToken(Lexer & lex, string const & token,
 		lex >> use_formatted_ref;
 	} else if (token == "\\use_minted") {
 		lex >> use_minted;
-	} else if (token == "\\use_nomentbl") {
-		lex >> use_nomentbl;
+	} else if (token == "\\nomencl_options") {
+		lex.eatLine();
+		nomencl_opts = trim(lex.getString());
 	} else if (token == "\\use_lineno") {
 		lex >> use_lineno;
 	} else if (token == "\\lineno_options") {
@@ -1442,13 +1442,15 @@ void BufferParams::writeFile(ostream & os, Buffer const * buf) const
 	   << "\n\\use_refstyle " << use_refstyle
 	   << "\n\\use_formatted_ref " << use_formatted_ref
 	   << "\n\\use_minted " << use_minted
-	   << "\n\\use_nomentbl " << use_nomentbl
 	   << "\n\\use_lineno " << use_lineno
 	   << '\n';
 
 	if (!lineno_opts.empty())
 		os << "\\lineno_options " << lineno_opts << '\n';
 
+	if (!nomencl_opts.empty())
+		os << "\\nomencl_options " << nomencl_opts << '\n';
+
 	if (isbackgroundcolor)
 		os << "\\backgroundcolor " << lyx::X11hexname(backgroundcolor) << '\n';
 	if (isfontcolor)
diff --git a/src/BufferParams.h b/src/BufferParams.h
index bef948330c..d7400e2f36 100644
--- a/src/BufferParams.h
+++ b/src/BufferParams.h
@@ -623,8 +623,8 @@ public:
 	bool use_lineno;
 	/// optional params for lineno package
 	std::string lineno_opts;
-	/// use nomentbl nomenclature sty
-	bool use_nomentbl;
+	/// options for nomencl package
+	std::string nomencl_opts;
 
 	/// Return true if language could be set to lang,
 	/// otherwise return false and do not change language
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index b423437269..a6fc73ecc9 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -1498,8 +1498,8 @@ string const LaTeXFeatures::getPackages() const
 
 	if (mustProvide("nomencl")) {
 		packages << "\\usepackage";
-		if (params_.use_nomentbl)
-			packages << "[nomentbl]";
+		if (!params_.nomencl_opts.empty())
+			packages << "[" << params_.nomencl_opts << "]";
 		packages << "{nomencl}\n";
 		// Make it work with the new and old version of the package,
 		// but don't use the compatibility option since it is
diff --git a/src/frontends/qt/GuiIndices.cpp b/src/frontends/qt/GuiIndices.cpp
index 2c3a0d78ce..f6003ec399 100644
--- a/src/frontends/qt/GuiIndices.cpp
+++ b/src/frontends/qt/GuiIndices.cpp
@@ -119,7 +119,7 @@ void GuiIndices::update(BufferParams const & params, bool const readonly)
 		indexOptionsLE->clear();
 	}
 
-	pos = (params.use_nomentbl) ? 1 : 0;
+	pos = (contains(params.nomencl_opts, "nomentbl")) ? 1 : 0;
 	nomenclStyleCO->setCurrentIndex(pos);
 
 	updateView();
@@ -169,7 +169,8 @@ void GuiIndices::apply(BufferParams & params) const
 	params.use_indices = multipleIndicesCB->isChecked();
 	params.indiceslist() = indiceslist_;
 
-	params.use_nomentbl = nomenclStyleCO->currentIndex() == 1;
+	if (nomenclStyleCO->currentIndex() == 1)
+		params.nomencl_opts = "nomentbl";
 
 	string const index_command =
 		fromqstr(indexCO->itemData(
diff --git a/src/insets/InsetNomencl.cpp b/src/insets/InsetNomencl.cpp
index 4baa29ecfc..d694a166b7 100644
--- a/src/insets/InsetNomencl.cpp
+++ b/src/insets/InsetNomencl.cpp
@@ -154,7 +154,7 @@ void InsetNomencl::addToToc(DocIterator const & cpit, bool output_active,
 
 docstring InsetNomencl::layoutName() const
 {
-	return (buffer().params().use_nomentbl) ?
+	return (contains(buffer().params().nomencl_opts, "nomentbl")) ?
 				from_ascii("Nomenclature:nomentbl")
 			      : from_ascii("Nomenclature");
 }
diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp
index cb57d9115c..7802eae0b5 100644
--- a/src/tex2lyx/Preamble.cpp
+++ b/src/tex2lyx/Preamble.cpp
@@ -616,7 +616,6 @@ Preamble::Preamble() : one_language(true), explicit_babel(false),
 	h_use_lineno              = "false";
 	h_use_refstyle            = false;
 	h_use_minted              = false;
-	h_use_nomentbl            = false;
 	h_use_packages["amsmath"]    = "1";
 	h_use_packages["amssymb"]    = "0";
 	h_use_packages["cancel"]     = "0";
@@ -1780,19 +1779,8 @@ void Preamble::handle_package(Parser &p, string const & name,
 	}
 
 	else if (name == "nomencl") {
-		vector<string>::iterator it =
-			find(options.begin(), options.end(), "nomentbl");
-		if (it != options.end()) {
-			h_use_nomentbl = true;
-			options.erase(it);
-		}
-		// Add the package options to the global document options
-		if (!options.empty()) {
-			if (h_options.empty())
-				h_options = join(options, ",");
-			else
-				h_options += ',' + join(options, ",");
-		}
+		h_nomencl_options = join(options, ",");
+		options.clear();
 	}
 
 	else if (name == "geometry")
@@ -2124,10 +2112,11 @@ bool Preamble::writeLyXHeader(ostream & os, bool subdoc, string const & outfiled
 	   << "\\justification " << h_justification << '\n'
 	   << "\\use_refstyle " << h_use_refstyle << '\n'
 	   << "\\use_minted " << h_use_minted << '\n'
-	   << "\\use_nomentbl " << h_use_nomentbl << '\n'
 	   << "\\use_lineno " << h_use_lineno << '\n';
 	if (!h_lineno_options.empty())
 		os << "\\lineno_options " << h_lineno_options << '\n';
+	if (!h_nomencl_options.empty())
+		os << "\\nomencl_options " << h_nomencl_options << '\n';
 	if (!h_fontcolor.empty())
 		os << "\\fontcolor " << h_fontcolor << '\n';
 	if (!h_notefontcolor.empty())
diff --git a/src/tex2lyx/Preamble.h b/src/tex2lyx/Preamble.h
index 9177784771..01d29fcf54 100644
--- a/src/tex2lyx/Preamble.h
+++ b/src/tex2lyx/Preamble.h
@@ -51,7 +51,7 @@ public:
 	///
 	bool minted() const { return h_use_minted; }
 	///
-	bool nomentbl() const { return h_use_nomentbl; }
+	std::string nomenclOpts() const { return h_nomencl_options; }
 	/// The document language
 	std::string docLanguage() const { return h_language; }
 	/// The language of text which is not explicitly marked
@@ -257,7 +257,7 @@ private:
 	std::vector<std::string> h_includeonlys;
 	bool h_use_refstyle;
 	bool h_use_minted;
-	bool h_use_nomentbl;
+	std::string h_nomencl_options;
 
 	/*!
 	 * Add package \p name with options \p options to used_packages.
diff --git a/src/tex2lyx/text.cpp b/src/tex2lyx/text.cpp
index ee40d4a1ef..688286b710 100644
--- a/src/tex2lyx/text.cpp
+++ b/src/tex2lyx/text.cpp
@@ -5010,7 +5010,7 @@ void parse_text(Parser & p, ostream & os, unsigned flags, bool outer,
 			set<string> pass_thru_cmds = context.pass_thru_cmds;
 			// These commands have special meanings in Nomenclature
 			context.pass_thru_cmds.insert("%");
-			if (preamble.nomentbl())
+			if (contains(preamble.nomenclOpts(), "nomentbl"))
 				parse_text_in_inset(p, os, FLAG_ITEM, outer, context, "Nomenclature:nomentbl");
 			else
 				parse_text_in_inset(p, os, FLAG_ITEM, outer, context, "Nomenclature");


More information about the lyx-cvs mailing list