尝试将 \gls 的结果大写

尝试将 \gls 的结果大写

我正在尝试将首字母缩略词的全部首字母大写。我有这个首字母缩略词:

\usepackage[acronym]{glossaries}
\newacronym{wt}{WT}{wild type}

使用\gls{wt}会按预期生成野生类型 (WT)。

但是尝试使用\MakeUppercase{\gls{wt}}会失败,因为没有 WT 的词汇表条目。因此,它只是将\gls命令中的内容大写。

我试过了MakeUppercase{\expandafter{\gls{wt}}但这不起作用它只是抛出 \reserved@a 的参数有一个额外的 }

我也尝试过,\edef\mycommand{\gls{wt}}\MakeUppercase{\mycommand}但结果是一样的。

所以问题是,如何让 \gls{wt} 在传递给 \MakeUppercase 之前完全展开

答案1

所以问题是如何\gls{wt}在传递给 \MakeUppercase 之前完全展开

你不能。因为\gls它不是一个完全可扩展的命令。

为了防止参数错误地大写,wt您可以加载包文本大小写使用overload-option:

该软件包附带了命令\MakeTextUppercase和 ,它们的作用与和\MakeTextLowercase相同。 但有一个特点:宏的参数不会改变。- 选项使等于和等于。\MakeUppercase\MakeLowerCase
\NoCaseChange
overload\MakeUppercase\MakeTextUppercase\Makelowercase\MakeTextLowercase

使用\NoCaseChange可以防止参数错误地大写wt

这只解决了部分问题。获取\gls大写结果的问题仍然没有解决。您需要“手动”决定是否使用\gls\GLS\Gls

例如,你可以这样做:

\documentclass[12pt,oneside,a4paper]{article}

\usepackage[overload]{textcase}
\usepackage[acronym]{glossaries}
\newacronym{wt}{WT}{wild type}

\begin{document}

\glsreset{wt}
\verb|\MakeUppercase{uppercase. \NoCaseChange{\GLS{wt}} uppercase}|:\\
First use: \MakeUppercase{uppercase. \NoCaseChange{\GLS{wt}} uppercase}\\
Second use: \MakeUppercase{uppercase. \NoCaseChange{\GLS{wt}} uppercase}

\glsreset{wt}
\verb|\MakeLowercase{LOWERCASE. \NoCaseChange{\GLS{wt}} LOWERCASE}|:\\
First use: \MakeLowercase{LOWERCASE. \NoCaseChange{\GLS{wt}} LOWERCASE}\\
Second use: \MakeLowercase{LOWERCASE. \NoCaseChange{\GLS{wt}} LOWERCASE}

\glsreset{wt}
\verb|\MakeUppercase{uppercase. \NoCaseChange{\Gls{wt}} uppercase}|:\\
First use: \MakeUppercase{uppercase. \NoCaseChange{\Gls{wt}} uppercase}\\
Second use: \MakeUppercase{uppercase. \NoCaseChange{\Gls{wt}} uppercase}

\glsreset{wt}
\verb|\MakeLowercase{LOWERCASE. \NoCaseChange{\Gls{wt}} LOWERCASE}|:\\
First use: \MakeLowercase{LOWERCASE. \NoCaseChange{\Gls{wt}} LOWERCASE}\\
Second use: \MakeLowercase{LOWERCASE. \NoCaseChange{\Gls{wt}} LOWERCASE}

\glsreset{wt}
\verb|\MakeUppercase{uppercase. \NoCaseChange{\gls{wt}} uppercase}|:\\
First use: \MakeUppercase{uppercase. \NoCaseChange{\gls{wt}} uppercase}\\
Second use: \MakeUppercase{uppercase. \NoCaseChange{\gls{wt}} uppercase}

\glsreset{wt}
\verb|\MakeLowercase{LOWERCASE. \NoCaseChange{\gls{wt}} LOWERCASE}|:\\
First use: \MakeLowercase{LOWERCASE. \NoCaseChange{\gls{wt}} LOWERCASE}\\
Second use: \MakeLowercase{LOWERCASE. \NoCaseChange{\gls{wt}} LOWERCASE}

\end{document}

在此处输入图片描述

相关内容