平均能量损失
\documentclass{article}
\usepackage{cleveref}
\usepackage{expex}
\begin{document}
\section{Introduction}\label{sec:intro}
\verb|ExPex| labels referred using \verb|cleveref| shows section numbers instead of example numbers.\\
\ex\label{ExPex1}
An \verb|ExPex| example
\xe
\ex\label{ExPex2}
Another \verb|ExPex| example
\xe
Crossref \verb|ExPex| examples using \verb|\ref{<label>}|: \ref{ExPex1} and \ref{ExPex2}\\
Crossref \verb|ExPex| examples using \verb|\cref{<label>}|: {\bf \cref{ExPex1} and \cref{ExPex2}}\\
\begin{enumerate}
\item\label{enum1} An \verb|enumerate| example
\item\label{enum2} Another \verb|enumerate| example
\end{enumerate}
Crossref \verb|enumerate| examples using \verb|\ref{<label>}|: \ref{enum1} and \ref{enum2}\\
Crossref \verb|enumerate| examples using \verb|\cref{<label>}|: \cref{enum1} and \cref{enum2}\\
\end{document}
在.aux
文件cleveref
标签enumerate
示例中使用enumi
。但ExPex
示例是使用 进行标记的section
。
\newlabel{ExPex1}{{1}{1}}
\newlabel{ExPex1@cref}{{[section][1][]1}{[1][1][]1}}
\newlabel{ExPex2}{{2}{1}}
\newlabel{ExPex2@cref}{{[section][1][]1}{[1][1][]1}}
\newlabel{enum1}{{1}{1}}
\newlabel{enum1@cref}{{[enumi][1][]1}{[1][1][]1}}
\newlabel{enum2}{{2}{1}}
\newlabel{enum2@cref}{{[enumi][2][]2}{[1][1][]1}}
这看起来类似于这个问题并且可能需要在 cleveref 中修复。否则,有没有办法修补或预先准备ExPex 宏,以便 cleveref 可以捕获它们的数字?
答案1
据我所知,cleveref
它会查找最靠近标签的计数器。仅\newcounter
检测到 LaTeX 样式的计数器,而不是 TeX 样式的\newcount
计数器;ExPex 使用\newcount
。因此,有效的解决方案是修补 ExPex\ex
以增加一个额外的自定义计数器。
\usepackage{etoolbox}
\newcounter{myex}
\crefname{myex}{}{}
\creflabelformat{myex}{(#2#1#3)}
\apptocmd{\ex}{\refstepcounter{myex}}{}{}