cleveref 打破了 \appendix 与 IEEEtran 中定义的可选参数

cleveref 打破了 \appendix 与 IEEEtran 中定义的可选参数

我认为标题说明了一切。包括cleveref在此 MWE 更改输出的外观:

\documentclass{IEEEtran}
% \usepackage{cleveref}
\begin{document}
    \appendix[Appendix headline]
\end{document}

有没有什么办法可以防止这种情况发生?我看过cleveref手册了,但还没有发现任何东西。

答案1

我相信这个问题在我的网站上提供的预发布版本(0.21)中已经得到修复,而且很可能在之前的预发布版本(0.20)中也得到了修复:http://www.dr-qubit.org/latex.html

至少,无论是否使用 cleveref,MWE 都会产生相同的输出。

答案2

最快最简单的方法肯定是保存\appendix加载之前的含义cleveref,并在加载包之后恢复为它:

\documentclass{IEEEtran}
\let\ieeeappendix\appendix
\usepackage{cleveref}
\let\appendix\ieeeappendix

\begin{document}
\appendix[Appendix headline]
\end{document}

但请注意,这可能会限制的功能cleveref

答案3

通过使用和更强大的版本来给予IEEEtran维护其定义的机会。\appendix\AtBeginDocument{...}\appendix

由于代码中IEEEtran使用,将存储此信息,因此将始终报告而不是。然后使用 代替。\refstepcounter{section}\appendix\labelcleverefSectionAppendix\label[appendix]{foo}

\documentclass{IEEEtran}

\usepackage{letltxmacro}

\usepackage{xparse}

\makeatletter
\LetLtxMacro\ieeetran@appendix\appendix
\AtBeginDocument{%
\RenewDocumentCommand{\appendix}{o}{%
  \IfValueTF{#1}{%
    \ieeetran@appendix[#1]%
  }{%
    \ieeetran@appendix%
  }%
}
}
\makeatother

\usepackage{cleveref}

\begin{document}
See \Cref{appone}

\appendix \label[appendix]{appone}

\appendix[Appendix headline] \label{apptwo}
\end{document}

在此处输入图片描述

相关内容