]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.cpp
Keep dialog connected to cross-ref inset after Apply.
[lyx.git] / src / LaTeXFeatures.cpp
index fb8a8181cd1c16226c2ca4f443b226e9293dc5ac..3acbe41df2740180d892048b15563230b20e6bbf 100644 (file)
@@ -40,9 +40,9 @@
 #include "support/docstring.h"
 #include "support/filetools.h"
 #include "support/lstrings.h"
-#include "support/regex.h"
 
 #include <algorithm>
+#include <regex>
 
 
 using namespace std;
@@ -73,6 +73,11 @@ static docstring const lyxarrow_def = from_ascii(
        "{\\leavevmode\\,$\\triangleleft$\\,\\allowbreak}\n"
        "{\\leavevmode\\,$\\triangleright$\\,\\allowbreak}}");
 
+static docstring const aastex_case_def = from_ascii(
+               "\\providecommand\\case[2]{\\mbox{$\\frac{#1}{#2}$}}%");
+// Copied from https://github.com/AASJournals/AASTeX60/blob/master/cls/aastex63.cls#L1645
+// Adapted to providecommand for compatibility reasons.
+
 // ZERO WIDTH SPACE (ZWSP) is actually not a space character
 // but marks a line break opportunity. Several commands provide a
 // line break opportunity. They differ in side-effects:
@@ -1229,14 +1234,10 @@ string const LaTeXFeatures::getPackageOptions() const
 {
        ostringstream packageopts;
        // 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))
-                       packageopts << "\\PassOptionsToPackage{" << it->second << "}"
-                                << "{" << it->first << "}\n";
+       for (auto const & p : params_.documentClass().packageOptions())
+               if (mustProvide(p.first))
+                       packageopts << "\\PassOptionsToPackage{" << p.second << "}"
+                                << "{" << p.first << "}\n";
        return packageopts.str();
 }
 
@@ -1263,8 +1264,8 @@ string const LaTeXFeatures::getPackages() const
 
        if (mustProvide("changebar")) {
                packages << "\\usepackage";
-               if (runparams_.flavor == OutputParams::LATEX
-                   || runparams_.flavor == OutputParams::DVILUATEX)
+               if (runparams_.flavor == Flavor::LaTeX
+                   || runparams_.flavor == Flavor::DviLuaTeX)
                        packages << "[dvips]";
                packages << "{changebar}\n";
        }
@@ -1278,8 +1279,8 @@ string const LaTeXFeatures::getPackages() const
 
        // [pdf]lscape is used to rotate longtables
        if (mustProvide("lscape")) {
-               if (runparams_.flavor == OutputParams::LATEX
-                   || runparams_.flavor == OutputParams::DVILUATEX)
+               if (runparams_.flavor == Flavor::LaTeX
+                   || runparams_.flavor == Flavor::DviLuaTeX)
                        packages << "\\usepackage{lscape}\n";
                else
                        packages << "\\usepackage{pdflscape}\n";
@@ -1526,10 +1527,10 @@ TexString LaTeXFeatures::getMacros() const
                macros << "\\XeTeXdashbreakstate 0" << '\n';
 
        if (mustProvide("papersize")) {
-               if (runparams_.flavor == OutputParams::LATEX
-                   || runparams_.flavor == OutputParams::DVILUATEX)
+               if (runparams_.flavor == Flavor::LaTeX
+                   || runparams_.flavor == Flavor::DviLuaTeX)
                        macros << papersizedvi_def << '\n';
-               else if  (runparams_.flavor == OutputParams::LUATEX)
+               else if  (runparams_.flavor == Flavor::LuaTeX)
                        macros << papersizepdflua_def << '\n';
                else
                        macros << papersizepdf_def << '\n';
@@ -1562,6 +1563,9 @@ TexString LaTeXFeatures::getMacros() const
        if (mustProvide("lyxarrow"))
                macros << lyxarrow_def << '\n';
 
+       if (mustProvide("aastex_case"))
+               macros << aastex_case_def << '\n';
+
        if (mustProvide("lyxzerowidthspace"))
                macros << lyxZWSP_def << '\n';
 
@@ -1655,13 +1659,13 @@ TexString LaTeXFeatures::getMacros() const
        if (mustProvide("textquotedbl"))
                macros << textquotedbl_def << '\n';
        if (mustProvide("textquotesinglep")) {
-               if (runparams_.flavor == OutputParams::XETEX)
+               if (runparams_.flavor == Flavor::XeTeX)
                        macros << textquotesinglep_xetex_def << '\n';
                else
                        macros << textquotesinglep_luatex_def << '\n';
        }
        if (mustProvide("textquotedblp")) {
-               if (runparams_.flavor == OutputParams::XETEX)
+               if (runparams_.flavor == Flavor::XeTeX)
                        macros << textquotedblp_xetex_def << '\n';
                else
                        macros << textquotedblp_luatex_def << '\n';
@@ -1689,7 +1693,7 @@ TexString LaTeXFeatures::getMacros() const
        if (mustProvide("lyxgreyedout")) {
                // We need different version for RTL (#8647)
                if (hasRTLLanguage()) {
-                       if (runparams_.flavor == OutputParams::LUATEX)
+                       if (runparams_.flavor == Flavor::LuaTeX)
                                if (useBabel())
                                        macros << lyxgreyedout_luartl_babel_def;
                                else
@@ -2215,10 +2219,8 @@ void LaTeXFeatures::getFloatDefinitions(otexstream & os) const
        // \newfloat{algorithm}{htbp}{loa}
        // \providecommand{\algorithmname}{Algorithm}
        // \floatname{algorithm}{\protect\algorithmname}
-       UsedFloats::const_iterator cit = usedFloats_.begin();
-       UsedFloats::const_iterator end = usedFloats_.end();
-       for (; cit != end; ++cit) {
-               Floating const & fl = floats.getType(cit->first);
+       for (auto const & cit : usedFloats_) {
+               Floating const & fl = floats.getType(cit.first);
 
                // For builtin floats we do nothing.
                if (fl.isPredefined())
@@ -2267,7 +2269,7 @@ void LaTeXFeatures::getFloatDefinitions(otexstream & os) const
                        // used several times, when the same style is still in
                        // effect. (Lgb)
                }
-               if (cit->second)
+               if (cit.second)
                        // The subfig package is loaded later
                        os << "\n\\AtBeginDocument{\\newsubfloat{" << from_ascii(fl.floattype()) << "}}\n";
        }
@@ -2312,13 +2314,10 @@ void LaTeXFeatures::expandMultiples()
 {
        for (Features::iterator it = features_.begin(); it != features_.end();) {
                if (contains(*it, ',')) {
-                       vector<string> const multiples = getVectorFromString(*it, ",");
-                       vector<string>::const_iterator const end = multiples.end();
-                       vector<string>::const_iterator itm = multiples.begin();
                        // Do nothing if any multiple is already required
-                       for (; itm != end; ++itm) {
-                               if (!isRequired(*itm))
-                                       require(*itm);
+                       for (string const & pkg : getVectorFromString(*it, ",")) {
+                               if (!isRequired(pkg))
+                                       require(pkg);
                        }
                        features_.erase(it);
                        it = features_.begin();