如何避免 enumitem 和 nameref 出现“在段落中发现无限粘连收缩”错误

如何避免 enumitem 和 nameref 出现“在段落中发现无限粘连收缩”错误

组合 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}{}{}}

相关内容