我想创建一个枚举列表,其中包含项目描述和分配的标签,以便每个项目都可以单独引用\ref
或\nameref
如何手动完成这项工作很明显,但我想节省一点工作,并创建一些命令让 latex 完成这项工作
这是我想要雾化的 LaTeX 代码
\begin{enumerate}[label=\textbf{T\,\arabic*},leftmargin=1cm]
\item \textit{caption} \label{itm:1}
\end{enumerate}
现在我想像这样引用标签
\ref{itm:1}
>> T1
\nameref{itm:1}
>> (T1) caption
通过增加计数器来引用后续项目
任何想法/帮助都将不胜感激
答案1
这使用包装器命令\myitem
来获取项目文本并将其存储到其中\@currentlabelname
,这是\nameref
正确使用“名称”所需要的!
\documentclass{article}
\usepackage{enumitem}
\usepackage{etoolbox}
\usepackage{hyperref}
\makeatletter
\newcommand{\myitem}[2][]{%
\ifblank{#1}{%
\item #2%
}{%
\item[#1] #2%
}%
\protected@edef\@currentlabelname{(\theenumi) #2}
}
\makeatother
\begin{document}
\begin{enumerate}[label=\textbf{T\,\arabic*},leftmargin=1cm]
\myitem{\textit{caption}} \label{itm:1}
\myitem{Some other important text} \label{itm:2}
\end{enumerate}
Now, we use \nameref{itm:1} and \ref{itm:1}
And \nameref{itm:2}
\end{document}
更新-- 具有自动标记功能,重置枚举列表时要小心!
是Ti1
枚举第一级的第一个标签,Tii1
和Tiii1
是Tiv1
更深级别的相关标签。
\documentclass{article}
\usepackage{enumitem}
\usepackage{etoolbox}
\usepackage{hyperref}
\makeatletter
\newcommand{\myitem}[2][]{%
\ifblank{#1}{%
\item #2%
}{%
\item[#1] #2%
}%
\protected@edef\@currentlabelname{(\csname the\@enumctr\endcsname) #2}
\label{T\romannumeral\@enumdepth\arabic{\@enumctr}}%
}
\makeatother
\begin{document}
\begin{enumerate}[label=\textbf{T\,\arabic*},leftmargin=1cm]
\myitem{\textit{caption}}
\myitem{Some other important text}
\begin{enumerate}[label=\textbf{Foooo\arabic*}]
\myitem{\textbf{Subitem}}
\end{enumerate}
\end{enumerate}
\clearpage
Now, we use \nameref{Ti1} and \ref{Ti1}
And \nameref{Ti2} or \nameref{Tii1}
\end{document}