From aede56fa208b05f6498c5f46c681fdb0e34eceaf Mon Sep 17 00:00:00 2001 From: Juergen Spitzmueller Date: Sun, 5 Apr 2020 15:23:22 +0200 Subject: [PATCH] Strip polyglossia options from pdf string Fixes #11813 (cherry picked from commit f9999039ac7278a719513fdd15c34f12846a1189) --- src/Buffer.cpp | 5 ++++- src/Font.cpp | 7 ++++++- src/OutputParams.cpp | 2 +- src/OutputParams.h | 4 ++++ status.23x | 2 ++ 5 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 4c43acbb67..3a8fae7a57 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -1825,8 +1825,10 @@ void 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_hyperref = features.isRequired("hyperref"); + } LYXERR(Debug::LATEX, " Buffer validation done."); bool const output_preamble = @@ -4094,6 +4096,7 @@ unique_ptr Buffer::getSourceCode(odocstream & os, string const & format, LaTeXFeatures features(*this, params(), runparams); validate(features); runparams.use_polyglossia = features.usePolyglossia(); + runparams.use_hyperref = features.isRequired("hyperref"); // latex or literate otexstream ots(os); // output above diff --git a/src/Font.cpp b/src/Font.cpp index ee05efabbe..5c6526db87 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -288,8 +288,13 @@ int Font::latexWriteStartChanges(odocstream & os, BufferParams const & bparams, && language() != prev.language()) { if (!language()->polyglossia().empty()) { string tmp = "\\text" + language()->polyglossia(); - if (!language()->polyglossiaOpts().empty()) + if (!language()->polyglossiaOpts().empty()) { tmp += "[" + language()->polyglossiaOpts() + "]"; + if (runparams.use_hyperref && runparams.moving_arg) + // We need to strip the command for + // the pdf string, see #11813 + tmp = "\\texorpdfstring{" + tmp + "}{}"; + } tmp += "{"; os << from_ascii(tmp); count += tmp.length(); diff --git a/src/OutputParams.cpp b/src/OutputParams.cpp index 5fbbdc3f90..d203761059 100644 --- a/src/OutputParams.cpp +++ b/src/OutputParams.cpp @@ -22,7 +22,7 @@ OutputParams::OutputParams(Encoding const * enc) : flavor(LATEX), math_flavor(NotApplicable), nice(false), is_child(false), moving_arg(false), intitle(false), inbranch(false), inulemcmd(0), local_font(0), master_language(0), encoding(enc), free_spacing(false), - use_babel(false), use_polyglossia(false), + use_babel(false), use_polyglossia(false), use_hyperref(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), diff --git a/src/OutputParams.h b/src/OutputParams.h index cbcca69f1c..6366422c16 100644 --- a/src/OutputParams.h +++ b/src/OutputParams.h @@ -161,6 +161,10 @@ public: */ bool use_polyglossia; + /** Do we use hyperref? + */ + bool use_hyperref; + /** Are we generating multiple indices? */ bool use_indices; diff --git a/status.23x b/status.23x index 59b3f06eb6..23d76afef5 100644 --- a/status.23x +++ b/status.23x @@ -61,6 +61,8 @@ What's new - Fix loading of amsmath in beamer article classes (bug 11768). +- Prevent polyglossia options from being output to PDF TOC (bug 11813). + * USER INTERFACE -- 2.39.5