]> git.lyx.org Git - lyx.git/blobdiff - src/OutputParams.h
Revert "DocBook: make openParTag/closeTag use paragraphs instead of layouts."
[lyx.git] / src / OutputParams.h
index f220b5e654d3cf7fa3f61393ec7ae2ead21f4c31..31a705982e1b5962d1ca6a5d0547c78a28bea2fa 100644 (file)
 #define OUTPUTPARAMS_H
 
 
-#include "support/shared_ptr.h"
 #include "Changes.h"
 
+#include <memory>
+#include <set>
+
 
 namespace lyx {
 
@@ -33,7 +35,7 @@ public:
                LUATEX,
                PDFLATEX,
                XETEX,
-               XML,
+               DOCBOOK5,
                HTML,
                TEXT,
                LYX
@@ -59,6 +61,14 @@ public:
                SUBFLOAT
        };
 
+       enum CtObject {
+               CT_NORMAL,
+               CT_OBJECT,
+               CT_DISPLAYOBJECT,
+               CT_UDISPLAYOBJECT,
+               CT_OMITOBJECT
+       };
+
        OutputParams(Encoding const *);
        ~OutputParams();
 
@@ -70,14 +80,18 @@ public:
        bool isLaTeX() const;
        /// does this flavour support full unicode?
        bool isFullUnicode() const;
+       /// Do we use the bidi package (which does some reordering and stuff)?
+       bool useBidiPackage() 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
+           This essentially seems to mean whether InsetInclude, InsetGraphics
            and InsetExternal should add the absolute path to any external
            files or not.
+           Non-nice LaTeX also includes additional safe line breaks in order to
+           increase the precision of forward/reverse search and error reporting.
        */
        bool nice;
 
@@ -99,26 +113,48 @@ 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
+       /** need_maketitle == true means that the last layout was a title layout
+        * this is to track when \maketitle needs to be output.
+       */
+       mutable bool need_maketitle;
+
+       /** have_maketitle == true means that \maketitle already hase been output.
+       */
+       mutable bool have_maketitle;
+
+       /** inbranch == true means that the environment being typeset
+           is inside an active branch inset.
+       */
+       bool inbranch;
+
+       /** inulemcmd > 0 means that the environment in which the
+           inset is typeset is part of a ulem or soul command (e.g., \uline,
+           \uuline, \uwave, \sout or \xout). 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;
+       mutable int inulemcmd;
 
        /** the font at the point where the inset is
         */
        Font const * local_font;
 
-       /** Document language babel name
+       /** Document language lyx name
         */
-       mutable std::string document_language;
+       std::string document_language;
+
+       /// main font encoding of the document
+       std::string main_fontenc;
 
        /** The master language. Non-null only for child documents.
+           Note that this is not the language of the top level master, but
+           of the direct parent for nested includes.
         */
        mutable Language const * master_language;
 
+       /// Active characters
+       std::string active_chars;
+
        /** 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
@@ -151,6 +187,13 @@ public:
        */
        bool use_polyglossia;
 
+       /** Do we use hyperref?
+       */
+       bool use_hyperref;
+
+       /// Do we use the CJK package?
+       bool use_CJK;
+
        /** Are we generating multiple indices?
        */
        bool use_indices;
@@ -161,11 +204,15 @@ public:
 
        /** Customized bibtex_command
        */
-       mutable std::string bibtex_command;
+       std::string bibtex_command;
 
        /** Customized index_command
        */
-       mutable std::string index_command;
+       std::string index_command;
+
+       /** Hyperref driver
+       */
+       std::string hyperref_driver;
 
        /** Line length to use with plaintext or LaTeX export.
        */
@@ -176,11 +223,34 @@ public:
         */
        int depth;
 
-       /** Export data filled in by the latex(), docbook() etc methods.
+       /** Export data filled in by the latex(), docbook(), etc. methods.
            This is a hack: Make it possible to add stuff to constant
            OutputParams instances.
        */
-       shared_ptr<ExportData> exportdata;
+       std::shared_ptr<ExportData> exportdata;
+
+       /** Store labels, index entries, etc. (in \ref post_macro)
+        *  and output them later. This is used in particular to get
+        *  labels and index entries (and potentially other fragile commands)
+        *  outside of moving arguments (bug 2154)
+        */
+       bool postpone_fragile_stuff;
+
+       /** Stuff to be postponed and output after the current macro
+        *  (if \ref postpone_fragile_stuff is true). Used for labels and index
+        *  entries in commands with moving arguments (\\section, \\caption etc.)
+        */
+       mutable docstring post_macro;
+
+       /** Whether we are entering a display math inset.
+        *  Needed to correctly strike out deleted math in change tracking.
+        */
+       mutable bool inDisplayMath;
+
+       /** Whether we are leaving a display math inset.
+        *  Needed to correctly track nested ulem commands in change tracking.
+        */
+       mutable bool wasDisplayMath;
 
        /** Whether we are inside a comment inset. Insets that are including
         *  external files like InsetGraphics, InsetInclude and InsetExternal
@@ -190,6 +260,15 @@ public:
         */
        bool inComment;
 
+       /** Whether a btUnit (for multiple biblographies) is open.
+        */
+       mutable bool openbtUnit;
+
+       /** Process only the children's aux files with BibTeX.
+        *  This is necessary with chapterbib.
+        */
+       bool only_childbibs;
+
        /** Whether we are in a table cell.
         *  For newline, it matters whether its content is aligned or not.
          */
@@ -212,14 +291,19 @@ public:
 
        /** Whether we are inside an inset that is logically deleted.
         *  A value > 0 indicates a deleted inset.
-         */
+       */
        int inDeletedInset;
 
        /** The change information of the outermost logically deleted inset.
         *  changeOfDeletedInset shall only be evaluated if inDeletedInset > 0.
-         */
+       */
        Change changeOfDeletedInset;
 
+       /** What kind of change tracking object is this?
+        * Relevant for strikeout method in output
+        */
+       mutable CtObject ctObject;
+
        /** allow output of only part of the top-level paragraphs
         *  par_begin: beginning paragraph
         */
@@ -235,13 +319,13 @@ public:
        mutable int lastid;
 
        /// Last position in the last paragraph before an inset
-       mutable int lastpos;
+       mutable pos_type lastpos;
 
        /// is this the last paragraph in the current buffer/inset?
        bool isLastPar;
 
 
-       /** whether or not do actual file copying and image conversion
+       /** whether or not to do actual file copying and image conversion
         *  This mode will be used to preview the source code
         */
        bool dryrun;
@@ -252,6 +336,12 @@ public:
        /// Should we output verbatim or escape LaTeX's special chars?
        bool pass_thru;
 
+       /// Should we output verbatim specific chars?
+       docstring pass_thru_chars;
+
+       /// A specific newline macro
+       std::string newlinecmd;
+
        /// Should we output captions?
        bool html_disable_captions;
 
@@ -261,6 +351,27 @@ public:
        /// Does the present context even permit paragraphs?
        bool html_make_pars;
 
+       /// Are we already in a paragraph?
+       bool docbook_in_par;
+
+       /// Does the present context even permit paragraphs?
+       bool docbook_make_pars;
+
+       /// Are paragraphs mandatory in this context?
+       bool docbook_force_pars;
+
+       /// Anchors that should not be output (LyX-side identifier, not DocBook-side).
+       std::set<docstring> docbook_anchors_to_ignore;
+
+       /// Is the current context a float (such as a table or a figure)?
+       bool docbook_in_float;
+
+       /// Is the current context a listing?
+       bool docbook_in_listing;
+
+       /// Is the current context a table?
+       bool docbook_in_table;
+
        /// Are we generating this material for inclusion in a TOC-like entity?
        bool for_toc;
 
@@ -270,6 +381,9 @@ public:
        /// Are we generating this material for use by advanced search?
        bool for_search;
 
+       /// Are we generating this material for instant preview?
+       bool for_preview;
+
        /// Include all children notwithstanding the use of \includeonly
        bool includeall;