在 \caption 中使用 \BC(缩写)时出错

在 \caption 中使用 \BC(缩写)时出错

我正在使用该abbrevs包来提供更好的公元前/公元日期格式,但当我使用其中一个命令时caption出现错误。示例文档:

\documentclass{article}
\usepackage{abbrevs}

\begin{document}

\begin{figure}
\caption{1500--1000 \BC.}
\end{figure}

\end{document}

错误是:

! Argument of \@caption has an extra }.

删除后\BC错误就消失了,这让我认为问题出在两者的结合上……那么我如何在标题中使用缩写?或者,有没有更好的包来格式化公元前/公元的日期?

答案1

定义的许多命令abbrevs都很脆弱;例如,\BC扩展为\DateMark {b.c},反过来,的定义\DateMark

\newcommand\DateMark [1] {%
  \hspace{.2em}{\DateMarkSize\scshape #1}%
  \@ifnextchar. {%
      \spacefactor\@m
    }{% ELSE
    .\maybe@ic@space
  }%
}

任何在其定义中的命令\@ifnextchar都是脆弱的,因此在移动参数中需要“保护”。

解决方案:

  1. 很简单,如果你在移动参数中没有太多这样的命令

    \caption{1500--1000 \protect\BC.}
    
  2. 更安全,如果你不想被这些困扰\protect

    \usepackage{abbrevs}
    \usepackage{etoolbox}
    
    \robustify{\DateMark} % after having loaded abbrevs
    

    最好使用 robustify\DateMark而不是\BC,因为这涵盖了所有日期缩写。

相关内容