In this previous question, we defined a new command \owntag
to combine the equation number with a user-defined tag:
\documentclass{article}
\usepackage{amsmath}
\newcommand{\owntag}[1]{\stepcounter{equation}\tag{\theequation, #2}}
\begin{document}
\begin{align}
F=ma \owntag[eq:newton]{Newton}
\end{align}
My equation is \eqref{eq:newton}.
\end{document}
As you can see, we can reference the equation getting the format "1, Newton" as a reference. I would like to extend this command such that I can
- reference to the equation using only the number (i.e. "eq. (1)")
- reference to the equation using only the text (i.e. "eq. (Newton)")
To implement the first goal, I tried to add an additional counter, set it to the value of the equation counter, do \refstepcounter
and put the \label
right after it, but still get "(1, Newton)" as a reference:
\documentclass{article}
\usepackage{amsmath}
\usepackage{xifthen}
\newcounter{equationwotag}
\newcommand{\owntag}[2][]{\ifthenelse{\equal{#1}{}}{
\stepcounter{equation}\tag{\theequation, #2}
}{
\setcounter{equationwotag}{\value{equation}}\label{#1}\stepcounter{equation}\stepcounter{equation}\tag{\theequation, #2}
}}
\begin{document}
\begin{align}
F=ma \owntag[eq:newton]{Newton}
\end{align}
My equation is \eqref{eq:newton}.
\end{document}
How can I achieve these two methods of referencing?
Best Answer
When you you add a
\label{eq:Newton}
what happens is that the current "value" of\@currentlabel
is stored in the aux file as the associated label. So one way to do what you want is to set\@currentlabel
accordingly and then add the\label
. There is an added complication in that the amsmath package redefines\label
so that it does a little bit of error checking and, in particular, gives an error if you try to define two labels inside an equation environment likealign
. To get around this we have to use\ltx@label
instead of\label
, which is the "normal unguarded" latex\label
.Finally, I misread your MWE and thought that you wanted an optional argument that gives a short version of the label. This seems like a good feature to have but it requires a little more trickery as we need to insert a "variable" inside the label name.
I have set it up so that after
\owntag[<short label>]{<tag>}
:\ref{Eq:<label>}
gives the "full label" with the equation number and the "own tag"\ref{eq:<label>}
gives only the equation number\ref{tag:<label>}
gives only the "own tag"The upshot is that you can now produce this:
using the code