Author: rgheck
Date: Tue Jan 11 20:35:52 2011
New Revision: 37177
URL: http://www.lyx.org/trac/changeset/37177
Log:
Record and use equation numbers. This is towards getting equation
numbering in XHTML output, but it's just as easy to fix this in the LyX
display.
Modified:
lyx-devel/trunk/lib/layouts/eqs-within-sections.module
lyx-devel/trunk/src/mathed/InsetMathHull.cpp
lyx-devel/trunk/src/mathed/InsetMathHull.h
Modified: lyx-devel/trunk/lib/layouts/eqs-within-sections.module
==============================================================================
--- lyx-devel/trunk/lib/layouts/eqs-within-sections.module Tue Jan 11
19:46:41 2011 (r37176)
+++ lyx-devel/trunk/lib/layouts/eqs-within-sections.module Tue Jan 11
20:35:52 2011 (r37177)
@@ -11,3 +11,8 @@
AddToPreamble
\numberwithin{equation}{section}
EndPreamble
+
+Counter equation
+ Within section
+ LabelString "\thesection.\arabic{equation}"
+End
Modified: lyx-devel/trunk/src/mathed/InsetMathHull.cpp
==============================================================================
--- lyx-devel/trunk/src/mathed/InsetMathHull.cpp Tue Jan 11 19:46:41
2011 (r37176)
+++ lyx-devel/trunk/src/mathed/InsetMathHull.cpp Tue Jan 11 20:35:52
2011 (r37177)
@@ -28,11 +28,15 @@
#include "Exporter.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
+#include "Language.h"
#include "LaTeXFeatures.h"
#include "LyXRC.h"
#include "MacroTable.h"
#include "output_xhtml.h"
+#include "Paragraph.h"
+#include "ParIterator.h"
#include "sgml.h"
+#include "TextClass.h"
#include "TextPainter.h"
#include "TocBackend.h"
@@ -46,6 +50,7 @@
#include "frontends/alert.h"
#include "frontends/Painter.h"
+#include "support/convert.h"
#include "support/lassert.h"
#include "support/debug.h"
#include "support/gettext.h"
@@ -143,7 +148,8 @@
InsetMathHull::InsetMathHull(Buffer * buf)
: InsetMathGrid(buf, 1, 1), type_(hullNone), numbered_(1, true),
- label_(1, dummy_pointer), preview_(new RenderPreview(this))
+ numbers_(1, empty_docstring()), label_(1, dummy_pointer),
+ preview_(new RenderPreview(this))
{
//lyxerr << "sizeof InsetMath: " << sizeof(InsetMath) << endl;
//lyxerr << "sizeof MetricsInfo: " << sizeof(MetricsInfo) << endl;
@@ -157,7 +163,8 @@
InsetMathHull::InsetMathHull(Buffer * buf, HullType type)
: InsetMathGrid(buf, getCols(type), 1), type_(type), numbered_(1, true),
- label_(1, dummy_pointer), preview_(new RenderPreview(this))
+ numbers_(1, empty_docstring()), label_(1, dummy_pointer),
+ preview_(new RenderPreview(this))
{
buffer_ = buf;
initMath();
@@ -191,6 +198,7 @@
InsetMathGrid::operator=(other);
type_ = other.type_;
numbered_ = other.numbered_;
+ numbers_ = other.numbers_;
buffer_ = other.buffer_;
for (size_t i = 0; i < label_.size(); ++i)
delete label_[i];
@@ -224,7 +232,18 @@
// MathParser.cpp).
return;
}
+
+ BufferParams const & bp = buffer_->params();
+ string const & lang = it->getParLanguage(bp)->code();
+ Counters & cnts = bp.documentClass().counters();
+ // so we don't have to write it ten times...
+ docstring const eqstr = from_ascii("equation");
+
for (size_t i = 0; i != label_.size(); ++i) {
+ if (numbered(i) && cnts.hasCounter(eqstr)) {
+ cnts.step(eqstr, utype);
+ numbers_[i] = cnts.theCounter(eqstr, lang);
+ }
if (label_[i])
label_[i]->updateBuffer(it, utype);
}
@@ -823,6 +842,7 @@
}
numbered_.insert(numbered_.begin() + row + 1, numbered);
+ numbers_.insert(numbers_.begin() + row + 1, empty_docstring());
label_.insert(label_.begin() + row + 1, dummy_pointer);
if (!lab.empty())
label(row + 1, lab);
@@ -844,6 +864,7 @@
bool const b = numbered_[row];
numbered_[row] = numbered_[row + 1];
numbered_[row + 1] = b;
+ swap(numbers_[row], numbers_[row + 1]);
swap(label_[row], label_[row + 1]);
InsetMathGrid::swapRow(row);
}
@@ -857,6 +878,7 @@
bool const b = numbered_[row - 1];
numbered_[row - 1] = numbered_[row];
numbered_[row] = b;
+ swap(numbers_[row - 1], numbers_[row]);
swap(label_[row - 1], label_[row]);
InsetMathGrid::delRow(row);
return;
@@ -867,6 +889,7 @@
if (row == nrows() + 1)
row--;
numbered_.erase(numbered_.begin() + row);
+ numbers_.erase(numbers_.begin() + row);
delete label_[row];
label_.erase(label_.begin() + row);
}
@@ -892,9 +915,10 @@
{
if (!numbered_[row])
return docstring();
+ docstring const & val = numbers_[row];
if (!label_[row])
- return from_ascii("(#)");
- return '(' + label_[row]->screenLabel() + from_ascii(", #)");
+ return '(' + val + ')';
+ return '(' + val + ',' + label_[row]->screenLabel() + ')';
}
@@ -1173,6 +1197,7 @@
void InsetMathHull::check() const
{
LASSERT(numbered_.size() == nrows(), /**/);
+ LASSERT(numbers_.size() == nrows(), /**/);
LASSERT(label_.size() == nrows(), /**/);
}
Modified: lyx-devel/trunk/src/mathed/InsetMathHull.h
==============================================================================
--- lyx-devel/trunk/src/mathed/InsetMathHull.h Tue Jan 11 19:46:41 2011
(r37176)
+++ lyx-devel/trunk/src/mathed/InsetMathHull.h Tue Jan 11 20:35:52 2011
(r37177)
@@ -224,6 +224,8 @@
///
std::vector<bool> numbered_;
///
+ std::vector<docstring> numbers_;
+ ///
std::vector<InsetLabel *> label_;
///
boost::scoped_ptr<RenderPreview> preview_;