xelatex 中的 acro 和 fancyhdr 套件出現問題 - 在章節標題中使用首字母縮寫詞

xelatex 中的 acro 和 fancyhdr 套件出現問題 - 在章節標題中使用首字母縮寫詞

介紹

最近,我在acroxelatex.

我的文件使用該fancyhdr包,我將節標題設定為顯示在頁腳處。章節標題字母以大寫形式顯示。

問題

我喜歡盡可能使用縮寫詞。因此,我決定在章節標題中使用首字母縮寫請求,如下所示:

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

但由於某種原因,引擎認為將節標題中的所有文字強制大寫,將 an 轉換\ac{sdn}\ac{SDN}.

然後,這發生在文檔的頁腳: 奇怪的頁腳

因此,我被輔助檔案中出現兩次的幻影縮寫所困擾:

\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}導致錯誤訊息。

  • 一個明顯的「解決方案」是使用大寫 ID 來定義首字母縮寫:

     \DeclareAcronym{SDN}{...}
    

但是,更改這可能是一項乏味的工作,具體取決於文件​​中縮寫詞和縮寫詞呼叫的數量。 (雖然搜尋和替換實際上可能很容易...)

  • 另一種可能性可能是使用textcase重新定義的包,\MakeUppercase以便我們可以告訴 LaTeX 不要將某些部分大寫:

     \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}
    
  • 作為不依賴標題樣式定義方式的第三個選項,今年早些時候acro引入了該選項case-sensitive(隨著 v2.11 2020/01/11 的發布),以處理此類問題。假設您沒有兩個不同的首字母縮略詞,一個用作sdnID,另一個用作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

解決方案

acro事實證明,將包與包結合使用fancyhdr並將節標題放在頁腳處似乎是有問題的。因此,我\ac{sdn}從標題中刪除了請求,這解決了幻影的問題\ac{SDN}請求的問題。

現在,文件的頁腳是正確的,並且幻影首字母縮寫請求已經消失。 在此輸入影像描述

相關內容