The branch, master, has been updated.

- Log -----------------------------------------------------------------

commit 1230372566dc571fbf76adca00453d2c6009d52b
Author: Richard Heck <rgh...@lyx.org>
Date:   Thu May 23 09:25:40 2013 -0400

    Add support for package options in layout files. E.g.:
               PackageOption tipa safe will load tipa with the
     "safe" option, if we load it.

diff --git a/lib/doc/Customization.lyx b/lib/doc/Customization.lyx
index 6059c60..3a9abd7 100644
--- a/lib/doc/Customization.lyx
+++ b/lib/doc/Customization.lyx
@@ -1,5 +1,5 @@
 #LyX 2.1 created this file. For more info see http://www.lyx.org/
-\lyxformat 470
+\lyxformat 471
 \begin_document
 \begin_header
 \textclass scrbook
@@ -110,7 +110,7 @@ End
 \use_package stmaryrd 0
 \use_package undertilde 0
 \cite_engine basic
-\cite_engine_type numerical
+\cite_engine_type default
 \biblio_style plain
 \use_bibtopic false
 \use_indices false
@@ -9437,6 +9437,134 @@ literate
 \end_inset
 
 ] Specifies what sort of output documents using this class will produce.
+\change_inserted 1414654397 1369315909
+
+\end_layout
+
+\begin_layout Description
+
+\change_inserted 1414654397 1369316059
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted 1414654397 1369315915
+PackageOptions
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted 1414654397 1369315909
+string
+\end_layout
+
+\end_inset
+
+ 
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted 1414654397 1369315919
+string
+\end_layout
+
+\end_inset
+
+] Specifies options, given in the second string, for the package named by
+ the first string.
+ For example, 
+\begin_inset Quotes eld
+\end_inset
+
+
+\begin_inset Flex Code
+status open
+
+\begin_layout Plain Layout
+
+\change_inserted 1414654397 1369315957
+PackageOptions natbib square
+\change_unchanged
+
+\end_layout
+
+\end_inset
+
+
+\begin_inset Quotes erd
+\end_inset
+
+ will cause 
+\begin_inset Flex Code
+status open
+
+\begin_layout Plain Layout
+
+\change_inserted 1414654397 1369315966
+natbib
+\change_unchanged
+
+\end_layout
+
+\end_inset
+
+ to be loaded with the 
+\begin_inset Flex Code
+status open
+
+\begin_layout Plain Layout
+
+\change_inserted 1414654397 1369315985
+square
+\change_unchanged
+
+\end_layout
+
+\end_inset
+
+ option.
+ (For TeXperts, this causes LyX to output: 
+\begin_inset Flex Code
+status open
+
+\begin_layout Plain Layout
+
+\change_inserted 1414654397 1369316019
+
+\backslash
+PassOptionsToPackage{natbib}{square}
+\change_unchanged
+
+\end_layout
+
+\end_inset
+
+ prior to loading 
+\begin_inset Flex Code
+status open
+
+\begin_layout Plain Layout
+
+\change_inserted 1414654397 1369316061
+natbib
+\change_unchanged
+
+\end_layout
+
+\end_inset
+
+.)
+\change_unchanged
+
 \end_layout
 
 \begin_layout Description
diff --git a/lib/scripts/layout2layout.py b/lib/scripts/layout2layout.py
index 1a39618..98cdb94 100644
--- a/lib/scripts/layout2layout.py
+++ b/lib/scripts/layout2layout.py
@@ -157,6 +157,9 @@ import os, re, string, sys
 # Incremented to format 46, 15 May 2013 by gb
 # New Tag "ForceLocal"
 
+# Incremented to format 47, 23 May 2013 by rgh
+# Add PackageOptions tag
+
 # Do not forget to document format change in Customization
 # Manual (section "Declaring a new text class").
 
@@ -164,7 +167,7 @@ import os, re, string, sys
 # development/tools/updatelayouts.sh script to update all
 # layout files to the new format.
 
-currentFormat = 46
+currentFormat = 47
 
 
 def usage(prog_name):
@@ -381,7 +384,7 @@ def convert(lines):
                 i += 1
             continue
 
