From: Juergen Spitzmueller Date: Sun, 27 May 2018 09:54:07 +0000 (+0200) Subject: Fix encoding problems in \input@path X-Git-Tag: lyx-2.4.0dev-acb2ca7b~3396 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=8bd65041f2e22bf4c37219c7008a7e4e2bda2799;p=features.git Fix encoding problems in \input@path As of LaTeX2e 2018, characters are made active earlier, which results in new expansion problems. Following a suggestion of Markus Kohm (pc) and the TL mailing list [1], we embrace non-ASCII input paths in \detokenize. This relies on e-tex, but I think we can assume this is nowadays available everywhere. [1] http://tug.org/pipermail/tex-live/2018-May/041691.html Fixes: #11146 --- diff --git a/src/Buffer.cpp b/src/Buffer.cpp index b436a0f8a5..e05c4d07bb 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -1898,8 +1898,7 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os, "file path name."), inputpath, uncodable_glyphs)); } else { - string docdir = - latex_path(original_path); + string docdir = os::latex_path(original_path); if (contains(docdir, '#')) { docdir = subst(docdir, "#", "\\#"); os << "\\catcode`\\#=11" @@ -1910,9 +1909,20 @@ Buffer::ExportStatus Buffer::writeLaTeXSource(otexstream & os, os << "\\catcode`\\%=11" "\\def\\%{%}\\catcode`\\%=14\n"; } + bool const detokenize = !isAscii(from_utf8(docdir)); + bool const quote = contains(docdir, ' '); os << "\\makeatletter\n" - << "\\def\\input@path{{" - << docdir << "}}\n" + << "\\def\\input@path{{"; + if (detokenize) + os << "\\detokenize{"; + if (quote) + os << "\""; + os << docdir; + if (quote) + os << "\""; + if (detokenize) + os << "}"; + os << "}}\n" << "\\makeatother\n"; } }