]> git.lyx.org Git - lyx.git/blobdiff - src/output_latex.cpp
* Doxy.
[lyx.git] / src / output_latex.cpp
index 2f919f4fec998973bbf7375dd1d94d1aae2d6b5c..da12b200128fe8a483b00a1f4e652887baa22ab4 100644 (file)
@@ -51,7 +51,7 @@ enum OpenEncoding {
 };
 
 static int open_encoding_ = none;
-static bool cjk_inherited_ = false;
+static int cjk_inherited_ = 0;
 
 
 ParagraphList::const_iterator
@@ -183,7 +183,7 @@ TeXEnvironment(Buffer const & buf,
        if (par_language->encoding()->package() == Encoding::CJK &&
            open_encoding_ != CJK && pit->isMultiLingual(bparams)) {
                os << "\\begin{CJK}{" << from_ascii(par_language->encoding()->latexName())
-                  << "}{}%\n";
+                  << "}{" << from_ascii(bparams.fontsCJK) << "}%\n";
                open_encoding_ = CJK;
                cjk_nested = true;
                texrow.newline();
@@ -316,9 +316,11 @@ TeXOnePar(Buffer const & buf,
        runparams.moving_arg |= style.needprotect;
 
        bool const maintext = text.isMainText(buf);
-       // we are at the beginning of an inset and CJK is already open.
-       if (pit == paragraphs.begin() && !maintext && open_encoding_ == CJK) {
-               cjk_inherited_ = true;
+       // we are at the beginning of an inset and CJK is already open;
+       // we count inheritation levels to get the inset nesting right.
+       if (pit == paragraphs.begin() && !maintext
+           && (cjk_inherited_ > 0 || open_encoding_ == CJK)) {
+               cjk_inherited_ += 1;
                open_encoding_ = none;
        }
 
@@ -449,9 +451,9 @@ TeXOnePar(Buffer const & buf,
                                // the following is necessary after a CJK environment in a multilingual
                                // context (nesting issue).
                                if (par_language->encoding()->package() == Encoding::CJK &&
-                                   open_encoding_ != CJK && !cjk_inherited_) {
+                                   open_encoding_ != CJK && cjk_inherited_ == 0) {
                                        os << "\\begin{CJK}{" << from_ascii(par_language->encoding()->latexName())
-                                          << "}{}%\n";
+                                          << "}{" << from_ascii(bparams.fontsCJK) << "}%\n";
                                        open_encoding_ = CJK;
                                        texrow.newline();
                                }
@@ -758,7 +760,7 @@ void latexParagraphs(Buffer const & buf,
        // if the document's language is a CJK language
        if (maintext && bparams.encoding().package() == Encoding::CJK) {
                os << "\\begin{CJK}{" << from_ascii(bparams.encoding().latexName())
-               << "}{}%\n";
+               << "}{" << from_ascii(bparams.fontsCJK) << "}%\n";
                texrow.newline();
                open_encoding_ = CJK;
        }
@@ -858,9 +860,10 @@ void latexParagraphs(Buffer const & buf,
        }
 
        // reset inherited encoding
-       if (cjk_inherited_) {
-               open_encoding_ = CJK;
-               cjk_inherited_ = false;
+       if (cjk_inherited_ > 0) {
+               cjk_inherited_ -= 1;
+               if (cjk_inherited_ == 0)
+                       open_encoding_ = CJK;
        }
 }
 
@@ -934,7 +937,8 @@ pair<bool, int> switchEncoding(odocstream & os, BufferParams const & bparams,
                                os << "\\egroup";
                                count += 7;
                        }
-                       os << "\\begin{CJK}{" << inputenc_arg << "}{}";
+                       os << "\\begin{CJK}{" << inputenc_arg << "}{"
+                          << from_ascii(bparams.fontsCJK) << "}";
                        open_encoding_ = CJK;
                        return make_pair(true, count + 15);
                }