抱歉,这个问题问得有点尴尬。
基本上我有嵌套\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
为其列表提供单独的label
和ref
组件。因此,您可以对项目的引用使用与为该项目设置的标签不同的表示形式。以下是示例:
\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}