首字母缩略词包-acroplural 在首字母缩略词环境中不起作用

首字母缩略词包-acroplural 在首字母缩略词环境中不起作用

我正在尝试使用acronym来自acronym包裹在我的文档中排版缩略词列表。我想使用\acroplural(根据包装文档,“应该在首字母缩略词环境中使用”),但这样做会给我一个错误消息。

平均能量损失

文档

\documentclass{article}

\usepackage{acronym,hyperref}

\begin{document}

\begin{acronym}
    \acro{POI}{point of interest} \acroplural{POI}{POIs}{points of interest}
\end{acronym}

\end{document}

错误消息

LaTeX Warning: Hyper reference `acro:POI' on page 1 undefined on input line 8.


LaTeX Warning: Hyper reference `acro:POI' on page 1 undefined on input line 8.

document.tex:8: Undefined control sequence.
\hyper@@link ->\let \Hy@reserved@a 
                                   \relax \@ifnextchar [{\hyper@link@ }{\hyp...
l.8 ...}{point of interest} \acroplural{POI}{POIs}
                                                  {points of interest}
document.tex:8: Argument of \AC@acroplurali has an extra }.
<inserted text> 
                \par 
l.8 ...}{point of interest} \acroplural{POI}{POIs}
                                                  {points of interest}
Runaway argument?
{POI}{\hyper@link@ }\def \reserved@b {\hyper@link@ [link]}\futurelet \ETC.
document.tex:8: Paragraph ended before \AC@acroplurali was complete.
<to be read again> 
                   \par 
l.8 ...}{point of interest} \acroplural{POI}{POIs}
                                                  {points of interest}
[1] (./document.aux)

有关的

如何正确地将以“S”结尾的首字母缩略词复数化?是一个类似的问题,但它询问的是定义非标准复数形式外部环境acronym

答案1

省略hyperref代码编译但插入虚假代码points of interest,这也会导致\aclp{POI}给予POIs而不是points of interest

这是因为第二个参数\acroplural(短形式复数)是可选参数,如果提供,则应提供为\acroplural{POI}[POIs]{points of interest}。从包文档中:
首字母缩略词包文档的第 6 页,其中突出显示了 \acroplural 的“短复数”参数的方括号。
在这种情况下,没有必要提供它,因为只有长形式复数不是通过附加来给出的s。此问题并不特定于\acropluralacronym环境,它也会发生在使用相同语法的\newacroplural和中。\acrodefplural

\documentclass{article}
\usepackage{acronym}

\begin{document}
\begin{acronym}
    \acro{POI}{point of interest} 
    \acroplural{POI}{points of interest}
\end{acronym}
\end{document}

但是,hyperref如果没有提供可选参数,则会出现第二个问题

\documentclass{article}
\usepackage{acronym}
\usepackage{hyperref}

\begin{document}
\begin{acronym}
    \acro{POI}{point of interest} 
    \acroplural{POI}{points of interest}
\end{acronym}
\end{document}

给出错误

! Undefined control sequence.
\hyper@@link ->\let \Hy@reserved@a 
                                   \relax \@ifnextchar [{\hyper@link@ }{\hyp...
l.8     \acroplural{POI}{points of interest}

正如您在评论中指出的那样,可以通过明确提供可选参数来解决此问题\acroplural{POI}[POIs]{points of interest}。但是,首字母缩略词的文档似乎很清楚地表明这不是必需的,这会使它成为包中的一个错误。

As\acroplural{POI}{POIs}{points of interest}被解析为给出POIPOIs作为首字母缩略词和首字母缩略词的长形式复数,然后只让组{points of interest}跟在它后面(这不会被当作参数吞掉,正如你通过省略 所看到的)。因此,即使第一个错误是在 的语法中,hyperref你最终也会看到更严重的相关错误。hyperref\acroplural

相关内容