自从我昨天更新了 MiKTeX 后,包含 \hyp{} 的首字母缩略词在标题中不再正常工作。我收到以下错误消息:
! Argument of \__tl_change_case_cs_four:w has an extra }.
此次更新包含以下软件包,其中包括 acro 软件包:
acro.tar.lzma
beamer.tar.lzma
bidi.tar.lzma
glossaries.tar.lzma
koma-script.tar.lzma
l3kernel.tar.lzma
luamplib.tar.lzma
miktex-bibtex8bit-bin-2.9.tar.lzma
miktex-dvips-bin-2.9.tar.lzma
miktex-icu-bin-2.9.tar.lzma
miktex-pdftex-bin-2.9.tar.lzma
miktex-runtime-bin-2.9.tar.lzma
miktex-texify-bin-2.9.tar.lzma
miktex-texinfo-base.tar.lzma
miktex-texinfo-bin-2.9.tar.lzma
miktex-xetex-bin-2.9.tar.lzma
我可以将问题归结为我的首字母缩略词中 \hyp{} 的使用。令人惊讶的是,使用 \Acl{...} 时会出现问题,但使用 \acl{...} 时不会出现问题。我该如何解决这个问题?
这是一个暴露该问题的最小例子:
\documentclass{article}
\usepackage{acro}
\usepackage{hyphenat}
\DeclareAcronym{AB}{
short = AB,
%long = a-b, % works fine
long = a\hyp{}b % does not work
}
\begin{document}
% works fine with hyp
\begin{figure}
\caption{\acl{AB}}
\end{figure}
% does not work with hyp
\begin{figure}
\caption{\Acl{AB}}
\end{figure}
\end{document}
答案1
由于工作方式,像这样的acro
命令在那种情况下不起作用,添加也无济于事。切换到不同的保护机制是可行的。\hyp
\DeclareRobustCommand
\protect
\documentclass{article}
\usepackage{acro}
\usepackage{hyphenat}
\usepackage{etoolbox}
\robustify{\hyp} % make \hyp survive the capitalization process used by acro
\DeclareAcronym{AB}{
short = AB,
%long = a-b, % works fine
long = a\hyp{}b % does not work
}
\begin{document}
% works fine with hyp
\begin{figure}
\caption{\acl{AB}}
\end{figure}
% does not work with hyp
\begin{figure}
\caption{\Acl{AB}}
\end{figure}
\end{document}