\begin_inset Flex Code
status collapsed
+\begin_layout Plain Layout
+ResumeCounter
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+] Resumes a counter that is usually reset at each new sequence of layouts.
+ This is currently only useful when
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+LabelType
+\end_layout
+
+\end_inset
+
+ is
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Enumerate
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
\begin_layout Plain Layout
RightDelim
\end_layout
\begin_inset Flex Code
status collapsed
+\begin_layout Plain Layout
+StepMasterCounter
+\end_layout
+
+\end_inset
+
+ [
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\emph on
+0
+\end_layout
+
+\end_inset
+
+,
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+1
+\end_layout
+
+\end_inset
+
+] Steps the master counter of a given counter at the beginning of a new
+ sequence of layouts.
+ This is currently only useful when
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+LabelType
+\end_layout
+
+\end_inset
+
+ is
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Enumerate
+\end_layout
+
+\end_inset
+
+.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
\begin_layout Plain Layout
TextFont
\end_layout
# This script will update a .layout file to current format
# The latest layout format is also defined in src/TextClass.cpp
-currentFormat = 60
+currentFormat = 61
# Incremented to format 4, 6 April 2007, lasgouttes
# Incremented to format 60, 25 March 2016 by lasgouttes
# Rename caption subtype LongTableNoNumber to Unnumbered
+# Incremented to format 61, 14 October 2016 by spitz
+# New Layout tags "ResumeCounter", "StepMasterCounter"
+
# Do not forget to document format change in Customization
# Manual (section "Declaring a new text class").
i += 1
continue
+ if format == 60:
+ # nothing to do.
+ i += 1
+ continue
+
if format == 59:
match = re_InsetLayout_CaptionLTNN.match(lines[i])
if not match:
--prev_it.top().pit();
Paragraph const & prev_par = *prev_it;
if (prev_par.getDepth() <= cur_depth)
- return prev_par.layout().labeltype != LABEL_ENUMERATE;
+ return prev_par.layout().name() != par.layout().name();
}
// start of nested inset: reset
return true;
break;
}
+ // Increase the master counter?
+ if (layout.stepmastercounter && needEnumCounterReset(it))
+ counters.stepMaster(enumcounter, utype);
+
// Maybe we have to reset the enumeration counter.
- if (needEnumCounterReset(it))
+ if (!layout.resumecounter && needEnumCounterReset(it))
counters.reset(enumcounter);
counters.step(enumcounter, utype);
}
+void Counters::stepMaster(docstring const & ctr, UpdateType utype)
+{
+ CounterList::iterator it = counterList_.find(ctr);
+ if (it == counterList_.end()) {
+ lyxerr << "step: Counter does not exist: "
+ << to_utf8(ctr) << endl;
+ return;
+ }
+ step(it->second.master(), utype);
+}
+
+
void Counters::step(docstring const & ctr, UpdateType utype)
{
CounterList::iterator it = counterList_.find(ctr);
int value(docstring const & ctr) const;
/// Reset recursively all the counters that are slaves of the one named by \c ctr.
void resetSlaves(docstring const & ctr);
+ /// Increment by one master of counter named by \c ctr.
+ /// This also resets the counter named by \c ctr.
+ /// \param utype determines whether we track the counters.
+ void stepMaster(docstring const & ctr, UpdateType utype);
/// Increment by one counter named by \c ctr, and zeroes slave
/// counter(s) for which it is the master.
/// \param utype determines whether we track the counters.
LT_SPELLCHECK,
LT_REFPREFIX,
LT_RESETARGS,
+ LT_RESUMECOUNTER,
+ LT_STEPMASTERCOUNTER,
LT_RIGHTDELIM,
LT_FORCELOCAL,
LT_TOGGLE_INDENT,
unknown_ = false;
margintype = MARGIN_STATIC;
latextype = LATEX_PARAGRAPH;
+ resumecounter = false;
+ stepmastercounter = false;
intitle = false;
inpreamble = false;
needprotect = false;
{ "refprefix", LT_REFPREFIX },
{ "requires", LT_REQUIRES },
{ "resetargs", LT_RESETARGS },
+ { "resumecounter", LT_RESUMECOUNTER },
{ "rightdelim", LT_RIGHTDELIM },
{ "rightmargin", LT_RIGHTMARGIN },
{ "spacing", LT_SPACING },
{ "spellcheck", LT_SPELLCHECK },
+ { "stepmastercounter", LT_STEPMASTERCOUNTER },
{ "textfont", LT_TEXTFONT },
{ "toclevel", LT_TOCLEVEL },
{ "toggleindent", LT_TOGGLE_INDENT },
}
break;
+ case LT_RESUMECOUNTER:
+ lex >> resumecounter;
+ break;
+
+ case LT_STEPMASTERCOUNTER:
+ lex >> stepmastercounter;
+ break;
+
case LT_ARGUMENT:
readArgument(lex);
break;
}
os << "\tInTitle " << intitle << "\n"
"\tInPreamble " << inpreamble << "\n"
- "\tTocLevel " << toclevel << '\n';
+ "\tTocLevel " << toclevel << "\n"
+ "\tResumeCounter " << resumecounter << "\n"
+ "\tStepMasterCounter " << stepmastercounter << '\n';
// ResetArgs does not make sense here
for (LaTeXArgMap::const_iterator it = latexargs_.begin();
it != latexargs_.end(); ++it)
bool inpreamble;
/// Which counter to step
docstring counter;
+ /// Resume counter?
+ bool resumecounter;
+ /// Step master counter?
+ bool stepmastercounter;
/// Prefix to use when creating labels
docstring refprefix;
/// Depth of XML command
// You should also run the development/tools/updatelayouts.py script,
// to update the format of all of our layout files.
//
-int const LAYOUT_FORMAT = 60; //lasgouttes LongTableNoNumber => Unnumbered
+int const LAYOUT_FORMAT = 61; //spitz ResumeCounter, StepMasterCounter
// Layout format for the current lyx file format. Controls which format is