-        if format == 44 or format == 45:
+        if format >= 44 and format <= 46:
             # nothing to do.
             i += 1
             continue
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index ece4630..88a5d28 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -825,20 +825,25 @@ string const LaTeXFeatures::getPackages() const
        // also unknown packages can be requested. They are silently
        // swallowed now. We should change this eventually.
 
-       //
+       // Output all the package option stuff we have been asked to do.
+       map<string, string>::const_iterator it = 
+           params_.documentClass().packageOptions().begin();
+       map<string, string>::const_iterator en = 
+           params_.documentClass().packageOptions().end();
+       for (; it != en; ++it)
+               if (mustProvide(it->first))
+                       packages << "\\PassOptionsToPackage{" << it->second << 
"}{"
+                          << it->first << "}\n";
+
        //  These are all the 'simple' includes.  i.e
        //  packages which we just \usepackage{package}
-       //
        for (int i = 0; i < nb_simplefeatures; ++i) {
                if (mustProvide(simplefeatures[i]))
-                       packages << "\\usepackage{"
-                                << simplefeatures[i] << "}\n";
+                       packages << "\\usepackage{" << simplefeatures[i] << 
"}\n";
        }
 
-       //
        // The rest of these packages are somewhat more complicated
        // than those above.
-       //
 
        // if fontspec is used, AMS packages have to be loaded before
        // fontspec (in BufferParams)
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index a4f0857..1fcdb2d 100644
--- a/src/TextClass.cpp
+++ b/src/TextClass.cpp
@@ -61,7 +61,7 @@ namespace lyx {
 // development/tools/updatelayouts.sh script, to update the format of
 // all of our layout files.
 //
-int const LAYOUT_FORMAT = 46; // gb: New Tag "ForceLocal"
+int const LAYOUT_FORMAT = 47; //rgh: package options
 
 namespace {
 
@@ -197,6 +197,7 @@ enum TextClassTags {
        TC_HTMLSTYLES,
        TC_PROVIDES,
        TC_REQUIRES,
+       TC_PKGOPTS,
        TC_LEFTMARGIN,
        TC_RIGHTMARGIN,
        TC_FLOAT,
@@ -256,6 +257,7 @@ LexerKeyword textClassTags[] = {
        { "nostyle",           TC_NOSTYLE },
        { "outputformat",      TC_OUTPUTFORMAT },
        { "outputtype",        TC_OUTPUTTYPE },
+       { "packageoptions",        TC_PKGOPTS },
        { "pagestyle",         TC_PAGESTYLE },
        { "preamble",          TC_PREAMBLE },
        { "provides",          TC_PROVIDES },
@@ -633,6 +635,15 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, 
ReadType rt)
                        requires_.insert(req.begin(), req.end());
                        break;
                }
+               
+               case TC_PKGOPTS : {
+                       lexrc.next();
+                       string const pkg = lexrc.getString();
+                       lexrc.next();
+                       string const options = lexrc.getString();
+                       package_options_[pkg] = options;
+                       break;
+               }
 
                case TC_DEFAULTMODULE: {
                        lexrc.next();
diff --git a/src/TextClass.h b/src/TextClass.h
index faacfa0..2a9a00c 100644
--- a/src/TextClass.h
+++ b/src/TextClass.h
@@ -277,6 +277,8 @@ protected:
        std::set<std::string> provides_;
        /// latex packages requested by document class.
        std::set<std::string> requires_;
+       ///
+       std::map<std::string, std::string> package_options_;
        /// default modules wanted by document class
        LayoutModuleList default_modules_;
        /// modules provided by document class
@@ -435,6 +437,9 @@ public:
        bool provides(std::string const & p) const;
        /// features required by the class?
        std::set<std::string> const & requires() const { return requires_; }
+       /// package options to write to LaTeX file
+       std::map<std::string, std::string> const & packageOptions() const
+               { return package_options_; }
        ///
        unsigned int columns() const { return columns_; }
        ///

-----------------------------------------------------------------------

Summary of changes:
 lib/doc/Customization.lyx    |  132 +++++++++++++++++++++++++++++++++++++++++-
 lib/scripts/layout2layout.py |    7 ++-
 src/LaTeXFeatures.cpp        |   17 ++++--
 src/TextClass.cpp            |   13 ++++-
 src/TextClass.h              |    5 ++
 5 files changed, 163 insertions(+), 11 deletions(-)


hooks/post-receive
-- 
The LyX Source Repository

Reply via email to