Fix bug 409 (Add support for numbered footnotes)

* src/insets/InsetFoot.cpp (updateLabels): number the footnote if
	(1) the footnote counter exists and (2) it is not in a title
	layout

	* lib/layouts/stdcounters.inc: add a footnote counter.


git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@19524 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Jean-Marc Lasgouttes 2007-08-13 20:29:33 +00:00
parent eca0637e51
commit b0d1a6b717
3 changed files with 30 additions and 1 deletions

View File

@ -80,3 +80,7 @@ End
Counter Counter
Name listing Name listing
End End
Counter
Name footnote
End

View File

@ -10,17 +10,22 @@
*/ */
#include <config.h> #include <config.h>
#include "debug.h"
#include "InsetFoot.h" #include "InsetFoot.h"
#include "Buffer.h" #include "Buffer.h"
#include "BufferParams.h"
#include "Counters.h"
#include "gettext.h" #include "gettext.h"
// the following is needed just to get the layout of the enclosing // the following is needed just to get the layout of the enclosing
// paragraph. This seems a bit too much to me (JMarc) // paragraph. This seems a bit too much to me (JMarc)
#include "OutputParams.h" #include "OutputParams.h"
#include "ParIterator.h"
#include "support/convert.h"
#include "support/std_ostream.h" #include "support/std_ostream.h"
#include "support/lstrings.h"
namespace lyx { namespace lyx {
@ -53,6 +58,23 @@ docstring const InsetFoot::editMessage() const
} }
void InsetFoot::updateLabels(Buffer const & buf, ParIterator const & it)
{
TextClass const & tclass = buf.params().getTextClass();
Counters & cnts = tclass.counters();
docstring const & foot = from_ascii("footnote");
Paragraph const & outer = it.paragraph();
if (!outer.layout()->intitle && cnts.hasCounter(foot)) {
cnts.step(foot);
//FIXME: the counter should format itself.
setLabel(support::bformat(from_ascii("%1$s %2$s"),
getLayout(buf.params()).labelstring,
convert<docstring>(cnts.value(foot))));
}
InsetCollapsable::updateLabels(buf, it);
}
int InsetFoot::latex(Buffer const & buf, odocstream & os, int InsetFoot::latex(Buffer const & buf, odocstream & os,
OutputParams const & runparams_in) const OutputParams const & runparams_in) const
{ {

View File

@ -40,6 +40,9 @@ public:
OutputParams const &) const; OutputParams const &) const;
/// ///
virtual docstring const editMessage() const; virtual docstring const editMessage() const;
/// Update the counters of this inset and of its contents
void updateLabels(Buffer const &, ParIterator const &);
protected: protected:
InsetFoot(InsetFoot const &); InsetFoot(InsetFoot const &);
private: private: