我正在使用该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
都是脆弱的,因此在移动参数中需要“保护”。
解决方案:
很简单,如果你在移动参数中没有太多这样的命令
\caption{1500--1000 \protect\BC.}
更安全,如果你不想被这些困扰
\protect
\usepackage{abbrevs} \usepackage{etoolbox} \robustify{\DateMark} % after having loaded abbrevs
最好使用 robustify
\DateMark
而不是\BC
,因为这涵盖了所有日期缩写。