glossaries-extra.sty v1.01: an extension to the glossaries package
Nicola L.C. Talbot |
Dickimaw Books |
http://www.dickimaw-books.com/ |
2016-02-02
Abstract
The glossaries-extra package is an extension to the glossaries package, providing additional features. Some of the features provided by this package are only available with glossaries version 4.19 (or above). This document assumes familiarity with the glossaries package.
The glossaries package is a flexible package, but it’s also a heavy-weight package that uses a lot of resources. As package developer, I’m caught between those users who complain about the drawbacks of a heavy-weight package with a large user manual and those users who want more features (which necessarily adds to the package weight and manual size).
The glossaries-extra package is an attempt to provide a compromise for this conflict. Version 4.21 of the glossaries package is the last version to incorporate new features. Future versions of glossaries will just be bug fixes. New features will instead be added to glossaries-extra. This means that the base glossaries package won’t increase in terms of package loading time and allocation of resources, but those users who do want extra features available will have more of a chance of getting their feature requests accepted.
I’m not happy with some of the default settings assumed by the glossaries package, and, judging from code I’ve seen, other users also seem unhappy with them, as certain package options are often used in questions posted on various sites. I can’t change the default behaviour of glossaries as it would break backward compatibility, but since glossaries-extra is a separate package, I have decided to implement some of these commonly-used options by default. You can switch them back if they’re not appropriate.
The new defaults are:
Examples:
This is like:
This is like:
This is like:
However
This is like:
Since by the time glossaries-extra has been loaded, glossaries has already redefined memoir’s glossary-related commands.
Another noticeable change is that by default \printglossary will now display information text in the document if the external glossary file doesn’t exist. This is explanatory text to help new users who can’t work out what to do next to complete the document build. Once the document is set up correctly and the external files have been generated, this text will disappear.
This change is mostly likely to be noticed by users with one or more redundant empty glossaries who ignore transcript messages, explicitly use makeindex/xindy on just the non-empty glossary (or glossaries) and use the iterative \printglossaries command instead of \printglossary. For example, consider the following:
The above document will only display the list of acronyms at the place where \printglossaries occurs. However it will also attempt to input the .gls file associated with the main glossary.
If you use makeglossaries, you’ll get the warning message:
(where the original file is called test.tex) but if you simply call makeindex directly to generate the .acr file (without attempting to create the .gls file) then the transcript file will always contain the message:
This doesn’t occur with makeglossaries as it will create the .gls file containing the single command \null.
If you simply change from glossaries to glossaries-extra in this document, you’ll find a change in the resulting PDF if you don’t use makeglossaries and you only generate the .acr file with makeindex.
The transcript file will still contain the message about the missing .gls, but now you’ll also see information in the actual PDF document. The simplest remedy is to follow the advice inserted into the document at that point, which is to add the nomain package option:
If you haven’t already loaded glossaries, you can use any of the package options provided by glossaries when you load glossaries-extra and they will automatically be passed to glossaries (which glossaries-extra will load). If glossaries has already been loaded, then those options will be passed to \setupglossaries, but remember that not all of the glossaries package options may be used in that command.
In addition to those options recognised by glossaries, there are some new ones provided by glossaries-extra:
If you want to define styles that can interface with the accessibility support provided by glossaries-accsupp use the \glsaccess⟨xxx⟩ type of commands instead of \glsentry⟨xxx⟩ (for example, \glsaccesstext instead of \glsentrytext). If glossaries-accsupp hasn’t been loaded those commands are equivalent (for example, \glsaccesstext just does \glsentrytext) but if it has been loaded, then the \glsaccess⟨xxx⟩ commands will add the accessibility information. (See §8.2 Accessibility Support for further details.)
Note that the accsupp option can only be used as a package option (not through \glossariesextrasetup) since the glossaries-accsupp package must be loaded before glossaries-extra if it’s required.
This option affects commands that internally use \newglossaryentry, such as \newabbreviation, but not the “on-the-fly” commands described in §7 On-the-Fly Document Definitions.
which is equivalent to
If this command is already defined, it’s left unchanged. Otherwise it’s defined to “Abbreviations” if babel hasn’t been loaded or \acronymname if babel has been loaded. However, if you’re using babel it’s likely you will need to change this. (See §10 Multi-Lingual Support for further details.)
If the abbreviations option is used and the acronym option provided by the glossaries package hasn’t been used, then \acronymtype will be set to \glsxtrabbrvtype so that acronyms defined with \newacronym can be added to the list of abbreviations. If you want acronyms in the main glossary and other abbreviations in the abbreviations glossary then you will need to redefine \acronymtype to main:
Note that there are no analogous options to the glossaries package’s acronymlists option (or associated commands) as the abbreviation mechanism is handled differently with glossaries-extra.
which is equivalent to
which is equivalent to
Note that multiple invocations of the shortcuts option within the same option list will override each other.
After the glossaries-extra package has been loaded, you can set available options using
The abbreviations option may only be used in the preamble.
The commands used by glossaries to automatically produce an error if an entry is undefined (such as \glsdoifexists) are changed to take the undefaction option into account.
The \newglossaryentry command has a new key called category, which sets the category label for the given entry. By default this is general. See §4 Categories for further information about categories.
The \newterm command (defined through the index package option) is modified so that the category defaults to index. The \newacronym command is modified to use the new abbreviation interface provided by glossaries-extra. (See §2 Abbreviations.)
The glossaries-extra package provides an extra key for commands like \gls and \glstext called noindex. This is a boolean key. If true, this suppresses the indexing. (That is, it prevents \gls or whatever from adding a line to the external glossary file.) This is more useful than the indexonlyfirst package option provided by glossaries, as the first use might not be the most pertinent use. (If you want to apply indexonlyfirst to selected entries, rather than all of them, you can use the indexonlyfirst attribute, see §4 Categories for further details.) Note that the noindex key isn’t available for \glsadd (and \glsaddall) since the whole purpose of that command is to index an entry.
There is a new hook that’s used each time indexing information is written to the external glossary files:
where ⟨label⟩ is the entry’s label. This does nothing by default but may be redefined. (See, for example, the accompanying sample file sample-indexhook.tex, which uses this hook to determine which entries haven’t been indexed.)
The value of the see key is now saved as a field. This isn’t the case with glossaries, where the see attribute is simply used to directly write a line to the corresponding glossary file and is then discarded. This is why the see key can’t be used before \makeglossaries (since the file hasn’t been opened yet). It’s also the reason why the see key doesn’t have any effect when used in entries that are defined in the document environment. Since the value isn’t saved, it’s not available when the .glsdefs file is created at the end of the document and so isn’t available at the start of the document environment on the next run.
This modification allows glossaries-extra to provide
which is used at the end of the document to automatically add any unused cross-references unless the package option indexcrossrefs was set to false.
As a by-product of this enhancement, the see key will now work for entries defined in the document environment, but it’s still best to define entries in the preamble, and the see key still can’t work before the file has been opened by \makeglossaries.
Recall from the glossaries package that commands such as \gls display text at that point in the document (optionally with a hyperlink to the relevant line in the glossary). This text is referred to as the “link-text” regardless of whether or not it actually has a hyperlink. The actual text and the way it’s displayed depends on the command used (such as \gls) and the entry format.
The default entry format (\glsentryfmt) used in the link-text by commands like \gls (but not commands like \glstext) is changed by glossaries-extra to test for regular entries, which are determined as follows:
This means that entries with a short form can be treated as regular entries rather than abbreviations if it’s more appropriate for the desired style.
The \glspostlinkhook provided by the glossaries package to insert information after the link-text produced by commands like \gls and \glstext is redefined to
This command will discard a following full stop (period) if the discardperiod attribute is set to “true” for the current entry’s category. It will also do
if a full stop hasn’t be discarded and
if a full stop has been discarded.
By default \glsxtrpostlink just does \glsxtrpostlink⟨category⟩ if it exists, where ⟨category⟩ is the category label for the current entry. (For example, for the general category, \glsxtrpostlinkgeneral if it has been defined.)
The sentence-ending hook is slightly more complicated. If the command \glsxtrpostlink⟨category⟩ is defined the hook will do that and then insert a full stop with the space factor adjusted to match the end of sentence. If \glsxtrpostlink⟨category⟩ hasn’t been defined, the space factor is adjusted to match the end of sentence. This means that if you have, for example, an entry that ends with a full stop, a redundant following full stop will be discarded and the space factor adjusted (in case the entry is in uppercase) unless the entry is followed by additional material, in which case the following full stop is no longer redundant and needs to be reinserted.
There are some convenient commands you might want to use when customizing the post-link-text category hooks:
This will add the description in parentheses on first use.
For example, suppose you want to append the description in parentheses on first use for entries in the symbol category:
This will append the symbol (if defined) in parentheses on first use.
If you want to provide your own custom format be aware that you can’t use \ifglsused within the post-link-text hook as by this point the first use flag will have been unset. Instead you can use
This will do ⟨true⟩ if the last used entry was the first use for that entry, otherwise it will do ⟨false⟩. (Requires at least glossaries v4.19 to work properly.) This command is locally set by commands like \gls, so don’t rely on it outside of the post-link-text hook.
For example, if you want to place the description in a footnote after the link-text on first use for the general category:
The postfootnote abbreviation style uses the post-link-text hook to place the footnote after trailing punctuation characters.
You can set the default options used by \glslink, \gls etc with:
For example, if you mostly don’t want to index entries then you can do:
and then use, for example, \gls[noindex=false]{sample} when you actually want the location added to the number list. These defaults may be overridden by other settings (such as category attributes) in addition to any settings passed in the option argument of commands like \glslink and \gls.
Note that if you don’t want any indexing, just omit \makeglossaries and \printglossaries (or analogous commands).
Commands like \gls have star (*) and plus (+) modifiers as a short cut for hyper=false and hyper=true. The glossaries-extra package provides a way to add a third modifier, if required, using
where ⟨char⟩ is the character used as the modifier and ⟨options⟩ is the default set of options (which may be overridden). Note that ⟨char⟩ must be a single character (not a UTF-8 character, unless you are using XƎLATEX or LuaLATEX).
Example:
This means that \gls!{sample} will be equivalent to \gls[noindex]{sample}. It’s not possible to mix modifiers. For example, if you want to do
you can use \gls*[noindex]{sample} or \gls![hyper=false]{sample} but you can’t combine the * and ! modifiers.
The \glsenableentrycount command is modified to allow for the entrycount attribute. This means that you not only need to enable entry counting with \glsenableentrycount, but you also need to set the appropriate attribute (see §4 Categories).
For example, instead of just doing:
you now need to do:
This will enable the entry counting for entries in the abbreviation category, but any entries assigned to other categories will be unchanged.
Further information about entry counting, including the new per-unit feature, is described in §5 Entry Counting.
Complications arise when you use \gls in the value of the name field (or text or first fields, if set). This tends to occur with abbreviations that extend other abbreviations. For example, SHTML is an abbreviation for SSI enabled HTML, where SSI is an abbreviation for Server Side Includes and HTML is an abbreviation for Hypertext Markup Language.
Things can go wrong if we try the following with the glossaries package:
The main problems are:
which just doesn’t work. Grouping the \gls{ssi} doesn’t work either as this will effectively try to do
This will upper case the label ssi so the entry won’t be recognised. This problem will also occur if you use the all capitals version, such as \GLS.
This produces:
This section discusses server side includes (SSI), hypertext markup language (HTML) and SSI enabled HTML (SHTML).
So the first use of the shtml entry produces “SSI enabled HTML (SHTML)”.
Now let’s suppose the html entry is used before the shtml but the ssi entry is used after the shtml entry, for example:
This produces:
The sample files are either hypertext markup language (HTML) or server side includes (SSI) enabled HTML (SHTML), but let’s first discuss SSI.
So the first use of the shtml entry now produces “server side includes (SSI) enabled HTML (SHTML)”, which looks a bit strange.
Now let’s suppose the shtml entry is used before (or without) the other two entries:
This produces:
This article is an introduction to server side includes (SSI) enabled hypertext markup language (HTML) (SHTML).
So the first use of the shtml entry now produces “server side includes (SSI) enabled hypertext markup language (HTML) (SHTML)”, which is even more strange.
This is all aggravated by setting the style using \setacronymstyle. For example:
as this references the label through the use of \glslabel when displaying the long and short forms, but this value changes with each use of \gls, so instead of displaying “(SHTML)” at the end of the first use, it now displays “(HTML)”, since \glslabel has been changed to html by \gls{html}.
Another oddity occurs if you reset the html entry between uses of the shtml entry. For example:
The next use of shtml produces “Shypertext markup language (HTML)”, which is downright weird.
Even without this, the short form has nested formatting commands, which amount to \acronymfont{S\acronymfont{HTML}}. This may not be a problem for some styles, but if you use one of the “sm” styles (that use \textsmaller), this will produce an odd result.
For these reasons it’s better to use the simple expandable commands like \glsentrytext or \glsentryshort in the definition of other entries (although that doesn’t fix the first problem). Alternatively use something like:
with glossaries-extra. This fixes all the above listed problems (as long as you don’t use \glsdesc). Note that replacing \gls with \acrshort in the original example may fix the first use issue, but it doesn’t fix any of the other problems listed above.
However if you’re really determined to use \gls in a field that may be included within some link-text, glossaries-extra patches internals used by the linking commands so that if \gls (or plural or case changing variants) occurs in the link-text it will behave as though you used \glstext[hyper=false,noindex] instead. Grouping is also added so that, for example, when \gls{shtml} is used for the first time the long form
is treated as
This overcomes the last three problems listed above, but still doesn’t fix the first two.
Additionally, any instance of the long form commands, such as \glsxtrlong or \acrlong will be temporarily redefined to just use
(or case-changing versions). Similarly the short form commands, such as \glsxtrshort or \acrshort will use \glsentryshort in the argument of either \glsabbrvfont (for \glsxtrshort) or \acronymfont (for \acrshort). So if the shtml entry had instead been defined as:then (using the long-short style) the first use will be like
whereas if the entry is defined as:
then the first use will be like:
Note that the first optional argument of \acrshort or \glsxtrshort is ignored in this context. (The final optional argument will be inserted, if present.) The abbreviation style that governs \glsabbrvfont will be set for \glsxtrshort. Note that \acrshort doesn’t set the abbreviation style.
The glossaries-extra package provides a new way of dealing with abbreviations and redefines \newacronym to use \newabbreviation (see §2 Abbreviations). If you want to restore the generic acronym function provided by glossaries you need to use
but be careful using this if you also want abbreviations as they will clash if you attempt to use them in the same glossary as generic acronyms from the glossaries package.
The space command \glsacspace used by the long-sp-short acronym style provided by glossaries is modified so that it uses
instead of the hard-coded 3em. This is a command not a length and so can be changed using \renewcommand.
The first use acronym font command
is redefined to use the first use abbreviation font command \glsfirstabbrvfont. This will be reset if you use \RestoreAcronyms.
The subsequent use acronym font command
is redefined to use the subsequent use abbreviation font command \glsabbrvfont. This will be reset if you use \RestoreAcronyms.
The default value of \glslistdottedwidth is changed so that it’s set at the start of the document (if it hasn’t been changed in the preamble). This should take into account situations where \hsize isn’t set until the start of the document.
The commands \glossentryname and \glossentrydesc are modified to take into account the glossname and glossdesc attributes (see §4 Categories). This means you can make simple case-changing modifications to the name and description without defining a new glossary style.
There is a hook after \glossentryname and \Glossentryname:
By default this checks the indexname attribute. If the attribute exists for the category to which the label belongs, then the name is automatically indexed using
See §6 Auto-Indexing for further details.
The post-description code used within the glossary is modified so that it also does
This occurs before the original \glspostdescription, so if the nopostdot=false option is used, it will be inserted before the terminating full stop.
This new command will do \glsxtrpostdesc⟨category⟩ if it exists, where ⟨category⟩ is the category label associated with the current entry. For example \glsxtrpostdescgeneral for entries with the category set to general or \glsxtrpostdescacronym for entries with the category set to acronym.
Since both \glossentry and \subglossentry set
to the label for the current entry, you can use this within the definition of these post-description hooks if you need to reference the label.
For example, suppose you want to insert the plural form in brackets after the description in the glossary, but only for entries in the general category, then you could do:
This means you don’t have to define a custom glossary style, which you may find more complicated. (It also allows more flexibility if you decide to change the underlying glossary style.)
Abbreviations include acronyms (words formed from initial letters, such as “laser”), initialisms (initial letters of a phrase, such as “html”, that aren’t pronounced as words) and contractions (where parts of words are omitted, often replaced by an apostrophe, such as “don’t”). The “acronym” code provided by the glossaries package is misnamed as it’s more often than not used for initialisms instead. Acronyms tend not to be expanded on first use (although they may need to be described for readers unfamiliar with the term). They are therefore more like a regular term, which may or may not require a description in the glossary.
The glossaries-extra package corrects this misnomer, and provides better abbreviation handling, with
This sets the category key to abbreviation by default, but that value may be overridden in ⟨options⟩. The category may have attributes that modify the way abbreviations are defined. For example, the insertdots attribute will automatically insert full stops (periods) into ⟨short⟩ or the noshortplural attribute will set the default value of the shortplural key to just ⟨short⟩ (without appending the plural suffix). See §4 Categories for further details.
See §1.3.4 Nested Links regarding the pitfalls of using commands like \gls or \glsxtrshort within ⟨short⟩ or ⟨long⟩.
The \newacronym command provided by the glossaries package is redefined to use \newabbreviation with the category set to acronym. If you want to restore the original behaviour of acronyms (as implemented by the glossaries package’s \newacronym, \setacronymstyle and \newacronymstyle) you need to use
However, if you do this take care not to mix acronyms with other types of entries within the same glossary. (You may also need to redefine \acronymtype.)
The \newabbreviation command is superficially similar to the glossaries package’s \newacronym but you can apply different styles to different categories. The default style is short for entries in the acronym category and short-long for entries in the abbreviation category. (These aren’t the same as the acronym styles provided by the glossaries package, although they may produce similar results.)
The short form is displayed within commands like \gls using
on first use and
for subsequent use.
If you use the long-short style, \glsabbrvfont is redefine to use
whereas the long-short-sc style redefines \glsabbrvfont to use \glsxtrscfont. If you want to use a different font-changing command you can either redefine \glsabbrvdefaultfont and use one of the base styles, such as long-short, or define a new style in a similar manner to the “sc”, “sm” or “em” styles.
All predefined abbreviation styles redefine \glsfirstabbrvfont to use
By default, this just does \glsabbrvfont{⟨short-form⟩} so the first use format matches the subsequence use format for the short form.
The commands that display the full form for abbreviations use \glsfirstabbrvfont to display the short form and
to display the long form. As with \glsabbrvfont, this command is changed by all styles. Currently all predefined abbreviation styles provided by glossaries-extra redefine \glsfirstlongfont to use
You can redefine this command if you want to change the font used by the long form on first use for all your abbreviations, or you can define your own abbreviation style that provides a different format for only those abbreviations defined with that style.
There are two types of full forms. The display full form, which is used on first use by commands like \gls and the inline full form, which is used by commands like \glsxtrfull. For some of the abbreviation styles, such as long-short, the display and inline forms are the same. In the case of styles such as short or footnote, the display and inline full forms are different.
These formatting commands aren’t stored in the short, shortplural, long or longplural fields, which means they won’t be used within commands like \glsentryshort (but they are used within commands like \glsxtrshort and \glsfmtshort). Note that \glsxtrlong and the case-changing variants don’t use \glsfirstlongfont.
If you would like to tag the initial letters in the long form such that those letters are underlined in the glossary but not in the main part of the document, you can use
before you define your abbreviations.
This command (robustly) defines ⟨cs⟩ (a control sequence) to accept a single argument, which is the letter (or letters) that needs to be tagged. The normal behaviour of this command within the document is to simply do its argument, but in the glossary it’s activated for those categories that have the tagging attribute set to “true”. For those cases it will use
This command defaults to \underline{⟨text⟩} but may be redefined as required.
The control sequence ⟨cs⟩ can’t already be defined when used with the unstarred version of \GlsXtrEnableInitialTagging for safety reasons. The starred version will overwrite any previous definition of ⟨cs⟩. As with redefining any commands, ensure that you don’t redefine something important. In fact, just forget the existence of the starred version and let’s pretend I didn’t mention it.
The first argument of \GlsXtrEnableInitialTagging is a comma-separated list of category names. The tagging attribute will automatically be set for those categories. You can later set this attribute for other categories (see §4 Categories) but this must be done before the glossary is displayed.
The accompanying sample file sample-mixtures.tex uses initial tagging for both the acronym and abbreviation categories:
This defines the command \itag which can be used in the definitions. For example:
The underlining of the tagged letters only occurs in the glossary and then only for entries with the tagging attribute set.
The abbreviation style must be set before abbreviations are defined using:
where ⟨style-name⟩ is the name of the style and ⟨category⟩ is the category label (abbreviation by default). New abbreviations will pick up the current style according to their given category. If there is no style set for the category, the fallback is the style for the abbreviation category. Some styles may automatically modify one or more of the attributes associated with the given category. For example, the long and short styles set the regular attribute to true.
Note that \setacronymstyle is disabled by glossaries-extra. Use
Abbreviations can be used with the standard glossaries commands, such as \gls, but don’t use the acronym commands like \acrshort (which use \acronymfont). The short form can be produced with:
(Use this instead of \acrshort.)
The long form can be produced with
(Use this instead of \acrlong.)
The inline full form can be produced with
(This this instead of \acrfull.)
As mentioned earlier, the inline full form may not necessarily match the format used on first use with \gls. For example, the short style only displays the short form on first use, but the full form will display the long form followed by the short form in parentheses.
The arguments ⟨options⟩, ⟨label⟩ and ⟨insert⟩ are the same as for commands such as \glstext. There are also analogous case-changing commands:
First letter upper case short form:
First letter upper case long form:
First letter upper case inline full form:
All upper case short form:
All upper case long form:
All upper case inline full form:
Plural forms are also available.
Short form plurals:
Long form plurals:
Full form plurals:
The abbreviation shortcut commands can be enabled using the package option shortcuts=abbreviation (or shortcuts=abbr). This defines the commands listed in table 2.1.
There are two types of abbreviation styles: those that treat the abbreviation as a regular entry (so that \gls uses \glsgenentryfmt) and those that don’t treat the abbreviation as a regular entry (so that \gls uses \glsxtrgenabbrvfmt).
The regular entry abbreviation styles set the regular attribute to “true” for the category assigned to each abbreviation with that style. This means that on first use, \gls uses the value of the first field and on subsequent use \gls uses the value of the text field (and analogously for the plural and case-changing versions). The short and long fields are set as appropriate and may be accessed through commands like \glsxtrshort.
The other abbreviation styles don’t modify the regular attribute. The first and text fields (and their plural forms) are set and can be accessed through commands like \glsfirst, but they aren’t used by commands like \gls, which instead use the short form (stored in the short key) and the display full format (through commands like \glsxtrfullformat that are defined by the style).
In both cases, the first use of \gls may not match the text produced by \glsfirst (and likewise for the plural and case-changing versions).
The “sc” styles all use
which is defined as
The default plural suffix for the short form is set to
This just defined as
The \glstextup command is provided by glossaries and is used to switch off the small caps font for the suffix. If you override the default short plural using the shortplural key when you define the abbreviation you will need to make the appropriate adjustment if necessary. (Remember that the default plural suffix behaviour can be modified through the use of the aposplural and noshortplural attributes. See §4 Categories for further details.)
The “sm” styles all use
This is defined as:
If you want to use this, you must explicitly load the relsize package which defines the \textsmaller command. If you want to easily switch between the “sc” and “sm” styles, you may find it easier to redefine this command to convert to upper case:
The default plural suffix for the short form is set to
This just does \glspluralsuffix.
The “em” styles all redefine \glsabbrvfont to use \emph. This is done explicitly and not through a helper command such as \glsxtrscfont.
Some of the styles use
as a separator between the long and short forms. This is defined as a space by default, but may be changed as required. For example:
or
The following abbreviation styles set the regular attribute to “true” for all categories that have abbreviations defined with any of these styles.
The name is set to the long form and the description must be provided by the user. The predefined glossary styles won’t display the short form. You can use the post-description hook to automatically append the short form to the description. The inline full form will display ⟨long⟩ (⟨short⟩).
The following abbreviation styles will set the regular attribute to “false” if it has previously been set. If it hasn’t already been set, it’s left unset. Other attributes may also be set, depending on the style.
The inline full form uses the ⟨short⟩ (⟨long⟩) style. The name is set to the short form. The description is set to the long form.
The inline full form uses the ⟨short⟩ (⟨long⟩) style. The name is set to the short form. The description is set to the long form.
New abbreviation styles may be defined using:
where ⟨name⟩ is the name of the new style (as used in the mandatory argument of \setabbreviationstyle). This is similar but not identical to the glossaries package’s \newacronymstyle command.
The ⟨setup⟩ argument deals with the way the entry is defined and may set attributes for the given abbreviation category. This argument should redefine
to set the entry fields including the name (defaults to the short form if omitted), sort, first, firstplural. Other fields may also be set, such as text, plural and description.
For example, the long-short style has the following in ⟨setup⟩:
Note that the first and firstplural are set even though they’re not used by \gls.
The ⟨setup⟩ argument may also redefine
which can be used to assign attributes. (This will automatically be initialised to do nothing.)
For example, the footnote includes the following in ⟨setup⟩:
This sets the nohyperfirst attribute to “true”. It also unsets the regular attribute if it has previously been set. Note that the nohyperfirst attribute doesn’t get unset by other styles, so take care not to switch styles for the same category.
You can access the short, long, short plural and long plural values through the following token registers.
Short value (defined by glossaries):
Short plural value (defined by glossaries-extra):
(This may be the default value or, if provided, the value provided by the user through the shortplural key in the optional argument of \newabbreviation.)
Long value (defined by glossaries):
Long plural value (defined by glossaries-extra):
(This may be the default value or, if provided, the value provided by the user through the longplural key in the optional argument of \newabbreviation.)
There are two other registers available that are defined by glossaries:
which contains the entry’s label and
which contains the values provided in the optional argument of \newabbreviation.
Remember put \the in front of the register command as in the examples above. The category label can be access through the command (not a register):
This may be used inside the definition of \GlsXtrPostNewAbbreviation.
If you want to base a style on an existing style, you can use
where ⟨name⟩ is the name of the existing style. For example, the footnote-sc and footnote-sm styles both simply use
within ⟨setup⟩.
The ⟨fmts⟩ argument deals with the way the entry is displayed in the document. This argument should redefine the following commands:
The default suffix for the plural short form (if not overridden by the shortplural key):
(Note that this isn’t used for the plural long form, which just uses the regular \glspluralsuffix.)
The font used for the short form on first use or in the full forms:
The font used for the short form on subsequent use or through commands like \glsxtrshort:
The font used for the long form on first use or in the full forms:
Display full form singular no case-change (used by \gls on first use for abbreviations without the regular attribute set):
Display full form singular first letter converted to upper case (used by \Gls on first use for abbreviations without the regular attribute set):
Display full form plural no case-change (used by \glspl on first use for abbreviations without the regular attribute set):
Display full form plural first letter converted to upper case (used by \Glspl on first use for abbreviations without the regular attribute set):
In addition ⟨fmts⟩ may also redefine the following commands that govern the inline full formats. If the style doesn’t redefine them, they will default to the same as the display full forms.
Inline singular no case-change (used by \glsentryfull, \glsxtrfull and \GLSxtrfull):
Inline singular first letter converted to upper case (used by \Glsentryfull and \Glsxtrfull):
Inline plural no case-change (used by \glsentryfullpl, \glsxtrfullpl and \GLSxtrfullpl):
Inline plural first letter converted to upper case (used by \Glsentryfullpl and \Glsxtrfullpl):
If you want to provide support for glossaries-accsupp use the following \glsaccess⟨xxx⟩ commands (§8.2 Accessibility Support) within the definitions of \glsxtrfullformat etc instead of the analogous \glsentry⟨xxx⟩ commands. (If you don’t use glossaries-accsupp, they will just do the corresponding \glsentry⟨xxx⟩ command.)
For example, the short-long style has the following in ⟨fmts⟩:
Since the inline full commands aren’t redefined, they default to the same as the display versions.
If you want to base a style on an existing style, you can use
within ⟨fmts⟩, where ⟨name⟩ is the name of the existing style. For example, the short-sc-long style has the following in ⟨fmts⟩:
and the short-sm-long style has:
The simplest examples of creating a new style based on an existing style are the “em” styles, such as the short-em-long style, which is defined as:
The glossaries user manual cautions against using commands like \gls in chapter or section titles. The principle problems are:
To get around all these problems, the glossaries user manual recommends using the expandable non-hyperlink commands, like \glsentrytext (for regular entries) or \glsentryshort (for abbreviations). This is the simplest solution, but doesn’t allow for special formatting that’s applied to the entry through commands like \glstext or \glsxtrshort. This means that if, for example, you are using one of the abbreviation styles that uses \textsc then the short form displayed with \glsentryshort won’t use small caps. If you only have one abbreviation style in use, you can explicitly enclose \glsentryshort{⟨label⟩} in the argument of \glsabbrvfont, like this:
Or, if you are using hyperref:
Since this is a bit cumbersome, you might want to define a new command to do this for you. However, if you have mixed styles this won’t work as commands like \gls and \glsxtrshort redefine \glsabbrvfont to match the entry’s style before displaying it. In this case, the above example doesn’t take into account the shifting definitions of \glsabbrvfont and will use whatever happens to be the last abbreviation style in use. More complicated solutions interfere with the upper casing used by the standard page styles that display the chapter or section title in the page header using \MakeUppercase.
The glossaries-extra package tries to resolve this by modifying \markright and \markboth. If you don’t like this change, you can restore their former definitions using
In this case, you’ll have to use the glossaries manual’s recommendations of either simply using \glsentryshort (as above) or use the sectioning command’s option argument to provide an alternative for the table of contents and page header. For example:
If you don’t revert the mark commands back with \glsxtrRevertMarks, you can use the commands described below in the argument of sectioning commands. You can still use them even if the mark commands have been reverted, but only where they don’t conflict with the page style.
The commands listed below all use \texorpdfstring if hyperref has been loaded so that the expandable non-formatted version is added to the PDF bookmarks. Note that since the commands that convert the first letter to upper case aren’t expandable, the non-case-changing version is used for the bookmarks.
These commands essentially behave as though you have used \glsxtrshort (or equivalent) with the options noindex and hyper=false. The text produced won’t be converted to upper case in the page headings by default. If you want the text converted to upper case you need to set the headuc attribute to “true” for the appropriate category.
Display the short form:
Display the plural short form:
First letter upper case singular short form:
(No case-change applied to PDF bookmarks.)
First letter upper case plural short form:
(No case-change applied to PDF bookmarks.)
There are also equivalent commands for the value of the text field:
First letter converted to upper case:
(No case-change applied to PDF bookmarks.)
The plural equivalents:
and
Similarly for the value of the first field:
First letter converted to upper case:
(No case-change applied to PDF bookmarks.)
The plural equivalents:
and
Each entry defined by \newglossaryentry (or commands that internally use \newglossaryentry such as \newabbreviation) is assigned a category through the category key. You may add any category that you like, but since the category is a label used in the creation of some control sequences, avoid problematic characters within the category label. (So take care if you have babel shorthands on that make some characters active.)
The use of categories can give you more control over the way entries are displayed in the text or glossary.
The default category assumed by \newglossaryentry is labelled general. Abbreviations defined with \newabbreviation have the category set to abbreviation by default. Abbreviations defined with \newacronym have the category set to acronym by default.
Additionally, if you have enabled \newterm with the index package option that command will set the category to index by default. If you have enabled \glsxtrnewsymbol with the symbols package option, that command will set the category to symbol. If you have enabled \glsxtrnewnumber with the numbers package option, that command will set the category to number.
You can obtain the category label for a given entry using
This is equivalent to commands like \glsentryname and so may be used in an expandable context. No error is generated if the entry doesn’t exist.
You can test the category for a given entry using
This is equivalent to
so any restrictions that apply to \ifglsfieldeq also apply to \glsifcategory.Each category may have a set of attributes. For example, the general and acronym categories have the attribute regular set to “true” to indicate that all entries with either of those categories are regular entries (as opposed to abbreviations). This attribute is accessed by \glsentryfmt to determine whether to use \glsgenentryfmt or \glsxtrgenabbrvfmt.
Other attributes recognised by glossaries-extra are:
This attribute is best used with the discardperiod attribute set to “true”.
With glossaries, commands like \cgls use \cglsformat only if the previous usage count for that entry was equal to 1. With glossaries-extra the test is now for entries that have the entrycount attribute set and where the previous usage count for that entry is less than or equal to the value of that attribute.
An attribute can be set using:
where ⟨category-label⟩ is the category label, ⟨attribute-label⟩ is the attribute label and ⟨value⟩ is the new value for the attribute.
There is a shortcut version to set the regular attribute to “true”:
If you need to lookup the category label for a particular entry, you can use the shortcut command:
This uses \glssetcategoryattribute with \glscategory to set the attribute. Note that this will affect all other entries that share this entry’s category.
You can fetch the value of an attribute for a particular category using:
Again there is a shortcut if you need to lookup the category label for a given entry:
You can test if an attribute has been assigned to a given category using:
This uses etoolbox’s \ifcsvoid and does ⟨true code⟩ if the attribute has been set and isn’t blank and isn’t \relax. The shortcut if you need to lookup the category label from an entry is:
You can test the value of an attribute for a particular category using:
This tests if the attribute (given by ⟨attribute-label⟩) for the category (given by ⟨category-label⟩) is set and equal to ⟨value⟩. If true, ⟨true-part⟩ is done. If the attribute isn’t set or is set but isn’t equal to ⟨value⟩, ⟨false part⟩ is done.
For example:
This does “NO HYPER” if the general category has the nohyper attribute set to true otherwise if does “HYPER”.
With boolean-style attributes like nohyper, make sure you always test for true not false in case the attribute hasn’t been set.
Again there’s a shortcut if you need to lookup the category label from a particular entry:
There’s also a shortcut to determine if a particular category has the regular attribute set:
Alternatively, if you need to lookup the category for a particular entry:
You can iterate through all entries with a given category using:
This iterates through all entries in the glossaries identified by the comma-separated list ⟨glossary-labels⟩ that have the category given by ⟨category-label⟩ and performs ⟨body⟩ for each match. Within ⟨body⟩, you can use ⟨glossary-cs⟩ and ⟨label-cs⟩ (which much be control sequences) to access the current glossary and entry label. If ⟨glossary-labels⟩ is omitted, all glossaries are assumed.
Similarly, you can iterate through all entries that have a category with a given attribute using:
This will do ⟨body⟩ for each entry that has a category with the attribute ⟨attribute-label⟩ set to ⟨attribute-value⟩. The remaining arguments are as the previous command.
You can change the category for a particular entry using the standard glossary field changing commands, such as \glsfielddef. Alternatively, you can use
This will change the category to ⟨category-label⟩ for each entry listed in the comma-separated list ⟨entry-labels⟩. This command uses \glsfieldxdef so it will expand ⟨category-label⟩ and make the change global.
You can also change the category for all entries with a glossary or glossaries using:
where ⟨glossary-labels⟩ is a comma-separated list of glossary labels.
As mentioned in §1.3.3 Entry Counting Modifications, glossaries-extra modifies the \glsenableentrycount command to allow for the entrycount attribute. This means that you not only need to enable entry counting with \glsenableentrycount, but you also need to set the appropriate attribute (see §4 Categories).
You may now use \cgls instead of \gls even if you haven’t enabled entry counting. You will only get a warning if you use \glsenableentrycount without setting the entrycount attribute. (With glossaries, commands like \cgls will generate a warning if \glsenableentrycount hasn’t been used.) The abbreviation shortcut \ab uses \cgls (see §2.3 Shortcut Commands) unlike the acronym shortcut \ac which uses \gls.
All upper case versions (not provided by glossaries) are also available:
and
These are analogous to \cgls and \cglspl but they use
and
which convert the analogous \cglsformat and \cglsplformat to upper case.
[TODO: work out what to do about other commands such as \glsdisp and \glstext.]
If you switch to glossaries-extra you must set the entrycount attribute:
When activated with \glsenableentrycount, commands such as \cgls now use
to determine if the entry trips the entry count trigger. The ⟨trigger code⟩ uses commands like \cglsformat and unsets the first use flag. The ⟨normal code⟩ is the code that would ordinarily be performed by whatever the equivalent command is (for example, \cgls will use \cglsformat in ⟨trigger code⟩ but the usual \gls behaviour in ⟨normal code⟩).
The default definition is:
This means that if an entry is assigned to a category that has the entrycount attribute then the ⟨trigger code⟩ will be used if the previous count value (the number of times the entry was used on the last run) is greater than the value of the attribute.
For example, to trigger normal use if the previous count value is greater than four:
There is a convenient command provided to enable entry counting, set the entrycount attribute and redefine \gls, etc to use \cgls etc:
The first argument ⟨categories⟩ is a comma-separated list of categories. For each category, the entrycount attribute is set to ⟨value⟩. In addition, this does:
This makes it easier to enable entry-counting on existing documents.
If you use \GlsXtrEnableEntryCounting more than once, subsequent uses will just set the entrycount attribute for each listed category.
The above example document can then become:
The standard entry-counting function describe above counts the number of times an entry has been marked as used throughout the document. (The reset commands will reset the total back to zero.) If you prefer to count per sectional-unit, you can use
where ⟨categories⟩ is a comma-separated list of categories to which this feature should be applied, ⟨value⟩ is the trigger value and ⟨counter-name⟩ is the name of the counter used by the sectional unit.
Note that you can’t use both the document-wide counting and the per-unit counting in the same document.
The counter value is used as part of a label, which means that \the⟨counter-name⟩ needs to be expandable. Since hyperref also has a similar requirement and provides \theH⟨counter-name⟩ as an expandable alternative, glossaries-extra will use \theH⟨counter-name⟩ if it exists otherwise it will use \the⟨counter-name⟩.
The per-unit counting function uses two attributes: entrycount (as before) and unitcount (the name of the counter).
Both the original document-wide counting mechanism and the per-unit counting mechanism provide a command that can be used to access the current count value for this run:
and the final value from the previous run:
In the case of the per-unit counting, this is the final value for the current unit. In both commands ⟨label⟩ is the entry’s label.
The per-unit counting mechanism additionally provides:
which gives the sum of all the per-unit totals from the previous run for the entry given by ⟨label⟩, and
which gives the maximum per-unit total from the previous run.
The above two commands are unavailable for the document-wide counting.
Example of per-unit counting, where the unit is the chapter:
In this document, the css entry is used three times in the first chapter. This is more than the trigger value of 2, so \gls{css} is expanded on first use with the short form used on subsequent use, and the css entries in that chapter are added to the glossary. In the second chapter, the css entry is only used once, which trips the suppression trigger, so in that chapter, the long form is used and \gls{css} doesn’t get a line added to the glossary file.
The html is used a total of three times, but the expansion and indexing suppression trigger is tripped in both chapters because the per-unit total (1 for the first chapter and 2 for the second chapter) is less than or equal to the trigger value.
The sample entry has only been used once, but it doesn’t trip the indexing suppression because it’s in the general category, which hasn’t been listed in \GlsXtrEnableEntryUnitCounting.
The per-unit entry counting can be used for other purposes. In the following example document the trigger value is set to zero, which means the index suppression won’t be triggered, but the unit entry count is used to automatically suppress the hyperlink for commands like \gls by modifying the hook
which is used at the end of the macro the determines whether or not to suppress the hyperlink.
This only produces a hyperlink for the first instance of \gls{sample} on each page.
The earlier warning about using the page counter still applies. If the first instance of \gls occurs at the top of the page within a paragraph that started on the previous page, then the count will continue from the previous page.
It’s possible that you may also want a normal index as well as the glossary, and you may want entries to automatically be added to the index (as in this document). There are two attributes that govern this: indexname and dualindex.
The \glsxtrpostnamehook macro, used at the end of \glossentryname and \Glossentryname, checks the indexname attribute for the category associated with that entry. Since \glossentryname is used in the default glossary styles, this makes a convenient way of automatically indexing each entry name at its location in the glossary without fiddling around with the value of the name key.
The internal macro used by the glossaries package to write the information to the external glossary file is modified to check for the dualindex attribute.
In both cases, the indexing is done through
This uses the standard \index command with the sort value taken from the entry’s sort key and the actual value set to \glsentryname{⟨label⟩}. If the value of the attribute given by ⟨attribute-label⟩ is “true”, no encap will be added, otherwise the encap will be the attribute value. For example:
will set the encap to textbf which will display the relevant page number in bold whereas
won’t apply any formatting to the page number in the index.
By default the format key won’t be used with the dualindex attribute. You can allow the format key to override the attribute value by using the preamble-only command:
If you use this command and hyperref has been loaded, then the theindex environment will be modified to redefine \glshypernumber to allow formats that use that command.
The \glsxtrdoautoindexname command will attempt to escape any of \makeindex’s special characters, but there may be special cases where it fails, so take care. This assumes the default makeindex actual, level, quote and encap values (unless any of the commands \actualchar, \levelchar, \quotechar or \encapchar have been defined before glossaries-extra is loaded).
If this isn’t the case, you can use the following preamble-only commands to set the correct characters.
Set the actual character to ⟨char⟩.
Set the level character to ⟨char⟩.
Set the escape (quote) character to ⟨char⟩.
Set the encap character to ⟨char⟩.
The glossaries package advises against defining entries in the document environment. As mentioned in §1.2 New or Modified Package Options above, this ability is disabled by default with glossaries-extra but can be enabled using the docdefs package options.
Although this can be problematic, the glossaries-extra package provides a way of defining and using entries within the document environment without the tricks used with the docdefs option. There are limitations with this approach, so take care with it. This function is disabled by default, but can be enabled using the preamble-only command:
When used, this defines the commands described below.
If an entry with the label ⟨label⟩ has already been defined, this just does \gls[⟨gls-options⟩]{⟨label⟩}. If ⟨label⟩ hasn’t been defined, this will define the entry using:
The second optional argument ⟨dfn-options⟩ should be empty if the entry has already been defined, since it’s too late for them. If it’s not empty, a warning will be generated with
For example, this warning will be generated on the second instance of \glsxtr below:
If you are considering doing something like:
then don’t bother. It’s simpler and less problematic to just define the entries in the preamble with \newglossaryentry and then use \gls in the document.
There are plural and case-changing alternatives to \glsxtr:
This is like \glsxtr but uses \glspl instead of \gls.
This is like \glsxtr but uses \Gls instead of \gls.
This is like \glsxtr but uses \Glspl instead of \gls.
If you use UTF-8 and don’t want the inconvenient of needing to use an ASCII-only label, then it’s better to use XƎLATEX or LuaLATEX instead of LATEX (or pdfLATEX). If you really desperately want to use UTF-8 entry labels without switching to XƎLATEX or LuaLATEX then there is a starred version of \GlsXtrEnableOnTheFly that allows you to use UTF-8 characters in ⟨label⟩, but it’s experimental and may not work in some cases.
The glossaries bundle provides additional support packages glossaries-prefix (for prefixing) and glossaries-accsupp (for accessibility support). These packages aren’t automatically loaded.
If prefixing is required, you can simply load glossaries-prefix after glossaries-extra. For example:
The glossaries-accsupp needs to be loaded before glossaries-extra or through the accsupp package option:
If you don’t load glossaries-accsupp or you load glossaries-accsupp after glossaries-extra the new \glsaccess⟨xxx⟩ commands described below will simply be equivalent to the corresponding \glsentry⟨xxx⟩ commands.
The following \glsaccess⟨xxx⟩ commands add accessibility information wrapped around the corresponding \glsentry⟨xxx⟩ commands. There is no check for existence of the entry nor do any of these commands add formatting, hyperlinks or indexing information.
This displays the value of the name field for the entry identified by ⟨label⟩.
If the glossaries-accsupp package isn’t loaded, this is simply defined as:
otherwise it’s defined as:
(\glsnameaccessdisplay is defined by the glossaries-accsupp package.) The first letter upper case version is:
Without the glossaries-accsupp package this is just defined as:
With the glossaries-accsupp package this is defined as:
The following commands are all defined in an analogous manner.
This displays the value of the text field.
This displays the value of the text field with the first letter converted to upper case.
This displays the value of the plural field.
This displays the value of the plural field with the first letter converted to upper case.
This displays the value of the first field.
This displays the value of the first field with the first letter converted to upper case.
This displays the value of the firstplural field.
This displays the value of the firstplural field with the first letter converted to upper case.
This displays the value of the symbol field.
This displays the value of the symbol field with the first letter converted to upper case.
This displays the value of the symbolplural field.
This displays the value of the symbolplural field with the first letter converted to upper case.
This displays the value of the desc field.
This displays the value of the desc field with the first letter converted to upper case.
This displays the value of the descplural field.
This displays the value of the descplural field with the first letter converted to upper case.
This displays the value of the short field.
This displays the value of the short field with the first letter converted to upper case.
This displays the value of the shortplural field.
This displays the value of the shortplural field with the first letter converted to upper case.
This displays the value of the long field.
This displays the value of the long field with the first letter converted to upper case.
This displays the value of the longplural field.
This displays the value of the longplural field with the first letter converted to upper case.
The following sample files are provided with this package:
There’s only one command provided by glossaries-extra that you’re likely to want to change in your document and that’s \abbreviationsname (§1.2 New or Modified Package Options) if you use the abbreviations package option to automatically create the glossary labelled abbreviations. If this command doesn’t already exist, it will be defined to “Abbreviations” if babel hasn’t been loaded, otherwise it will be defined as \acronymname (provided by glossaries).
You can redefine it in the usual way. For example:
Or using babel or polyglossia captions hook:
Alternatively you can use the title key when you print the list of abbreviations. For example:
or
The other fixed text commands are the diagnostic messages, which shouldn’t appear in the final draft of your document.
The glossaries-extra package has the facility to load language modules if they exist, but won’t warn if they don’t.
If you want to write your own language module, you just need to create a file called glossariesxtr-⟨lang⟩.ldf, where ⟨lang⟩ is the language name (see the tracklang package). For example, glossariesxtr-french.ldf.
The simplest code for this file is:
You can adapt this for other languages by replacing all instances of the language identifier french and the translated text Abr\’eviations as appropriate. This .ldf file then needs to be put somewhere on TEX’s path so that it can be found by glossaries-extra. You might also want to consider uploading it to CTAN so that it can be useful to others. (Please don’t send it to me. I already have more packages than I am able to maintain.)
If you additionally want to provide translations for the diagnostic messages used when a glossary is missing, you need to redefine the following commands:
This produces the following text in English:
This document is incomplete. The external file associated with the glossary ‘⟨label⟩’ (which should be called ⟨file⟩) hasn’t been created.
This produces the following text in English:
This has probably happened because there are no entries defined in this glossary.
This produces the following text in English:
If you don’t want this glossary, add nomain to your package option list when you load glossaries-extra.sty. For example:
This produces the following text in English:
Did you forget to use type=⟨label⟩ when you defined your entries? If you tried to load entries into this glossary with \loadglsentries did you remember to use [⟨label⟩] as the optional argument? If you did, check that the definitions in the file you loaded all had the type set to \glsdefaulttype.
This produces the following text in English:
Check the contents of the file ⟨file⟩. If it’s empty, that means you haven’t indexed any of your entries in this glossary (using commands like \gls or \glsadd) so this list can’t be generated. If the file isn’t empty, the document build process hasn’t been completed.
This produces the following text in English:
You need to either replace \makenoidxglossaries with \makeglossaries or replace \printglossary (or \printglossaries) with \printnoidxglossary (or \printnoidxglossaries) and then rebuild this document.
This produces the following text in English:
The file ⟨file⟩ doesn’t exist. This most likely means you haven’t used \makeglossaries or you have used \nofiles. If this is just a draft version of the document, you can suppress this message using the nomissingglstext package option.
This produces the following text in English:
This message will be removed once the problem has been fixed.
This is advice on how to generate the glossary files. See the documented code (glossaries-extra-code.pdf) for further details.
This is the message produced when the automake option is used, but the document needs a rerun or the shell escape setting doesn’t permit the execution of the external application. This command also generates a warning in the transcript file. See the documented code for further details.
B
babel package 100, 101, 102, 103, 104, 105, 106, 107
C
categories:
abbreviation 108, 109, 110, 111
acronym 112, 113, 114, 115, 116
general 117, 118, 119, 120, 121, 122, 123, 124
index 125, 126
number 127
symbol 128, 129
category attributes:
aposplural 130, 131, 132
discardperiod 133, 134, 135, 136, 137
dualindex 138, 139, 140, 141, 142, 143, 144
entrycount 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155
glossdesc 156, 157, 158
glossname 159, 160
headuc 161, 162, 163
indexname 164, 165, 166, 167, 168
indexonlyfirst 169, 170, 171
insertdots 172, 173
nohyper 174, 175, 176
nohyperfirst 177, 178, 179, 180
noshortplural 181, 182, 183, 184
pluraldiscardperiod 185, 186
regular 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202
retainfirstuseperiod 203
tagging 204, 205, 206, 207
unitcount 208
\cGLS 209
\cGLSformat 210
\cGLSpl 211
\cGLSplformat 212
\CustomAbbreviationFields 213
D
datatool-base package 214
E
entry location 215, 216, 217
etoolbox package 218, 219
F
first use 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270
first use flag 271, 272, 273, 274
first use text 275, 276
fontenc package 277
G
glossaries package 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344
glossaries-accsupp package 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359
glossaries-prefix package 360, 361, 362
\glossariesextrasetup 363
\glsabbrvdefaultfont 364
\glsabbrvfont 365, 366
\Glsaccessdesc 367
\glsaccessdesc 368
\Glsaccessdescplural 369
\glsaccessdescplural 370
\Glsaccessfirst 371
\glsaccessfirst 372
\Glsaccessfirstplural 373
\glsaccessfirstplural 374
\Glsaccesslong 375
\glsaccesslong 376
\Glsaccesslongpl 377
\glsaccesslongpl 378
\Glsaccessname 379
\glsaccessname 380
\Glsaccessplural 381
\glsaccessplural 382
\Glsaccessshort 383
\glsaccessshort 384
\Glsaccessshortpl 385
\glsaccessshortpl 386
\Glsaccesssymbol 387
\glsaccesssymbol 388
\Glsaccesssymbolplural 389
\glsaccesssymbolplural 390
\Glsaccesstext 391
\glsaccesstext 392
\glsacspace 393
\glsacspacemax 394
\glscategory 395
\glscategorylabel 396
\glscurrententrylabel 397
\glsentrycurrcount 398
\glsentryprevcount 399
\glsentryprevmaxcount 400
\glsentryprevtotalcount 401
\glsfirstabbrvdefaultfont 402
\glsfirstabbrvfont 403, 404
\glsfirstlongdefaultfont 405
\glsfirstlongfont 406, 407
\Glsfmtfirst 408
\glsfmtfirst 409
\Glsfmtfirstpl 410
\glsfmtfirstpl 411
\Glsfmtplural 412
\glsfmtplural 413
\Glsfmtshort 414
\glsfmtshort 415
\Glsfmtshortpl 416
\glsfmtshortpl 417
\Glsfmttext 418
\glsfmttext 419
\glsforeachwithattribute 420
\glsgetattribute 421
\glsgetcategoryattribute 422
\glshasattribute 423
\glshascategoryattribute 424
\glsifattribute 425
\glsifcategory 426
\glsifcategoryattribute 427
\glsifregular 428
\glsifregularcategory 429
\glskeylisttok 430
\glslabeltok 431
\glslink options
format 432, 433
hyper 434, 435
noindex 436, 437, 438, 439
\glslinkcheckfirsthyperhook 440
\glslongpltok 441
\glslongtok 442
\glssetattribute 443
\glssetcategoryattribute 444
\glssetregularcategory 445
\glsshortpltok 446
\glsshorttok 447
\Glsxtr 448
\glsxtr 449
\glsxtraddallcrossrefs 450
\glsxtrdoautoindexname 451
\glsxtrdowrglossaryhook 452
\GlsXtrEnableEntryCounting 453
\GlsXtrEnableEntryUnitCounting 454
\GlsXtrEnableIndexFormatOverride 455
\GlsXtrEnableInitialTagging 456
\GlsXtrEnableOnTheFly 457
\GLSxtrfull 458
\Glsxtrfull 459
\glsxtrfull 460
\Glsxtrfullformat 461
\glsxtrfullformat 462
\GLSxtrfullpl 463
\Glsxtrfullpl 464
\glsxtrfullpl 465
\Glsxtrfullplformat 466
\glsxtrfullplformat 467
\glsxtrfullsep 468
\glsxtrifcounttrigger 469
\glsxtrifwasfirstuse 470
\Glsxtrinlinefullformat 471
\glsxtrinlinefullformat 472
\Glsxtrinlinefullplformat 473
\glsxtrinlinefullplformat 474
\Glsxtrlong 475, 476
\glsxtrlong 477
\GLSxtrlongpl 478
\Glsxtrlongpl 479
\glsxtrlongpl 480
\glsxtrnewnumber 481
\glsxtrnewsymbol 482
\GlsXtrNoGlsWarningAutoMake 483
\GlsXtrNoGlsWarningBuildInfo 484
\GlsXtrNoGlsWarningCheckFile 485
\GlsXtrNoGlsWarningEmptyMain 486
\GlsXtrNoGlsWarningEmptyNotMain 487
\GlsXtrNoGlsWarningEmptyStart 488
\GlsXtrNoGlsWarningHead 489
\GlsXtrNoGlsWarningMisMatch 490
\GlsXtrNoGlsWarningNoOut 491
\GlsXtrNoGlsWarningTail 492
\Glsxtrpl 493
\glsxtrpl 494
\glsxtrpostdescription 495
\glsxtrpostlink 496
\glsxtrpostlinkAddDescOnFirstUse 497
\glsxtrpostlinkAddSymbolOnFirstUse 498
\glsxtrpostlinkendsentence 499
\glsxtrpostlinkhook 500
\glsxtrpostnamehook 501
\GlsXtrPostNewAbbreviation 502
\glsxtrRevertMarks 503
\glsxtrscfont 504
\glsxtrscsuffix 505
\GlsXtrSetActualChar 506
\GlsXtrSetAltModifier 507
\glsxtrsetcategory 508
\glsxtrsetcategoryforall 509
\GlsXtrSetDefaultGlsOpts 510
\GlsXtrSetEncapChar 511
\GlsXtrSetEscChar 512
\GlsXtrSetLevelChar 513
\Glsxtrshort 514, 515
\glsxtrshort 516
\GLSxtrshortpl 517
\Glsxtrshortpl 518
\glsxtrshortpl 519
\glsxtrsmfont 520
\glsxtrsmsuffix 521
\glsxtrtagfont 522
\GlsXtrUseAbbrStyleFmts 523
\GlsXtrUseAbbrStyleSetup 524
\GlsXtrWarning 525
H
hyperref package 526, 527, 528, 529, 530, 531, 532, 533, 534, 535
L
link-text 536, 537, 538, 539, 540, 541, 542, 543, 544, 545, 546, 547, 548, 549, 550
location list 551, 552
M
makeglossaries 553, 554, 555, 556
makeindex 557, 558, 559, 560, 561, 562, 563
memoir class 564
mfirstuc package 565, 566
N
\newabbreviation 567
\newabbreviationstyle 568
\newglossaryentry options
category 569, 570, 571, 572
desc 573, 574
descplural 575, 576
description 577, 578, 579, 580, 581, 582, 583, 584, 585, 586, 587, 588
first 589, 590, 591, 592, 593, 594, 595, 596, 597, 598
firstplural 599, 600, 601, 602, 603, 604
long 605, 606, 607, 608
longplural 609, 610, 611, 612
name 613, 614, 615, 616, 617, 618, 619, 620, 621, 622, 623, 624, 625, 626, 627, 628, 629, 630, 631, 632
plural 633, 634, 635, 636
see 637, 638, 639, 640, 641, 642, 643, 644
short 645, 646, 647, 648, 649, 650, 651, 652, 653
shortplural 654, 655, 656, 657, 658, 659, 660, 661, 662, 663
sort 664, 665, 666
symbol 667, 668
symbolplural 669, 670
text 671, 672, 673, 674, 675, 676, 677, 678
number list 679, 680, 681
P
package options:
abbreviations 682, 683, 684, 685, 686
accsupp 687, 688, 689
acronym 690
acronymlists 691
automake 692
docdef 693
true 694
docdefs 695, 696
index 697, 698
indexcrossrefs 699, 700, 701
indexonlyfirst 702, 703, 704, 705
nomain 706
nomissingglstext 707
nonumberlist 708
nopostdot 709
false 710, 711
true 712
noredefwarn
false 713
true 714
numbers 715, 716, 717
shortcuts 718, 719
abbr 720, 721
abbreviation 722
abbreviations 723
acro 724
acronyms 725
all 726
false 727
none 728
other 729
true 730
symbols 731, 732, 733
toc
false 734
true 735
translate
babel 736
true 737
undefaction 738, 739
error 740
warn 741
page (counter) 742, 743
polyglossia package 744
\printabbreviations 745
\printglossary options
title 746
R
relsize package 747
\RestoreAcronyms 748, 749
S
\setabbreviationstyle 750
slantsc package 751
T
textcase package 752
tracklang package 753, 754
translator package 755
X
xfor package 756
xindy 757, 758, 759, 760
xkeyval package 761