mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-09 18:31:04 +00:00
New layout tags for better counter handling
* ResumeCounter: allow to resume an (enumerate) counter * StepMasterCounter: allow to increase a master counter
This commit is contained in:
parent
91f5d90971
commit
0eb651a2cf
@ -14684,6 +14684,62 @@ CopyStyle
|
|||||||
\begin_inset Flex Code
|
\begin_inset Flex Code
|
||||||
status collapsed
|
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
|
\begin_layout Plain Layout
|
||||||
RightDelim
|
RightDelim
|
||||||
\end_layout
|
\end_layout
|
||||||
@ -14918,6 +14974,63 @@ status collapsed
|
|||||||
\begin_inset Flex Code
|
\begin_inset Flex Code
|
||||||
status collapsed
|
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
|
\begin_layout Plain Layout
|
||||||
TextFont
|
TextFont
|
||||||
\end_layout
|
\end_layout
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
# This script will update a .layout file to current format
|
# This script will update a .layout file to current format
|
||||||
|
|
||||||
# The latest layout format is also defined in src/TextClass.cpp
|
# 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 4, 6 April 2007, lasgouttes
|
||||||
@ -202,6 +202,9 @@ currentFormat = 60
|
|||||||
# Incremented to format 60, 25 March 2016 by lasgouttes
|
# Incremented to format 60, 25 March 2016 by lasgouttes
|
||||||
# Rename caption subtype LongTableNoNumber to Unnumbered
|
# 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
|
# Do not forget to document format change in Customization
|
||||||
# Manual (section "Declaring a new text class").
|
# Manual (section "Declaring a new text class").
|
||||||
|
|
||||||
@ -445,6 +448,11 @@ def convert(lines, end_format):
|
|||||||
i += 1
|
i += 1
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
if format == 60:
|
||||||
|
# nothing to do.
|
||||||
|
i += 1
|
||||||
|
continue
|
||||||
|
|
||||||
if format == 59:
|
if format == 59:
|
||||||
match = re_InsetLayout_CaptionLTNN.match(lines[i])
|
match = re_InsetLayout_CaptionLTNN.match(lines[i])
|
||||||
if not match:
|
if not match:
|
||||||
|
@ -4673,7 +4673,7 @@ static bool needEnumCounterReset(ParIterator const & it)
|
|||||||
--prev_it.top().pit();
|
--prev_it.top().pit();
|
||||||
Paragraph const & prev_par = *prev_it;
|
Paragraph const & prev_par = *prev_it;
|
||||||
if (prev_par.getDepth() <= cur_depth)
|
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
|
// start of nested inset: reset
|
||||||
return true;
|
return true;
|
||||||
@ -4757,8 +4757,12 @@ void Buffer::Impl::setLabel(ParIterator & it, UpdateType utype) const
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Increase the master counter?
|
||||||
|
if (layout.stepmastercounter && needEnumCounterReset(it))
|
||||||
|
counters.stepMaster(enumcounter, utype);
|
||||||
|
|
||||||
// Maybe we have to reset the enumeration counter.
|
// Maybe we have to reset the enumeration counter.
|
||||||
if (needEnumCounterReset(it))
|
if (!layout.resumecounter && needEnumCounterReset(it))
|
||||||
counters.reset(enumcounter);
|
counters.reset(enumcounter);
|
||||||
counters.step(enumcounter, utype);
|
counters.step(enumcounter, utype);
|
||||||
|
|
||||||
|
@ -278,6 +278,18 @@ void Counters::resetSlaves(docstring const & ctr)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
void Counters::step(docstring const & ctr, UpdateType utype)
|
||||||
{
|
{
|
||||||
CounterList::iterator it = counterList_.find(ctr);
|
CounterList::iterator it = counterList_.find(ctr);
|
||||||
|
@ -130,6 +130,10 @@ public:
|
|||||||
int value(docstring const & ctr) const;
|
int value(docstring const & ctr) const;
|
||||||
/// Reset recursively all the counters that are slaves of the one named by \c ctr.
|
/// Reset recursively all the counters that are slaves of the one named by \c ctr.
|
||||||
void resetSlaves(docstring const & 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
|
/// Increment by one counter named by \c ctr, and zeroes slave
|
||||||
/// counter(s) for which it is the master.
|
/// counter(s) for which it is the master.
|
||||||
/// \param utype determines whether we track the counters.
|
/// \param utype determines whether we track the counters.
|
||||||
|
@ -105,6 +105,8 @@ enum LayoutTags {
|
|||||||
LT_SPELLCHECK,
|
LT_SPELLCHECK,
|
||||||
LT_REFPREFIX,
|
LT_REFPREFIX,
|
||||||
LT_RESETARGS,
|
LT_RESETARGS,
|
||||||
|
LT_RESUMECOUNTER,
|
||||||
|
LT_STEPMASTERCOUNTER,
|
||||||
LT_RIGHTDELIM,
|
LT_RIGHTDELIM,
|
||||||
LT_FORCELOCAL,
|
LT_FORCELOCAL,
|
||||||
LT_TOGGLE_INDENT,
|
LT_TOGGLE_INDENT,
|
||||||
@ -121,6 +123,8 @@ Layout::Layout()
|
|||||||
unknown_ = false;
|
unknown_ = false;
|
||||||
margintype = MARGIN_STATIC;
|
margintype = MARGIN_STATIC;
|
||||||
latextype = LATEX_PARAGRAPH;
|
latextype = LATEX_PARAGRAPH;
|
||||||
|
resumecounter = false;
|
||||||
|
stepmastercounter = false;
|
||||||
intitle = false;
|
intitle = false;
|
||||||
inpreamble = false;
|
inpreamble = false;
|
||||||
needprotect = false;
|
needprotect = false;
|
||||||
@ -249,10 +253,12 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
|
|||||||
{ "refprefix", LT_REFPREFIX },
|
{ "refprefix", LT_REFPREFIX },
|
||||||
{ "requires", LT_REQUIRES },
|
{ "requires", LT_REQUIRES },
|
||||||
{ "resetargs", LT_RESETARGS },
|
{ "resetargs", LT_RESETARGS },
|
||||||
|
{ "resumecounter", LT_RESUMECOUNTER },
|
||||||
{ "rightdelim", LT_RIGHTDELIM },
|
{ "rightdelim", LT_RIGHTDELIM },
|
||||||
{ "rightmargin", LT_RIGHTMARGIN },
|
{ "rightmargin", LT_RIGHTMARGIN },
|
||||||
{ "spacing", LT_SPACING },
|
{ "spacing", LT_SPACING },
|
||||||
{ "spellcheck", LT_SPELLCHECK },
|
{ "spellcheck", LT_SPELLCHECK },
|
||||||
|
{ "stepmastercounter", LT_STEPMASTERCOUNTER },
|
||||||
{ "textfont", LT_TEXTFONT },
|
{ "textfont", LT_TEXTFONT },
|
||||||
{ "toclevel", LT_TOCLEVEL },
|
{ "toclevel", LT_TOCLEVEL },
|
||||||
{ "toggleindent", LT_TOGGLE_INDENT },
|
{ "toggleindent", LT_TOGGLE_INDENT },
|
||||||
@ -367,6 +373,14 @@ bool Layout::readIgnoreForcelocal(Lexer & lex, TextClass const & tclass)
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LT_RESUMECOUNTER:
|
||||||
|
lex >> resumecounter;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case LT_STEPMASTERCOUNTER:
|
||||||
|
lex >> stepmastercounter;
|
||||||
|
break;
|
||||||
|
|
||||||
case LT_ARGUMENT:
|
case LT_ARGUMENT:
|
||||||
readArgument(lex);
|
readArgument(lex);
|
||||||
break;
|
break;
|
||||||
@ -1139,7 +1153,9 @@ void Layout::write(ostream & os) const
|
|||||||
}
|
}
|
||||||
os << "\tInTitle " << intitle << "\n"
|
os << "\tInTitle " << intitle << "\n"
|
||||||
"\tInPreamble " << inpreamble << "\n"
|
"\tInPreamble " << inpreamble << "\n"
|
||||||
"\tTocLevel " << toclevel << '\n';
|
"\tTocLevel " << toclevel << "\n"
|
||||||
|
"\tResumeCounter " << resumecounter << "\n"
|
||||||
|
"\tStepMasterCounter " << stepmastercounter << '\n';
|
||||||
// ResetArgs does not make sense here
|
// ResetArgs does not make sense here
|
||||||
for (LaTeXArgMap::const_iterator it = latexargs_.begin();
|
for (LaTeXArgMap::const_iterator it = latexargs_.begin();
|
||||||
it != latexargs_.end(); ++it)
|
it != latexargs_.end(); ++it)
|
||||||
|
@ -313,6 +313,10 @@ public:
|
|||||||
bool inpreamble;
|
bool inpreamble;
|
||||||
/// Which counter to step
|
/// Which counter to step
|
||||||
docstring counter;
|
docstring counter;
|
||||||
|
/// Resume counter?
|
||||||
|
bool resumecounter;
|
||||||
|
/// Step master counter?
|
||||||
|
bool stepmastercounter;
|
||||||
/// Prefix to use when creating labels
|
/// Prefix to use when creating labels
|
||||||
docstring refprefix;
|
docstring refprefix;
|
||||||
/// Depth of XML command
|
/// Depth of XML command
|
||||||
|
@ -61,7 +61,7 @@ namespace lyx {
|
|||||||
// You should also run the development/tools/updatelayouts.py script,
|
// You should also run the development/tools/updatelayouts.py script,
|
||||||
// to update the format of all of our layout files.
|
// 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
|
// Layout format for the current lyx file format. Controls which format is
|
||||||
|
Loading…
Reference in New Issue
Block a user