X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLaTeXFeatures.h;h=92279ebfc0963767bb2896f86c5407151c5e11aa;hb=98c966c64594611e469313314abd1e59524adb4a;hp=58bbedb84046c24ce06ff37b2904b98dffebbb55;hpb=f1bc028820f0aa3164affb8ceac93ecd21f41bd2;p=lyx.git diff --git a/src/LaTeXFeatures.h b/src/LaTeXFeatures.h index 58bbedb840..92279ebfc0 100644 --- a/src/LaTeXFeatures.h +++ b/src/LaTeXFeatures.h @@ -1,13 +1,13 @@ // -*- C++ -*- /* This file is part of * ====================================================== -* +* * LyX, The Document Processor -* -* Copyright (C) 1995 Matthias Ettrich -* Copyright (C) 1995-1999 the LyX Team. * -*======================================================*/ +* Copyright 1995 Matthias Ettrich +* Copyright 1995-2001 the LyX Team. +* +* ====================================================== */ #ifndef LATEXFEATURES_H #define LATEXFEATURES_H @@ -17,117 +17,99 @@ #pragma interface #endif -#include -using std::vector; +#include "support/types.h" #include "LString.h" -class BufferParams; -class LyXTextClass; +#include +#include +#include +#include +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. */ -struct LaTeXFeatures { - /// - LaTeXFeatures(int n) ; - /// The packaes needed by the document - string getPackages(BufferParams const ¶ms); - /// The macros definitions needed by the document - string getMacros(BufferParams const ¶ms); - /// The definitions needed by the document's textclass - string getTClassPreamble(BufferParams const ¶ms); +/** The packages and commands that a buffer needs. This class + contains a list. Each of the LaTeX packages that a buffer needs + should be added with void require(string const & name). - /// - void showStruct(BufferParams ¶ms); + i.e require("amssymb") - //@Man: Packages - //@{ - /// - bool color; // color.sty - /// - bool graphics; // graphics.sty - /// - bool setspace; // setspace.sty - /// - bool makeidx; // makeind.sty - /// - bool verbatim; // verbatim.sty + 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. +*/ +class LaTeXFeatures { +public: + /// + LaTeXFeatures(BufferParams const &); + /// The packages needed by the document + string const getPackages() const; + /// The macros definitions needed by the document + string const getMacros() 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; + /// 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; /// - bool longtable; // longtable.sty + void addExternalPreamble(string const &); + /// Provide a string name-space to the requirements + void require(string const & name); + /// Is the package required? + bool isRequired(string const & name) const; /// - bool algorithm; // algorithm.sty + void useFloat(string const & name); /// - bool rotating; // rotating.sty + void useLanguage(Language const *); /// - bool amssymb; // amssymb.sty + bool hasLanguages(); /// - bool latexsym; // latexsym.sty + string getLanguages() const; /// - bool pifont; // pifont.sty + std::set getEncodingSet(string const & doc_encoding); /// - bool subfigure; // subfigure.sty + void useLayout(string const & lyt); /// - bool floatflt; // floatflt.sty + BufferParams const & bufferParams() const; /// - bool url; // url.sty - //@} - - //@Man: Commands - //@{ - /// - bool lyx; - /// - bool lyxline; - /// \noun - bool noun; - /// \lyxarrow - bool lyxarrow; - //@} - - //@Man: Quotes - //@{ - /// - bool quotesinglbase; - /// - bool quotedblbase; +private: + string externalPreambles; + + std::set layout; + + /// Static preamble bits from the external material insets + + + typedef std::list FeaturesList; /// - bool guilsinglleft; + FeaturesList features; /// - bool guilsinglright; + typedef std::set LanguageList; /// - bool guillemotleft; + LanguageList UsedLanguages; /// - bool guillemotright; - //@} - - //@Man: Math mode - //@{ + typedef std::set UsedFloats; /// - bool amsstyle; + UsedFloats usedFloats; /// - bool boldsymbol; + typedef std::map FileMap; /// - bool binom; - //@} - - //@Man: Layouts - //@{ - vector layout; - //@} - - //@Man: Special features - //@{ - bool LyXParagraphIndent; + FileMap IncludedFiles; /// - bool NeedLyXFootnoteCode; /// - bool NeedLyXMinipageIndent; - //@} + BufferParams const & params; }; #endif