xelatex の acro および fancyhdr パッケージの問題 - セクション タイトルでの頭字語の使用

xelatex の acro および fancyhdr パッケージの問題 - セクション タイトルでの頭字語の使用

はじめに

acro最近、を使って論文を書いているときに、パッケージの問題に悩まされましたxelatex

私のドキュメントfancyhdrでは、セクション タイトルがフッターに表示されるように設定したパッケージを使用しています。セクション タイトルの文字は大文字で表示されます。

問題

私はできる限り頭字語を使うのが好きです。そこで、次のようにセクションのタイトルに頭字語のリクエストを使用することにしました。

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

しかし、何らかの理由で、エンジンはセクション タイトル内のすべてのテキストを強制的に大文字にするのはおかしいと判断し、 を\ac{sdn}に変換しました\ac{SDN}

次に、ドキュメントのフッターで次のことが起こりました。 奇妙なフッター

このため、補助ファイルに 2 回出現する架空の頭字語に悩まされました。

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

これらの架空の頭字語要求はドキュメント構築ログに表示されました。指定された行には頭字語要求は存在しませんでした。

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

答え1

これは必ずしも にバインドされるわけではありません。記事クラスのfancyhdr単純な でも同じことが起こります。\pagestyle{headings}

問題は、見出しの および が、 保護されたコマンドであるため に変更され、\sectionmarkエラーメッセージが表示されることです。\MakeUppercase\ac\ac{sdn}\ac{SDN}

  • 明らかな「解決策」の 1 つは、代わりに大文字の ID を使用して頭字語を定義することです。

     \DeclareAcronym{SDN}{...}
    

ただし、ドキュメント内の頭字語と頭字語呼び出しの数によっては、これを変更するのは面倒な作業になる可能性があります。(検索と置換は実際には非常に簡単かもしれませんが...)

  • もう 1 つの可能性としては、LaTeX に特定の部分を大文字にしないように指示できるようにtextcase再定義するパッケージを使用することです。\MakeUppercase

     \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}
    
  • 見出しスタイルの定義方法に依存しない 3 番目のオプションとして、今年初め (2020/01/11 の v2.11 リリース) に、この種の問題に対処するためのacroオプションが導入されました。2 つの異なる頭字語がない場合 (1 つはID として使用し、もう 1 つは を使用している場合) 、両方を同じものとして扱うように指示できます。case-sensitivesdnSDNacro

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

最後の2つの例はどちらも

ここに画像の説明を入力してください

答え2

ソリューション

セクション タイトルをフッターに配置しながら、acroパッケージとパッケージの組み合わせを使用すると、バグが発生することが判明しました。このため、タイトルからリクエストを削除し、ファントムリクエストの問題を解決しました。fancyhdr\ac{sdn}\ac{SDN}

これで、ドキュメントのフッターは正しくなり、架空の頭字語の要求は消えました。 ここに画像の説明を入力してください

関連情報