考虑以下最小示例:
\documentclass{article}
\usepackage[acronym, shortcuts]{glossaries}
\makeglossaries
\newcommand{\abbr}[1]{\underline{#1}}
\newacronym{snr}{SNR}{\abbr{s}ignal-to-\abbr{n}oise \abbr{r}atio}
\begin{document}
This: \gls{snr} looks as desired, but \acl{snr} doesn't.
\end{document}
我希望在第一次使用缩写词时(即“完整”版本)和打印词汇表时(即“说明”)出现下划线,但使用时“长”版本不出现下划线\acl
。我的主要问题是我不知道如何切换命令,\abbr
使其基本上不执行任何操作。我尝试使用类似
\newcommand{\myacl}[1]{
\renewcommand{\abbr}[1]{##1}
\acl{#1}
}
但那不起作用。有什么建议吗?
答案1
可能不是最优雅的解决方案,但似乎有效。保存的原始含义\acl
,然后重新定义命令,使其\@@underline
在组内禁用,然后调用其自己的原始含义。
\documentclass{article}
\usepackage[acronym,shortcuts]{glossaries}
\makeglossaries
\newcommand{\abbr}[1]{\underline{#1}}
\makeatletter
\let\aclOLD=\acl
\renewcommand{\acl}[1]{%
\begingroup
\let\@@underline=\relax
\aclOLD{#1}%
\endgroup
}
\makeatother
\newacronym{snr}{SNR}{\abbr{s}ignal-to-\abbr{n}oise \abbr{r}atio}
\begin{document}
This: \gls{snr} looks as desired, and this: \acl{snr} too.
And also the printed glossary:
\printglossaries
\end{document}