为嵌套的 enumitem \item 创建 \ref,而不在输出中嵌套

为嵌套的 enumitem \item 创建 \ref,而不在输出中嵌套

抱歉,这个问题问得有点尴尬。

基本上我有嵌套\begin{enumerate}列表。我希望出现这样的内容:

1 Foo
 1.1 Bar
 Please see additional information in subsection 1
   1.1.1 Baz

但是当我使用这段代码时:

\begin{enumerate}
  \item Foo
  \begin{enumerate}
     \item Bar
     Please see additional information in subsection \ref{test}
     \begin{enumerate}
       \item Baz
       \label{test}
     \end{enumerate}
  \end{enumerate}
\end{enumerate}

它看起来是这样的:

1 Foo
 1.1 Bar
   Please see additional information in subsection 1.1.1
   1.1.1 Baz

当嵌套变得很重时,它最终会看起来更丑陋(“参见第 3(d)iC 小节”)。有没有办法只列出最终的嵌套级别?我试图简化我的代码,使其更容易阅读。希望它不会混淆问题。

答案1

enumitem为其列表提供单独的labelref组件。因此,您可以对项目的引用使用与为该项目设置的标签不同的表示形式。以下是示例:

在此处输入图片描述

\documentclass{article}
\usepackage{enumitem}% http://ctan.org/pkg/enumitem
\begin{document}
\begin{enumerate}[label=\arabic*]
  \item Foo
  \begin{enumerate}[label*=(\alph*)]
     \item Bar
     Please see additional information in subsection \ref{test}
     \begin{enumerate}[label*=\roman*,ref=\roman*]
       \item Baz
       \label{test}
     \end{enumerate}
  \end{enumerate}
\end{enumerate}
\end{document} 

尽管我已经定义了列表的构造及其用法,但这可以全局执行。请参阅5 全局设置(第 9 页)enumitem文档

这也无缝衔接了hyperref

答案2

请始终发布完整的文档,而不仅仅是片段。您可以将列表每一级使用的前缀重新定义为空。

在此处输入图片描述

\documentclass{article}
\makeatletter
\renewcommand\p@enumi{}
\renewcommand\p@enumii{}
\renewcommand\p@enumiii{}
\renewcommand\p@enumiv{}
\makeatother
\begin{document}

\begin{enumerate}
  \item Foo
  \begin{enumerate}
     \item Bar
     Please see additional information in subsection \ref{test}
     \begin{enumerate}
       \item Baz
       \label{test}
     \end{enumerate}
  \end{enumerate}
\end{enumerate}

\end{document}

相关内容