组合 enumitem 和 nameref 包时似乎出现了问题。使用以下代码时,我收到错误:
! 在一段中发现无限胶水收缩。
我已经检查了软件包文档,但两个软件包都没有提到另一个软件包组合起来存在问题。
删除 enumitem 包可以消除错误,但我在文档的其他地方需要该包。这也显示了我想要的结果,即与项目标签“Label”的交叉引用。
代码:
\documentclass{article}
\usepackage{enumitem}
\usepackage{nameref}
\begin{document}
\begin{description}
\item [Label\label{Ref}] Text
\end{description}
\begin{itemize}
\item \nameref{Ref}
\end{itemize}
\end{document}
答案1
该nameref
包使用gettitlestring
具有支持的代码enumitem
,但它不完整:它只管理\enit@format
,但不管理\enit@align
。
\documentclass{article}
\usepackage{enumitem}
\usepackage{nameref}
\makeatletter
\g@addto@macro\GTS@PredefinedLeftCmds{%
\GTS@TestLeft\enit@align\GTS@Cdr % package enumitem
}
\g@addto@macro\GTS@DisablePredefinedCmds{%
\let\enit@align\@empty % package enumitem
}
\makeatother
\begin{document}
\begin{description}
\item [Label\label{Ref}] Text
\end{description}
\begin{itemize}
\item \nameref{Ref}
\end{itemize}
\end{document}
如果没有修复,.aux
文件包含
\newlabel{Ref}{{}{1}{\enit@align {\enit@format {Label\label {Ref}}}}{}{}}
修复后,
\newlabel{Ref}{{}{1}{Label}{}{}}