smartef quebra \apêndice com argumento opcional definido no IEEEtran

smartef quebra \apêndice com argumento opcional definido no IEEEtran

Acho que o título diz tudo. Incluir cleverefneste MWE altera a aparência da saída:

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

Existe uma opção para evitar isso? Dei uma olhada no cleverefmanual, mas ainda não encontrei nada.

Responder1

Acredito que isso foi corrigido nas versões de pré-lançamento (0.21) disponíveis em meu site, e muito possivelmente também no pré-lançamento anterior (0.20):http://www.dr-qubit.org/latex.html

Pelo menos, o MWE produz resultados idênticos com e sem inteligência.

Responder2

A maneira mais rápida e fácil é salvar o significado de \appendixantes de carregar cleverefe restaurá-lo depois de carregar o pacote:

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

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

Observe, entretanto, que isso pode restringir a funcionalidade do cleveref.

Responder3

IEEEtranuma chance de manter sua definição \appendixusando \AtBeginDocument{...}uma versão mais robusta do \appendix.

Como IEEEtranusa \refstepcounter{section}no \appendixcódigo, \labelirá armazenar essas informações, então cleverefsempre reportará Sectionem vez de Appendix. Use \label[appendix]{foo}em vez disso.

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

insira a descrição da imagem aqui

informação relacionada