我遇到了以下问题:我有一个计数器(在我的情况下enumi
),我想用与第一次出现时不同的名称来引用它。Tex/Latex 中是否有工具可以做到这一点?
更准确地说:我想在我的文档正文中写下这个:
\section{Lorem}
\subsection{Ipsum}
\begin{enumerate}
\item \label{my_item} dolor sit amet
\item consectetur
\end{enumerate}
并使列表显示为:
i)dolor sit amet
ii) 连接
但是使用\ref{my_item}
获取 1.1.i 时(假设“Ipsum”是 1.1 小节)。因此使用:
\renewcommand{\theenumi} {\bf \arabic{section}.\arabic{subsection}.\roman{enumi}~}
这不是我想要的。
答案1
无需加载任何额外的 LaTeX 包即可实现格式化目标(当然,加载合适的包也没什么问题)。只需将以下代码添加到序言中:
\renewcommand\labelenumi{\roman{enumi})} % determine look of label
\renewcommand\theenumi\labelenumi
\makeatletter
\renewcommand\p@enumi{\thesubsection.} % "prefix" for cross-references
\makeatother
完整的 MWE:
\documentclass{article}
\renewcommand\labelenumi{\roman{enumi})}
\renewcommand\theenumi\labelenumi
\makeatletter
\renewcommand\p@enumi{\thesubsection.}
\makeatother
\begin{document}
\section{Lorem}
\subsection{Ipsum}
\begin{enumerate}
\item \label{my_item} dolor sit amet
\item consectetur
\end{enumerate}
\section{Dolor}
A cross-reference to item \ref{my_item}.
\end{document}
附录enumitem
:通过如下方式加载包可以实现相同的输出:
\usepackage{enumitem}
\setlist[enumerate,1]{label*=\roman*),
ref=\thesubsection.\roman*)}