#ifndef COUNTERS_H
#define COUNTERS_H
+#include "OutputEnums.h"
+
#include "support/docstring.h"
#include <map>
* want the version shown in an appendix.
*/
docstring const & labelString(bool in_appendix) const;
+ /// Similar, but used for formatted references in XHTML output.
+ /// E.g., for a section counter it might be "section \thesection"
+ docstring const & prettyFormat() const { return prettyformat_; }
+
/// Returns a map of LaTeX-like strings to format the counter.
/** For each language, the string is similar to what one gets
* in LaTeX when using "\the<counter>". The \c in_appendix
docstring labelstring_;
/// The same as labelstring_, but in appendices.
docstring labelstringappendix_;
+ /// Similar, but used for formatted references in XHTML output
+ docstring prettyformat_;
/// Cache of the labelstring with \\the<counter> expressions expanded,
/// indexed by language
mutable StringMap flatlabelstring_;
/// counter(s) for which it is the master.
/// Sub-slaves are not zeroed! That happens at slave's first
/// step 0->1. Seems to be sufficient.
- /// \param for_output: whether to track the counters
- void step(docstring const & ctr, bool track_counters = false);
+ /// \param utype determines whether we track the counters.
+ void step(docstring const & ctr, UpdateType utype);
/// Reset all counters.
void reset();
/// Reset counters matched by match string.
*/
docstring counterLabel(docstring const & format,
std::string const & lang) const;
+ /// returns a formatted version of the counter, using the
+ /// format given by Counter::prettyFormat().
+ docstring prettyCounter(docstring const & cntr,
+ std::string const & lang) const;
/// Are we in appendix?
bool appendix() const { return appendix_; }
/// Set the state variable indicating whether we are in appendix.
/// We're trying to track \refstepcounter in LaTeX, more or less.
/// Note that this may be empty.
docstring currentCounter() const;
- /// Called during update labels as we go through various paragraphs,
+ /// Called during updateBuffer() as we go through various paragraphs,
/// to track the layouts as we go through.
void setActiveLayout(Layout const & lay);
- /// Also for updateLabels().
+ /// Also for updateBuffer().
/// Call this when entering things like footnotes, where there is now
/// no "last layout" and we want to restore the "last layout" on exit.
void clearLastLayout() { layout_stack_.push_back(0); }