]> git.lyx.org Git - features.git/commitdiff
Assign equation numbers in updateBuffer instead of
authorAlexander Dunlap <alexander.dunlap@gmail.com>
Fri, 25 Aug 2023 01:14:53 +0000 (21:14 -0400)
committerRichard Kimberly Heck <rikiheck@lyx.org>
Fri, 25 Aug 2023 01:14:53 +0000 (21:14 -0400)
addToToc so that they can be used in updateToc to
assign label cross-refs

src/insets/InsetLabel.h
src/mathed/InsetMathHull.cpp

index 964d8dec5ac43a923a766fb57bfa65a03a01c52e..91189e59b551a624dda34dd6f747a21d33360fb8 100644 (file)
@@ -31,6 +31,8 @@ public:
        docstring const & prettyCounter() const { return pretty_counter_; }
        ///
        docstring const & formattedCounter() const { return formatted_counter_; }
+        ///
+        void setCounterValue(docstring cv) { counter_value_ = cv; }
        ///
        void setPrettyCounter(docstring pc) { pretty_counter_ = pc; }
         ///
index 0004d1e17d413f9bcc80502083753df88dd780fd..d2c215916722ce6b2bf75a8411cfc3a086b2ed31 100644 (file)
@@ -274,6 +274,32 @@ void InsetMathHull::updateBuffer(ParIterator const & it, UpdateType utype, bool
                if (label_[i])
                        label_[i]->updateBuffer(it, utype, deleted);
        }
+        // set up equation numbers
+
+       // compute first and last item
+       row_type first = nrows();
+       for (row_type row = 0; row != nrows(); ++row)
+               if (numbered(row)) {
+                       first = row;
+                       break;
+               }
+       if (first != nrows()) {
+               row_type last = nrows() - 1;
+               for (; last != 0; --last)
+                       if (numbered(last))
+                               break;
+
+               for (row_type row = 0; row != nrows(); ++row) {
+                       if (!numbered(row))
+                               continue;
+                       if (label_[row]) {
+                               label_[row]->setCounterValue(numbers_[row]);
+                               label_[row]->setPrettyCounter("(" + numbers_[row] + ")");
+                               label_[row]->setFormattedCounter("(" + numbers_[row] + ")");
+                       }
+               }
+       }
+
        // pass down
        InsetMathGrid::updateBuffer(it, utype, deleted);
 }
@@ -304,9 +330,8 @@ void InsetMathHull::addToToc(DocIterator const & pit, bool output_active,
                if (numbered(last))
             break;
 
-    TocBuilder & b = backend.builder("equation");
-    // add equation numbers
-       b.pushItem(pit, docstring(), output_active);
+       TocBuilder & b = backend.builder("equation");
+        b.pushItem(pit, docstring(), output_active);
        if (first != last)
                b.argumentItem(bformat(from_ascii("(%1$s-%2$s)"),
                                       numbers_[first], numbers_[last]));
@@ -321,8 +346,6 @@ void InsetMathHull::addToToc(DocIterator const & pit, bool output_active,
                if (!numbered(row))
                        continue;
                if (label_[row]) {
-                       label_[row]->setPrettyCounter(_("Equation") + " " + numbers_[row]);
-                       label_[row]->setFormattedCounter(_("Equation") + " " + numbers_[row]);
                        label_[row]->addToToc(pit, output_active, utype, backend);
                }
                docstring label = nicelabel(row);