]> git.lyx.org Git - features.git/commitdiff
Use CJKutf8 package if input encoding is "utf8" and a used language requires CJK.
authorGünter Milde <milde@lyx.org>
Wed, 13 Mar 2019 10:31:25 +0000 (11:31 +0100)
committerJean-Marc Lasgouttes <lasgouttes@lyx.org>
Thu, 18 Jun 2020 13:48:16 +0000 (15:48 +0200)
CJKutf8 now used also if a secondary language requires CJK.

development/autotests/invertedTests
src/Buffer.cpp
src/OutputParams.cpp
src/OutputParams.h
src/output_latex.cpp

index cc685c4aa72cb85c14c69ada52f1f07b428a8738..e035ed008f9425529ca1c10190ca6dc5290161f9 100644 (file)
@@ -69,11 +69,6 @@ export/examples/(|es/)modernCV_lyx(16|20)
 export/export/latex/fa-OT1_pdf2
 
 # CJK for multilingual documents:
-#
-# input-encoding "utf8" should work for documents using a CJK language
-# also if the main language does not require CJK:
-export/export/latex/CJK/en-de-el-ru-.*_utf8_pdf2
-#
 # some "language default" legacy encodings fail (missing fonts)
 export/export/latex/CJK/ko_default_pdf2
 
index a7e5d5ec215d02f6ae9689ec327878898915ca1f..22647351d462a0d940d24dedaabd5bf57356c4d7 100644 (file)
@@ -1851,8 +1851,10 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os,
        LaTeXFeatures features(*this, params(), runparams);
        validate(features);
        // This is only set once per document (in master)
-       if (!runparams.is_child)
+       if (!runparams.is_child) {
                runparams.use_polyglossia = features.usePolyglossia();
+               runparams.use_CJK = features.mustProvide("CJK");
+       }
        LYXERR(Debug::LATEX, "  Buffer validation done.");
 
        bool const output_preamble =
index d10bad490fad80c7bc016be29b21c7b7437817b3..cb9d50c175ed17416f4abf46567dd9f98290e603 100644 (file)
@@ -20,8 +20,9 @@ namespace lyx {
 
 OutputParams::OutputParams(Encoding const * enc)
        : flavor(LATEX), math_flavor(NotApplicable), nice(false), is_child(false),
-         moving_arg(false), intitle(false), inulemcmd(0), local_font(0), master_language(0),
-         encoding(enc), free_spacing(false), use_babel(false), use_polyglossia(false),
+         moving_arg(false), intitle(false), inulemcmd(0), local_font(0), 
+         master_language(0), encoding(enc), free_spacing(false),
+         use_babel(false), use_polyglossia(false), use_CJK(false),
          use_indices(false), use_japanese(false), linelen(0), depth(0),
          exportdata(new ExportData), inDisplayMath(false), wasDisplayMath(false),
          inComment(false), openbtUnit(false), only_childbibs(false),
@@ -38,6 +39,8 @@ OutputParams::OutputParams(Encoding const * enc)
        // OutputParams runparams(0);
        if (enc && enc->package() == Encoding::japanese)
                use_japanese = true;
+       if (enc && enc->package() == Encoding::CJK)
+               use_CJK = true;
 }
 
 
index 8dbe00203d103bf4536f80d0d547af675032cb0c..ef7c16d11781bcd5dc30d1422c09b25df8499d78 100644 (file)
@@ -159,6 +159,9 @@ public:
        */
        bool use_polyglossia;
 
+       /// Do we use the CJK package?
+       bool use_CJK;
+
        /** Are we generating multiple indices?
        */
        bool use_indices;
index 7cc5b73e225a472af7d2ee53f6d6b56c20b23b99..d515ef488606490cc77a717d64a6a34523638137 100644 (file)
@@ -1417,11 +1417,8 @@ void latexParagraphs(Buffer const & buf,
        if (maintext && !is_child && !bparams.useNonTeXFonts
            && (bparams.encoding().package() == Encoding::CJK
                        || (bparams.encoding().name() == "utf8"
-                               && bparams.language->encoding()->package() == Encoding::CJK)
-                               //  FIXME: should test if any language requires CJK
-                               //  && LaTeXFeatures::mustProvide("CJK"))
-                               // error: cannot call member function ‘bool lyx::LaTeXFeatures::mustProvide(const string&) const’ without object
-                  )) {
+                               && runparams.use_CJK))
+          ) {
                docstring const cjkenc = bparams.encoding().iconvName() == "UTF-8"
                                                                 ? from_ascii("UTF8") : from_ascii(bparams.encoding().latexName());
                os << "\\begin{CJK}{" << cjkenc