]> git.lyx.org Git - lyx.git/blobdiff - src/LaTeXFeatures.C
Move #includes out of header files.
[lyx.git] / src / LaTeXFeatures.C
index bed69c6c1e0217fd2bb13163c802994cc734469c..6984882c5eaa2cd7575f43f3ca3f2ecf8b98e5f6 100644 (file)
@@ -1,32 +1,36 @@
-/* This file is part of
- * ======================================================
+/**
+ * \file LaTeXFeatures.C
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
  *
- *           LyX, The Document Processor
+ * \author José Matos
+ * \author Lars Gullik Bjønnes
+ * \author Jean-Marc Lasgouttes
+ * \author Jürgen Vigna
+ * \author André Pönitz
  *
- *           Copyright 1995 Matthias Ettrich
- *           Copyright 1995-2001 the LyX Team.
- *
- * ====================================================== */
+ * Full author contact details are available in file CREDITS.
+ */
 
 #include <config.h>
 
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
 #include "LaTeXFeatures.h"
 #include "debug.h"
 #include "lyx_sty.h"
 #include "lyxrc.h"
 #include "bufferparams.h"
+#include "Floating.h"
 #include "FloatList.h"
 #include "language.h"
 #include "encoding.h"
 #include "LString.h"
+#include "Lsstream.h"
 
 #include "support/filetools.h"
 #include "support/lstrings.h"
 
+using namespace lyx::support;
+
 using lyx::textclass_type;
 
 using std::endl;
@@ -41,6 +45,14 @@ LaTeXFeatures::LaTeXFeatures(BufferParams const & p)
 {}
 
 
+bool LaTeXFeatures::useBabel() const
+{
+       return lyxrc.language_use_babel ||
+               bufferParams().language->lang() != lyxrc.default_language ||
+               this->hasLanguages();
+}
+
+
 void LaTeXFeatures::require(string const & name)
 {
        if (isRequired(name))
@@ -91,16 +103,16 @@ void LaTeXFeatures::useLayout(string const & layoutname)
 
 bool LaTeXFeatures::isRequired(string const & name) const
 {
-       FeaturesList::const_iterator i = find(features.begin(),
-                                             features.end(),
-                                             name);
-       return i != features.end();
+       return find(features.begin(), features.end(), name) != features.end();
 }
 
 
-void LaTeXFeatures::addExternalPreamble(string const & pream)
+void LaTeXFeatures::addExternalPreamble(string const & preamble)
 {
-       externalPreambles += pream;
+       FeaturesList::const_iterator begin = preamble_snippets.begin();
+       FeaturesList::const_iterator end   = preamble_snippets.end();
+       if (find(begin, end, preamble) == end)
+               preamble_snippets.push_back(preamble);
 }
 
 
@@ -129,7 +141,7 @@ void LaTeXFeatures::includeFile(string const & key, string const & name)
 }
 
 
-bool LaTeXFeatures::hasLanguages()
+bool LaTeXFeatures::hasLanguages() const
 {
        return !UsedLanguages.empty();
 }
@@ -149,7 +161,7 @@ string LaTeXFeatures::getLanguages() const
 }
 
 
-set<string> LaTeXFeatures::getEncodingSet(string const & doc_encoding)
+set<string> LaTeXFeatures::getEncodingSet(string const & doc_encoding) const
 {
        set<string> encodings;
        for (LanguageList::const_iterator it =
@@ -182,12 +194,12 @@ int const nb_simplefeatures = sizeof(simplefeatures) / sizeof(char const *);
 
 }
 
+
 string const LaTeXFeatures::getPackages() const
 {
        ostringstream packages;
        LyXTextClass const & tclass = params.getLyXTextClass();
 
-
        //
        //  These are all the 'simple' includes.  i.e
        //  packages which we just \usepackage{package}
@@ -204,7 +216,8 @@ string const LaTeXFeatures::getPackages() const
        //
 
        if (isRequired("amsmath")
-           && ! tclass.provides(LyXTextClass::amsmath)) {
+           && !tclass.provides(LyXTextClass::amsmath)
+           && params.use_amsmath != BufferParams::AMS_OFF) {
                packages << "\\usepackage{amsmath}\n";
        }
 
@@ -270,7 +283,7 @@ string const LaTeXFeatures::getPackages() const
        }
 
        // amssymb.sty
-       if (isRequired("amssymb") || params.use_amsmath)
+       if (isRequired("amssymb") || params.use_amsmath == BufferParams::AMS_ON)
                packages << "\\usepackage{amssymb}\n";
        // url.sty
        if (isRequired("url") && ! tclass.provides(LyXTextClass::url))
@@ -289,7 +302,11 @@ string const LaTeXFeatures::getPackages() const
                packages << "]{natbib}\n";
        }
 
-       packages << externalPreambles;
+       FeaturesList::const_iterator pit  = preamble_snippets.begin();
+       FeaturesList::const_iterator pend = preamble_snippets.end();
+       for (; pit != pend; ++pit) {
+               packages << *pit << '\n';
+       }
 
        return STRCONV(packages.str());
 }
@@ -345,6 +362,10 @@ string const LaTeXFeatures::getMacros() const
        if (isRequired("NeedTabularnewline"))
                macros << tabularnewline_def;
 
+       // greyedout environment (note inset)
+       if (isRequired("lyxgreyedout"))
+               macros << lyxgreyedout_def;
+
        // floats
        getFloatDefinitions(macros);