我希望能够在词汇表中添加一个首字母缩略词,当引用该缩略词时,该缩略词\gls{}
会以标准形式出现在正文中,除非另有说明。
即我有以下缩写:
\newacronym{a1}{A1}{Apples 1}
\newacronym{a2}{A2}{Apples 2}
我正在写两种苹果,A1和A2但我最感兴趣的是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}
这将建立一组分层的缩写:
该\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
。别名条目在词汇表中列出,并带有交叉引用:
第一次使用时\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
。
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
。
该命令\glsdefpostlink
是glossaries-extra
v1.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}