使用一个命令创建大写和小写标签词汇表条目的宏

使用一个命令创建大写和小写标签词汇表条目的宏

我正在使用词汇表包来处理首字母缩略词,并且我已经编写了一个大型文档,其中许多条目都使用小写标签。然而,当我在章节标题中使用这些首字母缩略词时,它们最终会以大写格式出现在页眉中。结果,这些键不再起作用,因为\acrshort{abc}变成了\acrshort{ABC}

因此,由于我不希望所有这些事件都出现在词汇表中,我认为解决这个问题的最简单方法是定义一个新命令,以大写和小写形式创建每个词汇表条目,然后将大写版本移动到不存在的辅助词汇表。

以下是我的尝试:

\documentclass[a4paper,11pt,BCOR=8mm,DIV=14,headsepline,twoside,chapterprefix=true,cleardoublepage=plain]{article}
\usepackage{hyperref}
\usepackage[latin1]{inputenc}
\usepackage[acronym, numberedsection=autolabel, section=section, nomain]{glossaries}
\usepackage{xifthen}
\makeglossaries

\begin{document}
\newcommand*{\newacronymup}[4][]{%
    \ifthenelse{\isempty{#1}}{%
        \newacronym{#2}{#3}{#4}%
        \newacronym{{\expandafter\MakeUppercase\expandafter{#2}}}{#3}{#4}%
    }{%
        \newacronym[sort=#1]{#2}{#3}{#4}%
        \newacronym[sort=#1]{{\expandafter\MakeUppercase\expandafter{#2}}}{#3}{#4}%
    }%
    \glsmoveentry{\MakeUppercase#2}{null}%
}%
\newacronymup[sorting123]{gasp}{GASP}{Global Atmospheric Sampling Program}
\newacronymup{sqp}{SQP}{Sequential Quadratic Programming}

Test
\gls{sqp}
\gls{gasp}

\printglossary[type=\acronymtype] % acronyms
\end{document}

如果我注释掉其中的三行\MakeUppercase,一切都会按预期工作。但我似乎无法弄清楚如何在不破坏标签的情况下将其变为大写。我总是得到这样的错误

! Missing \endcsname inserted.
<to be read again>

如果我只是测试该\expandafter\MakeUppercase\expandafter{#2}部分,它也会起作用,这就是为什么我真的不知道如何进一步调试问题。

相关内容