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::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 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 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");