![使用一个命令创建大写和小写标签词汇表条目的宏](https://linux22.com/image/367166/%E4%BD%BF%E7%94%A8%E4%B8%80%E4%B8%AA%E5%91%BD%E4%BB%A4%E5%88%9B%E5%BB%BA%E5%A4%A7%E5%86%99%E5%92%8C%E5%B0%8F%E5%86%99%E6%A0%87%E7%AD%BE%E8%AF%8D%E6%B1%87%E8%A1%A8%E6%9D%A1%E7%9B%AE%E7%9A%84%E5%AE%8F.png)
我正在使用词汇表包来处理首字母缩略词,并且我已经编写了一个大型文档,其中许多条目都使用小写标签。然而,当我在章节标题中使用这些首字母缩略词时,它们最终会以大写格式出现在页眉中。结果,这些键不再起作用,因为\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}
部分,它也会起作用,这就是为什么我真的不知道如何进一步调试问题。