xelatex 中的 acro 和 fancyhdr 包的问题 - 在章节标题中使用首字母缩略词

xelatex 中的 acro 和 fancyhdr 包的问题 - 在章节标题中使用首字母缩略词

介绍

acro最近,我在用 撰写论文时被该软件包的一个问题所困扰xelatex

我的文档使用了fancyhdr包,我将章节标题设置为显示在页脚。章节标题字母以大写形式显示。

问题

我喜欢尽可能使用首字母缩略词。因此,我决定在章节标题中使用首字母缩略词请求,例如:

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

但出于某种原因,引擎认为强制将章节标题中的所有文本大写很有趣,将 转换\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}
    
  • 作为第三种不依赖于标题样式定义方式的选项,为了解决此类问题,我们在今年早些时候(2020/01/11 发布 v2.11)acro引入了该选项。假设您没有两个不同的首字母缩略词,一个用作ID,另一个使用,您可以告诉将两者视为相同: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

解决方案

似乎将acro包与fancyhdr包一起使用并将部分标题放在页脚的做法已被证明存在错误。因此,我\ac{sdn}从标题中删除了请求,这解决了幻影\ac{SDN}请求的问题。

现在,文档的页脚是正确的,并且幻影缩写请求已经消失。 在此处输入图片描述

相关内容