Open main menu

Changes

some restructuring and cleanup
< [[Main Page]] | [[Inside ConTeXt]] >
Countext ConTeXt provides a higher layer of API to access various counters. For example, to set the page number to a certain value use
<texcode>
\setnumbersetcounter[pageuserpage]{[1}]
</texcode>
<texcode>
\resetnumber resetcounter [page] \incrementnumberincrementcounter[page] \decrementnumberdecrementcounter[page] \savenumber savecounter [page] \restorenumber restorecounter [page] %\getcounter [page] \rawcountervalue [page]
</texcode>
 
== Names of Commonly Used Counters ==
 
* <code>userpage</code> for visible pagenumbers
* <code>page</code> for internal pagenumbers
* <code>formula</code> for formula numbers
* <code>table</code> for table numbers
* <code>figure</code> for figure numbers
 
 
== Testing the Value of a Counter ==
 
If you need to test the value of a counter, use \rawcountervalue, not \getcounter:
 
<context source="yes" text="results in:">
\definecounter[mynumber][]
\setcounter[mynumber][42]
\doifelse{\getcounter[mynumber]}{42}{
Strange, \type{\getcounter} worked.
}{
Using \type{\getcounter} does not work.
}
 
\doifelse{\rawcountervalue[mynumber]}{42}{
Ok, the test with \type{\rawcountervalue} worked.
}{
Strange, \type{\rawcountervalue} failed.
}
</context>
 
In LMTX, {{cmd|getcounter}} seems to be generally defunct.
 
== Coupling Counters ==
 
Two counters can be coupled by
 
<texcode>
\definecounter[one]
\definecounter[two][one]
</texcode>
 
For example
 
<context source="yes">
\definecounter[one]
\definecounter[two][one]
 
 
Default value of counter one: \rawcountervalue[one]
 
We increment counter two
\incrementcounter[two]
 
New value of counter one: \rawcountervalue[one]
 
</context>
 
By default counters are reset with each new chapter. To have a counter which isn’t reset you need `way=bytext`, and to remove the chapter number from the \getcounter result you have to add `prefix=no`.
 
Example definition:
<texcode>
\definecounter[examplecounter][way=bytext,prefix=no]
</texcode>
 
== Outdated information ==
 
=== Forcing the Reset of a Counter ===
 
In [http://www.mail-archive.com/ntg-context%40ntg.nl/msg78847.html 2015], there was a bug that counters were reset (by chapter, page, etc.) only when they were incremented.
 
To force the reset, you can increment and then decrement a counter before using it.
<texcode>
\definecounter[mycounter][way=bypage]
\setcounter[mycounter][10]
\rawcountervalue[mycounter]
\page % new page, mycounter should be reset
\rawcountervalue[mycounter] % no, it's not reset: you still get '10'
 
\incrementcounter[mycounter]\decrementcounter[mycounter]
\rawcountervalue[mycounter] % now you should get '0' because it has been reset
</texcode>
 
=== \definenumber or \definecounter ? ===
{{cmd|definenumber}} etc. are obsolete aliases for {{cmd|definecounter}} etc.
 
 
[[Category:Programming and Databases]]
[[Category:Tools]]