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

Reply via email to