class InsetArgument;
-enum class FLAVOR : int {
- DVILUATEX,
- LATEX,
- LUATEX,
- PDFLATEX,
- XETEX,
- DOCBOOK5,
- HTML,
- TEXT,
- LYX
+enum class Flavor : int {
+ DviLuaTeX,
+ LaTeX,
+ LuaTeX,
+ PdfLaTeX,
+ XeTeX,
+ DocBook5,
+ Html,
+ Text,
+ LyX
};
enum class CtObject : int {
/** The file that we export depends occasionally on what is to
compile the file.
*/
- FLAVOR flavor = FLAVOR::LATEX;
+ Flavor flavor = Flavor::LaTeX;
/// is it some flavor of LaTeX?
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 = NotApplicable;
*/
bool moving_arg = false;
+ /** no_cprotect == true means that the layout in which this is
+ * does not allow \cprotect'ing.
+ */
+ bool no_cprotect = false;
+
/** intitle == true means that the environment in which the
inset is typeset is part of a title (before a \\maketitle).
Footnotes in such environments have moving arguments.
*/
mutable bool need_maketitle = false;
- /** have_maketitle == true means that \maketitle already hase been output.
+ /** have_maketitle == true means that \maketitle already has been output.
*/
mutable bool have_maketitle = false;
mutable int inulemcmd = 0;
/** the font at the point where the inset is
- */
+ *
+ * Note from lasgouttes: I have doubts on the semantics of this
+ * variable. Until this is sorted out, here are some notes on the
+ * history of local_font.
+ *
+ * A research that excludes test and assignment [*] shows that
+ * this is only used to remember language, which is a different
+ * story (and not changed by this patch). The only exception being
+ * in InsetMathHull::getCtObject and InsetMathNest::latex to
+ * support change tracking in insets, but I am not 100% sure that
+ * this is required. And historically [**] local_font used to be
+ * local_lang; it may be good to return to this simpler variable
+ * later.
+ *
+ * [*] git grep local_font src|grep -v 'local_font [!=]*='
+ *
+ * [**] before afed118a, which improved support for InsetLine;
+ * however, since 0e7ab29f, InsetLine does not depend on the
+ * current font anymore.
+ */
Font const * local_font = nullptr;
/** Document language lyx name
*/
mutable docstring post_macro;
+ /** Whether we in a command that is not \\long (i.e. cannot have multiple
+ * paragraphs)
+ */
+ mutable bool isNonLong = false;
+
/** Whether we are entering a display math inset.
* Needed to correctly strike out deleted math in change tracking.
*/
*/
bool inInclude = false;
+ /** Whether we are inside a footnote.
+ */
+ mutable bool inFootnote = false;
+
/** Whether a btUnit (for multiple biblographies) is open.
*/
mutable bool openbtUnit = false;
/** Whether we are in a table cell.
* For newline, it matters whether its content is aligned or not.
- */
+ */
TableCell inTableCell = NO;
/** Whether we are inside a float or subfloat.
/// Should we output verbatim specific chars?
docstring pass_thru_chars;
+ /// Do not output verbatim specific chars even
+ /// if normally requested
+ docstring no_pass_thru_chars;
+
/// A specific newline macro
std::string newlinecmd;
/// Are we already in a paragraph?
bool docbook_in_par = false;
+ /// Is this element's allowMultiPar useable or not?
+ bool docbook_consider_allow_multi_par = true;
+
/// Does the present context even permit paragraphs?
bool docbook_make_pars = true;
/// Some parameters are output before the rest of the paragraph, they should not be generated a second time.
std::set<InsetArgument const *> docbook_prepended_arguments = {};
+ /// Some parameters are output after the rest of the paragraph, they should not be generated a second time.
+ std::set<InsetArgument const *> docbook_appended_arguments = {};
+
/// Are we generating this material for inclusion in a TOC-like entity?
bool for_toc = false;
bool for_tooltip = false;
/// Are we generating this material for use by advanced search?
- bool for_search = false;
+ enum Search {
+ NoSearch = 0,
+ SearchWithDeleted = 1,
+ SearchWithoutDeleted = 2,
+ SearchQuick = 4,
+ SearchNonOutput = 8
+ };
+
+ inline bool find_effective(void) const { return (for_search != OutputParams::NoSearch); }
+ inline bool find_with_non_output() const { return ((for_search & OutputParams::SearchNonOutput) != 0); }
+ inline bool find_with_deleted() const { return ((for_search & OutputParams::SearchWithDeleted) != 0); }
+ inline void find_set_feature(enum Search set_) { for_search = set_; }
+ inline void find_add_feature(enum Search add_) { for_search |= add_; }
+ inline void find_clean_features(void) { for_search = OutputParams::NoSearch; }
/// Are we generating this material for instant preview?
bool for_preview = false;
/// Explicit output folder, if any is desired
std::string export_folder;
+
+ /// A postponed \\noindent (after VSpace)
+ mutable bool need_noindent = false;
+private:
+ int for_search = NoSearch;
};