为什么第一次使用 \gls 看起来与 \glsfirst 不同?

为什么第一次使用 \gls 看起来与 \glsfirst 不同?

我自定义了首字母缩略词的布局,它对 \gls 很有效。但令人惊讶的是,在使用 \glsfirst 时它却不起作用。

\documentclass{scrartcl}

\usepackage[
    acronym,
]{glossaries} 

\renewcommand*{\SetCustomDisplayStyle}[1]{%
    % need only to redefine the use of displayfirst 
    \defglsdisplayfirst[acronym]{%
        \ifthenelse{\boolean{glsacrfootnote}}%
        {% footnote style
            \glsentryshort{\glslabel}\protect\footnote{%
                \glsentryshort{\glslabel}: \glsentrylong{\glslabel}%
            }
        }
        {% inline style
            \glsentryshort{\glslabel} (\glsentrylong{\glslabel})%
        }%
    }%
}

\SetCustomStyle

\newacronym{UML}{UML}{Unified Modeling Language}

\begin{document}
\gls{UML}\\
\gls{UML}\\
\glsfirst{UML}\\
\end{document}

答案1

\glsfirst使用键的值first。自定义样式默认将其设置为\acrfullformat{long}{short},而后者又默认为long (short)。您尚未覆盖此行为(可以通过重新定义\CustomAcronymFields或 来完成\acrfullformat)。

\gls\glsdisplayfirst{first}{description}{symbol}{insert}在第一次使用和\glsdisplay{text}{description}{symbol}{insert}后续使用时使用,其中是键(或)的first值,是键(或)的值。您已重新定义,以便它忽略其参数,因此它实际上不使用键的值,这就是为什么第一次使用时不会产生与 相同的东西。请注意,由于您忽略了所有参数,包括第四个参数,如果您尝试使用 的最后一个可选参数,它将不起作用。firstfirstplural\glspltexttextplural\glspl\glsdisplayfirstfirst\gls\glsfirstinsert\gls

最好重新定义\acrfullformat

\documentclass{scrartcl}

\usepackage[
    acronym,
]{glossaries} 

\ifglsacrfootnote
 \renewcommand{\acrfullformat}[2]{%
   #2\protect\footnote{#2: #1}%
 }
\else
 \renewcommand{\acrfullformat}[2]{#2\space(#1)}
\fi

\SetCustomStyle

\newacronym{UML}{UML}{Unified Modeling Language}

\begin{document}
\gls{UML}

\gls{UML}

\glsfirst{UML}

\acrfull{UML}
\end{document}

得出的结果为:

结果图像

相关内容