词汇表中同一缩写词的不同缩写选项

词汇表中同一缩写词的不同缩写选项

我希望能够在词汇表中添加一个首字母缩略词,当引用该缩略词时,该缩略词\gls{}会以标准形式出现在正文中,除非另有说明。

即我有以下缩写:

\newacronym{a1}{A1}{Apples 1}
\newacronym{a2}{A2}{Apples 2}

我正在写两种苹果,A1A2但我最感兴趣的是A1,所以我只想把它们缩写为A从现在开始。所以我想我正在寻找是否存在类似以下内容:

\newacronym{a1}{A}{A1}{Apples 1}
\gls{a1}

(缩写为A

\gls{a1}[version2]

(缩写为A1)。

词汇表中是否有关于此内容的标准选项?

答案1

我能想到几种方法。

1. 仅基础glossaries包。

\documentclass{article}

\usepackage[colorlinks]{hyperref}
\usepackage[style=tree]{glossaries}

\makeglossaries

\setacronymstyle{long-short}
\newacronym{a}{A}{Apples}
\newacronym[parent=a]{a1}{A1}{Apples 1}
\newacronym[parent=a]{a2}{A2}{Apples 2}

\begin{document}
First use: \gls{a1}, \gls{a2}, \gls{a}.

Next use: \gls{a1}, \gls{a2}, \gls{a}.

\printglossaries
\end{document}

这将建立一组分层的缩写:

image of document

\gls{a}引用链接到列表中的父条目。

2.glossaries-extra扩展包。

\documentclass{article}

\usepackage[colorlinks]{hyperref}
\usepackage[style=tree]{glossaries-extra}

\makeglossaries

\setabbreviationstyle[acronym]{long-short}

\newacronym{a1}{A1}{Apples 1}
\newacronym{a2}{A2}{Apples 2}

\newglossaryentry{a}{name={A},description={Apples},alias={a1}}

\begin{document}
First use: \gls{a1}, \gls{a2}, \gls{a}.

Next use: \gls{a1}, \gls{a2}, \gls{a}.

\printglossaries
\end{document}

这将使用alias使 的超链接\gls{a}转到 的目标的键a1。别名条目在词汇表中列出,并带有交叉引用:

image of document

第一次使用时\gls{a}不会显示完整形式,因为它不是缩写。如果您愿意,也可以使用缩写:

\newacronym[alias=a1]{a}{A}{Apples}

如果您不希望别名术语出现在列表中,您可以创建一个忽略的词汇表并将其分配给该词汇表:

\documentclass{article}

\usepackage[colorlinks]{hyperref}
\usepackage[style=tree]{glossaries-extra}

\makeglossaries

\setabbreviationstyle[acronym]{long-short}

\newacronym{a1}{A1}{Apples 1}
\newacronym{a2}{A2}{Apples 2}

\newignoredglossary*{ignored}
\newglossaryentry{a}{name={A},description={Apples},alias={a1},type=ignored}

\begin{document}
First use: \gls{a1}, \gls{a2}, \gls{a}.

Next use: \gls{a1}, \gls{a2}, \gls{a}.

\printglossaries
\end{document}

\gls{a}尽管参考链接位于未显示的被忽略词汇表中,但它仍指向主词汇a\printglossaries

image of document

3.glossaries-extra扩展包和bib2gls

这将为别名条目(现在具有类别标签)分配一个后链接挂钩,aliased以便在第一次使用时它将显示两个术语。

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@acronym{a1,
  short={A1},
  long={Apples 1}
}
@acronym{a2,
  short={A2},
  long={Apples 2}
}
@index{a,
  name={A},
  alias={a1},
  seealso={a1,a2},
  category={aliased}
}
\end{filecontents*}

\usepackage[colorlinks]{hyperref}
\usepackage[style=tree,record]{glossaries-extra}

\setabbreviationstyle[acronym]{long-short}

\GlsXtrLoadResources[
  src={\jobname}% entries in \jobname.bib
]

\glsdefpostlink{aliased}{%
 \glsxtrifwasfirstuse
 {%
   \glsxtrifhasfield{seealso}{\glslabel}%
   {%
     \let\DTLlistformatitem\glsxtrlong
     \space(\DTLformatlist{\glscurrentfieldvalue})%
   }%
   {}%
 }%
 {}%
}

\begin{document}
First use: \gls{a1}, \gls{a2}, \gls{a}.

Next use: \gls{a1}, \gls{a2}, \gls{a}.

\renewcommand{\printunsrtglossaryentryprocesshook}[1]{%
  \glsxtrifhasfield*{alias}{#1}{\printunsrtglossaryskipentry}{}%
}
\printunsrtglossaries
\end{document}

\printunsrtglossary我没有创建被忽略的词汇表,而是重新定义了用来跳过任何设置了该字段的条目的钩子alias

image of document

该命令\glsdefpostlinkglossaries-extrav1.31 的新命令。如果您使用的是旧版本,则可以更改:

\glsdefpostlink{aliased}{%

到:

\newcommand{\glsxtrpostlinkaliased}{%

以下是一个细微的变化,其中包括对别名条目的描述:

\documentclass{article}

\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@acronym{a1,
  short={A1},
  long={Apples 1}
}
@acronym{a2,
  short={A2},
  long={Apples 2}
}
@entry{a,
  name={A},
  description={Apples},
  alias={a1},
  seealso={a1,a2},
  category={aliased}
}
\end{filecontents*}

\usepackage[colorlinks]{hyperref}
\usepackage[style=tree,record]{glossaries-extra}

\setabbreviationstyle[acronym]{long-short}

\GlsXtrLoadResources[
  src={\jobname}% entries in \jobname.bib
]

\glsdefpostlink{aliased}{%
 \glsxtrifwasfirstuse
 {%
   \space(\glsentrydesc{\glslabel}%
     \glsxtrifhasfield{seealso}{\glslabel}%
     {%
       \let\DTLlistformatitem\glsxtrlong
       :\space\DTLformatlist{\glscurrentfieldvalue}%
     }%
     {}%
   )%
 }%
 {}%
}

\begin{document}
First use: \gls{a1}, \gls{a2}, \gls{a}.

Next use: \gls{a1}, \gls{a2}, \gls{a}.

\renewcommand{\printunsrtglossaryentryprocesshook}[1]{%
  \glsxtrifhasfield*{alias}{#1}{\printunsrtglossaryskipentry}{}%
}
\printunsrtglossaries
\end{document}

image of document

相关内容