::
Finché si usa l’argomento opzionale del comando [tt]\item[/tt], i riferimenti non potranno mai funzionare. Si provi a compilare il seguente esempio, che include anche le spiegazioni.
`
\documentclass[a4paper]{article}
\usepackage[T1]{fontenc}
\usepackage[ascii]{inputenc}
\usepackage[italian]{babel}
\newcommand*{\meta}[1]{\(\langle\textit{#1}\rangle\)}
\begin{document}
\section{Cos\`{\i} \`{e} sbagliato}
\label{S:Sbagliato}
Se si d\`{a} un argomento esplicito al comando \verb|\item|, quest'ultimo non
esegue \verb|\refstepcounter{|\meta{contatore}\verb|}| e di conseguenza
l'etichetta non viene “catturata'' dal comando \verb|\label|:
\begin{enumerate}
\item[(a)]\label{?}
Il valore del contatore \texttt{enumi} \`{e} rimasto~\theenumi.
\item[(b)]\label{??}
Ancora: \theenumi. Vedete che \texttt{enumi} non cambia?
\item[(c)]\label{???}
\`{E} sempre \( \verb|\theenumi|=\mbox{\theenumi} \).
\end{enumerate}
I riferimenti sono \ref{?}, \ref{??} e~\ref{???}: ovviamente, tutti e tre hanno
“catturato'' l'ultima etichetta effettivamente generata, cio\`{e} quella
relativa alla sezione~\ref{S:Sbagliato}.
\section{Cos\`{\i}, invece, funziona}
\label{S:Funziona}
Quello che bisogna fare \`{e} \emph{non} usare l'argomento opzionale di
\verb|\item|, e cambiare invece le impostazioni dell'ambiente \texttt{enumerate}
in modo da ottenere la stampa desiderata. Questo pu\`{o} anche essere fatto “a
mano'' nel modo seguente:
\begin{enumerate}
\renewcommand*{\theenumi}{\textnormal{(\alph{enumi})}}
\renewcommand*{\labelenumi}{\theenumi}
\item\label{!}
Ora funziona: il contatore \texttt{enumi} vale~\arabic{enumi},
e \verb|\theenumi| produce~\theenumi.
\item\label{!!}
Eccetera: \texttt{enumi} ora vale~\arabic{enumi}.
\item\label{!!!}
Analogamente \( \verb|\theenumi|=\mbox{\theenumi} \).
\end{enumerate}
I riferimenti ora sono corretti: sub \ref{!}, \ref{!!} e~\ref{!!!}.
Va per\`{o} osservato che la via raccomandata per personalizzare gli ambienti
\texttt{enumerate} e \texttt{itemize} \`{e} usare il pacchetto
\texttt{enumitem}, alla cui documentazione vi rimando.
\end{document}
`
Si veda anche questa domanda per una spiegazione di come funziona il comando [tt]\label[/tt].
Ciao.
—
Gustavo