该acronym
软件包允许使用简单的语法(如)轻松创建和显示首字母缩略词\ac{usb}
。第一次调用时,会显示“通用串行总线 (USB)”,但之后只会显示“USB”。我在文档中找不到有关此内容的任何信息,但是这个有关 PDF 字符串的文章似乎提供了类似的功能,但示例似乎不完整。如何在 ConTeXt 中定义和显示首字母缩略词?
答案1
如果您不需要索引首字母缩略词,那么这背后的理论很简单。
\def\newacronym#1#2#3{% #1 = key, #2 = abbreviated form, #3 = expanded form
\expandafter\def\csname ac@#1\endcsname{%
#3~(#2)%
\expandafter\gdef\csname ac@#1\endcsname{#2}%
}%
}
\def\ac#1{\csname ac@#1\endcsname}
\newacronym{usb}{USB}{Universal Serial Bus}
\newacronym{ml}{ML}{Murphy's Law}
Here's \ac{usb} and \ac{ml}; let's see that \ac{usb} works
not according to \ac{ml}.
\bye
答案2
此功能的上下文版本称为“同义词”,其类型使用 定义\definesynonyms
。维基页面定义同义词包含一些示例,但简而言之:
\definesynonyms[acronym][acronyms][\infull]
\acronym[VVV]{vvv}{Bureau of Tourist Information}
\starttext
The Dutch \VVV\ (\infull{VVV}) can provide you with the tourist information on Hasselt.
\stoptext
现在还有 和\setupsynonyms[acronyms]
。\placelistofacronyms
用于生成(已使用的或全部)首字母缩略词列表。
据我所知,ConTeXt 没有内置“首次使用”功能。
答案3
我有同样的问题,但需要索引。另外,我的项目包含许多松散的文件,所以我不想自己搜索第一次出现的内容。
\definesynonyms[acron][acronyms][\fullac] % Define acronyms as context synonyms
% Define a new macro
\def\ac#1{
\ifcsname AcroUsed#1\endcsname
% If the acro was already used, return the acronym
\csname #1\endcsname
\else
% Otherwise, set as used, print full and acro
\fullacro{#1} (\csname #1\endcsname)
\expandafter\def\csname AcroUsed#1\endcsname{1}
\fi
}