Jean-Marc Lasgouttes <[EMAIL PROTECTED]> writes:

> The following patch introduces LabelString for counters. This
> labelstring will be used in several places:

Here is the updated version of the patch, the shortcoming have been
resolved and the layout files have been updated. For example floats
and footnotes are now correctly numbered by chapter for book and
report classes.

I updated the documentation too.

Note that the rest of the layut files should be updated. I do not
think they are broken by the patch, but they can be simplified.

JMarc

Add support for \thecounter variables in labels.

        * src/Counters.cpp (Counter::labelString/labelStringAppendix): new
        accessors for two new variables
        (Counter::setMaster): removed
        (Counter::Counter): add a version with arguments.
        (Counters::newCounter): add relevant arguments; allow to redefine
        an existing counter.
        (Counters::reset): reset the current float float.
        (Counters::theCounter): return a representation of a given counter
        using its labelstring or by default \themaster.\arabic{counter}.
        Handle appendix too.
        (Counters::counterLabel): add support for macros of the form
        \thecounter. 

        * src/TextClass.cpp (readCounters): also read LabelString and
        LabelStringAppendix. 

        * src/Paragraph.cpp (expandLabel): if the labelstring is e,pty,
        use \thecounter instead; when processing @layout@ tokens, pass the
        process_appendix boolean.

        * src/buffer_funcs.cpp (setLabel):
        * src/insets/InsetFoot.cpp (updateLabels): 
        * src/insets/InsetCaption.cpp (updateLabels): use
        Counters::theCounter.

        * numarticle.inc:
        * numreport.inc: 
        * stdcounter.inc:
        * stdsections.inc:
        * stdstarsections.inc:
        * stdclass.inc:
        * scrbook.layout:
        * amsmath.inc: adapt: remove most of the LabelString in layouts,
        add the necessary stuff to counters.

        * lib/doc/Customization.lyx: document the new stuff.
svndiff

