词汇表和特殊情况

词汇表和特殊情况

总体而言,词汇表界面看起来很简单,因为它具有首字母缩略词的默认设置,但是,我遇到了一些特殊情况,我想改变词汇表以不同的方式显示特定术语的方式。

例如:

缩写FUSE,虽然我一般喜欢默认的“我的长缩写 (MLA)”形式,但 感觉不太自然Filesystem in Userspace (FUSE)。我更倾向于写... implemented with FUSE (Filesystem in Userspace) ...而不是反过来。

另一个特殊情况的例子是PCIe代表Peripheral Component Interconnect Express,然而我只想PCI Express (PCIe)在第一次使用的地方看到 ,但在词汇表中,我希望看到 的更长描述Peripheral Component Interconnect Express

问题

  1. 我怎样才能实现不同的顺序(\glsname (\glsdesc)具体的词汇表(缩写词汇表)的条目?(最好不要重新输入和中的数据namedescription是否可以定义一个宏,首先正确计算?)

答案1

如果你有这样的混合风格,我认为最好使用glossaries-extra而不仅仅是glossaries。此glossaries包的扩展重新实现了缩写,以便更容易拥有多种风格。

\setacronymstyle{style-name}您不需要使用,而需要使用\setabbreviationstyle[category]{style-name},其中可选参数是类别标签。(如果省略,abbreviation则使用 。)因此,如果您的大多数缩写应该采用长(短)样式,那么您可以使用

\setabbreviationstyle{long-short}

(在定义缩写之前)。这实际上是默认的。

对于您的短(长)缩写,您只需决定一个适当的类别标签(假设reverse)并为该类别设置样式:

\setabbreviationstyle[reverse]{short-long}

缩写使用 定义\newabbreviation,其语法与\newacronymfrom类似glossaries,但可选参数有一个额外的键category,默认情况下设置为。(此键在withabbreviation中也可用,但在这种情况下默认为。)\newglossaryentryglossaries-extrageneral

因此对于你的前两个例子:

\setabbreviationstyle{long-short}
\setabbreviationstyle[reverse]{short-long}

\newabbreviation{mla}{MLA}{my long abbreviation}
\newabbreviation[category=reverse]{fuse}{FUSE}{Filesystem in Userspace}

有一个预定义的类别标签,称为acronymglossaries-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 嵌套条件词汇表术语

在词汇表中创建新字段 newglossaryentry

相关内容