]> git.lyx.org Git - lyx.git/commitdiff
Load ucs before utf8x inputenc with recent ucs versions
authorJuergen Spitzmueller <spitz@lyx.org>
Tue, 16 Aug 2022 15:56:07 +0000 (17:56 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Tue, 16 Aug 2022 15:56:07 +0000 (17:56 +0200)
Otherwise inputenc falls back to utf8 option, which breaks documents

lib/chkconfig.ltx
src/BufferParams.cpp

index d2613e9c49603fc67c03407b3471b69f0f34bd38..3f5427c4408f94dc332fa732e54fa83afe586c8a 100644 (file)
 % With this version, hyperref option unicode is true
 % by default
 \TestPackageVersion{hyperref}{2021/02/04}
+% As of this version, the ucs package must be explicitly
+% loaded to get utf8x (rather than utf8) encoding tables
+\TestPackageVersion{ucs}{2022/08/07}
 
 %%% Document classes
 % The list of layout files has been put in this file here by the
index 3bb9445adb1917c32c56b9cfb1a34eda7cea753c..d25dd05bac2e55da31f0afe52be4446e7a0e0fb1 100644 (file)
@@ -3440,8 +3440,20 @@ void BufferParams::writeEncodingPreamble(otexstream & os,
                        if (features.isRequired("japanese")
                            || features.isProvided("inputenc"))
                                break;
-                       os << "\\usepackage[" << from_ascii(encoding().latexName());
-                       if (features.runparams().flavor == Flavor::LuaTeX
+                       string const doc_encoding = encoding().latexName();
+                       // The 2022 release of ucs.sty uses the default utf8
+                       // inputenc encoding with 'utf8x' inputenc if the ucs
+                       // package is not loaded before inputenc.
+                       // This breaks existing documents that use utf8x
+                       // and also makes utf8x redundant.
+                       // Thus we load ucs.sty in order to keep functionality
+                       // that would otherwise be silently dropped.
+                       if (doc_encoding == "utf8x"
+                           && features.isAvailable("ucs-2022/08/07")
+                           && !features.isProvided("ucs"))
+                               os << "\\usepackage{ucs}\n";
+                       os << "\\usepackage[" << from_ascii(doc_encoding);
+                       if (features.runparams().flavor == Flavor::LuaTeX
                            || features.runparams().flavor == Flavor::DviLuaTeX)
                                os << "]{luainputenc}\n";
                        else