扩展标题中包含 \hyp{} 的缩写词时出现问题

扩展标题中包含 \hyp{} 的缩写词时出现问题

自从我昨天更新了 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}

在此处输入图片描述

相关内容