X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FOutputParams.h;h=d3c2921b4654c89e11ffdfd1c4a327a92444ed99;hb=e903d0158e1d92c0d9c17656af10df9fa9a3d723;hp=ae2e13d962e140d41b6909d9f1c8cf7497d215bb;hpb=a2906cb877b6fb737502f4f894e326685f254953;p=lyx.git diff --git a/src/OutputParams.h b/src/OutputParams.h index ae2e13d962..d3c2921b46 100644 --- a/src/OutputParams.h +++ b/src/OutputParams.h @@ -12,10 +12,8 @@ #ifndef OUTPUTPARAMS_H #define OUTPUTPARAMS_H -#include -#include "support/types.h" -#include +#include "support/shared_ptr.h" #include "Changes.h" @@ -25,24 +23,57 @@ namespace lyx { class Encoding; class ExportData; class Font; - +class Language; class OutputParams { public: enum FLAVOR { + DVILUATEX, LATEX, + LUATEX, PDFLATEX, - XML + XETEX, + XML, + HTML, + TEXT, + LYX + }; + + enum MathFlavor { + NotApplicable, + MathAsMathML, + MathAsHTML, + MathAsImages, + MathAsLaTeX + }; + + enum TableCell { + NO, + PLAIN, + ALIGNED + }; + + enum Float { + NONFLOAT, + MAINFLOAT, + SUBFLOAT }; OutputParams(Encoding const *); ~OutputParams(); - /** The latex that we export depends occasionally on what is to + /** The file that we export depends occasionally on what is to compile the file. */ FLAVOR flavor; - + /// is it some flavor of LaTeX? + bool isLaTeX() const; + /// does this flavour support full unicode? + bool isFullUnicode() const; + + /// Same, but for math output, which only matter is XHTML output. + MathFlavor math_flavor; + /** Are we to write a 'nice' LaTeX file or not. This esentially seems to mean whether InsetInclude, InsetGraphics and InsetExternal should add the absolute path to any external @@ -62,6 +93,14 @@ public: */ bool intitle; + /** inulemcmd == true means that the environment in which the + inset is typeset is part of a ulem command (\uline, \uuline, + \uwave, or \sout). Insets that output latex commands relying + on local assignments (such as \cite) should enclose such + commands in \mbox{} in order to avoid breakage. + */ + mutable bool inulemcmd; + /** the font at the point where the inset is */ Font const * local_font; @@ -70,6 +109,10 @@ public: */ mutable std::string document_language; + /** The master language. Non-null only for child documents. + */ + mutable Language const * master_language; + /** Current stream encoding. Only used for LaTeX. This must be set to the document encoding (via the constructor) before output starts. Afterwards it must be kept up to date for @@ -98,11 +141,27 @@ public: */ bool use_babel; + /** Do we use polyglossia (instead of babel)? + */ + bool use_polyglossia; + + /** Are we generating multiple indices? + */ + bool use_indices; + /** Are we using japanese (pLaTeX)? */ bool use_japanese; - /** Line length to use with plaintext export. + /** Customized bibtex_command + */ + mutable std::string bibtex_command; + + /** Customized index_command + */ + mutable std::string index_command; + + /** Line length to use with plaintext or LaTeX export. */ size_type linelen; @@ -115,7 +174,7 @@ public: This is a hack: Make it possible to add stuff to constant OutputParams instances. */ - boost::shared_ptr exportdata; + shared_ptr exportdata; /** Whether we are inside a comment inset. Insets that are including * external files like InsetGraphics, InsetInclude and InsetExternal @@ -125,6 +184,26 @@ public: */ bool inComment; + /** Whether we are in a table cell. + * For newline, it matters whether its content is aligned or not. + */ + TableCell inTableCell; + + /** Whether we are inside a float or subfloat. + * Needed for subfloat detection on the command line. + */ + Float inFloat; + + /** Whether we are inside an index inset. + * ERT needs to know this, due to the active chars. + */ + bool inIndexEntry; + + /** Whether we are inside an IPA inset. + * Needed for proper IPA output. + */ + bool inIPA; + /** Whether we are inside an inset that is logically deleted. * A value > 0 indicates a deleted inset. */ @@ -138,20 +217,49 @@ public: /** allow output of only part of the top-level paragraphs * par_begin: beginning paragraph */ - pit_type par_begin; + mutable pit_type par_begin; /** allow output of only part of the top-level paragraphs * par_end: par_end-1 is the ending paragraph * if par_begin=par_end, output all paragraphs */ - pit_type par_end; + mutable pit_type par_end; + + /// Id of the last paragraph before an inset + mutable int lastid; + + /// Last position in the last paragraph before an inset + mutable int lastpos; + + /// is this the last paragraph in the current buffer/inset? + bool isLastPar; + /** whether or not do actual file copying and image conversion * This mode will be used to preview the source code */ bool dryrun; + /// Should we output verbatim or escape LaTeX's special chars? - bool verbatim; + bool pass_thru; + + /// Should we output captions? + bool html_disable_captions; + + /// Are we already in a paragraph? + bool html_in_par; + + /// Does the present context even permit paragraphs? + bool html_make_pars; + + /// Are we generating this material for inclusion in a TOC-like entity? + bool for_toc; + + /// Include all children notwithstanding the use of \includeonly + bool includeall; + + /// Explicit output folder, if any is desired + std::string export_folder; };