Index: src/TextClass.cpp
===================================================================
--- src/TextClass.cpp	(révision 19595)
+++ src/TextClass.cpp	(copie de travail)
@@ -212,12 +212,12 @@ bool TextClass::read(FileName const & fi
 
 	if (!merge)
 		LYXERR(Debug::TCLASS) << "Reading textclass "
-					<< to_utf8(makeDisplayPath(filename.absFilename()))
-					<< endl;
+				      << to_utf8(makeDisplayPath(filename.absFilename()))
+				      << endl;
 	else
 		LYXERR(Debug::TCLASS) << "Reading input file "
-				     << to_utf8(makeDisplayPath(filename.absFilename()))
-				     << endl;
+				      << to_utf8(makeDisplayPath(filename.absFilename()))
+				      << endl;
 
 	Lexer lexrc(textClassTags,
 		sizeof(textClassTags) / sizeof(textClassTags[0]));
@@ -894,6 +894,8 @@ void TextClass::readFloat(Lexer & lexrc)
 enum CounterTags {
 	CT_NAME = 1,
 	CT_WITHIN,
+	CT_LABELSTRING,
+	CT_LABELSTRING_APPENDIX,
 	CT_END
 };
 
@@ -901,6 +903,8 @@ void TextClass::readCounter(Lexer & lexr
 {
 	keyword_item counterTags[] = {
 		{ "end", CT_END },
+		{ "labelstring", CT_LABELSTRING },
+		{ "labelstringappendix", CT_LABELSTRING_APPENDIX },
 		{ "name", CT_NAME },
 		{ "within", CT_WITHIN }
 	};
@@ -909,6 +913,8 @@ void TextClass::readCounter(Lexer & lexr
 
 	docstring name;
 	docstring within;
+	docstring labelstring;
+	docstring labelstring_appendix;
 
 	bool getout = false;
 	while (!getout && lexrc.isOK()) {
@@ -922,14 +928,31 @@ void TextClass::readCounter(Lexer & lexr
 		switch (static_cast<CounterTags>(le)) {
 		case CT_NAME:
 			lexrc.next();
-			name = from_ascii(lexrc.getString());
+			name = lexrc.getDocString();
+			if (ctrs_->hasCounter(name))
+				LYXERR(Debug::TCLASS) 
+					<< "Reading existing counter " 
+					<< to_utf8(name) << endl;
+			else
+				LYXERR(Debug::TCLASS) 
+					<< "Reading new counter " 
+					<< to_utf8(name) << endl;
 			break;
 		case CT_WITHIN:
 			lexrc.next();
-			within = from_ascii(lexrc.getString());
+			within = lexrc.getDocString();
 			if (within == "none")
 				within.erase();
 			break;
+		case CT_LABELSTRING:
+			lexrc.next();
+			labelstring = lexrc.getDocString();
+			labelstring_appendix = labelstring;
+			break;
+		case CT_LABELSTRING_APPENDIX:
+			lexrc.next();
+			labelstring_appendix = lexrc.getDocString();
+			break;
 		case CT_END:
 			getout = true;
 			break;
@@ -937,12 +960,9 @@ void TextClass::readCounter(Lexer & lexr
 	}
 
 	// Here if have a full counter if getout == true
-	if (getout) {
-		if (within.empty())
-			ctrs_->newCounter(name);
-		else
-			ctrs_->newCounter(name, within);
-	}
+	if (getout)
+		ctrs_->newCounter(name, within, 
+				  labelstring, labelstring_appendix);
 
 	lexrc.popTable();
 }
Index: src/insets/InsetCaption.cpp
===================================================================
--- src/insets/InsetCaption.cpp	(révision 19595)
+++ src/insets/InsetCaption.cpp	(copie de travail)
@@ -36,7 +36,6 @@
 #include "frontends/Painter.h"
 
 #include "support/lstrings.h"
-#include "support/convert.h"
 
 #include <sstream>
 
@@ -306,7 +305,7 @@ void InsetCaption::updateLabels(Buffer c
 			cnts.step(from_utf8(type));
 			full_label_ = bformat(from_ascii("%1$s %2$s:"), 
 					      name, 
-					      convert<docstring>(cnts.value(from_utf8(type))));
+					      cnts.theCounter(from_utf8(type)));
 		} else
 			full_label_ = bformat(from_ascii("%1$s #:"), name);	
 	}
Index: src/insets/InsetFoot.cpp
===================================================================
--- src/insets/InsetFoot.cpp	(révision 19595)
+++ src/insets/InsetFoot.cpp	(copie de travail)
@@ -23,7 +23,6 @@
 #include "OutputParams.h"
 #include "ParIterator.h"
 
-#include "support/convert.h"
 #include "support/std_ostream.h"
 #include "support/lstrings.h"
 
@@ -69,7 +68,7 @@ void InsetFoot::updateLabels(Buffer cons
 		//FIXME: the counter should format itself.
 		setLabel(support::bformat(from_ascii("%1$s %2$s"), 
 					  getLayout(buf.params()).labelstring, 
-					  convert<docstring>(cnts.value(foot))));
+					  cnts.theCounter(foot)));
 	
 	}
 	InsetCollapsable::updateLabels(buf, it);
Index: src/buffer_funcs.cpp
===================================================================
--- src/buffer_funcs.cpp	(révision 19595)
+++ src/buffer_funcs.cpp	(copie de travail)
@@ -42,11 +42,8 @@
 #include "frontends/alert.h"
 
 #include "insets/InsetBibitem.h"
-#include "insets/InsetCaption.h"
 #include "insets/InsetInclude.h"
-#include "insets/InsetTabular.h"
 
-#include "support/convert.h"
 #include "support/filetools.h"
 #include "support/fs_extras.h"
 #include "support/lyxlib.h"
@@ -538,7 +535,7 @@ void setLabel(Buffer const & buf, ParIte
 				counters.step(from_utf8(type));
 				full_label = bformat(from_ascii("%1$s %2$s:"), 
 						     name, 
-						     convert<docstring>(counters.value(from_utf8(type))));
+						     counters.theCounter(from_utf8(type)));
 			} else
 				full_label = bformat(from_ascii("%1$s #:"), name);	
 		}
Index: src/Counters.cpp
===================================================================
--- src/Counters.cpp	(révision 19595)
+++ src/Counters.cpp	(copie de travail)
@@ -27,9 +27,9 @@ using std::endl;
 using std::ostringstream;
 using std::string;
 
