commit 83586c8500956f8ac3dd78ac4a7820fc91351a08
Author: Juergen Spitzmueller <[email protected]>
Date: Tue Apr 29 15:33:24 2025 +0200
Work around cleveref bug
This is a longer-standing issue (2021 at least), and since
cleveref development seemed to have stalled, it is likely to
be with us for longer.
See https://tex.stackexchange.com/questions/603514/
---
src/LaTeXFeatures.cpp | 9 ++++++++-
src/insets/InsetRef.cpp | 7 +++++--
2 files changed, 13 insertions(+), 3 deletions(-)
diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index 8d001db060..b4b484da2a 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -1817,6 +1817,13 @@ TexString LaTeXFeatures::getMacros() const
<< '\n';
}
+ if (mustProvide("cleveref:cpagereffix")) {
+ macros << "% Fix for pending cleveref bug:
https://tex.stackexchange.com/a/620066/105447\n"
+ <<
"\\newcommand*{\\@setcpagerefrange}[3]{\\@@setcpagerefrange{#1}{#2}{cref}{#3}}\n"
+ <<
"\\newcommand*{\\@setCpagerefrange}[3]{\\@@setcpagerefrange{#1}{#2}{Cref}{#3}}\n"
+ <<
"\\newcommand*{\\@setlabelcpagerefrange}[3]{\\@@setcpagerefrange{#1}{#2}{labelcref}{#3}}\n";
+ }
+
// change tracking
if (mustProvide("ct-xcolor-ulem")) {
streamsize const prec = macros.os().precision(2);
@@ -2256,7 +2263,7 @@ docstring const LaTeXFeatures::getThmI18nDefs(Layout
const & lay) const
ods << "\\crefname{" << thmname << "}{_(" << lowercase(tn) <<
")}{" << lowercase(tnp) << "}\n"
<< "\\Crefname{" << thmname << "}{_(" << tn << ")}{" << tnp
<< "}\n";
return ods.str();
-}
+ }
return docstring();
}
diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp
index a05522b3b9..741b702e65 100644
--- a/src/insets/InsetRef.cpp
+++ b/src/insets/InsetRef.cpp
@@ -913,9 +913,12 @@ void InsetRef::validate(LaTeXFeatures & features) const
else if (cmd == "nameref")
features.require("nameref");
else if (cmd == "cpageref") {
- if (buffer().masterParams().xref_package == "cleveref")
+ if (buffer().masterParams().xref_package == "cleveref") {
features.require("cleveref");
- else if (buffer().masterParams().xref_package == "zref")
+ if (getLabels().size() > 1)
+ // work around bug in cleveref
+ features.require("cleveref:cpagereffix");
+ } else if (buffer().masterParams().xref_package == "zref")
features.require("zref-clever");
} else if (getLabels().size() > 1 && (cmd == "ref" || cmd ==
"pageref")) {
if (buffer().masterParams().xref_package == "cleveref")
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs