如何为使用 \newlist 创建的列表定制 \autoref?

如何为使用 \newlist 创建的列表定制 \autoref?

期望的结果在下面的代码中被标记为‘WANTED’。

附言:文档为了enumitem

\documentclass{article}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage{hyperref}

\newlist{problem}{enumerate*}{1}
\setlist[problem]{
  resume,
  label=\emph{\arabic*)}
}

\newcommand{\problemautorefname}{Problem} 

\begin{document}

Problems:
\begin{problem}
\item \lipsum[1][1]\label{pb:foo}
\end{problem}
We solve \autoref{pb:foo}, \dots% WANTED: Problem~1

\end{document}

在此处输入图片描述

答案1

我建议您使用cleveref而不是hyperref来创建交叉引用。我建议的主要原因是\cref\Cref允许您一次创建对多个项目的交叉引用。

在此处输入图片描述

\documentclass{article}
\usepackage{enumitem}
\usepackage{lipsum}
\usepackage[colorlinks,allcolors=blue]{hyperref}
\usepackage[nameinlink]{cleveref}

\newlist{problem}{enumerate*}{1} % creates a counter called 'problemi'
\setlist[problem]{resume,left=0pt,
                  label=\emph{\arabic*)},
                  ref=\textup{\arabic*)}}
\crefname{problemi}{problem}{problems}

\begin{document}
Problems:

\begin{problem}
\item\label{pb:foo} \lipsum[1][1]
\item\label{pb:bar} \lipsum[1][2]
\end{problem}

\cref{pb:foo,pb:bar}

\Cref{pb:foo,pb:bar}
\end{document}

相关内容