Problem mit dem Acro- und Fancyhdr-Paket in Xelatex - Verwendung von Akronymen in Abschnittstiteln

Problem mit dem Acro- und Fancyhdr-Paket in Xelatex - Verwendung von Akronymen in Abschnittstiteln

Einleitung

Kürzlich plagte mich acrobeim Schreiben meiner Abschlussarbeit mit ein Problem mit dem Paket xelatex.

Mein Dokument verwendet das fancyhdrPaket, in dem ich den Abschnittstitel so einstelle, dass er in der Fußzeile erscheint. Die Buchstaben des Abschnittstitels werden in Großbuchstaben angezeigt.

Das Thema

Ich verwende gerne Akronyme, wenn ich kann. Deshalb habe ich mich entschieden, eine Akronym-Anforderung in einem Abschnittstitel zu verwenden, wie beispielsweise diese:

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

Aus irgendeinem Grund fand die Engine es jedoch witzig, den gesamten Text im Abschnittstitel zwangsweise in Großbuchstaben zu schreiben, und verwandelte so ein \ac{sdn}in ein \ac{SDN}.

Dann passierte Folgendes in der Fußzeile des Dokuments: komische Fußzeile

Aus diesem Grund wurde ich mit einem Phantom-Akronym geplagt, das in der Hilfsdatei zweimal auftauchte:

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

während diese Phantom-Akronym-Anfragen im Dokumenterstellungsprotokoll erschienen. In den angegebenen Zeilen gab es keine Akronym-Anfragen:

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!
! 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.
!...............................................  

Antwort1

Dies ist nicht unbedingt an gebunden fancyhdr. Dasselbe passiert mit einem einfachen \pagestyle{headings}in der Artikelklasse.

Das Problem ist, dass sich an der Überschrift \sectionmarknichts ändert \MakeUppercaseund – da es \ac sich bei ua um geschützte Befehle handelt – sich dies ändert \ac{sdn}, \ac{SDN}was dann zu der Fehlermeldung führt.

  • Eine offensichtliche „Lösung“ besteht darin, das Akronym stattdessen mit einer ID in Großbuchstaben zu definieren:

     \DeclareAcronym{SDN}{...}
    

Dies zu ändern, kann jedoch je nach Anzahl der Akronyme und Akronymaufrufe in Ihrem Dokument eine mühsame Arbeit sein. (Obwohl Suchen und Ersetzen eigentlich ganz einfach sein könnte ...)

  • Eine andere Möglichkeit wäre, das textcasePaket zu verwenden, das neu definiert \MakeUppercase, sodass wir LaTeX anweisen können, bestimmte Teile nicht groß zu schreiben:

     \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}
    
  • Als dritte Option, die nicht von der Art und Weise abhängt, wie der Überschriftenstil definiert ist, acrowurde diese Option case-sensitiveAnfang dieses Jahres (mit der Veröffentlichung von v2.11 2020/01/11) eingeführt, um diese Art von Problemen zu lösen. Vorausgesetzt, Sie haben nicht zwei verschiedene Akronyme, von denen eines sdnals ID und das andere verwendet wird, SDNkönnen Sie angeben acro, dass beide als gleich behandelt werden sollen:

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

Die letzten beiden Beispiele geben beide

Bildbeschreibung hier eingeben

Antwort2

Die Lösung

Es scheint, dass die Kombination aus der Verwendung des acroPakets mit dem fancyhdrPaket und dem Platzieren des Abschnittstitels in der Fußzeile fehlerhaft ist. Aus diesem Grund habe ich die \ac{sdn}Anfrage aus dem Titel entfernt, wodurch das Problem der Phantomanfrage gelöst wurde \ac{SDN}.

Jetzt ist die Fußzeile des Dokuments korrekt und die Phantom-Akronym-Anfragen sind verschwunden. Bildbeschreibung hier eingeben

verwandte Informationen