]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/Preamble.h
listerrors.lyx : Update a link.
[lyx.git] / src / tex2lyx / Preamble.h
index 9184a133ca58a2e605e3cd252d43550bd9f3ab94..4d5817586f01e4b72f10e03800efe32fd3bdff3e 100644 (file)
 
 // {[(
 
-#include <config.h>
+#ifndef LYX_PREAMBLE_H
+#define LYX_PREAMBLE_H
+
+#include "Author.h"
 
 #include <iosfwd>
 #include <sstream>
 #include <string>
 #include <vector>
 #include <map>
+#include <set>
 
 
 namespace lyx {
@@ -33,36 +37,47 @@ public:
        ///
        std::string inputencoding() const { return h_inputencoding; }
        ///
+       std::string notefontcolor() const { return h_notefontcolor; }
+       ///
+       std::string use_indices() const { return h_use_indices; }
+       ///
        bool indentParagraphs() const;
        ///
        bool isPackageUsed(std::string const & package) const;
        ///
        std::vector<std::string>
        getPackageOptions(std::string const & package) const;
+       /// Tell that \p package will be loaded automatically by LyX.
+       /// This has only an effect if \p package is prepared for
+       /// autoloading in parse().
+       void registerAutomaticallyLoadedPackage(std::string const & package);
        ///
-       std::string addModules(std::string const & lyxpreamble,
-                              std::string const & modules);
+       void addModule(std::string const & module);
        ///
        void suppressDate(bool suppress);
+       /// Register an author named \p name in the author list
+       void registerAuthor(std::string const & name);
+       /// Get author named \p name (must be registered first)
+       Author const & getAuthor(std::string const & name) const;
 
 
        /// Parses the LaTeX preamble into internal data
        void parse(Parser & p, std::string const & forceclass,
                   TeX2LyXDocClass & tc);
        /// Writes the LyX file header from internal data
-       void writeLyXHeader(std::ostream & os);
+       bool writeLyXHeader(std::ostream & os, bool subdoc);
 
 private:
        ///
        std::map<std::string, std::vector<std::string> > used_packages;
+       /// Packages that will be loaded automatically by LyX
+       std::set<std::string> auto_packages;
+       ///
+       std::vector<std::string> used_modules;
 
        /// needed to handle encodings with babel
        bool one_language;
 
-       /// necessary to avoid that our preamble stuff is added at each
-       /// tex2lyx run which would pollute the preamble when doing roundtrips
-       bool ifundefined_color_set;
-
        std::ostringstream h_preamble;
        std::string h_backgroundcolor;
        std::string h_boxbgcolor;
@@ -84,6 +99,7 @@ private:
        std::string h_html_css_as_file;
        std::string h_html_math_output;
        std::string h_inputencoding;
+       std::string h_justification;
        std::string h_language;
        std::string h_language_package;
        std::string h_listings_params;
@@ -123,6 +139,7 @@ private:
        std::string h_tocdepth;
        std::string h_tracking_changes;
        std::string h_use_bibtopic;
+       std::string h_use_indices;
        std::string h_use_geometry;
        std::string h_use_amsmath;
        std::string h_use_default_options;
@@ -142,10 +159,14 @@ private:
        ///
        void handle_hyperref(std::vector<std::string> & options);
        ///
+       void handle_geometry(std::vector<std::string> & options);
+       ///
        void handle_package(Parser &p, std::string const & name,
                            std::string const & opts, bool in_lyx_preamble);
        ///
        void handle_if(Parser & p, bool in_lyx_preamble);
+
+       AuthorList authors_;
 };
 
 
@@ -155,3 +176,5 @@ extern Preamble preamble;
 
 
 } // namespace lyx
+
+#endif