我提供了我主要期望输出的序言,因为有人告诉我,我下面的方法本质上是错误的(因为\nameref
没有设计或无法获得数字,而不是描述性标签)。
尽管如此,我还是希望能够有一个命令,比如\nameref
,给定一个标签来检索enumerate
与其各自项目相关的计数器。
enumerate
item
我的目标是能够在单个 (目前已通过 实现) 和多个标签上下文中引用s \ref
。例如,我希望能够继续执行\ref{<label1>}
,但也能执行类似 的操作\multirefs{<label1>, <label2>}
并产生以下输出结果:
\ref{<label1>}
: (A_{1}) ← 目前有效
\multirefs{<label1>, <label2>}
: (A_{1}, A_{2}) ← 这就是我想要的
然而,我最感兴趣的是更通用的方法,类似于链接答案。
我正在尝试\nameref
与enumitem
。为此,我使用了关于此主题的现有答案。
然后,我将该答案中的文档代码包装在自定义命令中,如下所示(部分改编自另一个答案):
\newcommand{\labelleditem}[1]{%
\stepcounter{enumi}%
\item[{\theenumi{}}\label{#1}]%
}
我想利用description
环境,带有环境的可选参数enumerate
,如下所示:
\begin{description}[label={($\text{A}_{\arabic*}$)}, series=name, resume=name]
\labelleditem{Broken} XXX
\item XXX
\end{description}
这不起作用,大概部分是由于description
环境没有完全实施或提供enumitem
可选参数。
为了澄清起见,我只想使用列表enumerate
,如下面的 MWE 所示。然而,我不知道如何正确地调整关于此主题的现有答案,它使用一个description
列表,到一个enumerate
列表。
我怎样才能让它工作,类似于关于此主题的现有答案,但是需要我的附加规格,如上所示?
或者,我怎样才能\nameref
通过更通用或更直接的补丁来工作enumitem
?
梅威瑟:
\documentclass{article}
\usepackage{enumitem}
\makeatletter
\newcommand\enit@descriptionlabel@hook[1]{}
\def\enit@description@i#1#2#3#4{%
\ifnum#1>#3\relax
\enit@toodeep
\else
\enit@list{}%
{\let\enit@type\tw@
\advance#1\@ne
\labelwidth\z@
\enit@align@left
\let\makelabel\descriptionlabel
\enit@style@standard
\enit@preset{#2}{#1}{#4}%
\enit@calcleft
\let\enit@svlabel\makelabel
\def\makelabel##1{%
\NR@gettitle{##1}%
\labelsep\z@
\ifenit@boxdesc
\enit@svlabel{\enit@align{\enit@format{\enit@descriptionlabel@hook{##1}}}}%
\else
\nobreak
\enit@svlabel{\enit@format{\enit@descriptionlabel@hook{##1}}}%
\aftergroup\enit@postlabel
\fi}%
\enit@before
\enit@negwidth%
}%
\enit@keyfirst
\fi}
\usepackage{hyperref}
\AtBeginDocument{\let\descriptionlabel\NRorg@descriptionlabel}
\renewcommand\enit@descriptionlabel@hook[1]{\NR@gettitle{#1}#1}
\newcommand{\labelleditem}[1]{%
%\label{#1}%
\stepcounter{enumi}%
\item[{\theenumi{}}\label{#1}]%
%
}
% -------------------------------------
\begin{document}
\begin{description}
\item [{Test}\label{Test}] Some text
\end{description}
\begin{description}[label={($\text{A}_{\arabic*}$)}, series=name, resume=name]
\labelleditem{Broken} XXX
\item XXX
\end{description}
\nameref{Test}
\nameref{Broken}
\end{document}
上述代码生成:
它还输出以下错误:
Missing control sequence inserted.
<inserted text>
\inaccessible
l.57 ...}_{\arabic*}$)}, series=name, resume=name]
我也提供这个 MWE背页。
答案1
答案2
这回答已证明,在这个问题的最新版本中提供的信息已经足够。