I would like to somehow use LaTeX to automatically number constants.
Some background
As a mathematician, in my daily work there are a lot of throw-away constants which are not extremely important in the discourse. So I will sometimes write inequalities like
\[ f(x) \leq c_1 g(x) \leq c_2 (g'(x) + h(x)^2 -3) \leq c_3 \int h(x)^2 \]
Since the constants themselves tend not to be important, to conserve alphabets, I call them all 'c' with a subscript. Now, it is a bit of a hassle to
keep track manually which numbers I've used up to a given point in the paper, especially if I am working on a large document
renumber the constants if I modified an argument. Say if I remove the middle inequality from the example above, for aesthetic purposes it'd much better to have
\[ f(x) \leq c_1 g(x) \leq c_2 \int h(x)^2 \]
instead ofc_3
in the last term. But then I'd have to go back through the document to renumber all the constants.
Now sometimes I can solve the problem using the convention that 'c' with no subscripts stands for a constant that can change from line to line. But often that is not feasible (suppose I do need to refer to individual of those constants and verify that they are indeed 'constant' enough for my purpose).
What I'd like
Now I am aware of the newcounter
command to define a new counter. I even know how to use it to automatically increment the counter. So I can define a command that prints c_\thecounter
and increments the counter so I get a running list of constants. So that solves half the problem.
The other half of the problem that I don't know how to deal with is how to refer to a constant defined previously. Naively using label
and ref
, of course, doesn't work. (I actually don't quite understand the inner workings of those two commands; so an explanation of why they don't work will also be helpful.)
As an illustration of what I'd like, it'd be great to have a pair of commands \newconstant
and \oldconstant
which can be used like this
% Create some new constants
\[ f(x) \leq \newconstant g(X) \leq \newconstant h(x) \]
% Create a new constant with a label
\[ m \geq \newconstant[cnst:m] m' \]
% Refer to an already defined constant
The constant $\oldconstant{cnst:m}$ defined above is actually 1.
Which will display something like
f(x) <= c_1 g(x) <= c_2 h(x)
m >= c_3 m'
The constant c_3 defined above is actually 1
What I know how to do is to define, say
\newcounter{cnstcnt}
\newcommand{\newconstant}{\ensuremath{c_\thecnstcnt}\addtocounter{cnstcnt}{1}}
and this will print the running list.
Is there already a package that does this? If not is there a way to get the behaviour I described? (Especially the ability to refer back to a previous constant.)