Load ucs before utf8x inputenc with recent ucs versions

Otherwise inputenc falls back to utf8 option, which breaks documents
This commit is contained in:
Juergen Spitzmueller 2022-08-16 17:56:07 +02:00
parent f6fff878a7
commit e6b93f7489
2 changed files with 17 additions and 2 deletions

View File

@ -591,6 +591,9 @@
% 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

View 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