如何将 \ref{item} 返回的数字转换为字母?

如何将 \ref{item} 返回的数字转换为字母?

下面是一个 MWE,基本上展示了我正在做的事情。

\documentclass{standalone}
\begin{document}
\makeatletter
\newcounter{gp@itemnum}\setcounter{gp@itemnum}{0}
\newcommand*{\gp@newprint@itemnum}{\refstepcounter{gp@itemnum}(\alph{gp@itemnum})}
\newcommand*{\gpnewitem}[1]{\gp@newprint@itemnum\label{#1}}
\newcommand*{\gpgetitemref}[1]{Item (\ref{#1})}
\makeatother

New item: \gpnewitem{test}
Ref new item: \gpgetitemref{test}
\end{document}

我如何才能\ref{#1}打印字母而不是数字?

答案1

LaTeX 计数器协议用于\the<counter>获取计数器表示。默认值为\arabic,但可以重新定义命令以获取字母:

\renewcommand*{\the@gpp@itemnum}{\alph{gp@itemnum}}

然后,和也\label使用\ref这种表示形式:

\documentclass{standalone}
\begin{document}
\makeatletter
\newcounter{gp@itemnum}\setcounter{gp@itemnum}{0}
\renewcommand*{\thegp@itemnum}{\alph{gp@itemnum}}
\newcommand*{\gp@newprint@itemnum}{\refstepcounter{gp@itemnum}(\thegp@itemnum)}
\newcommand*{\gpnewitem}[1]{\gp@newprint@itemnum\label{#1}}
\newcommand*{\gpgetitemref}[1]{Item (\ref{#1})}
\makeatother

New item: \gpnewitem{test}
Ref new item: \gpgetitemref{test}
\end{document}

结果

相关内容