我想增加文本中首字母缩略词大写字母之间的间距。首字母缩略词由包中的 、 等命令打印\ac
。\acs
包glossaries
提供soul
了一个不错的命令\caps
。我如何修改词汇表以用于\caps
首字母缩略词?
这是一个不起作用的例子。
\documentclass{article}
\usepackage{soul}
\usepackage[acronym,shortcuts]{glossaries}
\makeglossaries
\newacronym{OFDM}{OFDM}{Orthogonal Frequency Division Multiplexing}
\let\acbak\ac
\renewcommand{\ac}[1]{\caps\acbak{#1}}
\begin{document}
\noindent
\ac{OFDM} \\
\ac{OFDM} \\
\caps{OFDM}
\end{document}
答案1
问题是由于\caps
需要完全展开其参数而引起的。这里有一个解决方案,\xcaps
它首先定义展开其参数。然后您可以重新定义\acronymfont
以使用\xcaps
。我使用了自定义样式来提供修改。
\documentclass{article}
\usepackage{soul}
\usepackage[acronym,shortcuts]{glossaries}
\renewcommand{\acronymfont}[1]{\protect\xcaps{#1}}
\renewcommand*{\CustomAcronymFields}{%
name={\noexpand\acronymfont{\the\glsshorttok}},%
description={\the\glslongtok},%
first={\noexpand\acrfullformat{\the\glslongtok}{\noexpand\acronymfont{\the\glsshorttok}}},%
firstplural={\noexpand\acrfullformat
{\the\glslongtok\noexpand\acrpluralsuffix}{\noexpand\acronymfont{\the\glsshorttok}}}%
text={\noexpand\acronymfont{\the\glsshorttok}},%
plural={\noexpand\acronymfont{\the\glsshorttok\noexpand\acrpluralsuffix}}%
}
\SetCustomStyle
\makeglossaries
\newacronym{OFDM}{OFDM}{Orthogonal Frequency Division Multiplexing}
\makeatletter
\DeclareRobustCommand{\xcaps}[1]{%
\protected@edef\tmp{#1}%
\expandafter\caps\expandafter{\tmp}%
}
\makeatother
\begin{document}
\caps{OFDM}
\ac{OFDM}
\ac{OFDM}
\end{document}
这是一个更简单的解决方案,使用glossaries-extra
扩展包:
\documentclass{article}
\usepackage{soul}
\usepackage[acronym,shortcuts=ac]{glossaries-extra}
\makeglossaries
\renewcommand{\glsabbrvdefaultfont}[1]{\caps{#1}}
\setabbreviationstyle[acronym]{long-short}
\newacronym{OFDM}{OFDM}{Orthogonal Frequency Division Multiplexing}
\begin{document}
\noindent
\ac{OFDM} \\
\ac{OFDM} \\
\caps{OFDM}
\end{document}
如果要将其与不同的缩写样式结合使用,请使用类似的方法。例如:
\documentclass{article}
\usepackage{soul}
\usepackage[acronym,shortcuts=ac]{glossaries-extra}
\makeglossaries
\renewcommand{\glsabbrvscfont}[1]{\textsc{\MakeTextLowercase{\caps{#1}}}}
\setabbreviationstyle[acronym]{long-short-sc}
\newacronym{OFDM}{OFDM}{Orthogonal Frequency Division Multiplexing}
\begin{document}
\noindent
\ac{OFDM} \\
\ac{OFDM} \\
\caps{OFDM}
\end{document}