]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/Context.h
Fix #10778 (issue with CJK and language nesting)
[lyx.git] / src / tex2lyx / Context.h
index 564b3327133a3632249a0c4d75a2866b704582cd..ad95f02b0b8bd374be5b90532146e9faeb2f468f 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef CONTEXT_H
 #define CONTEXT_H
 
-#include "TextClass.h"
+#include "tex2lyx.h"
 
 #include <iosfwd>
 
@@ -40,11 +40,13 @@ public:
                family = "default";
                series = "default";
                shape = "default";
+               language = "english";
        }
        std::string size;
        std::string family;
        std::string series;
        std::string shape;
+       std::string language;
 };
 
 
@@ -77,9 +79,9 @@ void output_font_change(std::ostream & os, TeXFont const & oldfont,
 class Context {
 public:
        Context(bool need_layout_,
-               TextClass const & textclass_,
-               LayoutPtr layout_ = LayoutPtr(),
-               LayoutPtr parent_layout_= LayoutPtr(),
+               TeX2LyXDocClass const & textclass_,
+               Layout const * layout_ = 0,
+               Layout const * parent_layout_= 0,
                TeXFont font_ = TeXFont());
        ~Context();
 
@@ -111,13 +113,21 @@ public:
        /// Add extra stuff if not already there
        void add_extra_stuff(std::string const &);
 
+       /*!
+        *  Add paragraph-level extra stuff if not already there. This
+        *  will be reset at the next check_layout()
+        */
+       void add_par_extra_stuff(std::string const &);
+
        /// Do we need to output some \\begin_layout command before the
        /// next characters?
        bool need_layout;
        /// Do we need to output some \\end_layout command
        bool need_end_layout;
-       /// We may need to add something after this \\begin_layout command
+       /// We may need to add something after each \\begin_layout command
        std::string extra_stuff;
+       /// We may need to add something after this \\begin_layout command
+       std::string par_extra_stuff;
        /// If there has been an \\begin_deeper, we'll need a matching
        /// \\end_deeper
        bool need_end_deeper;
@@ -136,19 +146,24 @@ public:
         * would not work.
         */
        bool new_layout_allowed;
+       /// May -- be converted to endash and --- to emdash?
+       bool merging_hyphens_allowed;
        /// Did we output anything yet in any context?
        static bool empty;
 
        /// The textclass of the document. Could actually be a global variable
-       TextClass const & textclass;
+       TeX2LyXDocClass const & textclass;
        /// The layout of the current paragraph
-       LayoutPtr layout;
+       Layout const * layout;
        /// The layout of the outer paragraph (for environment layouts)
-       LayoutPtr parent_layout;
+       Layout const * parent_layout;
        /// font attributes of this context
        TeXFont font;
        /// font attributes of normal text
        static TeXFont normalfont;
+
+private:
+       void begin_layout(std::ostream & os, Layout const * const & l);
 };