}
+bool Counters::copy(docstring const & cnt, docstring const & newcnt)
+{
+ auto const it = counterList_.find(cnt);
+ if (it == counterList_.end())
+ return false;
+ counterList_[newcnt] = it->second;
+ return true;
+}
+
+
bool Counters::remove(docstring const & cnt)
{
bool retval = counterList_.erase(cnt);
void reset();
/// Reset counters matched by match string.
void reset(docstring const & match);
+ /// Copy counter \p cnt to \p newcnt.
+ bool copy(docstring const & cnt, docstring const & newcnt);
/// Remove counter \p cnt.
bool remove(docstring const & cnt);
/** returns the expanded string representation of counter \c
#include "ParIterator.h"
#include "TextClass.h"
+#include "support/debug.h"
#include "support/gettext.h"
#include "support/lstrings.h"
docstring custom_label = translateIfPossible(il.labelstring());
Counters & cnts = bp.documentClass().counters();
+
+ // Special case for `subequations' module.
+ if (il.latextype() == InsetLaTeXType::ENVIRONMENT &&
+ il.latexname() == "subequations") {
+ docstring equation(from_ascii("equation"));
+ docstring parentequation(from_ascii("parentequation"));
+ cnts.step(equation, utype);
+ // save a copy of the equation counter definition
+ cnts.copy(equation, parentequation);
+ // redefine the equation counter definition
+ docstring const eqlabel =
+ cnts.theCounter(equation, it->getParLanguage(bp)->code());
+ cnts.newCounter(equation, parentequation,
+ eqlabel + from_ascii("\\alph{equation}"),
+ eqlabel + from_ascii("\\alph{equation}"),
+ cnts.guiName(parentequation));
+ InsetCollapsible::updateBuffer(it, utype, deleted);
+ // reset equation counter as it was.
+ cnts.copy(parentequation, equation);
+ cnts.remove(parentequation);
+ return;
+ }
+
docstring const & count = il.counter();
bool const have_counter = cnts.hasCounter(count);
if (have_counter) {