我自定义了首字母缩略词的布局,它对 \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
值,是键(或)的值。您已重新定义,以便它忽略其参数,因此它实际上不使用键的值,这就是为什么第一次使用时不会产生与 相同的东西。请注意,由于您忽略了所有参数,包括第四个参数,如果您尝试使用 的最后一个可选参数,它将不起作用。first
firstplural
\glspl
text
text
plural
\glspl
\glsdisplayfirst
first
\gls
\glsfirst
insert
\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}
得出的结果为: