3

I want to use the accustomed equation numbering and label manually and anywhere; for example in an array.

With the command
\newcommand{\tagx}[1][]{\refstepcounter{equation}(\theequation)\label{#1}}
can I create custom tags \tagx or \tagx[eq:bar] and reference them as usual \eqref{eq:bar}.

But in a tag with an own figure
\newcommand\mytag[2][]{\begingroup \renewcommand{\theequation}{#2}% ändern (\theequation)\label{#1} % ausschreiben \endgroup }
still works \mytag[eq:bar1]{***}, but not the referencing \eqref{eq:bar1}.

What can I do?

enter image description here

\documentclass[12pt]{scrreprt}
\usepackage{amsmath, amsfonts, amssymb}

\newcommand{\tagx}[1][]{\refstepcounter{equation}(\theequation)\label{#1}}

\newcommand\mytag[2][]{\begingroup
\renewcommand{\theequation}{#2}% ändern
(\theequation)\label{#1} % ausschreiben
\endgroup
}

% \renewcommand{\theequation}{\refstepcounter{equation}(\theequation)}


\usepackage[colorlinks=true]{hyperref}
\begin{document}
\chapter{First Chapter}
An equation for counting: 
\begin{equation}
a+b=c\label{eq:foo1} 
\end{equation}
The tag of the equation is \eqref{eq:foo1}.

\section{Putting a tag in the text}
A normal tag in the text \tagx[eq:bar0] and an own tag \mytag[eq:bar1]{***} is showing correct. 

The referencing of the normal tag in the text \eqref{eq:bar0} is correct; but the own tag \eqref{eq:bar1} is wrong - here should be "(***)". 
\bigskip


Another equation:
\begin{equation}
1+1=2\label{eq:foo2} 
\end{equation}
The tag of the equation is \eqref{eq:foo2}.

\end{document}
  • why are you using \theequation in \mytag ? also shouldn't the argument to \tagx be mandatory not optional? If you omit the argument then you will execute \label{} which doesn't really work (and will give errors if done more than once) – David Carlisle May 19 at 15:41
  • @DavidCarlisle I thought it would be better to keep the label name optional. So \tagx gives (1.2) e.g. And \tagx[eq:foo] gives (1.2) and sets \label{eq:foo}. I do not think I have to label all tagx'es there ever will be. – cis May 19 at 17:20
  • in that case you would only want to do the \label in the case the argument was provided, as it is above if you don't supply the option you end up with \label{} which is an error. – David Carlisle May 19 at 17:22
  • @DavidCarlisle I changed your solution to % \tagx[<label, optional>] % normal tag inline \newcommand{\tagx}[1][]{\refstepcounter{equation}(\theequation)\label{#1}} That is wrong? – cis May 19 at 17:38
  • yes that is wrong as you do \label{} if the argument is not provided. – David Carlisle May 19 at 17:49
6

Your \mytag command doesn't set \@currentlabel.

\makeatletter
\newcommand\mytag[2][]{%
  \def\@currentlabel{#2}%
  (#2)\label{#1}% ausschreiben
}
\makeatother

I'm not sure why the “label” argument is optional: you need it, don't you?

\documentclass[12pt]{scrreprt}
\usepackage{amsmath, amsfonts, amssymb}
\usepackage[colorlinks=true]{hyperref}

\newcommand{\tagx}[1][]{\refstepcounter{equation}(\theequation)\label{#1}}

\makeatletter
\newcommand\mytag[2][]{%
  \def\@currentlabel{#2}%
  (#2)\label{#1} % ausschreiben
}
\makeatother

% \renewcommand{\theequation}{\refstepcounter{equation}(\theequation)}


\begin{document}
\chapter{First Chapter}
An equation for counting: 
\begin{equation}
a+b=c\label{eq:foo1} 
\end{equation}
The tag of the equation is \eqref{eq:foo1}.

\section{Putting a tag in the text}
A normal tag in the text \tagx[eq:bar0] and an own tag \mytag[eq:bar1]{***} is showing correct. 

The referencing of the normal tag in the text \eqref{eq:bar0} is correct; but the own tag \eqref{eq:bar1} is wrong - here should be "(***)". 
\bigskip


Another equation:
\begin{equation}
1+1=2\label{eq:foo2} 
\end{equation}
The tag of the equation is \eqref{eq:foo2}.

\end{document}

enter image description here

I'd implement it differently: the label should be mandatory and the personal tag optional.

\documentclass[12pt]{scrreprt}
\usepackage{amsmath, amsfonts, amssymb, xparse}
\usepackage[colorlinks=true]{hyperref}

\makeatletter
\NewDocumentCommand{\tagx}{om}{%
  \IfNoValueTF{#1}
   {% normal equation number
    \refstepcounter{equation}(\theequation)\label{#2}%
   }
   {% personal tag
    (#1)\def\@currentlabel{#1}\label{#2}%
   }%
}
\makeatother

\begin{document}
\chapter{First Chapter}
An equation for counting: 
\begin{equation}
a+b=c\label{eq:foo1} 
\end{equation}
The tag of the equation is \eqref{eq:foo1}.

\section{Putting a tag in the text}
A normal tag in the text \tagx{eq:bar0} and an own 
tag \tagx[***]{eq:bar1} is showing correct. 

The referencing of the normal tag in the text \eqref{eq:bar0} 
is correct; the own tag \eqref{eq:bar1} is correct as well.

Another equation:
\begin{equation}
1+1=2\label{eq:foo2} 
\end{equation}
The tag of the equation is \eqref{eq:foo2}.

\end{document}

enter image description here

  • Ah, I see: you put both commands together. – cis May 19 at 16:56
  • @ egreg Is it possible, to make the label-name ('eq:bar1' e.g.) an optional argument too? – cis May 19 at 17:14
5

I think you want something like

enter image description here

\documentclass[12pt]{scrreprt}
\usepackage{amsmath, amsfonts, amssymb}

\newcommand{\tagx}[1]{\refstepcounter{equation}(\theequation)\label{#1}}

\makeatletter
\newcommand\mytag[2]{{%
#2%
\def\@currentlabel{#2}%
\label{#1}%
}}
\makeatother
% \renewcommand{\theequation}{\refstepcounter{equation}(\theequation)}


\usepackage[colorlinks=true]{hyperref}
\begin{document}
\chapter{First Chapter}
An equation for counting: 
\begin{equation}
a+b=c\label{eq:foo1} 
\end{equation}
The tag of the equation is \eqref{eq:foo1}.

\section{Putting a tag in the text}
A normal tag in the text \tagx{eq:bar0} and an own tag \mytag{eq:bar1}{***} is showing correct. 

The referencing of the normal tag in the text \eqref{eq:bar0} is correct; but the own tag \eqref{eq:bar1} is wrong - here should be "(***)". 
\bigskip


Another equation:
\begin{equation}
1+1=2\label{eq:foo2} 
\end{equation}
The tag of the equation is \eqref{eq:foo2}.

\end{document}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.