]> git.lyx.org Git - lyx.git/blobdiff - src/tex2lyx/Context.cpp
Fix #10778 (issue with CJK and language nesting)
[lyx.git] / src / tex2lyx / Context.cpp
index 33050489a09f003deacaecb2a09b2bcf6da62eb7..2f49a071f5f663dd5df3b3a108cafaefe0e5225c 100644 (file)
@@ -50,7 +50,8 @@ bool operator==(TeXFont const & f1, TeXFont const & f2)
                f1.size == f2.size &&
                f1.family == f2.family &&
                f1.series == f2.series &&
-               f1.shape == f2.shape;
+               f1.shape == f2.shape &&
+               f1.language == f2.language;
 }
 
 
@@ -65,6 +66,8 @@ void output_font_change(ostream & os, TeXFont const & oldfont,
                os << "\n\\shape " << newfont.shape << '\n';
        if (oldfont.size != newfont.size)
                os << "\n\\size " << newfont.size << '\n';
+       if (oldfont.language != newfont.language)
+               os << "\n\\lang " << newfont.language << '\n';
 }
 
 
@@ -79,7 +82,8 @@ Context::Context(bool need_layout_,
        : need_layout(need_layout_),
          need_end_layout(false), need_end_deeper(false),
          has_item(false), deeper_paragraph(false),
-         new_layout_allowed(true), textclass(textclass_),
+         new_layout_allowed(true), merging_hyphens_allowed(true),
+         textclass(textclass_),
          layout(layout_), parent_layout(parent_layout_),
          font(font_)
 {
@@ -93,7 +97,7 @@ Context::Context(bool need_layout_,
 Context::~Context()
 {
        if (!par_extra_stuff.empty())
-               cerr << "Bug: Ignoring par-level extra stuff '" 
+               cerr << "Bug: Ignoring par-level extra stuff '"
                     << par_extra_stuff << '\'' << endl;
 }
 
@@ -110,6 +114,9 @@ void Context::begin_layout(ostream & os, Layout const * const & l)
        }
        // FIXME: This is not enough for things like
        // \\Huge par1 \\par par2
+       // FIXME: If the document language is not english this outputs a
+       // superflous language change. Fortunately this is only file format
+       // bloat and does not change the TeX export of LyX.
        output_font_change(os, normalfont, font);
 }
 
@@ -147,7 +154,6 @@ void Context::check_layout(ostream & os)
                }
                need_layout = false;
                need_end_layout = true;
-               os << "\n";
                empty = false;
        }
 }
@@ -235,6 +241,8 @@ void Context::dump(ostream & os, string const & desc) const
                os << "deeper_paragraph ";
        if (new_layout_allowed)
                os << "new_layout_allowed ";
+       if (merging_hyphens_allowed)
+               os << "merging_hyphens_allowed ";
        if (!extra_stuff.empty())
                os << "extrastuff=[" << extra_stuff << "] ";
        if (!par_extra_stuff.empty())