commit 3e6a1eecc5f64997a1f211b56257493051da0a90
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Sun Mar 4 16:45:37 2018 +0100

    tex2lyx: consider options passed via \PassOptionsToPackage
    
    (cherry picked from commit 476401a76f8bdb3dd2c2a482b2088f00dbe501d9)
---
 src/tex2lyx/Preamble.cpp |   17 +++++++++++++++++
 src/tex2lyx/Preamble.h   |    2 ++
 status.23x               |    2 ++
 3 files changed, 21 insertions(+), 0 deletions(-)

diff --git a/src/tex2lyx/Preamble.cpp b/src/tex2lyx/Preamble.cpp
index fe722f4..1cff58d 100644
--- a/src/tex2lyx/Preamble.cpp
+++ b/src/tex2lyx/Preamble.cpp
@@ -418,6 +418,15 @@ void Preamble::add_package(string const & name, 
vector<string> & options)
        if (used_packages.find(name) == used_packages.end())
                used_packages[name] = split_options(h_options);
 
+       // Insert options passed via PassOptionsToPackage
+       for (auto const & p : extra_package_options_) {
+               if (p.first == name) {
+                       vector<string> eo = getVectorFromString(p.second);
+                       for (auto const & eoi : eo)
+                               options.push_back(eoi);
+               }
+
+       }
        vector<string> & v = used_packages[name];
        v.insert(v.end(), options.begin(), options.end());
        if (name == "jurabib") {
@@ -1033,6 +1042,8 @@ void Preamble::handle_package(Parser &p, string const & 
name,
                                options.erase(it);
                        }
                }
+               if (!options.empty())
+                       h_biblio_options = join(options, ",");
        }
 
        else if (name == "jurabib") {
@@ -1407,6 +1418,12 @@ void Preamble::parse(Parser & p, string const & 
forceclass,
                                h_preamble << t.asInput();
                }
 
+               else if (t.cs() == "PassOptionsToPackage") {
+                       string const poptions = p.getArg('{', '}');
+                       string const package = p.verbatim_item();
+                       extra_package_options_.insert(make_pair(package, 
poptions));
+               }
+
                else if (t.cs() == "pagestyle")
                        h_paperpagestyle = p.verbatim_item();
 
diff --git a/src/tex2lyx/Preamble.h b/src/tex2lyx/Preamble.h
index 5dcc671..288dd87 100644
--- a/src/tex2lyx/Preamble.h
+++ b/src/tex2lyx/Preamble.h
@@ -241,6 +241,8 @@ private:
        AuthorList authors_;
        /// special table column types
        std::map<char, int> special_columns_;
+       ///
+       std::map<std::string, std::string> extra_package_options_;
 };
 
 
diff --git a/status.23x b/status.23x
index cff2cb4..d8efc4f 100644
--- a/status.23x
+++ b/status.23x
@@ -99,6 +99,8 @@ What's new
 
 - Import straight quotations marks (e.g. babel shorthands) as ERT (bug 75).
 
+- Consider options passed via \PassOptionsToPackage.
+
 
 * ADVANCED FIND AND REPLACE
 

Reply via email to