You wrote,
As I understand it, a counter is supposed to increment automatically.
That's not correct. If you create a counter but never do anything to or with it except display its value (say, via \themcounter
), the counter's value will remain at its initial value (generally, 0
) throughout the document.
In LaTeX, a counter's value can be modified with the commands \setcounter
, \addtocounter
, \stepcounter
, and \refstepcounter
. \setcounter
and \addtocounter
take two arguments: the name of the counter and a whole number. \stepcounter
and \refstepcounter
increment the counter's value by 1
, and they take just one argument -- the name of the counter whose value is to be incremented.
If you want to create a LaTeX macro which (a) increments the counter named mycounter
by 1
and (b) displays the newly-incremented value of mycounter
, you can do so in several ways. E.g., after creating the counter with
\newcounter{mycounter}
you could use one of the following three definitions of \showmycounter
:
\newcommand\showmycounter{\addtocounter{mycounter}{1}\themycounter}
\newcommand\showmycounter{\stepcounter{mycounter}\themycounter}
\newcommand\showmycounter{\refstepcounter{mycounter}\themycounter}
By default, the directives \themycounter
and \arabic{mycounter}
produce the same output, i.e., arabic numerals are used by default to show the value of a counter. If you wanted to show the counter's value as, say, an uppercase-Roman numeral, you'd either have to redefine \themycounter
(via \renewcommand\themycounter{\Roman{mycounter}}
) or change the above \newcommand
instructions, e.g.,
\newcommand\showmycounter{\stepcounter{mycounter}\Roman{mycounter}}
The value of a counter can be any whole number, including 0
and negative whole numbers. Unsurprisingly, if the value of mycounter
is non-positive, an attempt to represent its value as an alphabetic character or as a Roman numeral will generate an error message.
An MWE (minimum working example) that builds on these ideas:
\documentclass{article}
\newcounter{mycounter} % create a new counter, called 'mycounter'
% default def'n of '\themycounter' is '\arabic{mycounter}'
%% command to increment 'mycounter' by 1 and to display its value:
\newcommand\showmycounter{\stepcounter{mycounter}\themycounter}
\usepackage{lipsum}
\newcommand\showlips{\stepcounter{mycounter}\lipsum[\value{mycounter}]}
\begin{document}
\showmycounter, \showmycounter, \showmycounter
\showlips
% verifying that the preceding command used '4':
\lipsum[4]
\end{document}
Best Answer
If both should have always the same value, why not simply
\let
the slave to the master? This copies the internal reference to the\count
register.This is for LaTeX counters. For TeX count's simply remove the
c@
(if given by cs name) or use\let#1#2
if given by control sequence.