总体而言,词汇表界面看起来很简单,因为它具有首字母缩略词的默认设置,但是,我遇到了一些特殊情况,我想改变词汇表以不同的方式显示特定术语的方式。
例如:
缩写FUSE
,虽然我一般喜欢默认的“我的长缩写 (MLA)”形式,但 感觉不太自然Filesystem in Userspace (FUSE)
。我更倾向于写... implemented with FUSE (Filesystem in Userspace) ...
而不是反过来。
另一个特殊情况的例子是PCIe
代表Peripheral Component Interconnect Express
,然而我只想PCI Express (PCIe)
在第一次使用的地方看到 ,但在词汇表中,我希望看到 的更长描述Peripheral Component Interconnect Express
。
问题
- 我怎样才能实现不同的顺序(
\glsname (\glsdesc)
)具体的词汇表(缩写词汇表)的条目?(最好不要重新输入和中的数据name
,description
是否可以定义一个宏,首先正确计算?)
答案1
如果你有这样的混合风格,我认为最好使用glossaries-extra
而不仅仅是glossaries
。此glossaries
包的扩展重新实现了缩写,以便更容易拥有多种风格。
\setacronymstyle{style-name}
您不需要使用,而需要使用\setabbreviationstyle[category]{style-name}
,其中可选参数是类别标签。(如果省略,abbreviation
则使用 。)因此,如果您的大多数缩写应该采用长(短)样式,那么您可以使用
\setabbreviationstyle{long-short}
(在定义缩写之前)。这实际上是默认的。
对于您的短(长)缩写,您只需决定一个适当的类别标签(假设reverse
)并为该类别设置样式:
\setabbreviationstyle[reverse]{short-long}
缩写使用 定义\newabbreviation
,其语法与\newacronym
from类似glossaries
,但可选参数有一个额外的键category
,默认情况下设置为。(此键在withabbreviation
中也可用,但在这种情况下默认为。)\newglossaryentry
glossaries-extra
general
因此对于你的前两个例子:
\setabbreviationstyle{long-short}
\setabbreviationstyle[reverse]{short-long}
\newabbreviation{mla}{MLA}{my long abbreviation}
\newabbreviation[category=reverse]{fuse}{FUSE}{Filesystem in Userspace}
有一个预定义的类别标签,称为acronym
并glossaries-extra
重新定义
\newacronym[options]{label}{short}{long}
到
\newabbreviation[category=acronym,options]{label}{short}{long}
类别的样式acronym
自动设置为short
,但您可以明确设置。例如:
\setabbreviationstyle[acronym]{short}
\newacronym[description={device that produces an intense narrow
beam of light}]
{laser}% label
{laser}% short
{light amplification by stimulated emission of radiation}% long
除非条目与\glsxtrlong
或等命令一起使用,否则此样式实际上不会显示长格式\glsentrylong
。但是,glossaries-extra
您可以使用 调整特定类别的帖子描述挂钩。例如:
\renewcommand*{\glsxtrpostdescacronym}{%
\space(\textsc{acronym:} \glsentrylong{\glscurrententrylabel})%
}
这样就无需创建自定义词汇表样式。(请注意,在这种情况下\glsxtrpostdescacronym
需要重新定义,但对于自定义类别(例如reverse
上面的类别),钩子不会被预定义。)
另一种变化是设置特定类别的属性来调整样式。例如,您可以\newabbreviation
通过设置特定类别的属性来自动在缩写形式的每个字母之间插入点insertdots
。例如:
\setabbreviationstyle[dottedsc]{short-sc-long}
\glssetcategoryattribute{dottedsc}{insertdots}{true}
如果您设置了该insertdots
属性,那么最好也设置一个属性,该discardperiod
属性将丢弃紧跟在命令后面的句点,以\gls
防止出现双点。
您还可以为特定类别(或多个类别)定义“标记”命令:
\GlsXtrEnableInitialTagging{dottedsc}{\itag}
第一个参数可以是逗号分隔的类别标签列表,而不仅仅是单个标签。第二个参数是您选择的命令名称,可用于标记首字母。(这不应是现有命令。)例如:
\newabbreviation
[category=dottedsc]
{html}% identifying label
{html}% short form
{\itag{h}yper\itag{t}ext \itag{m}arkup \itag{l}anguage}% long form
\newabbreviation
[category=dottedsc]
{xml}% identifying label
{xml}% short form
{e\itag{x}tensible \itag{m}arkup \itag{l}anguage}% long form
在词汇表中,标记的字母默认会加下划线,但在文档的其余部分则不会。
我把你的第三个例子留到最后,因为它比较棘手。即使你不想使用密钥description
,我认为在这种情况下它是必要的。要么:
\newabbreviation
[description={Peripheral Component Interconnect Express}]
{pcie}{PCIe}{PCI Express}
或者,如果您还想要pci
索引:
\newabbreviation{pci}{PCI}{Peripheral Component Interconnect}
\newabbreviation[description={\glsxtrlong{pci} Express}]{pcie}{PCIe}{PCI Express}
或者,如果您不想pci
被索引:
\newabbreviation{pci}{PCI}{Peripheral Component Interconnect}
\newabbreviation[description={\glsentrylong{pci} Express}]{pcie}{PCIe}{PCI Express}
嵌套使用\gls
长格式(或短格式)中的命令可能会导致各种问题,尽管glossaries-extra
我们试图消除其中一些问题。这将在本节中更详细地讨论“嵌套链接”手册glossaries-extra
。
完整示例:
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage
[
%abbreviations, % for separate list of abbreviations
%nopostdot=false % auto-insert full-stop after descriptions
]
{glossaries-extra}
\makeglossaries
% Regular entry (category automatically set to "general")
\newglossaryentry{sample}{name={sample},description={an example}}
% Standard long (short) abbreviations
% This is already the default, but set it explicitly for this
% example.
\setabbreviationstyle{long-short}
% Category automatically set to "abbreviation" if not explicitly set
\newabbreviation{mla}{MLA}{my long abbreviation}
\newabbreviation
[description={Peripheral Component Interconnect Express}]
{pcie}{PCIe}{PCI Express}
% Reverse short (long) abbreviations.
% Let's call this category "reverse". This is just a label you can change
% but make sure it doesn't contain special characters.
\setabbreviationstyle[reverse]{short-long}
\newabbreviation[category=reverse]{fuse}{FUSE}{Filesystem in Userspace}
% There's already a predefined category called "acronym" that
% has the abbreviation style set to "short", but let's set it explicitly
% in this example.
\setabbreviationstyle[acronym]{short}
\newacronym[description={device that produces an intense narrow
beam of light}]
{laser}% label
{laser}% short
{light amplification by stimulated emission of radiation}% long
% The "short" style won't show the long form in the glossary,
% so let's adjust the post description hook just for the "acronym"
% category so that the long form is automatically inserted after the
% description. This saves defining a new custom glossary style.
\renewcommand*{\glsxtrpostdescacronym}{%
\space(\textsc{acronym:} \glsentrylong{\glscurrententrylabel})%
}
% Let's make a dotted small-caps category called "dottedsc":
\setabbreviationstyle[dottedsc]{long-short-sc}
% provide a tagging command for the "dottedsc" category:
\GlsXtrEnableInitialTagging{dottedsc}{\itag}
% auto insert dots between letters in the short form for the
% "dottedsc" category:
\glssetcategoryattribute{dottedsc}{insertdots}{true}
% Discard trailing periods following commands like \gls:
\glssetcategoryattribute{dottedsc}{discardperiod}{true}
\newabbreviation
[category=dottedsc]
{html}% identifying label
{html}% short form
{\itag{h}yper\itag{t}ext \itag{m}arkup \itag{l}anguage}% long form
\newabbreviation
[category=dottedsc]
{xml}% identifying label
{xml}% short form
{e\itag{x}tensible \itag{m}arkup \itag{l}anguage}% long form
\begin{document}
\section{First}
First use:
\gls{sample}.
\gls{mla}.
\gls{fuse}.
\gls{laser}.
\gls{html}.
\gls{xml}.
\gls{pcie}.
\section{Next}
Next use:
\gls{sample}.
\gls{mla}.
\gls{fuse}.
\gls{laser}.
\gls{html}.
\gls{xml}.
\gls{pcie}.
\printglossaries
\end{document}
得出的结果为:
答案2
在您的 FUSE 示例中,如果您无法重新定义这些术语的首次使用,因为您正在使用,那么\arc{}
当您提前知道您正在使用需要这种特殊处理的术语时,您可能能够定义一个新命令来完成此操作。
起点可能是:
\newcommand{\acrinverse}[1]{{\acrshort{#1}}\xspace{\acrlong{#1}}}
我认为你可能会发现使用\gls{}
和\newglossaryentry
命令比使用更快的命令更容易\acr{}
,因为你将能够定义每个
- 标签
- 姓名
- 种类
- 短的
- 长的
- 描述
- 第一的
全部手动操作以符合条目特定的格式。
关于您的格式,我认为排序不需要任何特殊的宏,您只需在排序字段中定义排序术语逻辑即可。该术语将不可见,因此请根据需要进行修改。
继续您的 PCI 示例,如果您想构建更动态的解决方案,您可以考虑嵌套您的术语吗?我做了类似的事情,并在这两个问题上寻求帮助:
使用 \newglossaryentry 中的词汇表 \ifglsused 嵌套条件词汇表术语
和