はじめに
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-sensitive
sdn
SDN
acro
\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つの例はどちらも