![引用章节标题并列举项目编号](https://linux22.com/image/357498/%E5%BC%95%E7%94%A8%E7%AB%A0%E8%8A%82%E6%A0%87%E9%A2%98%E5%B9%B6%E5%88%97%E4%B8%BE%E9%A1%B9%E7%9B%AE%E7%BC%96%E5%8F%B7.png)
我有多个包含枚举的部分。给定一个引用,是否可以获取它所属的部分名称?以及项目编号。
例如,给定此代码(带有虚构的命令itemref
和secref
)
\section*{Example title}
\begin{enumerate}
\item first one
\item second one \label{ref:anchor}
\end{enumerate}
\section*{Second title}
See item \itemref{ref:anchor} in section \secref{ref:anchor}.
结果是
示例标题
1. 第一个
2. 第二个第二个标题
请参阅“示例标题”部分中的第 2 项。
我已经找到了许多引用部分名称的方法,但据我了解,锚点必须是部分本身,这在我的情况下不起作用,因为我在此文档中移动项目并且我希望它是动态的。
编辑:我有一个带有产品编号参考包的工作解决方案enumitem
,因此只缺少部分名称。
答案1
这个zref
包裹可以在这里帮助你。
\documentclass{article}
\usepackage{enumitem}
\usepackage[titleref,user]{zref}
\ztitlerefsetup{}
\newcommand*\itemlabel[1]{%
\label{#1}%
\zlabel{#1}%
}
\newcommand*\itemref[1]{\ref{#1}}
\newcommand*\secref[1]{``\ztitleref{#1}''}
\begin{document}
\section*{Example title}
\begin{enumerate}
\item first one
\item second one\itemlabel{ref:anchor}
\end{enumerate}
\section*{Second title}
See item~\itemref{ref:anchor} in Section \secref{ref:anchor}.
\end{document}
与您发布的内容之间的一个真正区别是我定义了一个\itemlabel
宏,您需要使用它来代替\label
。