66

I have done this:

\begin{enumerate}
\renewcommand{\labelenumi}{\textbf{S.\theenumi}}
\item a
\item \label{l} b
\item c. goto \ref{l}
\end{enumerate}

The \ref just uses the enumerate number. But I want it to be the full enumerate label.

I also could just type S.\ref{l} but that has the two disadvantages that

  1. if I update the enumerate label, I also have to update this reference,
  2. together with hyperref, this doesn't look so nice.

How would be a clean/nice way to solve this?

85

You can use the enumitem package:

\documentclass{article}
\usepackage{enumitem}

\begin{document}

\begin{enumerate}[label=\textbf{S.\arabic*}]
\item a
\item \label{l} b
\item c. goto \ref{l}
\end{enumerate}

\end{document}

enter image description here

or

\begin{enumerate}[label=\textbf{S.\arabic*},ref=S.\arabic*]
\item a
\item \label{l} b
\item c. goto \ref{l}
\end{enumerate}

if you don't want the reference to be boldfaced.

  • This is nice. I would like to add that it does not work together with \usepackage{paralist} ... if you need to use that package. – peschü Mar 12 '17 at 20:19
  • I'm curius, what does the * after \arabic stands for? – Gilles Bonnet Nov 14 at 10:22
20

For your attempt properly work, you need redefine the counter representation (\theenumi) as well as the label associated with it (\labelenumi). This separates the formatting from the counter when you're using \ref:

enter image description here

\documentclass{article}
\begin{document}
\begin{enumerate}
\renewcommand{\labelenumi}{\textbf{\theenumi}}
\renewcommand{\theenumi}{S.\arabic{enumi}}
\item a
\makeatletter
\show\@currentlabel
\makeatother
\item \label{l} b
\item c. goto \ref{l}
\end{enumerate}
\end{document}

This also works nicely with hyperref. However, in general, it is much easier to use enumitem since it can be used in a global or localized setting using a key-value approach; very convenient.

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.