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

По крайней мере, MWE выдает идентичный результат с использованием технологии CleverEf и без нее.

решение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коде, \labelбудет хранить эту информацию, поэтому cleverefвсегда будет сообщать Sectionвместо Appendix. Используйте \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}

введите описание изображения здесь

Связанный контент