-
 namespace lyx {
 
+using support::lowercase;
 
 Counter::Counter()
 {
@@ -37,6 +37,14 @@ Counter::Counter()
 }
 
 
+Counter::Counter(docstring const & mc, docstring const & ls, 
+		 docstring const & lsa)
+	: master_(mc), labelstring_(ls), labelstringappendix_(lsa)
+{
+	reset();
+}
+
+
 void Counter::set(int v)
 {
 	value_ = v;
@@ -73,50 +81,30 @@ docstring const & Counter::master() cons
 }
 
 
-void Counter::setMaster(docstring const & m)
+docstring const & Counter::labelString() const
 {
-	master_ = m;
+	return labelstring_;
 }
 
 
-void Counters::newCounter(docstring const & newc)
+docstring const & Counter::labelStringAppendix() const
 {
-	// First check if newc already exist
-	CounterList::iterator const cit = counterList.find(newc);
-	// if already exist give warning and return
-	if (cit != counterList.end()) {
-		lyxerr << "New counter already exists: "
-		       << to_utf8(newc)
-		       << endl;
-		return;
-	}
-	counterList[newc];
+	return labelstringappendix_;
 }
 
 
 void Counters::newCounter(docstring const & newc,
-			  docstring const & masterc)
+			  docstring const & masterc, 
+			  docstring const & ls,
+			  docstring const & lsa)
 {
-	// First check if newc already exists
-	CounterList::iterator const cit = counterList.find(newc);
-	// if already existant give warning and return
-	if (cit != counterList.end()) {
-		lyxerr << "New counter already exists: "
-		       << to_utf8(newc)
-		       << endl;
-		return;
-	}
-	// then check if masterc exists
-	CounterList::iterator const it = counterList.find(masterc);
-	// if not give warning and return
-	if (it == counterList.end()) {
+	if (!masterc.empty() && !hasCounter(masterc)) {
 		lyxerr << "Master counter does not exist: "
 		       << to_utf8(masterc)
 		       << endl;
 		return;
 	}
-
-	counterList[newc].setMaster(masterc);
+	counterList[newc] = Counter(masterc, ls, lsa);
 }
 
 
@@ -185,6 +173,7 @@ void Counters::step(docstring const & ct
 void Counters::reset()
 {
 	appendix_ = false;
+	current_float_.erase();
 	CounterList::iterator it = counterList.begin();
 	CounterList::iterator const end = counterList.end();
 	for (; it != end; ++it) {
@@ -351,12 +340,47 @@ docstring Counters::labelItem(docstring 
 }
 
 
+docstring Counters::theCounter(docstring const & counter)
+{
+	if (!hasCounter(counter))
+		return from_ascii("??");
+
+	Counter const & c = counterList[counter];
+	docstring ls = appendix() ? c.labelStringAppendix() : c.labelString();
+
+	if (ls.empty()) {
+		if (!c.master().empty())
+			ls = from_ascii("\\the") + c.master() + from_ascii(".");
+		ls += from_ascii("\\arabic{") + counter + "}";
+	}
+	return counterLabel(ls);
+}
+
+
 docstring Counters::counterLabel(docstring const & format)
 {
 	docstring label = format;
+
+	// FIXME: Using regexps would be better, but we compile boost without
+	// wide regexps currently.
+
+	while (true) {
+		//lyxerr << "label=" << to_utf8(label) << endl;
+		size_t const i = label.find(from_ascii("\\the"), 0);
+		if (i == docstring::npos)
+			break;
+		size_t j = i + 4;
+		size_t k = j;
+		while (k < label.size() && lowercase(label[k]) >= 'a' 
+		       && lowercase(label[k]) <= 'z')
+			++k;
+		docstring counter = label.substr(j, k - j);
+		docstring repl = theCounter(counter);
+		label.replace(i, k - j + 4, repl);
+	}
+	
 	while (true) {
-		// FIXME: Using boost::regex or boost::spirit would make
-	  	// FIXME: this code a lot simpler... (Lgb)
+		//lyxerr << "label=" << to_utf8(label) << endl;
 
 		size_t const i = label.find('\\', 0);
 		if (i == docstring::npos)
@@ -372,10 +396,8 @@ docstring Counters::counterLabel(docstri
 		docstring const rep = labelItem(counter, numbertype);
 		label = docstring(label, 0, i) + rep
 			+ docstring(label, k + 1, docstring::npos);
-		//lyxerr << "  : " << " (" << counter  << ","
-		//	<< numbertype << ") -> " << label << endl;
 	}
-	//lyxerr << "counterLabel: " << format  << " -> "	<< label << endl;
+	//lyxerr << "DONE! label=" << to_utf8(label) << endl;
 	return label;
 }
 
Index: src/Counters.h
===================================================================
--- src/Counters.h	(révision 19595)
+++ src/Counters.h	(copie de travail)
@@ -28,6 +28,9 @@ public:
 	///
 	Counter();
 	///
+	Counter(docstring const & mc, docstring const & ls, 
+		docstring const & lsa);
+	///
 	void set(int v);
 	///
 	void addto(int v);
@@ -39,15 +42,24 @@ public:
 	void reset();
 	/// Returns the master counter of this counter
 	docstring const & master() const;
-	/// sets the master counter for this counter
-	void setMaster(docstring const & m);
+	/// Returns a LaTeX-like string to format the counter, similar
+	/// to LaTeX' \c \thesubsection.
+	docstring const & labelString() const;
+	/// Returns a LaTeX-like string to format the counter in
+	/// appendix, similar to LaTeX' \c \thesubsection.
+	docstring const & labelStringAppendix() const;
 private:
 	///
 	int value_;
 	/// contains master counter name; master counter is the counter
 	/// that, if stepped (incremented) zeroes this counter. E.g.
-	/// "subparagraph"'s master is "paragraph".
+	/// "subsection"'s master is "section".
 	docstring master_;
+	// Contains a LaTeX-like string to format the counter, similar
+	// to LaTeX' \c \thesubsection.
+	docstring labelstring_;
+	// The same as labelstring_, but in appendices.
+	docstring labelstringappendix_;
 };
 
 
@@ -57,9 +69,11 @@ class Counters {
 public:
 	/// Add a new counter to array.
 	void newCounter(docstring const & newc);
-	/// Add new counter having oldc as its master.
+	/// Add new counter having oldc as its master and ls as its label.
 	void newCounter(docstring const & newc,
-			docstring const & oldc);
+			docstring const & masterc,
+			docstring const & ls,
+			docstring const & lsa);
 	///
 	bool hasCounter(docstring const & c) const;
 	///
@@ -81,6 +95,8 @@ public:
 	/// the &to array of counters. Empty string matches all.
 	void copy(Counters & from, Counters & to,
 		  docstring const & match = docstring());
+	/// returns the string representation of the counter.
+	docstring theCounter(docstring const & c);
 	/// A complete expanded label, like 2.1.4 for a subsubsection
 	/// according to the given format
 	docstring counterLabel(docstring const & format);
@@ -96,7 +112,7 @@ private:
 	/// A counter label's single item, 1 for subsection number in
 	/// the 2.1.4 subsubsection number label.
 	docstring labelItem(docstring const & ctr,
-				 docstring const & numbertype);
+			    docstring const & numbertype);
 	/// Maps counter (layout) names to actual counters.
 	typedef std::map<docstring, Counter> CounterList;
 	/// Instantiate.
Index: src/Paragraph.cpp
===================================================================
--- src/Paragraph.cpp	(révision 19595)
+++ src/Paragraph.cpp	(copie de travail)
@@ -1663,6 +1663,10 @@ docstring Paragraph::expandLabel(Layout_
 	else
 		fmt = translateIfPossible(layout->labelstring(), bparams);
 
+	if (fmt.empty() && layout->labeltype == LABEL_COUNTER 
+	    && !layout->counter.empty())
+		fmt = "\\the" + layout->counter;
+
 	// handle 'inherited level parts' in 'fmt',
 	// i.e. the stuff between '@' in   '@[EMAIL PROTECTED]'
 	size_t const i = fmt.find('@', 0);
@@ -1670,8 +1674,10 @@ docstring Paragraph::expandLabel(Layout_
 		size_t const j = fmt.find('@', i + 1);
 		if (j != docstring::npos) {
 			docstring parent(fmt, i + 1, j - i - 1);
-			docstring label = expandLabel(tclass[parent], bparams);
-			fmt = docstring(fmt, 0, i) + label + docstring(fmt, j + 1, docstring::npos);
+			docstring label = expandLabel(tclass[parent], bparams,
+						      process_appendix);
+			fmt = docstring(fmt, 0, i) + label 
+				+ docstring(fmt, j + 1, docstring::npos);
 		}
 	}
 
Index: lib/layouts/numarticle.inc
===================================================================
--- lib/layouts/numarticle.inc	(révision 19595)
+++ lib/layouts/numarticle.inc	(copie de travail)
@@ -2,54 +2,15 @@
 # This include file contains label definitions for an article-like numbering.
 
 Format 4
-Style Part
-	LabelType             Counter
-	LabelCounter          part
-	LabelString           "Part \Roman{part}"
-	TocLevel              0
-End
-
 
-Style Section
-	LabelType             Counter
-	LabelCounter          section
-	LabelString           "\arabic{section}"
+# appendix applies to sections.
+Counter
+	Name                  section
+	Within                "none"
+	LabelString	      "\arabic{section}"
 	LabelStringAppendix   "\Alph{section}"
-	TocLevel              1
-End
-
-
-Style Subsection
-	LabelType             Counter
-	LabelCounter          subsection
-	LabelString           "@[EMAIL PROTECTED]"
-	LabelStringAppendix   "@[EMAIL PROTECTED]"
-	TocLevel              2
 End
 
 
-Style Subsubsection
-	LabelType             Counter
-	LabelCounter          subsubsection
-	LabelString           "@[EMAIL PROTECTED]"
-	LabelStringAppendix   "@[EMAIL PROTECTED]"
-	TocLevel              3
-End
-
 
-Style Paragraph
-	LabelType             Counter
-	LabelCounter          paragraph
-	LabelString           "@[EMAIL PROTECTED]"
-	LabelStringAppendix   "@[EMAIL PROTECTED]"
-	TocLevel              4
-End
 
-
-Style Subparagraph
-	LabelType             Counter
-	LabelCounter          subparagraph
-	LabelString           "@[EMAIL PROTECTED]"
-	LabelStringAppendix   "@[EMAIL PROTECTED]"
-	TocLevel              5
-End
Index: lib/layouts/scrbook.layout
===================================================================
--- lib/layouts/scrbook.layout	(révision 19595)
+++ lib/layouts/scrbook.layout	(copie de travail)
@@ -14,8 +14,7 @@ NoStyle Abstract
 
 
 Style Chapter
-	LabelString          "\arabic{chapter}"
-	LabelStringAppendix  "\Alph{chapter}"
+	LabelString          "\thechapter"
 End
 
 
Index: lib/layouts/stdcounters.inc
===================================================================
--- lib/layouts/stdcounters.inc	(révision 19595)
+++ lib/layouts/stdcounters.inc	(copie de travail)
@@ -5,8 +5,9 @@
 
 
 Format 4
-Counter
-	Name                 part
+Counter 
+	Name                  part
+	LabelString	      "\Roman{part}"
 End
 
 Counter
@@ -74,11 +75,11 @@ Counter
 End
 
 Counter
-	Name                 equation
+	Name                 listing
 End
 
 Counter
-	Name                 listing
+	Name                 equation
 End
 
 Counter
Index: lib/layouts/stdstarsections.inc
===================================================================
--- lib/layouts/stdstarsections.inc	(révision 19595)
+++ lib/layouts/stdstarsections.inc	(copie de travail)
@@ -15,6 +15,7 @@ Style Part*
 	Margin                Static
 	LatexName             part*
 	LabelType             No_Label
+	LabelCounter	      ""	
 End
 
 
@@ -23,6 +24,7 @@ Style Chapter*
 	Margin                Static
 	LatexName             chapter*
 	LabelType             No_Label
+	LabelCounter	      ""	
 	OptionalArgs          0
 End
 
@@ -32,6 +34,7 @@ Style Section*
 	Margin                Static
 	LatexName             section*
 	LabelType             No_Label
+	LabelCounter	      ""	
 	OptionalArgs          0
 End
 
@@ -41,6 +44,7 @@ Style Subsection*
 	Margin                Static
 	LatexName             subsection*
 	LabelType             No_Label
+	LabelCounter	      ""	
 	OptionalArgs          0
 End
 
@@ -50,6 +54,7 @@ Style Subsubsection*
 	Margin                Static
 	LatexName             subsubsection*
 	LabelType             No_Label
+	LabelCounter	      ""	
 	OptionalArgs          0
 End
 
@@ -59,6 +64,7 @@ Style Paragraph*
 	Margin                Static
 	LatexName             paragraph*
 	LabelType             No_Label
+	LabelCounter	      ""	
 	OptionalArgs          0
 End
 
@@ -68,5 +74,6 @@ Style Subparagraph*
 	Margin                Static
 	LatexName             subparagraph*
 	LabelType             No_Label
+	LabelCounter	      ""	
 	OptionalArgs          0
 End
Index: lib/layouts/stdsections.inc
===================================================================
--- lib/layouts/stdsections.inc	(révision 19595)
+++ lib/layouts/stdsections.inc	(copie de travail)
@@ -10,6 +10,10 @@
 Format 4
 Style Part
 	Margin                Dynamic
+	LabelString	      "Part \thepart"
+	LabelType	      Counter
+	TocLevel              0
+	LabelCounter	      part
 	LatexType             Command
 	LatexName             part
 	NeedProtect           1
@@ -30,6 +34,11 @@ End
 
 Style Chapter
 	Margin                Static
+	LabelString	      "Chapter \thechapter"
+	LabelStringAppendix   "Appendix \thechapter"
+	LabelType	      Counter
+	LabelCounter	      chapter
+	TocLevel              0
 	LatexType             Command
 	LatexName             chapter
 	NeedProtect           1
@@ -50,6 +59,9 @@ End
 
 Style Section
 	Margin                Dynamic
+	LabelType	      Counter
+	LabelCounter	      section
+	TocLevel              1
 	LatexType             Command
 	LatexName             section
 	NeedProtect           1
@@ -71,6 +83,8 @@ End
 
 Style Subsection
 	CopyStyle             Section
+	LabelCounter	      subsection
+	TocLevel              2
 	LatexName             subsection
 	TopSep                0.9
 	BottomSep             0.5
@@ -84,6 +98,8 @@ End
 
 Style Subsubsection
 	CopyStyle             Subsection
+	LabelCounter	      subsubsection
+	TocLevel              3
 	LatexName             subsubsection
 	TopSep                0.7
 	BottomSep             0.4
@@ -96,6 +112,8 @@ End
 
 Style Paragraph
 	CopyStyle             Subsubsection
+	LabelCounter	      paragraph
+	TocLevel              4
 	LatexName             paragraph
 	TopSep                0.4
 	BottomSep             0
@@ -104,6 +122,8 @@ End
 
 Style Subparagraph
 	CopyStyle             Paragraph
+	LabelCounter	      subparagraph
+	TocLevel              5
 	LatexName             subparagraph
 	NextNoIndent          0
 	LeftMargin            MM
Index: lib/layouts/stdclass.inc
===================================================================
--- lib/layouts/stdclass.inc	(révision 19595)
+++ lib/layouts/stdclass.inc	(copie de travail)
@@ -37,6 +37,8 @@ Style Standard
 End
 
 
+Input stdfloats.inc
+Input stdcounters.inc
 Input stdinsets.inc
 Input stdlists.inc
 Input stdsections.inc
@@ -45,5 +47,3 @@ Input stdtitle.inc
 Input stdstruct.inc
 Input lyxmacros.inc
 Input stdlayouts.inc
-Input stdfloats.inc
-Input stdcounters.inc
Index: lib/layouts/amsmaths.inc
===================================================================
--- lib/layouts/amsmaths.inc	(révision 19595)
+++ lib/layouts/amsmaths.inc	(copie de travail)
@@ -76,7 +76,7 @@ Style Theorem
 	AlignPossible         Block, Left
 	LabelType             Counter
 	LabelCounter          theorem
-	LabelString           "Theorem @[EMAIL PROTECTED]"
+	LabelString           "Theorem \thetheorem."
 	Font
 	  Shape               Italic
 	  Size                Normal
@@ -103,7 +103,7 @@ End
 Style Corollary
 	CopyStyle             Theorem
 	LatexName             cor
-	LabelString           "Corollary @[EMAIL PROTECTED]"
+	LabelString           "Corollary \thetheorem."
 	Preamble
 	  \theoremstyle{plain}
 	  \newtheorem{cor}[thm]{Corollary}
@@ -125,7 +125,7 @@ End
 Style Lemma
 	CopyStyle             Theorem
 	LatexName             lem
-	LabelString           "Lemma @[EMAIL PROTECTED]"
+	LabelString           "Lemma \thetheorem."
 	Preamble
 	  \theoremstyle{plain}
 	  \newtheorem{lem}[thm]{Lemma}
@@ -147,7 +147,7 @@ End
 Style Proposition
 	CopyStyle             Theorem
 	LatexName             prop
-	LabelString           "Proposition @[EMAIL PROTECTED]"
+	LabelString           "Proposition \thetheorem."
 	Preamble
 	  \theoremstyle{plain}
 	  \newtheorem{prop}[thm]{Proposition}
@@ -169,7 +169,7 @@ End
 Style Conjecture
 	CopyStyle             Theorem
 	LatexName             conjecture
-	LabelString           "Conjecture @[EMAIL PROTECTED]"
+	LabelString           "Conjecture \thetheorem."
 	Preamble
 	  \theoremstyle{plain}
 	  \newtheorem{conjecture}[thm]{Conjecture}
@@ -191,7 +191,7 @@ End
 Style Criterion
 	CopyStyle             Theorem
 	LatexName             criterion
-	LabelString           "Criterion @[EMAIL PROTECTED]"
+	LabelString           "Criterion \thetheorem."
 	Preamble
 	  \theoremstyle{plain}
 	  \newtheorem{criterion}[thm]{Criterion}
@@ -202,7 +202,7 @@ End
 Style Algorithm
 	CopyStyle             Theorem
 	LatexName             algorithm
-	LabelString           "Algorithm @[EMAIL PROTECTED]"
+	LabelString           "Algorithm \thetheorem."
 	Preamble
 	  \theoremstyle{plain}
 	  \newtheorem{algorithm}[thm]{Algorithm}
@@ -213,7 +213,7 @@ End
 Style Fact
 	CopyStyle             Theorem
 	LatexName             fact
-	LabelString           "Fact @[EMAIL PROTECTED]"
+	LabelString           "Fact \thetheorem."
 	Preamble
 	  \theoremstyle{plain}
 	  \newtheorem{fact}[thm]{Fact}
@@ -235,7 +235,7 @@ End
 Style Axiom
 	CopyStyle             Theorem
 	LatexName             ax
-	LabelString           "Axiom @[EMAIL PROTECTED]"
+	LabelString           "Axiom \thetheorem."
 	Preamble
 	  \theoremstyle{plain}
 	  \newtheorem{ax}[thm]{Axiom}
@@ -246,7 +246,7 @@ End
 Style Definition
 	CopyStyle             Theorem
 	LatexName             defn
-	LabelString           "Definition @[EMAIL PROTECTED]"
+	LabelString           "Definition \thetheorem."
 	Font
 	  Shape               Up
 	EndFont
@@ -276,7 +276,7 @@ End
 Style Example
 	CopyStyle             Definition
 	LatexName             example
-	LabelString           "Example @[EMAIL PROTECTED]"
+	LabelString           "Example \thetheorem."
 	Preamble
 	 \theoremstyle{definition}
 	  \newtheorem{example}[thm]{Example}
@@ -298,7 +298,7 @@ End
 Style Condition
 	CopyStyle             Definition
 	LatexName             condition
-	LabelString           "Condition @[EMAIL PROTECTED]"
+	LabelString           "Condition \thetheorem."
 	Preamble
 	  \theoremstyle{definition}
 	  \newtheorem{condition}[thm]{Condition}
@@ -320,7 +320,7 @@ End
 Style Problem
 	CopyStyle             Definition
 	LatexName             problem
-	LabelString           "Problem @[EMAIL PROTECTED]"
+	LabelString           "Problem \thetheorem."
 	Preamble
 	  \theoremstyle{definition}
 	  \newtheorem{problem}[thm]{Problem}
@@ -342,7 +342,7 @@ End
 Style Exercise
 	CopyStyle             Definition
 	LatexName             xca
-	LabelString           "Exercise @[EMAIL PROTECTED]"
+	LabelString           "Exercise \thetheorem."
 	Preamble
 	  \theoremstyle{definition}
 	  %%Delete [section] for sequential numbering
@@ -365,7 +365,7 @@ End
 Style Remark
 	CopyStyle             Theorem
 	LatexName             rem
-	LabelString           "Remark @[EMAIL PROTECTED]"
+	LabelString           "Remark \thetheorem."
 	Font
 	  Shape               Up
 	  Size                Normal
@@ -396,7 +396,7 @@ End
 Style Claim
 	CopyStyle             Remark
 	LatexName             claim
-	LabelString           "Claim @[EMAIL PROTECTED]"
+	LabelString           "Claim \thetheorem."
 	Preamble
 	  \theoremstyle{remark}
 	  \newtheorem{claim}[thm]{Claim}
@@ -418,7 +418,7 @@ End
 Style Note
 	CopyStyle             Remark
 	LatexName             note
-	LabelString           "Note @[EMAIL PROTECTED]"
+	LabelString           "Note \thetheorem."
 	Preamble
 	  \theoremstyle{remark}
 	  \newtheorem{note}[thm]{Note}
@@ -440,7 +440,7 @@ End
 Style Notation
 	CopyStyle             Remark
 	LatexName             notation
-	LabelString           "Notation @[EMAIL PROTECTED]"
+	LabelString           "Notation \thetheorem."
 	Preamble
 	  \theoremstyle{remark}
 	  \newtheorem{notation}[thm]{Notation}
@@ -462,7 +462,7 @@ End
 Style Summary
 	CopyStyle             Remark
 	LatexName             summary
-	LabelString           "Summary @[EMAIL PROTECTED]"
+	LabelString           "Summary \thetheorem."
 	Preamble
 	  \theoremstyle{remark}
 	  \newtheorem{summary}[thm]{Summary}
@@ -473,7 +473,7 @@ End
 Style Acknowledgement
 	CopyStyle             Remark
 	LatexName             acknowledgement
-	LabelString           "Acknowledgement @[EMAIL PROTECTED]"
+	LabelString           "Acknowledgement \thetheorem."
 	Preamble
 	  \theoremstyle{remark}
 	  \newtheorem{acknowledgement}[thm]{Acknowledgement}
@@ -495,7 +495,7 @@ End
 Style Case
 	CopyStyle             Remark
 	LatexName             case
-	LabelString           "Case @[EMAIL PROTECTED]"
+	LabelString           "Case \thetheorem."
 	Preamble
 	  \theoremstyle{remark}
 	  \newtheorem{case}{Case} %%Numbering of Cases not keyed to sections
@@ -506,7 +506,7 @@ End
 Style Conclusion
 	CopyStyle             Remark
 	LatexName             conclusion
-	LabelString           "Conclusion @[EMAIL PROTECTED]"
+	LabelString           "Conclusion \thetheorem."
 	Preamble
 	  \theoremstyle{remark}
 	  \newtheorem{conclusion}[thm]{Conclusion}
Index: lib/layouts/numreport.inc
===================================================================
--- lib/layouts/numreport.inc	(révision 19595)
+++ lib/layouts/numreport.inc	(copie de travail)
@@ -2,24 +2,46 @@
 # This include file contains label definitions for a report-like numbering.
 
 Format 4
-Input numarticle.inc
 
 Style Part
 	TocLevel              -1
 End
 
+Counter
+	Name                  chapter
+	Within                ""
+	LabelString	      "\arabic{chapter}"
+	LabelStringAppendix   "\Alph{chapter}"
+End
+
+Counter
+	Name                  section
+	Within                chapter
+	LabelString	      ""
+End
 
-Style Chapter
-	LabelType             Counter
-	LabelCounter          chapter
-	LabelString           "Chapter \arabic{chapter}"
-	LabelStringAppendix   "Appendix \Alph{chapter}"
-	TocLevel              0
+Counter
+	Name                 figure
+	Within		     chapter
 End
 
+Counter
+	Name                 table
+	Within		     chapter
+End
 
-Style Section
-	LabelString           "\arabic{chapter}.\arabic{section}"
-	LabelStringAppendix   "\Alph{chapter}.\arabic{section}"
+Counter
+	Name                 algorithm
+	Within		     chapter
 End
 
+Counter
+	Name                 listing
+	Within		     chapter
+End
+
+Counter
+	Name                 footnote
+	Within		     chapter
+	LabelString	     "\arabic{footnote}"
+End
Index: lib/doc/Customization.lyx
===================================================================
--- lib/doc/Customization.lyx	(révision 19595)
+++ lib/doc/Customization.lyx	(copie de travail)
@@ -1,5 +1,5 @@
-#LyX 1.5.0svn created this file. For more info see http://www.lyx.org/
-\lyxformat 276
+#LyX 1.6.0svn created this file. For more info see http://www.lyx.org/
+\lyxformat 278
 \begin_document
 \begin_header
 \textclass book
@@ -39,10 +39,8 @@
 \paperpagestyle headings
 \tracking_changes false
 \output_changes false
-\author ""
-\author ""
-\author ""
-\author ""
+\author "" 
+\author "" 
 \end_header
 
 \begin_body
@@ -7426,7 +7424,7 @@ Settings
 LabelCounter
 \family default
 \series default
- is set, this string can be contain special formatting commands as explained
+ is set, this string can be contain the special formatting commands described
  in Section\InsetSpace ~
 
 \begin_inset LatexCommand ref
@@ -7435,6 +7433,34 @@ reference "sec:counter"
 \end_inset
 
 .
+ For the sake of backwards compatibility, the string 
+\family typewriter
+@
+\emph on
+style-name
+\emph default
+@
+\family default
+ will be replaced by the expanded 
+\family typewriter
+LabelString
+\family default
+ of style 
+\family typewriter
+\emph on
+style-name
+\family default
+\emph default
+.
+ This feature is now obsolete and should be replaced by the mechanisms of
+ Section\InsetSpace ~
+
+\begin_inset LatexCommand ref
+reference "sec:counter"
+
+\end_inset
+
+.
 \end_layout
 
 \begin_layout Description
@@ -8459,9 +8485,7 @@ Input stdcounters.inc
 \end_layout
 
 \begin_layout Standard
-The definition of counters is presently a bit primitive in LyX, since many
- things are still hardcoded.
- The following two parameters can be used:
+The following parameters can be used:
 \end_layout
 
 \begin_layout Description
@@ -8483,7 +8507,7 @@ string
 \begin_inset Quotes erd
 \end_inset
 
-] The name of the counter
+] The name of the counter.
 \end_layout
 
 \begin_layout Description
@@ -8506,48 +8530,75 @@ string
 \end_inset
 
 ] If this is set to the name of another counter, the present counter will
- be reset everytime the other one is increased (is that unclear enough?).
-\end_layout
-
-\begin_layout Standard
-When a counter has been associated to a style, it is possible to use some
- special constructs in 
+ be reset everytime the other one is increased.
+ For example, 
 \family typewriter
-LabelSt
+subsection
 \family default
-r
+ is numbered inside 
 \family typewriter
-ing
+section
 \family default
- and 
+.
+\end_layout
+
+\begin_layout Description
+
+\family typewriter
+\series medium
+LabelString [string=""]
+\family default
+\series default
+ when this is defined, this string defines how the counter is displayed.
+ Setting this value resets 
 \family typewriter
 LabelStringAppendix
 \family default
-:
+ to the same value.
+ The following special constructs can be used in the string:
 \end_layout
 
+\begin_deeper
 \begin_layout Itemize
 
 \family typewriter
-@
-\emph on
-style-name
-\emph default
-@
+
+\backslash
+thecounter
 \family default
- will be replaced the expanded 
+ will be replaced by the expansion of the 
 \family typewriter
 LabelString
 \family default
- of style 
+ (or 
 \family typewriter
-\emph on
-style-name
+LabelStringAppendix
+\family default
+) of the counter 
+\family typewriter
+counter
 \family default
-\emph default
 .
- This is used for example to define the label of a subsection in terms of
- the label of a section.
+ If these are empty, a default value is constructed as follows: if the counter
+ has a master counter 
+\family typewriter
+master
+\family default
+, the string 
+\family typewriter
+
+\backslash
+themaster.
+\backslash
+arabic{counter}
+\family default
+ is used; otherwise the string 
+\family typewriter
+
+\backslash
+arabic{counter}
+\family default
+ is used.
 \end_layout
 
 \begin_layout Itemize
@@ -8684,6 +8735,21 @@ hebrew
 \end_layout
 
 \end_deeper
+\end_deeper
+\begin_layout Description
+
+\family typewriter
+\series medium
+LabelStringAppendix [string=""]
+\family default
+\series default
+ the same as 
+\family typewriter
+LabelString
+\family default
+, for use in appendix.
+\end_layout
+
 \begin_layout Subsection
 Font description
 \end_layout

Reply via email to