Problema com o pacote acro e fantasihdr no xelatex - Usando siglas nos títulos das seções

Problema com o pacote acro e fantasihdr no xelatex - Usando siglas nos títulos das seções

Introdução

Recentemente, fui atormentado por um problema com o acropacote enquanto escrevia minha tese com o xelatex.

Meu documento usa o fancyhdrpacote, onde defino o título da seção para aparecer no rodapé. As letras do título da seção aparecem em maiúsculas.

O problema

Gosto de usar siglas quando posso. Então, decidi usar uma solicitação de sigla no título de uma seção, como esta:

\section{Moving Forward to Distributed \ac{sdn} Management}

Mas, por alguma razão, o mecanismo achou engraçado colocar todo o texto no título da seção em maiúsculas, transformando um \ac{sdn}em um \ac{SDN}.

Então, isso aconteceu no rodapé do documento: rodapé estranho

Por causa disso, fui atormentado por uma sigla fantasma aparecendo duas vezes no arquivo auxiliar:

\acro@used@once {SDN}{78}{78}{89}
\acro@used@twice {SDN}{79}{79}{90}

enquanto essas solicitações de siglas fantasmas apareciam no log de construção de documentos. Não existiam solicitações de acrônimos nas linhas especificadas:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! acro error: "undefined"
! 
! You've requested acronym `SDN' on line 499 but you apparently haven't
! defined it, yet!
! Maybe you've misspelled `SDN'?
! 
! See the acro documentation for further information.
! 
! Type <return> to continue.
!...............................................  

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! acro error: "undefined"
! 
! You've requested acronym `SDN' on line 514 but you apparently haven't
! defined it, yet!
! Maybe you've misspelled `SDN'?
! 
! See the acro documentation for further information.
! 
! Type <return> to continue.
!...............................................  

Responder1

Isso não está necessariamente vinculado a fancyhdr. O mesmo acontece com um simples \pagestyle{headings}na classe do artigo.

O problema é que isso \sectionmarkfaz \MakeUppercaseno título e – já que \ac amigos são comandos protegidos – alterações \ac{sdn}nas \ac{SDN}quais leva à mensagem de erro.

  • Uma “solução” óbvia é definir o acrônimo com um ID maiúsculo:

     \DeclareAcronym{SDN}{...}
    

No entanto, pode ser um trabalho tedioso mudar, dependendo do número de siglas e chamadas de siglas em seu documento. (Embora pesquisar e substituir possa ser bastante fácil...)

  • Outra possibilidade pode ser usar o textcasepacote que redefine \MakeUppercasepara que possamos dizer ao LaTeX para não colocar certas partes em maiúsculas:

     \documentclass{article}
     \usepackage{acro}
     \usepackage[overload]{textcase}
    
     \DeclareAcronym{sdn}{
       short = SDN ,
       long  = some dummy nonsense
     }
    
     \pagestyle{headings}
    
     \begin{document}
    
     \section{Moving Forward to Distributed \protect\NoCaseChange{\acs*{sdn}} Management}
    
     \end{document}
    
  • Como terceira opção que não depende da forma como o estilo do título é definido, acrointroduziu a opção case-sensitiveno início deste ano (com o lançamento da v2.11 2020/01/11) para lidar com este tipo de problemas. Supondo que você não tenha duas siglas diferentes, uma usando sdncomo ID e outra usando, SDNvocê pode dizer acropara tratar ambas como iguais:

     \documentclass{article}
     \usepackage{acro}
    
     \acsetup{case-sensitive=false}
    
     \DeclareAcronym{sdn}{
       short = SDN ,
       long  = some dummy nonsense
     }
    
     \pagestyle{headings}
    
     \begin{document}
    
     \section{Moving Forward to Distributed \acs*{sdn} Management}
    
     \end{document}
    

Os dois últimos exemplos dão

insira a descrição da imagem aqui

Responder2

A solução

Parece que a combinação de usar o acropacote com o fancyhdrpacote e colocar o título da seção no rodapé provou ser problemática. Por conta disso, retirei a \ac{sdn}solicitação do título, o que resolveu a questão da \ac{SDN}solicitação fantasma.

Agora, o rodapé do documento está correto e as solicitações de siglas fantasmas desapareceram. insira a descrição da imagem aqui

informação relacionada