[LyX/master] Assign equation numbers in updateBuffer instead of addToToc so that they can be used in updateToc to assign label cross-refs
Richard Kimberly Heck
rikiheck at lyx.org
Thu Aug 24 23:59:07 UTC 2023
commit ca3004fc6782c5bd4055a13d19dcdd1995e86ee3
Author: Alexander Dunlap <alexander.dunlap at gmail.com>
Date: Thu Aug 24 21:14:53 2023 -0400
Assign equation numbers in updateBuffer instead of
addToToc so that they can be used in updateToc to
assign label cross-refs
---
src/insets/InsetLabel.h | 2 ++
src/mathed/InsetMathHull.cpp | 33 ++++++++++++++++++++++++++++-----
2 files changed, 30 insertions(+), 5 deletions(-)
diff --git a/src/insets/InsetLabel.h b/src/insets/InsetLabel.h
index 964d8de..91189e5 100644
--- a/src/insets/InsetLabel.h
+++ b/src/insets/InsetLabel.h
@@ -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; }
///
diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 0004d1e..d2c2159 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -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);
More information about the lyx-cvs
mailing list