Cleveref rompe el apéndice con un argumento opcional definido en IEEEtran

Cleveref rompe el apéndice con un argumento opcional definido en IEEEtran

Creo que el título lo dice todo. Incluir cleverefen este MWE cambia el aspecto de la salida:

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

¿Existe alguna opción para evitarlo? He mirado el cleverefmanual pero todavía no he encontrado nada.

Respuesta1

Creo que esto está solucionado en las versiones preliminares (0.21) disponibles en mi sitio web, y muy posiblemente también en la versión preliminar anterior (0.20):http://www.dr-qubit.org/latex.html

Al menos, el MWE produce resultados idénticos con y sin inteligencia.

Respuesta2

La forma más rápida y sencilla es, sin duda, guardar el significado de \appendixantes de cargar cleverefy restaurarlo después de cargar el paquete:

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

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

Sin embargo, tenga en cuenta que esto podría restringir la funcionalidad de cleveref.

Respuesta3

IEEEtranla oportunidad de mantener su definición de \appendixmediante el uso \AtBeginDocument{...}de una versión más sólida de \appendix.

Dado que IEEEtranlos usos \refstepcounter{section}en el \appendixcódigo \labelalmacenarán esta información, cleverefsiempre informarán Sectionen lugar de Appendix. Úselo \label[appendix]{foo}en su lugar entonces.

\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}

ingrese la descripción de la imagen aquí

información relacionada