// {[(
-#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 {
///
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;
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;
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;
///
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_;
};
} // namespace lyx
+
+#endif