// -*- C++ -*-
/* This file is part of
-* ======================================================
-*
+* ======================================================
+*
* LyX, The Document Processor
-*
+*
* Copyright 1995 Matthias Ettrich
-* Copyright 1995-2000 the LyX Team.
+* Copyright 1995-2001 the LyX Team.
*
* ====================================================== */
#pragma interface
#endif
-#include <vector>
-#include <set>
+#include "support/types.h"
#include "LString.h"
-#include "layout.h"
-class BufferParams;
+#include <set>
+#include <list>
+#include <map>
+
+class BufferParams;
struct Language;
-/** The packages and commands that a buffer needs. This struct
- contains an entry for each of the latex packages and
- commands that a buffer might need. This struct is supposed to be
- extended as the need arises. Remember to update the validate function
- in buffer.C and paragraph.C when you do so.
+/** The packages and commands that a buffer needs. This class
+ contains a list<string>. Each of the LaTeX packages that a buffer needs
+ should be added with void require(string const & name).
+
+ i.e require("amssymb")
+
+ To add support you should only need to require() the package name as
+ packages which don't have special requirements are handled automatically.
+ If your new package does need special consideration you'll need to alter
+ string const getPackages() const;
+ Remember to update the validate function in buffer.C and paragraph.C
+ when you do so.
*/
-struct LaTeXFeatures {
+class LaTeXFeatures {
+public:
///
- LaTeXFeatures(BufferParams const &, LyXTextClass::size_type n) ;
- /// The packaes needed by the document
+ LaTeXFeatures(BufferParams const &);
+ /// The packages needed by the document
string const getPackages() const;
/// The macros definitions needed by the document
string const getMacros() const;
+ ///
+ string const getBabelOptions() const;
/// The definitions needed by the document's textclass
string const getTClassPreamble() const;
- ///
+ /// The sgml definitions needed by the document (dobook/linuxdoc)
+ string const getLyXSGMLEntities() const;
+ /// The SGML Required to include the files added with includeFile();
string const getIncludedFiles(string const & fname) const;
- ///
- void getFloatDefinitions(ostream & os) const;
-
- ///
+ /// Include a file for use with the SGML entities
+ void includeFile(string const & key, string const & name);
+ /// The float definitions.
+ void getFloatDefinitions(std::ostream & os) const;
+ /// Print requirements to lyxerr
void showStruct() const;
-
+ ///
+ void addExternalPreamble(string const &);
/// Provide a string name-space to the requirements
void require(string const & name);
-
- /// Static preamble bits from the external material insets
- string externalPreambles;
-
- ///
- bool array;
- ///
- bool color; // color.sty
- ///
- bool graphicx; // graphicx.sty
- ///
- bool graphics; // graphics.sty
- ///
- bool setspace; // setspace.sty
- ///
- bool makeidx; // makeind.sty
- ///
- bool verbatim; // verbatim.sty
+ /// Is the package required?
+ bool isRequired(string const & name) const;
///
- bool longtable; // longtable.sty
+ void useFloat(string const & name);
///
- bool algorithm; // algorithm.sty
+ void useLanguage(Language const *);
///
- bool rotating; // rotating.sty
+ bool hasLanguages();
///
- bool amssymb; // amssymb.sty
+ string getLanguages() const;
///
- bool latexsym; // latexsym.sty
+ std::set<string> getEncodingSet(string const & doc_encoding);
///
- bool pifont; // pifont.sty
+ void useLayout(string const & lyt);
///
- bool subfigure; // subfigure.sty
- ///
- bool floatflt; // floatflt.sty
- ///
- bool url; // url.sty
- ///
- bool varioref; // varioref.sty
- ///
- bool prettyref; // prettyref.sty
+ BufferParams const & bufferParams() const;
///
- bool chess; // chess.sty
- ///
- bool lyx;
- ///
- bool lyxline;
- /// \noun
- bool noun;
- /// \lyxarrow
- bool lyxarrow;
+private:
+ string externalPreambles;
- ///
- bool quotesinglbase;
- ///
- bool quotedblbase;
- ///
- bool guilsinglleft;
- ///
- bool guilsinglright;
- ///
- bool guillemotleft;
- ///
- bool guillemotright;
+ std::list<string> usedLayouts;
- ///
- bool amsstyle;
- ///
- bool boldsymbol;
- ///
- bool binom;
-
- std::vector<bool> layout;
+ /// Static preamble bits from the external material insets
+
+ typedef std::list<string> FeaturesList;
///
- bool LyXParagraphIndent;
- ///
- bool NeedLyXFootnoteCode;
- ///
- bool NeedLyXMinipageIndent;
+ FeaturesList features;
///
typedef std::set<Language const *> LanguageList;
///
///
FileMap IncludedFiles;
///
- BufferParams const & bufferParams() const;
-private:
///
BufferParams const & params;
};