]> git.lyx.org Git - lyx.git/blobdiff - src/TextClass.cpp
Fix 'Export As...' in non-English localizations
[lyx.git] / src / TextClass.cpp
index b55e8a2f0a4863acad97e02bd82e38059dcf4dab..b77f31b3369c68b7422fe8f5e99ec8b1657d29c1 100644 (file)
@@ -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 = 45; // rgh: New Tag "NoInsetLayout"
+int const LAYOUT_FORMAT = 48; //rgh: initial values for counter
 
 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 },
@@ -634,6 +636,15 @@ TextClass::ReturnValues TextClass::read(Lexer & lexrc, ReadType rt)
                        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();
                        string const module = lexrc.getString();
@@ -962,6 +973,8 @@ bool TextClass::readCiteEngine(Lexer & lexrc)
                cite_styles_[ENGINE_TYPE_AUTHORYEAR].clear();
        if (type & ENGINE_TYPE_NUMERICAL)
                cite_styles_[ENGINE_TYPE_NUMERICAL].clear();
+       if (type & ENGINE_TYPE_DEFAULT)
+               cite_styles_[ENGINE_TYPE_DEFAULT].clear();
        string def;
        bool getout = false;
        while (!getout && lexrc.isOK()) {
@@ -1001,6 +1014,8 @@ bool TextClass::readCiteEngine(Lexer & lexrc)
                        cite_styles_[ENGINE_TYPE_AUTHORYEAR].push_back(cs);
                if (type & ENGINE_TYPE_NUMERICAL)
                        cite_styles_[ENGINE_TYPE_NUMERICAL].push_back(cs);
+               if (type & ENGINE_TYPE_DEFAULT)
+                       cite_styles_[ENGINE_TYPE_DEFAULT].push_back(cs);
        }
        return getout;
 }
@@ -1008,8 +1023,8 @@ bool TextClass::readCiteEngine(Lexer & lexrc)
 
 int TextClass::readCiteEngineType(Lexer & lexrc) const
 {
-       int const ENGINE_TYPE_DEFAULT =
-               ENGINE_TYPE_AUTHORYEAR | ENGINE_TYPE_NUMERICAL;
+       LATTEST(ENGINE_TYPE_DEFAULT ==
+               (ENGINE_TYPE_AUTHORYEAR | ENGINE_TYPE_NUMERICAL));
        if (!lexrc.next()) {
                lexrc.printError("No cite engine type given for token: `$$Token'.");
                return ENGINE_TYPE_DEFAULT;
@@ -1050,11 +1065,15 @@ bool TextClass::readCiteFormat(Lexer & lexrc)
                                cite_macros_[ENGINE_TYPE_AUTHORYEAR][etype] = definition;
                        if (type & ENGINE_TYPE_NUMERICAL)
                                cite_macros_[ENGINE_TYPE_NUMERICAL][etype] = definition;
+                       if (type & ENGINE_TYPE_DEFAULT)
+                               cite_macros_[ENGINE_TYPE_DEFAULT][etype] = definition;
                } else {
                        if (type & ENGINE_TYPE_AUTHORYEAR)
                                cite_formats_[ENGINE_TYPE_AUTHORYEAR][etype] = definition;
                        if (type & ENGINE_TYPE_NUMERICAL)
                                cite_formats_[ENGINE_TYPE_NUMERICAL][etype] = definition;
+                       if (type & ENGINE_TYPE_DEFAULT)
+                               cite_formats_[ENGINE_TYPE_DEFAULT][etype] = definition;
                }
        }
        return true;
@@ -1376,6 +1395,24 @@ bool DocumentClass::addLayoutIfNeeded(docstring const & n) const
 }
 
 
+string DocumentClass::forcedLayouts() const
+{
+       ostringstream os;
+       bool first = true;
+       const_iterator const e = end();
+       for (const_iterator i = begin(); i != e; ++i) {
+               if (i->forcelocal > 0) {
+                       if (first) {
+                               os << "Format " << LAYOUT_FORMAT << '\n';
+                               first = false;
+                       }
+                       i->write(os);
+               }
+       }
+       return os.str();
+}
+
+
 InsetLayout const & DocumentClass::insetLayout(docstring const & name) const
 {
        // FIXME The fix for the InsetLayout part of 4812 would be here: