1
0
mirror of https://git.lyx.org/repos/lyx.git synced 2025-01-02 08:10:39 +00:00

Introduce InitialValue tag for counters. Fixes bug .

This commit is contained in:
Richard Heck 2013-06-01 17:42:08 -04:00
parent a853132e12
commit 2374229cc6
5 changed files with 56 additions and 5 deletions

View File

@ -19388,6 +19388,37 @@ End
The following parameters can also be used: The following parameters can also be used:
\end_layout \end_layout
\begin_layout Description
\change_inserted 1414654397 1370012684
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
\change_inserted 1414654397 1370012589
InitialValue
\end_layout
\end_inset
[
\begin_inset Flex Code
status collapsed
\begin_layout Plain Layout
\change_inserted 1414654397 1370012639
number
\end_layout
\end_inset
=1] Sets the initial value for the counter, to which it will be reset whenever
that happens.
Normally, one will want the default, 1.
\end_layout
\begin_layout Description \begin_layout Description
\begin_inset Flex Code \begin_inset Flex Code
status collapsed status collapsed

View File

@ -160,6 +160,9 @@ import os, re, string, sys
# Incremented to format 47, 23 May 2013 by rgh # Incremented to format 47, 23 May 2013 by rgh
# Add PackageOptions tag # Add PackageOptions tag
# Incremented to format 48, 31 May 2013 by rgh
# Add InitialValue tag for counters
# 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").
@ -167,7 +170,7 @@ import os, re, string, sys
# development/tools/updatelayouts.sh script to update all # development/tools/updatelayouts.sh script to update all
# layout files to the new format. # layout files to the new format.
currentFormat = 47 currentFormat = 48
def usage(prog_name): def usage(prog_name):
@ -384,7 +387,7 @@ def convert(lines):
i += 1 i += 1
continue continue
if format >= 44 and format <= 46: if format >= 44 and format <= 47:
# nothing to do. # nothing to do.
i += 1 i += 1
continue continue

View File

@ -40,7 +40,7 @@ Counter::Counter()
Counter::Counter(docstring const & mc, docstring const & ls, Counter::Counter(docstring const & mc, docstring const & ls,
docstring const & lsa) docstring const & lsa)
: master_(mc), labelstring_(ls), labelstringappendix_(lsa) : initial_value_(0), master_(mc), labelstring_(ls), labelstringappendix_(lsa)
{ {
reset(); reset();
} }
@ -53,11 +53,13 @@ bool Counter::read(Lexer & lex)
CT_LABELSTRING, CT_LABELSTRING,
CT_LABELSTRING_APPENDIX, CT_LABELSTRING_APPENDIX,
CT_PRETTYFORMAT, CT_PRETTYFORMAT,
CT_INITIALVALUE,
CT_END CT_END
}; };
LexerKeyword counterTags[] = { LexerKeyword counterTags[] = {
{ "end", CT_END }, { "end", CT_END },
{ "initialvalue", CT_INITIALVALUE},
{ "labelstring", CT_LABELSTRING }, { "labelstring", CT_LABELSTRING },
{ "labelstringappendix", CT_LABELSTRING_APPENDIX }, { "labelstringappendix", CT_LABELSTRING_APPENDIX },
{ "prettyformat", CT_PRETTYFORMAT }, { "prettyformat", CT_PRETTYFORMAT },
@ -83,6 +85,18 @@ bool Counter::read(Lexer & lex)
if (master_ == "none") if (master_ == "none")
master_.erase(); master_.erase();
break; break;
case CT_INITIALVALUE:
lex.next();
initial_value_ = lex.getInteger();
// getInteger() returns -1 on error, and larger
// negative values do not make much sense.
// In the other case, we subtract one, since the
// counter will be incremented before its first use.
if (initial_value_ <= -1)
initial_value_ = 0;
else
initial_value_ -= 1;
break;
case CT_PRETTYFORMAT: case CT_PRETTYFORMAT:
lex.next(); lex.next();
prettyformat_ = lex.getDocString(); prettyformat_ = lex.getDocString();
@ -136,7 +150,7 @@ void Counter::step()
void Counter::reset() void Counter::reset()
{ {
value_ = 0; value_ = initial_value_;
} }

View File

@ -76,6 +76,9 @@ public:
private: private:
/// ///
int value_; int value_;
/// This is actually one less than the initial value, since the
/// counter is always stepped before being used.
int initial_value_;
/// contains master counter name. /// contains master counter name.
/** The master counter is the counter that, if stepped /** The master counter is the counter that, if stepped
* (incremented) zeroes this counter. E.g. "subsection"'s * (incremented) zeroes this counter. E.g. "subsection"'s

View File

@ -61,7 +61,7 @@ namespace lyx {
// development/tools/updatelayouts.sh script, to update the format of // development/tools/updatelayouts.sh script, to update the format of
// all of our layout files. // all of our layout files.
// //
int const LAYOUT_FORMAT = 47; //rgh: package options int const LAYOUT_FORMAT = 48; //rgh: initial values for counter
namespace { namespace {