我正在使用该软件包设置我的首字母缩略词列表glossaries
,并遇到了特定单位的挑战 - FLOPS,即每秒浮点运算次数。在我的文档中,我使用 FLOPS、GFLOPS 和 TFLOPS,其中 G 和 T 分别表示 10^9 和 10^{12}。
目前,我的首字母缩略词列表中有三个单独的条目,但我更希望有一个 FLOPS 条目,并附有解释 GFLOPS 和 TFLOPS 的描述。这样,第一次出现 FLOPS、GFLOPS 或 TFLOPS 时,它会被展开,但出现的那个只会以其首字母缩略词打印出来。举个例子,而不是这样:
A trillion (10^{12}) floating point operations per second (TFLOPS) is 1000 times larger than a billion (10^9) floating point operations per second (GFLOPS).
我想拥有:
A trillion (10^{12}) floating point operations per second (TFLOPS) is 1000 times larger than a 1 GFLOPS.
我想象这可能通过对 FLOPS 词汇表条目进行某种特殊格式化来完成,例如\gls
传递指数的可选参数,但我不知道如何实现这一点。
答案1
我觉得我找到了解决问题的方法。我受到启发此 tex.stackexchange 帖子。以下是演示该解决方案的 MWE:
\documentclass{article}
\usepackage[acronyms,nonumberlist,numberline]{glossaries}
\glsaddkey
{longgiga}
{billion ($10^{9}$) \glsentrylong{\glslabel}}
{\glsentrylonggiga}
{\Glsentrylonggiga}
{\glslonggiga}
{\Glslonggiga}
{\GLSlonggiga}
\glsaddkey
{shortgiga}
{G\glsentryshort{\glslabel}}
{\glsentryshortgiga}
{\Glsentryshortgiga}
{\glsshortgiga}
{\Glsshortgiga}
{\GLSshortgiga}
\glsaddkey
{longtera}
{trillion ($10^{12}$) \glsentrytext{\glslabel}}
{\glsentrylongtera}
{\Glsentrylongtera}
{\glslongtera}
{\Glslongtera}
{\GLSlongtera}
\glsaddkey
{shorttera}
{T\glsentryshort{\glslabel}}
{\glsentryshorttera}
{\Glsentryshorttera}
{\glsshorttera}
{\Glsshorttera}
{\GLSshorttera}
\newglossarystyle{acronymglossarystyle}{%
\setglossarystyle{super}%
\renewcommand{\glossentry}[2]{%
\glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
\Glsentrylong{##1}\space\ifglshasfield{useri}{##1}{--- \space\Glsentryuseri{##1}\space}{}##2\tabularnewline
}%
\setlength{\glsdescwidth}{0.75\linewidth}%
}
% This is my test case - FLOPS.
\newacronym[user1={The prefixes T and G are used to indicate $10^{12}$ and $10^9$ FLOPS}]{FLOPS}{FLOPS}{floating point operations per second}
\newcommand{\glsSI}[2]{%
\ifglsused{#2}{\csname glsshort#1\endcsname{#2}}{\csname glslong#1\endcsname{#2} (\csname glsshort#1\endcsname{#2})\glsunset{#2}}%
}
\newcommand{\GlsSI}[2]{%
\ifglsused{#2}{\csname Glsshort#1\endcsname{#2}}{\csname Glslong#1\endcsname{#2} (\csname glsshort#1\endcsname{#2})\glsunset{#2}}%
}
\newcommand{\GLSSI}[2]{%
\ifglsused{#2}{\csname GLSshort#1\endcsname{#2}}{\csname GLSlong#1\endcsname{#2} (\csname GLSshort#1\endcsname{#2})\glsunset{#2}}%
}
\makeglossaries
\begin{document}
$200$ \glsSI{giga}{FLOPS}. $1000$ \gls{FLOPS}. \glsSI{giga}{FLOPS} and \glsSI{tera}{FLOPS}
\printglossary[type=\acronymtype,style=acronymglossarystyle]
\end{document}
我花了额外的精力来完善这个\glsSI
函数,因为否则的话,就需要一个针对 giga、tera、mega、kilo 和其他单位的新函数。唯一需要的就是将这两个\glsaddkey
语句包装成一个命令,例如\SIPrefixForGlossary{giga}{G}
。任何添加了该命令的答案都会被标记为答案。