如何在 ConTeXt 中定义首字母缩略词?

如何在 ConTeXt 中定义首字母缩略词?

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
}

相关内容