错误引用枚举环境中的标签

错误引用枚举环境中的标签

梅威瑟:

\documentclass[12pt]{article}
\usepackage{icomma}
\usepackage[english]{babel}
\newcommand{\bookcite}[6]{#1, #2: \textit{#3}. #4 ed. #5, #6 pp.}
\usepackage{enumitem}
\usepackage{hyperref}
\hypersetup{
    colorlinks,
    linkcolor=blue,
    urlcolor=blue
}
\begin{document}
Text Text Text
\tableofcontents
\newpage 
\section{Section Here}
\begin{enumerate}[label=(\thesection.\arabic*)]
\item \begin{enumerate}[label={(\alph*)},ref=(\thesection.\arabic*.\alph*)]
\item \bookcite{Authors}{Year}{Title}{Edition}{Publisher}{Number of Pages}\label{book-A}
\item \bookcite{Authors}{Year}{Title}{Edition}{Publisher}{Number of Pages} \label{book-B}
\end{enumerate}
\item \ref{book-B}
\end{enumerate}
\end{document}

图像:

在此处输入图片描述

引用以蓝色显示为 (1.2.b),不应为 (1.2.b),而应为 (1.1.b)。我在这里做错了什么?

我已将范围缩小到不喜欢的标签(出于某种原因,其中的连字符ref有问题)或不喜欢我的bookcite命令。 (注意:我确实知道一些 BibTeX……如果它有可能给我比这里更好的结果,我会很想知道!)

答案1

错误在于ref={(\thesection.\arabic*.\alph*)},确切地说是命令\arabic*,因为它将被替换为enumii(它是第二级),而不是按照要求,向后引用到更高级别enumi

手册中以某种方式说明了这一点enumitem,它ref不是继承的,必须使用\ref{level1}等等(但在我看来,这是一个不明确的说法。)

\arabic{enumi}一种解决方案是在第二级用户定义引用的中间部分明确引用,即

\begin{enumerate}[label={(\alph*)},ref={(\thesection.\arabic{enumi}.\alph*})]
...

作为第二级设置。

\documentclass[12pt]{article}
%\usepackage{icomma} % Is this needed?
\usepackage[english]{babel}
\newcommand{\bookcite}[6]{#1, #2: \textit{#3}. #4 ed. #5, #6 pp.}
\usepackage{enumitem}
\usepackage{hyperref}
\hypersetup{
    colorlinks,
    linkcolor=blue,
    urlcolor=blue
}
\begin{document}
Text Text Text
\tableofcontents
\newpage 
\section{Section Here}
\begin{enumerate}[label=(\thesection.\arabic*),ref={(\thesection.\arabic*)}]
\item 
  \begin{enumerate}[label={(\alph*)},ref={(\thesection.\arabic{enumi}.\alph*})]
  \item \label{book-A}\bookcite{Authors}{Year}{Title}{Edition}{Publisher}{Number of Pages}
  \item \label{book-B}\bookcite{Authors}{Year}{Title}{Edition}{Publisher}{Number of Pages} 
  \end{enumerate}
\item \ref{book-B}
\end{enumerate}
\end{document}

在此处输入图片描述

相关内容