词汇表›first‹中的新命令需要保护吗?

词汇表›first‹中的新命令需要保护吗?

考虑关注 MWE

\documentclass{scrartcl}
\usepackage{xspace}
\makeatletter
\newcommand\BC{\,v.\,Chr\@ifnextchar.{}{.\relax\@\xspace}}
\newcommand\AD{\,n.\,Chr\@ifnextchar.{}{.\relax\@\xspace}}
\makeatother

\usepackage{glossaries}
\makeglossaries

\newglossaryentry{Augustus}{%
  name={\textbf{Augustus}},% 
  description={Imperator 
    Caesar Divi Filius Augustus, geboren 63\BC, gestorben 14\AD, regierte von 27\BC bis 14\AD.},
  first={Augustus (27\protect\BC--14\protect\AD)}
}

\begin{document}
  \gls{Augustus}

  \printglossaries
\end{document}

一切正常并且按预期工作:

在此处输入图片描述

但是我不明白为什么protect中的命令first={Augustus (27\protect\BC--14\protect\AD)}是必要的,因为我不需要它们description

答案1

有些字段默认展开,有些则不展开。这些字段在章节中有更详细的描述4.4 扩展glossaries手册中,但本质上name,、descriptionsymbol字段默认不展开,而所有其他字段都展开。keysort是一个例外,由包选项覆盖sanitizesort。展开的那些字段必须有脆弱命令保护。

要关闭所有扩展,请使用\glsnoexpandfields。特定字段可以使用\glssetnoexpandfield{场地}。此单独设置将覆盖该\glsexpandfields设置。

相关内容