我正在使用词汇表包来处理首字母缩略词,并且我已经编写了一个大型文档,其中许多条目都使用小写标签。然而,当我在章节标题中使用这些首字母缩略词时,它们最终会以大写格式出现在页眉中。结果,这些键不再起作用,因为\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}
部分,它也会起作用,这就是为什么我真的不知道如何进一步调试问题。