commit 6725541e200862f18886ca0750d69be6f46a3ed4
Author: Juergen Spitzmueller <sp...@lyx.org>
Date:   Tue Apr 1 15:40:37 2025 +0200

    Localize simple (\ref and \prettyref) crossref lists
---
 src/insets/InsetRef.cpp | 41 ++++++++++++++++++++++++++++++-----------
 1 file changed, 30 insertions(+), 11 deletions(-)

diff --git a/src/insets/InsetRef.cpp b/src/insets/InsetRef.cpp
index 02daa51053..8f6f540719 100644
--- a/src/insets/InsetRef.cpp
+++ b/src/insets/InsetRef.cpp
@@ -360,21 +360,32 @@ void InsetRef::latex(otexstream & os, OutputParams const 
& rp) const
                                os << "[" << opts << "]";
                }
                os << "{";
-               for (auto const & l : label) {
+               vector<docstring>::const_iterator it = labels.begin();
+               vector<docstring>::const_iterator en = labels.end();
+               for (size_t i = 0; it != en; ++it, ++i) {
                        if (!first) {
-                               if (buffer().masterParams().xref_package == 
"prettyref")
-                                       os << "}, \\ref{";
-                               else if (useRange())
+                               if (buffer().masterParams().xref_package == 
"prettyref") {
+                                       if (!first) {
+                                               os << "}";
+                                               if (labels.size() == 2)
+                                                       os << 
buffer().B_("[[reference 1]] and [[reference2]]");
+                                               else if (i > 0 && i == 
labels.size() - 1)
+                                                       os << 
buffer().B_("[[reference 1, ...]], and [[reference n]]");
+                                               else
+                                                       os << 
buffer().B_("[[reference 1]], [[reference2, ...]]");
+                                       }
+                                       os << "\\ref{";
+                               } else if (useRange())
                                        os << "}{";
                                else
                                        os << ",";
                        }
-                       if (contains(l, ' '))
+                       if (contains(*it, ' '))
                                // refstyle bug: labels with blanks need to be 
grouped
                                // otherwise the blanks will be gobbled
-                               os << "{" << l << "}";
+                               os << "{" << *it << "}";
                        else
-                               os << l;
+                               os << *it;
                        first = false;
                }
                os << "}";
@@ -526,13 +537,21 @@ void InsetRef::latex(otexstream & os, OutputParams const 
& rp) const
                os << p.getCommand(rp, use_nolink);
        } else {
                bool first = true;
-               for (auto const & label : labels) {
-                       if (!first)
-                               os << ", ";
+               vector<docstring>::const_iterator it = labels.begin();
+               vector<docstring>::const_iterator en = labels.end();
+               for (size_t i = 0; it != en; ++it, ++i) {
+                       if (!first) {
+                               if (labels.size() == 2)
+                                       os << buffer().B_("[[reference 1]] and 
[[reference2]]");
+                               else if (i > 0 && i == labels.size() - 1)
+                                       os << buffer().B_("[[reference 1, 
...]], and [[reference n]]");
+                               else
+                                       os << buffer().B_("[[reference 1]], 
[[reference2, ...]]");
+                       }
                        os << "\\" << cmd;
                        if (use_nolink)
                                os << "*";
-                       os << '{' << label << '}';
+                       os << '{' << *it << '}';
                        first = false;
                }
        }
-- 
lyx-cvs mailing list
lyx-cvs@lists.lyx.org
https://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to