更改特定列表项目的自动引用名称

更改特定列表项目的自动引用名称

在我的文档中,我有一个自定义列表subtasks类型(使用enumitem)来插入子任务。我想使用来引用它们\autoref。但是,由于这些是列表,\autoref因此在标签前插入了单词“项目”,而我希望标签是“子任务”。

如果我仅使用\def\itemautorefname{subtask}所有列表中的所有项目,则会引用“子任务”一词。

有没有办法只更改列表项的自动引用名称subtasks

答案1

我无法回答你如何\autoref显示“子任务”而不是“项目”。幸运的是,提供使用以下方法的解决方案很简单:聪明人包及其\cref交叉引用命令。使用\cref,还可以轻松地使用单个命令创建多个交叉引用。(在 MWE 中,hyperref仅加载以创建超链接,而不是创建交叉引用。)

在此处输入图片描述

\documentclass{article}

\usepackage{enumitem}
\newlist{subtask}{enumerate}{1}     % this creates a dedicated counter named 'subtaski'
\setlist[subtask,1]{label=\arabic*} % set form of enumeration label here

\usepackage[colorlinks=true]{hyperref}

\usepackage[nameinlink]{cleveref}      % 'nameinlink' option emulates look of \autoref
\crefname{subtaski}{subtask}{subtasks} % set prefix for items of type 'subtaski'

\begin{document}
\begin{subtask}
\item Uno \label{subtask:1}
\item Dos \label{subtask:2}
\item Tres\label{subtask:3}
\end{subtask}

A cross-reference to \cref{subtask:2}.

As stated in \cref{subtask:3,subtask:1}, \dots
\end{document} 

相关内容