summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/glossaries-extra
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/glossaries-extra
Initial commit
Diffstat (limited to 'macros/latex/contrib/glossaries-extra')
-rw-r--r--macros/latex/contrib/glossaries-extra/CHANGES1044
-rw-r--r--macros/latex/contrib/glossaries-extra/README28
-rw-r--r--macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdfbin0 -> 898453 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html29815
-rw-r--r--macros/latex/contrib/glossaries-extra/glossaries-extra-manual.pdfbin0 -> 787643 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/glossaries-extra-manual.tex12125
-rw-r--r--macros/latex/contrib/glossaries-extra/glossaries-extra.dtx33306
-rw-r--r--macros/latex/contrib/glossaries-extra/glossaries-extra.ins57
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdfbin0 -> 512876 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.tex430
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdfbin0 -> 44761 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-abbrv.tex36
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdfbin0 -> 82623 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-accsupp.tex124
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdfbin0 -> 50368 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.tex43
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdfbin0 -> 36745 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-acronym.tex30
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-alias.pdfbin0 -> 43875 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-alias.tex48
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdfbin0 -> 35308 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.tex32
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdfbin0 -> 91061 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.tex100
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdfbin0 -> 69498 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.tex60
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdfbin0 -> 54848 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-alttree.tex23
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdfbin0 -> 141700 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.tex129
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdfbin0 -> 161138 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-autoindex.tex127
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdfbin0 -> 41294 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-crossref.tex22
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdfbin0 -> 41613 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-crossref2.tex32
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdfbin0 -> 45257 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-docdef.tex28
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdfbin0 -> 54623 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-entrycount.tex44
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-external.pdfbin0 -> 34187 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-external.tex38
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdfbin0 -> 75268 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-fmt.tex58
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdfbin0 -> 63232 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-footnote.tex30
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-header.pdfbin0 -> 125912 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-header.tex73
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdfbin0 -> 42722 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-indexhook.tex42
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdfbin0 -> 81618 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-initialisms.tex70
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdfbin0 -> 38234 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-linkcount.tex44
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdfbin0 -> 57823 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.tex25
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdfbin0 -> 45154 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.tex35
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdfbin0 -> 159578 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-mixture.tex344
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdfbin0 -> 202110 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-name-font.tex355
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-nested.pdfbin0 -> 67736 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-nested.tex46
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdfbin0 -> 47582 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.tex33
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdfbin0 -> 44455 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-onelink.tex49
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdfbin0 -> 106071 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.tex60
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdfbin0 -> 19859 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.tex55
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdfbin0 -> 43481 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-onthefly.tex50
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-pages.pdfbin0 -> 38801 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-pages.tex34
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdfbin0 -> 37059 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-postdot.tex47
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdfbin0 -> 67890 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-postlink.tex76
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdfbin0 -> 33119 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-prefix.tex24
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdfbin0 -> 71315 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.tex74
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-record.pdfbin0 -> 50230 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-record.tex51
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdfbin0 -> 47895 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.tex33
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdfbin0 -> 34944 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.tex29
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdfbin0 -> 46402 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.tex30
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdfbin0 -> 31607 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.tex18
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdfbin0 -> 13423 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-suppl.tex14
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-trans.pdfbin0 -> 49455 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-trans.tex54
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-undef.pdfbin0 -> 33231 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-undef.tex21
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdfbin0 -> 61051 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.tex90
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample.pdfbin0 -> 45747 bytes
-rw-r--r--macros/latex/contrib/glossaries-extra/samples/sample.tex26
104 files changed, 79711 insertions, 0 deletions
diff --git a/macros/latex/contrib/glossaries-extra/CHANGES b/macros/latex/contrib/glossaries-extra/CHANGES
new file mode 100644
index 0000000000..922ea958be
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/CHANGES
@@ -0,0 +1,1044 @@
+1.41 (2019-04-09):
+
+ * glossary-topic.sty:
+
+ - added command \glstopicSubPreLocSep and moved \space
+ from \glstopicSubLoc to \glstopicSubPreLocSep
+
+ - added check for description in \glstopicSubItem
+
+ - moved \par from \glstopicSubItem to \glstopicAssignSubIndent
+
+ * glossaries-extra-stylemods.sty:
+
+ - added \glstreePreHeader
+
+ - added check for description in \glsxtralttreeSymbolDescLocation
+
+ - added \glstreeDescLoc and \glstreeChildDescLoc
+
+ - \glsxtralttreeSymbolDescLocation now checks if the description
+ field is set
+
+ - added \glslistgroupskip
+
+1.40 (2019-03-31):
+
+ * glossaries-extra.sty:
+
+ - corrected formatting for abbreviation
+ style 'long-hyphen-noshort-noreg'
+
+ - changed definition of \glsfirstabbrvdefaultfont to use
+ \glsabbrvdefaultfont instead of \glsabbrvfont for
+ consistency
+
+ - new: \GlsXtrDefaultResourceOptions
+
+ * glossaries-extra-bib2gls.sty:
+
+ - new commands provided if associated glossary has been defined:
+ \printunsrtabbreviations
+ \printunsrtsymbols
+ \printunsrtnumbers
+ \printunsrtacronyms
+ \printunsrtindex
+
+ * glossary-topic.sty:
+
+ - new package providing glossary styles 'topic' and 'topicmcols'
+
+1.39 (2018-03-22)
+
+ * glossaries-extra.sty:
+
+ - Added example-glossaries-symbolnames.bib
+ (corresponds to sample example-glossaries-symbolnames.tex
+ file provided by glossaries.sty)
+
+ - Added starred versions of:
+
+ \GlsXtrIfFieldEqStr
+ \GlsXtrIfFieldEqXpStr
+ \GlsXtrIfXpFieldEqXpStr
+ \GlsXtrIfFieldCmpNum
+ \GlsXtrIfFieldEqNum
+ \GlsXtrIfFieldNonZero
+
+ - New command: \glsxtrentryparentname
+
+ - New command: \glsxtrsetglossarylabel and 'label' key
+ for 'printgloss' family.
+
+ - bug fix: added protection against fragile/non-expandable
+ commands in location within \@glsxtr@dorecord
+
+ - bug fix: corrected short-nolong-desc, short-sc-nolong-desc,
+ short-sm-nolong-desc, short-em-desc (and their synonyms)
+ to behave as advertised in the manual. (That is,
+ name={short (long)} and description key must be supplied.)
+
+ * glossary-bookindex.sty:
+
+ - added: \glsxtrbookindexlocation, \glsxtrbookindexsublocation
+
+1.38 (2018-12-01)
+
+ * glossary-longextra.sty
+
+ - bug fix: \glslongextraNameFmt
+
+1.37 (2018-11-30)
+
+ * glossaries-extra.sty
+
+ - added record=nameref option
+
+ - added equations and floats options
+
+ - added \glsxtrhiername, \Glsxtrhiername, \GlsXtrhiername,
+ \GLSxtrhiername, \GLSXTRhiername and \glsxtrhiernamesep
+
+ - added \GlsXtrStandaloneEntryName and \GlsXtrStandaloneEntryOther
+
+ - added \GlsXtrLocationField
+
+ - added \GlsXtrAutoAddOnFormat
+
+ - added \glsxtridentifyglslike
+
+ - added \GLSxtrusefield
+
+ - bug fix: corrected \Glsxtrusefield
+
+ * glossaries-extra-bib2gls.sty
+
+ - added \glsxtrdisplaylocnameref, \glsxtrfmtinternalnameref
+ and \glsxtrfmtexternalnameref
+
+ - added \glsxtrSetWidest and \glsxtrSetWidestFallback
+
+ - added \glsxtraddlabelprefix, \glsxtrprependlabelprefix,
+ \glsxtrclearlabelprefixes, \glsxtrifinlabelprefixlist,
+ \dgls, \dglspl, \dGls, \dGlspl, \dGLS, \dGLSpl,
+ \dglslink, \dglsdisp
+
+ - added \glsrenewcommand
+
+ * glossary-longextra.sty
+
+ - new package providing additional longtable glossary styles
+
+1.36 (2018-08-18)
+
+ * glossaries-extra-bib2gls.sty
+
+ - added \glsxtrdisplaysupploc and \glsxtrmultisupplocation for use
+ with bib2gls version 1.7+.
+
+ * glossaries-extra.sty
+
+ - added \glsxtrautoindexesc
+
+1.35 (2018-08-13)
+
+ * fixed bug in \glslink
+
+1.34 (2018-07-29):
+
+ * glossaries-extra.sty
+
+ - added package option docdef=atom (behaves like docdef=restricted
+ but creates the .glsdefs file for atom's autocomplete support).
+
+ - added \GlsXtrIfUnusedOrUndefined
+
+1.33 (2018-07-26):
+
+ * glossaries-extra.sty:
+
+ - bug fix: added check for existence in \ifglsused
+
+1.32 (2018-05-24):
+
+ * glossaries-extra.sty:
+
+ - added \GlsXtrForeignText, \GlsXtrForeignTextField
+ and \GlsXtrUnknownDialectWarning
+
+1.31 (2018-05-09):
+
+ * glossaries-extra.sty:
+
+ - added \glsdefpostlink, \glsdefpostname, \glsdefpostdesc
+
+ - added \glsxtrpostlinkAddSymbolDescOnFirstUse
+
+ - added \glslocalreseteach and \glslocalunseteach
+
+ - added \glsaddeach
+
+ - added \GlsXtrIfFieldEqXpStr, \GlsXtrIfXpFieldEqXpStr
+ \GlsXtrIfFieldNonZero, \GlsXtrIfFieldEqNum and
+ \GlsXtrIfFieldCmpNum
+
+ - added \GlsXtrForUnsetBufferedList
+
+ - added starred version \GlsXtrStartUnsetBuffering*
+
+ - added prefix key to the glslink and printgloss families
+
+ - added support for accessibility attributes:
+ accessinsertdots, accessaposplural, accessnoshortplural,
+ nameshortaccess, firstshortaccess, textshortaccess
+
+ - added \GlsXtrStandaloneGlossaryType and
+ \GlsXtrStandaloneSubEntryItem
+
+ - added \glsxtrRevertTocMarks
+
+ - added warning if \printglossary is used with record=only
+
+ - bug fix: corrected targetnameprefix
+
+ * glossaries-extra-bib2gls.sty:
+
+ - added \glscapturedgroup
+
+ - added \GlsXtrIfHasNonZeroChildCount
+
+ * glossaries-extra-stylemods.sty:
+
+ - added:
+
+ \glstreedefaultnamefmt
+ \glstreenonamedesc
+ \glstreenonamesymbol
+ \glstreenonamechilddesc
+ \glstreedesc
+ \glstreesymbol
+ \glstreechilddesc
+ \glstreechildsymbol
+ \glslistdesc
+
+1.30 (2018-04-25):
+
+ * glossaries-extra.sty:
+
+ - added \glsuserdescription (now used by long-short-user
+ and short-long-user abbreviation styles)
+
+ - added \glsaddpresetkeys and \glsaddpostsetkeys
+
+ - added \GlsXtrStartUnsetBuffering and
+ \GlsXtrStopUnsetBuffering
+
+ - added \GlsXtrExpandedFmt
+
+ - added \glsxtrabbreviationfont
+
+ - added textformat key for commands like \glslink, \gls etc
+
+ - bug fix: added \@glsxtr@record to \glsxtrfull,
+ \glsxtrshort, \glsxtrlong and variants
+
+ - bug fix: added check for counter=wrglossary
+ in \glsxtr@inc@wrglossaryctr
+
+ * glossaries-extra-bib2gls.sty:
+
+ - new commands:
+
+ \GlsXtrDualField
+ \GlsXtrDualBackLink
+
+1.29 (2018-04-09):
+
+ * glossaries-extra-bib2gls.sty:
+
+ - new commands:
+
+ \GlsXtrBibTeXEntryAliases
+ \GlsXtrProvideBibTeXFields
+ \glsxtr@wrglossarylocation
+ \GlsXtrIndexCounterLink
+
+ * glossaries-extra.sty:
+
+ - added package option 'indexcounter'
+
+ - bug fix: \glsxtrfieldforlistloop (corrected argument order)
+
+ - added check for \gls@begindocdefs
+
+ - added expansion in \@gls@removespaces
+
+1.28 (2018-03-06):
+
+ * glossaries-extra.sty:
+
+ - bug fix: \glsxtrsetgrouptitle and \glsxtrlocalsetgrouptitle
+ changed \csxdef/\csedef to \protected@csxdef and
+ \protected@csedef, respectively
+
+ - \glsxtredeffield now uses \protected@csedef instead
+ of \csedef
+
+1.27 (2018-02-26):
+
+ * added supplementary package glossaries-extra-bib2gls.sty
+ (automatically loaded by the record=only package option)
+
+1.26 (2018-01-05):
+
+ * glossaries-extra.sty:
+
+ - added \GlsXtrEnableLinkCounting and associated commands.
+
+ - added \glslinkpresetkeys
+
+1.25 (2017-11-24)
+
+ * glossaries-extra.sty:
+
+ - added: \glsxtronlyname, \glsxtrlongshortname,
+ \glsxtrshortlongname, \glsxtrfootnotename,
+ \glsxtrshortnolongname, \glsxtrlongnoshortdescname,
+ \glsxtrlongnoshortname, \glsxtrlongshortuserdescname,
+ \glsxtrshortlonguserdescname
+
+ - added \glsextrapostnamehook
+
+ - \glsxtrpostlinkAddDescOnFirstUse and
+ \glsxtrpostlinkAddSymbolOnFirstUse now use \glsxtrparen instead
+ of hard-coded parentheses.
+
+ * glossary-bookindex.sty:
+
+ - added \glsxtrbookindexmulticolsenv
+
+1.24 (2017-11-14):
+
+ * glossaries-extra-manual.tex:
+
+ - corrected syntax of \glsxtrifhasfield and \GlsXtrIfFieldEqStr
+ (first argument is field, second is entry label)
+
+ * glossaries-extra.sty:
+
+ - added \glsxtrforcsvfield
+
+ - added \glsxtrlocalsetgrouptitle
+
+ - bug fix (\glsadd breaks with sort=use)
+
+1.23 (2017-11-12):
+
+ * glossaries-extra.sty:
+
+ - added \glsxtrrestorepostpunc
+
+ - added \GlsXtrIfFieldUndef
+
+ - added \glsxtrifcustomdiscardperiod
+
+ - added starred form of \glsxtrfmt
+
+ - bug fix: added missing label in \@glsxtrentryfmt
+
+ - fixed shortcuts=all / true option
+ (\newabbr now defined with \providecommand)
+
+ * glossaries-extra-stylemods.sty:
+
+ - added \glsupdatewidest, \gglsupdatewidest, \eglsupdatewidest
+ and \xglsupdatewidest
+
+1.22 (2017-11-08):
+
+ * glossaries-extra.sty:
+
+ - \glsseeitemformat: added check for short field
+
+ - added \glossentrynameother and \glsxtrglossentryother
+
+ - added \glsxtrnopostpunc and \glsxtractivatenopost
+
+ * glossary-bookindex.sty:
+
+ - removed \ifglsnopostdot check from \glsxtrbookindexprelocation
+ (inappropriate as bookindex style doesn't display the
+ description)
+
+1.21 (2017-11-03):
+
+ * glossaries-extra.sty:
+
+ - fixed shortcuts=ac and shortcuts=none settings
+
+ - new package option postpunc
+
+ - added extra debug settings (debug=showwrgloss and debug=all)
+
+ - modified \glsseeitemformat
+
+ - new commands: \glsuseabbrvfont and \glsuselongfont
+
+ - new command \glsxtrglossentry
+
+ - new commands: \ifglsxtr@hyperoutside and
+ \glsxtrinithyperoutside and associated key hyperoutside
+ and category attribute hyperoutside.
+
+ - new attribute textformat
+
+ - patched \glsnavhyperlink
+
+ - \glsenablehyper and \glsdisablehyper now use \def rather
+ than \let to allow for redefinitions of \glsdohyperlink etc
+
+ - added \@glsxtr@checkgroup (letter group check is now
+ in \@print@unsrt@glossary during the construction of
+ \@glsxtr@doglossary to avoid complications caused
+ by the tabular-like styles)
+
+ - added \glshex, \glsxtrresourceinit
+
+ - added \GlsXtrTotalRecordCount, \GlsXtrRecordCount,
+ \GlsXtrLocationRecordCount, \glsxtrdetoklocation,
+ \glsxtrenablerecordcount, \glsxtrrecordtriggervalue,
+ \GlsXtrSetRecordCountAttribute, \glsxtrifrecordtrigger
+
+ - added \rgls, \rglspl, \rGls, \rGlspl, \rGLS, \rGLSpl,
+ \rglsformat, \rglsplformat, \rGlsformat, \rGlsplformat,
+ \rGLSformat, \rGLSplformat
+
+ - added \glsxtrnewgls, \glsxtrnewglslike, \glsxtrnewrgls,
+ \glsxtrnewrglslike
+
+ - added \printunsrtglossaryentryprocesshook,
+ \printunsrtglossaryskipentry,
+ \printunsrtglossarypredoglossary,
+ \glsxtriflabelinlist
+
+ - added \GlsXtrIfFieldEqStr
+
+ - new abbreviation styles: nolong-short, nolong-short-noreg,
+ nolong-short-sm, nolong-short-sc
+
+ * glossary-bookindex.sty: new
+
+ * glossaries-extra-stylemods.sty:
+
+ - added package option "all"
+
+ - added \glsxtrprelocation
+
+ - added \glstreeprelocation and \glstreechildprelocation
+
+ - added \glslistprelocation, \glslistchildprelocation,
+ and \glslistchildpostlocation
+
+ - patched indexgroup, indexhypergroup, treegroup,
+ treehypergroup, treenonamegroup, treenonamehypergroup,
+ alttreegroup, alttreehypergroup, mcolindexgroup,
+ mcolindexhypergroup, mcolindexspannav, mcoltreegroup,
+ mcoltreehypergroup, mcoltreespannav, mcoltreenonamegroup,
+ mcoltreenonamehypergroup, mcoltreenonamespannav,
+ mcolalttreegroup, mcolalttreehypergroup, mcolalttreespannav,
+ listgroup, listhypergroup, altlistgroup, altlisthypergroup
+ styles to discourage page breaks after
+ letter group headings.
+
+ - added \gglssetwidest
+
+ - ensured that all tabular-like styles have the
+ \ifglsnogroupskip moved outside of the definition
+ of \glsgroupskip
+
+1.20 (2017-09-11):
+
+ * New 'printgloss' key targetnameprefix
+
+ * Corrected .ins to remove default preamble and postamble
+ from .bib files
+
+1.19 (2017-09-08):
+
+ * New command: \GlsXtrSetDefaultNumberFormat
+
+ * New command: \glsxtrhyperlink
+
+ * New command: \glsxtrifhasfield
+
+ * Added thevalue and theHvalue keys to \glslink etc
+
+ * Bug fixes for record=only and record=alsoindex options
+
+ * Added example .bib files for use with bib2gls
+
+1.18 (2017-08-10):
+
+ * Fixed bug caused by missing argument of 'stylemods'.
+
+1.17 (2017-08-09):
+
+ * Added \glsxtrword, \glsxtrwordsep and check for 'markwords'
+ and 'markshortwords' category attributes.
+
+ * New abbreviation styles:
+
+ - short-nolong-noreg
+ - short-nolong-desc-noreg
+ - long-noshort-desc-noreg
+ - long-noshort-noreg
+ - long-em-noshort-em-noreg
+ - long-em-noshort-em-desc-noreg
+ - long-only-short-only
+ - long-only-short-only-desc
+
+ designed to work with 'markwords' attribute:
+ - long-hyphen-short-hyphen
+ - long-hyphen-short-hyphen-desc
+ - long-hyphen-noshort-desc-noreg
+ - long-hyphen-postshort-hyphen
+ - long-hyphen-postshort-hyphen-desc
+ - short-hyphen-long-hyphen
+ - short-hyphen-long-hyphen-desc
+ - short-hyphen-postlong-hyphen
+ - short-hyphen-postlong-hyphen-desc
+
+ * New sample document sample-abbr-styles.tex that illustrates all
+ available abbreviation styles.
+
+ * Fixed some inconsistencies in the predefined abbreviation styles.
+
+ * Added extra value 'ac' to package option 'shortcuts'
+
+ * Added \ifglsxtrinsertinside check for subsequent use.
+
+ * Added \glsxtrparen, \glsxtrsubsequentfmt and sundry other helper
+ commands related to abbreviation styles.
+
+1.16 (2017-06-15):
+
+ * New key: seealso
+
+ * New commands: \glsxtrseealsolabels, \glsxtrseelist,
+ \glsxtrindexseealso, \glsxtruseseealso,
+ \glsxtrautoindexentry, \glsxtrautoindexassignsort,
+ \glsxtrautoindex
+
+ * New package option: autoseeindex
+ (autoseeindex=false requires at least glossaries v4.30)
+
+ * Added xindy "seealso" cross-reference class to work with
+ \glsxtrindexseealso (requires at least glossaries v4.30,
+ otherwise behaves like \glssee).
+
+ * Added example-glossaries-xr.tex which contains dummy entries
+ with cross-references for use in test documents.
+
+ * Fixed bug in \@gls@noidx@getgrouptitle
+
+ * Fixed bug in \@print@unsrt@glossary
+
+1.15 (2017-05-10):
+
+ * Fixed typo in command name (\glsabbvfont -> \glsabbrvfont)
+
+ * Deferred location expansion in \@glsxtr@dorecord
+
+1.14 (2017-04-18):
+
+ * New keys for \glsadd: thevalue and theHvalue
+
+ * New key 'wrgloss' for \gls, \glstext etc and associated
+ commands:
+ \glsxtrinitwrgloss
+ \ifglsxtrinitwrglossbefore
+ \glsxtrinitwrglossbeforetrue
+ \glsxtrinitwrglossbeforefalse
+
+ * New command: \glsxtrlocationhyperlink
+
+ * New attribute checks: externallocation, wrgloss
+
+ * Bug fix: "incorrect alias target name when using \glshyperlink
+ (and therefore also \glsseeformat)"
+ http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=120
+
+ * Bug fix: corrected assignment of \cGls in \glsenableentrycount
+ and \glsenableentryunitcount
+
+1.13 (2017-02-07):
+
+ * Fixed bug in \glsdisp that caused an infinite loop.
+
+ * Switched to \providecommand for \glsxtrsetaliasnoindex
+
+1.12 (2017-02-03):
+
+ * \longnewglossaryentry now has a starred version that
+ doesn't suppress the post-description hook. The unstarred
+ version now inserts \glsxtrpostlongdescription at the end
+ of the description instead of the hard-coded
+ \leavevmode\unskip\nopostdesc
+
+ * Added option 'postdot' (shortcut for 'nopostdot=false')
+
+ * Added 'alias' key to \newglossaryentry and associated command
+ \glsxtralias
+
+ * \printunsrtglossary now has a starred version.
+
+ * New commands:
+
+ \apptoglossarypreamble
+ \pretoglossarypreamble
+ \glsxtrprovidestoragekey
+ \glsxtrfielduse
+ \glsxtrifkeydefined
+ \glsxtrfieldlistadd
+ \glsxtrfieldlistgadd
+ \glsxtrfieldlisteadd
+ \glsxtrfieldlistxadd
+ \glsxtrfielddolistloop
+ \glsxtrfieldforlistloop
+ \glsxtrfieldifinlist
+ \glsxtrfieldxifinlist
+ \glsxtrdisplaysingleloc
+ \glsxtrdisplaystartloc
+ \glsxtrdisplayendloc
+ \glsxtrdisplayendlochook
+ \glsxtrlocrangefmt
+ \GlsXtrSetField
+ \gGlsXtrSetField
+ \eGlsXtrSetField
+ \xGlsXtrSetField
+ \GlsXtrLetField
+ \csGlsXtrLetField
+ \GlsXtrLetFieldToField
+ \glsxtrdeffield
+ \glsxtredeffield
+ \glsxtrsetfieldifexists
+ \GlsXtrRecordCounter
+ \printunsrtglossaryunit
+ \printunsrtglossaryunitsetup
+ \glsxtrcopytoglossary
+ \provideignoredglossary
+ \glsxtrabbrvpluralsuffix
+ \glsxtrfmt
+ \glsxtrentryfmt
+ \GlsXtrFmtField
+ \GlsXtrFmtDefaultOptions
+
+ * Added existence checks to \newignoredglossary
+
+ * Modified \glsnoidxdisplayloc to check for range formations.
+
+ * The record=only package option automatically implements
+ indexcrossref=false
+
+ * \glsxtrresourcefile sets the category code of @ to letter
+ to allow internal commands within the location field.
+
+ * \GlsXtrLoadResources can now be used multiple times. After
+ the first instance "\jobname-<n>" is used as the argument
+ to \glsxtrresourcefile.
+
+ * New abbreviation styles:
+
+ long-postshort-user
+ long-postshort-user-desc
+ short-postlong-user
+ short-postlong-user-desc
+
+1.11 (2017-01-19):
+
+ * \glsxtrresourcefile now enforces the file extension .glstex
+ (This change is a security feature so there's no backward
+ compatibility. If you have used this command from v1.08
+ you'll have to change the file name extension to continue
+ using it. Alternatively use \input or \loadglsentries instead.)
+
+ * Extra information written to aux file by \glsxtrresourcefile
+
+ * Added \GlsXtrLoadResources
+
+ * New command: \glsxtrpageref (like glossary.sty's \glsrefentry
+ but uses \pageref instead of \ref).
+
+ * Added starred version of \newignoredglossary
+
+ * Added support for attributes: targeturl, targetcategory
+ and targetname.
+
+1.10 (2016-12-17):
+
+ * Fixed bug causing \GLS to behave like \GLSpl
+ http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view;key=117
+
+1.09 (2016-12-16):
+
+ * Fixed bug when using the optional argument of \makeglossaries
+
+1.08 (2016-12-13):
+
+ * Added record option
+
+ * New commands:
+
+ - \glsxtrresourcefile
+ - \printunsrtglossary
+ - \printunsrtglossaries
+
+ * Fixed bug that occurs with undefaction=warn and an
+ undefined \glslabel in the post-link hook
+
+1.07 (2016-08-15):
+
+ * New commands \glsxtrp etc.
+
+ * New command \glsxtrabbrvfootnote used by the footnote
+ abbreviation styles (instead of hard-coding \footnote
+ into the style).
+
+ * Fixed bug in footnote styles that used \glsfirstlongfont
+ instead of \glsfirstlongfootnotefont.
+
+ * Fixed "first" and "firstplural" keys in the postfootnote
+ style (was causing repeated footnotes).
+
+ * Fixed "text" key in the long-short-desc and short-long-desc
+ abbreviation styles, and fixed misspelling of \glsabbrvfont
+ in the "plural" key.
+
+ * Fixed \glsfirst, \Glsfirst and \GLSfirst to ensure they
+ honour the nohyperfirst attribute.
+
+ * Fixed bug in \RestoreAcronyms
+ www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=113
+
+1.06 (2016-06-18):
+
+ * Added docdefs=restricted (don't use .glsdefs file, document
+ definitions allowed provided they come before the glossary
+ in which they belong is displayed)
+
+ * New command \glsxtrusesee
+
+1.05 (2016-06-10):
+
+ * Added \glsfirstlongfootnotefont and \glslongfootnotefont
+ (Bug fix http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=110)
+
+ * Bug fix in short-em-long style (corrected long form font command)
+
+ * glossaries-extra-stylemods.sty: provided supplementary
+ alttree commands.
+
+1.04 (2016-05-02):
+
+ * Added \GlsXtrEnablePreLocationTag
+
+ * Added check for category \glsxtrpostname... in
+ \glxstrpostnamehook
+
+ * Added new abbreviation styles:
+ - long-short-user
+ - long-short-user-desc
+ - short-long-user
+ - short-long-user-desc
+ and their accompanying commands \glsxtruserfield,
+ \glsxtruserparen, \glsabbrvuserfont and \glsxtrusersuffix.
+
+ * Added new abbreviation styles:
+ - long-em-short-em
+ - long-em-short-em-desc
+ - short-em-long-em
+ - short-em-long-em-desc
+ and their accompanying commands \glsabbrvemfont and
+ \glsfirstlongemfont
+
+ * Fixed sort in long-short-desc abbreviation style.
+
+ * Reorganised naming scheme of abbreviation styles.
+ (Backward-compatible synonyms provided.)
+
+ * Added \glsxtrregularfont
+
+ * Added \glslongfont and \glslongdefaultfont
+
+ * Added glossdescfont and glossnamefont attribute checks in
+ \glossentryname, \Glossentryname and \glossentrydesc
+
+ * Tidied up accessibility support
+
+ * Modified \glstext, \glsfirst, \glsplural, \glsfirstplural
+ (and case-changing variants) to set the abbreviation style
+ if required.
+
+1.03 (2016-04-27):
+
+ * Fixed bug in \glsxtrtitleshortpl
+ (www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=107)
+
+ * Fixed bugs in \glsplural, \Glsplural, \GLSplural,
+ \Glsfirstplural, \GLSfirstplural, \glsxtrtitlelongpl
+
+1.02 (2016-04-25):
+
+ * Added \ifglsxtrinsertinside
+
+ * Added \glsfmtlong, \glsfmtlongpl, \Glsfmtlong, \Glsfmtlongpl,
+ \glsfmtfull, \glsfmtfullpl, \Glsfmtfull, \Glsfmtfullpl
+
+ * Added package glossaries-extra-stylemods.sty
+
+1.01 (2016-02-02):
+
+ * Added retainfirstuseperiod attribute
+
+ * bug fix for "short-desc" style:
+ fixed typo in \glsxtrinlinefullformat
+ and added missing second argument
+
+1.0 (2016-01-24 First stable release):
+
+ * indexcrossrefs is now initially set to false but will
+ be automatically switched on if the "see" key is used.
+
+0.5.4 (2015-12-15):
+
+ * Modified \glsdohyperlink and \glsdonohyperlink to ameliorate
+ the problems resulted from nested link-text.
+
+ * Added per unit entry counting.
+
+ * Modified \cglsformat etc to check for the regular attribute.
+
+ * Added \GlsXtrEnableOnTheFly
+
+ * Added \GlsXtrSetAltModifier and \GlsXtrSetDefaultGlsOpts
+
+ * Added \glsxtrprotectlinks to deal with nested \gls etc.
+
+ * Added \glsxtrpostunset, \glsxtrpostlocalunset,
+ \glsxtrpostreset and \gslxtrpostlocalreset
+
+ * Added checks for entry's existence in shortcut tests
+ \glshasattribute and \glsifattribute and in
+ \glspostlinkhook
+
+ * Added \glsxtrdowrglossaryhook
+
+ * Added package option indexcrossrefs
+
+ * Fixed \@newglossaryentryposthook so that it will add an empty
+ see value if not set. Added "see" element to field map
+ \@gls@keymap.
+
+ * Added redefinition of \@gls@setdefault@glslink@opts to
+ set the default index value.
+
+ * \MakeAcronymsAbbreviations now disables \setacronymstyle
+
+0.5.3 (2015-12-08):
+
+ * Fixed bug in "abbreviations" package option.
+
+ * Added support for "indexname" and "dualindex" attributes
+ with associated new commands.
+
+ * Added provision for language modules (but none provided).
+
+ * Removed \GlsXtrNoGlsWarningNoAutoMakeMain
+ (identical to \GlsXtrNoGlsWarningEmptyMain)
+
+ * Added check for \glsdescwidth and \glspagelistwidth and
+ fixed adjustment for \glslistdottedwidth.
+
+0.5.2 (2015-12-08):
+
+ * Modified the "nonumberlist" key (\printglossary) so that
+ it saves the number list.
+
+ * Added \GlsXtrFormatLocationList
+
+ * New command \GlsXtrEnableInitialTagging
+
+ * Added \glsxtrfieldtitlecase
+
+ * Modified \glossentrydesc to check for "glossdesc" attribute.
+
+ * Modified \glossentryname to check for "glossname" attribute.
+
+ * Fixed misspelt glossaries-accsupp (final letter was missing)
+ in \@ifpackageloaded
+
+ * Modified commands like \@glstext@ to use \glsaccess...
+ instead of \glsentry... if glossaries-accsupp loaded.
+
+ * Added:
+
+ \GLSaccessname
+ \GLSaccesstext
+ \GLSaccessplural
+ \GLSaccessfirst
+ \GLSaccessfirstplural
+ \GLSaccesssymbol
+ \GLSaccesssymbolplural
+ \GLSaccessdesc
+ \GLSaccessdescplural
+ \GLSaccessshort
+ \GLSaccessshortpl
+ \GLSaccesslong
+ \glsaccesslongpl
+ \Glsaccesslongpl
+ \GLSaccesslongpl
+
+ * Removed \glsxtrabbrvfmt and moved
+ \glssetabbrvfmt{\glscategory{\glslabel}} to \glsentryfmt
+
+ * Added check for post-definition style switch.
+
+ * Added \glsxtrnewabbrevpresetkeyhook
+
+0.5.1 (2015-12-07):
+
+ * Removed \ifglsxtruseuchead
+ Now implemented through the "headuc" attribute.
+ Commands like \glsxtrheadshort modified to accommodate this.
+
+ * Added:
+ \Glsaccessname
+ \Glsaccesstext
+ \Glsaccessplural
+ \Glsaccessfirst
+ \Glsaccessfirstplural
+ \Glsaccesssymbol
+ \Glsaccesssymbolplural
+ \Glsaccessdesc
+ \Glsaccessdescplural
+
+ * Abbreviation styles (non-regular) now switch off regular
+ attribute if it has been set. (In case the style is
+ switched for a given category, e.g the "acronym" category.)
+
+0.5 (2015-12-07):
+
+ * Renamed \glsentryfmtshort -> \glsfmtshort etc
+ These now use new commands \glsxtrtitleshort and
+ \glsxtrheadmarkshort etc to work better in page headers
+ that convert to upper case.
+
+ * Added new commands for use in section headings:
+ \glsfmttext, \Glsfmttext, \glsfmtplural, \Glsfmtplural,
+ \glsfmtfirst, \Glsfmtfirst, \glsfmtfirstpl,
+ \Glsfmtfirstpl
+
+ * New commands \glshascategoryattribute and \glshasattribute
+
+ * Added \glsfirstabbrvdefaultfont and \glsfirstlongdefaultfont
+ Styles now set \glsfirstabbrvfont and \glsfirstlongfont
+
+ * \markright and \markboth redefined so that they use
+ \glsxtrmarkhook (use \glsxtrRevertMarks to restore
+ original definitions).
+
+ * Redefined \glsenableentrycount and added
+ \glsxtrifcounttrigger (support for "entrycount"
+ attribute). Added \GlsXtrEnableEntryCounting
+
+ * Changed default behaviour of commands like \cgls
+ so they don't produce a warning if used without
+ \glsenableentrycount. Instead a warning is triggered
+ if \glsenableentrycount is used without setting
+ the "entrycount" attribute.
+
+ * Added \cGLS, \cGLSpl
+
+ * \acronymfont and \firstacronymfont redefined to
+ use \glsabbrvfont and \glsfirstabbrvfont (switched back
+ with \RestoreAcronyms).
+
+ * New abbreviation styles: footnote-sc, postfootnote-sc,
+ long-short-sm, long-short-sm-desc, short-sm-long,
+ short-sm-long-desc, short-sm, short-sm-desc, short-desc,
+ long-sm, long-desc-sm, footnote-sm, postfootnote-sm,
+ long-short-em, long-short-em-desc, short-em-long,
+ short-em-long-desc, short-em, short-em-desc, short-desc,
+ long-em, long-desc-em, footnote-em, postfootnote-em.
+
+ * New command \glsxtrsmfont for use in *-sm abbreviation
+ styles and \glsxtrsmsuffix for the default short plural
+ suffix.
+
+ * New command \glsxtrscfont for use in *-sc abbreviation
+ styles and \glsxtrscsuffix for the default short plural
+ suffix.
+
+0.4 (2015-12-03):
+
+ * The "abbreviations" option redefines \acronymtype if
+ the "acronym" option hasn't been used.
+
+ * Redefinition of \newacronym sets the default type to
+ \acronymtype
+
+ * Added \glsxtrifemptyglossary
+
+ * \glsxtrnewsymbol and \glsxtrnewnumber adjusted so that the
+ name and label need to be supplied.
+
+ * Fixed bug in \newterm
+
+ * Changed \glsentryfmtshort etc to use \glsxtrshort etc
+
+0.3 (2015-12-03):
+
+ * Added \glsxtrNoGlossaryWarning and "nomissingglstext" option.
+
+ * Added \glsshortpltok and \glslongpltok. Abbreviation styles
+ now additionally set the first, firstplural and plural
+ keys even if the regular attribute isn't set to true.
+ (Allows the use of commands like \glsfirst, although
+ limitations apply.)
+
+ * Added \glsxtrpostlinkAddDescOnFirstUse and
+ \glsxtrpostlinkAddSymbolOnFirstUse
+
+ * \glsentryfmt also checks for the presence of the short key.
+
+ * Added support for insertdots attribute.
+
+ * Added \glsxtrpostlinkendsentence
+
+ * Added \glsxtrshortpl etc.
+
+ * Renamed \abbrvdefaultfont -> \glsabbrvdefaultfont
+
+ * Added abbreviation plural shortcuts.
+
+ * Added glossaries-accsupp support.
+
+ * Bug fix in long-short-desc and short-long-desc abbreviation
+ styles
+ - argument of \glsxtrfullformat should be \the\glslabeltok
+ not \the\glsshorttok
+
+ * Bug fix in *-sc abbreviation styles
+
+0.2 (2015-11-30):
+
+ * Name changes:
+
+ \glsxtrlongfont -> \glsfirstlongfont
+ \abbrvfont -> \glsabbrvfont
+ \firstabbrvfont -> \glsfirstabbrvfont
+
+ * "short" abbreviation style uses "short (long)"
+ for the inline full style.
+
+0.1 (2015-11-22): Initial experimental release.
diff --git a/macros/latex/contrib/glossaries-extra/README b/macros/latex/contrib/glossaries-extra/README
new file mode 100644
index 0000000000..6f39a09e00
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/README
@@ -0,0 +1,28 @@
+LaTeX Package : glossaries-extra v1.41
+
+Last Modified : 2019-04-09
+
+Author : Nicola Talbot
+
+This package provides improvements and extra features to the
+glossaries package. Some of the default glossaries.sty behaviour
+is changed by glossaries-extra.sty. See the user manual
+glossaries-extra-manual.pdf for further details.
+
+Requires the glossaries package (and, naturally, all packages
+required by glossaries.sty).
+
+The file example-glossaries-xr.tex contains dummy
+entries with cross-references that may be used for creating
+minimal working examples for testing the glossaries-extra
+package. (The base glossaries package provides additional files,
+but this one needs glossaries-extra.sty.)
+
+LICENCE
+
+This material is subject to the LaTeX Project Public License.
+See http://www.ctan.org/license/lppl1.3
+for the details of that license.
+
+Author's home page: http://www.dickimaw-books.com/
+
diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf b/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf
new file mode 100644
index 0000000000..8272e2c862
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html
new file mode 100644
index 0000000000..bf636b8fa4
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.html
@@ -0,0 +1,29815 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<!--http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd-->
+<html xmlns="http://www.w3.org/1999/xhtml"
+>
+<head><title></title>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
+<meta name="originator" content="TeX4ht (http://www.tug.org/tex4ht/)" />
+<!-- xhtml,fn-in,css-in,uni-html4,utf8 -->
+<meta name="src" content="glossaries-extra-manual.tex" />
+
+<style type="text/css">
+<!--
+
+/* start css.sty */
+.cmmi-10{font-style: italic;}
+.cmr-17{font-size:170%;}
+.cmr-12{font-size:120%;}
+.cmr-8{font-size:80%;}
+.cmtt-12{font-size:120%;font-family: monospace;}
+.cmtt-12{font-family: monospace;}
+.cmtt-12{font-family: monospace;}
+.cmtt-12{font-family: monospace;}
+.cmtt-12{font-family: monospace;}
+.cmbx-10{ font-weight: bold;}
+.cmss-10{ font-family: sans-serif;}
+.cmss-10{ font-family: sans-serif;}
+.cmss-10{ font-family: sans-serif;}
+.cmss-10{ font-family: sans-serif;}
+.cmtt-10{font-family: monospace;}
+.cmtt-10{font-family: monospace;}
+.cmtt-10{font-family: monospace;}
+.cmtt-10{font-family: monospace;}
+.cmtt-10{font-family: monospace;}
+.cmr-9{font-size:90%;}
+.cmss-8{font-size:80%; font-family: sans-serif;}
+.cmss-8{ font-family: sans-serif;}
+.cmss-8{ font-family: sans-serif;}
+.cmss-8{ font-family: sans-serif;}
+.cmtt-9{font-size:90%;font-family: monospace;}
+.cmtt-9{font-family: monospace;}
+.cmtt-9{font-family: monospace;}
+.cmtt-9{font-family: monospace;}
+.cmtt-9{font-family: monospace;}
+.cmti-10{ font-style: italic;}
+.cmssbx-10{ font-family: sans-serif; font-weight: bold;}
+.cmssbx-10{ font-family: sans-serif; font-weight: bold;}
+.cmssbx-10{ font-family: sans-serif; font-weight: bold;}
+.cmssbx-10{ font-family: sans-serif; font-weight: bold;}
+.cmitt-10{font-family: monospace; font-style: italic;}
+.cmmi-9{font-size:90%;font-style: italic;}
+.cmssi-10{ font-family: sans-serif; font-style: oblique;}
+.cmssi-10{ font-family: sans-serif; font-style: oblique;}
+.cmssi-10{ font-family: sans-serif; font-style: oblique;}
+.cmssi-10{ font-family: sans-serif; font-style: oblique;}
+.cmtt-8{font-size:80%;font-family: monospace;}
+.cmtt-8{font-family: monospace;}
+.cmtt-8{font-family: monospace;}
+.cmtt-8{font-family: monospace;}
+.cmtt-8{font-family: monospace;}
+.cmti-8{font-size:80%; font-style: italic;}
+p.noindent { text-indent: 0em }
+td p.noindent { text-indent: 0em; margin-top:0em; }
+p.nopar { text-indent: 0em; }
+p.indent{ text-indent: 1.5em }
+@media print {div.crosslinks {visibility:hidden;}}
+a img { border-top: 0; border-left: 0; border-right: 0; }
+center { margin-top:1em; margin-bottom:1em; }
+td center { margin-top:0em; margin-bottom:0em; }
+.Canvas { position:relative; }
+img.math{vertical-align:middle;}
+li p.indent { text-indent: 0em }
+li p:first-child{ margin-top:0em; }
+li p:last-child, li div:last-child { margin-bottom:0.5em; }
+li p~ul:last-child, li p~ol:last-child{ margin-bottom:0.5em; }
+.enumerate1 {list-style-type:decimal;}
+.enumerate2 {list-style-type:lower-alpha;}
+.enumerate3 {list-style-type:lower-roman;}
+.enumerate4 {list-style-type:upper-alpha;}
+div.newtheorem { margin-bottom: 2em; margin-top: 2em;}
+.obeylines-h,.obeylines-v {white-space: nowrap; }
+div.obeylines-v p { margin-top:0; margin-bottom:0; }
+.overline{ text-decoration:overline; }
+.overline img{ border-top: 1px solid black; }
+td.displaylines {text-align:center; white-space:nowrap;}
+.centerline {text-align:center;}
+.rightline {text-align:right;}
+div.verbatim {font-family: monospace; white-space: nowrap; text-align:left; clear:both; }
+.fbox {padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.fbox {display:table}
+div.center div.fbox {text-align:center; clear:both; padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+div.minipage{width:100%;}
+div.center, div.center div.center {text-align: center; margin-left:1em; margin-right:1em;}
+div.center div {text-align: left;}
+div.flushright, div.flushright div.flushright {text-align: right;}
+div.flushright div {text-align: left;}
+div.flushleft {text-align: left;}
+.underline{ text-decoration:underline; }
+.underline img{ border-bottom: 1px solid black; margin-bottom:1pt; }
+.framebox-c, .framebox-l, .framebox-r { padding-left:3.0pt; padding-right:3.0pt; text-indent:0pt; border:solid black 0.4pt; }
+.framebox-c {text-align:center;}
+.framebox-l {text-align:left;}
+.framebox-r {text-align:right;}
+span.thank-mark{ vertical-align: super }
+span.footnote-mark sup.textsuperscript, span.footnote-mark a sup.textsuperscript{ font-size:80%; }
+div.footnotes{border-top:solid 1px black; border-bottom:solid 1px black; padding-bottom:1ex; padding-top:0.5ex; margin-right:15%; margin-top:2ex; font-style:italic; font-size:85%;}
+div.footnotes p{margin-top:0; margin-bottom:0; text-indent:0;}
+div.tabular, div.center div.tabular {text-align: center; margin-top:0.5em; margin-bottom:0.5em; }
+table.tabular td p{margin-top:0em;}
+table.tabular {margin-left: auto; margin-right: auto;}
+td p:first-child{ margin-top:0em; }
+td p:last-child{ margin-bottom:0em; }
+div.td00{ margin-left:0pt; margin-right:0pt; }
+div.td01{ margin-left:0pt; margin-right:5pt; }
+div.td10{ margin-left:5pt; margin-right:0pt; }
+div.td11{ margin-left:5pt; margin-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+td.td00{ padding-left:0pt; padding-right:0pt; }
+td.td01{ padding-left:0pt; padding-right:5pt; }
+td.td10{ padding-left:5pt; padding-right:0pt; }
+td.td11{ padding-left:5pt; padding-right:5pt; }
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+.hline hr, .cline hr{ height : 1px; margin:0px; }
+.tabbing-right {text-align:right;}
+span.TEX {letter-spacing: -0.125em; }
+span.TEX span.E{ position:relative;top:0.5ex;left:-0.0417em;}
+a span.TEX span.E {text-decoration: none; }
+span.LATEX span.A{ position:relative; top:-0.5ex; left:-0.4em; font-size:85%;}
+span.LATEX span.TEX{ position:relative; left: -0.4em; }
+div.float, div.figure {margin-left: auto; margin-right: auto;}
+div.float img {text-align:center;}
+div.figure img {text-align:center;}
+.marginpar {width:20%; float:right; text-align:left; margin-left:auto; margin-top:0.5em; font-size:85%; text-decoration:underline;}
+.marginpar p{margin-top:0.4em; margin-bottom:0.4em;}
+table.equation {width:100%;}
+.equation td{text-align:center; }
+td.equation { margin-top:1em; margin-bottom:1em; }
+td.equation-label { width:5%; text-align:center; }
+td.eqnarray4 { width:5%; white-space: normal; }
+td.eqnarray2 { width:5%; }
+table.eqnarray-star, table.eqnarray {width:100%;}
+div.eqnarray{text-align:center;}
+div.array {text-align:center;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.pmatrix img{vertical-align:middle;}
+div.pmatrix {text-align:center;}
+table.pmatrix {width:100%;}
+span.bar-css {text-decoration:overline;}
+img.cdots{vertical-align:middle;}
+.partToc a, .partToc, .likepartToc a, .likepartToc {line-height: 200%; font-weight:bold; font-size:110%;}
+.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc {line-height: 200%; font-weight:bold;}
+.index-item, .index-subitem, .index-subsubitem {display:block}
+div.caption {text-indent:-2em; margin-left:3em; margin-right:1em; text-align:left;}
+div.caption span.id{font-weight: bold; white-space: nowrap; }
+h1.partHead{text-align: center}
+p.bibitem { text-indent: -2em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+p.bibitem-p { text-indent: 0em; margin-left: 2em; margin-top:0.6em; margin-bottom:0.6em; }
+.paragraphHead, .likeparagraphHead { margin-top:2em; font-weight: bold;}
+.subparagraphHead, .likesubparagraphHead { font-weight: bold;}
+.quote {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; margin-right:1em; text-align:justify;}
+.verse{white-space:nowrap; margin-left:2em}
+div.maketitle {text-align:center;}
+h2.titleHead{text-align:center;}
+div.maketitle{ margin-bottom: 2em; }
+div.author, div.date {text-align:center;}
+div.thanks{text-align:left; margin-left:10%; font-size:85%; font-style:italic; }
+.quotation {margin-bottom:0.25em; margin-top:0.25em; margin-left:1em; }
+h1.partHead{text-align: center}
+.abstract p {margin-left:5%; margin-right:5%;}
+div.abstract {width:100%;}
+.alltt P { margin-bottom : 0em; margin-top : 0em; }
+.alltt { margin-bottom : 1em; margin-top : 1em; }
+.equation td{text-align:center; }
+.equation-star td{text-align:center; }
+table.equation-star { width:100%; }
+table.equation { width:100%; }
+table.align, table.alignat, table.xalignat, table.xxalignat, table.flalign {width:95%; margin-left:5%; white-space: nowrap;}
+table.align-star, table.alignat-star, table.xalignat-star, table.flalign-star {margin-left:auto; margin-right:auto; white-space: nowrap;}
+td.align-label { width:5%; text-align:center; }
+td.align-odd { text-align:right; padding-right:0.3em;}
+td.align-even { text-align:left; padding-right:0.6em;}
+table.multline, table.multline-star {width:100%;}
+td.gather {text-align:center; }
+table.gather {width:100%;}
+div.gather-star {text-align:center;}
+table[rules] {border-left:solid black 0.4pt; border-right:solid black 0.4pt; }
+div.longtable{text-align:center;}
+.supertabular {text-align:center}
+div.important { border : solid red; }
+div.verbatim { font-family: monospace; white-space: nowrap; text-align:left; clear:both; padding-top: 2ex; padding-bottom: 2ex;}
+span.HoLogo-XeLaTeX span.HoLogo-Xe{margin-right:-.13em;}
+span.HoLogo-Xe span.HoLogo-e{position:relative;top:.5ex;left-margin:-.1em;}
+span.HoLogo-LaTeX span.HoLogo-a{position:relative;top:-.5ex;margin-left:-.36em;margin-right:-.15em;font-size:85%;}
+span.HoLogo-TeX span.HoLogo-e{position:relative;top:.5ex;margin-left:-.1667em;margin-right:-.125em;}
+a span.HoLogo-TeX span.HoLogo-e{text-decoration:none;}
+/* end css.sty */
+
+
+-->
+</style>
+</head><body
+>
+<!--l. 235--><p class="noindent" ><a
+ id="top"></a>
+</p><!--l. 235--><p class="indent" >
+
+
+
+</p><!--l. 235--><p class="indent" >
+
+
+
+</p>
+<div class="center"
+>
+<!--l. 235--><p class="noindent" >
+</p><!--l. 235--><p class="noindent" ><span
+class="cmr-17">glossaries-extra.sty v1.41: an extension to the</span>
+<span
+class="cmr-17">glossaries package</span>
+</p>
+<div class="tabular"> <table id="TBL-1" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-1-1g"><col
+id="TBL-1-1" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-1-1-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-1-1"
+class="td11"> <span
+class="cmr-12">Nicola L.C. Talbot </span></td>
+</tr><tr
+class="vspace" style="font-size:10.0pt"><td
+>&nbsp;</td></tr><tr
+ style="vertical-align:baseline;" id="TBL-1-2-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-2-1"
+class="td11"> <span
+class="cmr-12">Dickimaw Books </span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-1-3-"><td style="white-space:nowrap; text-align:center;" id="TBL-1-3-1"
+class="td11"><a
+href="http://www.dickimaw-books.com/" class="url" ><span
+class="cmtt-12">http://www.dickimaw-books.com/</span></a></td></tr></table>
+</div>
+<!--l. 235--><p class="noindent" ><span
+class="cmr-12">2019-04-09</span></p></div>
+ <div
+class="abstract"
+>
+<!--l. 237--><p class="indent" >
+
+
+
+</p>
+<div class="center"
+>
+<!--l. 237--><p class="noindent" >
+</p><!--l. 237--><p class="noindent" ><span
+class="cmbx-10">Abstract</span></p></div>
+<!--l. 238--><p class="noindent" >The <span
+class="cmss-10">glossaries-extra </span>package is an extension to the <span
+class="cmss-10">glossaries </span>package, providing
+additional features. Some of the features provided by this package are only available
+with <span
+class="cmss-10">glossaries </span>version 4.19 (or above). This document assumes familiarity with the
+<span
+class="cmss-10">glossaries </span>package.
+</p><!--l. 244--><p class="indent" > The file <span
+class="cmtt-10">example-glossaries-xr.tex </span>contains dummy entries with cross-references
+that may be used for creating minimal working examples for testing the
+<span
+class="cmss-10">glossaries-extra </span>package. (The base <span
+class="cmss-10">glossaries </span>package provides additional files, but
+this one needs <span
+class="cmss-10">glossaries-extra</span>.) There are equivalent <span
+class="cmtt-10">.bib </span>files for use with
+<a
+ id="dx1-2"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>.
+
+
+
+</p>
+ </div>
+<!--l. 253--><p class="indent" > <div class="important" title="Important Note"> Since <span
+class="cmss-10">glossaries-extra </span>internally loads the <span
+class="cmss-10">glossaries </span>package, you also need to have
+<span
+class="cmss-10">glossaries </span>installed and all the packages that <span
+class="cmss-10">glossaries </span>depends on (including, but not
+limited to, <span
+class="cmss-10">tracklang</span><a
+ id="dx1-3"></a>, <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-4"></a>, <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-5"></a>, <span
+class="cmss-10">xkeyval</span><a
+ id="dx1-6"></a> (at least version dated 2006/11/18),
+<span
+class="cmss-10">textcase</span><a
+ id="dx1-7"></a>, <span
+class="cmss-10">xfor</span><a
+ id="dx1-8"></a>, <span
+class="cmss-10">datatool-base</span><a
+ id="dx1-9"></a> and <span
+class="cmss-10">amsgen</span><a
+ id="dx1-10"></a>. These packages are all available in the
+current <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;Live and Mik<span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions. If any of them are missing, please
+update your <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distribution using your update manager. (For help on this see, for
+example, <a
+href="http://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution" >How do I update my <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distribution?</a> or <a
+href="http://tex.stackexchange.com/questions/14925/updating-tex-on-linux" >Updating <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;on Linux</a>.)
+</div>
+</p><!--l. 268--><p class="noindent" >
+</p><!--l. 270--><p class="indent" > Additional resources: </p>
+ <ul class="itemize1">
+ <li class="itemize">The <span
+class="cmss-10">glossaries-extra </span>documented code <a
+href="http://mirrors.ctan.org/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf" >glossaries-extra-code.pdf</a>.
+ </li>
+ <li class="itemize">The <a
+href="http://www.dickimaw-books.com/gallery/#glossaries-extra" ><span
+class="cmss-10">glossaries-extra </span>gallery</a>.
+ </li>
+ <li class="itemize"><span
+class="cmss-10">glossaries-extra </span>and <a
+ id="dx1-11"></a><span
+class="cmtt-10">bib2gls</span>: An Introductory Guide.
+ (<a
+href="http://mirrors.ctan.org/support/bib2gls/bib2gls-begin.pdf" ><span
+class="cmtt-10">bib2gls-begin.pdf</span></a>).
+ </li>
+ <li class="itemize"><a
+href="https://www.dickimaw-books.com/latex/buildglossaries/" >Incorporating makeglossaries or makeglossaries-lite or bib2gls into the
+ document build</a>.
+ </li>
+ <li class="itemize">The <a
+href="http://www.dickimaw-books.com/software/bib2gls" ><span
+class="cmtt-10">bib2gls</span></a> application.
+ </li>
+ <li class="itemize">The base <a
+href="https://ctan.org/pkg/glossaries" ><span
+class="cmss-10">glossaries</span></a> package.</li></ul>
+
+
+
+ <h2 class="likechapterHead"><a
+ id="x1-1000"></a>Contents</h2>
+ <div class="tableofcontents">
+ <span class="chapterToc" >1 <a
+href="#sec:intro" id="QQ2-1-2">Introduction</a></span>
+<br /> &#x00A0;<span class="sectionToc" >1.1 <a
+href="#sec:defaults" id="QQ2-1-3">Package Defaults</a></span>
+<br /> &#x00A0;<span class="sectionToc" >1.2 <a
+href="#sec:pkgopts" id="QQ2-1-4">New or Modified Package Options</a></span>
+<br /> <span class="chapterToc" >2 <a
+href="#sec:modifications" id="QQ2-1-5">Modifications to Existing Commands and Styles</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.1 <a
+href="#sec:wrglossary" id="QQ2-1-6">Entry Indexing</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.2 <a
+href="#sec:see" id="QQ2-1-7">Cross-References (&#8220;see&#8221; and &#8220;see also&#8221;)</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.3 <a
+href="#sec:entryfmtmods" id="QQ2-1-8">Entry Display Style Modifications</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.4 <a
+href="#sec:entrycountmods" id="QQ2-1-9">Entry Counting Modifications</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.5 <a
+href="#sec:glsunset" id="QQ2-1-10">First Use Flag</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.6 <a
+href="#plurals" id="QQ2-1-11">Plurals</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.7 <a
+href="#sec:nested" id="QQ2-1-12">Nested Links</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.8 <a
+href="#sec:acronymmods" id="QQ2-1-13">Acronym Style Modifications</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.9 <a
+href="#x1-140002.9" id="QQ2-1-15"><span
+class="cmss-10">glossary-bookindex </span>package</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.10 <a
+href="#x1-150002.10" id="QQ2-1-16"><span
+class="cmss-10">glossary-longextra </span>package</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.11 <a
+href="#x1-160002.11" id="QQ2-1-17"><span
+class="cmss-10">glossary-topic </span>package</a></span>
+<br /> &#x00A0;<span class="sectionToc" >2.12 <a
+href="#sec:glosstylemods" id="QQ2-1-18">Glossary Style Modifications</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >2.12.1 <a
+href="#sec:stylehooks" id="QQ2-1-19">Style Hooks</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >2.12.2 <a
+href="#sec:glosstylenumlist" id="QQ2-1-20">Number List</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >2.12.3 <a
+href="#x1-200002.12.3" id="QQ2-1-21">The <span
+class="cmss-10">glossaries-extra-stylemods </span>Package</a></span>
+<br /> <span class="chapterToc" >3 <a
+href="#sec:abbreviations" id="QQ2-1-22">Abbreviations</a></span>
+<br /> &#x00A0;<span class="sectionToc" >3.1 <a
+href="#sec:tagging" id="QQ2-1-23">Tagging Initials</a></span>
+<br /> &#x00A0;<span class="sectionToc" >3.2 <a
+href="#sec:abbrstyle" id="QQ2-1-24">Abbreviation Styles</a></span>
+<br /> &#x00A0;<span class="sectionToc" >3.3 <a
+href="#sec:abbrshortcuts" id="QQ2-1-25">Shortcut Commands</a></span>
+<br /> &#x00A0;<span class="sectionToc" >3.4 <a
+href="#sec:predefabbrvstyles" id="QQ2-1-27">Predefined Abbreviation Styles</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.4.1 <a
+href="#sec:predefregabbrvstyles" id="QQ2-1-28">Predefined Abbreviation Styles that Set the Regular Attribute</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >3.4.2 <a
+href="#sec:predefnonregabbrvstyles" id="QQ2-1-29">Predefined Abbreviation Styles that Don&#8217;t Set the Regular Attribute</a></span>
+<br /> &#x00A0;<span class="sectionToc" >3.5 <a
+href="#sec:newabbrvstyle" id="QQ2-1-30">Defining New Abbreviation Styles</a></span>
+<br /> <span class="chapterToc" >4 <a
+href="#sec:headtitle" id="QQ2-1-31">Entries in Sectioning Titles, Headers, Captions and Contents</a></span>
+<br /> <span class="chapterToc" >5 <a
+href="#sec:categories" id="QQ2-1-32">Categories</a></span>
+<br /> <span class="chapterToc" >6 <a
+href="#sec:countref" id="QQ2-1-33">Counting References</a></span>
+<br /> &#x00A0;<span class="sectionToc" >6.1 <a
+href="#sec:entrycount" id="QQ2-1-34">Entry Counting (First Use Flag)</a></span>
+<br /> &#x00A0;<span class="sectionToc" >6.2 <a
+href="#sec:linkcount" id="QQ2-1-35">Link Counting</a></span>
+<br /> <span class="chapterToc" >7 <a
+href="#sec:autoindex" id="QQ2-1-36">Auto-Indexing</a></span>
+<br /> <span class="chapterToc" >8 <a
+href="#sec:onthefly" id="QQ2-1-37">On-the-Fly Document Definitions</a></span>
+<br /> <span class="chapterToc" >9 <a
+href="#sec:bib2gls" id="QQ2-1-38"><span
+class="cmtt-10">bib2gls</span>: Managing Reference Databases</a></span>
+
+
+
+<br /> &#x00A0;<span class="sectionToc" >9.1 <a
+href="#selection" id="QQ2-1-39">Selection</a></span>
+<br /> &#x00A0;<span class="sectionToc" >9.2 <a
+href="#sortinganddisplayingtheglossary" id="QQ2-1-40">Sorting and Displaying the Glossary</a></span>
+<br /> &#x00A0;<span class="sectionToc" >9.3 <a
+href="#x1-390009.3" id="QQ2-1-41">The <span
+class="cmss-10">glossaries-extra-bib2gls </span>package</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >9.3.1 <a
+href="#sec:supplocations" id="QQ2-1-42">Supplemental Locations</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >9.3.2 <a
+href="#sec:recordnameref" id="QQ2-1-43">Nameref Record</a></span>
+<br /> &#x00A0;&#x00A0;<span class="subsectionToc" >9.3.3 <a
+href="#sec:resourcecommands" id="QQ2-1-44">Helper Commands for Resource Options</a></span>
+<br /> &#x00A0;<span class="sectionToc" >9.4 <a
+href="#supplementarycommands" id="QQ2-1-45">Supplementary Commands</a></span>
+<br /> &#x00A0;<span class="sectionToc" >9.5 <a
+href="#sec:recordcount" id="QQ2-1-46">Record Counting</a></span>
+<br /> <span class="chapterToc" >10 <a
+href="#sec:miscnew" id="QQ2-1-47">Miscellaneous New Commands</a></span>
+<br /> &#x00A0;<span class="sectionToc" >10.1 <a
+href="#sec:fields" id="QQ2-1-48">Entry Fields</a></span>
+<br /> &#x00A0;<span class="sectionToc" >10.2 <a
+href="#sec:printunsrt" id="QQ2-1-49">Display All Entries Without Sorting or Indexing</a></span>
+<br /> &#x00A0;<span class="sectionToc" >10.3 <a
+href="#sec:glossentry" id="QQ2-1-50">Standalone Entry Items</a></span>
+<br /> &#x00A0;<span class="sectionToc" >10.4 <a
+href="#sec:alias" id="QQ2-1-51">Entry Aliases</a></span>
+<br /> <span class="chapterToc" >11 <a
+href="#sec:supplemental" id="QQ2-1-52">Supplemental Packages</a></span>
+<br /> &#x00A0;<span class="sectionToc" >11.1 <a
+href="#sec:prefix" id="QQ2-1-53">Prefixes or Determiners</a></span>
+<br /> &#x00A0;<span class="sectionToc" >11.2 <a
+href="#sec:accsupp" id="QQ2-1-54">Accessibility Support</a></span>
+<br /> <span class="chapterToc" >12 <a
+href="#sec:samples" id="QQ2-1-55">Sample Files</a></span>
+<br /> <span class="chapterToc" >13 <a
+href="#sec:lang" id="QQ2-1-56">Multi-Lingual Support</a></span>
+<br /> <span class="chapterToc" > <a
+href="#glossary">Glossary</a></span>
+ </div>
+
+
+
+<!--l. 295--><p class="indent" > <div class="chapter"><h2 class="chapterHead">1. <a
+ id="sec:intro"></a>Introduction</h2>
+</p><!--l. 298--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package is a flexible package, but it&#8217;s also a heavy-weight package
+that uses a lot of resources. As package developer, I&#8217;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).
+</p><!--l. 305--><p class="indent" > The <span
+class="cmss-10">glossaries-extra </span>package is an attempt to provide a&#x00A0;compromise for this
+conflict. Version 4.22 of the <span
+class="cmss-10">glossaries </span>package is the last version to incorporate new
+features.<span class="footnote-mark"><a
+href="#fn1x1" id="fn1x1-bk"><sup class="textsuperscript">1.1</sup></a></span><a
+ id="x1-2001f1"></a>
+Future versions of <span
+class="cmss-10">glossaries </span>will just be bug fixes. New features will instead be added
+to <span
+class="cmss-10">glossaries-extra</span>. This means that the base <span
+class="cmss-10">glossaries </span>package won&#8217;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.
+</p>
+<!--l. 319--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.1 </span> <a
+ id="sec:defaults"></a>Package Defaults</h3>
+<!--l. 322--><p class="noindent" >I&#8217;m not happy with some of the default settings assumed by the <span
+class="cmss-10">glossaries </span>package,
+and, judging from code I&#8217;ve seen, other users also seem unhappy with them, as
+certain package options are often used in questions posted on various sites. I can&#8217;t
+change the default behaviour of <span
+class="cmss-10">glossaries </span>as it would break backward compatibility,
+but since <span
+class="cmss-10">glossaries-extra </span>is a separate package, I have decided to implement some of
+these commonly-used options by default. You can switch them back if they&#8217;re not
+appropriate.
+</p><!--l. 332--><p class="indent" > The new defaults are: </p>
+ <ul class="itemize1">
+ <li class="itemize"><a
+href="#styopt.toc"><span
+class="cmss-10">toc</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-3001"></a> (add the glossaries to the table of contents). Use <a
+href="#styopt.toc"><span
+class="cmss-10">toc</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-3002"></a> to
+ switch this back off.
+ </li>
+ <li class="itemize"><a
+href="#styopt.nopostdot"><span
+class="cmss-10">nopostdot</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-3003"></a> (suppress the terminating full stop after the description
+ in the glossary). Use <a
+href="#styopt.nopostdot"><span
+class="cmss-10">nopostdot</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-3004"></a> or just <a
+href="#styopt.postdot"><span
+class="cmss-10">postdot</span></a><a
+ id="dx1-3005"></a> to restore the
+ terminating full stop (period).
+ </li>
+ <li class="itemize"><a
+href="#styopt.noredefwarn"><span
+class="cmss-10">noredefwarn</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-3006"></a> (suppress the warnings that occur when the <span
+class="cmss-10">theglossary</span><a
+ id="dx1-3007"></a><a
+ id="dx1-3008"></a>
+ environment and <span
+class="cmtt-10">\printglossary </span>are redefined while <span
+class="cmss-10">glossaries </span>is
+ loading). To restore the warnings, use <a
+href="#styopt.noredefwarn"><span
+class="cmss-10">noredefwarn</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-3009"></a>. Note that this
+ won&#8217;t have any effect if the <span
+class="cmss-10">glossaries </span>package has already been loaded
+ before you use the <span
+class="cmss-10">glossaries-extra </span>package.
+ </li>
+ <li class="itemize">If <span
+class="cmss-10">babel</span><a
+ id="dx1-3010"></a> has been loaded, the <a
+href="#styopt.translate"><span
+class="cmss-10">translate</span></a><span
+class="cmss-10">=babel</span><a
+ id="dx1-3011"></a> option is switched on. To
+ revert to using the <span
+class="cmss-10">translator</span><a
+ id="dx1-3012"></a> interface, use <a
+href="#styopt.translate"><span
+class="cmss-10">translate</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-3013"></a>. There is no
+ change to the default if <span
+class="cmss-10">babel</span><a
+ id="dx1-3014"></a> hasn&#8217;t been loaded.
+ </li></ul>
+
+
+
+<!--l. 356--><p class="indent" > The examples below illustrate the difference in explicit package options between
+<span
+class="cmss-10">glossaries </span>and <span
+class="cmss-10">glossaries-extra</span>. There may be other differences resulting from
+modifications to commands provided by <span
+class="cmss-10">glossaries </span>(see <a
+href="#sec:modifications"><span
+class="cmsy-10">&sect;</span>2 </a><a
+href="#sec:modifications">Modifications to Existing
+Commands and Styles<!--tex4ht:ref: sec:modifications --></a>).
+</p><!--l. 362--><p class="indent" >
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-3016x1">
+
+
+
+ <div class="verbatim" id="verbatim-1">
+ \documentclass{article}
+ &#x00A0;<br />\usepackage{glossaries-extra}
+</div>
+ <!--l. 367--><p class="nopar" > This is like:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-2">
+ \documentclass{article}
+ &#x00A0;<br />\usepackage[toc,nopostdot]{glossaries}
+ &#x00A0;<br />\usepackage{glossaries-extra}
+</div>
+ <!--l. 373--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-3018x2">
+
+
+
+ <div class="verbatim" id="verbatim-3">
+ \documentclass[british]{article}
+ &#x00A0;<br />\usepackage{babel}
+ &#x00A0;<br />\usepackage{glossaries-extra}
+</div>
+ <!--l. 380--><p class="nopar" > This is like:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-4">
+ \documentclass[british]{article}
+ &#x00A0;<br />\usepackage{babel}
+ &#x00A0;<br />\usepackage[toc,nopostdot,translate=babel]{glossaries}
+ &#x00A0;<br />\usepackage{glossaries-extra}
+</div>
+ <!--l. 387--><p class="nopar" >
+ </p></li>
+ <li
+ class="enumerate" id="x1-3020x3">
+
+
+
+ <div class="verbatim" id="verbatim-5">
+ \documentclass{memoir}
+ &#x00A0;<br />\usepackage{glossaries-extra}
+</div>
+ <!--l. 393--><p class="nopar" > This is like:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-6">
+ \documentclass{memoir}
+ &#x00A0;<br />\usepackage[toc,nopostdot,noredefwarn]{glossaries}
+ &#x00A0;<br />\usepackage{glossaries-extra}
+</div>
+ <!--l. 399--><p class="nopar" > <span
+class="cmti-10">However</span>
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-7">
+ \documentclass{memoir}
+ &#x00A0;<br />\usepackage{glossaries}
+ &#x00A0;<br />\usepackage{glossaries-extra}
+</div>
+ <!--l. 405--><p class="nopar" > This is like:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-8">
+ \documentclass{memoir}
+ &#x00A0;<br />\usepackage[toc,nopostdot]{glossaries}
+ &#x00A0;<br />\usepackage{glossaries-extra}
+</div>
+ <!--l. 411--><p class="nopar" > Since by the time <span
+class="cmss-10">glossaries-extra </span>has been loaded, <span
+class="cmss-10">glossaries </span>has already
+ redefined <span
+class="cmss-10">memoir</span><a
+ id="dx1-3021"></a>&#8217;s glossary-related commands.</p></li></ol>
+<!--l. 417--><p class="indent" > Another noticeable change is that by default <span
+class="cmtt-10">\printglossary </span>will now display
+information text in the document if the external glossary file doesn&#8217;t exist. This is
+explanatory text to help new users who can&#8217;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.
+</p><!--l. 424--><p class="indent" > This change is mostly likely to be noticed by users with one or more
+redundant empty glossaries who ignore transcript messages, explicitly use
+<a
+ id="dx1-3022"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a>/<a
+ id="dx1-3023"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> on just the non-empty glossary (or glossaries) and use the iterative
+<span
+class="cmtt-10">\printglossaries</span><a
+ id="dx1-3024"></a> command instead of <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-3025"></a>. For example, consider the
+following:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-9">
+\documentclass{article}
+&#x00A0;<br />\usepackage[acronym]{glossaries}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\newacronym{laser}{laser}{light&#x00A0;amplification&#x00A0;by&#x00A0;stimulated
+&#x00A0;<br />emission&#x00A0;of&#x00A0;radiation}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{laser}
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 448--><p class="nopar" > The above document will only display the list of acronyms at the place where
+<span
+class="cmtt-10">\printglossaries</span><a
+ id="dx1-3026"></a> occurs. However it will also attempt to input the <span
+class="cmtt-10">.gls </span>file
+associated with the <span
+class="cmtt-10">main </span>glossary.
+</p><!--l. 454--><p class="indent" > If you use <a
+ id="dx1-3027"></a><a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span></a>, you&#8217;ll get the warning message:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-10">
+Warning:&#x00A0;File&#x00A0;'test.glo'&#x00A0;is&#x00A0;empty.
+&#x00A0;<br />Have&#x00A0;you&#x00A0;used&#x00A0;any&#x00A0;entries&#x00A0;defined&#x00A0;in&#x00A0;glossary&#x00A0;'main'?
+&#x00A0;<br />Remember&#x00A0;to&#x00A0;use&#x00A0;package&#x00A0;option&#x00A0;'nomain'&#x00A0;if&#x00A0;you
+&#x00A0;<br />don't&#x00A0;want&#x00A0;to&#x00A0;use&#x00A0;the&#x00A0;main&#x00A0;glossary.
+</div>
+<!--l. 460--><p class="nopar" > (where the original file is called <span
+class="cmtt-10">test.tex</span>) but if you simply call <a
+ id="dx1-3028"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> directly
+to generate the <span
+class="cmtt-10">.acr </span>file (without attempting to create the <span
+class="cmtt-10">.gls </span>file) then the
+transcript file will always contain the message:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-11">
+No&#x00A0;file&#x00A0;test.gls.
+</div>
+<!--l. 467--><p class="nopar" > This doesn&#8217;t occur with <a
+ id="dx1-3029"></a><a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span></a> as it will create the <span
+class="cmtt-10">.gls </span>file containing
+the single command <span
+class="cmtt-10">\null</span>.
+</p><!--l. 471--><p class="indent" > If you simply change from <span
+class="cmss-10">glossaries </span>to <span
+class="cmss-10">glossaries-extra </span>in this document, you&#8217;ll
+find a change in the resulting PDF if you don&#8217;t use <a
+ id="dx1-3030"></a><span
+class="cmtt-10">makeglossaries </span>and you only
+generate the <span
+class="cmtt-10">.acr </span>file with <a
+ id="dx1-3031"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a>.
+</p><!--l. 476--><p class="indent" > The transcript file will still contain the message about the missing <span
+class="cmtt-10">.gls</span>, but now
+you&#8217;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
+<a
+href="#styopt.nomain"><span
+class="cmss-10">nomain</span></a><a
+ id="dx1-3032"></a> package option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-12">
+\documentclass{article}
+&#x00A0;<br />\usepackage[nomain,acronym,postdot]{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\setabbreviationstyle[acronym]{long-short}
+&#x00A0;<br />\newacronym{laser}{laser}{light&#x00A0;amplification&#x00A0;by&#x00A0;stimulated
+&#x00A0;<br />emission&#x00A0;of&#x00A0;radiation}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{laser}
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 500--><p class="nopar" > (Note the need to set the acronym style using <span
+class="cmtt-10">\setabbreviationstyle </span>before
+<span
+class="cmtt-10">\newacronym</span>. See <a
+href="#sec:abbreviations"><span
+class="cmsy-10">&sect;</span>3 </a><a
+href="#sec:abbreviations">Abbreviations<!--tex4ht:ref: sec:abbreviations --></a> for further details.)
+</p><!--l. 505--><p class="noindent" >
+</p>
+<!--l. 505--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">1.2 </span> <a
+ id="sec:pkgopts"></a>New or Modified Package Options</h3>
+<!--l. 508--><p class="noindent" >If you haven&#8217;t already loaded <span
+class="cmss-10">glossaries</span>, you can use any of the package options
+provided by <span
+class="cmss-10">glossaries </span>when you load <span
+class="cmss-10">glossaries-extra </span>and they will automatically be
+passed to <span
+class="cmss-10">glossaries </span>(which <span
+class="cmss-10">glossaries-extra </span>will load). If <span
+class="cmss-10">glossaries </span>has already
+been loaded, then those options will be passed to <span
+class="cmtt-10">\setupglossaries</span><a
+ id="dx1-4001"></a>, but
+remember that not all of the <span
+class="cmss-10">glossaries </span>package options may be used in that
+command.
+</p><!--l. 516--><p class="indent" > <div class="important" title="Important Note"> This section only lists options that are either unrecognised by the <span
+class="cmss-10">glossaries</span>
+package or are a modified version of options of the same name provided by <span
+class="cmss-10">glossaries</span>.
+See the <span
+class="cmss-10">glossaries </span>user manual for details about the unmodified options.
+</div>
+</p><!--l. 522--><p class="noindent" >
+</p><!--l. 524--><p class="indent" > The new and modified options provided by <span
+class="cmss-10">glossaries-extra </span>are described
+below:
+
+
+
+ </p><dl class="description"><dt class="description">
+<a
+ id="styopt.debug"></a><span
+class="cmssbx-10">debug</span><a
+ id="dx1-4002"></a> </dt><dd
+class="description">The <span
+class="cmss-10">glossaries </span>package has a <span
+class="cmss-10">debug </span>option that allows the values <span
+class="cmss-10">false</span>,
+ <span
+class="cmss-10">true </span>and <span
+class="cmss-10">showtargets</span>. The <a
+href="#styopt.debug"><span
+class="cmss-10">debug</span></a><span
+class="cmss-10">=showtargets</span><a
+ id="dx1-4003"></a> option was introduced to
+ <span
+class="cmss-10">glossaries </span>v4.32, so if you want to use this option with <span
+class="cmss-10">glossaries-extra </span>you
+ must make sure that your version of <span
+class="cmss-10">glossaries </span>supports it.
+ <!--l. 537--><p class="noindent" >The <span
+class="cmss-10">glossaries-extra </span>package extends this option to provide the additional
+ values <a
+href="#styopt.debug"><span
+class="cmss-10">debug</span></a><span
+class="cmss-10">=showwrgloss</span><a
+ id="dx1-4004"></a> and <a
+href="#styopt.debug"><span
+class="cmss-10">debug</span></a><span
+class="cmss-10">=all</span><a
+ id="dx1-4005"></a>.
+ </p><!--l. 541--><p class="noindent" >The <a
+href="#styopt.debug"><span
+class="cmss-10">debug</span></a><span
+class="cmss-10">=showwrgloss</span><a
+ id="dx1-4006"></a> option implements <a
+href="#styopt.debug"><span
+class="cmss-10">debug</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-4007"></a> and uses
+ </p><!--l. 543--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrwrglossmark</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4008"></a> <span
+class="cmtt-10">\glsxtrwrglossmark </span></div><hr>
+ </p><!--l. 545--><p class="noindent" >
+ to show a mark <span
+class="cmsy-10">&#x22C5; </span>just before the write operation performed by the
+ indexing commands. If you use <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=alsoindex</span><a
+ id="dx1-4009"></a> there will be a mark
+ for the write operation to the <span
+class="cmtt-10">.aux </span>file for <a
+ id="dx1-4010"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> and a mark for
+ the write operation to the associated glossary file for <a
+ id="dx1-4011"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> or
+ <a
+ id="dx1-4012"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a>.
+ </p><!--l. 553--><p class="noindent" >The <a
+href="#styopt.debug"><span
+class="cmss-10">debug</span></a><span
+class="cmss-10">=all</span><a
+ id="dx1-4013"></a> option implements both <a
+href="#styopt.debug"><span
+class="cmss-10">debug</span></a><span
+class="cmss-10">=showtargets</span><a
+ id="dx1-4014"></a> and
+ <a
+href="#styopt.debug"><span
+class="cmss-10">debug</span></a><span
+class="cmss-10">=showwrgloss</span><a
+ id="dx1-4015"></a>.
+ </p></dd><dt class="description">
+<a
+ id="styopt.postdot"></a><span
+class="cmssbx-10">postdot</span><a
+ id="dx1-4016"></a> </dt><dd
+class="description">(New to version 1.12.) This option is just a shortcut for <a
+href="#styopt.nopostdot"><span
+class="cmss-10">nopostdot</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-4017"></a>.
+ </dd><dt class="description">
+<a
+ id="styopt.postpunc"></a><span
+class="cmssbx-10">postpunc</span><a
+ id="dx1-4018"></a> </dt><dd
+class="description">(New to version 1.21.) This option sets the post-description punctuation to
+ the given value. For example: <span
+class="cmss-10">postpunc=; </span>does
+
+
+
+ <div class="verbatim" id="verbatim-13">
+ \renewcommand{\glspostdescription}{;}
+</div>
+ <!--l. 564--><p class="nopar" > The value may also be one of the following keywords:
+ </p><dl class="description"><dt class="description">
+ <span
+class="cmtt-10">comma</span><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><a
+href="#styopt.postpunc"><span
+class="cmss-10">postpunc</span></a><span
+class="cmss-10">=comma</span><a
+ id="dx1-4019"></a> is equivalent to
+
+
+
+ <div class="verbatim" id="verbatim-14">
+ \renewcommand{\glspostdescription}{,}
+</div>
+ <!--l. 571--><p class="nopar" >
+ </p></dd><dt class="description">
+ <span
+class="cmtt-10">dot</span><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><a
+href="#styopt.postpunc"><span
+class="cmss-10">postpunc</span></a><span
+class="cmss-10">=dot</span><a
+ id="dx1-4020"></a> is equivalent to
+
+
+
+ <div class="verbatim" id="verbatim-15">
+ \renewcommand{\glspostdescription}{.\spacefactor\sfcode`\.&#x00A0;}
+</div>
+ <!--l. 577--><p class="nopar" >
+ </p></dd><dt class="description">
+ <span
+class="cmtt-10">none</span><span
+class="cmbx-10">:</span> </dt><dd
+class="description"><a
+href="#styopt.postpunc"><span
+class="cmss-10">postpunc</span></a><span
+class="cmss-10">=none</span><a
+ id="dx1-4021"></a> is equivalent to
+
+
+
+ <div class="verbatim" id="verbatim-16">
+ \renewcommand{\glspostdescription}{}
+</div>
+ <!--l. 583--><p class="nopar" ></p></dd></dl>
+ <!--l. 585--><p class="noindent" >The default definition is
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-17">
+ \newcommand*{\glspostdescription}{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\ifglsnopostdot\else.\spacefactor\sfcode`\.&#x00A0;\fi
+ &#x00A0;<br />}
+</div>
+ <!--l. 590--><p class="nopar" > where the conditional is determined by the <a
+href="#styopt.nopostdot"><span
+class="cmss-10">nopostdot</span></a><a
+ id="dx1-4022"></a> package option.
+ The <a
+href="#styopt.postpunc"><span
+class="cmss-10">postpunc</span></a><a
+ id="dx1-4023"></a> option removes the conditional from the definition of
+ <span
+class="cmtt-10">\glspostdescription</span>. The package options <a
+href="#styopt.nopostdot"><span
+class="cmss-10">nopostdot</span></a><a
+ id="dx1-4024"></a> and <a
+href="#styopt.postdot"><span
+class="cmss-10">postdot</span></a><a
+ id="dx1-4025"></a> will restore
+ the original definition of <span
+class="cmtt-10">\glspostdescription</span>.
+ </p><!--l. 597--><p class="noindent" >The <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-4026"></a> package adjusts the predefined styles
+ that had a hard-coded <span
+class="cmtt-10">\space </span>before the <a
+ id="dx1-4027"></a><a
+href="#glo:numberlist">number list</a> so that they use
+ <span
+class="cmtt-10">\glsxtrprelocation </span>instead (which is defined to <span
+class="cmtt-10">\space</span>). You can therefore
+ redefine this command in combination with <a
+href="#styopt.postpunc"><span
+class="cmss-10">postpunc</span></a><a
+ id="dx1-4028"></a> to alter the separator
+ before the <a
+ id="dx1-4029"></a>number list. For example, to have a comma followed by
+ <span
+class="cmtt-10">\hfil</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-18">
+ \usepackage[postpunc=comma,stylemods]{glossaries-extra}
+ &#x00A0;<br />\renewcommand{\glsxtrprelocation}{\hfil}
+</div>
+ <!--l. 607--><p class="nopar" > Be careful with doing this as it will look odd if the <a
+ id="dx1-4030"></a><a
+href="#glo:numberlist">number list</a> is missing.
+ (With <a
+ id="dx1-4031"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> you can instead redefine <span
+class="cmtt-10">\glsxtrprelocation </span>to do nothing
+ and set the location prefixes with <span
+class="cmtt-10">loc-prefix </span>which will only apply if the entry
+ has a <a
+ id="dx1-4032"></a>number list.)
+ </p></dd><dt class="description">
+<a
+ id="styopt.accsupp"></a><span
+class="cmssbx-10">accsupp</span><a
+ id="dx1-4033"></a> </dt><dd
+class="description">Load the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-4034"></a> package (if not already loaded).
+ <!--l. 617--><p class="noindent" >If you want to define styles that can interface with the accessibility support
+ provided by <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-4035"></a> use the <span
+class="cmtt-10">\glsaccess</span>&#x27E8;<span
+class="cmitt-10">xxx</span>&#x27E9; type of commands
+ instead of <span
+class="cmtt-10">\glsentry</span>&#x27E8;<span
+class="cmitt-10">xxx</span>&#x27E9; (for example, <span
+class="cmtt-10">\glsaccesstext</span><a
+ id="dx1-4036"></a> instead of
+ <span
+class="cmtt-10">\glsentrytext</span><a
+ id="dx1-4037"></a>). If <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-4038"></a> hasn&#8217;t been loaded those commands are
+ equivalent (for example, <span
+class="cmtt-10">\glsaccesstext </span>just does <span
+class="cmtt-10">\glsentrytext</span>) but if it
+ has been loaded, then the <span
+class="cmtt-10">\glsaccess</span>&#x27E8;<span
+class="cmitt-10">xxx</span>&#x27E9; commands will add the
+ accessibility information. (See <a
+href="#sec:accsupp"><span
+class="cmsy-10">&sect;</span>11.2 </a><a
+href="#sec:accsupp">Accessibility Support<!--tex4ht:ref: sec:accsupp --></a> for further
+ details.)
+ </p><!--l. 627--><p class="noindent" >Note that the <a
+href="#styopt.accsupp"><span
+class="cmss-10">accsupp</span></a><a
+ id="dx1-4039"></a> option can only be used as a&#x00A0;package option (and can&#8217;t
+ be set with <span
+class="cmtt-10">\glossariesextrasetup</span><a
+ id="dx1-4040"></a>) since the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-4041"></a> package must
+ be loaded before <span
+class="cmss-10">glossaries-extra </span>if it&#8217;s required.
+ </p></dd><dt class="description">
+<a
+ id="styopt.stylemods"></a><span
+class="cmssbx-10">stylemods</span><a
+ id="dx1-4042"></a> </dt><dd
+class="description">This is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; option used to load the <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-4043"></a>
+ package. The value may be a comma-separated list of options to pass to that
+ package. (Remember to group &#x27E8;<span
+class="cmti-10">value</span>&#x27E9; if it contains any commas.) The value may
+ be omitted if no options need to be passed. See <a
+href="#sec:glosstylemods"><span
+class="cmsy-10">&sect;</span>2.12 </a><a
+href="#sec:glosstylemods">Glossary Style
+ Modifications<!--tex4ht:ref: sec:glosstylemods --></a> for further details. There are two special keyword values:
+ <a
+href="#styopt.stylemods"><span
+class="cmss-10">stylemods</span></a><span
+class="cmss-10">=default</span><a
+ id="dx1-4044"></a> (equivalent to omitting the value) and <a
+href="#styopt.stylemods"><span
+class="cmss-10">stylemods</span></a><span
+class="cmss-10">=all</span><a
+ id="dx1-4045"></a>, which
+ loads all the predefined styles.
+ </dd><dt class="description">
+<a
+ id="styopt.undefaction"></a><span
+class="cmssbx-10">undefaction</span><a
+ id="dx1-4046"></a> </dt><dd
+class="description">This is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; option, which has two allowed values: <span
+class="cmss-10">warn </span>and
+ <span
+class="cmss-10">error</span>. This indicates what to do if an undefined glossary entry is referenced. The
+ default behaviour is <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=error</span><a
+ id="dx1-4047"></a>, which produces an error message (the
+ default for <span
+class="cmss-10">glossaries</span>). You can switch this to a warning message (and ??
+ appearing in the text) with <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-4048"></a>.
+ <!--l. 652--><p class="noindent" ><div class="important" title="Important Note"> Undefined entries can&#8217;t be picked up by any commands that iterate
+ over a glossary list. This includes <span
+class="cmtt-10">\forglsentries</span><a
+ id="dx1-4049"></a> and <span
+class="cmtt-10">\glsaddall</span><a
+ id="dx1-4050"></a>.
+ </div>
+
+
+
+ </p><!--l. 656--><p class="noindent" >
+ </p><!--l. 658--><p class="noindent" >Note that <span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-4051"></a> will display ?? in the document text with
+ <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-4052"></a> if the entry hasn&#8217;t been defined, as the underlying boolean
+ variable doesn&#8217;t exist and so is neither true nor false. (There will also
+ be a warning in the transcript.) See <a
+href="#sec:glsunset"><span
+class="cmsy-10">&sect;</span>2.5 </a><a
+href="#sec:glsunset">First Use Flag<!--tex4ht:ref: sec:glsunset --></a> for further
+ details.
+ </p></dd><dt class="description">
+<a
+ id="styopt.indexcrossrefs"></a><span
+class="cmssbx-10">indexcrossrefs</span><a
+ id="dx1-4053"></a> </dt><dd
+class="description">This is a boolean option. If <span
+class="cmss-10">true</span>, this will automatically index any
+ cross-referenced entries that haven&#8217;t been marked as used at the end of the
+ document. Note that this necessarily adds to the overall document build time,
+ especially if you have defined a large number of entries, so this defaults to <span
+class="cmss-10">false</span>,
+ but it will be automatically switched on if you use the <span
+class="cmss-10">see</span><a
+ id="dx1-4054"></a> or <span
+class="cmss-10">seealso</span><a
+ id="dx1-4055"></a> keys
+ in any entries (unless <a
+href="#styopt.autoseeindex"><span
+class="cmss-10">autoseeindex</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-4056"></a>). To force it off, even if you
+ use the <span
+class="cmss-10">see</span><a
+ id="dx1-4057"></a> or <span
+class="cmss-10">seealso</span><a
+ id="dx1-4058"></a> key, you need to explicitly set <a
+href="#styopt.indexcrossrefs"><span
+class="cmss-10">indexcrossrefs</span></a><a
+ id="dx1-4059"></a> to
+ <span
+class="cmss-10">false</span>.
+ <!--l. 676--><p class="noindent" >Note that <a
+ id="dx1-4060"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> can automatically find dependent entries when it
+ parses the <span
+class="cmtt-10">.bib </span>source file. The <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-4061"></a> option automatically implements
+ <a
+href="#styopt.indexcrossrefs"><span
+class="cmss-10">indexcrossrefs</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-4062"></a>.
+ </p></dd><dt class="description">
+<a
+ id="styopt.autoseeindex"></a><span
+class="cmssbx-10">autoseeindex</span><a
+ id="dx1-4063"></a> </dt><dd
+class="description"> (New to v1.16.) This is a boolean option. If true (default), this makes
+ the <span
+class="cmss-10">see</span><a
+ id="dx1-4064"></a> and <span
+class="cmss-10">seealso</span><a
+ id="dx1-4065"></a> keys automatically index the cross-reference when an entry
+ is defined. If false, the value of those keys will still be stored in their
+ corresponding fields (and can be accessed using commands like <span
+class="cmtt-10">\glsxtrusesee</span>
+ and <span
+class="cmtt-10">\glsxtruseseealso</span>) but cross-reference won&#8217;t be automatically
+ indexed.
+ <!--l. 690--><p class="noindent" >Note that the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-4066"></a> option automatically implements <a
+href="#styopt.autoseeindex"><span
+class="cmss-10">autoseeindex</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-4067"></a>.
+ </p><!--l. 693--><p class="noindent" >For example, if an entry is defined as
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-19">
+ \newglossaryentry{foo}{name={foo},description={},see={bar,baz}}
+</div>
+ <!--l. 696--><p class="nopar" > then with <span
+class="cmtt-10">autoseeindex=true</span>, this is equivalent to
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-20">
+ \newglossaryentry{foo}{name={foo},description={}}
+ &#x00A0;<br />\glssee{foo}{bar,baz}
+ &#x00A0;<br />\glossariesextrasetup{indexcrossrefs=true}
+ &#x00A0;<br />\GlsXtrSetField{foo}{see}{bar,baz}
+</div>
+ <!--l. 703--><p class="nopar" > but with <span
+class="cmtt-10">autoseeindex=false</span>, this is equivalent to
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-21">
+ \newglossaryentry{foo}{name={foo},description={}}
+ &#x00A0;<br />\GlsXtrSetField{foo}{see}{bar,baz}
+</div>
+ <!--l. 708--><p class="nopar" > Note that <a
+href="#styopt.indexcrossrefs"><span
+class="cmss-10">indexcrossrefs</span></a><a
+ id="dx1-4068"></a> isn&#8217;t automatically implemented by the presence of the
+ <span
+class="cmss-10">see</span><a
+ id="dx1-4069"></a> key when <a
+href="#styopt.autoseeindex"><span
+class="cmss-10">autoseeindex</span></a><a
+ id="dx1-4070"></a> is false.
+ </p><!--l. 713--><p class="noindent" >It&#8217;s therefore possible to remove the cross-references from the location lists and
+ set their position within the glossary style.
+ </p><!--l. 716--><p class="noindent" >Another method of preventing the automatic indexing is to define the entries
+ before the external indexing files have been opened with <span
+class="cmtt-10">\makeglossaries</span>.
+ Since the appropriate file isn&#8217;t open, the information can&#8217;t be written to it.
+ This will need the package option <span
+class="cmss-10">seenoindex=ignore </span>(provided by <span
+class="cmss-10">glossaries</span>) to
+ prevent an error occurring.
+ </p></dd><dt class="description">
+<a
+ id="styopt.record"></a><span
+class="cmssbx-10">record</span><a
+ id="dx1-4071"></a> </dt><dd
+class="description">(New to v1.08.) This is a &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; option provided for the benefit of
+ <a
+ id="dx1-4072"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> (see <a
+href="#sec:bib2gls"><span
+class="cmsy-10">&sect;</span>9 </a><a
+href="#sec:bib2gls"><span
+class="cmtt-10">bib2gls</span>: Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a>).
+ <!--l. 727--><p class="noindent" >The option may only be set in the preamble and can&#8217;t be used after
+ <span
+class="cmtt-10">\GlsXtrLoadResources</span>. If the value is missing <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-4073"></a> is assumed.
+ Permitted values:
+ </p><dl class="description"><dt class="description">
+ <span
+class="cmssbx-10">off</span> </dt><dd
+class="description">This is the default setting. The indexing is performed as normal using
+ either <span
+class="cmtt-10">\makeglossaries </span>or <span
+class="cmtt-10">\makenoidxglossaries</span>. This setting
+ implements <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=error</span><a
+ id="dx1-4074"></a>.
+ </dd><dt class="description">
+ <span
+class="cmssbx-10">only</span> </dt><dd
+class="description">The indexing is performed by <a
+ id="dx1-4075"></a><span
+class="cmtt-10">bib2gls </span>(see <a
+href="#sec:bib2gls"><span
+class="cmsy-10">&sect;</span>9 </a><a
+href="#sec:bib2gls"><span
+class="cmtt-10">bib2gls</span>:
+ Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a>). Neither <span
+class="cmtt-10">\makeglossaries </span>nor
+ <span
+class="cmtt-10">\makenoidxglossaries </span>is permitted. This setting implements
+ <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-4076"></a> and automatically loads the supplementary
+ <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-4077"></a> package. (There should be no need to explicitly
+ load <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-4078"></a>.)
+ <!--l. 742--><p class="noindent" >The glossaries should be displayed using <span
+class="cmtt-10">\printunsrtglossary </span>(or
+ <span
+class="cmtt-10">\printunsrtglossaries</span>).
+ </p><!--l. 745--><p class="noindent" >The document build process is (assuming the file is called <span
+class="cmtt-10">myDoc.tex</span>):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-22">
+ pdflatex&#x00A0;myDoc
+ &#x00A0;<br />bib2gls&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 751--><p class="nopar" >
+ </p><!--l. 753--><p class="noindent" >Note that <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-4079"></a> will prevent the <span
+class="cmss-10">see</span><a
+ id="dx1-4080"></a> from automatically
+ implementing <span
+class="cmtt-10">\glssee</span>. (<a
+ id="dx1-4081"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> deals with the <span
+class="cmss-10">see</span><a
+ id="dx1-4082"></a> field.) You
+ may explicitly use <span
+class="cmtt-10">\glssee </span>in the document, but <a
+ id="dx1-4083"></a><span
+class="cmtt-10">bib2gls </span>will
+ ignore the cross-reference if the <span
+class="cmss-10">see</span><a
+ id="dx1-4084"></a> field was already set for that
+ entry.
+ </p><!--l. 759--><p class="noindent" >The <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-4085"></a> option will automatically set the <span
+class="cmss-10">glossaries </span>package&#8217;s
+ <a
+href="#styopt.sort"><span
+class="cmss-10">sort</span></a><span
+class="cmss-10">=none</span><a
+ id="dx1-4086"></a> option if available. (That option value was only introduced to
+ <span
+class="cmss-10">glossaries </span>v4.30.)
+ </p></dd><dt class="description">
+ <span
+class="cmssbx-10">nameref</span> </dt><dd
+class="description">(New to v1.37 and requires <a
+ id="dx1-4087"></a><span
+class="cmtt-10">bib2gls </span>v1.8+.) This option is like
+ <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-4088"></a> but additionally records the current label information given by
+ <span
+class="cmtt-10">\@currentlabel </span>and <span
+class="cmtt-10">\@currentHref</span>, and provides a more reliable way of
+ saving the <span
+class="cmtt-10">\theH</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; for the given location. This option requires
+ <span
+class="cmss-10">hyperref</span><a
+ id="dx1-4089"></a> otherwise it will fall back on the usual location records.
+ Remember that <span
+class="cmtt-10">\@currentHref </span>is always globally updated whenever
+ <span
+class="cmtt-10">\refstepcounter </span>is used, but <span
+class="cmtt-10">\@currentlabel </span>isn&#8217;t. This can cause some
+ undesired side-effects with some settings. Remember also that the
+ <a
+href="#styopt.indexcounter"><span
+class="cmss-10">indexcounter</span></a><a
+ id="dx1-4090"></a> option increments the associated counter every time an entry
+ is indexed, which affects this option. See <a
+href="#sec:recordnameref"><span
+class="cmsy-10">&sect;</span>9.3.2 </a><a
+href="#sec:recordnameref">Nameref Record<!--tex4ht:ref: sec:recordnameref --></a> for further
+ details.
+ <!--l. 777--><p class="noindent" >This option is best used with <a
+href="#styopt.counter"><span
+class="cmss-10">counter</span></a><span
+class="cmss-10">=chapter</span><a
+ id="dx1-4091"></a> or <a
+href="#styopt.counter"><span
+class="cmss-10">counter</span></a><span
+class="cmss-10">=section</span><a
+ id="dx1-4092"></a> if you
+ want the title included in the location list. If the indexing counter is the
+ default <span
+class="cmss-10">page</span><a
+ id="dx1-4093"></a>, only the location number is shown. Similarly for
+ <a
+href="#styopt.counter"><span
+class="cmss-10">counter</span></a><span
+class="cmss-10">=equation</span><a
+ id="dx1-4094"></a> (or <a
+href="#styopt.equations"><span
+class="cmss-10">equations</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-4095"></a>).
+ </p></dd><dt class="description">
+ <span
+class="cmssbx-10">alsoindex</span> </dt><dd
+class="description">This is a hybrid setting that uses <a
+ id="dx1-4096"></a><span
+class="cmtt-10">bib2gls </span>to fetch entry information
+ from <span
+class="cmtt-10">.bib </span>files, but uses <a
+ id="dx1-4097"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> or <a
+ id="dx1-4098"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> to create the glossary
+ files. This option should be used with <span
+class="cmtt-10">\makeglossaries </span>but not
+ with its optional argument. This option should not be used with
+ <span
+class="cmtt-10">\makenoidxglossaries</span>. You may need to change the transcript file used
+ by <a
+ id="dx1-4099"></a><span
+class="cmtt-10">bib2gls </span>to avoid a clash with the transcript file used by <a
+ id="dx1-4100"></a><span
+class="cmtt-10">makeindex</span>
+ or <a
+ id="dx1-4101"></a><span
+class="cmtt-10">xindy</span>. (This can be done with <a
+ id="dx1-4102"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">--log-file</span></span></span> or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">-t</span></span></span>
+ option.)
+ <!--l. 794--><p class="noindent" >The glossaries should be displayed using <span
+class="cmtt-10">\printglossary </span>(or
+ <span
+class="cmtt-10">\printglossaries</span>). This option is expected to be used with <a
+ id="dx1-4103"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s
+ <span
+class="cmtt-10">sort=none </span>setting and so <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-4104"></a> is not automatically
+
+
+
+ loaded.
+ </p><!--l. 799--><p class="noindent" >The document build process is (assuming the file is called <span
+class="cmtt-10">myDoc.tex</span>):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-23">
+ pdflatex&#x00A0;myDoc
+ &#x00A0;<br />bib2gls&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+ &#x00A0;<br />makeglossaries&#x00A0;myDoc
+ &#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+ <!--l. 807--><p class="nopar" ></p></dd></dl>
+ <!--l. 810--><p class="noindent" >With the recording on (<a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-4105"></a> or <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=alsoindex</span><a
+ id="dx1-4106"></a>), any of the commands
+ that would typically index the entry (such as <span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glstext </span>or <span
+class="cmtt-10">\glsadd</span>)
+ will add a <span
+class="cmtt-10">\glsxtr@record </span>entry to the <span
+class="cmtt-10">.aux </span>file. <a
+ id="dx1-4107"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> can then
+ read these lines to find out which entries have been used. (Remember
+ that commands like <span
+class="cmtt-10">\glsentryname </span>don&#8217;t index, so any use of these
+ commands won&#8217;t add a corresponding <span
+class="cmtt-10">\glsxtr@record </span>entry to the
+ <span
+class="cmtt-10">.aux </span>file.) See <a
+href="#sec:bib2gls"><span
+class="cmsy-10">&sect;</span>9 </a><a
+href="#sec:bib2gls"><span
+class="cmtt-10">bib2gls</span>: Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a> for further
+ details.
+ </p></dd><dt class="description">
+<a
+ id="styopt.equations"></a><span
+class="cmssbx-10">equations</span><a
+ id="dx1-4108"></a> </dt><dd
+class="description">(New to v1.37.) This option will cause the default location counter to
+ automatically switch to <span
+class="cmss-10">equation</span><a
+ id="dx1-4109"></a> when inside a numbered equation
+ environment, such as <span
+class="cmss-10">equation</span><a
+ id="dx1-4110"></a><a
+ id="dx1-4111"></a> or <span
+class="cmss-10">align</span><a
+ id="dx1-4112"></a><a
+ id="dx1-4113"></a>. The counter can be explicitly overridden
+ with <span
+class="cmss-10">counter</span><a
+ id="dx1-4114"></a> in the optional arguments of commands like <span
+class="cmtt-10">\glslink </span>or <span
+class="cmtt-10">\gls </span>as
+ usual.
+ </dd><dt class="description">
+<a
+ id="styopt.floats"></a><span
+class="cmssbx-10">floats</span><a
+ id="dx1-4115"></a> </dt><dd
+class="description">(New to v1.37.) This option will cause the default location counter to
+ automatically switch to the corresponding counter when inside a floating
+ environment, such as <span
+class="cmss-10">figure</span><a
+ id="dx1-4116"></a><a
+ id="dx1-4117"></a> or <span
+class="cmss-10">table</span><a
+ id="dx1-4118"></a><a
+ id="dx1-4119"></a>. The counter can be explicitly overridden
+ with <span
+class="cmss-10">counter</span><a
+ id="dx1-4120"></a> in the optional arguments of commands like <span
+class="cmtt-10">\glslink </span>or <span
+class="cmtt-10">\gls </span>as
+ usual. Remember that within floats it&#8217;s the <span
+class="cmtt-10">\caption </span>command that
+ actually uses <span
+class="cmtt-10">\refstepcounter</span>, so indexing before the caption will
+ result in the wrong reference. The commands for use in captions and
+ sections, such as <span
+class="cmtt-10">\glsfmttext </span>and <span
+class="cmtt-10">\glsfmtshort</span>, don&#8217;t index. (See <a
+href="#sec:headtitle"><span
+class="cmsy-10">&sect;</span>4
+ </a><a
+href="#sec:headtitle">Entries in Sectioning Titles, Headers, Captions and Contents<!--tex4ht:ref: sec:headtitle --></a>). You may
+ want to consider using <span
+class="cmtt-10">\glsadd </span>after the caption (not before). For
+ example:
+
+
+
+ <div class="verbatim" id="verbatim-24">
+ \begin{figure}[htbp]
+ &#x00A0;<br />&#x00A0;&#x00A0;\centering
+ &#x00A0;<br />&#x00A0;&#x00A0;\includegraphics{example-image}
+ &#x00A0;<br />&#x00A0;&#x00A0;\caption{Sample&#x00A0;\glsfmttext{foobar}&#x00A0;figure}
+ &#x00A0;<br />&#x00A0;&#x00A0;\glsadd{foobar}
+ &#x00A0;<br />\end{figure}
+</div>
+ <!--l. 846--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="styopt.indexcounter"></a><span
+class="cmssbx-10">indexcounter</span><a
+ id="dx1-4121"></a> </dt><dd
+class="description">(New to v1.29.) This option (which doesn&#8217;t take a value) is primarily
+ intended for use with <a
+ id="dx1-4122"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> (v1.4+) and <span
+class="cmss-10">hyperref</span><a
+ id="dx1-4123"></a>. It can be used
+ with <a
+ id="dx1-4124"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> or <a
+ id="dx1-4125"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> but it will interfere with the <a
+ id="dx1-4126"></a><a
+href="#glo:numberlist">number list</a>
+ collation, so you won&#8217;t have ranges and you&#8217;ll have duplicate page numbers
+ present (but each page number will link to the relevant part of the page
+ where the indexing occurred). This option automatically implements
+ <a
+href="#styopt.counter"><span
+class="cmss-10">counter</span></a><span
+class="cmss-10">=wrglossary</span><a
+ id="dx1-4127"></a>.
+ <!--l. 857--><p class="noindent" ><div class="important" title="Important Note"> This option works by incrementing <span
+class="cmss-10">wrglossary</span><a
+ id="dx1-4128"></a> and adding <span
+class="cmtt-10">\label</span><a
+ id="dx1-4129"></a>. This can
+ cause a problem if the indexing occurs in an <span
+class="cmss-10">equation</span><a
+ id="dx1-4130"></a><a
+ id="dx1-4131"></a> environment as <span
+class="cmss-10">amsmath</span><a
+ id="dx1-4132"></a>
+ forbids multiple occurrences of <span
+class="cmtt-10">\label </span>(resulting in the &#8220;Multiple <span
+class="cmtt-10">\label</span>&#8217;s&#8221;
+ error). It&#8217;s best to change the counter to <span
+class="cmss-10">page</span><a
+ id="dx1-4133"></a> or <span
+class="cmss-10">equation</span><a
+ id="dx1-4134"></a> when in maths mode
+ with this option. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-25">
+ \renewcommand{\glslinkpresetkeys}{%
+ &#x00A0;<br />&#x00A0;\ifmmode&#x00A0;\setkeys{glslink}{counter=equation}\fi}
+ &#x00A0;<br />\renewcommand{\glsaddpresetkeys}{%
+ &#x00A0;<br />&#x00A0;\ifmmode&#x00A0;\setkeys{glossadd}{counter=equation}\fi}
+</div>
+ <!--l. 870--><p class="nopar" > </div>
+ </p><!--l. 871--><p class="noindent" >
+ </p><!--l. 873--><p class="noindent" >By default (with <span
+class="cmss-10">hyperref</span><a
+ id="dx1-4135"></a>), the page numbers in <a
+ id="dx1-4136"></a><a
+href="#glo:numberlist">number lists</a> link back to the
+ top of the relevant page (provided the format uses <span
+class="cmtt-10">\glshypernumber</span>). The
+ <a
+href="#styopt.indexcounter"><span
+class="cmss-10">indexcounter</span></a><a
+ id="dx1-4137"></a> option is designed to link back to the place within the page where
+ the indexing occurred. It does this by creating a new counter (called <span
+class="cmss-10">wrglossary</span><a
+ id="dx1-4138"></a>)
+ that&#8217;s incremented with <span
+class="cmtt-10">\refstepcounter </span>every time an entry is indexed (but
+ not via cross-referencing commands, such as <span
+class="cmtt-10">\glssee</span>). A <span
+class="cmtt-10">\label </span>is placed
+ immediately after the increment command allowing the back-referenced to be
+ obtained with <span
+class="cmtt-10">\pageref</span>. The location, as seen by the indexing application, is
+ the value of the <span
+class="cmss-10">wrglossary</span><a
+ id="dx1-4139"></a> counter but this value is substituted with the page
+ reference when <a
+ id="dx1-4140"></a>number list is typeset. Since the counter is used by all
+ entries and is incremented every time any indexing occurs, neither
+ <a
+ id="dx1-4141"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> nor <a
+ id="dx1-4142"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> can correctly collate the lists. For example, if the first
+ term to be referenced is indexed three times on page&#x00A0;5 without any
+ intervening terms then the actual locations obtained from <span
+class="cmss-10">wrglossary</span><a
+ id="dx1-4143"></a>
+ will be 1, 2 and 3, which <a
+ id="dx1-4144"></a><span
+class="cmtt-10">xindy </span>and <a
+ id="dx1-4145"></a><span
+class="cmtt-10">makeindex </span>will try to form into
+ the range 1&#8211;3, but they should actually all simply appear as page&#x00A0;5,
+ whereas it can actually end up with 5&#8211;5. Conversely, a range may not be
+ formed where it would naturally occur if just the <span
+class="cmss-10">page</span><a
+ id="dx1-4146"></a> counter was
+ used.
+ </p><!--l. 897--><p class="noindent" >Since <a
+ id="dx1-4147"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> is designed specifically to work with <span
+class="cmss-10">glossaries-extra</span>,
+ <a
+ id="dx1-4148"></a><span
+class="cmtt-10">bib2gls </span>(v1.4+) will check for <span
+class="cmss-10">wrglossary</span><a
+ id="dx1-4149"></a> locations. If the default
+ <span
+class="cmtt-10">--merge-wrglossary-records </span>is on, then any records for the same page
+ for a given entry will be merged. In the above example with three
+ references on page&#x00A0;5, only a single record for page&#x00A0;5 for that entry will be
+ added to the <a
+ id="dx1-4150"></a>number list and it will link back to the first instance on
+ that page. Whereas if you use the <span
+class="cmtt-10">--no-merge-wrglossary-records</span>
+ switch, the <a
+ id="dx1-4151"></a>number list will contain three instance of page&#x00A0;5, with
+ each linking to the corresponding place on that page. In both cases,
+ consecutive pages can form ranges, but it may look strange in the second
+ case.
+ </p><!--l. 910--><p class="noindent" >See the <a
+ id="dx1-4152"></a><span
+class="cmtt-10">bib2gls </span>documentation for the <span
+class="cmtt-10">save-index-counter </span>resource option
+ for more details.
+
+
+
+ </p></dd><dt class="description">
+<a
+ id="styopt.docdef"></a><span
+class="cmssbx-10">docdef</span><a
+ id="dx1-4153"></a> </dt><dd
+class="description">This option governs the use of <span
+class="cmtt-10">\newglossaryentry</span>. It was originally a
+ boolean option, but as from version 1.06, it can now take one of the following
+ values (if the value is omitted, <span
+class="cmss-10">true </span>is assumed):
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-4155"></a> is not permitted in the <span
+class="cmss-10">document</span><a
+ id="dx1-4156"></a><a
+ id="dx1-4157"></a> environment
+ (default).
+ </li>
+ <li class="itemize"><span
+class="cmtt-10">\newglossaryentry </span>behaves as it does in the base <span
+class="cmss-10">glossaries </span>package.
+ That is, where its use is permitted in the <span
+class="cmss-10">document</span><a
+ id="dx1-4159"></a><a
+ id="dx1-4160"></a> environment, it
+ uses the <span
+class="cmtt-10">.glsdefs </span>temporary file to store the entry definitions so
+ that on the next <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run the entries are defined at the beginning
+ of the <span
+class="cmss-10">document</span><a
+ id="dx1-4161"></a><a
+ id="dx1-4162"></a> environment. This allows the entry information
+ to be referenced in the glossary, even if the glossary occurs before
+ <span
+class="cmtt-10">\newglossaryentry</span>. (For example, when the glossary is displayed in
+ the front matter.) This method of saving the definitions for the next
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run has drawbacks that are detailed in the <span
+class="cmss-10">glossaries </span>user
+ manual.
+ <!--l. 934--><p class="noindent" >Remember that if <span
+class="cmtt-10">\newglossaryentry </span>wouldn&#8217;t be allowed in the
+ <span
+class="cmss-10">document</span><a
+ id="dx1-4163"></a><a
+ id="dx1-4164"></a> environment with the base <span
+class="cmss-10">glossaries </span>package, then it still
+ won&#8217;t be allowed with <a
+href="#styopt.docdefs"><span
+class="cmss-10">docdefs</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-4165"></a>. If your glossaries occur at the
+ end of the document, consider using <a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><span
+class="cmss-10">=restricted</span><a
+ id="dx1-4166"></a> instead.
+ </p></li>
+ <li class="itemize">(new to version 1.06) <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-4168"></a> is permitted in the
+ <span
+class="cmss-10">document</span><a
+ id="dx1-4169"></a><a
+ id="dx1-4170"></a> environment without using the <span
+class="cmtt-10">.glsdefs </span>file. This means
+ that all entries must be defined before the glossary is displayed, but
+ it avoids the complications associated with saving the entry details
+ in a temporary file. You will still need to take care about any changes
+ made to characters that are required by the &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;=&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; mechanism
+ (that is, the comma and equal sign) and any <a
+ id="dx1-4171"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> or <a
+ id="dx1-4172"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a>
+ character that occurs in the <span
+class="cmss-10">sort</span><a
+ id="dx1-4173"></a> key or label. If any of those characters
+ are made active in the document, then it can cause problems with
+ the entry definition. This option will allow <span
+class="cmtt-10">\newglossaryentry </span>to
+ be used in the document with <span
+class="cmtt-10">\makenoidxglossaries</span>, but note that
+ <span
+class="cmtt-10">\longnewglossaryentry </span>remains a preamble-only command.
+ <!--l. 957--><p class="noindent" >With this option, if an entry appears in the glossary before it has been
+ defined, an error will occur (or a warning if the <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-4174"></a>
+ option is used.) If you edit your document and either remove an entry
+ or change its label, you may need to delete the document&#8217;s temporary
+ files (such as the <span
+class="cmtt-10">.aux </span>and <span
+class="cmtt-10">.gls </span>files).
+ </p></li>
+ <li class="itemize">(new to version 1.34) This option behaves like <a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><span
+class="cmss-10">=restricted</span><a
+ id="dx1-4176"></a> but
+ creates the <span
+class="cmtt-10">.glsdefs </span>file for <a
+href="https://atom.io/packages/autocomplete-glossaries" >atom&#8217;s autocomplete support</a>. This file
+ isn&#8217;t input by <span
+class="cmss-10">glossaries-extra </span>and so associated problems with the
+
+
+
+ use of this file are avoided, but it allows the autocomplete support
+ to find the labels in the file. As with <a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><span
+class="cmss-10">=restricted</span><a
+ id="dx1-4177"></a>, entries may
+ be defined in the preamble or anywhere in the document, but they
+ may only be referenced after they have been defined. Entries must
+ be defined before the associated glossary is displayed.
+ </li></ul>
+ <!--l. 978--><p class="noindent" >The <span
+class="cmss-10">glossaries </span>package allows <span
+class="cmtt-10">\newglossaryentry </span>within the <span
+class="cmss-10">document</span><a
+ id="dx1-4178"></a><a
+ id="dx1-4179"></a>
+ environment (when used with <a
+ id="dx1-4180"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> or <a
+ id="dx1-4181"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a>) but the user manual warns
+ against this usage. By default the <span
+class="cmss-10">glossaries-extra </span>package <span
+class="cmti-10">prohibits </span>this, only
+ allowing definitions within the preamble. If you are really determined to define
+ entries in the <span
+class="cmss-10">document</span><a
+ id="dx1-4182"></a><a
+ id="dx1-4183"></a> environment, despite all the associated drawbacks, you
+ can restore this with <a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-4184"></a>. Note that this doesn&#8217;t change the
+ prohibitions that the <span
+class="cmss-10">glossaries </span>package has in certain circumstances (for
+ example, when using &#8220;option&#x00A0;1&#8221;). See the <span
+class="cmss-10">glossaries </span>user manual for
+ further details. A better option if document definitions are required
+ is <a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><span
+class="cmss-10">=restricted</span><a
+ id="dx1-4185"></a>. Only use <a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-4186"></a> if document definitions
+ are necessary and one or more of the glossaries occurs in the front
+ matter.
+ </p><!--l. 995--><p class="noindent" >This option affects commands that internally use <span
+class="cmtt-10">\newglossaryentry</span>, such as
+ <span
+class="cmtt-10">\newabbreviation</span>, but not the &#8220;on-the-fly&#8221; commands described in <a
+href="#sec:onthefly"><span
+class="cmsy-10">&sect;</span>8
+ </a><a
+href="#sec:onthefly">On-the-Fly Document Definitions<!--tex4ht:ref: sec:onthefly --></a>.
+ </p></dd><dt class="description">
+<a
+ id="styopt.nomissingglstext"></a><span
+class="cmssbx-10">nomissingglstext</span><a
+ id="dx1-4187"></a> </dt><dd
+class="description">This is a boolean option. If true, this will suppress the
+ warning written to the transcript and the warning text that will appear
+ in the document if the external glossary files haven&#8217;t been generated
+ due to an incomplete document build. However, it&#8217;s probably simpler
+ just to fix whatever has caused the failure to build the external file or
+ files.
+ </dd><dt class="description">
+<a
+ id="styopt.abbreviations"></a><span
+class="cmssbx-10">abbreviations</span><a
+ id="dx1-4188"></a> </dt><dd
+class="description">This option has no value and can&#8217;t be cancelled. If used, it will
+ automatically create a new glossary with the label <span
+class="cmtt-10">abbreviations </span>and
+ redefines <span
+class="cmtt-10">\glsxtrabbrvtype </span>to this label. In addition, it defines a shortcut
+ command
+ <!--l. 1013--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printabbreviations</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4189"></a> <span
+class="cmtt-10">\printabbreviations[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1015--><p class="noindent" >
+ which is equivalent to </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\printglossary[type=\glsxtrabbrvtype,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+
+
+
+</div>
+ </div> If <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-4190"></a> is also loaded then this option will additionally
+ provide:
+ <!--l. 1022--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtabbreviations</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4191"></a> <span
+class="cmtt-10">\printunsrtabbreviations[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+ </div><hr>
+ </p><!--l. 1024--><p class="noindent" >
+ which uses <span
+class="cmtt-10">\printunsrtglossary</span><a
+ id="dx1-4192"></a>.
+ </p><!--l. 1027--><p class="noindent" >The title of the new glossary is given by
+ </p><!--l. 1028--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\abbreviationsname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4193"></a> <span
+class="cmtt-10">\abbreviationsname </span></div><hr>
+ </p><!--l. 1030--><p class="noindent" >
+ If this command is already defined, it&#8217;s left unchanged. Otherwise it&#8217;s defined
+ to &#8220;Abbreviations&#8221; if <span
+class="cmss-10">babel</span><a
+ id="dx1-4194"></a> hasn&#8217;t been loaded or <span
+class="cmtt-10">\acronymname </span>if
+ <span
+class="cmss-10">babel</span><a
+ id="dx1-4195"></a> has been loaded. However, if you&#8217;re using <span
+class="cmss-10">babel</span><a
+ id="dx1-4196"></a> it&#8217;s likely you
+ will need to change this. (See <a
+href="#sec:lang"><span
+class="cmsy-10">&sect;</span>13 </a><a
+href="#sec:lang">Multi-Lingual Support<!--tex4ht:ref: sec:lang --></a> for further
+ details.)
+ </p><!--l. 1037--><p class="noindent" ><div class="important" title="Important Note"> If you don&#8217;t use the <a
+href="#styopt.abbreviations"><span
+class="cmss-10">abbreviations</span></a><a
+ id="dx1-4197"></a> package option, the <span
+class="cmtt-10">\abbreviationsname</span>
+ command won&#8217;t be defined (unless it&#8217;s defined by an included language file).
+ </div>
+ </p><!--l. 1041--><p class="noindent" >
+ </p><!--l. 1043--><p class="noindent" >If the <a
+href="#styopt.abbreviations"><span
+class="cmss-10">abbreviations</span></a><a
+ id="dx1-4198"></a> option is used and the <a
+href="#styopt.acronym"><span
+class="cmss-10">acronym</span></a><a
+ id="dx1-4199"></a> option provided by the
+ <span
+class="cmss-10">glossaries </span>package hasn&#8217;t been used, then <span
+class="cmtt-10">\acronymtype</span><a
+ id="dx1-4200"></a> will be set to
+ <span
+class="cmtt-10">\glsxtrabbrvtype</span><a
+ id="dx1-4201"></a> so that acronyms defined with <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-4202"></a> can be added
+ to the list of abbreviations. If you want acronyms in the <span
+class="cmtt-10">main </span>glossary and
+ other abbreviations in the <span
+class="cmtt-10">abbreviations </span>glossary then you will need to
+ redefine <span
+class="cmtt-10">\acronymtype </span>to <span
+class="cmtt-10">main</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-26">
+ \renewcommand*{\acronymtype}{main}
+</div>
+ <!--l. 1053--><p class="nopar" >
+ </p><!--l. 1055--><p class="noindent" >Note that there are no analogous options to the <span
+class="cmss-10">glossaries </span>package&#8217;s <a
+href="#styopt.acronymlists"><span
+class="cmss-10">acronymlists</span></a><a
+ id="dx1-4203"></a>
+ option (or associated commands) as the abbreviation mechanism is handled
+ differently with <span
+class="cmss-10">glossaries-extra</span>.
+ </p></dd><dt class="description">
+<a
+ id="styopt.symbols"></a><span
+class="cmssbx-10">symbols</span><a
+ id="dx1-4204"></a> </dt><dd
+class="description">This is passed to <span
+class="cmss-10">glossaries </span>but will additionally define
+ <!--l. 1062--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnewsymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4205"></a> <span
+class="cmtt-10">\glsxtrnewsymbol[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">symbol</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ </div><hr>
+ </p><!--l. 1064--><p class="noindent" >
+ which is equivalent to </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\newglossaryentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">name={</span>&#x27E8;<span
+class="cmitt-10">symbol</span>&#x27E9;<span
+class="cmtt-10">},</span>
+ <br /><span
+class="cmtt-10">&#x00A0;sort={</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">},type=symbols,category=symbol,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmsy-10">}</span>
+</div>
+ </div> Note that the <span
+class="cmss-10">sort</span><a
+ id="dx1-4206"></a> key is set to the &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; not the &#x27E8;<span
+class="cmti-10">symbol</span>&#x27E9; as the symbol will
+ likely contain commands.
+ <!--l. 1073--><p class="noindent" >If <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-4207"></a> is also loaded then this option will additionally
+ provide:
+ </p><!--l. 1075--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtsymbols</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4208"></a> <span
+class="cmtt-10">\printunsrtsymbols[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1077--><p class="noindent" >
+ which uses <span
+class="cmtt-10">\printunsrtglossary</span><a
+ id="dx1-4209"></a>.
+ </p></dd><dt class="description">
+<a
+ id="styopt.numbers"></a><span
+class="cmssbx-10">numbers</span><a
+ id="dx1-4210"></a> </dt><dd
+class="description">This is passed to <span
+class="cmss-10">glossaries </span>but will additionally define
+ <!--l. 1082--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnewnumber</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4211"></a> <span
+class="cmtt-10">\glsxtrnewnumber[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">number</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 1084--><p class="noindent" >
+ which is equivalent to </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\newglossaryentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">name={</span>&#x27E8;<span
+class="cmitt-10">number</span>&#x27E9;<span
+class="cmtt-10">},</span>
+ <br /><span
+class="cmtt-10">&#x00A0;sort={</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">},type=numbers,category=number,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmsy-10">}</span>
+
+
+
+</div>
+ </div>
+ <!--l. 1091--><p class="noindent" >If <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-4212"></a> is also loaded then this option will additionally
+ provide:
+ </p><!--l. 1093--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtnumbers</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4213"></a> <span
+class="cmtt-10">\printunsrtnumbers[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1095--><p class="noindent" >
+ which uses <span
+class="cmtt-10">\printunsrtglossary</span><a
+ id="dx1-4214"></a>.
+ </p></dd><dt class="description">
+<a
+ id="styopt.acronyms"></a><span
+class="cmssbx-10">acronyms</span><a
+ id="dx1-4215"></a> <span
+class="cmbx-10">(or </span><a
+ id="styopt.acronym"></a><span
+class="cmssbx-10">acronym</span><a
+ id="dx1-4216"></a><span
+class="cmbx-10">)</span> </dt><dd
+class="description">This is passed to <span
+class="cmss-10">glossaries </span>but if <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-4217"></a> is
+ also loaded then this option will additionally provide:
+ <!--l. 1102--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtacronyms</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4218"></a> <span
+class="cmtt-10">\printunsrtacronyms[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1104--><p class="noindent" >
+ which uses <span
+class="cmtt-10">\printunsrtglossary</span><a
+ id="dx1-4219"></a>.
+ </p><!--l. 1107--><p class="noindent" ><div class="important" title="Important Note"> This option defines a new glossary with the label <span
+class="cmtt-10">acronym </span>not <span
+class="cmtt-10">acronyms</span>. You
+ may find it easier to reference it with the command <span
+class="cmtt-10">\acronymtype</span><a
+ id="dx1-4220"></a>.
+ </div>
+ </p><!--l. 1111--><p class="noindent" >
+ </p></dd><dt class="description">
+<a
+ id="styopt.index"></a><span
+class="cmssbx-10">index</span><a
+ id="dx1-4221"></a> </dt><dd
+class="description">This is passed to <span
+class="cmss-10">glossaries </span>but if <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-4222"></a> is also loaded then this
+ option will additionally provide:
+ <!--l. 1117--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtindex</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4223"></a> <span
+class="cmtt-10">\printunsrtindex[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+ </p><!--l. 1119--><p class="noindent" >
+ which uses <span
+class="cmtt-10">\printunsrtglossary</span><a
+ id="dx1-4224"></a>.
+ </p></dd><dt class="description">
+<a
+ id="styopt.shortcuts"></a><span
+class="cmssbx-10">shortcuts</span><a
+ id="dx1-4225"></a> </dt><dd
+class="description">Unlike the <span
+class="cmss-10">glossaries </span>package option of the same name, this option isn&#8217;t
+ boolean but has multiple values:
+ <ul class="itemize1">
+ <li class="itemize"><a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=acronyms</span><a
+ id="dx1-4226"></a> (or <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=acro</span><a
+ id="dx1-4227"></a>): set the shortcuts provided
+ by the <span
+class="cmss-10">glossaries </span>package for acronyms (such as <span
+class="cmtt-10">\ac</span>). Note that the
+ short and long forms don&#8217;t use <span
+class="cmtt-10">\glsxtrshort </span>and <span
+class="cmtt-10">\glsxtrlong </span>but
+ use the original <span
+class="cmtt-10">\acrshort </span>and <span
+class="cmtt-10">\acrlong</span>, which don&#8217;t recognise
+ multiple abbreviation styles. The better option with <span
+class="cmss-10">glossaries-extra</span>
+ is <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=ac</span><a
+ id="dx1-4228"></a>.
+ </li>
+ <li class="itemize"><a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=ac</span><a
+ id="dx1-4229"></a>: set the shortcuts provided by the <span
+class="cmss-10">glossaries </span>package for
+ acronyms (such as <span
+class="cmtt-10">\ac</span>) but uses the <span
+class="cmss-10">glossaries-extra </span>interface (such
+ as <span
+class="cmtt-10">\glsxtrshort </span>rather than <span
+class="cmtt-10">\acrshort</span>). In this case <span
+class="cmtt-10">\ac </span>is defined
+ as <span
+class="cmtt-10">\cgls </span>rather than <span
+class="cmtt-10">\gls</span>.
+
+
+
+ </li>
+ <li class="itemize"><a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=abbreviations</span><a
+ id="dx1-4230"></a> (or <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=abbr</span><a
+ id="dx1-4231"></a>):
+ set the abbreviation shortcuts provided by <span
+class="cmss-10">glossaries-extra</span>. (See <a
+href="#sec:abbrshortcuts"><span
+class="cmsy-10">&sect;</span>3.3
+ </a><a
+href="#sec:abbrshortcuts">Shortcut Commands<!--tex4ht:ref: sec:abbrshortcuts --></a>.) These settings don&#8217;t switch on the acronym
+ shortcuts provided by the <span
+class="cmss-10">glossaries </span>package.
+ </li>
+ <li class="itemize"><a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=other</span><a
+ id="dx1-4232"></a>: set the &#8220;other&#8221; shortcut commands, but not the shortcut
+ commands for abbreviations or the acronym shortcuts provided by
+ <span
+class="cmss-10">glossaries</span>. The &#8220;other&#8221; shortcuts are:
+ <ul class="itemize2">
+ <li class="itemize"><span
+class="cmtt-10">\newentry</span><a
+ id="dx1-4233"></a> equivalent to <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-4234"></a>
+ </li>
+ <li class="itemize"><span
+class="cmtt-10">\newsym</span><a
+ id="dx1-4235"></a> equivalent to <span
+class="cmtt-10">\glsxtrnewsymbol</span><a
+ id="dx1-4236"></a> (see the <a
+href="#styopt.symbols"><span
+class="cmss-10">symbols</span></a><a
+ id="dx1-4237"></a>
+ option).
+ </li>
+ <li class="itemize"><span
+class="cmtt-10">\newnum</span><a
+ id="dx1-4238"></a> equivalent to <span
+class="cmtt-10">\glsxtrnewnumber</span><a
+ id="dx1-4239"></a> (see the <a
+href="#styopt.numbers"><span
+class="cmss-10">numbers</span></a><a
+ id="dx1-4240"></a>
+ option).</li></ul>
+ </li>
+ <li class="itemize"><a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=all</span><a
+ id="dx1-4241"></a> (or <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=true</span><a
+ id="dx1-4242"></a>): implements <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=ac</span><a
+ id="dx1-4243"></a>,
+ <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=abbreviations</span><a
+ id="dx1-4244"></a> and <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=other</span><a
+ id="dx1-4245"></a>.
+ </li>
+ <li class="itemize"><a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=none</span><a
+ id="dx1-4246"></a> (or <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-4247"></a>): don&#8217;t define any of the shortcut
+ commands (default).</li></ul>
+ <!--l. 1167--><p class="noindent" >Note that multiple invocations of the <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><a
+ id="dx1-4248"></a> option <span
+class="cmti-10">within the same option</span>
+ <span
+class="cmti-10">list </span>will override each other.</p></dd></dl>
+<!--l. 1171--><p class="indent" > After the <span
+class="cmss-10">glossaries-extra </span>package has been loaded, you can set available options
+using
+</p><!--l. 1173--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossariesextrasetup</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-4249"></a> <span
+class="cmtt-10">\glossariesextrasetup{</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1175--><p class="noindent" >
+The <a
+href="#styopt.abbreviations"><span
+class="cmss-10">abbreviations</span></a><a
+ id="dx1-4250"></a> and <a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><a
+ id="dx1-4251"></a> options may only be used in the preamble. Additionally,
+<a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><a
+ id="dx1-4252"></a> can&#8217;t be used after <span
+class="cmtt-10">\makenoidxglossaries</span><a
+ id="dx1-4253"></a>.
+
+
+
+</p>
+<!--l. 1180--><p class="indent" > </div>
+</p><!--l. 1180--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">2. <a
+ id="sec:modifications"></a>Modifications to Existing Commands and Styles</h2>
+</p><!--l. 1183--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package provides <span
+class="cmtt-10">\nopostdesc</span><a
+ id="dx1-5001"></a> which may be used in the <span
+class="cmss-10">description</span><a
+ id="dx1-5002"></a>
+to suppress the post-description hook. The <span
+class="cmss-10">glossaries-extra </span>package provides another
+command
+</p><!--l. 1187--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnopostpunc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-5003"></a> <span
+class="cmtt-10">\glsxtrnopostpunc </span></div><hr>
+</p><!--l. 1189--><p class="noindent" >
+which has a similar function but only suppresses the post-description punctuation. It
+doesn&#8217;t suppress the use of <span
+class="cmtt-10">\glsxtrpostdescription </span>which allows the use of
+category-dependent post-description hooks. (Note that the punctuation,
+which is in the original base hook <span
+class="cmtt-10">\glspostdescription</span>, comes after the
+extended post-description hook <span
+class="cmtt-10">\glsxtrpostdescription </span>not before.) The
+post-description hook can counter-act the effect of <span
+class="cmtt-10">\glsxtrnopostpunc</span>
+using
+</p><!--l. 1198--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrrestorepostpunc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-5004"></a> <span
+class="cmtt-10">\glsxtrrestorepostpunc </span></div><hr>
+</p><!--l. 1200--><p class="noindent" >
+These commands have no effect outside of the glossary (except with standalone
+entries that use <span
+class="cmtt-10">\glsxtractivatenopost </span>and <span
+class="cmtt-10">\glspostdescription</span>, see <a
+href="#sec:glossentry"><span
+class="cmsy-10">&sect;</span>10.3
+</a><a
+href="#sec:glossentry">Standalone Entry Items<!--tex4ht:ref: sec:glossentry --></a>).
+</p><!--l. 1205--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package provides
+</p><!--l. 1206--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsseeitemformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-5005"></a> <span
+class="cmtt-10">\glsseeitemformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1208--><p class="noindent" >
+to format items in a cross-reference list (identified with the <span
+class="cmss-10">see</span><a
+ id="dx1-5006"></a> key or <span
+class="cmtt-10">\glssee</span>). This
+was originally defined to use <span
+class="cmtt-10">\glsentryname{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>since it makes more sense for the
+cross-reference to match the way the term appears in the glossary. Unfortunately this
+caused a problem when the <span
+class="cmss-10">name</span><a
+ id="dx1-5007"></a> field was sanitized, which used to be the default
+setting, so <span
+class="cmss-10">glossaries </span>v3.0 changed the default definition of this command to
+use <span
+class="cmtt-10">\glsentrytext </span>instead. Since the <span
+class="cmss-10">name</span><a
+ id="dx1-5008"></a> and <span
+class="cmss-10">text</span><a
+ id="dx1-5009"></a> field are quite often
+the same, this change usually doesn&#8217;t have a noticeable effect. However,
+now that the <span
+class="cmss-10">name</span><a
+ id="dx1-5010"></a> field is no longer sanitized (following the redesign of
+<span
+class="cmss-10">glossaries </span>v4.0) it makes more sense to restore this command to its original
+behaviour, but to take account of abbreviations <span
+class="cmss-10">glossaries-extra </span>redefines this
+as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-27">
+\renewcommand*{\glsseeitemformat}[1]{%
+&#x00A0;<br />&#x00A0;\ifglshasshort{\glslabel}{\glsaccesstext{#1}}{\glsaccessname{#1}}%
+&#x00A0;<br />}
+</div>
+<!--l. 1227--><p class="nopar" > If you want to restore the <span
+class="cmss-10">glossaries </span>v3.0+ definition just do:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-28">
+\renewcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}}
+</div>
+<!--l. 1231--><p class="nopar" > The <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-5011"></a> package provides <span
+class="cmtt-10">\glsxtrhiername</span><a
+ id="dx1-5012"></a> and its case-changing
+variants that may be used within the definition of <span
+class="cmtt-10">\glsseeitemformat </span>if required.
+These display the hierarchy for sub-entries rather than just the name, which may be
+more helpful in cross-references. See <a
+href="#sec:see"><span
+class="cmsy-10">&sect;</span>2.2 </a><a
+href="#sec:see">Cross-References (&#8220;see&#8221; and &#8220;see also&#8221;)<!--tex4ht:ref: sec:see --></a> for
+further details.
+</p><!--l. 1239--><p class="indent" > The commands used by <span
+class="cmss-10">glossaries </span>to automatically produce an error if an entry is
+undefined (such as <span
+class="cmtt-10">\glsdoifexists</span><a
+ id="dx1-5013"></a>) are changed to take the <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><a
+ id="dx1-5014"></a> option into
+account.
+</p><!--l. 1243--><p class="indent" > The <span
+class="cmtt-10">\newignoredglossary</span><a
+ id="dx1-5015"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">type</span>&#x27E9;<span
+class="cmtt-10">} </span>command now (as from v1.11) has a starred
+version that doesn&#8217;t automatically switch off the hyperlinks. This starred version may
+be used with the <a
+href="#catattr.targeturl"><span
+class="cmss-10">targeturl</span></a><a
+ id="dx1-5016"></a> attribute to create a link to an external URL. (See <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5
+</a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further details.) As from v1.12 both the starred and unstarred version
+check that the glossary doesn&#8217;t already exist. (The <span
+class="cmss-10">glossaries </span>package omits this
+check.)
+</p><!--l. 1252--><p class="indent" > You can now provide an ignored glossary with:
+</p><!--l. 1253--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\provideignoredglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-5017"></a> <span
+class="cmtt-10">\provideignoredglossary{</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1255--><p class="noindent" >
+which will only define the glossary if it doesn&#8217;t already exist. This also has a starred
+version that doesn&#8217;t automatically switch off hyperlinks.
+</p><!--l. 1260--><p class="indent" > The individual glossary displaying commands <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-5018"></a>, <span
+class="cmtt-10">\printnoidxglossary</span><a
+ id="dx1-5019"></a>
+and <span
+class="cmtt-10">\printunsrtglossary </span>have two extra keys:
+</p>
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmss-10">target</span><a
+ id="dx1-5020"></a>. This is a boolean key which can be used to switch off the automatic
+ hypertarget for each entry. Unlike <span
+class="cmtt-10">\glsdisablehyper </span>this doesn&#8217;t switch
+ off hyperlinks, so any cross-references within the glossary won&#8217;t be affected.
+ This is a way of avoiding duplicate target warnings if a glossary needs to
+ be displayed multiple times.
+ </li>
+ <li class="itemize"><span
+class="cmss-10">targetnameprefix</span><a
+ id="dx1-5021"></a><span
+class="cmtt-10">={</span>&#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>. Another way of avoiding duplicate target names
+ is to set a prefix used for the names. Unlike changing <span
+class="cmtt-10">\glolinkprefix</span>
+ this doesn&#8217;t affect any hyperlinks (such as those created with <span
+class="cmtt-10">\gls</span>).
+ </li>
+ <li class="itemize"><span
+class="cmss-10">prefix</span><a
+ id="dx1-5022"></a><span
+class="cmtt-10">={</span>&#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>. If you do actually want to locally change <span
+class="cmtt-10">\glolinkprefix</span>,
+ you can use the <span
+class="cmss-10">prefix</span><a
+ id="dx1-5023"></a> key instead. You need to use the matching <span
+class="cmss-10">prefix</span><a
+ id="dx1-5024"></a>
+ key in commands like <span
+class="cmtt-10">\gls</span>.
+ </li>
+ <li class="itemize"><span
+class="cmss-10">label</span><a
+ id="dx1-5025"></a><span
+class="cmtt-10">={</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>. Labels the glossary with <span
+class="cmtt-10">\label{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>and also defines
+
+
+
+ <span
+class="cmtt-10">\@currentlabelname </span>to the glossary&#8217;s TOC title (to provide text for
+ <span
+class="cmtt-10">\nameref</span>). You can also set the label before the glossary using:
+ <!--l. 1288--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsetglossarylabel</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-5026"></a> <span
+class="cmtt-10">\glsxtrsetglossarylabel{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 1290--><p class="noindent" >
+ but take care of duplicate labels if it&#8217;s not scoped.</p></li></ul>
+<!--l. 1294--><p class="indent" > The <span
+class="cmtt-10">\newglossaryentry </span>command has three new keys: </p>
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmss-10">category</span><a
+ id="dx1-5027"></a>, which sets the category label for the given entry. By default this
+ is <span
+class="cmtt-10">general</span>. See <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5 </a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further information about categories.
+ </li>
+ <li class="itemize"><span
+class="cmss-10">alias</span><a
+ id="dx1-5028"></a>, which allows an entry to be alias to another entry. See <a
+href="#sec:alias"><span
+class="cmsy-10">&sect;</span>10.4 </a><a
+href="#sec:alias">Entry
+ Aliases<!--tex4ht:ref: sec:alias --></a> for further details.
+ </li>
+ <li class="itemize"><span
+class="cmss-10">seealso</span><a
+ id="dx1-5029"></a>, which performs much like <span
+class="cmss-10">see</span><a
+ id="dx1-5030"></a>, but allows for separate &#8220;see&#8221; and
+ &#8220;see also&#8221; treatment. See <a
+href="#sec:see"><span
+class="cmsy-10">&sect;</span>2.2 </a><a
+href="#sec:see">Cross-References (&#8220;see&#8221; and &#8220;see also&#8221;)<!--tex4ht:ref: sec:see --></a> for
+ further details.</li></ul>
+<!--l. 1306--><p class="noindent" >The test file <span
+class="cmtt-10">example-glossaries-xr.tex </span>contains dummy entries with a mixture of
+<span
+class="cmss-10">see</span><a
+ id="dx1-5031"></a>, <span
+class="cmss-10">alias</span><a
+ id="dx1-5032"></a> and <span
+class="cmss-10">seealso</span><a
+ id="dx1-5033"></a> keys for use with minimal working examples. There are also
+<span
+class="cmtt-10">example-glossaries-*.bib </span>files that correspond to each <span
+class="cmtt-10">example-glossaries-*.tex</span>
+file for testing <a
+ id="dx1-5034"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>.
+</p><!--l. 1313--><p class="indent" > The <span
+class="cmtt-10">\longnewglossaryentry </span>command now has a starred version (as from v1.12)
+that doesn&#8217;t automatically insert
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-29">
+\leavevmode\unskip\nopostdesc
+</div>
+<!--l. 1317--><p class="nopar" > at the end of the description field.
+</p><!--l. 1319--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\longnewglossaryentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-5035"></a> <span
+class="cmtt-10">\longnewglossaryentry*{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">description</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1321--><p class="noindent" >
+The <span
+class="cmss-10">descriptionplural</span><a
+ id="dx1-5036"></a> key is left unset unless explicitly set in &#x27E8;<span
+class="cmti-10">options</span>&#x27E9;.
+</p><!--l. 1325--><p class="indent" > The unstarred version no longer hard-codes the above code (which removes
+trailing space and suppresses the post-description hook) but instead uses:
+</p><!--l. 1328--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostlongdescription</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-5037"></a> <span
+class="cmtt-10">\glsxtrpostlongdescription </span></div><hr>
+</p><!--l. 1330--><p class="noindent" >
+This can be redefined to allow the post-description hook to work but retain the
+<span
+class="cmtt-10">\unskip </span>part if required. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-30">
+\renewcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip}
+</div>
+<!--l. 1336--><p class="nopar" > This will discarded unwanted trailing space at the end of the description but won&#8217;t
+suppress the post-description hook.
+</p><!--l. 1340--><p class="indent" > The unstarred version also alters the base <span
+class="cmss-10">glossaries</span><a
+ id="dx1-5038"></a> package&#8217;s treatment of the
+<span
+class="cmss-10">descriptionplural</span><a
+ id="dx1-5039"></a> key. Since a plural description doesn&#8217;t make much sense for
+multi-paragraph descriptions, the default behaviour with <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-5040"></a>&#8217;s
+<span
+class="cmtt-10">\longnewglossaryentry </span>is to simply leave the plural description unset
+unless explicitly set using the <span
+class="cmss-10">descriptionplural</span><a
+ id="dx1-5041"></a> key. The <span
+class="cmss-10">glossaries.sty </span>version
+of this command sets the description&#8217;s plural form to the same as the
+singular.<span class="footnote-mark"><a
+href="#fn1x2" id="fn1x2-bk"><sup class="textsuperscript">2.1</sup></a></span><a
+ id="x1-5042f1"></a>
+</p><!--l. 1355--><p class="indent" > Note that this modified unstarred version doesn&#8217;t append <span
+class="cmtt-10">\glsxtrpostlongdescription</span>
+to the description&#8217;s plural form.
+</p><!--l. 1358--><p class="indent" > The <span
+class="cmtt-10">\newterm</span><a
+ id="dx1-5048"></a> command (defined through the <a
+href="#styopt.index"><span
+class="cmss-10">index</span></a><a
+ id="dx1-5049"></a> package option) is modified
+so that the category defaults to <span
+class="cmss-10">index</span><a
+ id="dx1-5050"></a>. The <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-5051"></a> command is modified
+to use the new abbreviation interface provided by <span
+class="cmss-10">glossaries-extra</span>. (See <a
+href="#sec:abbreviations"><span
+class="cmsy-10">&sect;</span>3
+</a><a
+href="#sec:abbreviations">Abbreviations<!--tex4ht:ref: sec:abbreviations --></a>.)
+</p><!--l. 1364--><p class="indent" > The <span
+class="cmtt-10">\makeglossaries </span>command now has an optional argument.
+</p><!--l. 1365--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\makeglossaries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-5052"></a> <span
+class="cmtt-10">\makeglossaries[</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 1367--><p class="noindent" >
+If &#x27E8;<span
+class="cmti-10">list</span>&#x27E9; is empty, <span
+class="cmtt-10">\makeglossaries </span>behaves as per its original definition in the
+<span
+class="cmss-10">glossaries </span>package, otherwise &#x27E8;<span
+class="cmti-10">list</span>&#x27E9; can be a comma-separated list of glossaries that
+need processing with an external indexing application.
+</p><!--l. 1373--><p class="indent" > This command is not permitted with the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-5053"></a> package option. Without
+the optional argument, it&#8217;s permitted with <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=alsoindex</span><a
+ id="dx1-5054"></a>. With the optional
+argument, it&#8217;s only permitted with the default <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=off</span><a
+ id="dx1-5055"></a>.
+</p><!--l. 1378--><p class="indent" > It should then be possible to use <span
+class="cmtt-10">\printglossary </span>for those glossaries listed in &#x27E8;<span
+class="cmti-10">list</span>&#x27E9;
+and <span
+class="cmtt-10">\printnoidxglossary </span>for the other glossaries. (See the accompanying file
+<span
+class="cmtt-10">sample-mixedsort.tex </span>for an example.)
+</p><!--l. 1383--><p class="indent" > <div class="important" title="Important Note"> If you use the optional argument &#x27E8;<span
+class="cmti-10">list</span>&#x27E9;, you can&#8217;t define entries in the document
+(even with the <a
+href="#styopt.docdef"><span
+class="cmss-10">docdef</span></a><a
+ id="dx1-5056"></a> option). </div>
+</p><!--l. 1386--><p class="noindent" >
+</p><!--l. 1388--><p class="indent" > You will need at least version 2.20 of <a
+ id="dx1-5057"></a><a
+href="#glo:makeglossaries"><span
+class="cmtt-10">makeglossaries</span></a> or at least version 1.3 of
+the Lua alternative <a
+ id="dx1-5058"></a><a
+href="#glo:makeglossaries-lite.lua"><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-5059"></a></a> (both distributed with <span
+class="cmss-10">glossaries </span>v4.27) to
+allow for this use of <span
+class="cmtt-10">\makeglossaries[</span>&#x27E8;<span
+class="cmti-10">list</span>&#x27E9;<span
+class="cmtt-10">]</span>. Alternatively, use the <a
+href="#styopt.automake"><span
+class="cmss-10">automake</span></a><a
+ id="dx1-5060"></a>
+option.
+</p>
+<!--l. 1394--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.1 </span> <a
+ id="sec:wrglossary"></a>Entry Indexing</h3>
+<!--l. 1397--><p class="noindent" >As from version 1.31, there is a new command like <span
+class="cmtt-10">\glsadd </span>where the mandatory
+argument is a comma-separated list of labels:
+
+
+
+</p><!--l. 1400--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaddeach</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-6001"></a> <span
+class="cmtt-10">\glsaddeach[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1402--><p class="noindent" >
+This simply iterates over &#x27E8;<span
+class="cmti-10">list</span>&#x27E9; and does <span
+class="cmtt-10">\glsadd[</span>&#x27E8;<span
+class="cmti-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>for each entry in the
+list.
+</p><!--l. 1406--><p class="indent" > As from version 1.37, you can make commands like <span
+class="cmtt-10">\gls </span>or <span
+class="cmtt-10">\glslink</span>
+automatically use <span
+class="cmtt-10">\glsadd </span>with specific options when a given format is used
+(identified with <span
+class="cmtt-10">format={</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">} </span>in the optional argument of the corresponding
+<span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glslink </span>etc).
+</p><!--l. 1411--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrAutoAddOnFormat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-6002"></a> <span
+class="cmtt-10">\GlsXtrAutoAddOnFormat[</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">format list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">glsadd options</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1413--><p class="noindent" >
+The optional argument &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; defaults to <span
+class="cmtt-10">\glslabel </span>and indicates the label to use in
+<span
+class="cmtt-10">\glsadd </span>and so needs to be expandable. The &#x27E8;<span
+class="cmti-10">format list</span>&#x27E9; is a comma-separated list of
+format values that will trigger the automated adding. The &#x27E8;<span
+class="cmti-10">glsadd options</span>&#x27E9; are
+the options to pass to <span
+class="cmtt-10">\glsadd </span>with <span
+class="cmtt-10">format={</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">} </span>prepended to the
+list.
+</p><!--l. 1421--><p class="indent" > For example, with:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-31">
+\GlsXtrAutoAddOnFormat{hyperbf}{counter=chapter}
+</div>
+<!--l. 1424--><p class="nopar" > then <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[format=hyperbf]{sample}</span></span></span> will be equivalent to
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-32">
+\glsadd[format=hyperbf,counter=chapter]{sample}\gls[format=hyperbf]{sample}
+</div>
+<!--l. 1428--><p class="nopar" > Note that the explicit range markers will prevent a match unless you include
+them in &#x27E8;<span
+class="cmti-10">format list</span>&#x27E9; (in which case, be sure to add both the start and end
+formats).
+</p><!--l. 1433--><p class="indent" > Here&#8217;s another example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-33">
+\GlsXtrAutoAddOnFormat[dual.\glslabel]{hyperbf}{}
+</div>
+<!--l. 1436--><p class="nopar" > In this case <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[format=hyperbf]{sample}</span></span></span> will now be equivalent to:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-34">
+\glsadd[format=hyperbf]{dual.sample}\gls[format=hyperbf]{sample}
+</div>
+<!--l. 1441--><p class="nopar" >
+</p><!--l. 1443--><p class="indent" > <div class="important" title="Important Note"> <span
+class="cmtt-10">\GlsXtrAutoAddOnFormat </span>is not applied to <span
+class="cmtt-10">\glsadd </span>as it could cause an infinite
+loop. </div>
+</p><!--l. 1446--><p class="noindent" >
+The <span
+class="cmss-10">glossaries-extra </span>package provides extra keys for commands like <span
+class="cmtt-10">\gls </span>and
+<span
+class="cmtt-10">\glstext</span>:
+ </p><dl class="description"><dt class="description">
+<span
+class="cmssbx-10">noindex</span><a
+ id="dx1-6003"></a> </dt><dd
+class="description">This is a boolean key. If true, this suppresses the indexing. (That is,
+ it prevents <span
+class="cmtt-10">\gls </span>or whatever from adding a line to the external glossary
+ file.) This is more useful than the <a
+href="#styopt.indexonlyfirst"><span
+class="cmss-10">indexonlyfirst</span></a><a
+ id="dx1-6004"></a> package option provided
+ by <span
+class="cmss-10">glossaries</span>, as the <a
+ id="dx1-6005"></a><a
+href="#glo:firstuse">first use</a> might not be the most pertinent use. (If you
+ want to apply <a
+href="#styopt.indexonlyfirst"><span
+class="cmss-10">indexonlyfirst</span></a><a
+ id="dx1-6006"></a> to selected entries, rather than all of them, you
+ can use the <a
+href="#catattr.indexonlyfirst"><span
+class="cmss-10">indexonlyfirst</span></a><a
+ id="dx1-6007"></a> attribute, see <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5 </a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further details.)
+ Note that the <span
+class="cmss-10">noindex</span><a
+ id="dx1-6008"></a> key isn&#8217;t available for <span
+class="cmtt-10">\glsadd</span><a
+ id="dx1-6009"></a> (and <span
+class="cmtt-10">\glsaddall</span><a
+ id="dx1-6010"></a>)
+ since the whole purpose of that command is to index an entry.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">wrgloss</span><a
+ id="dx1-6011"></a> </dt><dd
+class="description">(New to v1.14.) This is may only take the values <span
+class="cmss-10">before </span>or <span
+class="cmss-10">after</span>. By
+ default, commands that both index and display link text (such as <span
+class="cmtt-10">\gls</span>,
+ <span
+class="cmtt-10">\glstext </span>and <span
+class="cmtt-10">\glslink</span>), perform the indexing before the link text as the
+ indexing creates a whatsit that can cause problems if it occurs after the
+ link text. However, it may be that in some cases (such as long phrases) you
+ may actually want the indexing performed after the link text. In this case
+ you can use <span
+class="cmtt-10">wrgloss=after </span>for specific instances. Note that this option
+ doesn&#8217;t have an effect if the indexing has been suppressed through other
+ settings (such as <span
+class="cmss-10">noindex</span><a
+ id="dx1-6012"></a>).
+ <!--l. 1477--><p class="noindent" >The default value is set up using
+ </p><!--l. 1478--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrinitwrgloss</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-6013"></a> <span
+class="cmtt-10">\glsxtrinitwrgloss </span></div><hr>
+ </p><!--l. 1480--><p class="noindent" >
+ which is defined as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-35">
+ \newcommand*{\glsxtrinitwrgloss}{%
+ &#x00A0;<br />&#x00A0;\glsifattribute{\glslabel}{wrgloss}{after}%
+ &#x00A0;<br />&#x00A0;{%
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\glsxtrinitwrglossbeforefalse
+ &#x00A0;<br />&#x00A0;}%
+ &#x00A0;<br />&#x00A0;{%
+ &#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\glsxtrinitwrglossbeforetrue
+ &#x00A0;<br />&#x00A0;}%
+ &#x00A0;<br />}
+</div>
+ <!--l. 1492--><p class="nopar" > This sets the conditional
+ </p><!--l. 1494--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\ifglsxtrinitwrglossbefore</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-6014"></a> <span
+class="cmtt-10">\ifglsxtrinitwrgloss </span></div><hr>
+ </p><!--l. 1496--><p class="noindent" >
+ which is used to determine where to perform the indexing.
+ </p><!--l. 1499--><p class="noindent" >This means you can set the <a
+href="#catattr.wrgloss"><span
+class="cmss-10">wrgloss</span></a><a
+ id="dx1-6015"></a> attribute to <span
+class="cmss-10">after </span>to automatically use this
+ as the default for entries with that category attribute. (Note that adding
+ <span
+class="cmss-10">wrgloss</span><a
+ id="dx1-6016"></a> to the default options in <span
+class="cmtt-10">\GlsXtrSetDefaultGlsOpts</span><a
+ id="dx1-6017"></a> will override
+ <span
+class="cmtt-10">\glsxtrinitwrgloss</span>.)
+ </p></dd><dt class="description">
+<span
+class="cmssbx-10">hyperoutside</span><a
+ id="dx1-6018"></a> </dt><dd
+class="description">(New to v1.21.) This is a boolean key. The default is <span
+class="cmtt-10">hyperoutside=true</span>,
+ which puts the hyperlink outside <span
+class="cmtt-10">\glstextformat</span>, so that commands like <span
+class="cmtt-10">\gls</span>
+ will effectively do <div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\hyperlink{</span>&#x27E8;<span
+class="cmitt-10">target</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glstextformat{</span>&#x27E8;<span
+class="cmitt-10">link</span><span
+class="cmitt-10">&#x00A0;text</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">}</span>
+</div>
+ </div> This is the same behaviour as with the base <span
+class="cmss-10">glossaries </span>package. With
+ <span
+class="cmtt-10">hyperoutside=false</span>, <span
+class="cmtt-10">\hyperlink </span>is placed inside the argument of
+ <span
+class="cmtt-10">\glstextformat</span>: <div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\glstextformat</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\hyperlink{</span>&#x27E8;<span
+class="cmitt-10">target</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">link</span><span
+class="cmitt-10">&#x00A0;text</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">}</span>
+</div>
+ </div> You can use the <a
+href="#catattr.hyperoutside"><span
+class="cmss-10">hyperoutside</span></a><a
+ id="dx1-6019"></a> category attribute to set the default for a
+ given category. This can be combined with the use of the <a
+href="#catattr.textformat"><span
+class="cmss-10">textformat</span></a><a
+ id="dx1-6020"></a>
+ attribute to counteract any interference caused by <span
+class="cmtt-10">\hyperlink</span>. For
+ example:
+
+
+
+ <div class="verbatim" id="verbatim-36">
+ \glssetcategoryattribute{mathrelation}{hyperoutside}{false}
+</div>
+ <!--l. 1526--><p class="nopar" > will set <span
+class="cmtt-10">hyperoutside=false </span>for all entries that are assigned to the category
+ <span
+class="cmtt-10">mathrelation </span>and
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-37">
+ \glssetcategoryattribute{mathrelation}{textformat}{mathrel}
+</div>
+ <!--l. 1531--><p class="nopar" > will use <span
+class="cmtt-10">\mathrel </span>instead of <span
+class="cmtt-10">\glstextformat </span>resulting in: </p><div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\mathrel</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\hyperlink{</span>&#x27E8;<span
+class="cmitt-10">target</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">link</span><span
+class="cmitt-10">&#x00A0;text</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">}</span>
+</div>
+ </div> for entries with the <span
+class="cmss-10">category</span><a
+ id="dx1-6021"></a> key set to <span
+class="cmtt-10">mathrelation</span>.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">textformat</span><a
+ id="dx1-6022"></a> </dt><dd
+class="description">This key must have a control sequence name as its value. The
+ command formed from this name must exist and must take one argument.
+ (Use <span
+class="cmtt-10">relax </span>for default behaviour.) If set, this overrides the <a
+href="#catattr.textformat"><span
+class="cmss-10">textformat</span></a><a
+ id="dx1-6023"></a>
+ attribute and <span
+class="cmtt-10">\glstextformat</span>. See the <span
+class="cmss-10">soul</span><a
+ id="dx1-6024"></a> example in <a
+href="#sec:glsunset"><span
+class="cmsy-10">&sect;</span>2.5 </a><a
+href="#sec:glsunset">First Use
+ Flag<!--tex4ht:ref: sec:glsunset --></a>.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">prefix</span><a
+ id="dx1-6025"></a> </dt><dd
+class="description">Locally redefines <span
+class="cmtt-10">\glolinkprefix</span><a
+ id="dx1-6026"></a> to the given value. It should match the
+ prefix for the desired glossary.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">thevalue</span><a
+ id="dx1-6027"></a> </dt><dd
+class="description">Explicitly set the location to this value (see below).
+ </dd><dt class="description">
+<span
+class="cmssbx-10">theHvalue</span><a
+ id="dx1-6028"></a> </dt><dd
+class="description">Set the corresponding hyperlink location (see below).
+ </dd></dl>
+<!--l. 1558--><p class="indent" > There is a new hook that&#8217;s used each time indexing information is written to the
+external glossary files:
+</p><!--l. 1560--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdowrglossaryhook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-6029"></a> <span
+class="cmtt-10">\glsxtrdowrglossaryhook{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1562--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label. This does nothing by default but may be redefined.
+(See, for example, the accompanying sample file <span
+class="cmtt-10">sample-indexhook.tex</span>, which uses
+this hook to determine which entries haven&#8217;t been indexed.)
+</p><!--l. 1569--><p class="indent" > There&#8217;s also a new hook (from v1.26) that&#8217;s used immediately before the options
+are set by the <span
+class="cmtt-10">\gls</span>-like and <span
+class="cmtt-10">\glstext</span>-like commands:
+</p><!--l. 1572--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslinkpresetkeys</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-6030"></a> <span
+class="cmtt-10">\glslinkpresetkeys </span></div><hr>
+</p><!--l. 1574--><p class="noindent" >
+(The base package provides <span
+class="cmtt-10">\glslinkpostsetkeys</span><a
+ id="dx1-6031"></a> that&#8217;s used immediately after the
+options are set.)
+
+
+
+</p><!--l. 1578--><p class="indent" > As from version 1.30 there are also similar hooks for <span
+class="cmtt-10">\glsadd</span>:
+</p><!--l. 1579--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaddpresetkeys</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-6032"></a> <span
+class="cmtt-10">\glsaddpresetkeys </span></div><hr>
+</p><!--l. 1581--><p class="noindent" >
+and
+</p><!--l. 1583--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaddpostsetkeys</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-6033"></a> <span
+class="cmtt-10">\glsaddpostsetkeys </span></div><hr>
+</p><!--l. 1585--><p class="noindent" >
+For example, to default to using the <span
+class="cmss-10">equation</span><a
+ id="dx1-6034"></a> counter in maths mode:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-38">
+\renewcommand{\glslinkpresetkeys}{%
+&#x00A0;<br />&#x00A0;\ifmmode&#x00A0;\setkeys{glslink}{counter=equation}\fi}
+&#x00A0;<br />\renewcommand{\glsaddpresetkeys}{%
+&#x00A0;<br />&#x00A0;\ifmmode&#x00A0;\setkeys{glossadd}{counter=equation}\fi}
+</div>
+<!--l. 1593--><p class="nopar" > In this case, the counter can be overridden with an explicit use of <span
+class="cmss-10">counter</span><a
+ id="dx1-6035"></a> in the
+optional argument of <span
+class="cmtt-10">\gls </span>or <span
+class="cmtt-10">\glsadd</span>. (As from version 1.37, a simpler method is to
+just use the <a
+href="#styopt.equations"><span
+class="cmss-10">equations</span></a><a
+ id="dx1-6036"></a> package option.)
+</p><!--l. 1599--><p class="indent" > Alternatively, to enforce this (overriding the option argument):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-39">
+\renewcommand{\glslinkpostsetkeys}{%
+&#x00A0;<br />&#x00A0;\ifmmode&#x00A0;\setkeys{glslink}{counter=equation}\fi}
+&#x00A0;<br />\renewcommand{\glsaddpostsetkeys}{%
+&#x00A0;<br />&#x00A0;\ifmmode&#x00A0;\setkeys{glossadd}{counter=equation}\fi}
+</div>
+<!--l. 1606--><p class="nopar" >
+</p><!--l. 1608--><p class="indent" > As from version 1.14, there are two new keys for <span
+class="cmtt-10">\glsadd</span>: <span
+class="cmss-10">thevalue</span><a
+ id="dx1-6037"></a> and <span
+class="cmss-10">theHvalue</span><a
+ id="dx1-6038"></a>.
+These keys are designed for manually adding explicit locations rather than obtaining
+the value from the associated counter. As from version 1.19, these two keys are also
+available for commands like <span
+class="cmtt-10">\gls </span>and <span
+class="cmtt-10">\glslink</span>. The <span
+class="cmss-10">thevalue</span><a
+ id="dx1-6039"></a> keys is intended
+primarily for adding locations in supplementary material that can&#8217;t be obtained from
+a counter.
+</p><!--l. 1617--><p class="indent" > The principle key <span
+class="cmss-10">thevalue</span><a
+ id="dx1-6040"></a> is for the location value. The other key <span
+class="cmss-10">theHvalue</span><a
+ id="dx1-6041"></a> can
+be used to extract a prefix value for the first argument of commands like
+<span
+class="cmtt-10">\glsnoidxdisplayloc</span><a
+ id="dx1-6042"></a>. Its value must be in the format &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;&#x27E8;<span
+class="cmti-10">location</span>&#x27E9;. In general,
+there&#8217;s little need for this key as the prefix is typically associated with a counter that
+can be used to form hypertargets.
+</p><!--l. 1625--><p class="indent" > <div class="important" title="Important Note"> If you use <span
+class="cmss-10">thevalue</span><a
+ id="dx1-6043"></a>, you must make sure that you use an indexing application
+that will accept the given value. </div>
+</p><!--l. 1628--><p class="noindent" >
+</p><!--l. 1630--><p class="indent" > For example, <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-6044"></a> will only accept locations in the form [&#x27E8;<span
+class="cmti-10">num</span>&#x27E9;&#x27E8;<span
+class="cmti-10">sep</span>&#x27E9;]*&#x27E8;<span
+class="cmti-10">num</span>&#x27E9;
+where &#x27E8;<span
+class="cmti-10">num</span>&#x27E9; is an arabic number (0, 1, &#x2026;), roman numeral (i, ii, &#x2026;&#x00A0;or I, II, &#x2026;) or a
+character from a, &#x2026;, z or A, &#x2026;, Z, and [&#x27E8;<span
+class="cmti-10">num</span>&#x27E9;&#x27E8;<span
+class="cmti-10">sep</span>&#x27E9;]* indicates zero or more
+instances of a number followed by the recognised separator character (set
+with <span
+class="cmtt-10">\glsSetCompositor</span>). This means that <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-6045"></a> won&#8217;t accept, for
+example,
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-40">
+\glsadd[thevalue={Supplementary&#x00A0;Material}]{sample}
+</div>
+<!--l. 1640--><p class="nopar" > This location value will be accepted by <a
+ id="dx1-6046"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>, since it will allow any location and
+will only try forming ranges if the location matches any of its numerical patterns.
+In the case of <span
+class="cmtt-10">xindy</span><a
+ id="dx1-6047"></a>, you&#8217;ll need to add a rule that can match the value.
+If you&#8217;re using <span
+class="cmss-10">hyperref</span><a
+ id="dx1-6048"></a>, you may need to use the <span
+class="cmss-10">format</span><a
+ id="dx1-6049"></a> key to prevent a
+hyperlink if one can&#8217;t naturally be formed from the prefix, counter and location
+value.
+</p><!--l. 1649--><p class="indent" > For example, suppose the file <span
+class="cmtt-10">suppl.tex </span>contains:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-41">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},description={an&#x00A0;example}}
+&#x00A0;<br />\renewcommand{\thepage}{S.\arabic{page}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />First&#x00A0;page.
+&#x00A0;<br />\newpage
+&#x00A0;<br />\gls{sample}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 1664--><p class="nopar" > This has an entry on page S.2. Suppose another document wants to include this
+location in the glossary. Then this can be done by setting <span
+class="cmss-10">thevalue</span><a
+ id="dx1-6050"></a> to <span
+class="cmtt-10">S.2</span>. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-42">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},description={an&#x00A0;example}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />Some&#x00A0;\gls{sample}&#x00A0;text.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\glsadd[thevalue={S.2}]{sample}
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 1683--><p class="nopar" > This location value will be accepted by <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-6051"></a> as it&#8217;s in the form &#x27E8;<span
+class="cmti-10">num</span>&#x27E9;&#x27E8;<span
+class="cmti-10">sep</span>&#x27E9;&#x27E8;<span
+class="cmti-10">num</span>&#x27E9;.
+</p><!--l. 1687--><p class="indent" > If you want hyperlinks, things are more complicated. First you need to set the
+<a
+href="#catattr.externallocation"><span
+class="cmss-10">externallocation</span></a><a
+ id="dx1-6052"></a> attribute to the location of the PDF file. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-43">
+\glssetcategoryattribute{supplemental}{externallocation}{suppl.pdf}
+&#x00A0;<br />\newglossaryentry{sample}{category=supplemental,
+&#x00A0;<br />&#x00A0;name={sample},description={an&#x00A0;example}}
+</div>
+<!--l. 1695--><p class="nopar" > Next you need to add <span
+class="cmtt-10">glsxtrsupphypernumber </span>as the format:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-44">
+\glsadd[thevalue={S.2},format=glsxtrsupphypernumber]{sample}
+</div>
+<!--l. 1699--><p class="nopar" > Both documents will need to use the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-6053"></a> package. Remember that the counter
+used for the location also needs to match. If <span
+class="cmtt-10">\theH</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; is defined in the other
+document and doesn&#8217;t match in the referencing document, then you need to use
+<span
+class="cmss-10">theHvalue</span><a
+ id="dx1-6054"></a> to set the appropriate value. See the accompanying sample files
+<span
+class="cmtt-10">sample-suppl-hyp.tex </span>and <span
+class="cmtt-10">sample-suppl-main-hyp.tex </span>for an example that uses
+<span
+class="cmss-10">hyperref</span><a
+ id="dx1-6055"></a>.
+</p><!--l. 1709--><p class="indent" > <div class="important" title="Important Note"> The hyperlink for the supplementary location may or <span
+class="cmti-10">may not </span>take you to the
+relevant place in the external PDF file <span
+class="cmti-10">depending on your PDF viewer</span>. Some may not
+support external links, and some may take you to the first page or last visited page.
+</div>
+</p><!--l. 1714--><p class="noindent" >
+</p><!--l. 1716--><p class="indent" > For example, if both <span
+class="cmtt-10">sample-suppl-hyp.pdf </span>and <span
+class="cmtt-10">sample-suppl-main-hyp.pdf</span>
+are in the same directory, then viewing <span
+class="cmtt-10">sample-suppl-main-hyp.pdf </span>in Evince will
+take you to the correct location in the linked document (when you click on the S.2
+external link), but Okular will take you to the top of the first page of the linked
+document.
+</p><!--l. 1723--><p class="indent" > This method can only be used where there is one external source for the
+designated category (identified by the <a
+href="#catattr.externallocation"><span
+class="cmss-10">externallocation</span></a><a
+ id="dx1-6056"></a> attribute). For multiple
+sources, you need to use <a
+ id="dx1-6057"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> version 1.7+, which is the better method in
+general as it can automatically fetch the relevant locations from the <span
+class="cmtt-10">.aux </span>files
+of the designated external documents without the need to explicitly use
+<span
+class="cmtt-10">\glsadd</span>.
+</p><!--l. 1731--><p class="noindent" >
+</p>
+<!--l. 1731--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.2 </span> <a
+ id="sec:see"></a>Cross-References (&#8220;see&#8221; and &#8220;see also&#8221;)</h3>
+<!--l. 1734--><p class="noindent" >The value of the <span
+class="cmss-10">see</span><a
+ id="dx1-7001"></a> key is now saved as a field. This isn&#8217;t the case with <span
+class="cmss-10">glossaries</span>,
+where the <span
+class="cmss-10">see</span><a
+ id="dx1-7002"></a> value is simply used to directly write a line to the corresponding
+glossary file and is then discarded. This is why the <span
+class="cmss-10">see</span><a
+ id="dx1-7003"></a> key can&#8217;t be used
+before <span
+class="cmtt-10">\makeglossaries</span><a
+ id="dx1-7004"></a> (since the file hasn&#8217;t been opened yet). It&#8217;s also the
+reason why the <span
+class="cmss-10">see</span><a
+ id="dx1-7005"></a> key doesn&#8217;t have any effect when used in entries that
+are defined in the <span
+class="cmss-10">document</span><a
+ id="dx1-7006"></a><a
+ id="dx1-7007"></a> environment. Since the value isn&#8217;t saved, it&#8217;s
+not available when the <span
+class="cmtt-10">.glsdefs </span>file is created at the end of the document
+and so isn&#8217;t available at the start of the <span
+class="cmss-10">document</span><a
+ id="dx1-7008"></a><a
+ id="dx1-7009"></a> environment on the next
+run.
+</p><!--l. 1747--><p class="indent" > This modification allows <span
+class="cmss-10">glossaries-extra </span>to provide
+</p><!--l. 1748--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtraddallcrossrefs</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7010"></a> <span
+class="cmtt-10">\glsxtraddallcrossrefs </span></div><hr>
+
+
+
+</p><!--l. 1750--><p class="noindent" >
+which is used at the end of the document to automatically add any unused
+cross-references unless the package option <a
+href="#styopt.indexcrossrefs"><span
+class="cmss-10">indexcrossrefs</span></a><a
+ id="dx1-7011"></a> was set to false.
+</p><!--l. 1755--><p class="indent" > As a by-product of this enhancement, the <span
+class="cmss-10">see</span><a
+ id="dx1-7012"></a> key will now work for entries
+defined in the <span
+class="cmss-10">document</span><a
+ id="dx1-7013"></a><a
+ id="dx1-7014"></a> environment, but it&#8217;s still best to define entries in the
+preamble, and the <span
+class="cmss-10">see</span><a
+ id="dx1-7015"></a> key still can&#8217;t perform any indexing before the file has been
+opened by <span
+class="cmtt-10">\makeglossaries</span>. Note that <span
+class="cmss-10">glossaries </span>v4.24 introduced the <a
+href="#styopt.seenoindex"><span
+class="cmss-10">seenoindex</span></a><a
+ id="dx1-7016"></a>
+package option, which can be used to suppress the error when the <span
+class="cmss-10">see</span><a
+ id="dx1-7017"></a> key
+is used before <span
+class="cmtt-10">\makeglossaries</span>, so <a
+href="#styopt.seenoindex"><span
+class="cmss-10">seenoindex</span></a><span
+class="cmss-10">=ignore</span><a
+ id="dx1-7018"></a> will allow the <span
+class="cmss-10">see</span><a
+ id="dx1-7019"></a>
+value to be stored even though it may not be possible to index it at that
+point.
+</p><!--l. 1766--><p class="indent" > As from version 1.06, you can display the cross-referenced information for a given
+entry using
+</p><!--l. 1768--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrusesee</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7020"></a> <span
+class="cmtt-10">\glsxtrusesee{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1770--><p class="noindent" >
+This internally uses
+</p><!--l. 1772--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtruseseeformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7021"></a> <span
+class="cmtt-10">\glsxtruseseeformat{</span>&#x27E8;<span
+class="cmitt-10">tag</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">xr list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1774--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">tag</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">xr list</span>&#x27E9; are obtained from the value of the entry&#8217;s <span
+class="cmss-10">see</span><a
+ id="dx1-7022"></a> field (if
+non-empty). By default, this just does <span
+class="cmtt-10">\glsseeformat[</span>&#x27E8;<span
+class="cmti-10">tag</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmti-10">xr list</span>&#x27E9;<span
+class="cmtt-10">}</span><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">{}</span></span></span>,
+which is how the cross-reference is displayed in the <a
+ id="dx1-7023"></a><a
+href="#glo:numberlist">number list</a>. Note that
+<span
+class="cmtt-10">\glsxtrusesee </span>does nothing if the <span
+class="cmss-10">see</span><a
+ id="dx1-7024"></a> field hasn&#8217;t been set for the entry given by
+&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 1783--><p class="indent" > As with the base <span
+class="cmss-10">glossaries</span><a
+ id="dx1-7025"></a> package, <span
+class="cmtt-10">\glsseeformat </span>is defined to do <span
+class="cmtt-10">\emph{</span>&#x27E8;<span
+class="cmitt-10">tag</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">\glsseelist{</span>&#x27E8;<span
+class="cmitt-10">xr list</span>&#x27E9;<span
+class="cmtt-10">}</span>. The third argument is always ignored and is present for
+<span
+class="cmtt-10">makeindex</span><a
+ id="dx1-7026"></a>, which always requires a final argument to encapsulate the associated
+location. The command
+</p><!--l. 1789--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsseelist</span><a
+ id="dx1-7027"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">xr list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1790--><p class="noindent" >
+used to iterate over the list of cross-reference labels is also unchanged from
+the base <span
+class="cmss-10">glossaries</span><a
+ id="dx1-7028"></a> package, with each item in the list formatted according
+to:
+</p><!--l. 1795--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsseeitem</span><a
+ id="dx1-7029"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1796--><p class="noindent" >
+This is defined by the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-7030"></a> package to: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glshyperlink[\glsseeitemformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> So the actual formatting for each cross-referenced entry is performed by
+<span
+class="cmtt-10">\glsseeitemformat</span><a
+ id="dx1-7031"></a>, which is redefined by <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-7032"></a>, as described in <a
+href="#sec:modifications"><span
+class="cmsy-10">&sect;</span>2
+</a><a
+href="#sec:modifications">Modifications to Existing Commands and Styles<!--tex4ht:ref: sec:modifications --></a>. This now displays the value of the
+<span
+class="cmss-10">text</span><a
+ id="dx1-7033"></a> field for abbreviations and the value of the <span
+class="cmss-10">name</span><a
+ id="dx1-7034"></a> field otherwise. There&#8217;s no
+indication of the entry hierarchy, which could confuse the reader. Therefore, as from
+
+
+
+<span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-7035"></a> v1.37, there are some new commands that include the hierarchical
+information. You may prefer to redefine <span
+class="cmtt-10">\glsseeitemformat </span>to use one of this if you
+have sub-entries. For example:
+
+
+
+ <div class="verbatim" id="verbatim-45">
+\renewcommand*{\glsseeitemformat}[1]{\glsxtrhiername{#1}}
+</div>
+<!--l. 1814--><p class="nopar" >
+</p><!--l. 1816--><p class="indent" > The command:
+</p><!--l. 1817--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrhiername</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7036"></a> <span
+class="cmtt-10">\glsxtrhiername{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1819--><p class="noindent" >
+performs a recursive action:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-7038x1">If the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has a parent, then <span
+class="cmtt-10">\glsxtrhiername{</span>&#x27E8;<span
+class="cmti-10">parent</span>
+ <span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>is done followed by <span
+class="cmtt-10">\glsxtrhiernamesep </span>then:
+ </li>
+ <li
+ class="enumerate" id="x1-7040x2">If the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is an abbreviation (that is, it has the <span
+class="cmss-10">short</span><a
+ id="dx1-7041"></a> field
+ set) then the short form is displayed (using <span
+class="cmtt-10">\glsaccessshort</span>) otherwise
+ the name is displayed (using <span
+class="cmtt-10">\glsaccessname</span>).</li></ol>
+<!--l. 1830--><p class="noindent" >The first step above is skipped if the entry doesn&#8217;t have a parent. Each level is separated
+by:
+</p><!--l. 1832--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrhiernamesep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7042"></a> <span
+class="cmtt-10">\glsxtrhiernamesep </span></div><hr>
+</p><!--l. 1834--><p class="noindent" >
+which defaults to &#8220; <span
+class="cmmi-9">&#x22B3; </span>&#8221;. This can be redefined as appropriate.
+</p><!--l. 1838--><p class="indent" > There are some case-changing variants:
+</p><!--l. 1839--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrhiername</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7043"></a> <span
+class="cmtt-10">\Glsxtrhiername{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1841--><p class="noindent" >
+The top-level has the first letter changed to upper case (either <span
+class="cmtt-10">\Glsaccessshort </span>or
+<span
+class="cmtt-10">\Glsaccessname</span>). There&#8217;s no case-change for sub-entries.
+</p><!--l. 1846--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrhiername</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7044"></a> <span
+class="cmtt-10">\GlsXtrhiername{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1848--><p class="noindent" >
+All levels have the first letter changed to upper case (either <span
+class="cmtt-10">\Glsaccessshort </span>or
+<span
+class="cmtt-10">\Glsaccessname</span>).
+</p><!--l. 1852--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSxtrhiername</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7045"></a> <span
+class="cmtt-10">\GLSxtrhiername{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1854--><p class="noindent" >
+The top-level is converted to upper case (either <span
+class="cmtt-10">\GLSaccessshort </span>or <span
+class="cmtt-10">\GLSaccessname</span>).
+There&#8217;s no case-change for sub-entries.
+</p><!--l. 1859--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSXTRhiername</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7046"></a> <span
+class="cmtt-10">\GLSXTRhiername{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1861--><p class="noindent" >
+All levels are converted to upper case (either <span
+class="cmtt-10">\GLSaccessshort </span>or <span
+class="cmtt-10">\GLSaccessname</span>).
+</p><!--l. 1865--><p class="indent" > Suppose you want to suppress the <a
+ id="dx1-7047"></a>number list using <a
+href="#styopt.nonumberlist"><span
+class="cmss-10">nonumberlist</span></a><a
+ id="dx1-7048"></a>. This
+will automatically prevent the cross-references from being displayed. The
+<a
+href="#styopt.seeautonumberlist"><span
+class="cmss-10">seeautonumberlist</span></a><a
+ id="dx1-7049"></a> package option will automatically enable the <a
+ id="dx1-7050"></a>number list for entries
+that have the <span
+class="cmss-10">see</span><a
+ id="dx1-7051"></a> key set, but this will also show the rest of the <a
+ id="dx1-7052"></a>number
+list.
+
+
+
+</p><!--l. 1872--><p class="indent" > Another approach in this situation is to use the post description hook
+with <span
+class="cmtt-10">\glsxtrusesee </span>to append the cross-reference after the description. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-46">
+\renewcommand*{\glsxtrpostdescgeneral}{%
+&#x00A0;<br />&#x00A0;\ifglshasfield{see}{\glscurrententrylabel}
+&#x00A0;<br />&#x00A0;{,&#x00A0;\glsxtrusesee{\glscurrententrylabel}}%
+&#x00A0;<br />&#x00A0;{}%
+&#x00A0;<br />}
+</div>
+<!--l. 1881--><p class="nopar" > Now the cross-references can appear even though the <a
+ id="dx1-7053"></a><a
+href="#glo:numberlist">number list</a> has been
+suppressed.
+</p><!--l. 1885--><p class="indent" > As from v1.16, there&#8217;s a separate <span
+class="cmss-10">seealso</span><a
+ id="dx1-7054"></a> key. Unlike <span
+class="cmss-10">see</span><a
+ id="dx1-7055"></a>, this doesn&#8217;t have an
+optional part for the textual tag. The syntax <span
+class="cmtt-10">seealso={</span>&#x27E8;<span
+class="cmitt-10">xr-labels</span>&#x27E9;<span
+class="cmtt-10">} </span>works in
+much the same way as using <span
+class="cmtt-10">see=[\seealsoname]{</span>&#x27E8;<span
+class="cmitt-10">xr-labels</span>&#x27E9;<span
+class="cmtt-10">} </span>but the
+information is stored in a separate field. If you need a different tag, use the <span
+class="cmss-10">see</span><a
+ id="dx1-7056"></a> key
+instead (or redefine <span
+class="cmtt-10">\seealsoname </span>or <span
+class="cmtt-10">\glsxtruseseealsoformat</span>, described
+below).
+</p><!--l. 1893--><p class="indent" > You can display the formatted list of cross-references stored in the <span
+class="cmss-10">seealso</span><a
+ id="dx1-7057"></a> key
+using:
+</p><!--l. 1895--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtruseseealso</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7058"></a> <span
+class="cmtt-10">\glsxtruseseealso{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1897--><p class="noindent" >
+This works in much the same way as <span
+class="cmtt-10">\glsxtrusesee </span>but it internally uses
+</p><!--l. 1900--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtruseseeformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7059"></a> <span
+class="cmtt-10">\glsxtruseseealsoformat{</span>&#x27E8;<span
+class="cmitt-10">xr list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1902--><p class="noindent" >
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-47">
+\renewcommand*{\glsxtrpostdescgeneral}{%
+&#x00A0;<br />&#x00A0;\ifglshasfield{see}{\glscurrententrylabel}
+&#x00A0;<br />&#x00A0;{,&#x00A0;\glsxtrusesee{\glscurrententrylabel}}%
+&#x00A0;<br />&#x00A0;{}%
+&#x00A0;<br />&#x00A0;\ifglshasfield{seealso}{\glscurrententrylabel}
+&#x00A0;<br />&#x00A0;{&#x00A0;(\glsxtruseseealso{\glscurrententrylabel})}%
+&#x00A0;<br />&#x00A0;{}%
+&#x00A0;<br />}
+</div>
+<!--l. 1913--><p class="nopar" >
+</p><!--l. 1915--><p class="indent" > The actual unformatted comma-separated list &#x27E8;<span
+class="cmti-10">xr-list</span>&#x27E9; stored in the <span
+class="cmss-10">seealso</span><a
+ id="dx1-7060"></a> field
+can be accessed with:
+</p><!--l. 1917--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrseealsolabels</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7061"></a> <span
+class="cmtt-10">\glsxtrseealsolabels{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1919--><p class="noindent" >
+This will just expand to the &#x27E8;<span
+class="cmti-10">xr-labels</span>&#x27E9; provided in the value of the <span
+class="cmss-10">seealso</span><a
+ id="dx1-7062"></a> key. There&#8217;s
+no corresponding command to access the <span
+class="cmss-10">see</span><a
+ id="dx1-7063"></a> field. If you really need to access it, you
+can use commands like <span
+class="cmtt-10">\glsxtrfielduse</span>, but remember that it may start with
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">tag</span>&#x27E9;<span
+class="cmtt-10">]</span>, so it can&#8217;t be automatically treated as a simple comma-separated
+list.
+</p><!--l. 1927--><p class="indent" > As mentioned above, the base <span
+class="cmss-10">glossaries </span>package provides <span
+class="cmtt-10">\glsseelist</span><a
+ id="dx1-7064"></a>, which
+requires a comma-separated list of labels as the argument. The argument isn&#8217;t fully
+expanded, so it&#8217;s not suitable to use, for example, <span
+class="cmtt-10">\glsxtrseealsolabels{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>as
+the argument. For convenience, <span
+class="cmss-10">glossaries-extra </span>provides
+</p><!--l. 1932--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrseelist</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7065"></a> <span
+class="cmtt-10">\glsxtrseelist{</span>&#x27E8;<span
+class="cmitt-10">xr list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1934--><p class="noindent" >
+which fully expands its argument and passes it to <span
+class="cmtt-10">\glsseelist</span>.
+</p><!--l. 1937--><p class="indent" > The <span
+class="cmss-10">seealso</span><a
+ id="dx1-7066"></a> key implements the automatic indexing using
+</p><!--l. 1938--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrindexseealso</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-7067"></a> <span
+class="cmtt-10">\glsxtrindexseealso{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">xr list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1940--><p class="noindent" >
+which just does </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glssee[\seealsoname]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">xr</span><span
+class="cmitt-10">&#x00A0;list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> unless the <a
+href="#styopt.xindy"><span
+class="cmss-10">xindy</span></a><a
+ id="dx1-7068"></a> option is used with <span
+class="cmss-10">glossaries</span><a
+ id="dx1-7069"></a> v4.30+, in which case a distinct
+<span
+class="cmtt-10">seealso </span>cross-reference class is used instead.
+<!--l. 1949--><p class="noindent" >
+</p>
+
+
+
+<!--l. 1949--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.3 </span> <a
+ id="sec:entryfmtmods"></a>Entry Display Style Modifications</h3>
+<!--l. 1952--><p class="noindent" >Recall from the <span
+class="cmss-10">glossaries </span>package that commands such as <span
+class="cmtt-10">\gls </span>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 &#8220;<a
+ id="dx1-8001"></a><a
+href="#glo:linktext">link-text</a>&#8221; regardless of
+whether or not it actually has a hyperlink. The actual text and the way
+it&#8217;s displayed depends on the command used (such as <span
+class="cmtt-10">\gls</span>) and the entry
+format.
+</p><!--l. 1959--><p class="indent" > The default entry format (<span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-8002"></a>) used in the <a
+ id="dx1-8003"></a><a
+href="#glo:linktext">link-text</a> by commands like
+<span
+class="cmtt-10">\gls</span><a
+ id="dx1-8004"></a>, <span
+class="cmtt-10">\glsxtrfull</span><a
+ id="dx1-8005"></a>, <span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-8006"></a> and <span
+class="cmtt-10">\glsxtrlong</span><a
+ id="dx1-8007"></a> (but not commands like
+<span
+class="cmtt-10">\glslink</span><a
+ id="dx1-8008"></a>, <span
+class="cmtt-10">\glsfirst</span><a
+ id="dx1-8009"></a> and <span
+class="cmtt-10">\glstext</span>) is changed by <span
+class="cmss-10">glossaries-extra </span>to test for regular
+entries, which are determined as follows:
+</p>
+ <ul class="itemize1">
+ <li class="itemize">If an entry is assigned to a category that has the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-8010"></a> attribute set (see <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5
+ </a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>), the entry is considered a&#x00A0;regular entry, even if it has a&#x00A0;value
+ for the <span
+class="cmss-10">short</span><a
+ id="dx1-8011"></a> key. In this case <span
+class="cmtt-10">\glsentryfmt </span>uses <span
+class="cmtt-10">\glsgenentryfmt</span><a
+ id="dx1-8012"></a>
+ (provided by <span
+class="cmss-10">glossaries</span>), which uses the <span
+class="cmss-10">first</span><a
+ id="dx1-8013"></a> (or <span
+class="cmss-10">firstplural</span><a
+ id="dx1-8014"></a>) value on <a
+ id="dx1-8015"></a><a
+href="#glo:firstuse">first
+ use</a> and the <span
+class="cmss-10">text</span><a
+ id="dx1-8016"></a> (or <span
+class="cmss-10">plural</span><a
+ id="dx1-8017"></a>) value on subsequent use.
+ </li>
+ <li class="itemize">An entry that doesn&#8217;t have a&#x00A0;value for the <span
+class="cmss-10">short</span><a
+ id="dx1-8018"></a> key is assumed to
+ be a&#x00A0;regular entry, even if the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-8019"></a> attribute isn&#8217;t set to &#8220;true&#8221;
+ (since it can&#8217;t be an abbreviation without the short form). In this case
+ <span
+class="cmtt-10">\glsentryfmt </span>uses <span
+class="cmtt-10">\glsgenentryfmt</span><a
+ id="dx1-8020"></a>.
+ </li>
+ <li class="itemize">If an entry does has a&#x00A0;value for the <span
+class="cmss-10">short</span><a
+ id="dx1-8021"></a> key and hasn&#8217;t been marked as
+ a&#x00A0;regular entry through the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-8022"></a> attribute, it&#8217;s not considered a regular
+ entry. In this case <span
+class="cmtt-10">\glsentryfmt </span>uses <span
+class="cmtt-10">\glsxtrgenabbrvfmt</span><a
+ id="dx1-8023"></a> (defined by
+ <span
+class="cmss-10">glossaries-extra</span>) which is governed by the abbreviation style (see <a
+href="#sec:abbrstyle"><span
+class="cmsy-10">&sect;</span>3.2
+ </a><a
+href="#sec:abbrstyle">Abbreviation Styles<!--tex4ht:ref: sec:abbrstyle --></a>).
+ </li></ul>
+<!--l. 1989--><p class="indent" > This means that entries with a short form can be treated as regular entries rather
+than abbreviations if it&#8217;s more appropriate for the desired style.
+</p><!--l. 1993--><p class="indent" > As from version 1.04, <span
+class="cmtt-10">\glsentryfmt</span><a
+ id="dx1-8024"></a> now puts <span
+class="cmtt-10">\glsgenentry</span><a
+ id="dx1-8025"></a> in the argument of
+the new command
+</p><!--l. 1995--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrregularfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8026"></a> <span
+class="cmtt-10">\glsxtrregularfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 1997--><p class="noindent" >
+This just does its argument &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; by default. This means that if you want regular
+entries in a different font but don&#8217;t want that font to apply to abbreviations, then
+you can redefine <span
+class="cmtt-10">\glsxtrregularfont</span>. This is more precise than changing
+<span
+class="cmtt-10">\glstextformat</span><a
+ id="dx1-8027"></a> which is applied to all linking commands for all entries, unless
+overridden by the <a
+href="#catattr.textformat"><span
+class="cmss-10">textformat</span></a><a
+ id="dx1-8028"></a> attribute.
+</p><!--l. 2006--><p class="indent" > For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-48">
+\renewcommand*{\glsxtrregularfont}[1]{\textsf{#1}}
+</div>
+<!--l. 2009--><p class="nopar" > You can access the label through <span
+class="cmtt-10">\glslabel</span>. For example, you can query the
+category:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-49">
+\renewcommand*{\glsxtrregularfont}[1]{%
+&#x00A0;<br />&#x00A0;\glsifcategory{\glslabel}{general}{\textsf{#1}}{#1}}
+</div>
+<!--l. 2015--><p class="nopar" > or query the category attribute, for example, provide a custom attribute called
+<span
+class="cmtt-10">font</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-50">
+\glssetcategoryattribute{general}{font}{sf}
+&#x00A0;<br />\renewcommand*{\glsxtrregularfont}[1]{%
+&#x00A0;<br />&#x00A0;\glsifattribute{\glslabel}{font}{sf}{\textsf{#1}}{#1}}
+</div>
+<!--l. 2023--><p class="nopar" > As from version 1.21, it&#8217;s simpler to just do, for example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-51">
+\glssetcategoryattribute{general}{textformat}{textsf}
+</div>
+<!--l. 2027--><p class="nopar" > without redefining <span
+class="cmtt-10">\glsxtrregularfont</span>.
+</p><!--l. 2030--><p class="indent" > As from version 1.30, there is also a command for abbreviations that encapsulates
+<span
+class="cmtt-10">\glsxtrgenabbrvfmt</span>:
+</p><!--l. 2032--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrabbreviationfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8029"></a> <span
+class="cmtt-10">\glsxtrabbreviationfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2034--><p class="noindent" >
+This also just does its argument by default. Font changes made by abbreviation styles
+are within &#x27E8;<span
+class="cmti-10">text</span>&#x27E9;.
+</p><!--l. 2038--><p class="indent" > The <span
+class="cmtt-10">\glspostlinkhook </span>provided by the <span
+class="cmss-10">glossaries </span>package to insert information
+after the <a
+ id="dx1-8030"></a><a
+href="#glo:linktext">link-text</a> produced by commands like <span
+class="cmtt-10">\gls </span>and <span
+class="cmtt-10">\glstext </span>is redefined
+to
+</p><!--l. 2041--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostlinkhook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8031"></a> <span
+class="cmtt-10">\glsxtrpostlinkhook </span></div><hr>
+</p><!--l. 2043--><p class="noindent" >
+This command will discard a following full stop (period) if the <a
+href="#catattr.discardperiod"><span
+class="cmss-10">discardperiod</span></a><a
+ id="dx1-8032"></a> attribute
+is set to &#8220;true&#8221; for the current entry&#8217;s category. It will also do
+</p><!--l. 2047--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostlink</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8033"></a> <span
+class="cmtt-10">\glsxtrpostlink </span></div><hr>
+</p><!--l. 2049--><p class="noindent" >
+if a full stop hasn&#8217;t be discarded and
+</p><!--l. 2051--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostlinkendsentence</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8034"></a> <span
+class="cmtt-10">\glsxtrpostlinkendsentence </span></div><hr>
+</p><!--l. 2053--><p class="noindent" >
+if a full stop has been discarded.
+</p><!--l. 2056--><p class="indent" > It may be that you want to check some other setting (rather than a category
+attribute) to determine whether or not to discard a following full stop. In which case
+you can redefine:
+</p><!--l. 2059--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrifcustomdiscardperiod</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8035"></a> <span
+class="cmtt-10">\glsxtrifcustomdiscardperiod{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2061--><p class="noindent" >
+You can access the field&#8217;s label using <span
+class="cmtt-10">\glslabel</span>. This command should do &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; if the
+post-link hook should check if a period follows and &#x27E8;<span
+class="cmti-10">false</span>&#x27E9; otherwise. The default
+definition is simply:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-52">
+\newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2}
+</div>
+<!--l. 2068--><p class="nopar" > which means that no additional checks are performed. (Only the recognised category
+attributes will be checked.)
+</p><!--l. 2072--><p class="indent" > <div class="important" title="Important Note"> Avoid the use of <span
+class="cmtt-10">\gls</span>-like and <span
+class="cmtt-10">\glstext</span>-like commands within the
+post-link hook as they will cause interference. Consider using commands like
+<span
+class="cmtt-10">\glsentrytext</span>, <span
+class="cmtt-10">\glsaccesstext </span>or <span
+class="cmtt-10">\glsxtrp </span>(<a
+href="#sec:nested"><span
+class="cmsy-10">&sect;</span>2.7 </a><a
+href="#sec:nested">Nested Links<!--tex4ht:ref: sec:nested --></a>) instead.
+</div>
+</p><!--l. 2077--><p class="noindent" >
+</p><!--l. 2079--><p class="indent" > By default <span
+class="cmtt-10">\glsxtrpostlink </span>just does <span
+class="cmtt-10">\glsxtrpostlink</span>&#x27E8;<span
+class="cmti-10">category</span>&#x27E9;<a
+ id="dx1-8036"></a>&#x00A0;if
+it exists, where &#x27E8;<span
+class="cmti-10">category</span>&#x27E9; is the category label for the current entry. (For
+example, for the <span
+class="cmss-10">general</span><a
+ id="dx1-8037"></a> category, <span
+class="cmtt-10">\glsxtrpostlinkgeneral </span>if it has been
+defined.)
+</p><!--l. 2084--><p class="indent" > You can define the post-link hook command using <span
+class="cmtt-10">\newcommand</span>, for
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-53">
+\newcommand*{\glsxtrpostlinkgeneral}{%
+&#x00A0;<br />&#x00A0;\glsxtrpostlinkAddDescOnFirstUse
+&#x00A0;<br />}
+</div>
+<!--l. 2090--><p class="nopar" > or, as from v1.31, you can use
+</p><!--l. 2092--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdefpostlink</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8038"></a> <span
+class="cmtt-10">\glsdefpostlink{</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2094--><p class="noindent" >
+This is simply a shortcut for: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\csdef</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">glsxtrpostlink</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmsy-10">}</span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> Note that it doesn&#8217;t check if the command has already been defined.
+<!--l. 2102--><p class="indent" > The sentence-ending hook is slightly more complicated. If the command
+<span
+class="cmtt-10">\glsxtrpostlink</span>&#x27E8;<span
+class="cmti-10">category</span>&#x27E9;<a
+ id="dx1-8039"></a>&#x00A0;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
+<span
+class="cmtt-10">\glsxtrpostlink</span>&#x27E8;<span
+class="cmti-10">category</span>&#x27E9;<a
+ id="dx1-8040"></a>&#x00A0;hasn&#8217;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.
+</p><!--l. 2115--><p class="indent" > There are some convenient commands you might want to use when customizing
+the post-<a
+ id="dx1-8041"></a><a
+href="#glo:linktext">link-text</a> category hooks:
+</p><!--l. 2117--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostlinkAddDescOnFirstUse</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8042"></a> <span
+class="cmtt-10">\glsxtrpostlinkAddDescOnFirstUse</span>
+</div><hr>
+</p><!--l. 2119--><p class="noindent" >
+This will add the description in parentheses on <a
+ id="dx1-8043"></a><a
+href="#glo:firstuse">first use</a>.
+</p><!--l. 2122--><p class="indent" > For example, suppose you want to append the description in parentheses on <a
+ id="dx1-8044"></a>first
+use for entries in the <span
+class="cmss-10">symbol</span><a
+ id="dx1-8045"></a> category:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-54">
+\newcommand*{\glsxtrpostlinksymbol}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrpostlinkAddDescOnFirstUse
+&#x00A0;<br />}
+</div>
+<!--l. 2129--><p class="nopar" >
+</p><!--l. 2131--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostlinkAddSymbolOnFirstUse</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8046"></a> <span
+class="cmtt-10">\glsxtrpostlinkAddSymbolOnFirstUse</span>
+</div><hr>
+</p><!--l. 2133--><p class="noindent" >
+This will append the symbol (if defined) in parentheses on <a
+ id="dx1-8047"></a><a
+href="#glo:firstuse">first use</a>. (Does nothing if
+the symbol hasn&#8217;t been set.)
+</p><!--l. 2137--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostlinkAddSymbolDescOnFirstUse</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8048"></a> <span
+class="cmtt-10">\glsxtrpostlinkAddSymbolDescOnFirstUse</span>
+</div><hr>
+</p><!--l. 2139--><p class="noindent" >
+(New to v1.31.) On <a
+ id="dx1-8049"></a>first use, this will append <span
+class="cmtt-10">\space</span>(&#x27E8;<span
+class="cmti-10">symbol</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">description</span>&#x27E9;) if the
+symbol is defined otherwise it just appends <span
+class="cmtt-10">\space</span>(&#x27E8;<span
+class="cmti-10">description</span>&#x27E9;).
+</p><!--l. 2145--><p class="indent" > If you want to provide your own custom format be aware that you can&#8217;t use
+<span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-8050"></a> within the post-<a
+ id="dx1-8051"></a><a
+href="#glo:linktext">link-text</a> hook as by this point the <a
+ id="dx1-8052"></a><a
+href="#glo:firstuseflag">first use flag</a> will have
+been unset. Instead you can use
+</p><!--l. 2148--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrifwasfirstuse</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8053"></a> <span
+class="cmtt-10">\glsxtrifwasfirstuse{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2150--><p class="noindent" >
+This will do &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; if the last used entry was the <a
+ id="dx1-8054"></a>first use for that entry, otherwise it
+will do &#x27E8;<span
+class="cmti-10">false</span>&#x27E9;. (Requires at least <span
+class="cmss-10">glossaries </span>v4.19 to work properly.) This command is
+locally set by commands like <span
+class="cmtt-10">\gls</span>, so don&#8217;t rely on it outside of the post-<a
+ id="dx1-8055"></a>link-text
+hook.
+</p><!--l. 2158--><p class="indent" > <div class="important" title="Important Note"> Note that commands like <span
+class="cmtt-10">\glsfirst</span><a
+ id="dx1-8056"></a> and <span
+class="cmtt-10">\glsxtrfull</span><a
+ id="dx1-8057"></a> fake <a
+ id="dx1-8058"></a>first use for the
+benefit of the post-<a
+ id="dx1-8059"></a>link-text hooks by setting <span
+class="cmtt-10">\glsxtrifwasfirstuse </span>to
+<span
+class="cmtt-10">\@firstoftwo</span>. (Although, depending on the styles in use, they may not exactly
+match the text produced by <span
+class="cmtt-10">\gls</span><a
+ id="dx1-8060"></a>-like commands on <a
+ id="dx1-8061"></a>first use.) However, the
+<a
+href="#abbrstyle.short-postfootnote"><span
+class="cmss-10">short-postfootnote</span></a><a
+ id="dx1-8062"></a> style alters <span
+class="cmtt-10">\glsxtrfull </span>so that it fakes non-<a
+ id="dx1-8063"></a>first use otherwise
+the inline full format would include the footnote, which is inappropriate.
+</div>
+</p><!--l. 2167--><p class="noindent" >
+</p><!--l. 2169--><p class="indent" > For example, if you want to place the description in a footnote after the <a
+ id="dx1-8064"></a>link-text
+on <a
+ id="dx1-8065"></a>first use for the <span
+class="cmss-10">general</span><a
+ id="dx1-8066"></a> category:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-55">
+\newcommand*{\glsxtrpostlinkgeneral}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrifwasfirstuse{\footnote{\glsentrydesc{\glslabel}}}{}%
+&#x00A0;<br />}
+</div>
+<!--l. 2175--><p class="nopar" >
+</p><!--l. 2177--><p class="indent" > The <a
+href="#abbrstyle.short-postfootnote"><span
+class="cmss-10">short-postfootnote</span></a><a
+ id="dx1-8067"></a> abbreviation style uses the post-<a
+ id="dx1-8068"></a><a
+href="#glo:linktext">link-text</a> hook to place the
+footnote after trailing punctuation characters.
+</p><!--l. 2181--><p class="indent" > You can set the default options used by <span
+class="cmtt-10">\glslink</span><a
+ id="dx1-8069"></a>, <span
+class="cmtt-10">\gls</span><a
+ id="dx1-8070"></a> etc with:
+</p><!--l. 2183--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrSetDefaultGlsOpts</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8071"></a> <span
+class="cmtt-10">\GlsXtrSetDefaultGlsOpts{</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2185--><p class="noindent" >
+For example, if you mostly don&#8217;t want to index entries then you can do:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-56">
+\GlsXtrSetDefaultGlsOpts{noindex}
+</div>
+<!--l. 2190--><p class="nopar" > and then use, for example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[noindex=false]{sample}</span></span></span> when you actually want
+the location added to the <a
+ id="dx1-8072"></a><a
+href="#glo:numberlist">number list</a>. 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 <span
+class="cmtt-10">\glslink </span>and <span
+class="cmtt-10">\gls</span>.
+</p><!--l. 2197--><p class="indent" > Note that if you don&#8217;t want <span
+class="cmti-10">any </span>indexing, just omit <span
+class="cmtt-10">\makeglossaries </span>and
+<span
+class="cmtt-10">\printglossaries </span>(or analogous commands). If you want to adjust the
+default for <span
+class="cmss-10">wrgloss</span><a
+ id="dx1-8073"></a>, it&#8217;s better to do this by redefining <span
+class="cmtt-10">\glsxtrinitwrgloss</span><a
+ id="dx1-8074"></a>
+instead.
+</p><!--l. 2203--><p class="indent" > <div class="important" title="Important Note"> <span
+class="cmtt-10">\GlsXtrSetDefaultGlsOpts </span>doesn&#8217;t affect <span
+class="cmtt-10">\glsadd</span>. </div>
+</p><!--l. 2205--><p class="noindent" >
+</p><!--l. 2207--><p class="indent" > If you want to change the default value of <span
+class="cmss-10">format</span><a
+ id="dx1-8075"></a>, you can instead use:
+</p><!--l. 2209--><p class="indent" > <hr><div title="Definition"> <span
+class="cmtt-10">\GlsXtrSetDefaultNumberFormat{</span>&#x27E8;<span
+class="cmti-10">format</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2211--><p class="noindent" >
+This has the advantage of also working for <span
+class="cmtt-10">\glsadd</span>. For example, if you
+want all locations in the back matter to appear in italic (unless explicitly
+overridden):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-57">
+\backmatter
+&#x00A0;<br />\GlsXtrSetDefaultNumberFormat{hyperit}
+</div>
+<!--l. 2218--><p class="nopar" >
+</p><!--l. 2220--><p class="indent" > Commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-8076"></a> have star (<span
+class="cmtt-10">*</span>) and plus (<span
+class="cmtt-10">+</span>) modifiers as a short cut for
+<span
+class="cmtt-10">hyper=false </span>and <span
+class="cmtt-10">hyper=true</span>. The <span
+class="cmss-10">glossaries-extra </span>package provides a way to add a
+third modifier, if required, using
+</p><!--l. 2224--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrSetAltModifier</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8077"></a> <span
+class="cmtt-10">\GlsXtrSetAltModifier{</span>&#x27E8;<span
+class="cmitt-10">char</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 2226--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">char</span>&#x27E9; is the character used as the modifier and &#x27E8;<span
+class="cmti-10">options</span>&#x27E9; is the default set of
+options (which may be overridden). Note that &#x27E8;<span
+class="cmti-10">char</span>&#x27E9; must be a single character (not a
+UTF-8 character, unless you are using <span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">&#x018e;</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span>&#x00A0;or Lua<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>).
+</p><!--l. 2233--><p class="indent" > <div class="important" title="Important Note"> When choosing the character &#x27E8;<span
+class="cmti-10">char</span>&#x27E9; take care of any changes in category code.
+</div>
+</p><!--l. 2236--><p class="noindent" >
+</p><!--l. 2238--><p class="indent" > Example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-58">
+\GlsXtrSetAltModifier{!}{noindex}
+</div>
+<!--l. 2241--><p class="nopar" > This means that <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls!{sample}</span></span></span> will be equivalent to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[noindex]{sample}</span></span></span>. It&#8217;s
+not possible to mix modifiers. For example, if you want to do
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-59">
+\gls[noindex,hyper=false]{sample}
+</div>
+<!--l. 2247--><p class="nopar" > you can use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls*[noindex]{sample}</span></span></span> or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls![hyper=false]{sample}</span></span></span> but you
+can&#8217;t combine the <span
+class="cmtt-10">* </span>and <span
+class="cmtt-10">! </span>modifiers.
+</p><!--l. 2252--><p class="indent" > <a
+ id="dx1-8078"></a><a
+href="#glo:locationlist">Location lists</a> displayed with <span
+class="cmtt-10">\printnoidxglossary </span>internally use
+</p><!--l. 2254--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsnoidxdisplayloc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8079"></a> <span
+class="cmtt-10">\glsnoidxdisplayloc{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2256--><p class="noindent" >
+This command is provided by <span
+class="cmss-10">glossaries</span>, but is modified by <span
+class="cmss-10">glossaries-extra </span>to check
+for the start and end range formation identifiers <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">(</span></span></span> and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">)</span></span></span> which are discarded to
+obtain the actual control sequence name that forms the location formatting
+command.
+</p><!--l. 2263--><p class="indent" > If the range identifiers aren&#8217;t present, this just uses
+</p><!--l. 2264--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdisplaysingleloc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8080"></a> <span
+class="cmtt-10">\glsxtrdisplaysingleloc{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 2266--><p class="noindent" >
+otherwise it uses
+</p><!--l. 2268--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdisplaystartloc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8081"></a> <span
+class="cmtt-10">\glsxtrdisplaystartloc{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 2270--><p class="noindent" >
+for the start of a range (where the identifier has been stripped from &#x27E8;<span
+class="cmti-10">format</span>&#x27E9;)
+or
+</p><!--l. 2273--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdisplayendloc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8082"></a> <span
+class="cmtt-10">\glsxtrdisplayendloc{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 2275--><p class="noindent" >
+for the end of a range (where the identifier has been stripped from &#x27E8;<span
+class="cmti-10">format</span>&#x27E9;).
+</p><!--l. 2279--><p class="indent" > By default the start range command saves the format in
+</p><!--l. 2280--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlocrangefmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8083"></a> <span
+class="cmtt-10">\glsxtrlocrangefmt </span></div><hr>
+</p><!--l. 2282--><p class="noindent" >
+and does <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\glsxtrdisplaysingleloc{</span>&#x27E8;<span
+class="cmti-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /><spacer type=vertical size=10></span>
+(If the format is empty, it will be replaced with <span
+class="cmtt-10">glsnumberformat</span>.)
+</p><!--l. 2290--><p class="indent" > The end command checks that the format matches the start of the range,
+does
+</p><!--l. 2292--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdisplayendlochook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-8084"></a> <span
+class="cmtt-10">\glsxtrdisplayendlochook{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 2294--><p class="noindent" >
+(which does nothing by default), followed by <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\glsxtrdisplaysingleloc{</span>&#x27E8;<span
+class="cmti-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <br /><spacer type=vertical size=10></span>
+and then sets <span
+class="cmtt-10">\glsxtrlocrangefmt </span>to empty.
+
+
+
+</p><!--l. 2301--><p class="indent" > This means that the list
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-60">
+\glsnoidxdisplayloc{}{page}{(textbf}{1},
+&#x00A0;<br />\glsnoidxdisplayloc{}{page}{textbf}{1},
+&#x00A0;<br />\glsnoidxdisplayloc{}{page}{)textbf}{1}.
+</div>
+<!--l. 2306--><p class="nopar" > doesn&#8217;t display any differently from
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-61">
+\glsnoidxdisplayloc{}{page}{textbf}{1},
+&#x00A0;<br />\glsnoidxdisplayloc{}{page}{textbf}{1},
+&#x00A0;<br />\glsnoidxdisplayloc{}{page}{textbf}{1}.
+</div>
+<!--l. 2312--><p class="nopar" > but it does make it easier to define your own custom list handler that can
+accommodate the ranges.
+</p><!--l. 2317--><p class="noindent" >
+</p>
+<!--l. 2317--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.4 </span> <a
+ id="sec:entrycountmods"></a>Entry Counting Modifications</h3>
+<!--l. 2320--><p class="noindent" >If you are using <a
+ id="dx1-9001"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> you may find it more convenient to use the record
+count commands described in <a
+href="#sec:bib2gls"><span
+class="cmsy-10">&sect;</span>9 </a><a
+href="#sec:bib2gls"><span
+class="cmtt-10">bib2gls</span>: Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a>
+instead.
+</p><!--l. 2324--><p class="indent" > The <span
+class="cmtt-10">\glsenableentrycount</span><a
+ id="dx1-9002"></a> command is modified to allow for the <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-9003"></a>
+attribute. This means that you not only need to enable entry counting with
+<span
+class="cmtt-10">\glsenableentrycount</span>, but you also need to set the appropriate attribute (see <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5
+</a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>).
+</p><!--l. 2330--><p class="indent" > For example, instead of just doing:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-62">
+\glsenableentrycount
+</div>
+<!--l. 2333--><p class="nopar" > you now need to do:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-63">
+\glsenableentrycount
+&#x00A0;<br />\glssetcategoryattribute{abbreviation}{entrycount}{1}
+</div>
+<!--l. 2338--><p class="nopar" > This will enable the entry counting for entries in the <span
+class="cmss-10">abbreviation</span><a
+ id="dx1-9004"></a> category, but any
+entries assigned to other categories will be unchanged.
+</p><!--l. 2343--><p class="indent" > Further information about entry counting, including the new per-unit feature, is
+described in <a
+href="#sec:entrycount"><span
+class="cmsy-10">&sect;</span>6.1 </a><a
+href="#sec:entrycount">Entry Counting (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>.
+</p><!--l. 2346--><p class="noindent" >
+</p>
+<!--l. 2346--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.5 </span> <a
+ id="sec:glsunset"></a>First Use Flag</h3>
+<!--l. 2349--><p class="noindent" >The <span
+class="cmss-10">glossaries </span>package provides
+</p><!--l. 2351--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\ifglsused</span><a
+ id="dx1-10001"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2352--><p class="noindent" >
+to determine whether or not an entry has been used. This requires the entry to have
+been defined. If the entry is undefined, then the underlying boolean variable doesn&#8217;t
+exist and so is neither true nor false. This command will produce an error with the
+default <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=error</span><a
+ id="dx1-10002"></a> mode and a warning with <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-10003"></a> and, where
+appropriate, displays ?? in the document text to denote an undefined reference.
+With both modes, neither &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; nor &#x27E8;<span
+class="cmti-10">false</span>&#x27E9; will be performed if &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; doesn&#8217;t
+exist.
+</p><!--l. 2363--><p class="indent" > The <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-10004"></a> option automatically implements <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-10005"></a> since no entries
+will be defined until they have been selected by <a
+ id="dx1-10006"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>. In this case, you may prefer
+to use:
+</p><!--l. 2367--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfUnusedOrUndefined</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-10007"></a> <span
+class="cmtt-10">\GlsXtrIfUnusedOrUndefined{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2369--><p class="noindent" >
+(new to v1.34) which does &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; if the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is undefined or if
+the entry is marked as unused. Remember that neither <span
+class="cmtt-10">\ifglsused </span>nor
+<span
+class="cmtt-10">\GlsXtrIfUnusedOrUndefined </span>should be used in the post-link hook as the
+<a
+ id="dx1-10008"></a><a
+href="#glo:firstuseflag">first use flag</a> will have already been unset before the hook is performed.
+(Instead, <span
+class="cmtt-10">\glsxtrifwasfirstuse</span><a
+ id="dx1-10009"></a> should be used, see <a
+href="#sec:entryfmtmods"><span
+class="cmsy-10">&sect;</span>2.3 </a><a
+href="#sec:entryfmtmods">Entry Display Style
+Modifications<!--tex4ht:ref: sec:entryfmtmods --></a>.)
+</p><!--l. 2378--><p class="indent" > There are two new commands provided with version 1.31+:
+</p><!--l. 2379--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslocalreseteach</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-10010"></a> <span
+class="cmtt-10">\glslocalreseteach{</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2381--><p class="noindent" >
+and
+</p><!--l. 2383--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslocalunseteach</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-10011"></a> <span
+class="cmtt-10">\glslocalunseteach{</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2385--><p class="noindent" >
+These behave like <span
+class="cmtt-10">\glslocalreset </span>and <span
+class="cmtt-10">\glslocalunset </span>but the argument is a
+
+
+
+comma-separated list of labels.
+</p><!--l. 2389--><p class="indent" > The internal command used by <span
+class="cmtt-10">\glsunset </span>is modified first to allow for the
+changing in entry counting, described above, but also to allow for buffering pending
+unsets when commands like <span
+class="cmtt-10">\gls </span>are used in a context where changing a boolean
+variable can cause things to go wrong. One example of this is using <span
+class="cmtt-10">\gls </span>in one of
+the commands provided with the <a
+ id="dx1-10012"></a>package. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-64">
+\ul{Some&#x00A0;text&#x00A0;about&#x00A0;\gls{html}.}
+</div>
+<!--l. 2398--><p class="nopar" > This causes the confusing error:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-65">
+Glossary&#x00A0;entry&#x00A0;`{html}'&#x00A0;has&#x00A0;not&#x00A0;been&#x00A0;defined.
+</div>
+<!--l. 2402--><p class="nopar" > The simplest workaround is to put <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{html}</span></span></span> inside the argument of <span
+class="cmtt-10">\mbox</span>. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-66">
+\ul{Some&#x00A0;text&#x00A0;about&#x00A0;\mbox{\gls{html}}.}
+</div>
+<!--l. 2407--><p class="nopar" > This can work provided it&#8217;s not the first use of this entry. It if is, then unsetting the
+first use flag causes a problem and results in the error:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-67">
+!&#x00A0;Package&#x00A0;soul&#x00A0;Error:&#x00A0;Reconstruction&#x00A0;failed.
+</div>
+<!--l. 2413--><p class="nopar" > The <span
+class="cmss-10">glossaries-extra </span>package provides a way of temporarily switching off <span
+class="cmtt-10">\glsunset</span>
+so that it just makes a note of the entry&#8217;s label but doesn&#8217;t actually perform the
+change:
+</p><!--l. 2417--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrStartUnsetBuffering</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-10013"></a> <span
+class="cmtt-10">\GlsXtrStartUnsetBuffering </span></div><hr>
+</p><!--l. 2419--><p class="noindent" >
+The unstarred version doesn&#8217;t check for duplicates, so the internal list may
+end up with multiple occurrences of the same label. The starred version
+only adds a label to the internal list if it&#8217;s not already in it. Note that this
+buffering only applies to the global <span
+class="cmtt-10">\glsunset </span>and does not affect the local
+<span
+class="cmtt-10">\glslocalunset</span>.
+</p><!--l. 2427--><p class="indent" > Later you can restore <span
+class="cmtt-10">\glsunset </span>and unset all buffered labels using:
+</p><!--l. 2429--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrStopUnsetBuffering</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-10014"></a> <span
+class="cmtt-10">\GlsXtrStopUnsetBuffering </span></div><hr>
+</p><!--l. 2431--><p class="noindent" >
+The starred form <span
+class="cmtt-10">\GlsXtrStopUnsetBuffering* </span>uses <span
+class="cmtt-10">\glslocalunset </span>instead. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-68">
+\documentclass{article}
+&#x00A0;<br />\usepackage[T1]{fontenc}
+&#x00A0;<br />\usepackage{soul}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\newabbreviation{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\GlsXtrStartUnsetBuffering
+&#x00A0;<br />\ul{Some&#x00A0;text&#x00A0;about&#x00A0;\mbox{\gls{html}}.}
+&#x00A0;<br />\GlsXtrStopUnsetBuffering
+&#x00A0;<br />Next&#x00A0;use:&#x00A0;\gls{html}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 2450--><p class="nopar" > Before you stop the unset buffering, you can iterate over the current buffer
+using
+</p><!--l. 2453--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrForUnsetBufferedList</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-10015"></a> <span
+class="cmtt-10">\GlsXtrForUnsetBufferedList{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 2455--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; is a control sequence that takes a single argument (which is the entry label).
+This is best used with the starred version <span
+class="cmtt-10">\GlsXtrStartUnsetBuffering* </span>to avoid
+duplicates.
+</p><!--l. 2460--><p class="indent" > <div class="important" title="Important Note"> Note that since the change in the first use flag now doesn&#8217;t occur until
+<span
+class="cmtt-10">\GlsXtrStopUnsetBuffering</span>, multiple references of the same term within the
+buffering zone will always be treated as first use (if the term wasn&#8217;t used before the
+buffering started). </div>
+</p><!--l. 2466--><p class="noindent" >
+</p><!--l. 2468--><p class="indent" > There can still be a problem here as content within <span
+class="cmtt-10">\mbox </span>can&#8217;t break across a
+line so you may end up with an overfull line or excessive white space within the
+paragraph.
+</p><!--l. 2472--><p class="indent" > An alternative is to use <span
+class="cmtt-10">\protect</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-69">
+\GlsXtrStartUnsetBuffering
+&#x00A0;<br />\ul{Some&#x00A0;text&#x00A0;about&#x00A0;\protect\gls{html}.}
+&#x00A0;<br />\GlsXtrStopUnsetBuffering
+</div>
+<!--l. 2477--><p class="nopar" > but the formatting (underlining in this example) won&#8217;t be applied. Another
+possibility is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-70">
+\usepackage[T1]{fontenc}
+&#x00A0;<br />\usepackage{soul}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\newabbreviation{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newrobustcmd{\gul}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\def\glsxtrabbreviationfont##1{\GlsXtrExpandedFmt{\ul}{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\def\glsxtrregularfont##1{\GlsXtrExpandedFmt{\ul}{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;#1%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\ul{Some&#x00A0;text&#x00A0;about&#x00A0;}\gls[textformat=gul]{html}.
+&#x00A0;<br />Next&#x00A0;use:&#x00A0;\gls{html}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 2500--><p class="nopar" > This moves <span
+class="cmtt-10">\gls </span>outside of <span
+class="cmtt-10">\ul </span>and uses <span
+class="cmss-10">textformat</span><a
+ id="dx1-10016"></a> to locally change the formatting
+command used by <span
+class="cmtt-10">\gls </span>(which is normally given by <span
+class="cmtt-10">\glstextformat </span>or the
+<a
+href="#catattr.textformat"><span
+class="cmss-10">textformat</span></a><a
+ id="dx1-10017"></a> attribute) to a custom command <span
+class="cmtt-10">\gul</span>, which locally changes the regular
+font and the default abbreviation font to use <span
+class="cmtt-10">\ul</span>. It then uses
+</p><!--l. 2507--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrExpandedFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-10018"></a> <span
+class="cmtt-10">\GlsXtrExpandedFmt{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2509--><p class="noindent" >
+which (protected) fully expands &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; before applying &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9;, which must be a control
+sequence that takes a single argument. This allows <span
+class="cmtt-10">\ul </span>to move much further inside
+and increases its chances of working. It can still break if &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; expands to
+something that <span
+class="cmtt-10">\ul </span>can&#8217;t deal with. For example, if an abbreviation style is used
+that contains complex formatting or if the field value contains problematic
+content.
+</p><!--l. 2519--><p class="noindent" >
+</p>
+<!--l. 2519--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.6 </span> <a
+ id="plurals"></a>Plurals</h3>
+<!--l. 2521--><p class="noindent" >Some languages, such as English, have a general rule that plurals are formed from
+the singular with a suffix appended. This isn&#8217;t an absolute rule. There are
+plenty of exceptions (for example, geese, children, churches, elves, fairies,
+sheep). The <span
+class="cmss-10">glossaries</span><a
+ id="dx1-11001"></a> package allows the <span
+class="cmss-10">plural</span><a
+ id="dx1-11002"></a> key to be optional when
+defining entries. In some cases a plural may not make any sense (for example,
+
+
+
+the term is a symbol) and in some cases the plural may be identical to the
+singular.
+</p><!--l. 2530--><p class="indent" > To make life easier for languages where the majority of plurals can simply be
+formed by appending a suffix to the singular, the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-11003"></a> package lets the <span
+class="cmss-10">plural</span><a
+ id="dx1-11004"></a>
+field default to the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-11005"></a> field with <span
+class="cmtt-10">\glspluralsuffix</span><a
+ id="dx1-11006"></a> appended. This
+command is defined to be just the letter &#8220;s&#8221;. This means that the majority of terms
+don&#8217;t need to have the <span
+class="cmss-10">plural</span><a
+ id="dx1-11007"></a> supplied as well, and you only need to use it for the
+exceptions.
+</p><!--l. 2539--><p class="indent" > For languages that don&#8217;t have this general rule, the <span
+class="cmss-10">plural</span><a
+ id="dx1-11008"></a> field will always need to
+be supplied, where needed.
+</p><!--l. 2542--><p class="indent" > There are other plural fields, such as <span
+class="cmss-10">firstplural</span><a
+ id="dx1-11009"></a>, <span
+class="cmss-10">longplural</span><a
+ id="dx1-11010"></a> and <span
+class="cmss-10">shortplural</span><a
+ id="dx1-11011"></a>. Again, if
+you are using a language that doesn&#8217;t have a simple suffix rule, you&#8217;ll have to
+supply the plural forms if you need them (and if a plural makes sense in the
+context).
+</p><!--l. 2548--><p class="indent" > If these fields are omitted, the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-11012"></a> package follows these rules: </p>
+ <ul class="itemize1">
+ <li class="itemize">If <span
+class="cmss-10">firstplural</span><a
+ id="dx1-11013"></a> is missing, then <span
+class="cmtt-10">\glspluralsuffix </span>is appended to the <span
+class="cmss-10">first</span><a
+ id="dx1-11014"></a>
+ field, if that field has been supplied. If the <span
+class="cmss-10">first</span><a
+ id="dx1-11015"></a> field hasn&#8217;t been supplied
+ but the <span
+class="cmss-10">plural</span><a
+ id="dx1-11016"></a> field has been supplied, then the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-11017"></a> field defaults to
+ the <span
+class="cmss-10">plural</span><a
+ id="dx1-11018"></a> field. If the <span
+class="cmss-10">plural</span><a
+ id="dx1-11019"></a> field hasn&#8217;t been supplied, then both the <span
+class="cmss-10">plural</span><a
+ id="dx1-11020"></a>
+ and <span
+class="cmss-10">firstplural</span><a
+ id="dx1-11021"></a> fields default to the <span
+class="cmss-10">text</span><a
+ id="dx1-11022"></a> field (or <span
+class="cmss-10">name</span><a
+ id="dx1-11023"></a>, if no <span
+class="cmss-10">text</span><a
+ id="dx1-11024"></a> field) with
+ <span
+class="cmtt-10">\glspluralsuffix </span>appended.
+ </li>
+ <li class="itemize">If the <span
+class="cmss-10">longplural</span><a
+ id="dx1-11025"></a> field is missing, then <span
+class="cmtt-10">\glspluralsuffix </span>is appended to
+ the <span
+class="cmss-10">long</span><a
+ id="dx1-11026"></a> field, if the <span
+class="cmss-10">long</span><a
+ id="dx1-11027"></a> field has been supplied.
+ </li>
+ <li class="itemize">If the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-11028"></a> field is missing then, <span
+class="cmti-10">with the base </span><span
+class="cmssi-10">glossaries</span><a
+ id="dx1-11029"></a> <span
+class="cmti-10">acronym</span>
+ <span
+class="cmti-10">mechanism</span>, <span
+class="cmtt-10">\acrpluralsuffix</span><a
+ id="dx1-11030"></a> is appended to the <span
+class="cmss-10">short</span><a
+ id="dx1-11031"></a> field.
+ </li></ul>
+<!--l. 2571--><p class="indent" > This <span
+class="cmti-10">last case is changed </span>with <span
+class="cmss-10">glossaries-extra</span>. With this extension package, the
+<span
+class="cmss-10">shortplural</span><a
+ id="dx1-11032"></a> field defaults to the <span
+class="cmss-10">short</span><a
+ id="dx1-11033"></a> field with <span
+class="cmtt-10">\abbrvpluralsuffix</span><a
+ id="dx1-11034"></a> appended
+unless overridden by category attributes. This suffix command is set by the
+abbreviation styles. This means that every time an abbreviation style is
+implemented, <span
+class="cmtt-10">\abbrvpluralsuffix </span>is redefined. In most cases its redefined to
+use
+</p><!--l. 2579--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrabbrvpluralsuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-11035"></a> <span
+class="cmtt-10">\glsxtrabbrvpluralsuffix </span></div><hr>
+</p><!--l. 2581--><p class="noindent" >
+which defaults to just <span
+class="cmtt-10">\glspluralsuffix</span>. Some of the abbreviation styles have their
+own command for the plural suffix, such as <span
+class="cmtt-10">\glsxtrscsuffix</span>, so if you want to
+completely strip all the plural suffixes used for abbreviations then you need to
+redefine <span
+class="cmtt-10">\glsxtrabbrvpluralsuffix </span><span
+class="cmti-10">not </span><span
+class="cmtt-10">\abbrvpluralsuffix</span>, which changes with
+the style. Redefining <span
+class="cmtt-10">\acrpluralsuffix </span>will have no affect, since it&#8217;s not used by the
+new abbreviation mechanism.
+
+
+
+</p><!--l. 2591--><p class="indent" > If you require a mixture (for example, in a multilingual document), there are two
+attributes that affect the short plural suffix formation. The first is <a
+href="#catattr.aposplural"><span
+class="cmss-10">aposplural</span></a><a
+ id="dx1-11036"></a> which
+uses the suffix
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-71">
+'\abbrvpluralsuffix
+</div>
+<!--l. 2596--><p class="nopar" > That is, an apostrophe followed by <span
+class="cmtt-10">\abbrvpluralsuffix </span>is appended. The second
+attribute is <a
+href="#catattr.noshortplural"><span
+class="cmss-10">noshortplural</span></a><a
+ id="dx1-11037"></a> which suppresses the suffix and simply sets <span
+class="cmss-10">shortplural</span><a
+ id="dx1-11038"></a> to the
+same as <span
+class="cmss-10">short</span><a
+ id="dx1-11039"></a>.
+</p><!--l. 2602--><p class="noindent" >
+</p>
+<!--l. 2602--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.7 </span> <a
+ id="sec:nested"></a>Nested Links</h3>
+<!--l. 2605--><p class="noindent" >Complications arise when you use <span
+class="cmtt-10">\gls</span><a
+ id="dx1-12001"></a> in the value of the <span
+class="cmss-10">name</span><a
+ id="dx1-12002"></a> field (or <span
+class="cmss-10">text</span><a
+ id="dx1-12003"></a> or <span
+class="cmss-10">first</span><a
+ id="dx1-12004"></a>
+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.
+</p><!--l. 2613--><p class="indent" > Things can go wrong if we try the following with the <span
+class="cmss-10">glossaries </span>package:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-72">
+\newacronym{ssi}{SSI}{Server&#x00A0;Side&#x00A0;Includes}
+&#x00A0;<br />\newacronym{html}{HTML}{Hypertext&#x00A0;Markup&#x00A0;Language}
+&#x00A0;<br />\newacronym{shtml}{S\gls{html}}{\gls{ssi}&#x00A0;enabled&#x00A0;\gls{html}}
+</div>
+<!--l. 2619--><p class="nopar" >
+</p><!--l. 2621--><p class="indent" > The main problems are:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-12006x1"><a
+ id="itm:nestedfirstucprob"></a> The first letter upper casing commands, such as <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-12007"></a>, won&#8217;t work for the
+ <span
+class="cmtt-10">shtml </span>entry on <a
+ id="dx1-12008"></a><a
+href="#glo:firstuse">first use</a> if the long form is displayed before the short
+ form (which is the default abbreviation style). This will attempt to
+ do
+
+
+
+ <div class="verbatim" id="verbatim-73">
+ \gls{\uppercase&#x00A0;ssi}&#x00A0;enabled&#x00A0;\gls{html}
+</div>
+ <!--l. 2629--><p class="nopar" > which just doesn&#8217;t work. Grouping the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{ssi}</span></span></span> doesn&#8217;t work either as this
+ will effectively try to do
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-74">
+ \uppercase{\gls{ssi}}&#x00A0;enabled&#x00A0;\gls{html}
+</div>
+ <!--l. 2634--><p class="nopar" > This will upper case the label <span
+class="cmtt-10">ssi </span>so the entry won&#8217;t be recognised.
+ This problem will also occur if you use the all capitals version, such as
+ <span
+class="cmtt-10">\GLS</span><a
+ id="dx1-12009"></a>.
+ </p></li>
+ <li
+ class="enumerate" id="x1-12011x2"><a
+ id="itm:nonexpandprob"></a> The long and abbreviated forms accessed through <span
+class="cmtt-10">\glsentrylong</span><a
+ id="dx1-12012"></a> and
+ <span
+class="cmtt-10">\glsentryshort</span><a
+ id="dx1-12013"></a> are no longer expandable and so can&#8217;t be used be used in
+ contexts that require this, such as PDF bookmarks.
+ </li>
+ <li
+ class="enumerate" id="x1-12015x3"><a
+ id="itm:nestedsortprob"></a> The nested commands may end up in the <span
+class="cmss-10">sort</span><a
+ id="dx1-12016"></a> key, which will confuse the
+ indexing.
+ </li>
+ <li
+ class="enumerate" id="x1-12018x4"><a
+ id="itm:inconsistentfirstuseprob"></a> The <span
+class="cmtt-10">shtml </span>entry produces inconsistent results depending on whether the <span
+class="cmtt-10">ssi</span>
+ or <span
+class="cmtt-10">html </span>entries have been used. Suppose both <span
+class="cmtt-10">ssi </span>and <span
+class="cmtt-10">html </span>are used before
+ <span
+class="cmtt-10">shtml</span>. For example:
+
+
+
+ <div class="verbatim" id="verbatim-75">
+ This&#x00A0;section&#x00A0;discusses&#x00A0;\gls{ssi},&#x00A0;\gls{html}&#x00A0;and&#x00A0;\gls{shtml}.
+</div>
+ <!--l. 2653--><p class="nopar" > This produces:
+ </p><div class="quote">
+ <!--l. 2656--><p class="noindent" >This section discusses server side includes (SSI), hypertext
+ markup language (HTML) and SSI enabled HTML (SHTML).</p></div>
+ <!--l. 2659--><p class="noindent" >So the <a
+ id="dx1-12019"></a><a
+href="#glo:firstuse">first use</a> of the <span
+class="cmtt-10">shtml </span>entry produces &#8220;SSI enabled HTML (SHTML)&#8221;.
+ </p><!--l. 2662--><p class="noindent" >Now let&#8217;s suppose the <span
+class="cmtt-10">html </span>entry is used before the <span
+class="cmtt-10">shtml </span>but the <span
+class="cmtt-10">ssi </span>entry is
+ used after the <span
+class="cmtt-10">shtml </span>entry, for example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-76">
+ The&#x00A0;sample&#x00A0;files&#x00A0;are&#x00A0;either&#x00A0;\gls{html}&#x00A0;or&#x00A0;\gls{shtml},&#x00A0;but&#x00A0;let's
+ &#x00A0;<br />first&#x00A0;discuss&#x00A0;\gls{ssi}.
+</div>
+ <!--l. 2668--><p class="nopar" > This produces:
+ </p><div class="quote">
+ <!--l. 2671--><p class="noindent" >The sample files are either hypertext markup language (HTML)
+ or server side includes (SSI) enabled HTML (SHTML), but let&#8217;s
+ first discuss SSI.</p></div>
+ <!--l. 2676--><p class="noindent" >So the <a
+ id="dx1-12020"></a><a
+href="#glo:firstuse">first use</a> of the <span
+class="cmtt-10">shtml </span>entry now produces &#8220;server side includes (SSI)
+ enabled HTML (SHTML)&#8221;, which looks a bit strange.
+ </p><!--l. 2680--><p class="noindent" >Now let&#8217;s suppose the <span
+class="cmtt-10">shtml </span>entry is used before (or without) the other two
+ entries:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-77">
+ This&#x00A0;article&#x00A0;is&#x00A0;an&#x00A0;introduction&#x00A0;to&#x00A0;\gls{shtml}.
+</div>
+ <!--l. 2684--><p class="nopar" > This produces:
+ </p><div class="quote">
+ <!--l. 2687--><p class="noindent" >This article is an introduction to server side includes (SSI)
+ enabled hypertext markup language (HTML) (SHTML).</p></div>
+ <!--l. 2690--><p class="noindent" >So the <a
+ id="dx1-12021"></a><a
+href="#glo:firstuse">first use</a> of the <span
+class="cmtt-10">shtml </span>entry now produces &#8220;server side includes (SSI)
+ enabled hypertext markup language (HTML) (SHTML)&#8221;, which is even more
+ strange.
+ </p><!--l. 2694--><p class="noindent" >This is all aggravated by setting the style using the <span
+class="cmss-10">glossaries </span>package&#8217;s
+ <span
+class="cmtt-10">\setacronymstyle</span>. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-78">
+ \setacronymstyle{long-short}
+</div>
+ <!--l. 2699--><p class="nopar" > as this references the label through the use of <span
+class="cmtt-10">\glslabel </span>when displaying the
+ long and short forms, but this value changes with each use of <span
+class="cmtt-10">\gls</span>, so
+ instead of displaying &#8220;(SHTML)&#8221; at the end of the <a
+ id="dx1-12022"></a><a
+href="#glo:firstuse">first use</a>, it now
+ displays &#8220;(HTML)&#8221;, since <span
+class="cmtt-10">\glslabel </span>has been changed to <span
+class="cmtt-10">html </span>by
+ <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{html}</span></span></span>.
+ </p><!--l. 2707--><p class="noindent" >Another oddity occurs if you reset the <span
+class="cmtt-10">html </span>entry between uses of the <span
+class="cmtt-10">shtml</span>
+ entry. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-79">
+ \gls{shtml}&#x00A0;...&#x00A0;\glsreset{html}\gls{shtml}
+</div>
+ <!--l. 2711--><p class="nopar" > The next use of <span
+class="cmtt-10">shtml </span>produces &#8220;Shypertext markup language (HTML)&#8221;,
+ which is downright weird.
+ </p><!--l. 2715--><p class="noindent" >Even without this, the short form has nested formatting commands, which
+ amount to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\acronymfont{S\acronymfont{HTML}}</span></span></span>. This may not be a problem
+ for some styles, but if you use one of the &#8220;sm&#8221; styles (that use <span
+class="cmtt-10">\textsmaller</span><a
+ id="dx1-12023"></a>),
+ this will produce an odd result.
+ </p></li>
+ <li
+ class="enumerate" id="x1-12025x5"><a
+ id="itm:indexingprob"></a> Each time the <span
+class="cmtt-10">shtml </span>entry is used, the <span
+class="cmtt-10">html </span>entry will also be indexed and
+ marked as used, and on <a
+ id="dx1-12026"></a><a
+href="#glo:firstuse">first use</a> this will happen to both the <span
+class="cmtt-10">ssi </span>and <span
+class="cmtt-10">html</span>
+ entries. This kind of duplication in the location list isn&#8217;t usually particularly
+ helpful to the reader.
+ </li>
+ <li
+ class="enumerate" id="x1-12028x6"><a
+ id="itm:nestedhyplinkprob"></a> If <span
+class="cmss-10">hyperref</span><a
+ id="dx1-12029"></a> is in use, you&#8217;ll get nested hyperlinks and there&#8217;s no consistent way
+ of dealing with this across the available PDF viewers. If on the <a
+ id="dx1-12030"></a>first
+ use case, the user clicks on the &#8220;HTML&#8221; part of the &#8220;SSI enabled
+ HTML (SHTML)&#8221; link, they may be directed to the HTML entry
+ in the glossary or they may be directed to the SHTML entry in the
+ glossary.
+ </li></ol>
+<!--l. 2736--><p class="indent" > For these reasons it&#8217;s better to use the simple expandable commands
+like <span
+class="cmtt-10">\glsentrytext</span><a
+ id="dx1-12031"></a> or <span
+class="cmtt-10">\glsentryshort</span><a
+ id="dx1-12032"></a> in the definition of other entries
+(although that doesn&#8217;t fix the first problem). Alternatively use something
+like:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-80">
+\newacronym
+&#x00A0;<br />&#x00A0;[description={\acrshort{ssi}&#x00A0;enabled&#x00A0;\acrshort{html}}]
+&#x00A0;<br />&#x00A0;{shtml}{SHTML}{SSI&#x00A0;enabled&#x00A0;HTML}
+</div>
+<!--l. 2744--><p class="nopar" > with <span
+class="cmss-10">glossaries </span>or:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-81">
+\newabbreviation
+&#x00A0;<br />&#x00A0;[description={\glsxtrshort{ssi}&#x00A0;enabled&#x00A0;\glsxtrshort{html}}]
+&#x00A0;<br />&#x00A0;{shtml}{SHTML}{SSI&#x00A0;enabled&#x00A0;HTML}
+</div>
+<!--l. 2750--><p class="nopar" > with <span
+class="cmss-10">glossaries-extra</span>. This fixes all the above listed problems (as long as you don&#8217;t
+use <span
+class="cmtt-10">\glsdesc</span><a
+ id="dx1-12033"></a>). Note that replacing <span
+class="cmtt-10">\gls </span>with <span
+class="cmtt-10">\acrshort </span>in the original example
+may fix the <a
+ id="dx1-12034"></a><a
+href="#glo:firstuse">first use</a> issue, but it doesn&#8217;t fix any of the other problems listed
+above.
+</p><!--l. 2757--><p class="indent" > If it&#8217;s simply that you want to use the abbreviation font, you can use
+<span
+class="cmtt-10">\glsabbrvfont</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-82">
+\setabbreviationstyle{long-short-sc}
+&#x00A0;<br />\newabbreviation{ssi}{ssi}{server-side&#x00A0;includes}
+&#x00A0;<br />\newabbreviation{html}{html}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newabbreviation{shtml}{shtml}{\glsabbrvfont{ssi}&#x00A0;enabled
+&#x00A0;<br />\glsabbrvfont{html}}
+</div>
+<!--l. 2766--><p class="nopar" > This will pick up the font style setting of the outer entry (shtml, in the above case).
+This isn&#8217;t a problem in the above example as all the abbreviations use the same
+style.
+</p><!--l. 2771--><p class="indent" > However if you&#8217;re really determined to use <span
+class="cmtt-10">\gls</span><a
+ id="dx1-12035"></a> in a field that may be included
+within some <a
+ id="dx1-12036"></a><a
+href="#glo:linktext">link-text</a>, <span
+class="cmss-10">glossaries-extra </span>patches internals used by the linking commands
+so that if <span
+class="cmtt-10">\gls </span>(or plural or case changing variants) occurs in the <a
+ id="dx1-12037"></a>link-text it will
+behave as though you used <span
+class="cmtt-10">\glstext</span><a
+ id="dx1-12038"></a><span
+class="cmtt-10">[hyper=false,noindex] </span>instead. Grouping is
+also added so that, for example, when <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{shtml}</span></span></span> is used for the first time the long
+form
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-83">
+\gls{ssi}&#x00A0;enabled&#x00A0;\gls{html}
+</div>
+<!--l. 2782--><p class="nopar" > is treated as
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-84">
+{\glstext[hyper=false,noindex]{ssi}}&#x00A0;enabled
+&#x00A0;<br />{\glstext[hyper=false,noindex]{html}}
+</div>
+<!--l. 2787--><p class="nopar" > This overcomes problems&#x00A0;<a
+href="#itm:inconsistentfirstuseprob">4<!--tex4ht:ref: itm:inconsistentfirstuseprob --></a>, <a
+href="#itm:indexingprob">5<!--tex4ht:ref: itm:indexingprob --></a> and <a
+href="#itm:nestedhyplinkprob">6<!--tex4ht:ref: itm:nestedhyplinkprob --></a> listed above, but still doesn&#8217;t fix problems&#x00A0;<a
+href="#itm:nestedfirstucprob">1<!--tex4ht:ref: itm:nestedfirstucprob --></a>
+and <a
+href="#itm:nonexpandprob">2<!--tex4ht:ref: itm:nonexpandprob --></a>. Problem&#x00A0;<a
+href="#itm:nestedsortprob">3<!--tex4ht:ref: itm:nestedsortprob --></a> usually won&#8217;t be an issue as most abbreviation styles set the <span
+class="cmss-10">sort</span><a
+ id="dx1-12039"></a>
+key to the short form, so using these commands in the long form but not the short
+form will only affect entries with a style that sorts according to the long form (such
+as <a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-12040"></a>).
+</p><!--l. 2798--><p class="indent" > Additionally, any instance of the long form commands, such as <span
+class="cmtt-10">\glsxtrlong</span><a
+ id="dx1-12041"></a> or
+<span
+class="cmtt-10">\acrlong</span><a
+ id="dx1-12042"></a> will be temporarily redefined to just use </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glsentrylong</span><a
+ id="dx1-12043"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmsy-10">}</span>
+</div>
+</div> (or case-changing versions). Similarly the short form commands, such as
+<span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-12044"></a> or <span
+class="cmtt-10">\acrshort</span><a
+ id="dx1-12045"></a> will use <span
+class="cmtt-10">\glsentryshort</span><a
+ id="dx1-12046"></a> in the argument of either
+<span
+class="cmtt-10">\glsabbrvfont </span>(for <span
+class="cmtt-10">\glsxtrshort</span>) or <span
+class="cmtt-10">\acronymfont </span>(for <span
+class="cmtt-10">\acrshort</span>). So if the
+<span
+class="cmtt-10">shtml </span>entry had instead been defined as:
+
+
+
+ <div class="verbatim" id="verbatim-85">
+\newacronym{shtml}{SHTML}{\acrshort{ssi}&#x00A0;enabled&#x00A0;\acrshort{html}}
+</div>
+<!--l. 2811--><p class="nopar" > then (using the <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-12047"></a> style) the <a
+ id="dx1-12048"></a><a
+href="#glo:firstuse">first use</a> will be like
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-86">
+{\acronymfont{\glsentryshort{ssi}}}&#x00A0;enabled
+&#x00A0;<br />{\acronymfont{\glsentryshort{html}}}&#x00A0;(SHTML)
+</div>
+<!--l. 2817--><p class="nopar" > whereas if the entry is defined as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-87">
+\newabbreviation{shtml}{SHTML}{\glsxtrshort{ssi}&#x00A0;enabled
+&#x00A0;<br />\glsxtrshort{html}}
+</div>
+<!--l. 2822--><p class="nopar" > then the <a
+ id="dx1-12049"></a><a
+href="#glo:firstuse">first use</a> will be like:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-88">
+{\glsabbrvfont{\glsentryshort{ssi}}}&#x00A0;enabled
+&#x00A0;<br />{\glsabbrvfont{\glsentryshort{html}}}&#x00A0;(SHTML)
+</div>
+<!--l. 2827--><p class="nopar" > Note that the first optional argument of <span
+class="cmtt-10">\acrshort </span>or <span
+class="cmtt-10">\glsxtrshort </span>is ignored in
+this context. (The final optional argument will be inserted, if present.) The
+abbreviation style that governs <span
+class="cmtt-10">\glsabbrvfont</span><a
+ id="dx1-12050"></a> will be set for <span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-12051"></a>. Note
+that <span
+class="cmtt-10">\acrshort </span>doesn&#8217;t set the abbreviation style.
+</p><!--l. 2835--><p class="indent" > Alternatively you can use:
+</p><!--l. 2836--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrp</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-12052"></a> <span
+class="cmtt-10">\glsxtrp{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2838--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; is the field label and corresponds to a command in the form <span
+class="cmtt-10">\gls</span>&#x27E8;<span
+class="cmti-10">field</span>&#x27E9;
+(e.g.&#x00A0;<span
+class="cmtt-10">\glstext</span>) or in the form <span
+class="cmtt-10">\glsxtr</span>&#x27E8;<span
+class="cmti-10">field</span>&#x27E9; (e.g.&#x00A0;<span
+class="cmtt-10">\glsxtrshort</span>).
+</p><!--l. 2843--><p class="indent" > There&#8217;s a shortcut command for the most common fields:
+</p><!--l. 2844--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsps</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-12053"></a> <span
+class="cmtt-10">\glsps{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2846--><p class="noindent" >
+which is equivalent to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrp{short}</span></span></span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>, and
+</p><!--l. 2848--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glspt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-12054"></a> <span
+class="cmtt-10">\glspt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2850--><p class="noindent" >
+which is equivalent to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrp{text}</span></span></span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.
+</p><!--l. 2853--><p class="indent" > The <span
+class="cmtt-10">\glsxtrp </span>command behaves much like the <span
+class="cmtt-10">\glsfmt</span>&#x27E8;<span
+class="cmti-10">field</span>&#x27E9; commands described
+in <a
+href="#sec:headtitle"><span
+class="cmsy-10">&sect;</span>4 </a><a
+href="#sec:headtitle">Entries in Sectioning Titles, Headers, Captions and Contents<!--tex4ht:ref: sec:headtitle --></a> but the post-link
+hook is also suppressed and extra grouping is added. It automatically sets
+<span
+class="cmss-10">hyper</span><a
+ id="dx1-12055"></a> to <span
+class="cmtt-10">false </span>and <span
+class="cmss-10">noindex</span><a
+ id="dx1-12056"></a> to <span
+class="cmtt-10">true</span>. If you want to change this, you can
+use
+</p><!--l. 2860--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsetpopts</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-12057"></a> <span
+class="cmtt-10">\glsxtrsetpopts{</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2862--><p class="noindent" >
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-89">
+\glsxtrsetpopts{hyper=false}
+</div>
+<!--l. 2866--><p class="nopar" > will just switch off the hyperlinks but not the indexing. Be careful using
+this command or you can end up back to the original problem of nested
+links.
+</p><!--l. 2871--><p class="indent" > The hyper link is re-enabled within glossaries. This is done through the
+command:
+</p><!--l. 2873--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossxtrsetpopts</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-12058"></a> <span
+class="cmtt-10">\glossxtrsetpopts </span></div><hr>
+</p><!--l. 2875--><p class="noindent" >
+which by default just does
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-90">
+\glsxtrsetpopts{noindex}
+</div>
+<!--l. 2879--><p class="nopar" > You can redefine this if you want to adjust the setting when <span
+class="cmtt-10">\glsxtrp </span>is used in the
+glossary. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-91">
+\renewcommand{\glossxtrsetpopts}{\glsxtrsetpopts{noindex=false}}
+</div>
+<!--l. 2884--><p class="nopar" >
+</p><!--l. 2886--><p class="indent" > For example,
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-92">
+\glsxtrp{short}{ssi}
+</div>
+<!--l. 2889--><p class="nopar" > is equivalent to
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-93">
+{\let\glspostlinkhook\relax
+&#x00A0;<br />&#x00A0;\glsxtrshort[hyper=false,noindex]{ssi}[]%
+&#x00A0;<br />}
+</div>
+<!--l. 2895--><p class="nopar" > in the main body of the document or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-94">
+{\let\glspostlinkhook\relax
+&#x00A0;<br />&#x00A0;\glsxtrshort[noindex]{ssi}[]%
+&#x00A0;<br />}
+</div>
+<!--l. 2901--><p class="nopar" > inside the glossary. (Note the post-link hook is locally disabled.)
+</p><!--l. 2904--><p class="indent" > If <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrp{short}{ssi}</span></span></span> occurs in a sectioning mark, it&#8217;s equivalent
+to
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-95">
+{\glsxtrheadshort{ssi}}
+</div>
+<!--l. 2908--><p class="nopar" > (which recognises the <a
+href="#catattr.headuc"><span
+class="cmss-10">headuc</span></a><a
+ id="dx1-12059"></a> attribute.)
+</p><!--l. 2911--><p class="indent" > If <span
+class="cmss-10">hyperref</span><a
+ id="dx1-12060"></a> has been loaded, then the bookmark will use <span
+class="cmtt-10">\glsentry</span>&#x27E8;<span
+class="cmti-10">field</span>&#x27E9;
+(<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryshort{ssi}</span></span></span> in the above example).
+</p><!--l. 2915--><p class="indent" > There are similar commands
+</p><!--l. 2916--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrp</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-12061"></a> <span
+class="cmtt-10">\Glsxtrp{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2918--><p class="noindent" >
+for first letter upper case and
+</p><!--l. 2920--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSxtrp</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-12062"></a> <span
+class="cmtt-10">\GLSxtrp{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 2922--><p class="noindent" >
+for all upper case.
+</p><!--l. 2925--><p class="indent" > <div class="important" title="Important Note"> If you use any of the case-changing commands, such as <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-12063"></a> or <span
+class="cmtt-10">\Glstext</span><a
+ id="dx1-12064"></a>, (either
+all caps or first letter upper casing) don&#8217;t use any of the linking commands, such as
+<span
+class="cmtt-10">\gls</span><a
+ id="dx1-12065"></a> or <span
+class="cmtt-10">\glstext</span><a
+ id="dx1-12066"></a>, in the definition of entries for any of the fields that may be used
+by those case-changing commands. </div>
+</p><!--l. 2931--><p class="noindent" >
+</p><!--l. 2933--><p class="indent" > You can, with care, protect against issue&#x00A0;<a
+href="#itm:nestedfirstucprob">1<!--tex4ht:ref: itm:nestedfirstucprob --></a> by inserting an empty group at the
+start if the long form starts with a command that breaks the first letter uppercasing
+commands like <span
+class="cmtt-10">\Gls</span>, but you still won&#8217;t be able to use the all caps commands, such
+as <span
+class="cmtt-10">\GLS</span>.
+</p><!--l. 2939--><p class="indent" > If you <span
+class="cmti-10">really need </span>nested commands, the safest method is
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-96">
+\newabbreviation{shtml}{shtml}{{}\glsxtrp{short}{ssi}&#x00A0;enabled
+&#x00A0;<br />\glsxtrp{short}{html}}
+</div>
+<!--l. 2943--><p class="nopar" > but be aware that it may have some unexpected results occasionally.
+</p><!--l. 2946--><p class="indent" > Example document:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-97">
+\documentclass{report}
+&#x00A0;<br />\usepackage[utf8]{inputenc}
+&#x00A0;<br />\usepackage[T1]{fontenc}
+&#x00A0;<br />\usepackage{slantsc}
+&#x00A0;<br />\usepackage[colorlinks]{hyperref}
+&#x00A0;<br />\usepackage[nopostdot=false]{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\setabbreviationstyle{long-short-sc}
+&#x00A0;<br />\newabbreviation{ssi}{ssi}{server-side&#x00A0;includes}
+&#x00A0;<br />\newabbreviation{html}{html}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newabbreviation{shtml}{shtml}{{}\glsps{ssi}&#x00A0;enabled&#x00A0;{}\glsps{html}}
+&#x00A0;<br />\pagestyle{headings}
+&#x00A0;<br />\glssetcategoryattribute{abbreviation}{headuc}{true}
+&#x00A0;<br />\glssetcategoryattribute{abbreviation}{glossdesc}{title}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\tableofcontents
+&#x00A0;<br />\chapter{\glsfmtfull{shtml}}
+&#x00A0;<br />First&#x00A0;use:&#x00A0;\gls{shtml},&#x00A0;\gls{ssi}&#x00A0;and&#x00A0;\gls{html}.
+&#x00A0;<br />Next&#x00A0;use:&#x00A0;\gls{shtml},&#x00A0;\gls{ssi}&#x00A0;and&#x00A0;\gls{html}.
+&#x00A0;<br />\newpage
+&#x00A0;<br />Next&#x00A0;page.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 2984--><p class="nopar" >
+</p><!--l. 2986--><p class="noindent" >
+</p>
+<!--l. 2986--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.8 </span> <a
+ id="sec:acronymmods"></a>Acronym Style Modifications</h3>
+
+
+
+<!--l. 2989--><p class="noindent" >The <span
+class="cmss-10">glossaries-extra </span>package provides a new way of dealing with abbreviations and
+redefines <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-13001"></a> to use <span
+class="cmtt-10">\newabbreviation </span>(see <a
+href="#sec:abbreviations"><span
+class="cmsy-10">&sect;</span>3 </a><a
+href="#sec:abbreviations">Abbreviations<!--tex4ht:ref: sec:abbreviations --></a>). The
+simplest way to update a document that uses <span
+class="cmtt-10">\newacronym </span>from <span
+class="cmss-10">glossaries </span>to
+<span
+class="cmss-10">glossaries-extra </span>is do just add
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-98">
+\setabbreviationstyle[acronym]{long-short}
+</div>
+<!--l. 2997--><p class="nopar" > before you define any entries. For example, the following document using just
+<span
+class="cmss-10">glossaries</span>
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-99">
+\documentclass{article}
+&#x00A0;<br />\usepackage[acronym,nopostdot,toc]{glossaries}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\setacronymstyle{long-short}
+&#x00A0;<br />\newacronym{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{html}
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 3010--><p class="nopar" > can be easily adapted to use <span
+class="cmss-10">glossaries-extra</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-100">
+\documentclass{article}
+&#x00A0;<br />\usepackage[acronym]{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\setabbreviationstyle[acronym]{long-short}
+&#x00A0;<br />\newacronym{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{html}
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 3022--><p class="nopar" > Table&#x00A0;<a
+href="#tab:acrabbrvstyles">2.1<!--tex4ht:ref: tab:acrabbrvstyles --></a> lists the nearest equivalent <span
+class="cmss-10">glossaries-extra </span>abbreviation styles for the
+predefined acronym styles provided by <span
+class="cmss-10">glossaries</span>, but note that the new styles use
+different formatting commands. See <a
+href="#sec:predefabbrvstyles"><span
+class="cmsy-10">&sect;</span>3.4 </a><a
+href="#sec:predefabbrvstyles">Predefined Abbreviation Styles<!--tex4ht:ref: sec:predefabbrvstyles --></a> for further
+details.
+</p>
+ <div class="table">
+
+
+
+<!--l. 3029--><p class="indent" > <a
+ id="tab:acrabbrvstyles"></a></p><hr class="float" /><div class="float"
+>
+
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;2.1: </span><span
+class="content">Old Acronym Styles <span
+class="cmtt-10">\setacronymstyle{</span>&#x27E8;<span
+class="cmti-10">old-style-name</span>&#x27E9;<span
+class="cmtt-10">} </span>Verses
+New Abbreviation Styles <span
+class="cmtt-10">\setabbreviationstyle[</span>&#x27E8;<span
+class="cmti-10">category</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmti-10">new-style-name</span>&#x27E9;<span
+class="cmtt-10">}</span></span></div><!--tex4ht:label?: x1-130021 -->
+<div class="tabular"> <table id="TBL-2" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-2-1g"><col
+id="TBL-2-1" /><col
+id="TBL-2-2" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-2-1-"><td style="white-space:wrap; text-align:left;" id="TBL-2-1-1"
+class="td01"><!--l. 3036--><p class="noindent" ><span
+class="cmbx-10">Old Style Name</span> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-1-2"
+class="td10"><!--l. 3037--><p class="noindent" ><span
+class="cmbx-10">New Style Name</span> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-2-"><td style="white-space:wrap; text-align:left;" id="TBL-2-2-1"
+class="td01"><!--l. 3038--><p class="noindent" ><span
+class="cmss-10">long-sc-short</span><a
+ id="dx1-13003"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-2-2"
+class="td10"><!--l. 3038--><p class="noindent" ><a
+href="#abbrstyle.long-short-sc"><span
+class="cmss-10">long-short-sc</span></a><a
+ id="dx1-13004"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-3-"><td style="white-space:wrap; text-align:left;" id="TBL-2-3-1"
+class="td01"><!--l. 3039--><p class="noindent" ><span
+class="cmss-10">long-sm-short</span><a
+ id="dx1-13005"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-3-2"
+class="td10"><!--l. 3039--><p class="noindent" ><a
+href="#abbrstyle.long-short-sm"><span
+class="cmss-10">long-short-sm</span></a><a
+ id="dx1-13006"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-4-"><td style="white-space:wrap; text-align:left;" id="TBL-2-4-1"
+class="td01"><!--l. 3040--><p class="noindent" ><span
+class="cmss-10">long-sp-short</span><a
+ id="dx1-13007"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-4-2"
+class="td10"><!--l. 3040--><p class="noindent" ><a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-13008"></a> <br
+class="newline" />with <span
+class="cmtt-10">\renewcommand</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glsxtrfullsep</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">[1]</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glsacspace</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">#1</span><span
+class="cmsy-10">}}</span> </p> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-5-"><td style="white-space:wrap; text-align:left;" id="TBL-2-5-1"
+class="td01"><!--l. 3042--><p class="noindent" ><span
+class="cmss-10">short-long</span><a
+ id="dx1-13009"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-5-2"
+class="td10"><!--l. 3042--><p class="noindent" ><a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-13010"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-6-"><td style="white-space:wrap; text-align:left;" id="TBL-2-6-1"
+class="td01"><!--l. 3043--><p class="noindent" ><span
+class="cmss-10">sc-short-long</span><a
+ id="dx1-13011"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-6-2"
+class="td10"><!--l. 3043--><p class="noindent" ><a
+href="#abbrstyle.short-sc-long"><span
+class="cmss-10">short-sc-long</span></a><a
+ id="dx1-13012"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-7-"><td style="white-space:wrap; text-align:left;" id="TBL-2-7-1"
+class="td01"><!--l. 3044--><p class="noindent" ><span
+class="cmss-10">sm-short-long</span><a
+ id="dx1-13013"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-7-2"
+class="td10"><!--l. 3044--><p class="noindent" ><a
+href="#abbrstyle.short-sm-long"><span
+class="cmss-10">short-sm-long</span></a><a
+ id="dx1-13014"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-8-"><td style="white-space:wrap; text-align:left;" id="TBL-2-8-1"
+class="td01"><!--l. 3045--><p class="noindent" ><span
+class="cmss-10">long-short-desc</span><a
+ id="dx1-13015"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-8-2"
+class="td10"><!--l. 3045--><p class="noindent" ><a
+href="#abbrstyle.long-short-desc"><span
+class="cmss-10">long-short-desc</span></a><a
+ id="dx1-13016"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-9-"><td style="white-space:wrap; text-align:left;" id="TBL-2-9-1"
+class="td01"><!--l. 3046--><p class="noindent" ><span
+class="cmss-10">long-sc-short-desc</span><a
+ id="dx1-13017"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-9-2"
+class="td10"><!--l. 3046--><p class="noindent" ><a
+href="#abbrstyle.long-short-sc-desc"><span
+class="cmss-10">long-short-sc-desc</span></a><a
+ id="dx1-13018"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-10-"><td style="white-space:wrap; text-align:left;" id="TBL-2-10-1"
+class="td01"><!--l. 3047--><p class="noindent" ><span
+class="cmss-10">long-sm-short-desc</span><a
+ id="dx1-13019"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-10-2"
+class="td10"><!--l. 3047--><p class="noindent" ><a
+href="#abbrstyle.long-short-sm-desc"><span
+class="cmss-10">long-short-sm-desc</span></a><a
+ id="dx1-13020"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-11-"><td style="white-space:wrap; text-align:left;" id="TBL-2-11-1"
+class="td01"><!--l. 3048--><p class="noindent" ><span
+class="cmss-10">long-sp-short-desc</span><a
+ id="dx1-13021"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-11-2"
+class="td10"><!--l. 3048--><p class="noindent" ><a
+href="#abbrstyle.long-short-desc"><span
+class="cmss-10">long-short-desc</span></a><a
+ id="dx1-13022"></a> <br
+class="newline" />with <span
+class="cmtt-10">\renewcommand</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glsxtrfullsep</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">[1]</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glsacspace</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">#1</span><span
+class="cmsy-10">}}</span> </p> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-12-"><td style="white-space:wrap; text-align:left;" id="TBL-2-12-1"
+class="td01"><!--l. 3050--><p class="noindent" ><span
+class="cmss-10">short-long-desc</span><a
+ id="dx1-13023"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-12-2"
+class="td10"><!--l. 3050--><p class="noindent" ><a
+href="#abbrstyle.short-long-desc"><span
+class="cmss-10">short-long-desc</span></a><a
+ id="dx1-13024"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-13-"><td style="white-space:wrap; text-align:left;" id="TBL-2-13-1"
+class="td01"><!--l. 3051--><p class="noindent" ><span
+class="cmss-10">sc-short-long-desc</span><a
+ id="dx1-13025"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-13-2"
+class="td10"><!--l. 3051--><p class="noindent" ><a
+href="#abbrstyle.short-sc-long-desc"><span
+class="cmss-10">short-sc-long-desc</span></a><a
+ id="dx1-13026"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-14-"><td style="white-space:wrap; text-align:left;" id="TBL-2-14-1"
+class="td01"><!--l. 3052--><p class="noindent" ><span
+class="cmss-10">sm-short-long-desc</span><a
+ id="dx1-13027"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-14-2"
+class="td10"><!--l. 3052--><p class="noindent" ><a
+href="#abbrstyle.short-sm-long-desc"><span
+class="cmss-10">short-sm-long-desc</span></a><a
+ id="dx1-13028"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-15-"><td style="white-space:wrap; text-align:left;" id="TBL-2-15-1"
+class="td01"><!--l. 3053--><p class="noindent" ><span
+class="cmss-10">dua</span><a
+ id="dx1-13029"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-15-2"
+class="td10"><!--l. 3053--><p class="noindent" ><a
+href="#abbrstyle.long-noshort"><span
+class="cmss-10">long-noshort</span></a><a
+ id="dx1-13030"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-16-"><td style="white-space:wrap; text-align:left;" id="TBL-2-16-1"
+class="td01"><!--l. 3054--><p class="noindent" ><span
+class="cmss-10">dua-desc</span><a
+ id="dx1-13031"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-16-2"
+class="td10"><!--l. 3054--><p class="noindent" ><a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-13032"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-17-"><td style="white-space:wrap; text-align:left;" id="TBL-2-17-1"
+class="td01"><!--l. 3055--><p class="noindent" ><span
+class="cmss-10">footnote</span><a
+ id="dx1-13033"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-17-2"
+class="td10"><!--l. 3055--><p class="noindent" ><a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-13034"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-18-"><td style="white-space:wrap; text-align:left;" id="TBL-2-18-1"
+class="td01"><!--l. 3056--><p class="noindent" ><span
+class="cmss-10">footnote-sc</span><a
+ id="dx1-13035"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-18-2"
+class="td10"><!--l. 3056--><p class="noindent" ><a
+href="#abbrstyle.short-sc-footnote"><span
+class="cmss-10">short-sc-footnote</span></a><a
+ id="dx1-13036"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-19-"><td style="white-space:wrap; text-align:left;" id="TBL-2-19-1"
+class="td01"><!--l. 3057--><p class="noindent" ><span
+class="cmss-10">footnote-sm</span><a
+ id="dx1-13037"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-19-2"
+class="td10"><!--l. 3057--><p class="noindent" ><a
+href="#abbrstyle.short-sm-footnote"><span
+class="cmss-10">short-sm-footnote</span></a><a
+ id="dx1-13038"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-20-"><td style="white-space:wrap; text-align:left;" id="TBL-2-20-1"
+class="td01"><!--l. 3058--><p class="noindent" ><span
+class="cmss-10">footnote-desc</span><a
+ id="dx1-13039"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-20-2"
+class="td10"><!--l. 3058--><p class="noindent" ><a
+href="#abbrstyle.short-footnote-desc"><span
+class="cmss-10">short-footnote-desc</span></a><a
+ id="dx1-13040"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-21-"><td style="white-space:wrap; text-align:left;" id="TBL-2-21-1"
+class="td01"><!--l. 3059--><p class="noindent" ><span
+class="cmss-10">footnote-sc-desc</span><a
+ id="dx1-13041"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-21-2"
+class="td10"><!--l. 3059--><p class="noindent" ><a
+href="#abbrstyle.short-sc-footnote-desc"><span
+class="cmss-10">short-sc-footnote-desc</span></a><a
+ id="dx1-13042"></a> </p></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-2-22-"><td style="white-space:wrap; text-align:left;" id="TBL-2-22-1"
+class="td01"><!--l. 3060--><p class="noindent" ><span
+class="cmss-10">footnote-sm-desc</span><a
+ id="dx1-13043"></a> </p></td><td style="white-space:wrap; text-align:left;" id="TBL-2-22-2"
+class="td10"><!--l. 3060--><p class="noindent" ><a
+href="#abbrstyle.short-sm-footnote-desc"><span
+class="cmss-10">short-sm-footnote-desc</span></a><a
+ id="dx1-13044"></a> </p></td></tr></table></div>
+
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 3064--><p class="indent" > The reason for introducing the new style of abbreviation commands provided by
+<span
+class="cmss-10">glossaries-extra </span>is because the original acronym commands provided by <span
+class="cmss-10">glossaries </span>are
+too restrictive to work with the internal modifications made by <span
+class="cmss-10">glossaries-extra</span>.
+However, if you really want to restore the generic acronym function provided by
+<span
+class="cmss-10">glossaries </span>you can use
+</p><!--l. 3071--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\RestoreAcronyms</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-13045"></a> <span
+class="cmtt-10">\RestoreAcronyms </span></div><hr>
+</p><!--l. 3073--><p class="noindent" >
+(before any use of <span
+class="cmtt-10">\newacronym</span>).
+</p><!--l. 3076--><p class="indent" > <span
+class="cmtt-10">\RestoreAcronyms </span>should not be used in combination with the newer
+<span
+class="cmss-10">glossaries-extra </span>abbreviations. Don&#8217;t combine old and new style entries with the same
+<span
+class="cmss-10">type</span><a
+ id="dx1-13046"></a>. The original <span
+class="cmss-10">glossaries </span>acronym mechanism doesn&#8217;t work well with the newer
+<span
+class="cmss-10">glossaries-extra </span>commands.
+</p><!--l. 3082--><p class="indent" > <div class="important" title="Important Note"> If you use <span
+class="cmtt-10">\RestoreAcronyms</span>, don&#8217;t use any of the commands provided by
+<span
+class="cmss-10">glossaries-extra </span>intended for abbreviations (such as <span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-13047"></a> or <span
+class="cmtt-10">\glsfmtshort</span><a
+ id="dx1-13048"></a>)
+with entries defined via <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-13049"></a> as it will cause unexpected results.
+</div>
+</p><!--l. 3088--><p class="noindent" >
+</p><!--l. 3090--><p class="indent" > In general, there&#8217;s rarely any need for <span
+class="cmtt-10">\RestoreAcronyms</span>. If you have a
+document that uses <span
+class="cmtt-10">\newacronymstyle</span><a
+ id="dx1-13050"></a>, then it&#8217;s best to either stick with just
+<span
+class="cmss-10">glossaries </span>for that document or define an equivalent abbreviation style with
+<span
+class="cmtt-10">\newabbreviationstyle</span><a
+ id="dx1-13051"></a>. (See <a
+href="#sec:newabbrvstyle"><span
+class="cmsy-10">&sect;</span>3.5 </a><a
+href="#sec:newabbrvstyle">Defining New Abbreviation Styles<!--tex4ht:ref: sec:newabbrvstyle --></a> for further
+details.)
+</p><!--l. 3097--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsacspace</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-13052"></a> <span
+class="cmtt-10">\glsacspace{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3099--><p class="noindent" >
+The space command <span
+class="cmtt-10">\glsacspace </span>used by the <span
+class="cmss-10">long-sp-short</span><a
+ id="dx1-13053"></a> acronym style provided
+by <span
+class="cmss-10">glossaries </span>is modified so that it uses
+</p><!--l. 3103--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsacspacemax</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-13054"></a> <span
+class="cmtt-10">\glsacspacemax </span></div><hr>
+</p><!--l. 3105--><p class="noindent" >
+instead of the hard-coded 3em. This is a command not a length and so can be
+changed using <span
+class="cmtt-10">\renewcommand</span>.
+</p><!--l. 3109--><p class="indent" > Any of the new abbreviation styles that use <span
+class="cmtt-10">\glsxtrfullsep</span><a
+ id="dx1-13055"></a> (such as <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-13056"></a>)
+can easily be changed to use <span
+class="cmtt-10">\glsacspace </span>with
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-101">
+\renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}}
+</div>
+<!--l. 3114--><p class="nopar" >
+</p><!--l. 3116--><p class="indent" > The <a
+ id="dx1-13057"></a><a
+href="#glo:firstuse">first use</a> acronym font command
+</p><!--l. 3117--><p class="indent" > <hr><div title="Definition"> <span
+class="cmtt-10">\firstacronymfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3119--><p class="noindent" >
+is redefined to use the <a
+ id="dx1-13058"></a>first use abbreviation font command <span
+class="cmtt-10">\glsfirstabbrvfont</span><a
+ id="dx1-13059"></a>.
+This will be reset if you use <span
+class="cmtt-10">\RestoreAcronyms</span>.
+</p><!--l. 3124--><p class="indent" > The subsequent use acronym font command
+</p><!--l. 3125--><p class="indent" > <hr><div title="Definition"> <span
+class="cmtt-10">\acronymfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3127--><p class="noindent" >
+is redefined to use the subsequent use abbreviation font command <span
+class="cmtt-10">\glsabbrvfont</span><a
+ id="dx1-13060"></a>.
+This will be reset if you use <span
+class="cmtt-10">\RestoreAcronyms</span>.
+</p>
+<!--l. 3132--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.9 </span> <a
+ id="x1-140002.9"></a><span
+class="cmss-10">glossary-bookindex </span>package</h3>
+<!--l. 3135--><p class="noindent" >As from v1.21, <span
+class="cmss-10">glossaries-extra </span>has a new supplementary package <span
+class="cmss-10">glossary-bookindex</span><a
+ id="dx1-14001"></a>
+which provides the glossary style <span
+class="cmss-10">bookindex</span><a
+ id="dx1-14002"></a>. This is very similar to the <span
+class="cmss-10">mcolindexgroup</span><a
+ id="dx1-14003"></a>
+style but is designed for indexes, so by default only the name and location list
+are displayed. You can either load this package explicitly and then set the
+style:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-102">
+\usepackage{glossaries-extra}
+&#x00A0;<br />\usepackage{glossary-bookindex}
+&#x00A0;<br />\setglossarystyle{bookindex}
+</div>
+<!--l. 3145--><p class="nopar" > or use both the <a
+href="#styopt.stylemods"><span
+class="cmss-10">stylemods</span></a><a
+ id="dx1-14004"></a> and <span
+class="cmss-10">style</span><a
+ id="dx1-14005"></a> options:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-103">
+\usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra}
+</div>
+<!--l. 3149--><p class="nopar" > The <span
+class="cmss-10">bookindex</span><a
+ id="dx1-14006"></a> style only supports a maximum hierarchical level of 2 (top-level,
+level&#x00A0;1 and level&#x00A0;2). It&#8217;s primarily designed for use with <a
+ id="dx1-14007"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>. It may be used
+with other indexing options, but some features may not be present and UTF-8
+characters may cause a problem with non-Unicode engines in letter group
+headings or PDF bookmarks. (<a
+ id="dx1-14008"></a><span
+class="cmtt-10">bib2gls </span>uses numeric identifies by default to
+avoid these problems. If numbers show up in the group headings instead of
+the appropriate characters, check that you have used the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-14009"></a> package
+option.)
+</p><!--l. 3160--><p class="indent" > The number of columns is given by
+</p><!--l. 3161--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexcols</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14010"></a> <span
+class="cmtt-10">\glsxtrbookindexcols </span></div><hr>
+</p><!--l. 3163--><p class="noindent" >
+which defaults to 2.
+</p><!--l. 3166--><p class="indent" > This style uses the <span
+class="cmss-10">multicols</span><a
+ id="dx1-14011"></a><a
+ id="dx1-14012"></a> environment. If the command
+</p><!--l. 3168--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexcolspread</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14013"></a> <span
+class="cmtt-10">\glsxtrbookindexcolspread </span></div><hr>
+</p><!--l. 3170--><p class="noindent" >
+isn&#8217;t empty then it&#8217;s supplied as the optional argument following <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\begin{multicols}</span></span></span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">n</span>&#x27E9;<span
+class="cmtt-10">}</span>. You can switch from <span
+class="cmss-10">multicols</span><a
+ id="dx1-14014"></a><a
+ id="dx1-14015"></a> to <span
+class="cmss-10">multicols*</span><a
+ id="dx1-14016"></a><a
+ id="dx1-14017"></a> by redefining
+</p><!--l. 3174--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexmulticolsenv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14018"></a> <span
+class="cmtt-10">\glsxtrbookindexmulticolsenv </span></div><hr>
+</p><!--l. 3176--><p class="noindent" >
+For example
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-104">
+\renewcommand{\glsxtrbookindexmulticolsenv}{multicols*}
+</div>
+<!--l. 3180--><p class="nopar" >
+</p><!--l. 3182--><p class="indent" > Each top-level entry is displayed using
+</p><!--l. 3183--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14019"></a> <span
+class="cmtt-10">\glsxtrbookindexname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3185--><p class="noindent" >
+where the entry is identified by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. This just does <span
+class="cmtt-10">\glossentryname{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>by
+default. For example, if you want the symbol to be included:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-105">
+\renewcommand*{\glsxtrbookindexname}[1]{%
+&#x00A0;<br />&#x00A0;\glossentryname{#1}%
+&#x00A0;<br />&#x00A0;\ifglshassymbol{#1}{\space&#x00A0;(\glossentrysymbol{#1})}{}%
+&#x00A0;<br />}
+</div>
+<!--l. 3194--><p class="nopar" > or if you want the description (if set):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-106">
+\renewcommand*{\glsxtrbookindexname}[1]{%
+&#x00A0;<br />&#x00A0;\glossentryname{#1}%
+&#x00A0;<br />&#x00A0;\ifglshasdesc{#1}{\space&#x00A0;\glossentrydesc{#1}\glspostdescription}{}%
+&#x00A0;<br />}
+</div>
+<!--l. 3201--><p class="nopar" > (which picks up the post-description hook).
+</p><!--l. 3204--><p class="indent" > Alternatively you can use the <span
+class="cmtt-10">\glsxtrpostname</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9; hook to append
+information after the name according to the entry&#8217;s category.
+</p><!--l. 3208--><p class="indent" > Sub-entries are displayed using
+</p><!--l. 3209--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexsubname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14020"></a> <span
+class="cmtt-10">\glsxtrbookindexsubname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3211--><p class="noindent" >
+which just defaults to <span
+class="cmtt-10">\glsxtrbookindexname{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.
+</p><!--l. 3214--><p class="indent" > The separator used before the location list for top-level entries is given
+by
+</p><!--l. 3216--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexprelocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14021"></a> <span
+class="cmtt-10">\glsxtrbookindexprelocation{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3218--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label. This checks if the <span
+class="cmtt-10">location </span>field has been set. If it
+has, it does
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-107">
+,\glsxtrprelocation
+</div>
+<!--l. 3224--><p class="nopar" > otherwise it just does <span
+class="cmtt-10">\glsxtrprelocation </span>(which defaults to <span
+class="cmtt-10">\space</span>). If you&#8217;re not
+using <a
+ id="dx1-14022"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>, the <span
+class="cmss-10">location</span><a
+ id="dx1-14023"></a> field won&#8217;t be set.
+</p><!--l. 3229--><p class="indent" > The separator used before the location list for sub-entries is given by
+</p><!--l. 3231--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexsubprelocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14024"></a> <span
+class="cmtt-10">\glsxtrbookindexsubprelocation{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3233--><p class="noindent" >
+which defaults to <span
+class="cmtt-10">\glsxtrbookindexprelocation{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.
+</p><!--l. 3236--><p class="indent" > The actual location list is encapsulated with:
+</p><!--l. 3237--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexlocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14025"></a> <span
+class="cmtt-10">\glsxtrbookindexlocation{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>
+<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3239--><p class="noindent" >
+for top-level entries and
+</p><!--l. 3241--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexsublocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14026"></a> <span
+class="cmtt-10">\glsxtrbookindexsublocation{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">location list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3243--><p class="noindent" >
+for sub-entries. These both just do &#x27E8;<span
+class="cmti-10">location list</span>&#x27E9; by default.
+</p><!--l. 3246--><p class="indent" > The separator used between a top-level parent and child entry is given
+by
+</p><!--l. 3248--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexparentchildsep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14027"></a> <span
+class="cmtt-10">\glsxtrbookindexparentchildsep</span>
+</div><hr>
+</p><!--l. 3250--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\nopagebreak</span>.
+</p><!--l. 3253--><p class="indent" > The separator used between a sub-level parent and child entry is given
+by
+</p><!--l. 3255--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexparentsubchildsep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14028"></a> <span
+class="cmtt-10">\glsxtrbookindexparentsubchildsep</span>
+</div><hr>
+</p><!--l. 3257--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\glsxtrbookindexparentchildsep</span>.
+</p><!--l. 3260--><p class="indent" > The separator between top-level entries is given by
+</p><!--l. 3261--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexbetween</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14029"></a> <span
+class="cmtt-10">\glsxtrbookindexbetween{</span>&#x27E8;<span
+class="cmitt-10">label1</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label2</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3263--><p class="noindent" >
+This comes after the entry given by &#x27E8;<span
+class="cmti-10">label1</span>&#x27E9;, if the entry has no children, or after the
+last descendent otherwise, so it always comes immediately before the entry given by
+&#x27E8;<span
+class="cmti-10">label2</span>&#x27E9; unless the entry occurs at the start of a group. This does nothing by
+default.
+</p><!--l. 3270--><p class="indent" > The separator between two level&#x00A0;1 entries is given by
+</p><!--l. 3271--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexsubbetween</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14030"></a> <span
+class="cmtt-10">\glsxtrbookindexsubbetween{</span>&#x27E8;<span
+class="cmitt-10">label1</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label2</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+
+
+
+</p><!--l. 3273--><p class="noindent" >
+</p><!--l. 3275--><p class="indent" > The separator between two level&#x00A0;2 entries is given by
+</p><!--l. 3276--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexsubsubbetween</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14031"></a> <span
+class="cmtt-10">\glsxtrbookindexsubsubbetween{</span>&#x27E8;<span
+class="cmitt-10">label1</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label2</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3278--><p class="noindent" >
+At the end of each letter group, the following hooks are done in order:
+</p><!--l. 3281--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexsubsubatendgroup</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14032"></a> <span
+class="cmtt-10">\glsxtrbookindexsubsubatendgroup</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">sub-sub-label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3283--><p class="noindent" >
+</p><!--l. 3284--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexsubatendgroup</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14033"></a> <span
+class="cmtt-10">\glsxtrbookindexsubatendgroup{</span>&#x27E8;<span
+class="cmitt-10">sub-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3286--><p class="noindent" >
+</p><!--l. 3287--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexatendgroup</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14034"></a> <span
+class="cmtt-10">\glsxtrbookindexatendgroup{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3289--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">sub-sub-label</span>&#x27E9; is the label of the last level&#x00A0;2 entry, &#x27E8;<span
+class="cmti-10">sub-label</span>&#x27E9; is the label of the
+last level&#x00A0;1 entry and &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the label of the last level&#x00A0;0 entry.
+</p><!--l. 3295--><p class="indent" > For example, the resource option <span
+class="cmtt-10">seealso=omit </span>instructs <a
+ id="dx1-14035"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> to omit the
+<span
+class="cmtt-10">seealso </span>cross-reference from the location list. (The <span
+class="cmtt-10">see </span>cross-reference will still be
+added unless you also have <span
+class="cmtt-10">see=omit</span>.) The <span
+class="cmtt-10">seealso </span>cross-reference can instead be
+appended after the child entries using:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-108">
+\renewcommand{\glsxtrbookindexatendgroup}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrifhasfield{seealso}{#1}{\glstreesubitem\glsxtruseseealso{#1}}{}%
+&#x00A0;<br />}
+&#x00A0;<br />\renewcommand{\glsxtrbookindexbetween}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrbookindexatendgroup{#1}%
+&#x00A0;<br />}%
+&#x00A0;<br />\renewcommand{\glsxtrbookindexsubatendgroup}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrifhasfield{seealso}{#1}{\glstreesubsubitem\glsxtruseseealso{#1}}{}%
+&#x00A0;<br />}
+&#x00A0;<br />\renewcommand{\glsxtrbookindexsubbetween}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrbookindexsubatendgroup{#1}%
+&#x00A0;<br />}
+&#x00A0;<br />\renewcommand{\glsxtrbookindexsubsubatendgroup}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrifhasfield{seealso}{#1}%
+&#x00A0;<br />&#x00A0;&#x00A0;{\glstreeitem\hspace*{40pt}\glsxtruseseealso{#1}}{}%
+&#x00A0;<br />}
+&#x00A0;<br />\renewcommand{\glsxtrbookindexsubsubbetween}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrbookindexsubsubatendgroup{#1}%
+&#x00A0;<br />}
+</div>
+<!--l. 3325--><p class="nopar" > This uses <span
+class="cmtt-10">\glstreesubitem </span>and <span
+class="cmtt-10">\glstreesubsubitem </span>to indent the cross-reference
+according to the next level down, so the cross-reference for a top-level entry is aligned
+with the sub-entries, and a level&#x00A0;1 entry has its cross-reference aligned with
+sub-sub-entries. In the event that a level&#x00A0;2 entry has a cross-reference, this is
+indented a bit further (but it won&#8217;t be aligned with any deeper level as the <span
+class="cmss-10">bookindex</span><a
+ id="dx1-14036"></a>
+style only supports a maximum of two sub-levels).
+</p><!--l. 3336--><p class="indent" > The <span
+class="cmss-10">bookindex</span><a
+ id="dx1-14037"></a> style uses group headings. (If you use <a
+ id="dx1-14038"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> remember to invoke
+it with the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">--group</span></span></span> or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">-g</span></span></span> switch.) The heading will use
+</p><!--l. 3339--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexbookmark</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14039"></a> <span
+class="cmtt-10">\glsxtrbookindexbookmark{</span>&#x27E8;<span
+class="cmitt-10">group title</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3341--><p class="noindent" >
+If <span
+class="cmtt-10">\pdfbookmark </span>has been defined, this will use that command to bookmark the
+group title. If <a
+href="#styopt.section"><span
+class="cmss-10">section</span></a><span
+class="cmss-10">=chapter</span><a
+ id="dx1-14040"></a> is set (default if chapters are defined) then this
+uses level&#x00A0;1 otherwise it uses level&#x00A0;2. You can redefine this command if this
+isn&#8217;t appropriate. If <span
+class="cmtt-10">\pdfbookmark </span>hasn&#8217;t been defined, this command does
+nothin.
+</p><!--l. 3349--><p class="indent" > The group heading is formatted according to
+</p><!--l. 3350--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexformatheader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14041"></a> <span
+class="cmtt-10">\glsxtrbookindexformatheader{</span>&#x27E8;<span
+class="cmitt-10">group title</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+
+
+
+</p><!--l. 3352--><p class="noindent" >
+which is defined as
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-109">
+\newcommand*{\glsxtrbookindexformatheader}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\par{\centering\glstreegroupheaderfmt{#1}\par}%
+&#x00A0;<br />}
+</div>
+<!--l. 3358--><p class="nopar" > where <span
+class="cmtt-10">\glstreegroupheaderfmt </span>is provided by the <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-14042"></a> package, which is
+automatically loaded. Note that the entry names aren&#8217;t encapsulated with
+<span
+class="cmtt-10">\glstreenamefmt</span>.
+</p><!--l. 3364--><p class="indent" > The <span
+class="cmss-10">glossary-bookindex</span><a
+ id="dx1-14043"></a> package provides some supplementary commands that
+aren&#8217;t used by default, but may be used when adjusting the style. These commands
+should only be used within one of the <span
+class="cmtt-10">\print</span><span
+class="cmtt-10">&#x2026;glossary </span>commands. (That is, they
+should only be used in glossary styles.)
+</p><!--l. 3369--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexmarkentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14044"></a> <span
+class="cmtt-10">\glsxtrbookindexmarkentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3371--><p class="noindent" >
+This writes information to the <span
+class="cmtt-10">.aux </span>file that can be read on the next run to obtain
+the first and last entry on each page of the glossary.
+</p><!--l. 3376--><p class="indent" > You can display the first entry associated with the current page using:
+</p><!--l. 3378--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexfirstmark</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14045"></a> <span
+class="cmtt-10">\glsxtrbookindexfirstmark </span></div><hr>
+</p><!--l. 3380--><p class="noindent" >
+and the last entry associated with the current page using:
+</p><!--l. 3383--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexlastmark</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14046"></a> <span
+class="cmtt-10">\glsxtrbookindexlastmark </span></div><hr>
+</p><!--l. 3385--><p class="noindent" >
+These do nothing if there are no entries marked on the current page (or if the
+document build isn&#8217;t up to date).
+</p><!--l. 3389--><p class="indent" > The entry is formatted using:
+</p><!--l. 3390--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexfirstmarkfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14047"></a> <span
+class="cmtt-10">\glsxtrbookindexfirstmarkfmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3392--><p class="noindent" >
+for the first instance and
+</p><!--l. 3394--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrbookindexlastmarkfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-14048"></a> <span
+class="cmtt-10">\glsxtrbookindexlastmarkfmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3396--><p class="noindent" >
+for the last.
+</p><!--l. 3399--><p class="indent" > These commands are designed for use in page headers or footers where the page
+number is stable. For example, <span
+class="cmtt-10">\glsxtrbookindexname </span>can be redefined to mark the
+current entry:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-110">
+\renewcommand{\glsxtrbookindexname}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrbookindexmarkentry{#1}%
+&#x00A0;<br />&#x00A0;&#x00A0;\glossentryname{#1}%
+&#x00A0;<br />}
+</div>
+<!--l. 3407--><p class="nopar" > If you only want to mark the top-level entries, remember to redefine
+<span
+class="cmtt-10">\glsxtrbookindexsubname </span>as it defaults to <span
+class="cmtt-10">\glsxtrbookindexname</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-111">
+\renewcommand{\glsxtrbookindexsubname}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glossentryname{#1}%
+&#x00A0;<br />}
+</div>
+<!--l. 3415--><p class="nopar" >
+</p><!--l. 3417--><p class="indent" > Then if you&#8217;re using <span
+class="cmss-10">fancyhdr</span><a
+ id="dx1-14049"></a> you can set the page style to show the first and last
+entry for the current page with:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-112">
+&#x00A0;&#x00A0;\pagestyle{fancy}%
+&#x00A0;<br />&#x00A0;&#x00A0;\lhead{\thepage}%
+&#x00A0;<br />&#x00A0;&#x00A0;\lfoot{\glsxtrbookindexfirstmark}%
+&#x00A0;<br />&#x00A0;&#x00A0;\cfoot{}%
+&#x00A0;<br />&#x00A0;&#x00A0;\rfoot{\glsxtrbookindexlastmark}%
+</div>
+<!--l. 3425--><p class="nopar" >
+</p><!--l. 3427--><p class="noindent" >
+</p>
+<!--l. 3427--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.10 </span> <a
+ id="x1-150002.10"></a><span
+class="cmss-10">glossary-longextra </span>package</h3>
+<!--l. 3430--><p class="noindent" >As from version 1.37, the <span
+class="cmss-10">glossaries-extra </span>package comes with the supplementary
+package <span
+class="cmss-10">glossary-longextra</span><a
+ id="dx1-15001"></a> that provides additional styles, listed below, that use the
+<span
+class="cmss-10">longtable</span><a
+ id="dx1-15002"></a><a
+ id="dx1-15003"></a> environment. If you know that your glossary won&#8217;t span more than a page
+and you need to use it in a context that&#8217;s incompatible with <span
+class="cmss-10">longtable</span><a
+ id="dx1-15004"></a><a
+ id="dx1-15005"></a>, you can
+instead setup these styles to use <span
+class="cmss-10">tabular</span><a
+ id="dx1-15006"></a><a
+ id="dx1-15007"></a> instead. In order to do this you must
+use
+</p><!--l. 3437--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsLongExtraUseTabulartrue</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15008"></a> <span
+class="cmtt-10">\GlsLongExtraUseTabulartrue </span></div><hr>
+</p><!--l. 3439--><p class="noindent" >
+<span
+class="cmti-10">before the style is set</span>. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-113">
+\GlsLongExtraUseTabulartrue
+&#x00A0;<br />\setglossarystyle{long-name-desc}
+</div>
+<!--l. 3444--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-114">
+\GlsLongExtraUseTabulartrue
+&#x00A0;<br />\printunsrtglossary[style={long-name-desc}]
+</div>
+<!--l. 3449--><p class="nopar" > If you use this setting, you can change the default vertical alignment with:
+</p><!--l. 3452--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraTabularVAlign</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15009"></a> <span
+class="cmtt-10">\glslongextraTabularVAlign </span></div><hr>
+</p><!--l. 3454--><p class="noindent" >
+The default definition is <span
+class="cmtt-10">c</span>.
+</p><!--l. 3457--><p class="indent" > The column titles are formatted according to:
+</p><!--l. 3458--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraHeaderFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15010"></a> <span
+class="cmtt-10">\glslongextraHeaderFmt{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3460--><p class="noindent" >
+which simply does <span
+class="cmtt-10">\textbf{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span>by default.
+</p><!--l. 3463--><p class="indent" > The name column has the title given by <span
+class="cmtt-10">\entryname</span><a
+ id="dx1-15011"></a> and the column alignment is
+given by:
+</p><!--l. 3465--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameAlign</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15012"></a> <span
+class="cmtt-10">\glslongextraNameAlign </span></div><hr>
+</p><!--l. 3467--><p class="noindent" >
+which expands to <span
+class="cmtt-10">l </span>(left) by default.
+</p><!--l. 3470--><p class="indent" > The symbol column (where applicable) has the title given by <span
+class="cmtt-10">\symbolname</span><a
+ id="dx1-15013"></a> and
+the column alignment is given by:
+</p><!--l. 3472--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSymbolAlign</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15014"></a> <span
+class="cmtt-10">\glslongextraSymbolAlign </span></div><hr>
+</p><!--l. 3474--><p class="noindent" >
+which expands to <span
+class="cmtt-10">c </span>(centred) by default.
+</p><!--l. 3477--><p class="indent" > The location list column (where applicable) has the title given by <span
+class="cmtt-10">\pagelistname</span><a
+ id="dx1-15015"></a>
+and the column alignment is given by:
+</p><!--l. 3479--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationAlign</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15016"></a> <span
+class="cmtt-10">\glslongextraLocationAlign </span></div><hr>
+</p><!--l. 3481--><p class="noindent" >
+which expands to
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-115">
+&#x003E;{\raggedright}p{\glspagelistwidth}
+</div>
+<!--l. 3485--><p class="nopar" > by default. (Ragged-right paragraph, <span
+class="cmtt-10">\glspagelistwidth</span><a
+ id="dx1-15017"></a> is defined in <span
+class="cmss-10">glossary-long</span><a
+ id="dx1-15018"></a>,
+which is automatically loaded.)
+</p><!--l. 3489--><p class="indent" > The description column has the title given by <span
+class="cmtt-10">\descriptionname</span><a
+ id="dx1-15019"></a> and the column
+alignment is given by:
+</p><!--l. 3491--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraDescAlign</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15020"></a> <span
+class="cmtt-10">\glslongextraDescAlign </span></div><hr>
+</p><!--l. 3493--><p class="noindent" >
+which expands to
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-116">
+&#x003E;{\raggedright}p{\glsdescwidth}
+</div>
+<!--l. 3497--><p class="nopar" > by default. (Ragged-right paragraph, <span
+class="cmtt-10">\glsdescwidth</span><a
+ id="dx1-15021"></a> is defined in <span
+class="cmss-10">glossary-long</span><a
+ id="dx1-15022"></a>,
+which is automatically loaded.)
+</p><!--l. 3501--><p class="indent" > Unlike the long styles provided by the base <span
+class="cmss-10">glossaries </span>package, these new styles try
+to determine the value of <span
+class="cmtt-10">\glsdescwidth </span>at the start of the glossary according to the
+number of columns provided by the style. The calculations are performed by the
+following commands:
+</p><!--l. 3506--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSetDescWidth</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15023"></a> <span
+class="cmtt-10">\glslongextraSetDescWidth </span></div><hr>
+</p><!--l. 3508--><p class="noindent" >
+This is used by the styles that have a name and description column. The value of
+<span
+class="cmtt-10">\glsdescwidth </span>is computed as:
+</p>
+ <center class="math-display" >
+<img
+src="glossaries-extra-manual0x.png" alt="\glsdescwidth = \linewidth- 4\tabcolsep- W
+" class="math-display" /></center>
+<!--l. 3513--><p class="nopar" > where <span
+class="cmmi-10">W </span>is a guess at the width of the name column. This is first set to the width of
+the name column header: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\settowidth{</span>&#x27E8;<span
+class="cmitt-10">width</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glslongextraHeaderFmt\entryname</span><span
+class="cmsy-10">}</span>
+</div>
+</div> If any names in that column are larger than this, then you need to specify the widest
+name using:
+<!--l. 3521--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSetWidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15024"></a> <span
+class="cmtt-10">\glslongextraSetWidest{</span>&#x27E8;<span
+class="cmitt-10">widest name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3523--><p class="noindent" >
+or
+</p><!--l. 3525--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraUpdateWidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15025"></a> <span
+class="cmtt-10">\glslongextraUpdateWidest{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3527--><p class="noindent" >
+These work like the analogous commands <span
+class="cmtt-10">\glssetwidest </span>and <span
+class="cmtt-10">\glsupdatewidest</span>
+provided with the <span
+class="cmss-10">alttree</span><a
+ id="dx1-15026"></a> style, but in this case there&#8217;s no hierarchy. The default
+widest name is obtained from the <span
+class="cmss-10">alttree</span><a
+ id="dx1-15027"></a> top-level name if set, otherwise it&#8217;s empty,
+so you can use <a
+ id="dx1-15028"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span>&#8217;s</a> <span
+class="cmtt-10">set-widest </span>option. If you have the entry counter enabled,
+you will need to include this with the name for the extra material to be taken into
+account.
+</p><!--l. 3537--><p class="indent" > The name isn&#8217;t shown for child entries by default, but if you change this and you
+want to use <a
+ id="dx1-15029"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s <span
+class="cmtt-10">set-widest </span>option (for <a
+ id="dx1-15030"></a><span
+class="cmtt-10">bib2gls </span>v1.8+) then you need to
+redefine:
+
+
+
+</p><!--l. 3541--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraUpdateWidestChild</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15031"></a> <span
+class="cmtt-10">\glslongextraUpdateWidestChild{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3543--><p class="noindent" >
+This does nothing by default, but if you are including the child names then you need
+to redefine this command:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-117">
+\renewcommand{\glslongextraUpdateWidestChild}[2]{%
+&#x00A0;<br />&#x00A0;\glslongextraUpdateWidest{#2}%
+&#x00A0;<br />}
+</div>
+<!--l. 3550--><p class="nopar" >
+</p><!--l. 3552--><p class="indent" > If you prefer to set an explicit width for the description column then you need to
+redefine <span
+class="cmtt-10">\glslongextraSetDescWidth</span>. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-118">
+\renewcommand{\glslongextraSetDescWidth}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\setlength{\glsdescwidth}{0.6\linewidth}%
+&#x00A0;<br />}
+</div>
+<!--l. 3559--><p class="nopar" >
+</p><!--l. 3561--><p class="indent" > The styles that have a name, symbol and description, <span
+class="cmtt-10">\glsdescwidth </span>is set
+with:
+</p><!--l. 3563--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSymSetDescWidth</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15032"></a> <span
+class="cmtt-10">\glslongextraSymSetDescWidth </span></div><hr>
+</p><!--l. 3565--><p class="noindent" >
+This first uses <span
+class="cmtt-10">\glslongextraSetDescWidth </span>and then subtracts 2<span
+class="cmtt-10">\tabcolsep </span>and
+the width of the symbol column header from <span
+class="cmtt-10">\glsdescwidth</span>. This assumes that the
+symbol column header is larger than any of the symbols. If this isn&#8217;t appropriate then
+you can redefine this command. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-119">
+\renewcommand{\glslongextraSymSetDescWidth}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glslongextraSetDescWidth
+&#x00A0;<br />&#x00A0;&#x00A0;\addtolength{\glsdescwidth}{-3cm}%
+&#x00A0;<br />}
+</div>
+<!--l. 3576--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-120">
+\renewcommand{\glslongextraSymSetDescWidth}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\setlength{\glsdescwidth}{.5\linewidth}%
+&#x00A0;<br />}
+</div>
+<!--l. 3582--><p class="nopar" >
+</p><!--l. 3584--><p class="indent" > For the styles that have a name, description and location column, <span
+class="cmtt-10">\glsdescwidth</span>
+is set using:
+</p><!--l. 3586--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocSetDescWidth</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15033"></a> <span
+class="cmtt-10">\glslongextraLocSetDescWidth </span></div><hr>
+</p><!--l. 3588--><p class="noindent" >
+This uses <span
+class="cmtt-10">\glslongextraSetDescWidth </span>and then subtracts 2<span
+class="cmtt-10">\tabcolsep </span>and
+<span
+class="cmtt-10">\glspagelistwidth </span>from <span
+class="cmtt-10">\glsdescwidth</span>. You can redefine this command to set
+both <span
+class="cmtt-10">\glsdescwidth </span>and <span
+class="cmtt-10">\glspagelistwidth </span>if appropriate.
+</p><!--l. 3594--><p class="indent" > For the styles that have a name, description, symbol and location column,
+<span
+class="cmtt-10">\glsdescwidth </span>is set using:
+</p><!--l. 3596--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSymLocSetDescWidth</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15034"></a> <span
+class="cmtt-10">\glslongextraSymLocSetDescWidth</span>
+</div><hr>
+</p><!--l. 3598--><p class="noindent" >
+This uses <span
+class="cmtt-10">\glslongextraSymSetDescWidth </span>and then subtracts 2<span
+class="cmtt-10">\tabcolsep </span>and
+<span
+class="cmtt-10">\glspagelistwidth </span>from <span
+class="cmtt-10">\glsdescwidth</span>. Again, you can redefine this command to
+explicitly set both lengths.
+</p><!--l. 3604--><p class="indent" > In all cases, the top-level name is formatted according to:
+</p><!--l. 3605--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15035"></a> <span
+class="cmtt-10">\glslongextraNameFmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3607--><p class="noindent" >
+This does </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsentryitem{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}\glstarget{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glossentryname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">}</span>
+</div>
+</div> which includes the entry counter (if enabled), the target and the post-name
+link.
+<!--l. 3614--><p class="indent" > The top-level description is formatted according to:
+</p><!--l. 3615--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraDescFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15036"></a> <span
+class="cmtt-10">\glslongextraDescFmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3617--><p class="noindent" >
+This does <span
+class="cmtt-10">\glossentrydesc{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>followed by the post-description hook.
+</p><!--l. 3621--><p class="indent" > The styles that have a symbol column format the symbol using:
+</p><!--l. 3622--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSymbolFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15037"></a> <span
+class="cmtt-10">\glslongextraSymbolFmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3624--><p class="noindent" >
+This just does <span
+class="cmtt-10">\glossentrysymbol{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.
+</p><!--l. 3627--><p class="indent" > The styles that have a location list column format the list using:
+</p><!--l. 3628--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15038"></a> <span
+class="cmtt-10">\glslongextraLocationFmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">locations</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+
+
+
+</p><!--l. 3630--><p class="noindent" >
+This just does &#x27E8;<span
+class="cmti-10">locations</span>&#x27E9; and ignores the label.
+</p><!--l. 3633--><p class="indent" > The child entries have their name formatted according to:
+</p><!--l. 3634--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSubNameFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15039"></a> <span
+class="cmtt-10">\glslongextraSubNameFmt{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3636--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">level</span>&#x27E9; is the hierarchical level. This defaults to: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glssubentryitem{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}\glstarget{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\strut</span><span
+class="cmsy-10">}</span>
+</div>
+</div> This includes the sub-entry counter (if enabled) and the target but doesn&#8217;t show the
+name. The child description is formatted according to:
+<!--l. 3643--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSubDescFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15040"></a> <span
+class="cmtt-10">\glslongextraSubDescFmt{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3645--><p class="noindent" >
+which defaults to just <span
+class="cmtt-10">\glslongextraDescFmt{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</p><!--l. 3648--><p class="indent" > The child symbol is formatted (where appropriate) according to:
+</p><!--l. 3649--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSubSymbolFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15041"></a> <span
+class="cmtt-10">\glslongextraSubSymbolFmt{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3651--><p class="noindent" >
+This just does <span
+class="cmtt-10">\glslongextraSymbolFmt{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>by default.
+</p><!--l. 3654--><p class="indent" > The styles that have a location list column format the list for child entries
+using:
+</p><!--l. 3656--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationFmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15042"></a> <span
+class="cmtt-10">\glslongextraSubLocationFmt</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">locations</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3658--><p class="noindent" >
+This just does &#x27E8;<span
+class="cmti-10">locations</span>&#x27E9; and ignores the level and label.
+</p><!--l. 3661--><p class="indent" > The letter group headings are formatted according to:
+</p><!--l. 3662--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraGroupHeading</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15043"></a> <span
+class="cmtt-10">\glslongextraGroupHeading{</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 3664--><p class="noindent" >
+which does nothing by default. The first argument &#x27E8;<span
+class="cmti-10">n</span>&#x27E9; is the number of columns in the
+table. The second argument &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the group label (not the title, although they may
+happen to be the same).
+</p><!--l. 3670--><p class="indent" > This can be redefined to show the group heading. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-121">
+\renewcommand*{\glslongextraGroupHeading}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrgetgrouptitle{#2}{\thisgrptitle}%
+&#x00A0;<br />&#x00A0;&#x00A0;\glslongextraHeaderFmt{\thisgrptitle}%
+&#x00A0;<br />&#x00A0;&#x00A0;\tabularnewline
+&#x00A0;<br />&#x00A0;&#x00A0;\noalign{\vskip\normalbaselineskip}%
+&#x00A0;<br />}
+</div>
+<!--l. 3678--><p class="nopar" > This ignores the first argument and just puts the group title in the first column
+formatted according to <span
+class="cmtt-10">\glslongextraHeaderFmt </span>(to match the column
+header).
+</p><!--l. 3683--><p class="indent" > Remember that you can also adjust the styles through category attributes. The
+name column&#8217;s title is given by <span
+class="cmtt-10">\entryname</span>, the description column&#8217;s title is given by
+<span
+class="cmtt-10">\descriptionname </span>and (where present) the symbol column&#8217;s title is given by
+<span
+class="cmtt-10">\symbolname</span>, as for the other long styles that have headers.
+ </p><dl class="description"><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-name-desc</span><a
+ id="dx1-15044"></a> This is like the <span
+class="cmss-10">longragged-booktabs</span><a
+ id="dx1-15045"></a> style but doesn&#8217;t show the
+ location list (regardless of the <a
+href="#styopt.nonumberlist"><span
+class="cmss-10">nonumberlist</span></a><a
+ id="dx1-15046"></a> option). The name is shown in
+ the first column and the description in the second.
+ <!--l. 3696--><p class="noindent" >The symbol is not displayed. The header row is produced with:
+ </p><!--l. 3698--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15047"></a> <span
+class="cmtt-10">\glslongextraNameDescHeader </span></div><hr>
+ </p><!--l. 3700--><p class="noindent" >
+ This essentially uses the same code as for <span
+class="cmss-10">longragged-booktabs</span><a
+ id="dx1-15048"></a> but makes it
+ easier to adjust the header without having to define a new style. This is defined
+ as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-122">
+ \glslongextraNameDescTabularHeader\endhead
+ &#x00A0;<br />\glslongextraNameDescTabularFooter\endfoot
+</div>
+ <!--l. 3707--><p class="nopar" > where:
+ </p><!--l. 3709--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15049"></a> <span
+class="cmtt-10">\glslongextraNameDescTabularHeader</span>
+ </div><hr>
+ </p><!--l. 3711--><p class="noindent" >
+ sets up the header and
+ </p><!--l. 3713--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15050"></a> <span
+class="cmtt-10">\glslongextraNameDescTabularFooter</span>
+ </div><hr>
+ </p><!--l. 3715--><p class="noindent" >
+ sets up the footer. If you have setup the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15051"></a><a
+ id="dx1-15052"></a> version of this style then the
+ above two commands are used at the start and end of the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15053"></a><a
+ id="dx1-15054"></a> environment
+ (and <span
+class="cmtt-10">\glslongextraNameDescHeader </span>isn&#8217;t used).
+ </p><!--l. 3721--><p class="noindent" >For example, to simply remove the header and footer (for the default <span
+class="cmss-10">longtable</span><a
+ id="dx1-15055"></a><a
+ id="dx1-15056"></a>
+ version of the style):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-123">
+ \renewcommand{\glslongextraNameDescHeader}{}
+</div>
+ <!--l. 3725--><p class="nopar" > Or to change the name alignment to centred:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-124">
+ \renewcommand{\glslongextraNameAlign}{c}
+</div>
+ <!--l. 3729--><p class="nopar" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-name-desc-loc</span><a
+ id="dx1-15057"></a> This is like the <span
+class="cmss-10">long-name-desc</span><a
+ id="dx1-15058"></a> style but has a third column for
+ the location list. The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15059"></a><a
+ id="dx1-15060"></a> header is given by:
+ <!--l. 3734--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescLocationHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15061"></a> <span
+class="cmtt-10">\glslongextraNameDescLocationHeader</span>
+ </div><hr>
+ </p><!--l. 3736--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15062"></a><a
+ id="dx1-15063"></a>
+ version:
+ </p><!--l. 3739--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescLocationTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15064"></a> <span
+class="cmtt-10">\glslongextraNameDescLocationTabularHeader</span>
+ </div><hr>
+ </p><!--l. 3741--><p class="noindent" >
+ and
+ </p><!--l. 3743--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescLocationTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15065"></a> <span
+class="cmtt-10">\glslongextraNameDescLocationTabularFooter</span>
+ </div><hr>
+ </p><!--l. 3745--><p class="noindent" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-desc-name</span><a
+ id="dx1-15066"></a> This is like the <span
+class="cmss-10">long-name-desc</span><a
+ id="dx1-15067"></a> style but swaps the columns. Note
+ that if the entry counter is displayed it will appear at the start of the
+ second column by default. The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15068"></a><a
+ id="dx1-15069"></a> header is formatted according
+ to:
+ <!--l. 3752--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraDescNameHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15070"></a> <span
+class="cmtt-10">\glslongextraDescNameHeader </span></div><hr>
+ </p><!--l. 3754--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15071"></a><a
+ id="dx1-15072"></a>
+ version:
+ </p><!--l. 3757--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraDescNameTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15073"></a> <span
+class="cmtt-10">\glslongextraDescNameTabularHeader</span>
+ </div><hr>
+ </p><!--l. 3759--><p class="noindent" >
+ and
+ </p><!--l. 3761--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraDescNameTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15074"></a> <span
+class="cmtt-10">\glslongextraDescNameTabularFooter</span>
+ </div><hr>
+ </p><!--l. 3763--><p class="noindent" >
+
+
+
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-loc-desc-name</span><a
+ id="dx1-15075"></a> This has three columns containing the location list,
+ description and name. The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15076"></a><a
+ id="dx1-15077"></a> header is formatted according
+ to:
+ <!--l. 3769--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationDescNameHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15078"></a> <span
+class="cmtt-10">\glslongextraLocationDescNameHeader</span>
+ </div><hr>
+ </p><!--l. 3771--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15079"></a><a
+ id="dx1-15080"></a>
+ version:
+ </p><!--l. 3774--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationDescNameTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15081"></a> <span
+class="cmtt-10">\glslongextraLocationDescNameTabularHeader</span>
+ </div><hr>
+ </p><!--l. 3776--><p class="noindent" >
+ and
+ </p><!--l. 3778--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationDescNameTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15082"></a> <span
+class="cmtt-10">\glslongextraLocationDescNameTabularFooter</span>
+ </div><hr>
+ </p><!--l. 3780--><p class="noindent" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-name-desc-sym</span><a
+ id="dx1-15083"></a> This is has three columns, with the name in the first, the
+ description in the second and the symbol in the third.
+ <!--l. 3786--><p class="noindent" >The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15084"></a><a
+ id="dx1-15085"></a> header row is produced with:
+ </p><!--l. 3787--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescSymHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15086"></a> <span
+class="cmtt-10">\glslongextraNameDescSymHeader</span>
+ </div><hr>
+ </p><!--l. 3789--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15087"></a><a
+ id="dx1-15088"></a>
+ version:
+ </p><!--l. 3792--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescSymTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15089"></a> <span
+class="cmtt-10">\glslongextraNameDescSymTabularHeader</span>
+ </div><hr>
+ </p><!--l. 3794--><p class="noindent" >
+ and
+ </p><!--l. 3796--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescSymTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15090"></a> <span
+class="cmtt-10">\glslongextraNameDescSymTabularFooter</span>
+ </div><hr>
+ </p><!--l. 3798--><p class="noindent" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-name-desc-sym-loc</span><a
+ id="dx1-15091"></a> This is has four columns, with the name in the first, the
+ description in the second, the symbol in the third and the location list in the
+ fourth.
+ <!--l. 3804--><p class="noindent" >The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15092"></a><a
+ id="dx1-15093"></a> header row is produced with:
+
+
+
+ </p><!--l. 3805--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescSymLocationHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15094"></a> <span
+class="cmtt-10">\glslongextraNameDescSymLocationHeader</span>
+ </div><hr>
+ </p><!--l. 3807--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15095"></a><a
+ id="dx1-15096"></a>
+ version:
+ </p><!--l. 3810--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescSymLocationTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15097"></a>
+ <span
+class="cmtt-10">\glslongextraNameDescSymLocationTabularHeader </span></div><hr>
+ </p><!--l. 3812--><p class="noindent" >
+ and
+ </p><!--l. 3814--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameDescSymLocationTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15098"></a>
+ <span
+class="cmtt-10">\glslongextraNameDescSymLocationTabularFooter </span></div><hr>
+ </p><!--l. 3816--><p class="noindent" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-name-sym-desc</span><a
+ id="dx1-15099"></a> This is like the <span
+class="cmss-10">long-name-desc-sym</span><a
+ id="dx1-15100"></a> but the second and third
+ column are swapped. The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15101"></a><a
+ id="dx1-15102"></a> header row is given by:
+ <!--l. 3821--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameSymDescHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15103"></a> <span
+class="cmtt-10">\glslongextraNameSymDescHeader</span>
+ </div><hr>
+ </p><!--l. 3823--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15104"></a><a
+ id="dx1-15105"></a>
+ version:
+ </p><!--l. 3826--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameSymDescTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15106"></a> <span
+class="cmtt-10">\glslongextraNameSymDescTabularHeader</span>
+ </div><hr>
+ </p><!--l. 3828--><p class="noindent" >
+ and
+ </p><!--l. 3830--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameSymDescTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15107"></a> <span
+class="cmtt-10">\glslongextraNameSymDescTabularFooter</span>
+ </div><hr>
+ </p><!--l. 3832--><p class="noindent" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-name-sym-desc-loc</span><a
+ id="dx1-15108"></a> This is like the <span
+class="cmss-10">long-name-desc-sym-loc</span><a
+ id="dx1-15109"></a> but the second and
+ third column are swapped. The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15110"></a><a
+ id="dx1-15111"></a> header row is given by:
+ <!--l. 3837--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameSymDescLocationHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15112"></a> <span
+class="cmtt-10">\glslongextraNameSymDescLocationHeader</span>
+ </div><hr>
+ </p><!--l. 3839--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15113"></a><a
+ id="dx1-15114"></a>
+ version:
+ </p><!--l. 3842--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameSymDescLocationTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15115"></a>
+ <span
+class="cmtt-10">\glslongextraNameSymDescLocationTabularHeader </span></div><hr>
+
+
+
+ </p><!--l. 3844--><p class="noindent" >
+ and
+ </p><!--l. 3846--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraNameSymDescLocationTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15116"></a>
+ <span
+class="cmtt-10">\glslongextraNameSymDescLocationTabularFooter </span></div><hr>
+ </p><!--l. 3848--><p class="noindent" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-sym-desc-name</span><a
+ id="dx1-15117"></a> This has the symbol in the first column, the description in the
+ second and the name in the third. The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15118"></a><a
+ id="dx1-15119"></a> header row is given
+ by:
+ <!--l. 3853--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSymDescNameHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15120"></a> <span
+class="cmtt-10">\glslongextraSymDescNameHeader</span>
+ </div><hr>
+ </p><!--l. 3855--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15121"></a><a
+ id="dx1-15122"></a>
+ version:
+ </p><!--l. 3858--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSymDescNameTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15123"></a> <span
+class="cmtt-10">\glslongextraSymDescNameTabularHeader</span>
+ </div><hr>
+ </p><!--l. 3860--><p class="noindent" >
+ and
+ </p><!--l. 3862--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraSymDescNameTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15124"></a> <span
+class="cmtt-10">\glslongextraSymDescNameTabularFooter</span>
+ </div><hr>
+ </p><!--l. 3864--><p class="noindent" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-loc-sym-desc-name</span><a
+ id="dx1-15125"></a> This has the location list in the first column, symbol in the
+ second column, the description in the third and the name in the fourth. The
+ <span
+class="cmss-10">longtable</span><a
+ id="dx1-15126"></a><a
+ id="dx1-15127"></a> header row is given by:
+ <!--l. 3870--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationSymDescNameHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15128"></a> <span
+class="cmtt-10">\glslongextraLocationSymDescNameHeader</span>
+ </div><hr>
+ </p><!--l. 3872--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15129"></a><a
+ id="dx1-15130"></a>
+ version:
+ </p><!--l. 3875--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationSymDescNameTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15131"></a>
+ <span
+class="cmtt-10">\glslongextraLocationSymDescNameTabularHeader </span></div><hr>
+ </p><!--l. 3877--><p class="noindent" >
+ and
+ </p><!--l. 3879--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationSymDescNameTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15132"></a>
+ <span
+class="cmtt-10">\glslongextraLocationSymDescNameTabularFooter </span></div><hr>
+ </p><!--l. 3881--><p class="noindent" >
+
+
+
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-desc-sym-name</span><a
+ id="dx1-15133"></a> This has the description in the first column, the symbol in the
+ second and the name in the third. The <span
+class="cmss-10">longtable</span><a
+ id="dx1-15134"></a><a
+ id="dx1-15135"></a> header row is given
+ by:
+ <!--l. 3886--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraDescSymNameHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15136"></a> <span
+class="cmtt-10">\glslongextraDescSymNameHeader</span>
+ </div><hr>
+ </p><!--l. 3888--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15137"></a><a
+ id="dx1-15138"></a>
+ version:
+ </p><!--l. 3891--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraDescSymNameTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15139"></a> <span
+class="cmtt-10">\glslongextraDescSymNameTabularHeader</span>
+ </div><hr>
+ </p><!--l. 3893--><p class="noindent" >
+ and
+ </p><!--l. 3895--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraDescSymNameTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15140"></a> <span
+class="cmtt-10">\glslongextraDescSymNameTabularFooter</span>
+ </div><hr>
+ </p><!--l. 3897--><p class="noindent" >
+ </p></dd><dt class="description">
+ </dt><dd
+class="description"><span
+class="cmss-10">long-loc-desc-sym-name</span><a
+ id="dx1-15141"></a> This has the location list in the first column, the description
+ in the second column, the symbol in the third and the name in the fourth. The
+ <span
+class="cmss-10">longtable</span><a
+ id="dx1-15142"></a><a
+ id="dx1-15143"></a> header row is given by:
+ <!--l. 3903--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationDescSymNameHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15144"></a> <span
+class="cmtt-10">\glslongextraLocationDescSymNameHeader</span>
+ </div><hr>
+ </p><!--l. 3905--><p class="noindent" >
+ which similarly defined in terms of the commands used for the <span
+class="cmss-10">tabular</span><a
+ id="dx1-15145"></a><a
+ id="dx1-15146"></a>
+ version:
+ </p><!--l. 3908--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationDescSymNameTabularHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15147"></a>
+ <span
+class="cmtt-10">\glslongextraLocationDescSymNameTabularHeader </span></div><hr>
+ </p><!--l. 3910--><p class="noindent" >
+ and
+ </p><!--l. 3912--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongextraLocationDescSymNameTabularFooter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-15148"></a>
+ <span
+class="cmtt-10">\glslongextraLocationDescSymNameTabularFooter </span></div><hr>
+ </p><!--l. 3914--><p class="noindent" >
+</p>
+ </dd></dl>
+
+
+
+<!--l. 3918--><p class="noindent" >
+</p>
+<!--l. 3918--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.11 </span> <a
+ id="x1-160002.11"></a><span
+class="cmss-10">glossary-topic </span>package</h3>
+<!--l. 3921--><p class="noindent" >As from version 1.40, the <span
+class="cmss-10">glossaries-extra </span>package comes with the supplementary
+package <span
+class="cmss-10">glossary-topic</span><a
+ id="dx1-16001"></a> that provides glossary styles designed for hierarchical glossaries
+where the top-level entries are topic titles. This package automatically loads the
+<span
+class="cmss-10">multicols</span><a
+ id="dx1-16002"></a> package. If the <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-16003"></a> package is also loaded then commands like
+<span
+class="cmtt-10">\glssetwidest </span>can be used on these styles in much the same way as for the <span
+class="cmss-10">alttree</span><a
+ id="dx1-16004"></a>
+style. If a widest value isn&#8217;t set then these styles behave more like the <span
+class="cmss-10">tree</span><a
+ id="dx1-16005"></a>
+style.
+ </p><dl class="description"><dt class="description">
+<span
+class="cmssbx-10">topic</span><a
+ id="dx1-16006"></a> </dt><dd
+class="description">This style is similar to the <span
+class="cmss-10">tree</span><a
+ id="dx1-16007"></a> style but the indentation doesn&#8217;t start until
+ the second sub-item level. The top-level entries have the name displayed
+ in a larger font with the description following in a new paragraph. This
+ style doesn&#8217;t support the <a
+href="#styopt.nogroupskip"><span
+class="cmss-10">nogroupskip</span></a><a
+ id="dx1-16008"></a> setting.
+ </dd><dt class="description">
+<span
+class="cmssbx-10">topicmcols</span><a
+ id="dx1-16009"></a> </dt><dd
+class="description">This style is like the <span
+class="cmss-10">topic</span><a
+ id="dx1-16010"></a> style but the sub-entries are placed inside a
+ <span
+class="cmss-10">multicols</span><a
+ id="dx1-16011"></a><a
+ id="dx1-16012"></a> environment. The environment name is supplied in the value of the
+ command:
+ <!--l. 3941--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicColsEnv</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16013"></a> <span
+class="cmtt-10">\glstopicColsEnv </span></div><hr>
+ </p><!--l. 3943--><p class="noindent" >
+ You can change this to the starred form. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-125">
+ \renewcommand{\glstopicColsEnv}{multicols*}
+</div>
+ <!--l. 3947--><p class="nopar" > The number of columns is given by the command:
+ </p><!--l. 3949--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicCols</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16014"></a> <span
+class="cmtt-10">\glstopicCols </span></div><hr>
+ </p><!--l. 3951--><p class="noindent" >
+ The default value is 2.</p></dd></dl>
+<!--l. 3954--><p class="noindent" >Both styles use the following commands.
+</p><!--l. 3955--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicParIndent</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16015"></a> <span
+class="cmtt-10">\glstopicParIndent </span></div><hr>
+</p><!--l. 3957--><p class="noindent" >
+This command is a length that&#8217;s used for the paragraph indentation in any
+multi-paragraph description for top-level entries, but not for the first paragraph (at
+the start of the description) which isn&#8217;t indented.
+</p><!--l. 3963--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicSubIndent</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16016"></a> <span
+class="cmtt-10">\glstopicSubIndent </span></div><hr>
+</p><!--l. 3965--><p class="noindent" >
+This command is a length that&#8217;s used to calculate the hanging indentation for
+sub-entries. The level&#x00A0;1 sub-entries don&#8217;t indent the name. Level&#x00A0;<span
+class="cmmi-10">n </span>sub-entries have
+the name indented by (<span
+class="cmmi-10">n</span><span
+class="cmsy-10">- </span>1)<span
+class="cmsy-10">&#x00D7;</span><span
+class="cmtt-10">\glstopicSubIndent</span>. The hanging indent depends on
+whether or not a widest name has been set for the level.
+</p><!--l. 3972--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicInit</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16017"></a> <span
+class="cmtt-10">\glstopicInit </span></div><hr>
+</p><!--l. 3974--><p class="noindent" >
+Hook used at the start of the glossary. Does nothing by default.
+</p><!--l. 3977--><p class="indent" > Although the styles don&#8217;t support letter groups by default, if you have many
+topics (top-level entries) and you feel that it would help the reader to divide them up
+into headed letter groups, you can redefine:
+</p><!--l. 3981--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicGroupHeading</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16018"></a> <span
+class="cmtt-10">\glstopicGroupHeading{</span>&#x27E8;<span
+class="cmitt-10">group label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3983--><p class="noindent" >
+This does nothing by default. If you want to redefine it, you can fetch the
+title corresponding to the group label with <span
+class="cmtt-10">\glsxtrgetgrouptitle</span>. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-126">
+\renewcommand*{\glstopicGroupHeading}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrgetgrouptitle{#1}{\thisgrptitle}%
+&#x00A0;<br />&#x00A0;&#x00A0;\section*{\thisgrptitle}%
+&#x00A0;<br />}
+</div>
+<!--l. 3992--><p class="nopar" > Remember that if you use <a
+ id="dx1-16019"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>, you will need the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">--group</span></span></span> (or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">-g</span></span></span>) switch to
+support this.
+</p><!--l. 3996--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicItem</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16020"></a> <span
+class="cmtt-10">\glstopicItem{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 3998--><p class="noindent" >
+Used to format the name, symbol, description and location list for the top-level
+entries. This starts with a paragraph break followed by:
+</p><!--l. 4002--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicPreSkip</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16021"></a> <span
+class="cmtt-10">\glstopicPreSkip </span></div><hr>
+</p><!--l. 4004--><p class="noindent" >
+which defaults to <span
+class="cmtt-10">\medskip</span>. There is then a hook:
+</p><!--l. 4006--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicMarker</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16022"></a> <span
+class="cmtt-10">\glstopicMarker{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4008--><p class="noindent" >
+which does nothing by default, but may be redefined. For example, to add a line to
+the table of contents. The name and symbol are set in the form of a title
+using:
+</p><!--l. 4013--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicTitle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16023"></a> <span
+class="cmtt-10">\glstopicTitle{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4015--><p class="noindent" >
+This uses <span
+class="cmtt-10">\Glossentryname </span>which converts the first letter to upper case. If there&#8217;s a
+symbol, this is added in parentheses. Both name and symbol (if present) are
+encapsulated by
+</p><!--l. 4019--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicTitleFont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16024"></a> <span
+class="cmtt-10">\glstopicTitleFont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4021--><p class="noindent" >
+This uses a bold, large font by default.
+</p><!--l. 4024--><p class="indent" > If the entry has the description key set (tested with <span
+class="cmtt-10">\ifglshasdesc</span>) then a
+paragraph break is inserted followed by:
+</p><!--l. 4026--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicMidSkip</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16025"></a> <span
+class="cmtt-10">\glstopicMidSkip </span></div><hr>
+</p><!--l. 4028--><p class="noindent" >
+which defaults to <span
+class="cmtt-10">\smallskip</span>. This is followed by the description which is formatted
+according to:
+</p><!--l. 4031--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicDesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16026"></a> <span
+class="cmtt-10">\glstopicDesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4033--><p class="noindent" >
+This just does <span
+class="cmtt-10">\Glossentrydesc{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>followed by the post-description
+hook.
+</p><!--l. 4037--><p class="indent" > A paragraph break followed by:
+</p><!--l. 4038--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicPostSkip</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16027"></a> <span
+class="cmtt-10">\glstopicPostSkip </span></div><hr>
+</p><!--l. 4040--><p class="noindent" >
+comes next regardless of whether or not the description was displayed. This defaults
+to <span
+class="cmtt-10">\smallskip</span>. This is then followed by:
+
+
+
+</p><!--l. 4044--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicLoc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16028"></a> <span
+class="cmtt-10">\glstopicLoc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4046--><p class="noindent" >
+which may be used to display the location list, but does nothing by default.
+</p><!--l. 4050--><p class="indent" > The sub-entries first set up the paragraph and hanging indentations using:
+</p><!--l. 4052--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicAssignSubIndent</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16029"></a> <span
+class="cmtt-10">\glstopicAssignSubIndent{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4054--><p class="noindent" >
+This uses:
+</p><!--l. 4056--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicAssignWidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16030"></a> <span
+class="cmtt-10">\glstopicAssignWidest{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4058--><p class="noindent" >
+to determine if a widest name has been set for the given level.
+</p><!--l. 4061--><p class="indent" > The sub-entry has its information displayed using:
+</p><!--l. 4062--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicSubItem</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16031"></a> <span
+class="cmtt-10">\glstopicSubItem{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 4064--><p class="noindent" >
+This encapsulates the name with:
+</p><!--l. 4066--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicSubNameFont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16032"></a> <span
+class="cmtt-10">\glstopicSubNameFont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4068--><p class="noindent" >
+By default this just uses <span
+class="cmtt-10">\textbf</span>. This is followed by:
+</p><!--l. 4070--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicSubItemSep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16033"></a> <span
+class="cmtt-10">\glstopicSubItemSep </span></div><hr>
+</p><!--l. 4072--><p class="noindent" >
+which defaults to <span
+class="cmtt-10">\quad</span>. The name and separator are passed in the &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; argument
+of:
+</p><!--l. 4075--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicSubItemBox</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16034"></a> <span
+class="cmtt-10">\glstopicSubItemBox{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4077--><p class="noindent" >
+If a widest name was set for the given level, this will put &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; inside a box of that
+width otherwise it just does &#x27E8;<span
+class="cmti-10">text</span>&#x27E9;.
+</p><!--l. 4082--><p class="indent" > This is followed by the symbol in parentheses if set. Then, if the description is set,
+the description and post-description hook are displayed followed by:
+</p><!--l. 4085--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicSubPreLocSep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16035"></a> <span
+class="cmtt-10">\glstopicSubPreLocSep </span></div><hr>
+</p><!--l. 4087--><p class="noindent" >
+(This command isn&#8217;t used if the description isn&#8217;t set.)
+</p><!--l. 4090--><p class="indent" > Finally the location list is displayed using:
+</p><!--l. 4091--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstopicSubLoc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-16036"></a> <span
+class="cmtt-10">\glstopicSubLoc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4093--><p class="noindent" >
+which just does &#x27E8;<span
+class="cmti-10">location</span>&#x27E9; by default.
+</p><!--l. 4096--><p class="noindent" >
+</p>
+<!--l. 4096--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">2.12 </span> <a
+ id="sec:glosstylemods"></a>Glossary Style Modifications</h3>
+<!--l. 4099--><p class="noindent" >The <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-17001"></a> package (more conveniently loaded through the
+<span
+class="cmss-10">glossaries-extra </span><a
+href="#styopt.stylemods"><span
+class="cmss-10">stylemods</span></a><a
+ id="dx1-17002"></a> option) modifies some of the predefined styles that are
+provided with the <span
+class="cmss-10">glossaries </span>package. These modifications are described in more detail
+in <a
+href="#x1-200002.12.3"><span
+class="cmsy-10">&sect;</span>2.12.3 </a><a
+href="#x1-200002.12.3">The <span
+class="cmss-10">glossaries-extra-stylemods </span>Package<!--tex4ht:ref: sec:stylemods --></a>.
+
+
+
+</p><!--l. 4106--><p class="indent" > The <span
+class="cmss-10">glossaries</span><a
+ id="dx1-17003"></a> package tries to determine the group title from its label by first
+checking if <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">groupname </span>exists. If it doesn&#8217;t exist, then the title is assumed to be
+the same as the label. For example, when typesetting the &#8220;A&#8221; letter group, <span
+class="cmss-10">glossaries</span><a
+ id="dx1-17004"></a>
+first checks if <span
+class="cmtt-10">\Agroupname </span>exists. This could potentially cause conflict with another
+package that may have some other meaning for <span
+class="cmtt-10">\Agroupname</span>, so <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-17005"></a> first
+checks for the existence of the internal command <span
+class="cmtt-10">\glsxtr@grouptitle@</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;
+which shouldn&#8217;t clash with another package. You can set the group title
+using
+</p><!--l. 4118--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsetgrouptitle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-17006"></a> <span
+class="cmtt-10">\glsxtrsetgrouptitle{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4120--><p class="noindent" >
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-127">
+\glsxtrsetgrouptitle{A}{A&#x00A0;(a)}
+</div>
+<!--l. 4124--><p class="nopar" > This uses a global assignment. If you need to scope the change you can
+use
+</p><!--l. 4127--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlocalsetgrouptitle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-17007"></a> <span
+class="cmtt-10">\glsxtrlocalsetgrouptitle{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 4129--><p class="noindent" >
+</p><!--l. 4131--><p class="noindent" >
+</p>
+<!--l. 4131--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">2.12.1 </span> <a
+ id="sec:stylehooks"></a>Style Hooks</h4>
+<!--l. 4134--><p class="noindent" >The commands <span
+class="cmtt-10">\glossentryname</span><a
+ id="dx1-18001"></a> and <span
+class="cmtt-10">\glossentrydesc</span><a
+ id="dx1-18002"></a> are modified to take into
+account the <a
+href="#catattr.glossname"><span
+class="cmss-10">glossname</span></a><a
+ id="dx1-18003"></a>, <a
+href="#catattr.glossdesc"><span
+class="cmss-10">glossdesc</span></a><a
+ id="dx1-18004"></a> and <a
+href="#catattr.glossdescfont"><span
+class="cmss-10">glossdescfont</span></a><a
+ id="dx1-18005"></a> attributes (see <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5 </a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>). This
+means you can make simple case-changing modifications to the name and description
+without defining a new glossary style.
+</p><!--l. 4140--><p class="indent" > If you want to adapt a style to use another field instead of <span
+class="cmss-10">name</span><a
+ id="dx1-18006"></a>, you can
+use
+</p><!--l. 4142--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glossentrynameother</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-18007"></a> <span
+class="cmtt-10">\glossentrynameother{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4144--><p class="noindent" >
+This behaves just like <span
+class="cmtt-10">\glossentryname </span>(that is, it obeys <a
+href="#catattr.glossname"><span
+class="cmss-10">glossname</span></a><a
+ id="dx1-18008"></a>, <a
+href="#catattr.glossnamefont"><span
+class="cmss-10">glossnamefont</span></a><a
+ id="dx1-18009"></a> or
+<span
+class="cmtt-10">\glsnamefont </span>and uses the post-name hook) but it uses the given &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; instead of
+<span
+class="cmss-10">name</span><a
+ id="dx1-18010"></a>. The &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; argument must be the internal field name (for example <span
+class="cmtt-10">desc </span>rather
+than <span
+class="cmtt-10">description</span>). See the key to field mappings table in the <span
+class="cmss-10">glossaries </span>user
+manual.
+</p><!--l. 4153--><p class="indent" > There is a hook after <span
+class="cmtt-10">\glossentryname</span><a
+ id="dx1-18011"></a> and <span
+class="cmtt-10">\Glossentryname</span><a
+ id="dx1-18012"></a>:
+</p><!--l. 4155--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostnamehook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-18013"></a> <span
+class="cmtt-10">\glsxtrpostnamehook{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4157--><p class="noindent" >
+By default this checks the <a
+href="#catattr.indexname"><span
+class="cmss-10">indexname</span></a><a
+ id="dx1-18014"></a> attribute. If the attribute exists for the
+category to which the label belongs, then the name is automatically indexed
+using
+</p><!--l. 4162--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsxtrdoautoindexname</span><a
+ id="dx1-18015"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">indexname</span><span
+class="cmsy-10">} </span></div><hr>
+</p><!--l. 4163--><p class="noindent" >
+See <a
+href="#sec:autoindex"><span
+class="cmsy-10">&sect;</span>7 </a><a
+href="#sec:autoindex">Auto-Indexing<!--tex4ht:ref: sec:autoindex --></a> for further details.
+</p><!--l. 4167--><p class="indent" > As from version 1.04, the post-name hook <span
+class="cmtt-10">\glsxtrpostnamehook </span>will also use
+<span
+class="cmtt-10">\glsxtrpostname</span>&#x27E8;<span
+class="cmti-10">category</span>&#x27E9; if it exists. You can use <span
+class="cmtt-10">\glscurrententrylabel</span><a
+ id="dx1-18016"></a> to
+obtain the entry label with the definition of this command. For example,
+suppose you are using a glossary style the doesn&#8217;t display the symbol, you can
+insert the symbol after the name for a particular category, say, the &#8220;symbol&#8221;
+category:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-128">
+\newcommand*{\glsxtrpostnamesymbol}{\space
+&#x00A0;<br />&#x00A0;(\glsentrysymbol{\glscurrententrylabel})}
+</div>
+<!--l. 4178--><p class="nopar" > For convenience, as from v1.31, you can use
+</p><!--l. 4180--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdefpostname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-18017"></a> <span
+class="cmtt-10">\glsdefpostname{</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4182--><p class="noindent" >
+This is simply a shortcut for: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\csdef</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">glsxtrpostname</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmsy-10">}</span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> Note that it doesn&#8217;t check if the command has already been defined.
+<!--l. 4189--><p class="indent" > As from version 1.25, the post-name hook also does
+</p><!--l. 4190--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsextrapostnamehook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-18018"></a> <span
+class="cmtt-10">\glsextrapostnamehook{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4192--><p class="noindent" >
+(before <span
+class="cmtt-10">\glsxtrpostname</span>&#x27E8;<span
+class="cmti-10">category</span>&#x27E9;) to allow for additional non-category related code.
+This does nothing by default.
+</p><!--l. 4197--><p class="indent" > The post-description code used within the glossary is modified so that it also
+does
+</p><!--l. 4199--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpostdescription</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-18019"></a> <span
+class="cmtt-10">\glsxtrpostdescription </span></div><hr>
+</p><!--l. 4201--><p class="noindent" >
+This occurs before the original <span
+class="cmtt-10">\glspostdescription</span>, so if the <a
+href="#styopt.nopostdot"><span
+class="cmss-10">nopostdot</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-18020"></a>
+option is used, it will be inserted before the terminating full stop.
+</p><!--l. 4206--><p class="indent" > This new command will do <span
+class="cmtt-10">\glsxtrpostdesc</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9; if it exists, where
+&#x27E8;<span
+class="cmti-10">category</span>&#x27E9; is the category label associated with the current entry. For example
+<span
+class="cmtt-10">\glsxtrpostdescgeneral </span>for entries with the category set to <span
+class="cmss-10">general</span><a
+ id="dx1-18021"></a> or
+<span
+class="cmtt-10">\glsxtrpostdescacronym </span>for entries with the category set to <span
+class="cmss-10">acronym</span><a
+ id="dx1-18022"></a>. For
+convenience, as from v1.31, you can use
+</p><!--l. 4213--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsdefpostdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-18023"></a> <span
+class="cmtt-10">\glsdefpostdesc{</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4215--><p class="noindent" >
+This is simply a shortcut for: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\csdef</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">glsxtrpostdesc</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmsy-10">}</span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> Note that it doesn&#8217;t check if the command has already been defined.
+<!--l. 4222--><p class="indent" > Since both <span
+class="cmtt-10">\glossentry </span>and <span
+class="cmtt-10">\subglossentry </span>set
+</p><!--l. 4223--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glscurrententrylabel</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-18024"></a> <span
+class="cmtt-10">\glscurrententrylabel </span></div><hr>
+
+
+
+</p><!--l. 4225--><p class="noindent" >
+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.
+</p><!--l. 4230--><p class="indent" > For example, suppose you want to insert the plural form in brackets after the
+description in the glossary, but only for entries in the <span
+class="cmss-10">general</span><a
+ id="dx1-18025"></a> category, then you could
+do:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-129">
+\renewcommand{\glsxtrpostdescgeneral}{\space
+&#x00A0;<br />&#x00A0;(plural:&#x00A0;\glsentryplural{\glscurrententrylabel})}
+</div>
+<!--l. 4236--><p class="nopar" > This means you don&#8217;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.)
+</p><!--l. 4241--><p class="indent" > <div class="important" title="Important Note"> This feature can&#8217;t be used for glossary styles that ignore <span
+class="cmtt-10">\glspostdescription </span>or if
+you redefine <span
+class="cmtt-10">\glspostdescription </span>without including <span
+class="cmtt-10">\glsxtrpostdescription</span>.
+(For example, if you redefine <span
+class="cmtt-10">\glspostdescription </span>to do nothing instead of using
+the <a
+href="#styopt.nopostdot"><span
+class="cmss-10">nopostdot</span></a><a
+ id="dx1-18026"></a> option to suppress the terminating full stop.) See <a
+href="#x1-200002.12.3"><span
+class="cmsy-10">&sect;</span>2.12.3 </a><a
+href="#x1-200002.12.3">The
+<span
+class="cmss-10">glossaries-extra-stylemods </span>Package<!--tex4ht:ref: sec:stylemods --></a> to patch the predefined styles provided by <span
+class="cmss-10">glossaries</span>
+that are missing <span
+class="cmtt-10">\glspostdescription</span>. </div>
+</p><!--l. 4250--><p class="noindent" >
+</p><!--l. 4252--><p class="noindent" >
+</p>
+<!--l. 4252--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">2.12.2 </span> <a
+ id="sec:glosstylenumlist"></a>Number List</h4>
+<!--l. 4255--><p class="noindent" >The <a
+ id="dx1-19001"></a><a
+href="#glo:numberlist">number list</a> is now placed inside the argument of
+</p><!--l. 4256--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrFormatLocationList</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-19002"></a> <span
+class="cmtt-10">\GlsXtrFormatLocationList{</span>&#x27E8;<span
+class="cmitt-10">number list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 4258--><p class="noindent" >
+This is internally used by <span
+class="cmtt-10">\glossaryentrynumbers</span>. The <a
+href="#styopt.nonumberlist"><span
+class="cmss-10">nonumberlist</span></a><a
+ id="dx1-19003"></a> option
+redefines <span
+class="cmtt-10">\glossaryentrynumbers </span>so that it doesn&#8217;t display the <a
+ id="dx1-19004"></a>number list, but it
+still saves the <a
+ id="dx1-19005"></a>number list in case it&#8217;s required.
+</p><!--l. 4264--><p class="indent" > <div class="important" title="Important Note"> If you want to suppress the <a
+ id="dx1-19006"></a>number list always use the <a
+href="#styopt.nonumberlist"><span
+class="cmss-10">nonumberlist</span></a><a
+ id="dx1-19007"></a> option
+instead of redefining <span
+class="cmtt-10">\glossaryentrynumbers </span>to do nothing. </div>
+</p><!--l. 4268--><p class="noindent" >
+</p><!--l. 4270--><p class="indent" > If you want to, for example, change the font for the entire <a
+ id="dx1-19008"></a>number list
+then redefine <span
+class="cmtt-10">\GlsXtrFormatLocationList </span>as appropriate. Don&#8217;t modify
+<span
+class="cmtt-10">\glossaryentrynumbers</span>.
+</p><!--l. 4274--><p class="indent" > Sometimes users like to insert &#8220;page&#8221; or &#8220;pages&#8221; in front of the <a
+ id="dx1-19009"></a>number list. This
+is quite fiddly to do with the base <span
+class="cmss-10">glossaries </span>package, but <span
+class="cmss-10">glossaries-extra </span>provides a
+way of doing this. First you need to enable this option and specify the text to display
+using:
+</p><!--l. 4279--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrEnablePreLocationTag</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-19010"></a> <span
+class="cmtt-10">\GlsXtrEnablePreLocationTag{</span>&#x27E8;<span
+class="cmitt-10">page</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">pages</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 4281--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">page</span>&#x27E9; is the text to display if the <a
+ id="dx1-19011"></a>number list only contains a single location and
+&#x27E8;<span
+class="cmti-10">pages</span>&#x27E9; is the text to display otherwise. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-130">
+\GlsXtrEnablePreLocationTag{Page:&#x00A0;}{Pages:&#x00A0;}
+</div>
+<!--l. 4287--><p class="nopar" > An extra run is required when using this command.
+</p><!--l. 4290--><p class="indent" > <div class="important" title="Important Note"> Use <span
+class="cmtt-10">glsignore </span>not <span
+class="cmtt-10">@gobble </span>as the format if you want to suppress the page
+number (and only index the entry once). </div>
+</p><!--l. 4293--><p class="noindent" >
+</p><!--l. 4295--><p class="indent" > See the accompanying sample file <span
+class="cmtt-10">sample-pages.tex</span>.
+</p><!--l. 4297--><p class="indent" > Note that <a
+ id="dx1-19012"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> can be instructed to insert a prefix at the start of non-empty
+location lists, which can be used as an alternative to <span
+class="cmtt-10">\GlsXtrEnablePreLocationTag</span>.
+</p><!--l. 4301--><p class="noindent" >
+</p>
+<!--l. 4301--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">2.12.3 </span> <a
+ id="x1-200002.12.3"></a>The <span
+class="cmss-10">glossaries-extra-stylemods </span>Package</h4>
+<!--l. 4304--><p class="noindent" >As from v1.02, <span
+class="cmss-10">glossaries-extra </span>now includes the package <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-20001"></a> that
+will redefine the predefined styles to include the post-description hook (for those that
+are missing it). You will need to make sure the styles have already been defined
+before loading <span
+class="cmss-10">glossaries-extra</span>. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-131">
+\usepackage{glossaries-extra}
+&#x00A0;<br />\usepackage{glossary-longragged}
+&#x00A0;<br />\usepackage{glossaries-extra-stylemods}
+</div>
+<!--l. 4313--><p class="nopar" > Alternatively you can load <span
+class="cmtt-10">glossary-</span>&#x27E8;<span
+class="cmti-10">name</span>&#x27E9;<span
+class="cmtt-10">.sty </span>at the same time by passing &#x27E8;<span
+class="cmti-10">name</span>&#x27E9;
+as a package option to <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-20002"></a>. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-132">
+\usepackage{glossaries-extra}
+&#x00A0;<br />\usepackage[longragged]{glossaries-extra-stylemods}
+</div>
+<!--l. 4321--><p class="nopar" > Another option is to use the <a
+href="#styopt.stylemods"><span
+class="cmss-10">stylemods</span></a><a
+ id="dx1-20003"></a> key when you load <span
+class="cmss-10">glossaries-extra</span>. You can
+omit a value if you only want to use the predefined styles that are automatically
+loaded by <span
+class="cmss-10">glossaries </span>(for example, the <span
+class="cmss-10">long3col</span><a
+ id="dx1-20004"></a> style):
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-133">
+\usepackage[style=long3col,stylemods]{glossaries-extra}
+</div>
+<!--l. 4328--><p class="nopar" > Or the value of <a
+href="#styopt.stylemods"><span
+class="cmss-10">stylemods</span></a><a
+ id="dx1-20005"></a> may be a comma-separated list of the style package
+identifiers. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-134">
+\usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra}
+</div>
+<!--l. 4333--><p class="nopar" > Remember to group the value if it contains any commas:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-135">
+\usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra}
+</div>
+<!--l. 4337--><p class="nopar" >
+</p><!--l. 4339--><p class="indent" > Note that the <span
+class="cmss-10">inline</span><a
+ id="dx1-20006"></a> style is dealt with slightly differently. The original definition
+provided by the <span
+class="cmss-10">glossary-inline</span><a
+ id="dx1-20007"></a> package uses <span
+class="cmtt-10">\glspostdescription </span>at the end of the
+glossary (not after each entry description) within the definition of <span
+class="cmtt-10">\glspostinline</span>.
+The style modification changes this so that <span
+class="cmtt-10">\glspostinline </span>just does a full stop
+followed by space factor adjustment, and the description <span
+class="cmtt-10">\glsinlinedescformat </span>and
+sub-entry description formats <span
+class="cmtt-10">\glsinlinesubdescformat </span>are redefined to include
+<span
+class="cmtt-10">\glsxtrpostdescription </span>(not <span
+class="cmtt-10">\glspostdescription</span>). This means that the
+modified <span
+class="cmss-10">inline</span><a
+ id="dx1-20008"></a> style isn&#8217;t affected by the <a
+href="#styopt.nopostdot"><span
+class="cmss-10">nopostdot</span></a><a
+ id="dx1-20009"></a> option, but the post-description
+category hook can still be used.
+</p><!--l. 4353--><p class="indent" > The <span
+class="cmss-10">tabular</span><a
+ id="dx1-20010"></a><a
+ id="dx1-20011"></a>-like styles, such as <span
+class="cmss-10">long</span><a
+ id="dx1-20012"></a> are adjusted so that the <span
+class="cmtt-10">\ifglsnogroupskip</span><a
+ id="dx1-20013"></a>
+conditional (set with <a
+href="#styopt.nogroupskip"><span
+class="cmss-10">nogroupskip</span></a><a
+ id="dx1-20014"></a>) is moved outside of the definition of
+<span
+class="cmtt-10">\glsgroupskip </span>to avoid problems that cause an &#8220;Incomplete <span
+class="cmtt-10">\iftrue</span>&#8221; error with
+<span
+class="cmtt-10">\printunsrtglossary </span>and <span
+class="cmtt-10">\printnoidxglossary</span>. This means that if you want to
+change this conditional using <span
+class="cmtt-10">\setupglossaries </span>or using the <span
+class="cmss-10">nogroupskip</span><a
+ id="dx1-20015"></a> option in
+<span
+class="cmtt-10">\printglossary</span>, <span
+class="cmtt-10">\printnoidxglossary </span>or <span
+class="cmtt-10">\printunsrtglossary</span>, you must also
+reset the glossary style.
+</p><!--l. 4364--><p class="indent" > As from version 1.21, the hard-coded <span
+class="cmtt-10">\space </span>before the <a
+ id="dx1-20016"></a><a
+href="#glo:numberlist">number list</a> in many of
+the predefined styles is replaced with
+</p><!--l. 4367--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrprelocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20017"></a> <span
+class="cmtt-10">\glsxtrprelocation </span></div><hr>
+</p><!--l. 4369--><p class="noindent" >
+This just defaults to <span
+class="cmtt-10">\space </span>but may be redefined as required. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-136">
+\renewcommand{\glsxtrprelocation}{\dotfill}
+</div>
+<!--l. 4374--><p class="nopar" >
+</p><!--l. 4376--><p class="indent" > The <span
+class="cmss-10">list</span><a
+ id="dx1-20018"></a> styles use
+</p><!--l. 4377--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslistprelocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20019"></a> <span
+class="cmtt-10">\glslistprelocation </span></div><hr>
+</p><!--l. 4379--><p class="noindent" >
+(which defaults to <span
+class="cmtt-10">\glsxtrprelocation</span>) for top-level items and
+</p><!--l. 4381--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslistchildprelocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20020"></a> <span
+class="cmtt-10">\glslistchildprelocation </span></div><hr>
+</p><!--l. 4383--><p class="noindent" >
+(which defaults to <span
+class="cmtt-10">\glslistprelocation</span>) for child items.
+</p><!--l. 4386--><p class="indent" > As from v1.31, the description (including the post-description hook) is governed
+by:
+</p><!--l. 4388--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslistdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20021"></a> <span
+class="cmtt-10">\glslistdesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4390--><p class="noindent" >
+for the <span
+class="cmss-10">list</span><a
+ id="dx1-20022"></a> and <span
+class="cmss-10">altlist</span><a
+ id="dx1-20023"></a> styles (but not the <span
+class="cmss-10">listdotted</span><a
+ id="dx1-20024"></a> variations).
+</p><!--l. 4394--><p class="indent" > For just the <span
+class="cmss-10">list</span><a
+ id="dx1-20025"></a> style and its letter group variations (not the <span
+class="cmss-10">altlist</span><a
+ id="dx1-20026"></a> or <span
+class="cmss-10">listdotted</span><a
+ id="dx1-20027"></a>
+variations) the <a
+ id="dx1-20028"></a><a
+href="#glo:numberlist">number list</a> for child entries is followed by
+</p><!--l. 4397--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslistchildpostlocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20029"></a> <span
+class="cmtt-10">\glslistchildpostlocation </span></div><hr>
+</p><!--l. 4399--><p class="noindent" >
+which defaults to a full stop.
+</p><!--l. 4402--><p class="indent" > The default value of <span
+class="cmtt-10">\glslistdottedwidth</span><a
+ id="dx1-20030"></a> is changed so that it&#8217;s set at the start
+of the document (if it hasn&#8217;t been changed in the preamble). This should
+take into account situations where <span
+class="cmtt-10">\hsize </span>isn&#8217;t set until the start of the
+document.
+</p><!--l. 4407--><p class="indent" > The separator between groups (if not <a
+href="#styopt.nogroupskip"><span
+class="cmss-10">nogroupskip</span></a><a
+ id="dx1-20031"></a>) is now given by:
+</p><!--l. 4409--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslistgroupskip</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20032"></a> <span
+class="cmtt-10">\glslistgroupskip </span></div><hr>
+</p><!--l. 4411--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\indexspace </span>with penalties to deter page breaks. This command
+isn&#8217;t used if <a
+href="#styopt.nogroupskip"><span
+class="cmss-10">nogroupskip</span></a><a
+ id="dx1-20033"></a> is set.
+</p><!--l. 4416--><p class="indent" > The <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-20034"></a> package introduced two new commands in <span
+class="cmss-10">glossaries</span><a
+ id="dx1-20035"></a> version 4.22,
+<span
+class="cmtt-10">\glstreegroupheaderfmt</span><a
+ id="dx1-20036"></a> and <span
+class="cmtt-10">\glstreenavigationfmt</span><a
+ id="dx1-20037"></a>, which are used to format
+the letter group headings and the navigation elements for the appropriate styles.
+These two new commands are defined in terms of <span
+class="cmtt-10">\glstreenamefmt</span><a
+ id="dx1-20038"></a> since that was
+the command originally used for the group headings and navigation. This
+now allows these different elements to be defined independently, but the
+most common redefinition is for <span
+class="cmtt-10">\glstreenamefmt </span>to remove the bold in
+the name. If the bold is still required for the group heading and navigation
+elements, then both other commands also need redefining. To simplify matters, if
+<span
+class="cmtt-10">\glstreenamefmt </span>has been defined, as from v1.31 <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-20039"></a>
+defines:
+</p><!--l. 4429--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreedefaultnamefmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20040"></a> <span
+class="cmtt-10">\glstreedefaultnamefmt{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 4431--><p class="noindent" >
+which simply does <span
+class="cmtt-10">\textbf{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span>and redefines <span
+class="cmtt-10">\glstreenamefmt</span>,
+<span
+class="cmtt-10">\glstreegroupheaderfmt </span>and <span
+class="cmtt-10">\glstreenavigationfmt </span>all in terms of
+<span
+class="cmtt-10">\glstreedefaultnamefmt</span>. This means that if you want to change all three to use a
+particular style you only need to redefine <span
+class="cmtt-10">\glstreedefaultnamefmt</span>, but if you only
+want to redefine <span
+class="cmtt-10">\glstreenamefmt </span>without affecting the other two commands, then
+you now can.
+</p><!--l. 4441--><p class="indent" > The separator between groups (if not <a
+href="#styopt.nogroupskip"><span
+class="cmss-10">nogroupskip</span></a><a
+ id="dx1-20041"></a>) is now given by:
+</p><!--l. 4443--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreegroupskip</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20042"></a> <span
+class="cmtt-10">\glstreegroupskip </span></div><hr>
+</p><!--l. 4445--><p class="noindent" >
+This defaults to <span
+class="cmtt-10">\indexspace </span>with penalties to deter page breaks. This command
+isn&#8217;t used if <a
+href="#styopt.nogroupskip"><span
+class="cmss-10">nogroupskip</span></a><a
+ id="dx1-20043"></a> is set (except for the styles that display the group
+titles).
+</p><!--l. 4451--><p class="indent" > The styles that display the group titles now use:
+</p><!--l. 4452--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreePreHeader</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20044"></a> <span
+class="cmtt-10">\glstreePreHeader{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4454--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the group label and &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; is the group title. This does nothing by
+default and is inserted before the group title. You can redefine it to add the group
+title to the PDF bookmarks. For example, if the glossary title uses <span
+class="cmtt-10">\chapter</span>
+then:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-137">
+\renewcommand{\glstreePreHeader}[2]{%
+&#x00A0;<br />&#x00A0;\pdfbookmark[1]{#2}{\currentglossary.#1}%
+&#x00A0;<br />}
+</div>
+<!--l. 4464--><p class="nopar" > will insert section-level bookmarks. The use of <span
+class="cmtt-10">\currentglossary </span>helps to provide
+unique bookmark labels in the event of multiple glossaries.
+</p><!--l. 4469--><p class="indent" > The <span
+class="cmss-10">index</span><a
+ id="dx1-20045"></a>-like and <span
+class="cmss-10">tree</span><a
+ id="dx1-20046"></a>-like styles insert the pre-<a
+ id="dx1-20047"></a><a
+href="#glo:numberlist">number list</a> space with
+</p><!--l. 4471--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreeprelocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20048"></a> <span
+class="cmtt-10">\glstreeprelocation </span></div><hr>
+</p><!--l. 4473--><p class="noindent" >
+(which defaults to <span
+class="cmtt-10">\glsxtrprelocation</span>) for top-level items and
+</p><!--l. 4475--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreechildprelocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20049"></a> <span
+class="cmtt-10">\glstreechildprelocation </span></div><hr>
+</p><!--l. 4477--><p class="noindent" >
+(which defaults to <span
+class="cmtt-10">\glstreeprelocation</span>) for child items.
+</p><!--l. 4480--><p class="indent" > As from version 1.31, the <span
+class="cmss-10">glossaries-extra-stylemods </span>package also provides:
+</p><!--l. 4482--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreenonamedesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20050"></a> <span
+class="cmtt-10">\glstreenonamedesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4484--><p class="noindent" >
+which is used by the <span
+class="cmss-10">treenoname</span><a
+ id="dx1-20051"></a> styles to display the pre-description separator, the
+description and the post-description hook. Similarly for the symbol:
+</p><!--l. 4488--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreenonamesymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20052"></a> <span
+class="cmtt-10">\glstreenonamesymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4490--><p class="noindent" >
+The above are just used for top-level entries. Child entries don&#8217;t have the name or
+symbol displayed for the <span
+class="cmss-10">treenoname</span><a
+ id="dx1-20053"></a> styles, so there&#8217;s only a command for the child
+description:
+</p><!--l. 4494--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreenonamechilddesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20054"></a> <span
+class="cmtt-10">\glstreenonamechilddesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4496--><p class="noindent" >
+</p><!--l. 4498--><p class="indent" > For the <span
+class="cmss-10">tree</span><a
+ id="dx1-20055"></a> styles (but not the <span
+class="cmss-10">treenoname</span><a
+ id="dx1-20056"></a> or <span
+class="cmss-10">alttree</span><a
+ id="dx1-20057"></a> styles), the description is
+displayed using:
+</p><!--l. 4500--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreedesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20058"></a> <span
+class="cmtt-10">\glstreedesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4502--><p class="noindent" >
+and the symbol with:
+</p><!--l. 4504--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreesymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20059"></a> <span
+class="cmtt-10">\glstreesymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4506--><p class="noindent" >
+Again the above two commands are just for top-level entries. The child entries
+use:
+</p><!--l. 4509--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreechilddesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20060"></a> <span
+class="cmtt-10">\glstreechilddesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4511--><p class="noindent" >
+for the description and
+</p><!--l. 4513--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreechildsymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20061"></a> <span
+class="cmtt-10">\glstreechildsymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4515--><p class="noindent" >
+for the symbol.
+
+
+
+</p><!--l. 4518--><p class="indent" > As from version 1.41, there are now wrapper commands for <span
+class="cmtt-10">\glstreedesc </span>and
+<span
+class="cmtt-10">\glstreechilddesc </span>that check for the description and symbol to determine whether
+or not to insert a space (<span
+class="cmtt-10">\glstreeprelocation </span>or <span
+class="cmtt-10">\glstreechildprelocation</span>)
+before the page list. These are:
+</p><!--l. 4523--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreeDescLoc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20062"></a> <span
+class="cmtt-10">\glstreeDescLoc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4525--><p class="noindent" >
+for top-level entries and
+</p><!--l. 4527--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glstreeChildDescLoc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20063"></a> <span
+class="cmtt-10">\glstreeChildDescLoc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 4529--><p class="noindent" >
+for sub-entries. This prevents a spurious space for terms that don&#8217;t have a symbol or
+description but do have a location list (for example, aliases).
+</p><!--l. 4534--><p class="indent" > As from version 1.05, the <span
+class="cmss-10">glossaries-extra-stylemods </span>package provides some
+additional commands for use with the <span
+class="cmss-10">alttree</span><a
+ id="dx1-20064"></a> style to make it easier to modify. These
+commands are only defined if the <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-20065"></a> package has already been loaded,
+which is typically the case unless the <a
+href="#styopt.notree"><span
+class="cmss-10">notree</span></a><a
+ id="dx1-20066"></a> option has been used when loading
+<span
+class="cmss-10">glossaries</span>.
+</p><!--l. 4542--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\gglssetwidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20067"></a> <span
+class="cmtt-10">\gglssetwidest[</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4544--><p class="noindent" >
+(New to version 1.21.) This is like <span
+class="cmtt-10">\glssetwidest </span>(provided by <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-20068"></a>) but
+performs a global assignment.
+</p><!--l. 4549--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\eglssetwidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20069"></a> <span
+class="cmtt-10">\eglssetwidest[</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4551--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glssetwidest </span>but performs a protected expansion on &#x27E8;<span
+class="cmti-10">name</span>&#x27E9;. This has a
+localised effect. For a global setting, use
+</p><!--l. 4555--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\xglssetwidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20070"></a> <span
+class="cmtt-10">\xglssetwidest[</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4557--><p class="noindent" >
+The following only set the value if &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is wider than the current value (new to
+version 1.23). Local update:
+</p><!--l. 4560--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsupdatewidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20071"></a> <span
+class="cmtt-10">\glsupdatewidest[</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4562--><p class="noindent" >
+Global update:
+</p><!--l. 4564--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\gglsupdatewidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20072"></a> <span
+class="cmtt-10">\gglsupdatewidest[</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4566--><p class="noindent" >
+Locale update (expands &#x27E8;<span
+class="cmti-10">name</span>&#x27E9;):
+</p><!--l. 4568--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\eglsupdatewidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20073"></a> <span
+class="cmtt-10">\eglsupdatewidest[</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4570--><p class="noindent" >
+Global update (expands &#x27E8;<span
+class="cmti-10">name</span>&#x27E9;):
+</p><!--l. 4572--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\xglsupdatewidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20074"></a> <span
+class="cmtt-10">\xglsupdatewidest[</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4574--><p class="noindent" >
+</p><!--l. 4577--><p class="indent" > The widest entry value can later be retrieved using
+</p><!--l. 4578--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgetwidestname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20075"></a> <span
+class="cmtt-10">\glsgetwidestname </span></div><hr>
+</p><!--l. 4580--><p class="noindent" >
+for the top-level entries and
+</p><!--l. 4582--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgetwidestsubname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20076"></a> <span
+class="cmtt-10">\glsgetwidestsubname{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 4584--><p class="noindent" >
+for sub-entries, where &#x27E8;<span
+class="cmti-10">level</span>&#x27E9; is the level number.
+</p><!--l. 4587--><p class="indent" > Note that if you are using <a
+ id="dx1-20077"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>, you can use the resource option <span
+class="cmtt-10">set-widest</span>
+which will try to determine the widest name of all the selected entries. This isn&#8217;t
+guaranteed to work as it may depend on fonts or commands that <a
+ id="dx1-20078"></a><span
+class="cmtt-10">bib2gls</span>
+can&#8217;t replicate, but it should be suitable for names that just consist of text,
+and can be more efficient than iterating over all the defined entries using
+<span class="TEX">T<span
+class="E">E</span>X</span>.
+</p><!--l. 4595--><p class="indent" > The command <span
+class="cmtt-10">\glsfindwidesttoplevelname </span>provided by <span
+class="cmss-10">glossary-tree</span><a
+ id="dx1-20079"></a> has a
+CamelCase synonym:
+</p><!--l. 4597--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestTopLevelName</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20080"></a> <span
+class="cmtt-10">\glsFindWidestTopLevelName[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div><hr>
+</p><!--l. 4599--><p class="noindent" >
+Similar commands are also provided:
+</p><!--l. 4601--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestUsedTopLevelName</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20081"></a> <span
+class="cmtt-10">\glsFindWidestUsedTopLevelName[</span>&#x27E8;<span
+class="cmitt-10">glossary</span>
+<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4603--><p class="noindent" >
+This has an additional check that the entry has been used. Naturally this is only
+useful if the glossaries that use the <span
+class="cmss-10">alttree</span><a
+ id="dx1-20082"></a> style occur at the end of the document.
+This command should be placed just before the start of the glossary. (Alternatively,
+place it at the end of the document and save the value in the auxiliary file for the
+next run.)
+</p><!--l. 4611--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestUsedAnyName</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20083"></a> <span
+class="cmtt-10">\glsFindWidestUsedAnyName[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div><hr>
+</p><!--l. 4613--><p class="noindent" >
+This is like the previous command but if doesn&#8217;t check the <span
+class="cmss-10">parent</span><a
+ id="dx1-20084"></a> key. This is useful if
+all levels should have the same width for the name.
+</p><!--l. 4618--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestAnyName</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20085"></a> <span
+class="cmtt-10">\glsFindWidestAnyName[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4620--><p class="noindent" >
+This is like the previous command but doesn&#8217;t check if the entry has been
+used.
+</p><!--l. 4624--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestUsedLevelTwo</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20086"></a> <span
+class="cmtt-10">\glsFindWidestUsedLevelTwo[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div><hr>
+</p><!--l. 4626--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsFindWidestUsedTopLevelName </span>but also sets the first two sub-levels
+as well. Any entry that has a great-grandparent is ignored.
+</p><!--l. 4631--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestLevelTwo</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20087"></a> <span
+class="cmtt-10">\glsFindWidestLevelTwo[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div><hr>
+</p><!--l. 4633--><p class="noindent" >
+This is like the previous command but doesn&#8217;t check if the entry has been
+used.
+</p><!--l. 4637--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestUsedAnyNameSymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20088"></a> <span
+class="cmtt-10">\glsFindWidestUsedAnyNameSymbol</span>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">register</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4640--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsFindWidestUsedAnyName </span>but also measures the symbol. The length
+of the widest symbol is stored in &#x27E8;<span
+class="cmti-10">register</span>&#x27E9;.
+
+
+
+</p><!--l. 4645--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestAnyNameSymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20089"></a> <span
+class="cmtt-10">\glsFindWidestAnyNameSymbol[</span>&#x27E8;<span
+class="cmitt-10">glossary</span>
+<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">register</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4647--><p class="noindent" >
+This is like the previous command but it doesn&#8217;t check if the entry has been
+used.
+</p><!--l. 4651--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestUsedAnyNameSymbolLocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20090"></a> <span
+class="cmtt-10">\glsFindWidestUsedAnyNameSymbolLocation</span>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">symbol register</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location register</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4654--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsFindWidestUsedAnyNameSymbol </span>but also measures the <a
+ id="dx1-20091"></a><a
+href="#glo:numberlist">number list</a>.
+This requires <span
+class="cmtt-10">\glsentrynumberlist</span><a
+ id="dx1-20092"></a> (see the <span
+class="cmss-10">glossaries </span>user manual). The length of
+the widest symbol is stored in &#x27E8;<span
+class="cmti-10">symbol register</span>&#x27E9; and the length of the widest <a
+ id="dx1-20093"></a>number
+list is stored in &#x27E8;<span
+class="cmti-10">location register</span>&#x27E9;.
+</p><!--l. 4662--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestAnyNameSymbolLocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20094"></a> <span
+class="cmtt-10">\glsFindWidestAnyNameSymbolLocation</span>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">symbol register</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location register</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4665--><p class="noindent" >
+This is like the previous command but it doesn&#8217;t check if the entry has been
+used.
+</p><!--l. 4669--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestUsedAnyNameLocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20095"></a> <span
+class="cmtt-10">\glsFindWidestUsedAnyNameLocation</span>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">glossary list</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">register</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4672--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsFindWidestUsedAnyNameSymbolLocation </span>but doesn&#8217;t measure the
+symbol. The length of the widest <a
+ id="dx1-20096"></a>number list is stored in &#x27E8;<span
+class="cmti-10">register</span>&#x27E9;.
+</p><!--l. 4677--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsFindWidestAnyNameLocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20097"></a> <span
+class="cmtt-10">\glsFindWidestAnyNameLocation[</span>&#x27E8;<span
+class="cmitt-10">glossary</span>
+<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">register</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4680--><p class="noindent" >
+This is like the previous command but doesn&#8217;t check if the entry has been
+used.
+</p><!--l. 4684--><p class="indent" > The layout of the symbol, description and <a
+ id="dx1-20098"></a>number list is governed by
+</p><!--l. 4686--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtralttreeSymbolDescLocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20099"></a> <span
+class="cmtt-10">\glsxtralttreeSymbolDescLocation</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">number list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4688--><p class="noindent" >
+for top-level entries and
+</p><!--l. 4690--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtralttreeSubSymbolDescLocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20100"></a> <span
+class="cmtt-10">\glsxtralttreeSubSymbolDescLocation</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">number list</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4692--><p class="noindent" >
+for sub-entries.
+</p><!--l. 4695--><p class="indent" > There is now a user level command that performs the initialisation for the <span
+class="cmss-10">alttree</span><a
+ id="dx1-20101"></a>
+style:
+</p><!--l. 4697--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtralttreeInit</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20102"></a> <span
+class="cmtt-10">\glsxtralttreeInit </span></div><hr>
+</p><!--l. 4699--><p class="noindent" >
+</p><!--l. 4701--><p class="indent" > The paragraph indent for subsequent paragraphs in multi-paragraph descriptions
+is provided by the length
+</p><!--l. 4703--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrAltTreeIndent</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-20103"></a> <span
+class="cmtt-10">\glsxtrAltTreeIndent </span></div><hr>
+</p><!--l. 4705--><p class="noindent" >
+
+
+
+</p><!--l. 4707--><p class="indent" > For additional commands that are available with the <span
+class="cmss-10">alttree</span><a
+ id="dx1-20104"></a> style, see the
+documented code (<span
+class="cmtt-10">glossaries-extra-code.pdf</span>). For examples, see the
+accompanying sample files <span
+class="cmtt-10">sample-alttree.tex</span>, <span
+class="cmtt-10">sample-alttree-sym.tex </span>and
+<span
+class="cmtt-10">sample-alttree-marginpar.tex</span>.
+
+
+
+</p>
+<!--l. 4714--><p class="indent" > </div>
+</p><!--l. 4714--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">3. <a
+ id="sec:abbreviations"></a>Abbreviations</h2>
+</p><!--l. 4717--><p class="indent" > The new abbreviation system provided by <span
+class="cmss-10">glossaries-extra </span>is more flexible
+than the acronym handling provided by the base <span
+class="cmss-10">glossaries </span>package. The
+<span
+class="cmss-10">glossaries-extra </span>package modifies the underlying formatting used by <span
+class="cmtt-10">\gls </span>(and
+its variants) so that terms that are recognised as abbreviations can have
+their formatting dealt with by the style. You therefore need to select an
+abbreviation style that ensures that <span
+class="cmtt-10">\gls </span>(and its variants) displays the desired
+output.
+</p><!--l. 4726--><p class="indent" > <div class="important" title="Important Note"> Don&#8217;t use commands like <span
+class="cmtt-10">\glstext </span>or <span
+class="cmtt-10">\glsfirst </span>with abbreviations as they
+aren&#8217;t flexible enough to handle some abbreviation styles and unexpected
+results may occur. Use commands like <span
+class="cmtt-10">\glsfmtshort </span>or <span
+class="cmtt-10">\glsfmtlong </span>in
+section headings or captions instead of <span
+class="cmtt-10">\gls</span>. If you don&#8217;t want the full form
+to show on first use of <span
+class="cmtt-10">\gls </span>use one of the &#8220;nolong&#8221; or &#8220;noshort&#8221; styles.
+</div>
+</p><!--l. 4734--><p class="noindent" >
+</p><!--l. 4736--><p class="indent" > Abbreviations include acronyms (words formed from initial letters, such as
+&#8220;laser&#8221;), initialisms (initial letters of a phrase, such as &#8220;html&#8221;, that aren&#8217;t
+pronounced as words) and contractions (where parts of words are omitted, often
+replaced by an apostrophe, such as &#8220;don&#8217;t&#8221;). The &#8220;acronym&#8221; code provided by the
+<span
+class="cmss-10">glossaries </span>package is misnamed as it&#8217;s more often than not used for initialisms instead.
+Acronyms tend not to be <span
+class="cmti-10">expanded </span>on <a
+ id="dx1-21001"></a><a
+href="#glo:firstuse">first use</a> (although they may need
+to be <span
+class="cmti-10">described </span>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.
+</p><!--l. 4748--><p class="indent" > The <span
+class="cmss-10">glossaries-extra </span>package corrects this misnomer, and provides better
+abbreviation handling, with
+</p><!--l. 4750--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newabbreviation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21002"></a> <span
+class="cmtt-10">\newabbreviation[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 4752--><p class="noindent" >
+</p><!--l. 4754--><p class="indent" > This sets the <span
+class="cmss-10">category</span><a
+ id="dx1-21003"></a> key to <span
+class="cmtt-10">abbreviation </span>by default, but that value may be
+overridden in &#x27E8;<span
+class="cmti-10">options</span>&#x27E9;. The category may have attributes that modify the way
+abbreviations are defined. For example, the <a
+href="#catattr.insertdots"><span
+class="cmss-10">insertdots</span></a><a
+ id="dx1-21004"></a> attribute will automatically
+insert full stops (periods) into &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; or the <a
+href="#catattr.noshortplural"><span
+class="cmss-10">noshortplural</span></a><a
+ id="dx1-21005"></a> attribute will set the default
+value of the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-21006"></a> key to just &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; (without appending the plural suffix). See <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5
+</a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further details.
+</p><!--l. 4764--><p class="indent" > See <a
+href="#sec:nested"><span
+class="cmsy-10">&sect;</span>2.7 </a><a
+href="#sec:nested">Nested Links<!--tex4ht:ref: sec:nested --></a> regarding the pitfalls of using commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-21007"></a> or
+<span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-21008"></a> within &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; or &#x27E8;<span
+class="cmti-10">long</span>&#x27E9;.
+</p><!--l. 4768--><p class="indent" > <div class="important" title="Important Note"> Make sure that you set the category attributes before defining new abbreviations
+or they may not be correctly applied. </div>
+</p><!--l. 4771--><p class="noindent" >
+</p><!--l. 4773--><p class="indent" > The <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-21009"></a> command provided by the <span
+class="cmss-10">glossaries </span>package is redefined by
+
+
+
+<span
+class="cmss-10">glossaries-extra </span>to use <span
+class="cmtt-10">\newabbreviation </span>with the <span
+class="cmss-10">category</span><a
+ id="dx1-21010"></a> set to <span
+class="cmtt-10">acronym </span>(see also
+<a
+href="#sec:acronymmods"><span
+class="cmsy-10">&sect;</span>2.8 </a><a
+href="#sec:acronymmods">Acronym Style Modifications<!--tex4ht:ref: sec:acronymmods --></a>) so
+</p><!--l. 4777--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newacronym</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21011"></a> <span
+class="cmtt-10">\newacronym[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4779--><p class="noindent" >
+is
+now
+equivalent
+to
+<spacer type=vertical size=10><span class="obeylines-h">
+<br /><span
+class="cmtt-10">\newabbreviation[type=\acronymtype,category=acronym,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<br /><spacer type=vertical size=10></span>
+</p><!--l. 4786--><p class="indent" > The <span
+class="cmtt-10">\newabbreviation </span>command is superficially similar to the <span
+class="cmss-10">glossaries</span>
+package&#8217;s <span
+class="cmtt-10">\newacronym </span>but you can apply different styles to different categories. The
+default style is <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-21012"></a> for entries in the <span
+class="cmss-10">acronym</span><a
+ id="dx1-21013"></a> category and <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-21014"></a> for
+entries in the <span
+class="cmss-10">abbreviation</span><a
+ id="dx1-21015"></a> category. (These aren&#8217;t the same as the acronym
+styles provided by the <span
+class="cmss-10">glossaries </span>package, although they may produce similar
+results.)
+</p><!--l. 4796--><p class="indent" > The way the abbreviations are displayed by commands like <span
+class="cmtt-10">\gls </span>varies according
+to the abbreviation style. The styles are set according to the entry&#8217;s category so,
+unlike the base <span
+class="cmss-10">glossaries </span>package, you can have different abbreviation styles within
+the same glossary.
+</p><!--l. 4802--><p class="indent" > There are two types of full forms. The display full form, which is used on
+<a
+ id="dx1-21016"></a><a
+href="#glo:firstuse">first use</a> by commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-21017"></a> and the inline full form, which is used by
+commands like <span
+class="cmtt-10">\glsxtrfull</span><a
+ id="dx1-21018"></a>. For some of the abbreviation styles, such as
+<a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-21019"></a>, the display and inline forms are the same. In the case of styles
+such as <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-21020"></a> or <a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-21021"></a>, the display and inline full forms are
+different.
+</p><!--l. 4809--><p class="indent" > These formatting commands aren&#8217;t stored in the <span
+class="cmss-10">short</span><a
+ id="dx1-21022"></a>, <span
+class="cmss-10">shortplural</span><a
+ id="dx1-21023"></a>, <span
+class="cmss-10">long</span><a
+ id="dx1-21024"></a> or
+<span
+class="cmss-10">longplural</span><a
+ id="dx1-21025"></a> fields, which means they won&#8217;t be used within commands like
+<span
+class="cmtt-10">\glsentryshort </span>(but they are used within commands like <span
+class="cmtt-10">\glsxtrshort </span>and
+<span
+class="cmtt-10">\glsfmtshort</span>). Note that <span
+class="cmtt-10">\glsxtrlong</span><a
+ id="dx1-21026"></a> and the case-changing variants don&#8217;t use
+<span
+class="cmtt-10">\glsfirstlongfont</span>.
+</p><!--l. 4817--><p class="indent" > You can apply the formatting command used for the short form to some arbitrary
+text using
+</p><!--l. 4819--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuseabbrvfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21027"></a> <span
+class="cmtt-10">\glsuseabbrvfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4821--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">category</span>&#x27E9; is the category label that identifies the abbreviation style. Similarly
+for the formatting command use by the long form:
+</p><!--l. 4825--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuselongfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-21028"></a> <span
+class="cmtt-10">\glsuselongfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4827--><p class="noindent" >
+
+
+
+</p>
+<!--l. 4829--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.1 </span> <a
+ id="sec:tagging"></a>Tagging Initials</h3>
+<!--l. 4832--><p class="noindent" >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
+</p><!--l. 4835--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrEnableInitialTagging</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-22001"></a> <span
+class="cmtt-10">\GlsXtrEnableInitialTagging{</span>&#x27E8;<span
+class="cmitt-10">categories</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4837--><p class="noindent" >
+before you define your abbreviations.
+</p><!--l. 4840--><p class="indent" > This command (robustly) defines &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; (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&#8217;s activated for those categories that have the <a
+href="#catattr.tagging"><span
+class="cmss-10">tagging</span></a><a
+ id="dx1-22002"></a> attribute set to
+&#8220;true&#8221;. For those cases it will use
+</p><!--l. 4847--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrtagfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-22003"></a> <span
+class="cmtt-10">\glsxtrtagfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 4849--><p class="noindent" >
+This command defaults to <span
+class="cmtt-10">\underline</span><a
+ id="dx1-22004"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span>but may be redefined as required.
+</p><!--l. 4853--><p class="indent" > The control sequence &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; can&#8217;t already be defined when used with the unstarred
+version of <span
+class="cmtt-10">\GlsXtrEnableInitialTagging </span>for safety reasons. The starred
+version will overwrite any previous definition of &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9;. As with redefining any
+commands, ensure that you don&#8217;t redefine something important. In fact, just
+forget the existence of the starred version and let&#8217;s pretend I didn&#8217;t mention
+it.
+</p><!--l. 4862--><p class="indent" > The first argument of <span
+class="cmtt-10">\GlsXtrEnableInitialTagging </span>is a comma-separated list
+of category names. The <a
+href="#catattr.tagging"><span
+class="cmss-10">tagging</span></a><a
+ id="dx1-22005"></a> attribute will automatically be set for those
+categories. You can later set this attribute for other categories (see <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5 </a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>) but
+this must be done before the glossary is displayed.
+</p><!--l. 4869--><p class="indent" > The accompanying sample file <span
+class="cmtt-10">sample-mixtures.tex </span>uses initial tagging for both
+the <span
+class="cmss-10">acronym</span><a
+ id="dx1-22006"></a> and <span
+class="cmss-10">abbreviation</span><a
+ id="dx1-22007"></a> categories:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-138">
+\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag}
+</div>
+<!--l. 4874--><p class="nopar" > This defines the command <span
+class="cmtt-10">\itag </span>which can be used in the definitions. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-139">
+\newacronym
+&#x00A0;<br />&#x00A0;[description={a&#x00A0;system&#x00A0;for&#x00A0;detecting&#x00A0;the&#x00A0;location&#x00A0;and
+&#x00A0;<br />&#x00A0;speed&#x00A0;of&#x00A0;ships,&#x00A0;aircraft,&#x00A0;etc,&#x00A0;through&#x00A0;the&#x00A0;use&#x00A0;of&#x00A0;radio
+&#x00A0;<br />&#x00A0;waves}%&#x00A0;description&#x00A0;of&#x00A0;this&#x00A0;term
+&#x00A0;<br />&#x00A0;]
+&#x00A0;<br />&#x00A0;{radar}%&#x00A0;identifying&#x00A0;label
+&#x00A0;<br />&#x00A0;{radar}%&#x00A0;short&#x00A0;form&#x00A0;(i.e.&#x00A0;the&#x00A0;word)
+&#x00A0;<br />&#x00A0;{\itag{ra}dio&#x00A0;\itag{d}etection&#x00A0;\itag{a}nd&#x00A0;\itag{r}anging}
+&#x00A0;<br />\newabbreviation{xml}{XML}
+&#x00A0;<br />&#x00A0;{e\itag{x}tensible&#x00A0;\itag{m}arkup&#x00A0;\itag{l}anguage}
+</div>
+<!--l. 4889--><p class="nopar" > The underlining of the tagged letters only occurs in the glossary and then only for
+entries with the <a
+href="#catattr.tagging"><span
+class="cmss-10">tagging</span></a><a
+ id="dx1-22008"></a> attribute set.
+</p><!--l. 4894--><p class="noindent" >
+</p>
+<!--l. 4894--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.2 </span> <a
+ id="sec:abbrstyle"></a>Abbreviation Styles</h3>
+<!--l. 4897--><p class="noindent" >The abbreviation style must be set before abbreviations are defined using:
+</p><!--l. 4899--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\setabbreviationstyle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23001"></a> <span
+class="cmtt-10">\setabbreviationstyle[</span>&#x27E8;<span
+class="cmitt-10">category</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">style-name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 4901--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">style-name</span>&#x27E9; is the name of the style and &#x27E8;<span
+class="cmti-10">category</span>&#x27E9; is the category label
+(<span
+class="cmtt-10">abbreviation </span>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 <span
+class="cmtt-10">abbreviation </span>category. Some styles may automatically
+modify one or more of the attributes associated with the given category. For
+example, the <a
+href="#abbrstyle.long-noshort"><span
+class="cmss-10">long-noshort</span></a><a
+ id="dx1-23002"></a> and <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-23003"></a> styles set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-23004"></a> attribute to
+<span
+class="cmtt-10">true</span>.
+</p><!--l. 4912--><p class="indent" > <div class="important" title="Important Note"> If you want to apply different styles to groups of abbreviations, assign a
+different category to each group and set the style for the given category.
+</div>
+</p><!--l. 4916--><p class="noindent" >
+</p><!--l. 4918--><p class="indent" > Note that <span
+class="cmtt-10">\setacronymstyle</span><a
+ id="dx1-23005"></a> is disabled by <span
+class="cmss-10">glossaries-extra</span>. Use </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\setabbreviationstyle[acronym]{</span>&#x27E8;<span
+class="cmitt-10">style-name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+
+
+
+</div>
+</div> instead. The original acronym interface can be restored with <span
+class="cmtt-10">\RestoreAcronyms</span><a
+ id="dx1-23006"></a> (see
+<a
+href="#sec:acronymmods"><span
+class="cmsy-10">&sect;</span>2.8 </a><a
+href="#sec:acronymmods">Acronym Style Modifications<!--tex4ht:ref: sec:acronymmods --></a>). However the original acronym interface is
+incompatible with all the commands described here.
+<!--l. 4928--><p class="indent" > Abbreviations can be used with the standard <span
+class="cmss-10">glossaries </span>commands, such as <span
+class="cmtt-10">\gls</span><a
+ id="dx1-23007"></a>,
+but don&#8217;t use the acronym commands like <span
+class="cmtt-10">\acrshort</span><a
+ id="dx1-23008"></a> (which use <span
+class="cmtt-10">\acronymfont</span><a
+ id="dx1-23009"></a>).
+The short form can be produced with:
+</p><!--l. 4932--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23010"></a> <span
+class="cmtt-10">\glsxtrshort[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4934--><p class="noindent" >
+(Use this instead of <span
+class="cmtt-10">\acrshort</span><a
+ id="dx1-23011"></a>.)
+</p><!--l. 4937--><p class="indent" > The long form can be produced with
+</p><!--l. 4938--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23012"></a> <span
+class="cmtt-10">\glsxtrlong[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4940--><p class="noindent" >
+(Use this instead of <span
+class="cmtt-10">\acrlong</span><a
+ id="dx1-23013"></a>.)
+</p><!--l. 4943--><p class="indent" > The <span
+class="cmti-10">inline </span>full form can be produced with
+</p><!--l. 4944--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23014"></a> <span
+class="cmtt-10">\glsxtrfull[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4946--><p class="noindent" >
+(This this instead of <span
+class="cmtt-10">\acrfull</span><a
+ id="dx1-23015"></a>.)
+</p><!--l. 4949--><p class="indent" > <div class="important" title="Important Note"> In general, it&#8217;s best not to use commands like <span
+class="cmtt-10">\glsfirst</span><a
+ id="dx1-23016"></a> for abbreviations,
+especially if you use the &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; optional argument. Use either <span
+class="cmtt-10">\gls </span>(possibly with a
+reset) or <span
+class="cmtt-10">\glsxtrfull</span>. </div>
+</p><!--l. 4954--><p class="noindent" >
+</p><!--l. 4956--><p class="indent" > As mentioned earlier, the inline full form may not necessarily match the format
+used on <a
+ id="dx1-23017"></a><a
+href="#glo:firstuse">first use</a> with <span
+class="cmtt-10">\gls</span>. For example, the <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-23018"></a> style only displays the
+short form on <a
+ id="dx1-23019"></a>first use, but the full form will display the long form followed by the
+short form in parentheses.
+</p><!--l. 4963--><p class="indent" > <div class="important" title="Important Note"> If you want to use an abbreviation in a chapter or section title, use the
+commands described in <a
+href="#sec:headtitle"><span
+class="cmsy-10">&sect;</span>4 </a><a
+href="#sec:headtitle">Entries in Sectioning Titles, Headers, Captions and
+Contents<!--tex4ht:ref: sec:headtitle --></a> instead. </div>
+</p><!--l. 4967--><p class="noindent" >
+</p><!--l. 4969--><p class="indent" > The arguments &#x27E8;<span
+class="cmti-10">options</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; are the same as for commands such as
+<span
+class="cmtt-10">\glstext</span>. There are also analogous case-changing commands:
+</p><!--l. 4973--><p class="indent" > First letter upper case short form:
+</p><!--l. 4974--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23020"></a> <span
+class="cmtt-10">\Glsxtrshort[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4976--><p class="noindent" >
+</p><!--l. 4978--><p class="indent" > First letter upper case long form:
+</p><!--l. 4979--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23021"></a> <span
+class="cmtt-10">\Glsxtrlong[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4981--><p class="noindent" >
+</p><!--l. 4983--><p class="indent" > First letter upper case inline full form:
+</p><!--l. 4984--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23022"></a> <span
+class="cmtt-10">\Glsxtrfull[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4986--><p class="noindent" >
+</p><!--l. 4988--><p class="indent" > All upper case short form:
+
+
+
+</p><!--l. 4989--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23023"></a> <span
+class="cmtt-10">\GLSxtrshort[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4991--><p class="noindent" >
+</p><!--l. 4993--><p class="indent" > All upper case long form:
+</p><!--l. 4994--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23024"></a> <span
+class="cmtt-10">\GLSxtrlong[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 4996--><p class="noindent" >
+</p><!--l. 4998--><p class="indent" > All upper case inline full form:
+</p><!--l. 4999--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSxtrfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23025"></a> <span
+class="cmtt-10">\GLSxtrfull[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5001--><p class="noindent" >
+</p><!--l. 5003--><p class="indent" > Plural forms are also available.
+</p><!--l. 5005--><p class="indent" > Short form plurals:
+</p><!--l. 5006--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23026"></a> <span
+class="cmtt-10">\glsxtrshortpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5008--><p class="noindent" >
+</p><!--l. 5009--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23027"></a> <span
+class="cmtt-10">\Glsxtrshortpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5011--><p class="noindent" >
+</p><!--l. 5012--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSxtrshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23028"></a> <span
+class="cmtt-10">\GLSxtrshortpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5014--><p class="noindent" >
+</p><!--l. 5016--><p class="indent" > Long form plurals:
+</p><!--l. 5017--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23029"></a> <span
+class="cmtt-10">\glsxtrlongpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5019--><p class="noindent" >
+</p><!--l. 5020--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrlongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23030"></a> <span
+class="cmtt-10">\Glsxtrlongpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5022--><p class="noindent" >
+</p><!--l. 5023--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSxtrlongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23031"></a> <span
+class="cmtt-10">\GLSxtrlongpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5025--><p class="noindent" >
+</p><!--l. 5027--><p class="indent" > Full form plurals:
+</p><!--l. 5028--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23032"></a> <span
+class="cmtt-10">\glsxtrfullpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5030--><p class="noindent" >
+</p><!--l. 5031--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23033"></a> <span
+class="cmtt-10">\Glsxtrfullpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5033--><p class="noindent" >
+</p><!--l. 5034--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSxtrfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-23034"></a> <span
+class="cmtt-10">\GLSxtrfullpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 5036--><p class="noindent" >
+</p><!--l. 5038--><p class="indent" > <div class="important" title="Important Note"> Be careful about using <span
+class="cmtt-10">\glsentryfull</span>, <span
+class="cmtt-10">\Glsentryfull</span>, <span
+class="cmtt-10">\glsentryfullpl </span>and
+<span
+class="cmtt-10">\Glsentryfullpl</span>. These commands will use the currently applied style rather
+than the style in use when the entry was defined. If you have mixed styles,
+you&#8217;ll need to use <span
+class="cmtt-10">\glsxtrfull</span><a
+ id="dx1-23035"></a> instead. Similarly for <span
+class="cmtt-10">\glsentryshort </span>etc.
+
+
+
+</div>
+</p><!--l. 5044--><p class="noindent" >
+</p><!--l. 5046--><p class="noindent" >
+</p>
+<!--l. 5046--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.3 </span> <a
+ id="sec:abbrshortcuts"></a>Shortcut Commands</h3>
+<!--l. 5049--><p class="noindent" >The abbreviation shortcut commands can be enabled using the package option
+<a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=abbreviation</span><a
+ id="dx1-24001"></a> (or <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=abbr</span><a
+ id="dx1-24002"></a>) or <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=ac</span><a
+ id="dx1-24003"></a>. (You can use
+both settings at the same time.) The provided shortcut commands listed in
+<a
+href="#tab:abbrshortcuts">table&#x00A0;3.1</a>.
+</p>
+ <div class="table">
+
+
+
+<!--l. 5056--><p class="indent" > <a
+ id="tab:abbrshortcuts"></a></p><hr class="float" /><div class="float"
+>
+
+
+
+ <div class="caption"
+><span class="id">Table&#x00A0;3.1: </span><span
+class="content">Abbreviation Shortcut Commands</span></div><!--tex4ht:label?: x1-240041 -->
+<div class="tabular"> <table id="TBL-3" class="tabular"
+cellspacing="0" cellpadding="0"
+><colgroup id="TBL-3-1g"><col
+id="TBL-3-1" /><col
+id="TBL-3-2" /><col
+id="TBL-3-3" /></colgroup><tr
+ style="vertical-align:baseline;" id="TBL-3-1-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-1"
+class="td11"><span
+class="cmbx-10">Shortcut </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-2"
+class="td11"><span
+class="cmbx-10">Shortcut </span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-1-3"
+class="td11"><span
+class="cmbx-10">Equivalent Command</span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-2-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-1"
+class="td11"><span
+class="cmbx-10">(</span><a
+href="#styopt.shortcuts"><span
+class="cmssbx-10">shortcuts</span></a><span
+class="cmssbx-10">=abbreviation</span><a
+ id="dx1-24005"></a><span
+class="cmbx-10">)</span></td><td style="white-space:nowrap; text-align:left;" id="TBL-3-2-2"
+class="td11"><span
+class="cmbx-10">(</span><a
+href="#styopt.shortcuts"><span
+class="cmssbx-10">shortcuts</span></a><span
+class="cmssbx-10">=ac</span><a
+ id="dx1-24006"></a><span
+class="cmbx-10">)</span></td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-3-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-1"
+class="td11"><span
+class="cmtt-10">\ab</span><a
+ id="dx1-24007"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-2"
+class="td11"><span
+class="cmtt-10">\ac</span><a
+ id="dx1-24008"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-3-3"
+class="td11"><span
+class="cmtt-10">\cgls</span><a
+ id="dx1-24009"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-4-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-1"
+class="td11"><span
+class="cmtt-10">\abp</span><a
+ id="dx1-24010"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-2"
+class="td11"><span
+class="cmtt-10">\acp</span><a
+ id="dx1-24011"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-4-3"
+class="td11"><span
+class="cmtt-10">\cglspl</span><a
+ id="dx1-24012"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-5-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-1"
+class="td11"><span
+class="cmtt-10">\as</span><a
+ id="dx1-24013"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-2"
+class="td11"><span
+class="cmtt-10">\acs</span><a
+ id="dx1-24014"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-5-3"
+class="td11"><span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-24015"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-6-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-1"
+class="td11"><span
+class="cmtt-10">\asp</span><a
+ id="dx1-24016"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-2"
+class="td11"><span
+class="cmtt-10">\acsp</span><a
+ id="dx1-24017"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-6-3"
+class="td11"><span
+class="cmtt-10">\glsxtrshortpl</span><a
+ id="dx1-24018"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-7-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-1"
+class="td11"><span
+class="cmtt-10">\al</span><a
+ id="dx1-24019"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-2"
+class="td11"><span
+class="cmtt-10">\acl</span><a
+ id="dx1-24020"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-7-3"
+class="td11"><span
+class="cmtt-10">\glsxtrlong</span><a
+ id="dx1-24021"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-8-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-1"
+class="td11"><span
+class="cmtt-10">\alp</span><a
+ id="dx1-24022"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-2"
+class="td11"><span
+class="cmtt-10">\aclp</span><a
+ id="dx1-24023"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-8-3"
+class="td11"><span
+class="cmtt-10">\glsxtrlongpl</span><a
+ id="dx1-24024"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-9-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-9-1"
+class="td11"><span
+class="cmtt-10">\af</span><a
+ id="dx1-24025"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-9-2"
+class="td11"><span
+class="cmtt-10">\acf</span><a
+ id="dx1-24026"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-9-3"
+class="td11"><span
+class="cmtt-10">\glsxtrfull</span><a
+ id="dx1-24027"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-10-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-10-1"
+class="td11"><span
+class="cmtt-10">\afp</span><a
+ id="dx1-24028"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-10-2"
+class="td11"><span
+class="cmtt-10">\acfp</span><a
+ id="dx1-24029"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-10-3"
+class="td11"><span
+class="cmtt-10">\glsxtrfullpl</span><a
+ id="dx1-24030"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-11-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-1"
+class="td11"><span
+class="cmtt-10">\Ab</span><a
+ id="dx1-24031"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-2"
+class="td11"><span
+class="cmtt-10">\Ac</span><a
+ id="dx1-24032"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-11-3"
+class="td11"><span
+class="cmtt-10">\cgls</span><a
+ id="dx1-24033"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-12-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-12-1"
+class="td11"><span
+class="cmtt-10">\Abp</span><a
+ id="dx1-24034"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-12-2"
+class="td11"><span
+class="cmtt-10">\Acp</span><a
+ id="dx1-24035"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-12-3"
+class="td11"><span
+class="cmtt-10">\cglspl</span><a
+ id="dx1-24036"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-13-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-13-1"
+class="td11"><span
+class="cmtt-10">\As</span><a
+ id="dx1-24037"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-13-2"
+class="td11"><span
+class="cmtt-10">\Acs</span><a
+ id="dx1-24038"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-13-3"
+class="td11"><span
+class="cmtt-10">\Glsxtrshort</span><a
+ id="dx1-24039"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-14-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-14-1"
+class="td11"><span
+class="cmtt-10">\Asp</span><a
+ id="dx1-24040"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-14-2"
+class="td11"><span
+class="cmtt-10">\Acsp</span><a
+ id="dx1-24041"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-14-3"
+class="td11"><span
+class="cmtt-10">\Glsxtrshortpl</span><a
+ id="dx1-24042"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-15-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-15-1"
+class="td11"><span
+class="cmtt-10">\Al</span><a
+ id="dx1-24043"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-15-2"
+class="td11"><span
+class="cmtt-10">\Acl</span><a
+ id="dx1-24044"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-15-3"
+class="td11"><span
+class="cmtt-10">\Glsxtrlong</span><a
+ id="dx1-24045"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-16-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-16-1"
+class="td11"><span
+class="cmtt-10">\Alp</span><a
+ id="dx1-24046"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-16-2"
+class="td11"><span
+class="cmtt-10">\Aclp</span><a
+ id="dx1-24047"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-16-3"
+class="td11"><span
+class="cmtt-10">\Glsxtrlongpl</span><a
+ id="dx1-24048"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-17-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-17-1"
+class="td11"><span
+class="cmtt-10">\Af</span><a
+ id="dx1-24049"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-17-2"
+class="td11"><span
+class="cmtt-10">\Acf</span><a
+ id="dx1-24050"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-17-3"
+class="td11"><span
+class="cmtt-10">\Glsxtrfull</span><a
+ id="dx1-24051"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-18-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-18-1"
+class="td11"><span
+class="cmtt-10">\Afp</span><a
+ id="dx1-24052"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-18-2"
+class="td11"><span
+class="cmtt-10">\Acfp</span><a
+ id="dx1-24053"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-18-3"
+class="td11"><span
+class="cmtt-10">\Glsxtrfullpl</span><a
+ id="dx1-24054"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-19-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-19-1"
+class="td11"><span
+class="cmtt-10">\AB</span><a
+ id="dx1-24055"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-19-2"
+class="td11"><span
+class="cmtt-10">\AC</span><a
+ id="dx1-24056"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-19-3"
+class="td11"><span
+class="cmtt-10">\cGLS</span><a
+ id="dx1-24057"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-20-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-20-1"
+class="td11"><span
+class="cmtt-10">\ABP</span><a
+ id="dx1-24058"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-20-2"
+class="td11"><span
+class="cmtt-10">\ACP</span><a
+ id="dx1-24059"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-20-3"
+class="td11"><span
+class="cmtt-10">\cGLSpl</span><a
+ id="dx1-24060"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-21-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-21-1"
+class="td11"><span
+class="cmtt-10">\AS</span><a
+ id="dx1-24061"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-21-2"
+class="td11"><span
+class="cmtt-10">\ACS</span><a
+ id="dx1-24062"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-21-3"
+class="td11"><span
+class="cmtt-10">\GLSxtrshort</span><a
+ id="dx1-24063"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-22-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-22-1"
+class="td11"><span
+class="cmtt-10">\ASP</span><a
+ id="dx1-24064"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-22-2"
+class="td11"><span
+class="cmtt-10">\ACSP</span><a
+ id="dx1-24065"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-22-3"
+class="td11"><span
+class="cmtt-10">\GLSxtrshortpl</span><a
+ id="dx1-24066"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-23-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-23-1"
+class="td11"><span
+class="cmtt-10">\AL</span><a
+ id="dx1-24067"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-23-2"
+class="td11"><span
+class="cmtt-10">\ACL</span><a
+ id="dx1-24068"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-23-3"
+class="td11"><span
+class="cmtt-10">\GLSxtrlong</span><a
+ id="dx1-24069"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-24-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-24-1"
+class="td11"><span
+class="cmtt-10">\ALP</span><a
+ id="dx1-24070"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-24-2"
+class="td11"><span
+class="cmtt-10">\ACLP</span><a
+ id="dx1-24071"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-24-3"
+class="td11"><span
+class="cmtt-10">\GLSxtrlongpl</span><a
+ id="dx1-24072"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-25-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-25-1"
+class="td11"><span
+class="cmtt-10">\AF</span><a
+ id="dx1-24073"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-25-2"
+class="td11"><span
+class="cmtt-10">\ACF</span><a
+ id="dx1-24074"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-25-3"
+class="td11"><span
+class="cmtt-10">\GLSxtrfull</span><a
+ id="dx1-24075"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-26-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-26-1"
+class="td11"><span
+class="cmtt-10">\AFP</span><a
+ id="dx1-24076"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-26-2"
+class="td11"><span
+class="cmtt-10">\ACFP</span><a
+ id="dx1-24077"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-26-3"
+class="td11"><span
+class="cmtt-10">\GLSxtrfullpl</span><a
+ id="dx1-24078"></a> </td>
+</tr><tr
+ style="vertical-align:baseline;" id="TBL-3-27-"><td style="white-space:nowrap; text-align:left;" id="TBL-3-27-1"
+class="td11"><span
+class="cmtt-10">\newabbr</span><a
+ id="dx1-24079"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-27-2"
+class="td11"><span
+class="cmtt-10">\newabbr</span><a
+ id="dx1-24080"></a> </td><td style="white-space:nowrap; text-align:left;" id="TBL-3-27-3"
+class="td11"><span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-24081"></a> </td></tr></table></div>
+
+
+
+ </div><hr class="endfloat" />
+ </div>
+<!--l. 5094--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.4 </span> <a
+ id="sec:predefabbrvstyles"></a>Predefined Abbreviation Styles</h3>
+<!--l. 5097--><p class="noindent" >There are two types of abbreviation styles: those that treat the abbreviation as a
+regular entry (so that <span
+class="cmtt-10">\gls</span><a
+ id="dx1-25001"></a> uses <span
+class="cmtt-10">\glsgenentryfmt</span><a
+ id="dx1-25002"></a>) and those that don&#8217;t treat the
+abbreviation as a regular entry (so that <span
+class="cmtt-10">\gls</span><a
+ id="dx1-25003"></a> uses <span
+class="cmtt-10">\glsxtrgenabbrvfmt</span><a
+ id="dx1-25004"></a>).
+</p><!--l. 5102--><p class="indent" > The regular entry abbreviation styles set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-25005"></a> attribute to &#8220;true&#8221; for the
+category assigned to each abbreviation with that style. This means that on <a
+ id="dx1-25006"></a><a
+href="#glo:firstuse">first use</a>,
+<span
+class="cmtt-10">\gls</span><a
+ id="dx1-25007"></a> uses the value of the <span
+class="cmss-10">first</span><a
+ id="dx1-25008"></a> field and on subsequent use <span
+class="cmtt-10">\gls</span><a
+ id="dx1-25009"></a> uses the value of the
+<span
+class="cmss-10">text</span><a
+ id="dx1-25010"></a> field (and analogously for the plural and case-changing versions). The <span
+class="cmss-10">short</span><a
+ id="dx1-25011"></a> and
+<span
+class="cmss-10">long</span><a
+ id="dx1-25012"></a> fields are set as appropriate and may be accessed through commands like
+<span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-25013"></a>.
+</p><!--l. 5111--><p class="indent" > The other abbreviation styles don&#8217;t modify the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-25014"></a> attribute. The <span
+class="cmss-10">first</span><a
+ id="dx1-25015"></a>
+and <span
+class="cmss-10">text</span><a
+ id="dx1-25016"></a> fields (and their plural forms) are set and can be accessed through
+commands like <span
+class="cmtt-10">\glsfirst</span>, but they aren&#8217;t used by commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-25017"></a>, which
+instead use the short form (stored in the <span
+class="cmss-10">short</span><a
+ id="dx1-25018"></a> key) and the display full
+format (through commands like <span
+class="cmtt-10">\glsxtrfullformat</span><a
+ id="dx1-25019"></a> that are defined by the
+style).
+</p><!--l. 5119--><p class="indent" > In both cases, the <a
+ id="dx1-25020"></a>first use of <span
+class="cmtt-10">\gls</span><a
+ id="dx1-25021"></a> may not match the text produced by
+<span
+class="cmtt-10">\glsfirst</span><a
+ id="dx1-25022"></a> (and likewise for the plural and case-changing versions).
+</p><!--l. 5123--><p class="indent" > The sample file <span
+class="cmtt-10">sample-abbr-styles.tex </span>demonstrates all predefined styles
+described here.
+</p><!--l. 5126--><p class="indent" > <div class="important" title="Important Note"> For the &#8220;sc&#8221; styles that use <span
+class="cmtt-10">\textsc</span><a
+ id="dx1-25023"></a>, be careful about your choice of fonts as
+some only have limited support. For example, you may not be able to combine bold
+and small-caps. I recommend that you at least use the <span
+class="cmss-10">fontenc</span><a
+ id="dx1-25024"></a> package with the <span
+class="cmss-10">T1</span>
+option or something similar. </div>
+</p><!--l. 5132--><p class="noindent" >
+</p><!--l. 5134--><p class="indent" > The parenthetical styles, such as <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-25025"></a>, use
+</p><!--l. 5136--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrparen</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25026"></a> <span
+class="cmtt-10">\glsxtrparen{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5138--><p class="noindent" >
+to set the parenthetical material. This just puts parentheses around the text:
+(&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;).
+</p><!--l. 5142--><p class="indent" > The basic abbreviation styles, such as <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-25027"></a> and <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-25028"></a> use
+</p><!--l. 5144--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvdefaultfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25029"></a> <span
+class="cmtt-10">\glsabbrvdefaultfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5146--><p class="noindent" >
+for the short form. This just does &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; by default. (That is, no font change is
+applied.) On first use,
+</p><!--l. 5149--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstabbrvdefaultfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25030"></a> <span
+class="cmtt-10">\glsfirstabbrvdefaultfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5151--><p class="noindent" >
+is used instead. By default, this just does <span
+class="cmtt-10">\glsabbrvdefaultfont</span>. The long form is
+formatted according to
+</p><!--l. 5154--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongdefaultfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25031"></a> <span
+class="cmtt-10">\glslongdefaultfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 5156--><p class="noindent" >
+which again just does &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; (no font change). On first use,
+</p><!--l. 5158--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstlongdefaultfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25032"></a> <span
+class="cmtt-10">\glsfirstlongdefaultfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5160--><p class="noindent" >
+is used instead. This just does <span
+class="cmtt-10">\glslongdefaultfont</span>. The plural suffix used for the
+short form is given by
+</p><!--l. 5163--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrabbrvpluralsuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25033"></a> <span
+class="cmtt-10">\glsxtrabbrvpluralsuffix </span></div><hr>
+</p><!--l. 5165--><p class="noindent" >
+which defaults to <span
+class="cmtt-10">\glspluralsuffix</span><a
+ id="dx1-25034"></a>.
+</p><!--l. 5168--><p class="indent" > The small-cap styles, such as <a
+href="#abbrstyle.long-short-sc"><span
+class="cmss-10">long-short-sc</span></a><a
+ id="dx1-25035"></a> and <a
+href="#abbrstyle.short-sc-long"><span
+class="cmss-10">short-sc-long</span></a><a
+ id="dx1-25036"></a>, use
+</p><!--l. 5170--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvscfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25037"></a> <span
+class="cmtt-10">\glsabbrvscfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5172--><p class="noindent" >
+which uses <span
+class="cmtt-10">\textsc</span>.<span class="footnote-mark"><a
+href="#fn1x3" id="fn1x3-bk"><sup class="textsuperscript">3.1</sup></a></span><a
+ id="x1-25038f1"></a>
+On first use
+</p><!--l. 5178--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvdefaultfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25039"></a> <span
+class="cmtt-10">\glsfirstabbrvscfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5180--><p class="noindent" >
+is used instead. This uses <span
+class="cmtt-10">\glsabbrvscfont </span>by default. So redefine, <span
+class="cmtt-10">\glsabbrvscfont</span>
+to change first and subsequent uses or <span
+class="cmtt-10">\glsfirstabbrvscfont </span>to change just the
+first use.
+</p><!--l. 5185--><p class="indent" > The long form for the small-cap styles uses <span
+class="cmtt-10">\glslongdefaultfont </span>or
+<span
+class="cmtt-10">\glsfirstlongdefaultfont</span>, as with the basic style. The suffix is given
+by
+</p><!--l. 5188--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrscsuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25040"></a> <span
+class="cmtt-10">\glsxtrscsuffix </span></div><hr>
+</p><!--l. 5190--><p class="noindent" >
+This is defined as
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-140">
+\newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}}
+</div>
+<!--l. 5194--><p class="nopar" > The <span
+class="cmtt-10">\glstextup</span><a
+ id="dx1-25041"></a> command is provided by <span
+class="cmss-10">glossaries </span>and is used to switch off the
+small caps font for the suffix. If you override the default short plural using the
+<span
+class="cmss-10">shortplural</span><a
+ id="dx1-25042"></a> 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 <a
+href="#catattr.aposplural"><span
+class="cmss-10">aposplural</span></a><a
+ id="dx1-25043"></a> and <a
+href="#catattr.noshortplural"><span
+class="cmss-10">noshortplural</span></a><a
+ id="dx1-25044"></a>
+attributes. See <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5 </a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a> for further details.)
+</p><!--l. 5205--><p class="indent" > The small styles, such as <a
+href="#abbrstyle.long-short-sm"><span
+class="cmss-10">long-short-sm</span></a><a
+ id="dx1-25045"></a> and <a
+href="#abbrstyle.short-sm-long"><span
+class="cmss-10">short-sm-long</span></a><a
+ id="dx1-25046"></a>, use
+</p><!--l. 5207--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvsmfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25047"></a> <span
+class="cmtt-10">\glsabbrvsmfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5209--><p class="noindent" >
+which uses <span
+class="cmtt-10">\textsmaller</span>. (This requires the <span
+class="cmss-10">relsizes</span><a
+ id="dx1-25048"></a> package, which isn&#8217;t loaded by
+<span
+class="cmss-10">glossaries-extra</span>, so must be loaded explicitly.) On first use
+</p><!--l. 5214--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstabbrvsmfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25049"></a> <span
+class="cmtt-10">\glsfirstabbrvsmfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5216--><p class="noindent" >
+is used instead. This uses <span
+class="cmtt-10">\glsabbrvsmfont </span>by default.
+</p><!--l. 5219--><p class="indent" > The long form for the smaller styles uses <span
+class="cmtt-10">\glslongdefaultfont </span>or
+<span
+class="cmtt-10">\glsfirstlongdefaultfont</span>, as with the basic style. The suffix is given
+by
+</p><!--l. 5222--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsmsuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25050"></a> <span
+class="cmtt-10">\glsxtrsmsuffix </span></div><hr>
+</p><!--l. 5224--><p class="noindent" >
+which defaults to just <span
+class="cmtt-10">\glsxtrabbrvpluralsuffix</span>.
+</p><!--l. 5227--><p class="indent" > The &#8220;short-em&#8221; (emphasize short) styles, such as <a
+href="#abbrstyle.long-short-em"><span
+class="cmss-10">long-short-em</span></a><a
+ id="dx1-25051"></a> or <a
+href="#abbrstyle.short-em-long"><span
+class="cmss-10">short-em-long</span></a><a
+ id="dx1-25052"></a>,
+use
+</p><!--l. 5229--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvemfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25053"></a> <span
+class="cmtt-10">\glsabbrvemfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5231--><p class="noindent" >
+On first use
+</p><!--l. 5233--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstabbrvemfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25054"></a> <span
+class="cmtt-10">\glsfirstabbrvemfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5235--><p class="noindent" >
+is used instead. This uses <span
+class="cmtt-10">\glsabbrvemfont </span>by default. The suffix is given
+by
+</p><!--l. 5238--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtremsuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25055"></a> <span
+class="cmtt-10">\glsxtremsuffix </span></div><hr>
+</p><!--l. 5240--><p class="noindent" >
+which defaults to just <span
+class="cmtt-10">\glsxtrabbrvpluralsuffix</span>. The long form is as for the basic
+style unless the style is a &#8220;long-em&#8221; style.
+</p><!--l. 5245--><p class="indent" > The &#8220;long-em&#8221; (emphasize long) styles, such as <a
+href="#abbrstyle.long-em-short-em"><span
+class="cmss-10">long-em-short-em</span></a><a
+ id="dx1-25056"></a> or <a
+href="#abbrstyle.short-em-long-em"><span
+class="cmss-10">short-em-long-em</span></a><a
+ id="dx1-25057"></a>,
+use
+</p><!--l. 5247--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstlongemfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25058"></a> <span
+class="cmtt-10">\glsfirstlongemfont{</span>&#x27E8;<span
+class="cmitt-10">long-form</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5249--><p class="noindent" >
+instead of <span
+class="cmtt-10">\glsfirstlongdefaultfont{</span>&#x27E8;<span
+class="cmti-10">long-form</span>&#x27E9;<span
+class="cmtt-10">} </span>and
+</p><!--l. 5251--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongemfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25059"></a> <span
+class="cmtt-10">\glslongemfont{</span>&#x27E8;<span
+class="cmitt-10">long-form</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 5253--><p class="noindent" >
+instead of <span
+class="cmtt-10">\glslongdefaultfont{</span>&#x27E8;<span
+class="cmti-10">long-form</span>&#x27E9;<span
+class="cmtt-10">}</span>. The first form <span
+class="cmtt-10">\glsfirstlongemfont</span>
+is initialised to use <span
+class="cmtt-10">\glslongemfont</span>.
+</p><!--l. 5257--><p class="indent" > The user styles have similar commands:
+</p><!--l. 5258--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvuserfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25060"></a> <span
+class="cmtt-10">\glsabbrvuserfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5260--><p class="noindent" >
+for the short form,
+</p><!--l. 5262--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstabbrvuserfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25061"></a> <span
+class="cmtt-10">\glsfirstabbrvuserfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5264--><p class="noindent" >
+for the first use short form,
+</p><!--l. 5266--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslonguserfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25062"></a> <span
+class="cmtt-10">\glslonguserfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5268--><p class="noindent" >
+for the long form,
+</p><!--l. 5270--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstlonguserfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25063"></a> <span
+class="cmtt-10">\glsfirstlonguserfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5272--><p class="noindent" >
+for the first use long form, and
+</p><!--l. 5274--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrusersuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25064"></a> <span
+class="cmtt-10">\glsxtrusersuffix </span></div><hr>
+</p><!--l. 5276--><p class="noindent" >
+for the short plural suffix.
+</p><!--l. 5279--><p class="indent" > Similarly for the hyphen styles:
+</p><!--l. 5280--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvhyphenfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25065"></a> <span
+class="cmtt-10">\glsabbrvhyphenfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5282--><p class="noindent" >
+for the short form,
+</p><!--l. 5284--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstabbrvhyphenfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25066"></a> <span
+class="cmtt-10">\glsfirstabbrvhyphenfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5286--><p class="noindent" >
+for the first use short form,
+</p><!--l. 5288--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslonghyphenfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25067"></a> <span
+class="cmtt-10">\glslonghyphenfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5290--><p class="noindent" >
+for the long form,
+</p><!--l. 5292--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstlonghyphenfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25068"></a> <span
+class="cmtt-10">\glsfirstlonghyphenfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5294--><p class="noindent" >
+for the first use long form, and
+</p><!--l. 5296--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrhyphensuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25069"></a> <span
+class="cmtt-10">\glsxtrhyphensuffix </span></div><hr>
+</p><!--l. 5298--><p class="noindent" >
+for the short plural suffix.
+</p><!--l. 5301--><p class="indent" > Similarly for the &#8220;only&#8221; styles, such as <a
+href="#abbrstyle.long-only-short-only"><span
+class="cmss-10">long-only-short-only</span></a><a
+ id="dx1-25070"></a>:
+</p><!--l. 5303--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvonlyfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25071"></a> <span
+class="cmtt-10">\glsabbrvonlyfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5305--><p class="noindent" >
+for the short form,
+</p><!--l. 5307--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstabbrvonlyfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25072"></a> <span
+class="cmtt-10">\glsfirstabbrvonlyfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5309--><p class="noindent" >
+for the first use short form,
+</p><!--l. 5311--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongonlyfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25073"></a> <span
+class="cmtt-10">\glslongonlyfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5313--><p class="noindent" >
+for the long form,
+</p><!--l. 5315--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstlongonlyfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25074"></a> <span
+class="cmtt-10">\glsfirstlongonlyfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 5317--><p class="noindent" >
+for the first use long form, and
+</p><!--l. 5319--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtronlysuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25075"></a> <span
+class="cmtt-10">\glsxtronlysuffix </span></div><hr>
+</p><!--l. 5321--><p class="noindent" >
+for the short plural suffix.
+</p><!--l. 5324--><p class="indent" > Note that by default inserted material (provided in the final optional argument of
+commands like <span
+class="cmtt-10">\gls</span>), is placed outside the font command in the predefined styles. To
+move it inside, use:
+</p><!--l. 5327--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrinsertinsidetrue</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25076"></a> <span
+class="cmtt-10">\glsxtrinsertinsidetrue </span></div><hr>
+</p><!--l. 5329--><p class="noindent" >
+This applies to all the predefined styles. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-141">
+\setabbreviationstyle{long-short}
+&#x00A0;<br />\renewcommand*{\glsfirstlongdefaultfont}[1]{\emph{#1}}
+&#x00A0;<br />\glsxtrinsertinsidetrue
+</div>
+<!--l. 5335--><p class="nopar" > This will make the long form and the inserted text emphasized, whereas the default
+(without <span
+class="cmtt-10">\glsxtrinsertinsidetrue</span>) would place the inserted text outside of the
+emphasized font.
+</p><!--l. 5340--><p class="indent" > Note that for some styles, such as the <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-25077"></a>, the inserted text would be
+placed inside the font command for the short form (rather than the long form in the
+above example).
+</p><!--l. 5344--><p class="indent" > Remember that <span
+class="cmtt-10">\textsc </span>renders <span
+class="cmti-10">lowercase </span>letters as small capitals. Uppercase
+letters are rendered as normal uppercase letters, so if you specify the short form in
+uppercase, you won&#8217;t get small capitals unless you redefine <span
+class="cmtt-10">\glsabbrvscfont </span>to
+convert its argument to lowercase. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-142">
+\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeLowercase{#1}}}
+</div>
+<!--l. 5351--><p class="nopar" >
+</p><!--l. 5353--><p class="indent" > If you want to easily switch between the &#8220;sc&#8221; and &#8220;sm&#8221; styles, you may find it
+easier to redefine this command to convert case:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-143">
+\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeTextLowercase{#1}}}
+&#x00A0;<br />\renewcommand*{\glsabbrvsmfont}[1]{\textsmaller{\MakeTextUppercase{#1}}}
+</div>
+<!--l. 5359--><p class="nopar" >
+</p><!--l. 5361--><p class="indent" > Some of the styles use
+</p><!--l. 5362--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfullsep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25078"></a> <span
+class="cmtt-10">\glsxtrfullsep{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5364--><p class="noindent" >
+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:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-144">
+\renewcommand*{\glsxtrfullsep}[1]{~}
+</div>
+<!--l. 5369--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-145">
+\renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}}
+</div>
+<!--l. 5373--><p class="nopar" >
+</p><!--l. 5375--><p class="indent" > The new naming scheme for abbreviation styles is as follows: </p>
+ <ul class="itemize1">
+ <li class="itemize">&#x27E8;<span
+class="cmti-10">field1</span>&#x27E9;[<span
+class="cmtt-10">-</span>&#x27E8;<span
+class="cmti-10">modifier1</span>&#x27E9;]<span
+class="cmtt-10">-</span>[post]&#x27E8;<span
+class="cmti-10">field2</span>&#x27E9;[<span
+class="cmtt-10">-</span>&#x27E8;<span
+class="cmti-10">modifier2</span>&#x27E9;][<span
+class="cmtt-10">-user</span>]
+ <!--l. 5380--><p class="noindent" >This is for the parenthetical styles. The <span
+class="cmtt-10">-</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9; parts may be omitted.
+ These styles display &#x27E8;<span
+class="cmti-10">field1</span>&#x27E9; followed by &#x27E8;<span
+class="cmti-10">field2</span>&#x27E9; in parentheses. If &#x27E8;<span
+class="cmti-10">field1</span>&#x27E9; or
+ &#x27E8;<span
+class="cmti-10">field2</span>&#x27E9; starts with &#8220;no&#8221; then that element is omitted from the display style
+ (no parenthetical part) but is included in the inline style.
+ </p><!--l. 5386--><p class="noindent" >If the <span
+class="cmtt-10">-</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9; part is present, then the field has a font changing command
+ applied to it. The special modifier <span
+class="cmtt-10">-only </span>indicates that field is only present
+ according to whether or not the entry has been used.
+ </p><!--l. 5391--><p class="noindent" >If <span
+class="cmtt-10">post </span>is present then &#x27E8;<span
+class="cmti-10">field2</span>&#x27E9; is placed after the <a
+ id="dx1-25079"></a><a
+href="#glo:linktext">link-text</a> using the
+ post-link hook.
+ </p><!--l. 5394--><p class="noindent" >If the <span
+class="cmtt-10">-user </span>part is present, then the <span
+class="cmss-10">user1</span><a
+ id="dx1-25080"></a> value, if provided, is inserted
+ into the parenthetical material . (The field used for the inserted material
+ may be changed.)
+ </p><!--l. 5398--><p class="noindent" >Examples: </p>
+ <ul class="itemize2">
+ <li class="itemize"><a
+href="#abbrstyle.long-noshort-sc"><span
+class="cmss-10">long-noshort-sc</span></a><a
+ id="dx1-25081"></a>: &#x27E8;<span
+class="cmti-10">field1</span>&#x27E9; is the long form, the short form is set in
+ smallcaps but omitted in the display style.
+ </li>
+ <li class="itemize"><a
+href="#abbrstyle.long-em-short-em"><span
+class="cmss-10">long-em-short-em</span></a><a
+ id="dx1-25082"></a>: both the long form and the short form are
+ emphasized. The short form is in parentheses.
+ </li>
+ <li class="itemize"><a
+href="#abbrstyle.long-short-em"><span
+class="cmss-10">long-short-em</span></a><a
+ id="dx1-25083"></a>: the short form is emphasized but not the long form.
+ The short form is in parentheses.
+ </li>
+ <li class="itemize"><a
+href="#abbrstyle.long-short-user"><span
+class="cmss-10">long-short-user</span></a><a
+ id="dx1-25084"></a>: if the <span
+class="cmss-10">user1</span><a
+ id="dx1-25085"></a> key has been set, this produces the style
+ &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">user1</span>&#x27E9;) otherwise it just produces &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;).
+ </li>
+ <li class="itemize"><a
+href="#abbrstyle.long-hyphen-postshort-hyphen"><span
+class="cmss-10">long-hyphen-postshort-hyphen</span></a><a
+ id="dx1-25086"></a>: the short form and the inserted
+ material (provided by the final optional argument of commands like
+ <span
+class="cmtt-10">\gls</span>) is moved to the post-link hook. The long form is formatted
+ according to <span
+class="cmtt-10">\glslonghyphenfont </span>(or <span
+class="cmtt-10">\glsfirstlonghyphenfont</span>
+ on first use). The short form is formatted according to
+ <span
+class="cmtt-10">\glsabbrvhyphenfont </span>(or <span
+class="cmtt-10">\glsfirstabbrvhyphenfont </span>on first
+ use).</li></ul>
+
+
+
+ </li>
+ <li class="itemize">&#x27E8;<span
+class="cmti-10">style</span>&#x27E9;<span
+class="cmtt-10">-noreg</span>
+ <!--l. 5422--><p class="noindent" >Some styles set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-25087"></a> attribute. In some cases, there&#8217;s a version of the
+ style that doesn&#8217;t set this attribute. For example, <a
+href="#abbrstyle.long-em-noshort-em"><span
+class="cmss-10">long-em-noshort-em</span></a><a
+ id="dx1-25088"></a> sets the
+ <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-25089"></a> attribute. The <a
+href="#abbrstyle.long-em-noshort-em-noreg"><span
+class="cmss-10">long-em-noshort-em-noreg</span></a><a
+ id="dx1-25090"></a> style is a minor variation that
+ style that doesn&#8217;t set the attribute.
+ </p><!--l. 5429--><p class="noindent" >There are a few &#8220;noshort&#8221; styles, such as <a
+href="#abbrstyle.long-hyphen-noshort-noreg"><span
+class="cmss-10">long-hyphen-noshort-noreg</span></a><a
+ id="dx1-25091"></a>, that have
+ &#8220;-noreg&#8221; version without a regular version. This is because the style won&#8217;t work
+ properly with the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-25092"></a> set, but the naming scheme is maintained for
+ consistency with the other &#8220;noshort&#8221; styles.
+ </p></li>
+ <li class="itemize">&#x27E8;<span
+class="cmti-10">field1</span>&#x27E9;[<span
+class="cmtt-10">-</span>&#x27E8;<span
+class="cmti-10">modifier1</span>&#x27E9;]<span
+class="cmtt-10">-</span>[<span
+class="cmtt-10">post</span>]<span
+class="cmtt-10">footnote</span>
+ <!--l. 5439--><p class="noindent" >The display style uses &#x27E8;<span
+class="cmti-10">field1</span>&#x27E9; followed by a footnote with the other field in it. If
+ <span
+class="cmtt-10">post </span>is present then the footnote is placed after the <a
+ id="dx1-25093"></a><a
+href="#glo:linktext">link-text</a> using the
+ post-link hook. The inline style does &#x27E8;<span
+class="cmti-10">field1</span>&#x27E9; followed by the other field in
+ parentheses.
+ </p><!--l. 5445--><p class="noindent" >If <span
+class="cmtt-10">-</span>&#x27E8;<span
+class="cmti-10">modifier1</span>&#x27E9; is present, &#x27E8;<span
+class="cmti-10">field1</span>&#x27E9; has a font-changing command applied to
+ it.
+ </p><!--l. 5448--><p class="noindent" >Examples: </p>
+ <ul class="itemize2">
+ <li class="itemize"><a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-25094"></a>: short form in the text with the long form in the
+ footnote.
+ </li>
+ <li class="itemize"><a
+href="#abbrstyle.short-sc-postfootnote"><span
+class="cmss-10">short-sc-postfootnote</span></a><a
+ id="dx1-25095"></a>: short form in smallcaps with the long form in
+ the footnote outside of the <a
+ id="dx1-25096"></a>link-text.</li></ul>
+ <!--l. 5456--><p class="noindent" ><div class="important" title="Important Note"> Take care with the footnote styles. Remember that there are some situations
+ where <span
+class="cmtt-10">\footnote</span><a
+ id="dx1-25097"></a> doesn&#8217;t work. </div>
+ </p><!--l. 5459--><p class="noindent" >
+ </p></li>
+ <li class="itemize">&#x27E8;<span
+class="cmti-10">style</span>&#x27E9;<span
+class="cmtt-10">-desc</span>
+ <!--l. 5463--><p class="noindent" >Like &#x27E8;<span
+class="cmti-10">style</span>&#x27E9; but the <span
+class="cmss-10">description</span><a
+ id="dx1-25098"></a> key must be provided when defining abbreviations
+ with this style.
+ </p><!--l. 5466--><p class="noindent" >Examples: </p>
+ <ul class="itemize2">
+ <li class="itemize"><a
+href="#abbrstyle.short-long-desc"><span
+class="cmss-10">short-long-desc</span></a><a
+ id="dx1-25099"></a>: like <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-25100"></a> but requires a description.
+ </li>
+ <li class="itemize"><a
+href="#abbrstyle.short-em-footnote-desc"><span
+class="cmss-10">short-em-footnote-desc</span></a><a
+ id="dx1-25101"></a>: like <a
+href="#abbrstyle.short-em-footnote"><span
+class="cmss-10">short-em-footnote</span></a><a
+ id="dx1-25102"></a> but requires a
+ description.</li></ul>
+
+
+
+ </li></ul>
+<!--l. 5476--><p class="indent" > Not all combinations that fit the above syntax are provided. Pre-version 1.04
+styles that didn&#8217;t fit this naming scheme are either provided with a synonym (where
+the former name wasn&#8217;t ambiguous) or provided with a deprecated synonym (where
+the former name was confusing). The deprecated style names generate a warning
+using:
+</p><!--l. 5482--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrWarnDeprecatedAbbrStyle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-25103"></a> <span
+class="cmtt-10">\GlsXtrWarnDeprecatedAbbrStyle</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">old-name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">new-name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 5484--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">old-name</span>&#x27E9; is the deprecated name and &#x27E8;<span
+class="cmti-10">new-name</span>&#x27E9; is the preferred name. You
+can suppress these warnings by redefining this command to do nothing.
+</p><!--l. 5490--><p class="noindent" >
+</p>
+<!--l. 5490--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">3.4.1 </span> <a
+ id="sec:predefregabbrvstyles"></a>Predefined Abbreviation Styles that Set the Regular Attribute</h4>
+<!--l. 5493--><p class="noindent" >The following abbreviation styles set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-26001"></a> attribute to &#8220;true&#8221; for all categories
+that have abbreviations defined with any of these styles.
+ </p><dl class="description"><dt class="description">
+<a
+ id="abbrstyle.short-nolong"></a><span
+class="cmssbx-10">short-nolong</span><a
+ id="dx1-26002"></a> </dt><dd
+class="description">This only displays the short form on <a
+ id="dx1-26003"></a><a
+href="#glo:firstuse">first use</a>. The <span
+class="cmss-10">name</span><a
+ id="dx1-26004"></a> is set to the
+ short form through the command
+ <!--l. 5501--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshortnolongname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-26005"></a> <span
+class="cmtt-10">\glsxtrshortnolongname </span></div><hr>
+ </p><!--l. 5503--><p class="noindent" >
+ (Similarly for the other <span
+class="cmtt-10">short</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-nolong</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9; styles, unless indicated
+ otherwise.) This command is expanded as the entry is defined, so any
+ redefinition must be done before <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym</span>) for it to
+ take effect. Make sure to <span
+class="cmtt-10">\protect </span>any formatting commands (or anything else
+ that shouldn&#8217;t be expanded).
+ </p><!--l. 5512--><p class="noindent" >The <span
+class="cmss-10">description</span><a
+ id="dx1-26006"></a> is set to the long form. The inline full form displays &#x27E8;<span
+class="cmti-10">short</span>&#x27E9;
+ (&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;). The long form on its own can be displayed through commands like
+ <span
+class="cmtt-10">\glsxtrlong</span><a
+ id="dx1-26007"></a>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short"></a><span
+class="cmssbx-10">short</span><a
+ id="dx1-26008"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-26009"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.nolong-short"></a><span
+class="cmssbx-10">nolong-short</span><a
+ id="dx1-26010"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-26011"></a> but the inline full form displays &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;).
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sc-nolong"></a><span
+class="cmssbx-10">short-sc-nolong</span><a
+ id="dx1-26012"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-26013"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-26014"></a> (which defaults to <span
+class="cmtt-10">\textsc</span>).
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sc"></a><span
+class="cmssbx-10">short-sc</span><a
+ id="dx1-26015"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-sc-nolong"><span
+class="cmss-10">short-sc-nolong</span></a><a
+ id="dx1-26016"></a>
+
+
+
+ </dd><dt class="description">
+<a
+ id="abbrstyle.nolong-short-sc"></a><span
+class="cmssbx-10">nolong-short-sc</span><a
+ id="dx1-26017"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-sc-nolong"><span
+class="cmss-10">short-sc-nolong</span></a><a
+ id="dx1-26018"></a> but the inline full form displays &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;).
+ The name is still obtained from <span
+class="cmtt-10">\glsxtrshortnolongname </span>(similarly for the
+ other styles in the form <span
+class="cmtt-10">nolong</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-short</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9; unless indicated
+ otherwise).
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sm-nolong"></a><span
+class="cmssbx-10">short-sm-nolong</span><a
+ id="dx1-26019"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-26020"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-26021"></a> (which defaults to <span
+class="cmtt-10">\textsmaller</span>).
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sm"></a><span
+class="cmssbx-10">short-sm</span><a
+ id="dx1-26022"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-sm-nolong"><span
+class="cmss-10">short-sm-nolong</span></a><a
+ id="dx1-26023"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.nolong-short-sm"></a><span
+class="cmssbx-10">nolong-short-sm</span><a
+ id="dx1-26024"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-sm-nolong"><span
+class="cmss-10">short-sm-nolong</span></a><a
+ id="dx1-26025"></a> but the inline full form displays &#x27E8;<span
+class="cmti-10">long</span>&#x27E9;
+ (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;).
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-nolong"></a><span
+class="cmssbx-10">short-em-nolong</span><a
+ id="dx1-26026"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-26027"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-26028"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em"></a><span
+class="cmssbx-10">short-em</span><a
+ id="dx1-26029"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-em-nolong"><span
+class="cmss-10">short-em-nolong</span></a><a
+ id="dx1-26030"></a>
+ </dd><dt class="description">
+<a
+ id="abbrstyle.nolong-short-em"></a><span
+class="cmssbx-10">nolong-short-em</span><a
+ id="dx1-26031"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-em-nolong"><span
+class="cmss-10">short-em-nolong</span></a><a
+ id="dx1-26032"></a> but the inline full form displays &#x27E8;<span
+class="cmti-10">long</span>&#x27E9;
+ (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;).
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-nolong-desc"></a><span
+class="cmssbx-10">short-nolong-desc</span><a
+ id="dx1-26033"></a> </dt><dd
+class="description">Like the <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-26034"></a> style, but the <span
+class="cmss-10">name</span><a
+ id="dx1-26035"></a> is set to the full form
+ obtained by expanding
+ <!--l. 5559--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshortdescname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-26036"></a> <span
+class="cmtt-10">\glsxtrshortdescname </span></div><hr>
+ </p><!--l. 5561--><p class="noindent" >
+ (Similarly for the other <span
+class="cmtt-10">short</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-nolong</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-desc </span>styles, unless
+ indicated otherwise.) This command is expanded when the entry is defined, so
+ <span
+class="cmtt-10">\protect </span>fragile and formatting commands and only redefine this command
+ before <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym</span>).
+ </p><!--l. 5568--><p class="noindent" >The <span
+class="cmss-10">description</span><a
+ id="dx1-26037"></a> must be supplied by the user. You may prefer to use
+ the <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-26038"></a> style with the post-description hook set to display
+ the long form and override the <span
+class="cmss-10">description</span><a
+ id="dx1-26039"></a> key. (See the sample file
+ <span
+class="cmtt-10">sample-acronym-desc.tex</span>.)
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-desc"></a><span
+class="cmssbx-10">short-desc</span><a
+ id="dx1-26040"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-nolong-desc"><span
+class="cmss-10">short-nolong-desc</span></a><a
+ id="dx1-26041"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sc-nolong-desc"></a><span
+class="cmssbx-10">short-sc-nolong-desc</span><a
+ id="dx1-26042"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-26043"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-26044"></a> (which defaults to <span
+class="cmtt-10">\textsc</span>).
+
+
+
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sc-desc"></a><span
+class="cmssbx-10">short-sc-desc</span><a
+ id="dx1-26045"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-sc-nolong-desc"><span
+class="cmss-10">short-sc-nolong-desc</span></a><a
+ id="dx1-26046"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sm-nolong-desc"></a><span
+class="cmssbx-10">short-sm-nolong-desc</span><a
+ id="dx1-26047"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-nolong-desc"><span
+class="cmss-10">short-nolong-desc</span></a><a
+ id="dx1-26048"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-26049"></a> (which defaults to <span
+class="cmtt-10">\textsmaller</span>).
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sm-desc"></a><span
+class="cmssbx-10">short-sm-desc</span><a
+ id="dx1-26050"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-sm-nolong-desc"><span
+class="cmss-10">short-sm-nolong-desc</span></a><a
+ id="dx1-26051"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-nolong-desc"></a><span
+class="cmssbx-10">short-em-nolong-desc</span><a
+ id="dx1-26052"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-nolong-desc"><span
+class="cmss-10">short-nolong-desc</span></a><a
+ id="dx1-26053"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-26054"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-desc"></a><span
+class="cmssbx-10">short-em-desc</span><a
+ id="dx1-26055"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-em-nolong-desc"><span
+class="cmss-10">short-em-nolong-desc</span></a><a
+ id="dx1-26056"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-desc"></a><span
+class="cmssbx-10">long-noshort-desc</span><a
+ id="dx1-26057"></a> </dt><dd
+class="description">This style only displays the long form, regardless of first or
+ subsequent use of commands <span
+class="cmtt-10">\gls</span><a
+ id="dx1-26058"></a>. The short form may be accessed
+ through commands like <span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-26059"></a>. The inline full form displays &#x27E8;<span
+class="cmti-10">long</span>&#x27E9;
+ (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;).
+ <!--l. 5604--><p class="noindent" >The <span
+class="cmss-10">sort</span><a
+ id="dx1-26060"></a> key are set to the long form. The <span
+class="cmss-10">name</span><a
+ id="dx1-26061"></a> key is also set to the long form,
+ but this is done by expanding
+ </p><!--l. 5607--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlongnoshortdescname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-26062"></a> <span
+class="cmtt-10">\glsxtrlongnoshortdescname </span></div><hr>
+ </p><!--l. 5609--><p class="noindent" >
+ (Similarly for the other <span
+class="cmtt-10">long</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-noshort</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-desc </span>styles, unless
+ indicated otherwise.) This command should only be redefined before
+ abbreviations are defined, and any fragile or formatting commands within it
+ need protecting.
+ </p><!--l. 5615--><p class="noindent" >The <span
+class="cmss-10">description</span><a
+ id="dx1-26063"></a> must be provided by the user. The predefined glossary styles
+ won&#8217;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 &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;).
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-desc"></a><span
+class="cmssbx-10">long-desc</span><a
+ id="dx1-26064"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-26065"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-sc-desc"></a><span
+class="cmssbx-10">long-noshort-sc-desc</span><a
+ id="dx1-26066"></a> </dt><dd
+class="description">Like the <a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-26067"></a> style but the short form (accessed
+ through commands like <span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-26068"></a>) use <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-26069"></a>. (This style was
+ originally called <span
+class="cmss-10">long-desc-sc</span><a
+ id="dx1-26070"></a>. Renamed in version 1.04, but original name
+ retained as a deprecated synonym for backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-sm-desc"></a><span
+class="cmssbx-10">long-noshort-sm-desc</span><a
+ id="dx1-26071"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-26072"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-26073"></a>. (This style was originally called <span
+class="cmss-10">long-desc-sm</span><a
+ id="dx1-26074"></a>. Renamed in
+ version 1.04, but original name retained as a deprecated synonym for
+ backward-compatibility.)
+
+
+
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-em-desc"></a><span
+class="cmssbx-10">long-noshort-em-desc</span><a
+ id="dx1-26075"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-26076"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-26077"></a>. The long form isn&#8217;t emphasized. (This style was originally
+ called <span
+class="cmss-10">long-desc-em</span><a
+ id="dx1-26078"></a>. Renamed in version 1.04, but original name retained as a
+ deprecated synonym for backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-em-noshort-em-desc"></a><span
+class="cmssbx-10">long-em-noshort-em-desc</span><a
+ id="dx1-26079"></a> </dt><dd
+class="description">New to version 1.04, like <a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-26080"></a> but
+ redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-26081"></a>. The long form uses
+ <span
+class="cmtt-10">\glsfirstlongemfont</span><a
+ id="dx1-26082"></a> and <span
+class="cmtt-10">\glslongemfont</span><a
+ id="dx1-26083"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort"></a><span
+class="cmssbx-10">long-noshort</span><a
+ id="dx1-26084"></a> </dt><dd
+class="description">This style doesn&#8217;t really make sense if you don&#8217;t use the short form
+ anywhere in the document, but is provided for completeness. This is
+ like the <a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-26085"></a> style, but the <span
+class="cmss-10">sort</span><a
+ id="dx1-26086"></a> key is set to the short
+ form. The <span
+class="cmss-10">name</span><a
+ id="dx1-26087"></a> key is also set to the short form, but this is done by
+ expanding
+ <!--l. 5656--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlongnoshortname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-26088"></a> <span
+class="cmtt-10">\glsxtrlongnoshortname </span></div><hr>
+ </p><!--l. 5658--><p class="noindent" >
+ (Similarly for other <span
+class="cmtt-10">long</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-noshort</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9; styles, unless indicated
+ otherwise.) This command should only be redefined before abbreviations are
+ defined, and fragile or formatting commands should be protected.
+ </p><!--l. 5665--><p class="noindent" >The <span
+class="cmss-10">description</span><a
+ id="dx1-26089"></a> is set to the long form.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long"></a><span
+class="cmssbx-10">long</span><a
+ id="dx1-26090"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.long-noshort"><span
+class="cmss-10">long-noshort</span></a><a
+ id="dx1-26091"></a>
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-sc"></a><span
+class="cmssbx-10">long-noshort-sc</span><a
+ id="dx1-26092"></a> </dt><dd
+class="description">Like the <a
+href="#abbrstyle.long-noshort"><span
+class="cmss-10">long-noshort</span></a><a
+ id="dx1-26093"></a> style but the short form (accessed through
+ commands like <span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-26094"></a>) use <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-26095"></a>. (This style was originally
+ called <span
+class="cmss-10">long-sc</span><a
+ id="dx1-26096"></a>. Renamed in version 1.04, but original name retained as a
+ deprecated synonym for backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-sm"></a><span
+class="cmssbx-10">long-noshort-sm</span><a
+ id="dx1-26097"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-noshort"><span
+class="cmss-10">long-noshort</span></a><a
+ id="dx1-26098"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-26099"></a>. (This style was originally called <span
+class="cmss-10">long-sm</span><a
+ id="dx1-26100"></a>. Renamed in
+ version 1.04, but original name retained as a deprecated synonym for
+ backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-em"></a><span
+class="cmssbx-10">long-noshort-em</span><a
+ id="dx1-26101"></a> </dt><dd
+class="description">This style is like <a
+href="#abbrstyle.long-noshort"><span
+class="cmss-10">long-noshort</span></a><a
+ id="dx1-26102"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-26103"></a>. The long form isn&#8217;t emphasized. (This style was originally
+ called <span
+class="cmss-10">long-em</span><a
+ id="dx1-26104"></a>. Renamed in version 1.04, but original name retained as a
+ deprecated synonym for backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-em-noshort-em"></a><span
+class="cmssbx-10">long-em-noshort-em</span><a
+ id="dx1-26105"></a> </dt><dd
+class="description">New to version 1.04, this style is like <a
+href="#abbrstyle.long-noshort"><span
+class="cmss-10">long-noshort</span></a><a
+ id="dx1-26106"></a> but redefines
+
+
+
+ <span
+class="cmtt-10">\glsabbrvfont </span>to use <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-26107"></a>, <span
+class="cmtt-10">\glsfirstlongfont </span>to use
+ <span
+class="cmtt-10">\glsfirstlongemfont </span>and <span
+class="cmtt-10">\glslongfont </span>to use <span
+class="cmtt-10">\glslongemfont</span>. The short
+ form isn&#8217;t used by commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-26108"></a>, but can be obtained using
+ <span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-26109"></a>. The related style <a
+ id="abbrstyle.long-em-noshort-em-noreg"></a><span
+class="cmss-10">long-em-noshort-em-noreg</span><a
+ id="dx1-26110"></a> doesn&#8217;t set the
+ <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-26111"></a> attribute.
+ </dd></dl>
+<!--l. 5702--><p class="noindent" >
+</p>
+<!--l. 5702--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">3.4.2 </span> <a
+ id="sec:predefnonregabbrvstyles"></a>Predefined Abbreviation Styles that Don&#8217;t Set the Regular Attribute</h4>
+<!--l. 5705--><p class="noindent" >The following abbreviation styles will set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-27001"></a> attribute to &#8220;false&#8221; if it has
+previously been set. If it hasn&#8217;t already been set, it&#8217;s left unset. Other attributes may
+also be set, depending on the style.
+ </p><dl class="description"><dt class="description">
+<a
+ id="abbrstyle.long-short"></a><span
+class="cmssbx-10">long-short</span><a
+ id="dx1-27002"></a> </dt><dd
+class="description">On <a
+ id="dx1-27003"></a><a
+href="#glo:firstuse">first use</a>, this style uses the format &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;). The inline and
+ display full forms are the same. The <span
+class="cmss-10">sort</span><a
+ id="dx1-27004"></a> key is set to the short form. The <span
+class="cmss-10">name</span><a
+ id="dx1-27005"></a>
+ is also set to the short form through
+ <!--l. 5716--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlongshortname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27006"></a> <span
+class="cmtt-10">\glsxtrlongshortname </span></div><hr>
+ </p><!--l. 5718--><p class="noindent" >
+ (Similarly for other <span
+class="cmtt-10">long</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-short</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9; styles, unless indicated
+ otherwise.) Any redefinition of this command must come before the
+ abbreviations are defined as it expands on definition. Make sure you protect
+ any commands that shouldn&#8217;t be expanded. The long form can be referenced
+ with <span
+class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with
+ <span
+class="cmtt-10">\the\glsshorttok</span>.
+ </p><!--l. 5728--><p class="noindent" >The <span
+class="cmss-10">description</span><a
+ id="dx1-27007"></a> is set to the long form. The long and short forms are separated
+ by <span
+class="cmtt-10">\glsxtrfullsep</span>. If you want to insert material within the parentheses
+ (such as a&#x00A0;translation), try the <a
+href="#abbrstyle.long-short-user"><span
+class="cmss-10">long-short-user</span></a><a
+ id="dx1-27008"></a> style.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-short-sc"></a><span
+class="cmssbx-10">long-short-sc</span><a
+ id="dx1-27009"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-27010"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-27011"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-short-sm"></a><span
+class="cmssbx-10">long-short-sm</span><a
+ id="dx1-27012"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-27013"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-27014"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-short-em"></a><span
+class="cmssbx-10">long-short-em</span><a
+ id="dx1-27015"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-27016"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-27017"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-em-short-em"></a><span
+class="cmssbx-10">long-em-short-em</span><a
+ id="dx1-27018"></a> </dt><dd
+class="description">New to version 1.04, this style is like <a
+href="#abbrstyle.long-short-em"><span
+class="cmss-10">long-short-em</span></a><a
+ id="dx1-27019"></a> but redefines
+ <span
+class="cmtt-10">\glsfirstlongfont </span>to use <span
+class="cmtt-10">\glsfirstlongemfont</span><a
+ id="dx1-27020"></a>.
+
+
+
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-only-short-only"></a><span
+class="cmssbx-10">long-only-short-only</span><a
+ id="dx1-27021"></a> </dt><dd
+class="description">New to version 1.17, this style only shows the long form on first
+ use and only shows the short form on subsequent use. The inline full form
+ <span
+class="cmtt-10">\glsxtrfull </span>shows the long form followed by the short form in parentheses.
+ The <span
+class="cmss-10">name</span><a
+ id="dx1-27022"></a> field is obtained from
+ <!--l. 5755--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtronlyname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27023"></a> <span
+class="cmtt-10">\glsxtronlyname </span></div><hr>
+ </p><!--l. 5757--><p class="noindent" >
+ Any redefinition of this command must come before the abbreviations
+ are defined as it expands on definition. Make sure you protect any
+ commands that shouldn&#8217;t be expanded. The long form can be referenced
+ with <span
+class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with
+ <span
+class="cmtt-10">\the\glsshorttok</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-only-short-only-desc"></a><span
+class="cmssbx-10">long-only-short-only-desc</span><a
+ id="dx1-27024"></a> </dt><dd
+class="description">New to version 1.17, this style is like <a
+href="#abbrstyle.long-only-short-only"><span
+class="cmss-10">long-only-short-only</span></a><a
+ id="dx1-27025"></a>
+ but the user must supply the description. The <span
+class="cmss-10">name</span><a
+ id="dx1-27026"></a> field is obtained
+ from
+ <!--l. 5769--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtronlydescname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27027"></a> <span
+class="cmtt-10">\glsxtronlydescname </span></div><hr>
+ </p><!--l. 5771--><p class="noindent" >
+ Any redefinition of this command must come before the abbreviations
+ are defined as it expands on definition. Make sure you protect any
+ commands that shouldn&#8217;t be expanded. The long form can be referenced
+ with <span
+class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with
+ <span
+class="cmtt-10">\the\glsshorttok</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-em-noshort-em-noreg"></a><span
+class="cmssbx-10">long-em-noshort-em-noreg</span><a
+ id="dx1-27028"></a> </dt><dd
+class="description">New to version 1.17, this style is like <a
+href="#abbrstyle.long-em-noshort-em"><span
+class="cmss-10">long-em-noshort-em</span></a><a
+ id="dx1-27029"></a>
+ but doesn&#8217;t set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-27030"></a> attribute.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-short-user"></a><span
+class="cmssbx-10">long-short-user</span><a
+ id="dx1-27031"></a> </dt><dd
+class="description">This style was introduced in version 1.04. It&#8217;s like the <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-27032"></a> style
+ but additional information can be inserted into the parenthetical material. This
+ checks the value of the field given by
+ <!--l. 5788--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtruserfield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27033"></a> <span
+class="cmtt-10">\glsxtruserfield </span></div><hr>
+ </p><!--l. 5790--><p class="noindent" >
+ (which defaults to <span
+class="cmtt-10">useri</span>) using <span
+class="cmtt-10">\ifglshasfield</span><a
+ id="dx1-27034"></a> (provided by <span
+class="cmss-10">glossaries</span>). If the
+ field hasn&#8217;t been set, the style behaves like the <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-27035"></a> style and produces
+ &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;) but if the field has been set, the contents of that field are inserted
+ within the parentheses in the form &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">field-value</span>&#x27E9;). The format is
+ governed by
+ </p><!--l. 5798--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtruserparen</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27036"></a> <span
+class="cmtt-10">\glsxtruserparen{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 5800--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; is the short form (for the <a
+href="#abbrstyle.long-short-user"><span
+class="cmss-10">long-short-user</span></a><a
+ id="dx1-27037"></a> style) or the long form (for
+ the <a
+href="#abbrstyle.short-long-user"><span
+class="cmss-10">short-long-user</span></a><a
+ id="dx1-27038"></a> style). This command first inserts a space using
+
+
+
+ <span
+class="cmtt-10">\glsxtrfullsep </span>and then the parenthetical content (using <span
+class="cmtt-10">\glsxtrparen</span><a
+ id="dx1-27039"></a>).
+ The <span
+class="cmss-10">description</span><a
+ id="dx1-27040"></a> is set to
+ </p><!--l. 5807--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsuserdescription</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27041"></a> <span
+class="cmtt-10">\glsuserdescription{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 5809--><p class="noindent" >
+ The default definition ignores the &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; and encapsulates &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; with
+ <span
+class="cmtt-10">\glslonguserfont</span>.
+ </p><!--l. 5813--><p class="noindent" >The <span
+class="cmss-10">name</span><a
+ id="dx1-27042"></a> is obtained by expanding <span
+class="cmtt-10">\glsxtrlongshortname </span>(see above). The
+ &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; argument includes the font formatting command, <span
+class="cmtt-10">\glsfirstabbrvfont</span>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">} </span>in the case of the <a
+href="#abbrstyle.long-short-user"><span
+class="cmss-10">long-short-user</span></a><a
+ id="dx1-27043"></a> style and <span
+class="cmtt-10">\glsfirstlongfont{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ in the case of the <a
+href="#abbrstyle.short-long-user"><span
+class="cmss-10">short-long-user</span></a><a
+ id="dx1-27044"></a> style.
+ </p><!--l. 5821--><p class="noindent" >For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-146">
+ \setabbreviationstyle[acronym]{long-short-user}
+ &#x00A0;<br />\newacronym{tug}{TUG}{\TeX\&#x00A0;User&#x00A0;Group}
+ &#x00A0;<br />\newacronym
+ &#x00A0;<br />&#x00A0;[user1={German&#x00A0;Speaking&#x00A0;\TeX\&#x00A0;User&#x00A0;Group}]
+ &#x00A0;<br />&#x00A0;{dante}{DANTE}{Deutschsprachige&#x00A0;Anwendervereinigung&#x00A0;\TeX\&#x00A0;e.V}
+</div>
+ <!--l. 5831--><p class="nopar" > On first use, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{tug}</span></span></span> will appear as:
+ </p><div class="quote">
+ <!--l. 5834--><p class="noindent" ><span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;User Group (TUG)</p></div>
+ <!--l. 5836--><p class="noindent" >whereas <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{dante}</span></span></span> will appear as:
+ </p><div class="quote">
+ <!--l. 5838--><p class="noindent" >Deutschsprachige Anwendervereinigung <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;e.V (DANTE,
+ German Speaking <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;User Group)</p></div>
+ <!--l. 5841--><p class="noindent" >The short form is formatted according to
+ </p><!--l. 5842--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvuserfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27045"></a> <span
+class="cmtt-10">\glsabbrvuserfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 5844--><p class="noindent" >
+ and the plural suffix is given by
+ </p><!--l. 5846--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrusersuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27046"></a> <span
+class="cmtt-10">\glsxtrusersuffix </span></div><hr>
+ </p><!--l. 5848--><p class="noindent" >
+ </p><!--l. 5850--><p class="noindent" >These may be redefined as appropriate. For example, if you want a&#x00A0;smallcaps
+ style, you can just set these commands to those used by the <a
+href="#abbrstyle.long-short-sc"><span
+class="cmss-10">long-short-sc</span></a><a
+ id="dx1-27047"></a>
+ style:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-147">
+ \renewcommand{\glsabbruserfont}[1]{\glsabbrvscfont{#1}}
+ &#x00A0;<br />\renewcommand{\glsxtrusersuffix}{\glsxtrscsuffix}
+</div>
+ <!--l. 5856--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-noreg"></a><span
+class="cmssbx-10">long-noshort-noreg</span><a
+ id="dx1-27048"></a> </dt><dd
+class="description">This style is like <a
+href="#abbrstyle.long-noshort"><span
+class="cmss-10">long-noshort</span></a><a
+ id="dx1-27049"></a> but it doesn&#8217;t set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-27050"></a>
+ attribute.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-noshort-desc-noreg"></a><span
+class="cmssbx-10">long-noshort-desc-noreg</span><a
+ id="dx1-27051"></a> </dt><dd
+class="description">This style is like <a
+href="#abbrstyle.long-noshort-desc"><span
+class="cmss-10">long-noshort-desc</span></a><a
+ id="dx1-27052"></a> but it doesn&#8217;t set the
+ <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-27053"></a> attribute.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-short-desc"></a><span
+class="cmssbx-10">long-short-desc</span><a
+ id="dx1-27054"></a> </dt><dd
+class="description">On <a
+ id="dx1-27055"></a><a
+href="#glo:firstuse">first use</a>, this style uses the format &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;). The
+ inline and display full forms are the same. The <span
+class="cmss-10">name</span><a
+ id="dx1-27056"></a> is set to the full
+ form. The <span
+class="cmss-10">sort</span><a
+ id="dx1-27057"></a> key is set to &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;). Before version 1.04, this was
+ incorrectly set to the short form. If you want to revert back to this you can
+ redefine
+ <!--l. 5873--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlongshortdescsort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27058"></a> <span
+class="cmtt-10">\glsxtrlongshortdescsort </span></div><hr>
+ </p><!--l. 5875--><p class="noindent" >
+ For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-148">
+ \renewcommand*{\glsxtrlongshortdescsort}{\the\glsshorttok}
+</div>
+ <!--l. 5879--><p class="nopar" > The <span
+class="cmss-10">description</span><a
+ id="dx1-27059"></a> must be supplied by the user. The long and short
+ forms are separated by <span
+class="cmtt-10">\glsxtrfullsep</span>. The <span
+class="cmss-10">name</span><a
+ id="dx1-27060"></a> field is obtained
+ from
+ </p><!--l. 5883--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlongshortdescname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27061"></a> <span
+class="cmtt-10">\glsxtrlongshortdescname </span></div><hr>
+ </p><!--l. 5885--><p class="noindent" >
+ (Similarly for other <span
+class="cmtt-10">long</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-short</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-desc </span>styles, unless indicated
+ otherwise.) Any redefinition of this command must come before the
+ abbreviations are defined as it expands on definition. Make sure you protect
+ any commands that shouldn&#8217;t be expanded. The long form can be referenced
+ with <span
+class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with
+ <span
+class="cmtt-10">\the\glsshorttok</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-short-sc-desc"></a><span
+class="cmssbx-10">long-short-sc-desc</span><a
+ id="dx1-27062"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-short-desc"><span
+class="cmss-10">long-short-desc</span></a><a
+ id="dx1-27063"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-27064"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-short-sm-desc"></a><span
+class="cmssbx-10">long-short-sm-desc</span><a
+ id="dx1-27065"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-short-desc"><span
+class="cmss-10">long-short-desc</span></a><a
+ id="dx1-27066"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-27067"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-short-em-desc"></a><span
+class="cmssbx-10">long-short-em-desc</span><a
+ id="dx1-27068"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.long-short-desc"><span
+class="cmss-10">long-short-desc</span></a><a
+ id="dx1-27069"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-27070"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-em-short-em-desc"></a><span
+class="cmssbx-10">long-em-short-em-desc</span><a
+ id="dx1-27071"></a> </dt><dd
+class="description">New to version 1.04, this style is like <a
+href="#abbrstyle.long-short-em-desc"><span
+class="cmss-10">long-short-em-desc</span></a><a
+ id="dx1-27072"></a> but
+ redefines <span
+class="cmtt-10">\glsfirstlongfont </span>to use <span
+class="cmtt-10">\glsfirstlongemfont</span><a
+ id="dx1-27073"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-em-noshort-em-desc-noreg"></a><span
+class="cmssbx-10">long-em-noshort-em-desc-noreg</span><a
+ id="dx1-27074"></a> </dt><dd
+class="description">New to version 1.17, this style is like
+ <a
+href="#abbrstyle.long-em-noshort-em-desc"><span
+class="cmss-10">long-em-noshort-em-desc</span></a><a
+ id="dx1-27075"></a> but doesn&#8217;t set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-27076"></a> attribute.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-short-user-desc"></a><span
+class="cmssbx-10">long-short-user-desc</span><a
+ id="dx1-27077"></a> </dt><dd
+class="description">New to version 1.04, this style is like a&#x00A0;cross between the
+ <a
+href="#abbrstyle.long-short-desc"><span
+class="cmss-10">long-short-desc</span></a><a
+ id="dx1-27078"></a> style and the <a
+href="#abbrstyle.long-short-user"><span
+class="cmss-10">long-short-user</span></a><a
+ id="dx1-27079"></a> style. The display and
+ inline forms are as for <a
+href="#abbrstyle.long-short-user"><span
+class="cmss-10">long-short-user</span></a><a
+ id="dx1-27080"></a> and the <span
+class="cmss-10">name</span><a
+ id="dx1-27081"></a> key is obtained
+ from
+ <!--l. 5923--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlongshortuserdescname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27082"></a> <span
+class="cmtt-10">\glsxtrlongshortuserdescname </span></div><hr>
+
+
+
+ </p><!--l. 5925--><p class="noindent" >
+ Again, this should only be redefined before <span
+class="cmtt-10">\newabbreviation </span>(or
+ <span
+class="cmtt-10">\newacronym</span>), and fragile and formatting commands need protecting.
+ </p><!--l. 5929--><p class="noindent" >The <span
+class="cmss-10">description</span><a
+ id="dx1-27083"></a> key must be supplied in the optional argument of
+ <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym</span>). The <span
+class="cmss-10">sort</span><a
+ id="dx1-27084"></a> key is set to &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;) as per
+ the <a
+href="#abbrstyle.long-short-desc"><span
+class="cmss-10">long-short-desc</span></a><a
+ id="dx1-27085"></a> style.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-nolong-noreg"></a><span
+class="cmssbx-10">short-nolong-noreg</span><a
+ id="dx1-27086"></a> </dt><dd
+class="description">This is like <a
+href="#abbrstyle.short-nolong"><span
+class="cmss-10">short-nolong</span></a><a
+ id="dx1-27087"></a> but doesn&#8217;t set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-27088"></a> attribute.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.nolong-short-noreg"></a><span
+class="cmssbx-10">nolong-short-noreg</span><a
+ id="dx1-27089"></a> </dt><dd
+class="description">This is like <a
+href="#abbrstyle.nolong-short"><span
+class="cmss-10">nolong-short</span></a><a
+ id="dx1-27090"></a> but doesn&#8217;t set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-27091"></a> attribute.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-long"></a><span
+class="cmssbx-10">short-long</span><a
+ id="dx1-27092"></a> </dt><dd
+class="description">On <a
+ id="dx1-27093"></a><a
+href="#glo:firstuse">first use</a>, this style uses the format &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;). The inline and
+ display full forms are the same. The <span
+class="cmss-10">name</span><a
+ id="dx1-27094"></a> and <span
+class="cmss-10">sort</span><a
+ id="dx1-27095"></a> keys are set to the
+ short form. The <span
+class="cmss-10">description</span><a
+ id="dx1-27096"></a> is set to the long form. The short and long
+ forms are separated by <span
+class="cmtt-10">\glsxtrfullsep</span>. If you want to insert material
+ within the parentheses (such as a&#x00A0;translation), try the <a
+href="#abbrstyle.short-long-user"><span
+class="cmss-10">short-long-user</span></a><a
+ id="dx1-27097"></a>
+ style.
+ <!--l. 5952--><p class="noindent" >The <span
+class="cmss-10">name</span><a
+ id="dx1-27098"></a> field is obtained from
+ </p><!--l. 5953--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshortlongname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27099"></a> <span
+class="cmtt-10">\glsxtrshortlongname </span></div><hr>
+ </p><!--l. 5955--><p class="noindent" >
+ (Similarly for other <span
+class="cmtt-10">short</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-long</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9; styles, unless indicated
+ otherwise.) Any redefinition of this command must come before the
+ abbreviations are defined as it expands on definition. Make sure you protect
+ any commands that shouldn&#8217;t be expanded. The long form can be referenced
+ with <span
+class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with
+ <span
+class="cmtt-10">\the\glsshorttok</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-sc-long"></a><span
+class="cmssbx-10">short-sc-long</span><a
+ id="dx1-27100"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-27101"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-27102"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sm-long"></a><span
+class="cmssbx-10">short-sm-long</span><a
+ id="dx1-27103"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-27104"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-27105"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-long"></a><span
+class="cmssbx-10">short-em-long</span><a
+ id="dx1-27106"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-27107"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-27108"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-long-em"></a><span
+class="cmssbx-10">short-em-long-em</span><a
+ id="dx1-27109"></a> </dt><dd
+class="description">New to version 1.04, this style is like <a
+href="#abbrstyle.short-em-long"><span
+class="cmss-10">short-em-long</span></a><a
+ id="dx1-27110"></a> but redefines
+ <span
+class="cmtt-10">\glsfirstlongfont </span>to use <span
+class="cmtt-10">\glsfirstlongemfont</span><a
+ id="dx1-27111"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-long-user"></a><span
+class="cmssbx-10">short-long-user</span><a
+ id="dx1-27112"></a> </dt><dd
+class="description">New to version 1.04. This style is like the <a
+href="#abbrstyle.long-short-user"><span
+class="cmss-10">long-short-user</span></a><a
+ id="dx1-27113"></a> style but
+ with the long and short forms switched. The parenthetical material is governed
+ by the same command <span
+class="cmtt-10">\glsxtruserparen</span><a
+ id="dx1-27114"></a>, but the first argument supplied to it
+
+
+
+ is the long form instead of the short form. The <span
+class="cmss-10">name</span><a
+ id="dx1-27115"></a> field is obtained by
+ expanding
+ <!--l. 5989--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshortlongname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27116"></a> <span
+class="cmtt-10">\glsxtrshortlongname </span></div><hr>
+ </p><!--l. 5991--><p class="noindent" >
+ Again, this should only be redefined before <span
+class="cmtt-10">\newabbreviation </span>(or
+ <span
+class="cmtt-10">\newacronym</span>) and commands that should be expanded need to be protected.
+ The <span
+class="cmss-10">description</span><a
+ id="dx1-27117"></a> is set to <span
+class="cmtt-10">\glsuserdescription{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-nolong-desc-noreg"></a><span
+class="cmssbx-10">short-nolong-desc-noreg</span><a
+ id="dx1-27118"></a> </dt><dd
+class="description">This style is like <a
+href="#abbrstyle.short-nolong-desc"><span
+class="cmss-10">short-nolong-desc</span></a><a
+ id="dx1-27119"></a> but it doesn&#8217;t set the
+ <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-27120"></a> attribute.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-long-desc"></a><span
+class="cmssbx-10">short-long-desc</span><a
+ id="dx1-27121"></a> </dt><dd
+class="description">On <a
+ id="dx1-27122"></a><a
+href="#glo:firstuse">first use</a>, this style uses the format &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;). The
+ inline and display full forms are the same. The <span
+class="cmss-10">name</span><a
+ id="dx1-27123"></a> is set to the full
+ form. The <span
+class="cmss-10">description</span><a
+ id="dx1-27124"></a> must be supplied by the user. The short and long
+ forms are separated by <span
+class="cmtt-10">\glsxtrfullsep</span>. The <span
+class="cmss-10">name</span><a
+ id="dx1-27125"></a> field is obtained
+ from
+ <!--l. 6008--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshortlongdescname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27126"></a> <span
+class="cmtt-10">\glsxtrshortlongdescname </span></div><hr>
+ </p><!--l. 6010--><p class="noindent" >
+ (Similarly for other <span
+class="cmtt-10">short</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-long</span>&#x27E8;<span
+class="cmti-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-desc </span>styles, unless indicated
+ otherwise.) Any redefinition of this command must come before the
+ abbreviations are defined as it expands on definition. Make sure you protect
+ any commands that shouldn&#8217;t be expanded. The long form can be referenced
+ with <span
+class="cmtt-10">\the\glslongtok </span>and the short form can be referenced with
+ <span
+class="cmtt-10">\the\glsshorttok</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-sc-long-desc"></a><span
+class="cmssbx-10">short-sc-long-desc</span><a
+ id="dx1-27127"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-long-desc"><span
+class="cmss-10">short-long-desc</span></a><a
+ id="dx1-27128"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-27129"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sm-long-desc"></a><span
+class="cmssbx-10">short-sm-long-desc</span><a
+ id="dx1-27130"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-long-desc"><span
+class="cmss-10">short-long-desc</span></a><a
+ id="dx1-27131"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-27132"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-long-desc"></a><span
+class="cmssbx-10">short-em-long-desc</span><a
+ id="dx1-27133"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-long-desc"><span
+class="cmss-10">short-long-desc</span></a><a
+ id="dx1-27134"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-27135"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-long-em-desc"></a><span
+class="cmssbx-10">short-em-long-em-desc</span><a
+ id="dx1-27136"></a> </dt><dd
+class="description">New to version 1.04, this style is like <a
+href="#abbrstyle.short-em-long-desc"><span
+class="cmss-10">short-em-long-desc</span></a><a
+ id="dx1-27137"></a> but
+ redefines <span
+class="cmtt-10">\glsfirstlongfont </span>to use <span
+class="cmtt-10">\glsfirstlongemfont</span><a
+ id="dx1-27138"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-long-user-desc"></a><span
+class="cmssbx-10">short-long-user-desc</span><a
+ id="dx1-27139"></a> </dt><dd
+class="description">New to version 1.04, this style is like a&#x00A0;cross between the
+ <a
+href="#abbrstyle.short-long-desc"><span
+class="cmss-10">short-long-desc</span></a><a
+ id="dx1-27140"></a> style and the <a
+href="#abbrstyle.short-long-user"><span
+class="cmss-10">short-long-user</span></a><a
+ id="dx1-27141"></a> style. The display and
+ inline forms are as for <a
+href="#abbrstyle.short-long-user"><span
+class="cmss-10">short-long-user</span></a><a
+ id="dx1-27142"></a>, but the <span
+class="cmss-10">name</span><a
+ id="dx1-27143"></a> key is obtained
+ from
+
+
+
+ <!--l. 6042--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshortlonguserdescname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27144"></a> <span
+class="cmtt-10">\glsxtrshortlonguserdescname </span></div><hr>
+ </p><!--l. 6044--><p class="noindent" >
+ Again, this should only be redefined before <span
+class="cmtt-10">\newabbreviation </span>(or
+ <span
+class="cmtt-10">\newacronym</span>), and fragile and formatting commands need protecting.
+ </p><!--l. 6048--><p class="noindent" >The <span
+class="cmss-10">description</span><a
+ id="dx1-27145"></a> key must be supplied in the optional argument of
+ <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym</span>).
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-footnote"></a><span
+class="cmssbx-10">short-footnote</span><a
+ id="dx1-27146"></a> </dt><dd
+class="description">On <a
+ id="dx1-27147"></a><a
+href="#glo:firstuse">first use</a>, this style displays the short form with the long form as
+ a footnote. This style automatically sets the <a
+href="#catattr.nohyperfirst"><span
+class="cmss-10">nohyperfirst</span></a><a
+ id="dx1-27148"></a> attribute to &#8220;true&#8221; for
+ the supplied category, so the <a
+ id="dx1-27149"></a>first use won&#8217;t be hyperlinked (but the footnote
+ marker may be, if the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-27150"></a> package is used).
+ <!--l. 6059--><p class="noindent" >The inline full form uses the &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;) style. The <span
+class="cmss-10">name</span><a
+ id="dx1-27151"></a> is set to the short
+ form. The <span
+class="cmss-10">description</span><a
+ id="dx1-27152"></a> is set to the long form. The <span
+class="cmss-10">name</span><a
+ id="dx1-27153"></a> key is obtained by
+ expanding
+ </p><!--l. 6063--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfootnotename</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27154"></a> <span
+class="cmtt-10">\glsxtrfootnotename </span></div><hr>
+ </p><!--l. 6065--><p class="noindent" >
+ (Similarly for other <span
+class="cmtt-10">short</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">-</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">footnote </span>styles, unless
+ indicated otherwise.) Again, this command should only be redefined before
+ <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym</span>), and fragile or formatting commands
+ should be protected from expansion.
+ </p><!--l. 6072--><p class="noindent" >As from version 1.05, all the footnote styles use:
+ </p><!--l. 6073--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstlongfootnotefont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27155"></a> <span
+class="cmtt-10">\glsfirstlongfootnotefont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ </div><hr>
+ </p><!--l. 6075--><p class="noindent" >
+ to format the long form on <a
+ id="dx1-27156"></a>first use or for the full form and
+ </p><!--l. 6077--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongfootnotefont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27157"></a> <span
+class="cmtt-10">\glslongfootnotefont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 6079--><p class="noindent" >
+ to format the long form elsewhere (for example, when used with <span
+class="cmtt-10">\glsxtrlong</span>).
+ </p><!--l. 6083--><p class="noindent" >As from version 1.07, all the footnote styles use:
+ </p><!--l. 6084--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrabbrvfootnote</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27158"></a> <span
+class="cmtt-10">\glsxtrabbrvfootnote{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 6086--><p class="noindent" >
+ By default, this just does <span
+class="cmtt-10">\footnote</span><a
+ id="dx1-27159"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">} </span>(the first argument is ignored). For
+ example, to make the footnote text link to the relevant place in the
+ glossary:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-149">
+ \renewcommand{\glsxtrabbrvfootnote}[2]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\footnote{\glshyperlink[#2]{#1}}%
+ &#x00A0;<br />}
+</div>
+ <!--l. 6094--><p class="nopar" > or to include the short form with a hyperlink:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-150">
+ \renewcommand{\glsxtrabbrvfootnote}[2]{%
+ &#x00A0;<br />&#x00A0;&#x00A0;\footnote{\glshyperlink[\glsfmtshort{#1}]{#1}:&#x00A0;#2}%
+ &#x00A0;<br />}
+</div>
+ <!--l. 6100--><p class="nopar" > Note that I haven&#8217;t used commands like <span
+class="cmtt-10">\glsxtrshort </span>to avoid interference
+ (see <a
+href="#sec:entryfmtmods"><span
+class="cmsy-10">&sect;</span>2.3 </a><a
+href="#sec:entryfmtmods">Entry Display Style Modifications<!--tex4ht:ref: sec:entryfmtmods --></a> and <a
+href="#sec:nested"><span
+class="cmsy-10">&sect;</span>2.7 </a><a
+href="#sec:nested">Nested Links<!--tex4ht:ref: sec:nested --></a>).
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.footnote"></a><span
+class="cmssbx-10">footnote</span><a
+ id="dx1-27160"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-27161"></a>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sc-footnote"></a><span
+class="cmssbx-10">short-sc-footnote</span><a
+ id="dx1-27162"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-27163"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-27164"></a>. (This style was originally called <span
+class="cmss-10">footnote-sc</span><a
+ id="dx1-27165"></a>. Renamed in
+ version 1.04, but original name retained as a deprecated synonym for
+ backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sc-footnote"></a><span
+class="cmssbx-10">short-sc-footnote</span><a
+ id="dx1-27166"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-27167"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-27168"></a>. (This style was originally called <span
+class="cmss-10">footnote-sm</span><a
+ id="dx1-27169"></a>. Renamed in
+ version 1.04, but original name retained as a deprecated synonym for
+ backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-footnote"></a><span
+class="cmssbx-10">short-em-footnote</span><a
+ id="dx1-27170"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-27171"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-27172"></a>. (This style was originally called <span
+class="cmss-10">footnote-em</span><a
+ id="dx1-27173"></a>. Renamed in
+ version 1.04, but original name retained as a deprecated synonym for
+ backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-postfootnote"></a><span
+class="cmssbx-10">short-postfootnote</span><a
+ id="dx1-27174"></a> </dt><dd
+class="description">This is similar to the <a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-27175"></a> style but doesn&#8217;t modify the
+ category attribute. Instead it changes <span
+class="cmtt-10">\glsxtrpostlink</span>&#x27E8;<span
+class="cmti-10">category</span>&#x27E9;<a
+ id="dx1-27176"></a>&#x00A0;to insert the
+ footnote after the <a
+ id="dx1-27177"></a><a
+href="#glo:linktext">link-text</a> on <a
+ id="dx1-27178"></a><a
+href="#glo:firstuse">first use</a>. This will also defer the footnote
+ until after any following punctuation character that&#8217;s recognised by
+ <span
+class="cmtt-10">\glsxtrifnextpunc</span><a
+ id="dx1-27179"></a>.
+ <!--l. 6137--><p class="noindent" >The inline full form uses the &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;) style. The <span
+class="cmss-10">name</span><a
+ id="dx1-27180"></a> is set to the short
+ form. The <span
+class="cmss-10">description</span><a
+ id="dx1-27181"></a> is set to the long form. Note that this style will change
+ <span
+class="cmtt-10">\glsxtrfull </span>(and its variants) so that it fakes non-<a
+ id="dx1-27182"></a>first use. (Otherwise the
+ footnote would appear after the inline form.)
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.postfootnote"></a><span
+class="cmssbx-10">postfootnote</span><a
+ id="dx1-27183"></a> </dt><dd
+class="description">A synonym for <a
+href="#abbrstyle.short-postfootnote"><span
+class="cmss-10">short-postfootnote</span></a><a
+ id="dx1-27184"></a>.
+
+
+
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sc-postfootnote"></a><span
+class="cmssbx-10">short-sc-postfootnote</span><a
+ id="dx1-27185"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-postfootnote"><span
+class="cmss-10">short-postfootnote</span></a><a
+ id="dx1-27186"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvscfont</span><a
+ id="dx1-27187"></a>. (This style was originally called <span
+class="cmss-10">postfootnote-sc</span><a
+ id="dx1-27188"></a>. Renamed in
+ version 1.04, but original name retained as a deprecated synonym for
+ backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-sm-postfootnote"></a><span
+class="cmssbx-10">short-sm-postfootnote</span><a
+ id="dx1-27189"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-postfootnote"><span
+class="cmss-10">short-postfootnote</span></a><a
+ id="dx1-27190"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvsmfont</span><a
+ id="dx1-27191"></a>. (This style was originally called <span
+class="cmss-10">postfootnote-sm</span><a
+ id="dx1-27192"></a>. Renamed
+ in version 1.04, but original name retained as a deprecated synonym for
+ backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-em-postfootnote"></a><span
+class="cmssbx-10">short-em-postfootnote</span><a
+ id="dx1-27193"></a> </dt><dd
+class="description">Like <a
+href="#abbrstyle.short-postfootnote"><span
+class="cmss-10">short-postfootnote</span></a><a
+ id="dx1-27194"></a> but redefines <span
+class="cmtt-10">\glsabbrvfont </span>to use
+ <span
+class="cmtt-10">\glsabbrvemfont</span><a
+ id="dx1-27195"></a>. (This style was originally called <span
+class="cmss-10">postfootnote-em</span><a
+ id="dx1-27196"></a>. Renamed
+ in version 1.04, but original name retained as a deprecated synonym for
+ backward-compatibility.)
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-postlong-user"></a><span
+class="cmssbx-10">short-postlong-user</span><a
+ id="dx1-27197"></a> </dt><dd
+class="description">This style was introduced in version 1.12. It&#8217;s like the
+ <a
+href="#abbrstyle.short-long-user"><span
+class="cmss-10">short-long-user</span></a><a
+ id="dx1-27198"></a> style but defers the parenthetical material to after the link-text.
+ This means that you don&#8217;t have such a long hyperlink (which can cause
+ problems for the DVI <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;format) and it also means that the user supplied
+ material can include a hyperlink to another location. The <span
+class="cmss-10">name</span><a
+ id="dx1-27199"></a> key is obtained
+ from <span
+class="cmtt-10">\glsxtrshortlongname</span>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.short-postlong-user-desc"></a><span
+class="cmssbx-10">short-postlong-user-desc</span><a
+ id="dx1-27200"></a> </dt><dd
+class="description">This style was introduced in version 1.12. It&#8217;s like the
+ above <a
+href="#abbrstyle.short-postlong-user"><span
+class="cmss-10">short-postlong-user</span></a><a
+ id="dx1-27201"></a> style but the <span
+class="cmss-10">description</span><a
+ id="dx1-27202"></a> must be specified. The <span
+class="cmss-10">name</span><a
+ id="dx1-27203"></a>
+ is obtained from <span
+class="cmtt-10">\glsxtrshortlonguserdescname</span>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-postshort-user"></a><span
+class="cmssbx-10">long-postshort-user</span><a
+ id="dx1-27204"></a> </dt><dd
+class="description">This style was introduced in version 1.12. It&#8217;s like the
+ above <a
+href="#abbrstyle.short-postlong-user"><span
+class="cmss-10">short-postlong-user</span></a><a
+ id="dx1-27205"></a> style but the long form is shown first and
+ the short form is in the parenthetical material (as for <a
+href="#abbrstyle.long-short-user"><span
+class="cmss-10">long-short-user</span></a><a
+ id="dx1-27206"></a>)
+ style.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-postshort-user-desc"></a><span
+class="cmssbx-10">long-postshort-user-desc</span><a
+ id="dx1-27207"></a> </dt><dd
+class="description">This style was introduced in version 1.12. It&#8217;s like the
+ above <a
+href="#abbrstyle.long-postshort-user"><span
+class="cmss-10">long-postshort-user</span></a><a
+ id="dx1-27208"></a> style but the <span
+class="cmss-10">description</span><a
+ id="dx1-27209"></a> must be specified. The <span
+class="cmss-10">name</span><a
+ id="dx1-27210"></a>
+ is obtained from <span
+class="cmtt-10">\glsxtrlongshortuserdescname</span>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-hyphen-short-hyphen"></a><span
+class="cmssbx-10">long-hyphen-short-hyphen</span><a
+ id="dx1-27211"></a> </dt><dd
+class="description">This style (new to v1.17) is designed to work
+ with the <a
+href="#catattr.markwords"><span
+class="cmss-10">markwords</span></a><a
+ id="dx1-27212"></a> category attribute. The full form is formatted
+ using
+ <!--l. 6198--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlonghyphenshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27213"></a> <span
+class="cmtt-10">\glsxtrlonghyphenshort{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+ </p><!--l. 6200--><p class="noindent" >
+ where &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; is the inserted material provided in the final optional argument of
+ commands like <span
+class="cmtt-10">\insert</span>. If &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; start with a hyphen, then this locally
+ redefines <span
+class="cmtt-10">\glsxtrwordsep</span><a
+ id="dx1-27214"></a> to a hyphen, which means that if the <a
+href="#catattr.markwords"><span
+class="cmss-10">markwords</span></a><a
+ id="dx1-27215"></a>
+ attribute is set then the long form will become hyphenated. (If this attribute
+ isn&#8217;t set, there&#8217;s no alteration to the way the long form is displayed.) The <span
+class="cmss-10">name</span><a
+ id="dx1-27216"></a>
+ key is obtained from <span
+class="cmtt-10">\glsxtrlongshortname</span>.
+ </p><!--l. 6210--><p class="noindent" >Unlike the other &#x27E8;<span
+class="cmti-10">long</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;) type of styles, such as <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-27217"></a>, this style also
+ repeats the insertion in the parenthetical part, so that the first use form
+ is:
+ </p><div class="quote">
+ <!--l. 6215--><p class="noindent" ><span
+class="cmtt-10">\glsfirstlonghyphenfont{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;
+ (<span
+class="cmtt-10">\glsfirstabbrvhyphenfont{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;)</p></div>
+ <!--l. 6218--><p class="noindent" >The space before the parenthetical material is actually given by
+ <span
+class="cmtt-10">\glsxtrfullsep{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>which defaults to a space. The &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; may be
+ moved into the formatting commands according to the conditional
+ <span
+class="cmtt-10">\ifglsxtrinsertinside</span>.
+ </p><!--l. 6223--><p class="noindent" >For example, if <span
+class="cmtt-10">ip </span>is defined using:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-151">
+ \glssetcategoryattribute{english}{markwords}{true}
+ &#x00A0;<br />\setabbreviationstyle[english]{long-hyphen-short-hyphen}
+ &#x00A0;<br />\newabbreviation[category=english]{ip}{IP}{Internet&#x00A0;Protocol}
+</div>
+ <!--l. 6228--><p class="nopar" > then
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-152">
+ \gls{ip}[-Adressen]
+</div>
+ <!--l. 6232--><p class="nopar" > will do
+ </p><div class="quote">
+ <!--l. 6235--><p class="noindent" >Internet-Protocol-Adressen (IP-Adressen)</p></div>
+ <!--l. 6237--><p class="noindent" >on first use, whereas
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-153">
+ \gls{ip}[&#x00A0;Address]
+</div>
+ <!--l. 6240--><p class="nopar" > will do
+ </p><div class="quote">
+ <!--l. 6243--><p class="noindent" >Internet Protocol Address (IP Address)</p></div>
+ <!--l. 6245--><p class="noindent" >on first use.
+ </p><!--l. 6247--><p class="noindent" ><div class="important" title="Important Note"> Note that the hyphenation isn&#8217;t applied when using commands like
+ <span
+class="cmtt-10">\glsxtrlong</span>. This means that
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-154">
+ \glsxtrlong{ip}[-Adressen]
+</div>
+ <!--l. 6252--><p class="nopar" > will do
+ </p><div class="quote">
+ <!--l. 6255--><p class="noindent" >Internet Protocol-Adressen</p></div>
+ </div>
+ <!--l. 6257--><p class="noindent" >
+ </p><!--l. 6259--><p class="noindent" >If the <a
+href="#catattr.markwords"><span
+class="cmss-10">markwords</span></a><a
+ id="dx1-27218"></a> attribute hadn&#8217;t been set, then the first use of
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-155">
+ \gls{ip}[-Adressen]
+</div>
+ <!--l. 6263--><p class="nopar" > would do
+ </p><div class="quote">
+ <!--l. 6266--><p class="noindent" >Internet Protocol-Adressen (IP-Adressen)</p></div>
+ <!--l. 6268--><p class="noindent" >instead.
+ </p><!--l. 6270--><p class="noindent" ><div class="important" title="Important Note"> If the inserted material &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; is likely to contain commands like <span
+class="cmtt-10">\gls</span>,
+ then use <a
+href="#abbrstyle.long-hyphen-postshort-hyphen"><span
+class="cmss-10">long-hyphen-postshort-hyphen</span></a><a
+ id="dx1-27219"></a> instead to avoid nested links.
+ </div>
+ </p><!--l. 6274--><p class="noindent" >
+ </p><!--l. 6276--><p class="noindent" >If you want the short version in small-caps, you can just redefine
+ <span
+class="cmtt-10">\glsabbrvhyphenfont </span>and <span
+class="cmtt-10">\glsxtrhyphensuffix </span>to use the small-caps
+ versions. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-156">
+ \renewcommand{\glsabbrvhyphenfont}{\glsabbrvscfont}
+ &#x00A0;<br />\renewcommand{\glsxtrhyphensuffix}{\glsxtrscsuffix}
+</div>
+ <!--l. 6282--><p class="nopar" > Similarly for other font-changing variations.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-hyphen-noshort-desc-noreg"></a><span
+class="cmssbx-10">long-hyphen-noshort-desc-noreg</span><a
+ id="dx1-27220"></a> </dt><dd
+class="description">New to version 1.17, this style is like
+ <a
+href="#abbrstyle.long-hyphen-short-hyphen-desc"><span
+class="cmss-10">long-hyphen-short-hyphen-desc</span></a><a
+ id="dx1-27221"></a> except that the parenthetical part is omitted and
+ the long form is displayed on subsequent use. The short form can be accessed
+ with <span
+class="cmtt-10">\glsxtrshort </span>but just uses the default abbreviation font. There&#8217;s
+ no regular version of this style as the regular form doesn&#8217;t have the
+ flexibility to deal with the hyphen switch. The <span
+class="cmss-10">name</span><a
+ id="dx1-27222"></a> is obtained from
+ <span
+class="cmtt-10">\glsxtrlongnoshortdescname</span>.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-hyphen-noshort-noreg"></a><span
+class="cmssbx-10">long-hyphen-noshort-noreg</span><a
+ id="dx1-27223"></a> </dt><dd
+class="description">New to version 1.17, this style is like
+ <a
+href="#abbrstyle.long-hyphen-noshort-desc-noreg"><span
+class="cmss-10">long-hyphen-noshort-desc-noreg</span></a><a
+ id="dx1-27224"></a> but the name is set to the short form and the
+ description is set to the long form.
+ </dd><dt class="description">
+<a
+ id="abbrstyle.long-hyphen-short-hyphen-desc"></a><span
+class="cmssbx-10">long-hyphen-short-hyphen-desc</span><a
+ id="dx1-27225"></a> </dt><dd
+class="description">
+ <!--l. 6303--><p class="noindent" >New to version 1.17. This is similar to <a
+href="#abbrstyle.long-hyphen-short-hyphen"><span
+class="cmss-10">long-hyphen-short-hyphen</span></a><a
+ id="dx1-27226"></a> but the user
+ supplies the description. The <span
+class="cmss-10">name</span><a
+ id="dx1-27227"></a> is obtained from <span
+class="cmtt-10">\glsxtrlongshortdescname</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-hyphen-postshort-hyphen"></a><span
+class="cmssbx-10">long-hyphen-postshort-hyphen</span><a
+ id="dx1-27228"></a> </dt><dd
+class="description">
+ <!--l. 6310--><p class="noindent" >New to version 1.17. This is similar to <a
+href="#abbrstyle.long-hyphen-short-hyphen"><span
+class="cmss-10">long-hyphen-short-hyphen</span></a><a
+ id="dx1-27229"></a> but the
+ inserted and parenthetical material are moved to the post-link hook. On first
+ use, <span
+class="cmtt-10">\gls{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span>will do <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\glsxtrlonghyphen{</span>&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">}\glsxtrposthyphenshort</span>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;
+ <br /><spacer type=vertical size=10></span>
+ where
+ </p><!--l. 6318--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrposthyphenshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27230"></a> <span
+class="cmtt-10">\glsxtrposthyphenshort{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+ </div><hr>
+ </p><!--l. 6320--><p class="noindent" >
+ is in the post-link hook. This uses the format: <spacer type=vertical size=10><span class="obeylines-h">
+ <br />&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; (<span
+class="cmtt-10">\glsfirstabbrvhyphenfont{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmti-10">isnert</span>&#x27E9;)
+ <br /><spacer type=vertical size=10></span>
+
+
+
+ </p><!--l. 6326--><p class="noindent" ><div class="important" title="Important Note"> The singular short form is always used here, even with <span
+class="cmtt-10">\glspl</span>. (Unlike
+ <a
+href="#abbrstyle.long-hyphen-long-hyphen"><span
+class="cmss-10">long-hyphen-long-hyphen</span></a><a
+ id="dx1-27231"></a>.) </div>
+ </p><!--l. 6329--><p class="noindent" >
+ </p><!--l. 6331--><p class="noindent" >The part in the link-text on first use:
+ </p><!--l. 6332--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrlonghyphen</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27232"></a> <span
+class="cmtt-10">\glsxtrlonghyphen{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ </div><hr>
+ </p><!--l. 6334--><p class="noindent" >
+ checks if &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; starts with a hyphen. If it does, then <span
+class="cmtt-10">\glsxtrwordsep </span>is locally
+ redefined to a hyphen. This command only uses &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; to test if it starts with a
+ hyphen. The actual insertion code isn&#8217;t typeset until the post-link hook and it&#8217;s
+ also localised, which means that you can use commands like <span
+class="cmtt-10">\gls </span>in &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; for
+ this style without causing nested hyperlinks, but only for commands like
+ <span
+class="cmtt-10">\gls</span>.
+ </p><!--l. 6343--><p class="noindent" ><div class="important" title="Important Note"> Don&#8217;t use <span
+class="cmtt-10">\gls </span>in the &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; part for commands like <span
+class="cmtt-10">\glsxtrfull</span>,
+ <span
+class="cmtt-10">\glsxtrshort </span>or <span
+class="cmtt-10">\glsxtrlong</span>. </div>
+ </p><!--l. 6346--><p class="noindent" >
+ </p><!--l. 6348--><p class="noindent" >The inline full display format used by commands like <span
+class="cmtt-10">\glsxtrfull</span>
+ behaves differently to the first use of <span
+class="cmtt-10">\gls </span>with this style. It&#8217;s better
+ to use <span
+class="cmtt-10">\glsreset{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}\gls{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>if you want to ensure the full
+ format.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.long-hyphen-postshort-hyphen-desc"></a><span
+class="cmssbx-10">long-hyphen-postshort-hyphen-desc</span><a
+ id="dx1-27233"></a> </dt><dd
+class="description">
+ <!--l. 6355--><p class="noindent" >New to version 1.17. This is similar to <a
+href="#abbrstyle.long-hyphen-postshort-hyphen"><span
+class="cmss-10">long-hyphen-postshort-hyphen</span></a><a
+ id="dx1-27234"></a>
+ but the user supplies the description. The <span
+class="cmss-10">name</span><a
+ id="dx1-27235"></a> is obtained from
+ <span
+class="cmtt-10">\glsxtrlongshortdescname</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-hyphen-long-hyphen"></a><span
+class="cmssbx-10">short-hyphen-long-hyphen</span><a
+ id="dx1-27236"></a> </dt><dd
+class="description">This style (new to v1.17) is like <a
+href="#abbrstyle.long-hyphen-short-hyphen"><span
+class="cmss-10">long-hyphen-short-hyphen</span></a><a
+ id="dx1-27237"></a>,
+ except that the short form is displayed first followed by the long form in
+ parentheses. The full form is formatted using
+ <!--l. 6365--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrshorthyphenlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27238"></a> <span
+class="cmtt-10">\glsxtrshorthyphenlong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">short</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">long</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 6367--><p class="noindent" >
+ which behaves in an analogous way to <span
+class="cmtt-10">\glsxtrlonghyphenshort</span>. The <span
+class="cmss-10">name</span><a
+ id="dx1-27239"></a> is
+ obtained from <span
+class="cmtt-10">\glsxtrshortlongname</span>.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-hyphen-long-hyphen-desc"></a><span
+class="cmssbx-10">short-hyphen-long-hyphen-desc</span><a
+ id="dx1-27240"></a> </dt><dd
+class="description">
+ <!--l. 6373--><p class="noindent" >New to version 1.17. This is similar to <a
+href="#abbrstyle.short-hyphen-long-hyphen"><span
+class="cmss-10">short-hyphen-long-hyphen</span></a><a
+ id="dx1-27241"></a> but the user
+ supplies the description. The <span
+class="cmss-10">name</span><a
+ id="dx1-27242"></a> is obtained from <span
+class="cmtt-10">\glsxtrshortlongdescname</span>.
+
+
+
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-hyphen-postlong-hyphen"></a><span
+class="cmssbx-10">short-hyphen-postlong-hyphen</span><a
+ id="dx1-27243"></a> </dt><dd
+class="description">This style (new to v1.17) is like
+ <a
+href="#abbrstyle.long-hyphen-postshort-hyphen"><span
+class="cmss-10">long-hyphen-postshort-hyphen</span></a><a
+ id="dx1-27244"></a>, but the short form is displayed first followed by
+ the long form in parentheses. On first use, <span
+class="cmtt-10">\gls{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span>will do
+ <spacer type=vertical size=10><span class="obeylines-h">
+ <br /><span
+class="cmtt-10">\glsxtrshorthyphen{</span>&#x27E8;<span
+class="cmti-10">short</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;<span
+class="cmtt-10">}\glsxtrposthyphenlong</span>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmti-10">insert</span>&#x27E9;
+ <br /><spacer type=vertical size=10></span>
+ where
+ <!--l. 6388--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrposthyphenlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-27245"></a> <span
+class="cmtt-10">\glsxtrposthyphenlong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;
+ </div><hr>
+ </p><!--l. 6390--><p class="noindent" >
+ is in the post-link hook. These commands behave in an analogous manner to
+ those used with <a
+href="#abbrstyle.long-hyphen-postshort-hyphen"><span
+class="cmss-10">long-hyphen-postshort-hyphen</span></a><a
+ id="dx1-27246"></a>. The <span
+class="cmss-10">name</span><a
+ id="dx1-27247"></a> is obtained from
+ <span
+class="cmtt-10">\glsxtrshortlongname</span>.
+ </p><!--l. 6395--><p class="noindent" ><div class="important" title="Important Note"> Don&#8217;t use <span
+class="cmtt-10">\gls </span>in the &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; part for commands like <span
+class="cmtt-10">\glsxtrfull</span>,
+ <span
+class="cmtt-10">\glsxtrshort </span>or <span
+class="cmtt-10">\glsxtrlong</span>. </div>
+ </p><!--l. 6398--><p class="noindent" >
+ </p><!--l. 6400--><p class="noindent" >The inline full display format used by commands like <span
+class="cmtt-10">\glsxtrfull</span>
+ behaves differently to the first use of <span
+class="cmtt-10">\gls </span>with this style. It&#8217;s better
+ to use <span
+class="cmtt-10">\glsreset{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}\gls{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>if you want to ensure the full
+ format.
+ </p></dd><dt class="description">
+<a
+ id="abbrstyle.short-hyphen-postlong-hyphen-desc"></a><span
+class="cmssbx-10">short-hyphen-postlong-hyphen-desc</span><a
+ id="dx1-27248"></a> </dt><dd
+class="description">
+ <!--l. 6407--><p class="noindent" >New to version 1.17. This is similar to <a
+href="#abbrstyle.short-hyphen-postlong-hyphen"><span
+class="cmss-10">short-hyphen-postlong-hyphen</span></a><a
+ id="dx1-27249"></a>
+ but the user supplies the description. The <span
+class="cmss-10">name</span><a
+ id="dx1-27250"></a> is obtained from
+ <span
+class="cmtt-10">\glsxtrshortlongdescname</span>.
+</p>
+ </dd></dl>
+<!--l. 6414--><p class="noindent" >
+</p>
+<!--l. 6414--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">3.5 </span> <a
+ id="sec:newabbrvstyle"></a>Defining New Abbreviation Styles</h3>
+<!--l. 6417--><p class="noindent" >New abbreviation styles may be defined using:
+</p><!--l. 6418--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\newabbreviationstyle</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28001"></a> <span
+class="cmtt-10">\newabbreviationstyle{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">setup</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">fmts</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6420--><p class="noindent" >
+
+
+
+</p><!--l. 6421--><p class="noindent" >where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the name of the new style (as used in the mandatory argument of
+<span
+class="cmtt-10">\setabbreviationstyle</span><a
+ id="dx1-28002"></a>). This is similar but not identical to the <span
+class="cmss-10">glossaries </span>package&#8217;s
+<span
+class="cmtt-10">\newacronymstyle</span><a
+ id="dx1-28003"></a> command.
+</p><!--l. 6428--><p class="indent" > <div class="important" title="Important Note"> You can&#8217;t use styles defined by <span
+class="cmtt-10">\newacronymstyle </span>with <span
+class="cmss-10">glossaries-extra</span>
+unless you have reverted <span
+class="cmtt-10">\newacronym</span><a
+ id="dx1-28004"></a> back to its generic definition from
+<span
+class="cmss-10">glossaries </span>(using <span
+class="cmtt-10">\RestoreAcronyms</span><a
+ id="dx1-28005"></a>). The acronym styles from the <span
+class="cmss-10">glossaries</span>
+package can&#8217;t be used with abbreviations defined with <span
+class="cmtt-10">\newabbreviation</span>.
+</div>
+</p><!--l. 6435--><p class="noindent" >
+</p><!--l. 6437--><p class="indent" > The &#x27E8;<span
+class="cmti-10">setup</span>&#x27E9; argument deals with the way the entry is defined and may
+set attributes for the given abbreviation category. This argument should
+redefine
+</p><!--l. 6440--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\CustomAbbreviationFields</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28006"></a> <span
+class="cmtt-10">\CustomAbbreviationFields </span></div><hr>
+</p><!--l. 6442--><p class="noindent" >
+to set the entry fields including the <span
+class="cmss-10">name</span><a
+ id="dx1-28007"></a> (defaults to the short form if omitted),
+<span
+class="cmss-10">sort</span><a
+ id="dx1-28008"></a>, <span
+class="cmss-10">first</span><a
+ id="dx1-28009"></a>, <span
+class="cmss-10">firstplural</span><a
+ id="dx1-28010"></a>. Other fields may also be set, such as <span
+class="cmss-10">text</span><a
+ id="dx1-28011"></a>, <span
+class="cmss-10">plural</span><a
+ id="dx1-28012"></a> and
+<span
+class="cmss-10">description</span><a
+ id="dx1-28013"></a>.
+</p><!--l. 6449--><p class="indent" > <div class="important" title="Important Note"> <span
+class="cmtt-10">\CustomAbbreviationFields </span>is expanded by <span
+class="cmtt-10">\newabbreviation </span>so take care to
+protect commands that shouldn&#8217;t be expanded. </div>
+</p><!--l. 6452--><p class="noindent" >
+</p><!--l. 6454--><p class="indent" > For example, the <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-28014"></a> style has the following in &#x27E8;<span
+class="cmti-10">setup</span>&#x27E9;:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-157">
+&#x00A0;&#x00A0;\renewcommand*{\CustomAbbreviationFields}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;name={\protect\glsabbrvfont{\the\glsshorttok}},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;sort={\the\glsshorttok},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;first={\protect\glsfirstlongfont{\the\glslongtok}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\protect\glsxtrfullsep{\the\glslabeltok}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\protect\glsxtrfullsep{\the\glslabeltok}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;plural={\protect\glsabbrvfont{\the\glsshortpltok}},%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;description={\the\glslongtok}}%
+</div>
+<!--l. 6468--><p class="nopar" > Note that the <span
+class="cmss-10">first</span><a
+ id="dx1-28015"></a> and <span
+class="cmss-10">firstplural</span><a
+ id="dx1-28016"></a> are set even though they&#8217;re not used by
+<span
+class="cmtt-10">\gls</span>.
+</p><!--l. 6472--><p class="indent" > The basic styles, such as <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-28017"></a>, use commands like <span
+class="cmtt-10">\glsabbrvfont </span>(which are
+redefined whenever the style formatting is set) within <span
+class="cmtt-10">\CustomAbbreviationFields</span>.
+Other styles, such as <a
+href="#abbrstyle.long-em-short-em"><span
+class="cmss-10">long-em-short-em</span></a><a
+ id="dx1-28018"></a> directly use their own custom commands, such
+as <span
+class="cmtt-10">\glsabbrvemfont</span>. With these styles, commands like <span
+class="cmtt-10">\glsabbrvfont </span>still need to
+be defined as appropriate in the &#x27E8;<span
+class="cmti-10">fmts</span>&#x27E9; argument even if they&#8217;re not used within
+<span
+class="cmtt-10">\CustomAbbreviationFields</span>.
+</p><!--l. 6481--><p class="indent" > The &#x27E8;<span
+class="cmti-10">setup</span>&#x27E9; argument may also redefine
+</p><!--l. 6482--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrPostNewAbbreviation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28019"></a> <span
+class="cmtt-10">\GlsXtrPostNewAbbreviation </span></div><hr>
+</p><!--l. 6484--><p class="noindent" >
+which can be used to assign attributes. (This will automatically be initialised to do
+nothing.)
+</p><!--l. 6488--><p class="indent" > For example, the <a
+href="#abbrstyle.short-footnote"><span
+class="cmss-10">short-footnote</span></a><a
+ id="dx1-28020"></a> includes the following in &#x27E8;<span
+class="cmti-10">setup</span>&#x27E9;:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-158">
+&#x00A0;&#x00A0;\renewcommand*{\GlsXtrPostNewAbbreviation}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glshasattribute{\the\glslabeltok}{regular}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glssetattribute{\the\glslabeltok}{regular}{false}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+</div>
+<!--l. 6499--><p class="nopar" > This sets the <a
+href="#catattr.nohyperfirst"><span
+class="cmss-10">nohyperfirst</span></a><a
+ id="dx1-28021"></a> attribute to &#8220;true&#8221;. It also unsets the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-28022"></a> attribute if it
+has previously been set. Note that the <a
+href="#catattr.nohyperfirst"><span
+class="cmss-10">nohyperfirst</span></a><a
+ id="dx1-28023"></a> attribute doesn&#8217;t get unset by
+other styles, so take care not to switch styles for the same category.
+</p><!--l. 6506--><p class="indent" > You can access the short, long, short plural and long plural values through the
+following token registers.
+</p><!--l. 6509--><p class="indent" > Short value (defined by <span
+class="cmss-10">glossaries</span>):
+</p><!--l. 6510--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsshorttok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28024"></a> <span
+class="cmtt-10">\glsshorttok </span></div><hr>
+</p><!--l. 6512--><p class="noindent" >
+</p><!--l. 6514--><p class="indent" > Short plural value (defined by <span
+class="cmss-10">glossaries-extra</span>):
+</p><!--l. 6515--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsshortpltok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28025"></a> <span
+class="cmtt-10">\glsshortpltok </span></div><hr>
+</p><!--l. 6517--><p class="noindent" >
+(This may be the default value or, if provided, the value provided by the user
+through the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-28026"></a> key in the optional argument of <span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-28027"></a>.)
+</p><!--l. 6522--><p class="indent" > Long value (defined by <span
+class="cmss-10">glossaries</span>):
+</p><!--l. 6523--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongtok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28028"></a> <span
+class="cmtt-10">\glslongtok </span></div><hr>
+</p><!--l. 6525--><p class="noindent" >
+</p><!--l. 6527--><p class="indent" > Long plural value (defined by <span
+class="cmss-10">glossaries-extra</span>):
+</p><!--l. 6528--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongpltok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28029"></a> <span
+class="cmtt-10">\glslongpltok </span></div><hr>
+</p><!--l. 6530--><p class="noindent" >
+(This may be the default value or, if provided, the value provided by the user
+through the <span
+class="cmss-10">longplural</span><a
+ id="dx1-28030"></a> key in the optional argument of <span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-28031"></a>.)
+</p><!--l. 6535--><p class="indent" > The short or long values may be modified by attributes (such as <a
+href="#catattr.markwords"><span
+class="cmss-10">markwords</span></a><a
+ id="dx1-28032"></a>). The
+above registers reflect the modification. If you want to access the original
+(unmodified) short or long form (as provided in the final two arguments of
+<span
+class="cmtt-10">\newabbreviation</span>), then use the commands:
+</p><!--l. 6540--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrorgshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28033"></a> <span
+class="cmtt-10">\glsxtrorgshort </span></div><hr>
+</p><!--l. 6542--><p class="noindent" >
+for the short form and
+</p><!--l. 6544--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrorglong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28034"></a> <span
+class="cmtt-10">\glsxtrorglong </span></div><hr>
+</p><!--l. 6546--><p class="noindent" >
+for the long form. (These may be useful for the <span
+class="cmss-10">sort</span><a
+ id="dx1-28035"></a> key to avoid any formatting that
+
+
+
+may be added by the attribute setting.)
+</p><!--l. 6550--><p class="indent" > There are two other registers available that are defined by <span
+class="cmss-10">glossaries</span>:
+</p><!--l. 6553--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslabeltok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28036"></a> <span
+class="cmtt-10">\glslabeltok </span></div><hr>
+</p><!--l. 6555--><p class="noindent" >
+which contains the entry&#8217;s label and
+</p><!--l. 6557--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glskeylisttok</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28037"></a> <span
+class="cmtt-10">\glskeylisttok </span></div><hr>
+</p><!--l. 6559--><p class="noindent" >
+which contains the values provided in the optional argument of <span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-28038"></a>.
+</p><!--l. 6563--><p class="indent" > Remember put <span
+class="cmtt-10">\the </span>in front of the register command as in the examples above.
+The category label can be access through the command (not a register):
+</p><!--l. 6566--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glscategorylabel</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28039"></a> <span
+class="cmtt-10">\glscategorylabel </span></div><hr>
+</p><!--l. 6568--><p class="noindent" >
+This may be used inside the definition of <span
+class="cmtt-10">\GlsXtrPostNewAbbreviation</span>.
+</p><!--l. 6572--><p class="indent" > If you want to base a style on an existing style, you can use
+</p><!--l. 6573--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrUseAbbrStyleSetup</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28040"></a> <span
+class="cmtt-10">\GlsXtrUseAbbrStyleSetup{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6575--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the name of the existing style. For example, the <a
+href="#abbrstyle.long-noshort-sc-desc"><span
+class="cmss-10">long-noshort-sc-desc</span></a><a
+ id="dx1-28041"></a>
+style simply does
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-159">
+\GlsXtrUseAbbrStyleSetup{long-noshort-desc}
+</div>
+<!--l. 6580--><p class="nopar" > within &#x27E8;<span
+class="cmti-10">setup</span>&#x27E9;.
+</p><!--l. 6583--><p class="indent" > The &#x27E8;<span
+class="cmti-10">fmts</span>&#x27E9; argument deals with the way the entry is displayed in the document.
+This argument should redefine the following commands.
+</p><!--l. 6587--><p class="indent" > The default suffix for the plural short form (if not overridden by the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-28042"></a>
+key):
+</p><!--l. 6589--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\abbrvpluralsuffix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28043"></a> <span
+class="cmtt-10">\abbrvpluralsuffix </span></div><hr>
+</p><!--l. 6591--><p class="noindent" >
+(Note that this isn&#8217;t used for the plural long form, which just uses the regular
+<span
+class="cmtt-10">\glspluralsuffix</span>.)
+</p><!--l. 6595--><p class="indent" > The font used for the short form on <a
+ id="dx1-28044"></a><a
+href="#glo:firstuse">first use</a> or in the full forms:
+</p><!--l. 6596--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstabbrvfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28045"></a> <span
+class="cmtt-10">\glsfirstabbrvfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6598--><p class="noindent" >
+</p><!--l. 6600--><p class="indent" > The font used for the short form on subsequent use or through commands like
+<span
+class="cmtt-10">\glsxtrshort</span><a
+ id="dx1-28046"></a>:
+</p><!--l. 6602--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsabbrvfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28047"></a> <span
+class="cmtt-10">\glsabbrvfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6604--><p class="noindent" >
+</p><!--l. 6606--><p class="indent" > The font used for the long form on <a
+ id="dx1-28048"></a>first use or in the full forms:
+</p><!--l. 6607--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfirstlongfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28049"></a> <span
+class="cmtt-10">\glsfirstlongfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6609--><p class="noindent" >
+</p><!--l. 6611--><p class="indent" > The font used for the long form in commands like <span
+class="cmtt-10">\glsxtrlong </span>use:
+</p><!--l. 6613--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslongfont</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28050"></a> <span
+class="cmtt-10">\glslongfont{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6615--><p class="noindent" >
+</p><!--l. 6617--><p class="indent" > Display full form singular no case-change (used by <span
+class="cmtt-10">\gls</span><a
+ id="dx1-28051"></a> on <a
+ id="dx1-28052"></a>first use for
+abbreviations without the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-28053"></a> attribute set):
+</p><!--l. 6620--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28054"></a> <span
+class="cmtt-10">\glsxtrfullformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6622--><p class="noindent" >
+</p><!--l. 6624--><p class="indent" > Display full form singular first letter converted to upper case (used by <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-28055"></a> on
+<a
+ id="dx1-28056"></a>first use for abbreviations without the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-28057"></a> attribute set):
+</p><!--l. 6627--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrfullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28058"></a> <span
+class="cmtt-10">\Glsxtrfullformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6629--><p class="noindent" >
+</p><!--l. 6631--><p class="indent" > Display full form plural no case-change (used by <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-28059"></a> on <a
+ id="dx1-28060"></a>first use for
+abbreviations without the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-28061"></a> attribute set):
+</p><!--l. 6634--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfullplformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28062"></a> <span
+class="cmtt-10">\glsxtrfullplformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 6636--><p class="noindent" >
+</p><!--l. 6638--><p class="indent" > Display full form plural first letter converted to upper case (used by <span
+class="cmtt-10">\Glspl</span><a
+ id="dx1-28063"></a> on
+<a
+ id="dx1-28064"></a><a
+href="#glo:firstuse">first use</a> for abbreviations without the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-28065"></a> attribute set):
+</p><!--l. 6641--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrfullplformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28066"></a> <span
+class="cmtt-10">\Glsxtrfullplformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6643--><p class="noindent" >
+</p><!--l. 6645--><p class="indent" > In addition &#x27E8;<span
+class="cmti-10">fmts</span>&#x27E9; may also redefine the following commands that govern the inline
+full formats. If the style doesn&#8217;t redefine them, they will default to the same as the
+display full forms.
+</p><!--l. 6649--><p class="indent" > Inline singular no case-change (used by <span
+class="cmtt-10">\glsentryfull</span><a
+ id="dx1-28067"></a>, <span
+class="cmtt-10">\glsxtrfull</span><a
+ id="dx1-28068"></a> and
+<span
+class="cmtt-10">\GLSxtrfull</span><a
+ id="dx1-28069"></a>):
+</p><!--l. 6651--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrinlinefullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28070"></a> <span
+class="cmtt-10">\glsxtrinlinefullformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6653--><p class="noindent" >
+</p><!--l. 6655--><p class="indent" > Inline singular first letter converted to upper case (used by <span
+class="cmtt-10">\Glsentryfull</span><a
+ id="dx1-28071"></a> and
+<span
+class="cmtt-10">\Glsxtrfull</span><a
+ id="dx1-28072"></a>):
+</p><!--l. 6657--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrinlinefullformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28073"></a> <span
+class="cmtt-10">\Glsxtrinlinefullformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6659--><p class="noindent" >
+</p><!--l. 6661--><p class="indent" > Inline plural no case-change (used by <span
+class="cmtt-10">\glsentryfullpl</span><a
+ id="dx1-28074"></a>, <span
+class="cmtt-10">\glsxtrfullpl</span><a
+ id="dx1-28075"></a> and
+<span
+class="cmtt-10">\GLSxtrfullpl</span><a
+ id="dx1-28076"></a>):
+</p><!--l. 6663--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrinlinefullplformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28077"></a> <span
+class="cmtt-10">\glsxtrinlinefullplformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6665--><p class="noindent" >
+</p><!--l. 6667--><p class="indent" > Inline plural first letter converted to upper case (used by <span
+class="cmtt-10">\Glsentryfullpl</span><a
+ id="dx1-28078"></a> and
+<span
+class="cmtt-10">\Glsxtrfullpl</span><a
+ id="dx1-28079"></a>):
+</p><!--l. 6669--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrinlinefullplformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28080"></a> <span
+class="cmtt-10">\Glsxtrinlinefullplformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6671--><p class="noindent" >
+</p><!--l. 6673--><p class="indent" > (New to version 1.17.) You can also modify the way the subsequent use is
+formatted by redefining the following four commands, but these won&#8217;t be used for
+abbreviations with the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-28081"></a> attribute set. If the style doesn&#8217;t redefine these
+commands, the default values are used.
+</p><!--l. 6679--><p class="indent" > Singular with no case-change:
+</p><!--l. 6680--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsubsequentfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28082"></a> <span
+class="cmtt-10">\glsxtrsubsequentfmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6682--><p class="noindent" >
+</p><!--l. 6684--><p class="indent" > Singular with first letter upper case:
+</p><!--l. 6685--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrsubsequentfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28083"></a> <span
+class="cmtt-10">\Glsxtrsubsequentfmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6687--><p class="noindent" >
+
+
+
+</p><!--l. 6689--><p class="indent" > Plural with no case-change:
+</p><!--l. 6690--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsubsequentplfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28084"></a> <span
+class="cmtt-10">\glsxtrsubsequentplfmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6692--><p class="noindent" >
+</p><!--l. 6694--><p class="indent" > Plural with first letter upper case:
+</p><!--l. 6695--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrsubsequentplfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28085"></a> <span
+class="cmtt-10">\Glsxtrsubsequentplfmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 6697--><p class="noindent" >
+</p><!--l. 6699--><p class="indent" > If you want to provide support for <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-28086"></a> use the following
+<span
+class="cmtt-10">\glsaccess</span>&#x27E8;<span
+class="cmitt-10">xxx</span>&#x27E9; commands (<a
+href="#sec:accsupp"><span
+class="cmsy-10">&sect;</span>11.2 </a><a
+href="#sec:accsupp">Accessibility Support<!--tex4ht:ref: sec:accsupp --></a>) within the definitions of
+<span
+class="cmtt-10">\glsxtrfullformat </span>etc instead of the analogous <span
+class="cmtt-10">\glsentry</span>&#x27E8;<span
+class="cmti-10">xxx</span>&#x27E9; commands. (If you
+don&#8217;t use <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-28087"></a>, they will just do the corresponding <span
+class="cmtt-10">\glsentry</span>&#x27E8;<span
+class="cmti-10">xxx</span>&#x27E9;
+command.)
+</p><!--l. 6707--><p class="indent" > For example, the <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-28088"></a> style has the following in &#x27E8;<span
+class="cmti-10">fmts</span>&#x27E9;:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-160">
+&#x00A0;&#x00A0;\renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsxtrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsxtrinsertinside\else##2\fi
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrfullsep{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsxtrfullplformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsxtrinsertinside\else##2\fi
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrfullsep{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Glsxtrfullformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\Glsxtrfullplformat}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+</div>
+<!--l. 6737--><p class="nopar" > Since the inline full commands aren&#8217;t redefined, they default to the same as the
+display versions.
+</p><!--l. 6741--><p class="indent" > If you want to base a style on an existing style, you can use
+</p><!--l. 6742--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrUseAbbrStyleFmts</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-28089"></a> <span
+class="cmtt-10">\GlsXtrUseAbbrStyleFmts{</span>&#x27E8;<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6744--><p class="noindent" >
+within &#x27E8;<span
+class="cmti-10">fmts</span>&#x27E9;, where &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; is the name of the existing style. For example, the
+<a
+href="#abbrstyle.long-short-desc"><span
+class="cmss-10">long-short-desc</span></a><a
+ id="dx1-28090"></a> style has the following in &#x27E8;<span
+class="cmti-10">fmts</span>&#x27E9;:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-161">
+&#x00A0;&#x00A0;\GlsXtrUseAbbrStyleFmts{long-short}%
+</div>
+<!--l. 6750--><p class="nopar" >
+</p><!--l. 6752--><p class="indent" > Here&#8217;s an example of an abbreviation style that&#8217;s based on <a
+href="#abbrstyle.long-short"><span
+class="cmss-10">long-short</span></a><a
+ id="dx1-28091"></a> that displays
+the short form within <span
+class="cmtt-10">\textsf</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-162">
+\newabbreviationstyle
+&#x00A0;<br />{custom-sf}%&#x00A0;label
+&#x00A0;<br />{%&#x00A0;setup
+&#x00A0;<br />&#x00A0;&#x00A0;\GlsXtrUseAbbrStyleSetup{short-long}%
+&#x00A0;<br />}%
+&#x00A0;<br />{%&#x00A0;fmts
+&#x00A0;<br />&#x00A0;&#x00A0;\GlsXtrUseAbbrStyleFmts{short-long}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glsabbrvfont}[1]{\textsf{##1}}%
+&#x00A0;<br />}
+</div>
+<!--l. 6765--><p class="nopar" > Note that this wouldn&#8217;t work if it was instead based on one of the modified versions
+such as <a
+href="#abbrstyle.short-sc-long"><span
+class="cmss-10">short-sc-long</span></a><a
+ id="dx1-28092"></a> as they explicitly use their own formatting commands, such as
+<span
+class="cmtt-10">\glsabbrvemfont</span>. The base styles, such as <a
+href="#abbrstyle.short-long"><span
+class="cmss-10">short-long</span></a><a
+ id="dx1-28093"></a>, use the more generic
+<span
+class="cmtt-10">\glsabbrvfont </span>etc which makes them easier to adapt than the modified
+styles.
+</p><!--l. 6773--><p class="indent" > For further details, see the &#8220;Abbreviations&#8221; section in the documented code
+(<span
+class="cmtt-10">glossaries-extra-code.pdf</span>).
+
+
+
+</p>
+<!--l. 6776--><p class="indent" > </div>
+</p><!--l. 6776--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">4. <a
+ id="sec:headtitle"></a>Entries in Sectioning Titles, Headers, Captions and Contents</h2>
+</p><!--l. 6779--><p class="indent" > The <span
+class="cmss-10">glossaries </span>user manual cautions against using commands like <span
+class="cmtt-10">\gls </span>in chapter
+or section titles. The principle problems are: </p>
+ <ul class="itemize1">
+ <li class="itemize">if you have a table of contents, the <a
+ id="dx1-29001"></a><a
+href="#glo:firstuseflag">first use flag</a> will be unset in the contents
+ rather than later in the document;
+ </li>
+ <li class="itemize">if you have the location lists displayed in the glossary, unwanted locations
+ will be added to it corresponding to the table of contents (if present) and
+ every page that contains the entry in the page header (if the page style in
+ use adds the chapter or section title to the header);
+ </li>
+ <li class="itemize">if the page style in use adds the chapter or section title to the header and
+ attempts to convert it to upper case, the entry label (in the argument
+ of <span
+class="cmtt-10">\gls </span>etc) will be converted to upper case and the entry won&#8217;t be
+ recognised;
+ </li>
+ <li class="itemize">if you use <span
+class="cmss-10">hyperref</span><a
+ id="dx1-29002"></a>, commands like <span
+class="cmtt-10">\gls </span>can&#8217;t be expanded to a simple
+ string and only the label will appear in the PDF bookmark (with a warning
+ from <span
+class="cmss-10">hyperref</span><a
+ id="dx1-29003"></a>);
+ </li>
+ <li class="itemize">if you use <span
+class="cmss-10">hyperref</span><a
+ id="dx1-29004"></a>, you will end up with nested hyperlinks in the table of
+ contents.</li></ul>
+<!--l. 6800--><p class="noindent" >Similar problems can also occur with captions (except for the page header and bookmark
+issues).
+</p><!--l. 6803--><p class="indent" > To get around all these problems, the <span
+class="cmss-10">glossaries </span>user manual recommends
+using the expandable non-hyperlink commands, such as <span
+class="cmtt-10">\glsentrytext</span><a
+ id="dx1-29005"></a>
+(for regular entries) or <span
+class="cmtt-10">\glsentryshort</span><a
+ id="dx1-29006"></a> (for abbreviations). This is the
+simplest solution, but doesn&#8217;t allow for special formatting that&#8217;s applied to
+the entry through commands like <span
+class="cmtt-10">\glstext </span>or <span
+class="cmtt-10">\glsxtrshort</span>. This means
+that if, for example, you are using one of the abbreviation styles that uses
+<span
+class="cmtt-10">\textsc</span><a
+ id="dx1-29007"></a> then the short form displayed with <span
+class="cmtt-10">\glsentryshort </span>won&#8217;t use
+small caps. If you only have one abbreviation style in use, you can explicitly
+enclose <span
+class="cmtt-10">\glsentryshort{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>in the argument of <span
+class="cmtt-10">\glsabbrvfont</span>, like
+this:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-163">
+\chapter{A&#x00A0;Chapter&#x00A0;about&#x00A0;\glsabbrvfont{\glsentryshort{html}}}
+</div>
+<!--l. 6816--><p class="nopar" > Or, if you are using <span
+class="cmss-10">hyperref</span><a
+ id="dx1-29008"></a>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-164">
+\chapter{A&#x00A0;Chapter&#x00A0;about
+&#x00A0;<br />\texorpdfstring{\glsabbrvfont{\glsentryshort{html}}}{\glsentryshort{html}}}
+</div>
+<!--l. 6821--><p class="nopar" >
+</p><!--l. 6823--><p class="indent" > 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&#8217;t work as commands like
+<span
+class="cmtt-10">\gls </span>and <span
+class="cmtt-10">\glsxtrshort </span>redefine <span
+class="cmtt-10">\glsabbrvfont </span>to match the entry&#8217;s style before
+displaying it. In this case, the above example doesn&#8217;t take into account the shifting
+definitions of <span
+class="cmtt-10">\glsabbrvfont </span>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 <span
+class="cmtt-10">\MakeUppercase</span><a
+ id="dx1-29009"></a>.
+</p><!--l. 6834--><p class="indent" > The <span
+class="cmss-10">glossaries-extra </span>package tries to resolve this by modifying <span
+class="cmtt-10">\markright</span><a
+ id="dx1-29010"></a> and
+<span
+class="cmtt-10">\markboth</span><a
+ id="dx1-29011"></a> and <span
+class="cmtt-10">\@starttoc</span>. If you don&#8217;t like this change, you can restore their
+former definitions using
+</p><!--l. 6837--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrRevertMarks</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29012"></a> <span
+class="cmtt-10">\glsxtrRevertMarks </span></div><hr>
+</p><!--l. 6839--><p class="noindent" >
+If you only want to restore <span
+class="cmtt-10">\@starttoc </span>you can use:
+</p><!--l. 6841--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrRevertTocMarks</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29013"></a> <span
+class="cmtt-10">\glsxtrRevertTocMarks </span></div><hr>
+</p><!--l. 6843--><p class="noindent" >
+If you restore the header or table of contents commands, you&#8217;ll have to use the
+<span
+class="cmss-10">glossaries </span>manual&#8217;s recommendations of either simply using <span
+class="cmtt-10">\glsentryshort </span>(as
+above) or use the sectioning command&#8217;s option argument to provide an alternative
+for the table of contents and page header. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-165">
+\chapter[A&#x00A0;Chapter&#x00A0;about&#x00A0;\glsentryshort{html}]{A&#x00A0;Chapter&#x00A0;about&#x00A0;\gls{html}}
+</div>
+<!--l. 6850--><p class="nopar" > Alternatively, you need to find a way to insert <span
+class="cmtt-10">\glsxtrmarkhook </span>and <span
+class="cmtt-10">\@glsxtrinmark</span>
+at the start of the header or table of contents either scoped or afterwards cancelled
+with <span
+class="cmtt-10">\@glsxtrnotinmark </span>and <span
+class="cmtt-10">\glsxtrrestoremarkhook</span>.
+</p><!--l. 6856--><p class="indent" > If you don&#8217;t revert the mark commands back with <span
+class="cmtt-10">\glsxtrRevertMarks</span>, 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&#8217;t conflict with the page style.
+</p><!--l. 6862--><p class="indent" > The commands listed below all use <span
+class="cmtt-10">\texorpdfstring</span><a
+ id="dx1-29014"></a> if <span
+class="cmss-10">hyperref</span><a
+ id="dx1-29015"></a> 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&#8217;t expandable, the non-case-changing version is used for the
+bookmarks.
+</p><!--l. 6868--><p class="indent" > These commands essentially behave as though you have used <span
+class="cmtt-10">\glsxtrshort </span>(or
+equivalent) with the options <span
+class="cmss-10">noindex</span><a
+ id="dx1-29016"></a> and <span
+class="cmss-10">hyper=false</span><a
+ id="dx1-29017"></a>. The text produced won&#8217;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 <a
+href="#catattr.headuc"><span
+class="cmss-10">headuc</span></a><a
+ id="dx1-29018"></a> attribute to &#8220;true&#8221; for the
+appropriate category.
+</p><!--l. 6876--><p class="indent" > <div class="important" title="Important Note"> If you use one of the <span
+class="cmtt-10">\textsc</span><a
+ id="dx1-29019"></a> styles, be aware that the default fonts don&#8217;t
+provide bold small-caps or italic small-caps. This means that if the chapter
+or section title style uses bold, this may override the small-caps setting,
+in which case the abbreviation will just appear as lower case bold. If the
+heading style uses italic, the abbreviation may appear in upright small-caps,
+<span
+class="cmti-10">even if you have set the </span><a
+href="#catattr.headuc"><span
+class="cmssi-10">headuc</span></a><a
+ id="dx1-29020"></a> <span
+class="cmti-10">attribute </span>since the all-capitals form still uses
+<span
+class="cmtt-10">\glsabbrvfont</span>. You may want to consider using the <span
+class="cmss-10">slantsc</span><a
+ id="dx1-29021"></a> package in this case.
+</div>
+</p><!--l. 6887--><p class="noindent" >
+</p><!--l. 6889--><p class="indent" > Display the short form:
+</p><!--l. 6890--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29022"></a> <span
+class="cmtt-10">\glsfmtshort{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6892--><p class="noindent" >
+</p><!--l. 6894--><p class="indent" > Display the plural short form:
+</p><!--l. 6895--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29023"></a> <span
+class="cmtt-10">\glsfmtshortpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6897--><p class="noindent" >
+</p><!--l. 6899--><p class="indent" > First letter upper case singular short form:
+</p><!--l. 6900--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29024"></a> <span
+class="cmtt-10">\Glsfmtshort{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6902--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 6905--><p class="indent" > First letter upper case plural short form:
+
+
+
+</p><!--l. 6906--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29025"></a> <span
+class="cmtt-10">\Glsfmtshortpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6908--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 6911--><p class="indent" > Display the long form:
+</p><!--l. 6912--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29026"></a> <span
+class="cmtt-10">\glsfmtlong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6914--><p class="noindent" >
+</p><!--l. 6916--><p class="indent" > Display the plural long form:
+</p><!--l. 6917--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtlongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29027"></a> <span
+class="cmtt-10">\glsfmtlongpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6919--><p class="noindent" >
+</p><!--l. 6921--><p class="indent" > First letter upper case singular long form:
+</p><!--l. 6922--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtlong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29028"></a> <span
+class="cmtt-10">\Glsfmtlong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6924--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 6927--><p class="indent" > First letter upper case plural long form:
+</p><!--l. 6928--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtlongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29029"></a> <span
+class="cmtt-10">\Glsfmtlongpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6930--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 6933--><p class="indent" > There are similar commands for the full form, but note that these use the <span
+class="cmti-10">inline</span>
+full form, which may be different from the full form used by <span
+class="cmtt-10">\gls</span>.
+</p><!--l. 6937--><p class="indent" > Display the full form:
+</p><!--l. 6938--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29030"></a> <span
+class="cmtt-10">\glsfmtfull{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6940--><p class="noindent" >
+</p><!--l. 6942--><p class="indent" > Display the plural full form:
+</p><!--l. 6943--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29031"></a> <span
+class="cmtt-10">\glsfmtfullpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6945--><p class="noindent" >
+</p><!--l. 6947--><p class="indent" > First letter upper case singular full form:
+</p><!--l. 6948--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtfull</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29032"></a> <span
+class="cmtt-10">\Glsfmtfull{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6950--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 6953--><p class="indent" > First letter upper case plural full form:
+</p><!--l. 6954--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtfullpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29033"></a> <span
+class="cmtt-10">\Glsfmtfullpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6956--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 6959--><p class="indent" > There are also equivalent commands for the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-29034"></a> field:
+</p><!--l. 6961--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmttext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29035"></a> <span
+class="cmtt-10">\glsfmttext{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6963--><p class="noindent" >
+</p><!--l. 6965--><p class="indent" > First letter converted to upper case:
+</p><!--l. 6966--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmttext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29036"></a> <span
+class="cmtt-10">\Glsfmttext{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6968--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 6971--><p class="indent" > The plural equivalents:
+
+
+
+</p><!--l. 6972--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29037"></a> <span
+class="cmtt-10">\glsfmtplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6974--><p class="noindent" >
+and
+</p><!--l. 6976--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29038"></a> <span
+class="cmtt-10">\Glsfmtplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6978--><p class="noindent" >
+</p><!--l. 6980--><p class="indent" > Likewise for the value of the <span
+class="cmss-10">name</span><a
+ id="dx1-29039"></a> field:
+</p><!--l. 6982--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29040"></a> <span
+class="cmtt-10">\glsfmtname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6984--><p class="noindent" >
+</p><!--l. 6986--><p class="indent" > First letter converted to upper case:
+</p><!--l. 6987--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29041"></a> <span
+class="cmtt-10">\Glsfmtname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6989--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 6992--><p class="indent" > Similarly for the value of the <span
+class="cmss-10">first</span><a
+ id="dx1-29042"></a> field:
+</p><!--l. 6994--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29043"></a> <span
+class="cmtt-10">\glsfmtfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 6996--><p class="noindent" >
+</p><!--l. 6998--><p class="indent" > First letter converted to upper case:
+</p><!--l. 6999--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29044"></a> <span
+class="cmtt-10">\Glsfmtfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7001--><p class="noindent" >
+(No case-change applied to PDF bookmarks.)
+</p><!--l. 7004--><p class="indent" > The plural equivalents:
+</p><!--l. 7005--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsfmtfirstpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29045"></a> <span
+class="cmtt-10">\glsfmtfirstpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7007--><p class="noindent" >
+and
+</p><!--l. 7009--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsfmtfirstpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-29046"></a> <span
+class="cmtt-10">\Glsfmtfirstpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7011--><p class="noindent" >
+
+
+
+</p>
+<!--l. 7013--><p class="indent" > </div>
+</p><!--l. 7013--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">5. <a
+ id="sec:categories"></a>Categories</h2>
+</p><!--l. 7016--><p class="indent" > Each entry defined by <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-30001"></a> (or commands that internally use it
+such as <span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-30002"></a>) is assigned a category through the <span
+class="cmss-10">category</span><a
+ id="dx1-30003"></a> 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 <span
+class="cmss-10">babel</span><a
+ id="dx1-30004"></a> shorthands on that make some characters
+active.)
+</p><!--l. 7025--><p class="indent" > The use of categories can give you more control over the way entries are displayed
+in the text or glossary. Note that an entry&#8217;s category is independent of the glossary
+type. Be careful not to confuse <span
+class="cmss-10">category</span><a
+ id="dx1-30005"></a> with <span
+class="cmss-10">type</span><a
+ id="dx1-30006"></a>.
+</p><!--l. 7030--><p class="indent" > The default category assumed by <span
+class="cmtt-10">\newglossaryentry </span>is labelled <span
+class="cmss-10">general</span><a
+ id="dx1-30007"></a>.
+Abbreviations defined with <span
+class="cmtt-10">\newabbreviation </span>have the category set to <span
+class="cmss-10">abbreviation</span><a
+ id="dx1-30008"></a>
+by default. Abbreviations defined with <span
+class="cmtt-10">\newacronym </span>have the category set to
+<span
+class="cmss-10">acronym</span><a
+ id="dx1-30009"></a> by default.
+</p><!--l. 7037--><p class="indent" > Additionally, if you have enabled <span
+class="cmtt-10">\newterm</span><a
+ id="dx1-30010"></a> with the <a
+href="#styopt.index"><span
+class="cmss-10">index</span></a><a
+ id="dx1-30011"></a> package option
+that command will set the category to <span
+class="cmss-10">index</span><a
+ id="dx1-30012"></a> by default. If you have enabled
+<span
+class="cmtt-10">\glsxtrnewsymbol</span><a
+ id="dx1-30013"></a> with the <a
+href="#styopt.symbols"><span
+class="cmss-10">symbols</span></a><a
+ id="dx1-30014"></a> package option, that command will set the
+category to <span
+class="cmss-10">symbol</span><a
+ id="dx1-30015"></a>. If you have enabled <span
+class="cmtt-10">\glsxtrnewnumber</span><a
+ id="dx1-30016"></a> with the <a
+href="#styopt.numbers"><span
+class="cmss-10">numbers</span></a><a
+ id="dx1-30017"></a> package
+option, that command will set the category to <span
+class="cmss-10">number</span><a
+ id="dx1-30018"></a>.
+</p><!--l. 7045--><p class="indent" > You can obtain the category label for a given entry using
+</p><!--l. 7046--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glscategory</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30019"></a> <span
+class="cmtt-10">\glscategory{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7048--><p class="noindent" >
+This is equivalent to commands like <span
+class="cmtt-10">\glsentryname </span>and so may be used in an
+expandable context. No error is generated if the entry doesn&#8217;t exist.
+</p><!--l. 7053--><p class="indent" > You can test the category for a given entry using
+</p><!--l. 7054--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifcategory</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30020"></a> <span
+class="cmtt-10">\glsifcategory{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>
+<span
+class="cmitt-10">part</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false part</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7057--><p class="noindent" >
+This is equivalent to </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\ifglsfieldeq</span><a
+ id="dx1-30021"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">category</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>
+<br /><span
+class="cmitt-10">part</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span><span
+class="cmitt-10">&#x00A0;part</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> so any restrictions that apply to <span
+class="cmtt-10">\ifglsfieldeq </span>also apply to <span
+class="cmtt-10">\glsifcategory</span>.
+<!--l. 7066--><p class="indent" > Each category may have a set of attributes. For example, the <span
+class="cmss-10">general</span><a
+ id="dx1-30022"></a> and <span
+class="cmss-10">acronym</span><a
+ id="dx1-30023"></a>
+categories have the attribute <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-30024"></a> set to &#8220;true&#8221; to indicate that all entries with
+either of those categories are regular entries (as opposed to abbreviations).
+This attribute is accessed by <span
+class="cmtt-10">\glsentryfmt </span>to determine whether to use
+<span
+class="cmtt-10">\glsgenentryfmt </span>or <span
+class="cmtt-10">\glsxtrgenabbrvfmt</span>.
+</p><!--l. 7074--><p class="indent" > Other attributes recognised by <span
+class="cmss-10">glossaries-extra </span>are:
+ </p><dl class="description"><dt class="description">
+<a
+ id="catattr.nohyperfirst"></a><span
+class="cmssbx-10">nohyperfirst</span><a
+ id="dx1-30025"></a> </dt><dd
+class="description">When using commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-30026"></a> this will automatically suppress the
+
+
+
+ hyperlink on <a
+ id="dx1-30027"></a><a
+href="#glo:firstuse">first use</a> for entries with a category that has this attribute set to
+ &#8220;true&#8221;. (This settings can be overridden by explicitly setting the <span
+class="cmss-10">hyper</span><a
+ id="dx1-30028"></a>
+ key on or off in the optional argument of commands like <span
+class="cmtt-10">\gls</span>.) As
+ from version 1.07, <span
+class="cmtt-10">\glsfirst</span>, <span
+class="cmtt-10">\Glsfirst</span>, <span
+class="cmtt-10">\GLSfirst </span>and their plural
+ versions (which should ideally behave in a similar way to the <a
+ id="dx1-30029"></a>first use of
+ <span
+class="cmtt-10">\gls </span>or <span
+class="cmtt-10">\glspl</span>) now honour this attribute (but not the package-wide
+ <a
+href="#styopt.hyperfirst"><span
+class="cmss-10">hyperfirst</span></a><span
+class="cmss-10">=false</span><a
+ id="dx1-30030"></a> option, which matches the behaviour of <span
+class="cmss-10">glossaries</span><a
+ id="dx1-30031"></a>). If you want
+ commands like <span
+class="cmtt-10">\glsfirst </span>to ignore the <a
+href="#catattr.nohyperfirst"><span
+class="cmss-10">nohyperfirst</span></a><a
+ id="dx1-30032"></a> attribute then just
+ redefine
+ <!--l. 7091--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrchecknohyperfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30033"></a> <span
+class="cmtt-10">\glsxtrchecknohyperfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 7093--><p class="noindent" >
+ to do nothing.
+ </p></dd><dt class="description">
+<a
+ id="catattr.nohyper"></a><span
+class="cmssbx-10">nohyper</span><a
+ id="dx1-30034"></a> </dt><dd
+class="description">When using commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-30035"></a> this will automatically suppress the
+ hyperlink for entries with a category that has this attribute set to &#8220;true&#8221;. (This
+ settings can be overridden by explicitly setting the <span
+class="cmss-10">hyper</span><a
+ id="dx1-30036"></a> key on or off in the
+ optional argument of commands like <span
+class="cmtt-10">\gls</span>.)
+ </dd><dt class="description">
+<a
+ id="catattr.indexonlyfirst"></a><span
+class="cmssbx-10">indexonlyfirst</span><a
+ id="dx1-30037"></a> </dt><dd
+class="description">This is similar to the <a
+href="#styopt.indexonlyfirst"><span
+class="cmss-10">indexonlyfirst</span></a><a
+ id="dx1-30038"></a> package option but only for entries
+ that have a category with this attribute set to &#8220;true&#8221;.
+ </dd><dt class="description">
+<a
+ id="catattr.wrgloss"></a><span
+class="cmssbx-10">wrgloss</span><a
+ id="dx1-30039"></a> </dt><dd
+class="description">When using commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-30040"></a>, if this attribute is set to &#8220;after&#8221;, it will
+ automatically implement <span
+class="cmss-10">wrgloss</span><a
+ id="dx1-30041"></a><span
+class="cmss-10">=after</span>. (New to v1.14.)
+ </dd><dt class="description">
+<a
+ id="catattr.discardperiod"></a><span
+class="cmssbx-10">discardperiod</span><a
+ id="dx1-30042"></a> </dt><dd
+class="description">If set to &#8220;true&#8221;, the post-<a
+ id="dx1-30043"></a><a
+href="#glo:linktext">link-text</a> hook will discard a&#x00A0;full stop
+ (period) that follows <span
+class="cmti-10">non-plural </span>commands like <span
+class="cmtt-10">\gls </span>or <span
+class="cmtt-10">\glstext</span>. (Provided
+ for entries such as abbreviations that end with a full stop.) This attribute is
+ only applicable to entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if
+ it&#8217;s using <span
+class="cmtt-10">\newabbreviation</span>.) This attribute doesn&#8217;t apply to the accessibility
+ fields.
+ <!--l. 7120--><p class="noindent" >Note that this can cause a problem if you access a field that doesn&#8217;t end with a
+ full stop. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-166">
+ \newabbreviation
+ &#x00A0;<br />&#x00A0;[user1={German&#x00A0;Speaking&#x00A0;\TeX\&#x00A0;User&#x00A0;Group}]
+ &#x00A0;<br />&#x00A0;{dante}{DANTE&#x00A0;e.V.}{Deutschsprachige&#x00A0;Anwendervereinigung&#x00A0;\TeX\
+ &#x00A0;<br />e.V.}
+</div>
+ <!--l. 7127--><p class="nopar" > Here the <span
+class="cmss-10">short</span><a
+ id="dx1-30044"></a> and <span
+class="cmss-10">long</span><a
+ id="dx1-30045"></a> fields end with a full stop, but the <span
+class="cmss-10">user1</span><a
+ id="dx1-30046"></a> field doesn&#8217;t.
+ The simplest solution in this situation is to put the sentence terminator in the
+ final optional argument. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-167">
+ \glsuseri{dante}[.]
+</div>
+ <!--l. 7134--><p class="nopar" > This will bring the punctuation character inside the <a
+ id="dx1-30047"></a><a
+href="#glo:linktext">link-text</a> and it won&#8217;t be
+ discarded.
+ </p></dd><dt class="description">
+<a
+ id="catattr.pluraldiscardperiod"></a><span
+class="cmssbx-10">pluraldiscardperiod</span><a
+ id="dx1-30048"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221; <span
+class="cmti-10">and </span>the <a
+href="#catattr.discardperiod"><span
+class="cmss-10">discardperiod</span></a><a
+ id="dx1-30049"></a> attribute is
+ set to &#8220;true&#8221;, this will behave as above for the plural commands like <span
+class="cmtt-10">\glspl </span>or
+ <span
+class="cmtt-10">\glsplural</span>. This attribute is only applicable to entries defined using
+ <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using <span
+class="cmtt-10">\newabbreviation</span>.)
+ </dd><dt class="description">
+<a
+ id="catattr.retainfirstuseperiod"></a><span
+class="cmssbx-10">retainfirstuseperiod</span><a
+ id="dx1-30050"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221; then the full stop won&#8217;t be
+ discarded for <a
+ id="dx1-30051"></a><a
+href="#glo:firstuse">first use</a> instances, even if <a
+href="#catattr.discardperiod"><span
+class="cmss-10">discardperiod</span></a><a
+ id="dx1-30052"></a> or <a
+href="#catattr.pluraldiscardperiod"><span
+class="cmss-10">pluraldiscardperiod</span></a><a
+ id="dx1-30053"></a> are
+ set. This is useful for &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; (&#x27E8;<span
+class="cmti-10">long</span>&#x27E9;) abbreviation styles where only the
+ short form has a trailing full stop. This attribute is only applicable to
+ entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using
+ <span
+class="cmtt-10">\newabbreviation</span>.) This attribute doesn&#8217;t apply to the accessibility
+ fields.
+ </dd><dt class="description">
+<a
+ id="catattr.markwords"></a><span
+class="cmssbx-10">markwords</span><a
+ id="dx1-30054"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221; any entry defined using <span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-30055"></a>
+ will automatically have spaces in the long form replaced with
+ <!--l. 7158--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrwordsep</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30056"></a> <span
+class="cmtt-10">\glsxtrwordsep </span></div><hr>
+ </p><!--l. 7160--><p class="noindent" >
+ and each word is encapsulated with
+ </p><!--l. 7162--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrword</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30057"></a> <span
+class="cmtt-10">\glsxtrword{</span>&#x27E8;<span
+class="cmitt-10">word</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+ </p><!--l. 7164--><p class="noindent" >
+ For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-168">
+ \glssetcategoryattribute{abbreviation}{markwords}{true}
+ &#x00A0;<br />\newabbreviation{ip}{IP}{Internet&#x00A0;Protocol}
+</div>
+ <!--l. 7169--><p class="nopar" > is essentially the same as
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-169">
+ \newabbreviation{ip}{IP}
+ &#x00A0;<br />{\glsxtrword{Internet}\glsxtrwordsep\glsxtrword{Protocol}}
+</div>
+ <!--l. 7174--><p class="nopar" > The &#8220;hyphen&#8221; styles, such as <a
+href="#abbrstyle.long-hyphen-short-hyphen"><span
+class="cmss-10">long-hyphen-short-hyphen</span></a><a
+ id="dx1-30058"></a>, take advantage of this
+ markup. If the inserted material (provided in the final argument of commands
+ like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-30059"></a>) starts with a hyphen then <span
+class="cmtt-10">\glsxtrwordsep </span>is locally redefined to a
+ hyphen. (The default value is a space). Note that this only applies to
+ commands like <span
+class="cmtt-10">\gls </span>and not like <span
+class="cmtt-10">\glsxtrlong</span>. You can provide your own
+ localised switch, if required. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-170">
+ \newcommand{\hyplong}[2][]{%
+ &#x00A0;<br />&#x00A0;{\def\glsxtrwordsep{-}\glsxtrlong[#1]{#2}}}
+</div>
+ <!--l. 7186--><p class="nopar" >
+ </p><!--l. 7188--><p class="noindent" >This setting will also adjust the long plural. This attribute is only applicable to
+ entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using
+ <span
+class="cmtt-10">\newabbreviation</span>.)
+ </p><!--l. 7192--><p class="noindent" ><div class="important" title="Important Note"> This setting may result in the <span
+class="cmtt-10">\glsxtrword </span>and <span
+class="cmtt-10">\glsxtrwordsep </span>markup
+ ending up in the <span
+class="cmss-10">sort</span><a
+ id="dx1-30060"></a> field, depending on the style in use. </div>
+ </p><!--l. 7196--><p class="noindent" >
+ </p></dd><dt class="description">
+<a
+ id="catattr.markshortwords"></a><span
+class="cmssbx-10">markshortwords</span><a
+ id="dx1-30061"></a> </dt><dd
+class="description">This is similar to <a
+href="#catattr.markwords"><span
+class="cmss-10">markwords</span></a><a
+ id="dx1-30062"></a> but applies to the short form. (Only
+ useful for abbreviations that contain spaces.) This attribute is only applicable
+ to entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using
+ <span
+class="cmtt-10">\newabbreviation</span>.)
+ <!--l. 7204--><p class="noindent" >This setting will only adjust the short plural if the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-30063"></a> key isn&#8217;t used.
+ This setting will take precedence over <a
+href="#catattr.insertdots"><span
+class="cmss-10">insertdots</span></a><a
+ id="dx1-30064"></a>.
+ </p><!--l. 7208--><p class="noindent" ><div class="important" title="Important Note"> This setting may result in the <span
+class="cmtt-10">\glsxtrword </span>and <span
+class="cmtt-10">\glsxtrwordsep </span>markup
+ ending up in the <span
+class="cmss-10">sort</span><a
+ id="dx1-30065"></a> field, depending on the style in use. </div>
+ </p><!--l. 7212--><p class="noindent" >
+ </p></dd><dt class="description">
+<a
+ id="catattr.insertdots"></a><span
+class="cmssbx-10">insertdots</span><a
+ id="dx1-30066"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221; any entry defined using <span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-30067"></a>
+ will automatically have full stops (periods) inserted after each letter. The entry
+ will be defined with those dots present as though they had been present in the
+ &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; argument of <span
+class="cmtt-10">\newabbreviation </span>(rather than inserting them every time
+ the entry is used). The short plural form defaults to the new dotted version of
+ the original &#x27E8;<span
+class="cmti-10">short</span>&#x27E9; form with the plural suffix appended. <span
+class="cmti-10">This setting is</span>
+ <span
+class="cmti-10">incompatible with </span><a
+href="#catattr.markshortwords"><span
+class="cmssi-10">markshortwords</span></a><a
+ id="dx1-30068"></a><span
+class="cmti-10">. </span>This attribute is only applicable to
+ entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using
+ <span
+class="cmtt-10">\newabbreviation</span>.)
+ <!--l. 7226--><p class="noindent" ><div class="important" title="Important Note"> If you explicitly override the short plural using the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-30069"></a> key, you must
+ explicitly insert the dots yourself (since there&#8217;s no way for the code to
+ determine if the plural has a suffix that shouldn&#8217;t be followed by a dot).
+ </div>
+ </p><!--l. 7232--><p class="noindent" >
+
+
+
+ </p><!--l. 7234--><p class="noindent" >This attribute is best used with the <a
+href="#catattr.discardperiod"><span
+class="cmss-10">discardperiod</span></a><a
+ id="dx1-30070"></a> attribute set to &#8220;true&#8221;.
+ </p></dd><dt class="description">
+<a
+ id="catattr.aposplural"></a><span
+class="cmssbx-10">aposplural</span><a
+ id="dx1-30071"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221;, <span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-30072"></a> will insert an
+ apostrophe (&#8217;) before the plural suffix for the <span
+class="cmti-10">short </span>plural form (unless
+ explicitly overridden with the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-30073"></a> key). The long plural form is
+ unaffected by this setting. This setting overrides <a
+href="#catattr.noshortplural"><span
+class="cmss-10">noshortplural</span></a><a
+ id="dx1-30074"></a>. This
+ attribute is only applicable to entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or
+ <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using <span
+class="cmtt-10">\newabbreviation</span>.) Check with your supervisor,
+ publisher or editor if you want to use this attribute as this usage is
+ controversial.
+ </dd><dt class="description">
+<a
+ id="catattr.noshortplural"></a><span
+class="cmssbx-10">noshortplural</span><a
+ id="dx1-30075"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221;, <span
+class="cmtt-10">\newabbreviation</span><a
+ id="dx1-30076"></a> won&#8217;t append
+ the plural suffix for the short plural form. This means the <span
+class="cmss-10">short</span><a
+ id="dx1-30077"></a> and
+ <span
+class="cmss-10">shortplural</span><a
+ id="dx1-30078"></a> values will be the same unless explicitly overridden. <span
+class="cmti-10">This setting</span>
+ <span
+class="cmti-10">is incompatible with </span><a
+href="#catattr.aposplural"><span
+class="cmssi-10">aposplural</span></a><a
+ id="dx1-30079"></a><span
+class="cmti-10">. </span>This attribute is only applicable to
+ entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using
+ <span
+class="cmtt-10">\newabbreviation</span>.)
+ </dd><dt class="description">
+<a
+ id="catattr.accessinsertdots"></a><span
+class="cmssbx-10">accessinsertdots</span><a
+ id="dx1-30080"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221; and the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-30081"></a> package
+ has been loaded (with the <a
+href="#styopt.accsupp"><span
+class="cmss-10">accsupp</span></a><a
+ id="dx1-30082"></a> option), then this behaves like <a
+href="#catattr.insertdots"><span
+class="cmss-10">insertdots</span></a><a
+ id="dx1-30083"></a> but
+ for the <span
+class="cmss-10">shortaccess</span><a
+ id="dx1-30084"></a> field instead of the <span
+class="cmss-10">short</span><a
+ id="dx1-30085"></a> field. This can be used to assist the
+ screen reader for initialisms that should be read out letter by letter rather than
+ as a word. For example:
+
+
+
+ <div class="verbatim" id="verbatim-171">
+ \glssetcategoryattribute{initialism}{accessinsertdots}{true}
+ &#x00A0;<br />\newabbreviation[category=initialism]{pi}{PI}{Private&#x00A0;Investigator}
+</div>
+ <!--l. 7268--><p class="nopar" > This setting will be overridden by an explicit use of the <span
+class="cmss-10">shortaccess</span><a
+ id="dx1-30086"></a> key in the
+ optional argument of <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym</span>). This attribute is
+ only applicable to entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if
+ it&#8217;s using <span
+class="cmtt-10">\newabbreviation</span>.)
+ </p></dd><dt class="description">
+<a
+ id="catattr.nameshortaccess"></a><span
+class="cmssbx-10">nameshortaccess</span><a
+ id="dx1-30087"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221;, the <span
+class="cmss-10">access</span><a
+ id="dx1-30088"></a> field (used for the <span
+class="cmss-10">name</span><a
+ id="dx1-30089"></a>
+ field&#8217;s accessibility support) is set to the <span
+class="cmss-10">shortaccess</span><a
+ id="dx1-30090"></a> value. This attribute has no
+ effect if there&#8217;s no accessibility support or if the <span
+class="cmss-10">shortaccess</span><a
+ id="dx1-30091"></a> field hasn&#8217;t been
+ assigned or if the <span
+class="cmss-10">access</span><a
+ id="dx1-30092"></a> field is used explicitly. This attribute is only applicable
+ to entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using
+ <span
+class="cmtt-10">\newabbreviation</span>.)
+ </dd><dt class="description">
+<a
+ id="catattr.textshortaccess"></a><span
+class="cmssbx-10">textshortaccess</span><a
+ id="dx1-30093"></a> </dt><dd
+class="description">Like <span
+class="cmss-10">nameshortaccess</span><a
+ id="dx1-30094"></a> but applies to the <span
+class="cmss-10">textaccess</span><a
+ id="dx1-30095"></a> field (for use with
+ regular abbreviations).
+ </dd><dt class="description">
+<a
+ id="catattr.firstshortaccess"></a><span
+class="cmssbx-10">firstshortaccess</span><a
+ id="dx1-30096"></a> </dt><dd
+class="description">Like <span
+class="cmss-10">nameshortaccess</span><a
+ id="dx1-30097"></a> but applies to the <span
+class="cmss-10">firstaccess</span><a
+ id="dx1-30098"></a> field (for use with
+ regular abbreviations).
+ </dd><dt class="description">
+<a
+ id="catattr.accessaposplural"></a><span
+class="cmssbx-10">accessaposplural</span><a
+ id="dx1-30099"></a> </dt><dd
+class="description">This boolean attribute overrides <a
+href="#catattr.aposplural"><span
+class="cmss-10">aposplural</span></a><a
+ id="dx1-30100"></a> for the <span
+class="cmss-10">shortpluralaccess</span><a
+ id="dx1-30101"></a>
+ key. Has no effect if there&#8217;s no accessibility support or if the <span
+class="cmss-10">shortaccess</span><a
+ id="dx1-30102"></a> key
+ hasn&#8217;t been set or if the <span
+class="cmss-10">shortpluralaccess</span><a
+ id="dx1-30103"></a> key is explicitly set. If the <a
+href="#catattr.aposplural"><span
+class="cmss-10">aposplural</span></a><a
+ id="dx1-30104"></a> is
+ set and this attribute isn&#8217;t set and the <span
+class="cmss-10">shortaccess</span><a
+ id="dx1-30105"></a> key is set, then the
+ <a
+href="#catattr.aposplural"><span
+class="cmss-10">aposplural</span></a><a
+ id="dx1-30106"></a> setting governs the default <span
+class="cmss-10">shortpluralaccess</span><a
+ id="dx1-30107"></a> setting. If you want
+ <a
+href="#catattr.aposplural"><span
+class="cmss-10">aposplural</span></a><a
+ id="dx1-30108"></a> but don&#8217;t want it applied to the accessibility support, set the
+ <a
+href="#catattr.accessaposplural"><span
+class="cmss-10">accessaposplural</span></a><a
+ id="dx1-30109"></a> attribute to &#8220;false&#8221;. This attribute is only applicable to
+ entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using
+ <span
+class="cmtt-10">\newabbreviation</span>.)
+ </dd><dt class="description">
+<a
+ id="catattr.accessnoshortplural"></a><span
+class="cmssbx-10">accessnoshortplural</span><a
+ id="dx1-30110"></a> </dt><dd
+class="description">This boolean attribute overrides <a
+href="#catattr.noshortplural"><span
+class="cmss-10">noshortplural</span></a><a
+ id="dx1-30111"></a> for the
+ <span
+class="cmss-10">shortpluralaccess</span><a
+ id="dx1-30112"></a> key. The same conditions apply as for <a
+href="#catattr.accessaposplural"><span
+class="cmss-10">accessaposplural</span></a><a
+ id="dx1-30113"></a>. This
+ attribute is only applicable to entries defined using <span
+class="cmtt-10">\newabbreviation </span>(or
+ <span
+class="cmtt-10">\newacronym </span>if it&#8217;s using <span
+class="cmtt-10">\newabbreviation</span>.)
+ </dd><dt class="description">
+<a
+ id="catattr.headuc"></a><span
+class="cmssbx-10">headuc</span><a
+ id="dx1-30114"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221;, commands like <span
+class="cmtt-10">\glsfmtshort</span><a
+ id="dx1-30115"></a> will use the
+ upper case version in the page headers.
+
+
+
+ </dd><dt class="description">
+<a
+ id="catattr.tagging"></a><span
+class="cmssbx-10">tagging</span><a
+ id="dx1-30116"></a> </dt><dd
+class="description">If this attribute is set to &#8220;true&#8221;, the tagging command defined by
+ <span
+class="cmtt-10">\GlsXtrEnableInitialTagging</span><a
+ id="dx1-30117"></a> will be activated to use <span
+class="cmtt-10">\glsxtrtagfont</span><a
+ id="dx1-30118"></a> in
+ the glossary (see <a
+href="#sec:tagging"><span
+class="cmsy-10">&sect;</span>3.1 </a><a
+href="#sec:tagging">Tagging Initials<!--tex4ht:ref: sec:tagging --></a>).
+ </dd><dt class="description">
+<a
+ id="catattr.entrycount"></a><span
+class="cmssbx-10">entrycount</span><a
+ id="dx1-30119"></a> </dt><dd
+class="description">Unlike the above attributes, this attribute isn&#8217;t boolean but instead must
+ be an integer value and is used in combination with <span
+class="cmtt-10">\glsenableentrycount</span><a
+ id="dx1-30120"></a>
+ (see <a
+href="#sec:entrycountmods"><span
+class="cmsy-10">&sect;</span>2.4 </a><a
+href="#sec:entrycountmods">Entry Counting Modifications<!--tex4ht:ref: sec:entrycountmods --></a>). Leave blank or undefined for
+ categories that shouldn&#8217;t have this facility enabled. The value of this attribute
+ is used by <span
+class="cmtt-10">\glsxtrifcounttrigger</span><a
+ id="dx1-30121"></a> to determine how commands such as <span
+class="cmtt-10">\cgls</span><a
+ id="dx1-30122"></a>
+ should behave.
+ <!--l. 7329--><p class="noindent" >With <span
+class="cmss-10">glossaries</span>, commands like <span
+class="cmtt-10">\cgls </span>use <span
+class="cmtt-10">\cglsformat </span>only if the previous
+ usage count for that entry was equal to&#x00A0;1. With <span
+class="cmss-10">glossaries-extra </span>the test is now
+ for entries that have the <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-30123"></a> attribute set and where the previous
+ usage count for that entry is less than or equal to the value of that
+ attribute.
+ </p></dd><dt class="description">
+<a
+ id="catattr.linkcount"></a><span
+class="cmssbx-10">linkcount</span><a
+ id="dx1-30124"></a> </dt><dd
+class="description">This attribute is set to <span
+class="cmtt-10">true </span>by <span
+class="cmtt-10">\GlsXtrEnableLinkCounting</span><a
+ id="dx1-30125"></a> (see <a
+href="#sec:linkcount"><span
+class="cmsy-10">&sect;</span>6.2
+ </a><a
+href="#sec:linkcount">Link Counting<!--tex4ht:ref: sec:linkcount --></a>).
+ </dd><dt class="description">
+<a
+ id="catattr.linkcountmaster"></a><span
+class="cmssbx-10">linkcountmaster</span><a
+ id="dx1-30126"></a> </dt><dd
+class="description">This attribute is set to the name of the master counter by
+ <span
+class="cmtt-10">\GlsXtrEnableLinkCounting</span><a
+ id="dx1-30127"></a> if the optional argument is provided (see <a
+href="#sec:linkcount"><span
+class="cmsy-10">&sect;</span>6.2
+ </a><a
+href="#sec:linkcount">Link Counting<!--tex4ht:ref: sec:linkcount --></a>).
+ </dd><dt class="description">
+<a
+ id="catattr.glossdesc"></a><span
+class="cmssbx-10">glossdesc</span><a
+ id="dx1-30128"></a> </dt><dd
+class="description">The <span
+class="cmtt-10">\glossentrydesc</span><a
+ id="dx1-30129"></a> command (used in the predefined glossary styles) is
+ modified by <span
+class="cmss-10">glossaries-extra </span>to check for this attribute. The attribute may have
+ one of the following values:
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmtt-10">firstuc</span>: the first letter of the description will be converted to upper
+ case (using <span
+class="cmtt-10">\Glsentrydesc</span><a
+ id="dx1-30130"></a>).
+ </li>
+ <li class="itemize"><span
+class="cmtt-10">title</span>: the description will be used in the argument of the title casing
+ command <span
+class="cmtt-10">\capitalisewords</span><a
+ id="dx1-30131"></a> (provided by <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-30132"></a>). If you want to use a
+ different command you can redefine:
+ <!--l. 7357--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfieldtitlecasecs</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30133"></a> <span
+class="cmtt-10">\glsxtrfieldtitlecasecs{</span>&#x27E8;<span
+class="cmitt-10">phrase cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ </div><hr>
+ </p><!--l. 7359--><p class="noindent" >
+ For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-172">
+ \newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisefmtwords*{#1}}
+</div>
+ <!--l. 7363--><p class="nopar" > (Note that the argument to <span
+class="cmtt-10">\glsxtrfieldtitlecasecs </span>will be a control
+ sequence whose replacement text is the entry&#8217;s description, which is why
+ <span
+class="cmtt-10">\xcapitalisefmtwords </span>is needed instead of <span
+class="cmtt-10">\capitalisefmtwords</span>.)
+</p>
+ </li></ul>
+ <!--l. 7370--><p class="noindent" >Any other values of this attribute are ignored. Remember that there are design
+ limitations for both the first letter uppercasing and the title casing commands.
+ See the <span
+class="cmss-10">mfirstuc</span><a
+ id="dx1-30134"></a> user manual for further details.
+ </p></dd><dt class="description">
+<a
+ id="catattr.glossdescfont"></a><span
+class="cmssbx-10">glossdescfont</span><a
+ id="dx1-30135"></a> </dt><dd
+class="description">(New to version 1.04) In addition to the above, the modified
+ <span
+class="cmtt-10">\glossentrydesc</span><a
+ id="dx1-30136"></a> command also checks this attribute. If set, it should be the
+ name of a control sequence (without the leading backslash) that takes one
+ argument. This control sequence will be applied to the description text. For
+ example:
+
+
+
+ <div class="verbatim" id="verbatim-173">
+ \glssetcategoryattribute{general}{glossdescfont}{emph}
+</div>
+ <!--l. 7383--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="catattr.glossname"></a><span
+class="cmssbx-10">glossname</span><a
+ id="dx1-30137"></a> </dt><dd
+class="description">As <a
+href="#catattr.glossdesc"><span
+class="cmss-10">glossdesc</span></a><a
+ id="dx1-30138"></a> but applies to <span
+class="cmtt-10">\glossentryname</span><a
+ id="dx1-30139"></a>. Additionally, if this
+ attribute is set to &#8220;uc&#8221; the name is converted to all capitals.
+ </dd><dt class="description">
+<a
+ id="catattr.indexname"></a><span
+class="cmssbx-10">indexname</span><a
+ id="dx1-30140"></a> </dt><dd
+class="description">If set, the <span
+class="cmtt-10">\glsxtrpostnamehook </span>hook used at the end of <span
+class="cmtt-10">\glossentryname</span><a
+ id="dx1-30141"></a>
+ will index the entry using <span
+class="cmtt-10">\index</span><a
+ id="dx1-30142"></a>. See <a
+href="#sec:autoindex"><span
+class="cmsy-10">&sect;</span>7 </a><a
+href="#sec:autoindex">Auto-Indexing<!--tex4ht:ref: sec:autoindex --></a> for further
+ details.
+ </dd><dt class="description">
+<a
+ id="catattr.glossnamefont"></a><span
+class="cmssbx-10">glossnamefont</span><a
+ id="dx1-30143"></a> </dt><dd
+class="description">(New to version 1.04) In addition to the above, the modified
+ <span
+class="cmtt-10">\glossentryname</span><a
+ id="dx1-30144"></a> command also checks this attribute. If set, it should be the
+ name of a control sequence (without the leading backslash) that takes one
+ argument. This control sequence will be applied to the name text. For
+ example:
+
+
+
+ <div class="verbatim" id="verbatim-174">
+ \glssetcategoryattribute{general}{glossnamefont}{emph}
+</div>
+ <!--l. 7403--><p class="nopar" > Note that this overrides <span
+class="cmtt-10">\glsnamefont </span>which will only be used if this attribute
+ hasn&#8217;t been set.
+ </p><!--l. 7407--><p class="noindent" >Remember that glossary styles may additionally apply a font change,
+ such as the list styles which put the name in the optional argument of
+ <span
+class="cmtt-10">\item</span>.
+ </p></dd><dt class="description">
+<a
+ id="catattr.textformat"></a><span
+class="cmssbx-10">textformat</span><a
+ id="dx1-30145"></a> </dt><dd
+class="description">(New to version 1.21.) Commands like <span
+class="cmtt-10">\gls </span>and <span
+class="cmtt-10">\glstext </span>have the link
+ text encapsulated in the argument of <span
+class="cmtt-10">\glstextformat </span>by default. If this
+ attribute is set, the control sequence given by the attribute value will be used
+ instead. As with the above, the attribute value should be the name (without
+ the leading backslash) of a command that takes a single argument (the link
+ text). Remember that the abbreviation styles may apply an additional font
+ change.
+ </dd><dt class="description">
+<a
+ id="catattr.hyperoutside"></a><span
+class="cmssbx-10">hyperoutside</span><a
+ id="dx1-30146"></a> </dt><dd
+class="description">(New to v1.21.) The attribute value may be <span
+class="cmtt-10">false</span>, <span
+class="cmtt-10">true </span>or unset. If
+ unset, <span
+class="cmtt-10">true </span>is assumed. This indicates the default setting of the <span
+class="cmss-10">hyperoutside</span><a
+ id="dx1-30147"></a>
+ key, described in <a
+href="#sec:wrglossary"><span
+class="cmsy-10">&sect;</span>2.1 </a><a
+href="#sec:wrglossary">Entry Indexing<!--tex4ht:ref: sec:wrglossary --></a>.
+ </dd><dt class="description">
+<a
+ id="catattr.dualindex"></a><span
+class="cmssbx-10">dualindex</span><a
+ id="dx1-30148"></a> </dt><dd
+class="description">If set, whenever a glossary entry has information written to the external
+ glossary file through commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-30149"></a> and <span
+class="cmtt-10">\glsadd</span><a
+ id="dx1-30150"></a>, a&#x00A0;corresponding line
+ will be written to the indexing file using <span
+class="cmtt-10">\index</span><a
+ id="dx1-30151"></a>. See <a
+href="#sec:autoindex"><span
+class="cmsy-10">&sect;</span>7 </a><a
+href="#sec:autoindex">Auto-Indexing<!--tex4ht:ref: sec:autoindex --></a> for
+ further details.
+ </dd><dt class="description">
+<a
+ id="catattr.targeturl"></a><span
+class="cmssbx-10">targeturl</span><a
+ id="dx1-30152"></a> </dt><dd
+class="description">If set, the hyperlink generated by commands like <span
+class="cmtt-10">\gls </span>will be set to the
+ URL provided by this attributes value. For example:
+
+
+
+ <div class="verbatim" id="verbatim-175">
+ \glssetcategoryattribute{general}{targeturl}{master-doc.pdf}
+</div>
+ <!--l. 7437--><p class="nopar" > (See also the accompanying sample file <span
+class="cmtt-10">sample-external.tex</span>.) If the URL
+ contains awkward characters (such as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">%</span></span></span> or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">~</span></span></span>) remember that the base <span
+class="cmss-10">glossaries</span>
+ package provides commands like <span
+class="cmtt-10">\glspercentchar</span><a
+ id="dx1-30153"></a> and <span
+class="cmtt-10">\glstildechar </span>that
+ expand to literal characters.
+ </p><!--l. 7445--><p class="noindent" >If you want to a named anchor within the target URL (notionally adding
+ <span
+class="cmtt-10">#</span>&#x27E8;<span
+class="cmti-10">name</span>&#x27E9; to the URL), then you also need to set <a
+href="#catattr.targetname"><span
+class="cmss-10">targetname</span></a><a
+ id="dx1-30154"></a> to the anchor &#x27E8;<span
+class="cmti-10">name</span>&#x27E9;.
+ You may use <span
+class="cmtt-10">\glslabel </span>within &#x27E8;<span
+class="cmti-10">name</span>&#x27E9; which is set by commands like <span
+class="cmtt-10">\gls </span>to
+ the entry&#8217;s label.
+ </p><!--l. 7451--><p class="noindent" >All the predefined glossary styles start each entry listing with <span
+class="cmtt-10">\glstarget</span>
+ which sets the anchor to <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glolinkprefix\glslabel</span></span></span>, so if you want
+ entries to link to glossaries in the URL given by <a
+href="#catattr.targeturl"><span
+class="cmss-10">targeturl</span></a><a
+ id="dx1-30155"></a>, you can just
+ do:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-176">
+ \glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel}
+</div>
+ <!--l. 7458--><p class="nopar" > (If the target document changed <span
+class="cmtt-10">\glolinkprefix </span>then you will need to adjust
+ the above as appropriate.)
+ </p><!--l. 7462--><p class="noindent" >If the anchor is in the form &#x27E8;<span
+class="cmti-10">name1</span>&#x27E9;<span
+class="cmtt-10">.</span>&#x27E8;<span
+class="cmti-10">name2</span>&#x27E9; then use <a
+href="#catattr.targetname"><span
+class="cmss-10">targetname</span></a><a
+ id="dx1-30156"></a> for the &#x27E8;<span
+class="cmti-10">name2</span>&#x27E9;
+ part and <a
+href="#catattr.targetcategory"><span
+class="cmss-10">targetcategory</span></a><a
+ id="dx1-30157"></a> for the &#x27E8;<span
+class="cmti-10">name1</span>&#x27E9; part.
+ </p><!--l. 7466--><p class="noindent" >For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-177">
+ \glssetcategoryattribute{general}{targeturl}{master-doc.pdf}
+ &#x00A0;<br />\glssetcategoryattribute{general}{targetcategory}{page}
+ &#x00A0;<br />\glssetcategoryattribute{general}{targetname}{7}
+</div>
+ <!--l. 7471--><p class="nopar" > will cause all link text for <span
+class="cmtt-10">general </span>entries to link to <span
+class="cmtt-10">master-doc.pdf#page.7</span>
+ (page 7 of that PDF).
+ </p><!--l. 7475--><p class="noindent" >If you want a mixture in your document of entries that link to an internal
+ glossary and entries that link to an external URL then you can use
+ the starred form of <span
+class="cmtt-10">\newignoredglossary</span><a
+ id="dx1-30158"></a> for the external list. For
+ example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-178">
+ \newignoredglossary*{external}
+ &#x00A0;<br />\glssetcategoryattribute{external}{targeturl}{master-doc.pdf}
+ &#x00A0;<br />\glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel}
+ &#x00A0;<br />\newglossaryentry{sample}{name={sample},description={local&#x00A0;example}}
+ &#x00A0;<br />\newglossaryentry{sample2}{name={sample2},
+ &#x00A0;<br />&#x00A0;&#x00A0;type=external,
+ &#x00A0;<br />&#x00A0;&#x00A0;category=external,
+ &#x00A0;<br />&#x00A0;&#x00A0;description={external&#x00A0;example}}
+</div>
+ <!--l. 7491--><p class="nopar" >
+ </p></dd><dt class="description">
+<a
+ id="catattr.externallocation"></a><span
+class="cmssbx-10">externallocation</span><a
+ id="dx1-30159"></a> </dt><dd
+class="description">The value should be the file name of the target document when
+ manually indexing an external location (see <a
+href="#sec:wrglossary"><span
+class="cmsy-10">&sect;</span>2.1 </a><a
+href="#sec:wrglossary">Entry Indexing<!--tex4ht:ref: sec:wrglossary --></a>). In general,
+ it&#8217;s better to use <a
+ id="dx1-30160"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> v1.7+ which can handle multiple external sources
+ and doesn&#8217;t require this attribute.
+ </dd></dl>
+<!--l. 7501--><p class="indent" > An attribute can be set using:
+</p><!--l. 7502--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssetcategoryattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30161"></a> <span
+class="cmtt-10">\glssetcategoryattribute{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7504--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">category-label</span>&#x27E9; is the category label, &#x27E8;<span
+class="cmti-10">attribute-label</span>&#x27E9; is the attribute label and
+&#x27E8;<span
+class="cmti-10">value</span>&#x27E9; is the new value for the attribute.
+</p><!--l. 7509--><p class="indent" > There is a shortcut version to set the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-30162"></a> attribute to &#8220;true&#8221;:
+</p><!--l. 7511--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssetregularcategory</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30163"></a> <span
+class="cmtt-10">\glssetregularcategory{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 7513--><p class="noindent" >
+</p><!--l. 7515--><p class="indent" > If you need to lookup the category label for a particular entry, you can use the
+shortcut command:
+</p><!--l. 7517--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glssetattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30164"></a> <span
+class="cmtt-10">\glssetattribute{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7519--><p class="noindent" >
+This uses <span
+class="cmtt-10">\glssetcategoryattribute </span>with <span
+class="cmtt-10">\glscategory </span>to set the attribute. Note
+that this will affect all other entries that share this entry&#8217;s category.
+</p><!--l. 7524--><p class="indent" > You can fetch the value of an attribute for a particular category using:
+</p><!--l. 7526--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgetcategoryattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30165"></a> <span
+class="cmtt-10">\glsgetcategoryattribute{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 7528--><p class="noindent" >
+Again there is a shortcut if you need to lookup the category label for a given
+entry:
+</p><!--l. 7531--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsgetattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30166"></a> <span
+class="cmtt-10">\glsgetattribute{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 7533--><p class="noindent" >
+</p><!--l. 7535--><p class="indent" > You can test if an attribute has been assigned to a given category using:
+</p><!--l. 7537--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glshascategoryattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30167"></a> <span
+class="cmtt-10">\glshascategoryattribute{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true code</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7540--><p class="noindent" >
+This uses <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-30168"></a>&#8217;s <span
+class="cmtt-10">\ifcsvoid </span>and does &#x27E8;<span
+class="cmti-10">true code</span>&#x27E9; if the attribute has been set and
+isn&#8217;t blank and isn&#8217;t <span
+class="cmtt-10">\relax</span>. The shortcut if you need to lookup the category label
+from an entry is:
+</p><!--l. 7545--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glshasattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30169"></a> <span
+class="cmtt-10">\glshasattribute{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>
+<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7548--><p class="noindent" >
+</p><!--l. 7550--><p class="indent" > You can test the value of an attribute for a particular category using:
+</p><!--l. 7552--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifcategoryattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30170"></a> <span
+class="cmtt-10">\glsifcategoryattribute{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">} {</span>&#x27E8;<span
+class="cmitt-10">true-part</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false-part</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7554--><p class="noindent" >
+This tests if the attribute (given by &#x27E8;<span
+class="cmti-10">attribute-label</span>&#x27E9;) for the category (given by
+&#x27E8;<span
+class="cmti-10">category-label</span>&#x27E9;) is set and equal to &#x27E8;<span
+class="cmti-10">value</span>&#x27E9;. If true, &#x27E8;<span
+class="cmti-10">true-part</span>&#x27E9; is done. If the attribute
+isn&#8217;t set or is set but isn&#8217;t equal to &#x27E8;<span
+class="cmti-10">value</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">false part</span>&#x27E9; is done.
+</p><!--l. 7561--><p class="indent" > For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-179">
+\glsifcategoryattribute{general}{nohyper}{true}{NO&#x00A0;HYPER}{HYPER}
+</div>
+<!--l. 7564--><p class="nopar" > This does &#8220;NO HYPER&#8221; if the <span
+class="cmss-10">general</span><a
+ id="dx1-30171"></a> category has the <a
+href="#catattr.nohyper"><span
+class="cmss-10">nohyper</span></a><a
+ id="dx1-30172"></a> attribute set to
+<span
+class="cmtt-10">true </span>otherwise if does &#8220;HYPER&#8221;.
+</p><!--l. 7569--><p class="indent" > With boolean-style attributes like <a
+href="#catattr.nohyper"><span
+class="cmss-10">nohyper</span></a><a
+ id="dx1-30173"></a>, make sure you always test for <span
+class="cmtt-10">true</span>
+not <span
+class="cmtt-10">false </span>in case the attribute hasn&#8217;t been set.
+</p><!--l. 7572--><p class="indent" > Again there&#8217;s a shortcut if you need to lookup the category label from a particular
+entry:
+</p><!--l. 7574--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30174"></a> <span
+class="cmtt-10">\glsifattribute{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">true-part</span>&#x27E9;<span
+class="cmtt-10">} {</span>&#x27E8;<span
+class="cmitt-10">false-part</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7576--><p class="noindent" >
+</p><!--l. 7578--><p class="indent" > There&#8217;s also a shortcut to determine if a particular category has the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-30175"></a>
+attribute set to &#8220;true&#8221;:
+</p><!--l. 7580--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifregularcategory</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30176"></a> <span
+class="cmtt-10">\glsifregularcategory{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">true-part</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false-part</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7582--><p class="noindent" >
+Alternatively, if you need to lookup the category for a particular entry:
+</p><!--l. 7585--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifregular</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30177"></a> <span
+class="cmtt-10">\glsifregular{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true-part</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false-part</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 7587--><p class="noindent" >
+Note that if the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-30178"></a> attribute hasn&#8217;t be set, the above do &#x27E8;<span
+class="cmti-10">false-part</span>&#x27E9;. There
+are also reverse commands that test if the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-30179"></a> attribute has been set to
+&#8220;false&#8221;:
+</p><!--l. 7591--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifnotregularcategory</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30180"></a> <span
+class="cmtt-10">\glsifnotregularcategory{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">true-part</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false-part</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7593--><p class="noindent" >
+or for a particular entry:
+</p><!--l. 7595--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsifnotregular</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30181"></a> <span
+class="cmtt-10">\glsifnotregular{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true-part</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false-part</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 7597--><p class="noindent" >
+Again, if the <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-30182"></a> attribute hasn&#8217;t been set, the above do &#x27E8;<span
+class="cmti-10">false-part</span>&#x27E9;, so these
+reverse commands aren&#8217;t logically opposite in the strict sense.
+</p><!--l. 7602--><p class="indent" > You can iterate through all entries with a given category using:
+</p><!--l. 7604--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsforeachincategory[</span>&#x27E8;<span
+class="cmitt-10">glossary-labels</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">} {</span>&#x27E8;<span
+class="cmitt-10">glossary-cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label-cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">body</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7605--><p class="noindent" >
+This iterates through all entries in the glossaries identified by the comma-separated
+list &#x27E8;<span
+class="cmti-10">glossary-labels</span>&#x27E9; that have the category given by &#x27E8;<span
+class="cmti-10">category-label</span>&#x27E9; and performs &#x27E8;<span
+class="cmti-10">body</span>&#x27E9;
+for each match. Within &#x27E8;<span
+class="cmti-10">body</span>&#x27E9;, you can use &#x27E8;<span
+class="cmti-10">glossary-cs</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">label-cs</span>&#x27E9; (which much be
+control sequences) to access the current glossary and entry label. If &#x27E8;<span
+class="cmti-10">glossary-labels</span>&#x27E9; is
+omitted, all glossaries are assumed.
+
+
+
+</p><!--l. 7615--><p class="indent" > Similarly, you can iterate through all entries that have a category with a given
+attribute using:
+</p><!--l. 7617--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsforeachwithattribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30183"></a> <span
+class="cmtt-10">\glsforeachwithattribute[</span>&#x27E8;<span
+class="cmitt-10">glossary-labels</span>&#x27E9;<span
+class="cmtt-10">]</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">} {</span>&#x27E8;<span
+class="cmitt-10">attribute-value</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">glossary-cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label-cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">body</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 7619--><p class="noindent" >
+This will do &#x27E8;<span
+class="cmti-10">body</span>&#x27E9; for each entry that has a category with the attribute &#x27E8;<span
+class="cmti-10">attribute-label</span>&#x27E9;
+set to &#x27E8;<span
+class="cmti-10">attribute-value</span>&#x27E9;. The remaining arguments are as the previous command.
+</p><!--l. 7624--><p class="indent" > You can change the category for a particular entry using the standard glossary
+field changing commands, such as <span
+class="cmtt-10">\glsfielddef</span><a
+ id="dx1-30184"></a>. Alternatively, you can
+use
+</p><!--l. 7627--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsetcategory</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30185"></a> <span
+class="cmtt-10">\glsxtrsetcategory{</span>&#x27E8;<span
+class="cmitt-10">entry-labels</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 7629--><p class="noindent" >
+This will change the category to &#x27E8;<span
+class="cmti-10">category-label</span>&#x27E9; for each entry listed in the
+comma-separated list &#x27E8;<span
+class="cmti-10">entry-labels</span>&#x27E9;. This command uses <span
+class="cmtt-10">\glsfieldxdef</span><a
+ id="dx1-30186"></a> so it will
+expand &#x27E8;<span
+class="cmti-10">category-label</span>&#x27E9; and make the change global.
+</p><!--l. 7635--><p class="indent" > You can also change the category for all entries with a glossary or glossaries
+using:
+</p><!--l. 7637--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsetcategoryforall</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-30187"></a> <span
+class="cmtt-10">\glsxtrsetcategoryforall{</span>&#x27E8;<span
+class="cmitt-10">glossary-labels</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">category-label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7639--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">glossary-labels</span>&#x27E9; is a comma-separated list of glossary labels.
+
+
+
+</p>
+<!--l. 7643--><p class="indent" > </div>
+</p><!--l. 7643--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">6. <a
+ id="sec:countref"></a>Counting References</h2>
+</p><!--l. 7646--><p class="indent" > There are three basic ways of counting entry references:
+ </p><ol class="enumerate1" >
+ <li
+ class="enumerate" id="x1-31002x1">Counting the total number of times <span
+class="cmtt-10">\glsunset </span>is used (<span
+class="cmtt-10">\glsreset </span>resets
+ the count and is best avoided). This is provided by the base <span
+class="cmss-10">glossaries</span>
+ package and is intended for documents where the term should be displayed
+ differently if it&#8217;s only been used a certain number of times. The information
+ has to be written to the <span
+class="cmtt-10">.aux </span>file so that it&#8217;s available on the next
+ <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run.
+ <!--l. 7656--><p class="noindent" >This method is extended by <span
+class="cmss-10">glossaries-extra </span>and is described in <a
+href="#sec:entrycount"><span
+class="cmsy-10">&sect;</span>6.1 </a><a
+href="#sec:entrycount">Entry
+ Counting (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>.
+ </p></li>
+ <li
+ class="enumerate" id="x1-31004x2">Counting the total number of records. This method is only available with
+ <a
+ id="dx1-31005"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> and is intended for documents where the term should be displayed
+ differently if it&#8217;s only been recorded (indexed) a certain number of times.
+ See <a
+href="#sec:recordcount"><span
+class="cmsy-10">&sect;</span>9.5 </a><a
+href="#sec:recordcount">Record Counting<!--tex4ht:ref: sec:recordcount --></a> for further details.
+ </li>
+ <li
+ class="enumerate" id="x1-31007x3">Counting the number of times the <span
+class="cmtt-10">\gls</span>-like or <span
+class="cmtt-10">\glstext</span>-like
+ commands are used. (That is, those commands that internally use
+ <span
+class="cmtt-10">\@gls@link</span>.) Unlike the other two methods, this just provides a
+ running total rather than the total from the previous <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run.
+ This method is intended to make it more convenient to work with
+ hooks like <span
+class="cmtt-10">\glslinkcheckfirsthyperhook</span>, <span
+class="cmtt-10">\glslinkpostsetkeys </span>or
+ <span
+class="cmtt-10">\glslinkpresetkeys</span>. See <a
+href="#sec:linkcount"><span
+class="cmsy-10">&sect;</span>6.2 </a><a
+href="#sec:linkcount">Link Counting<!--tex4ht:ref: sec:linkcount --></a> for further details.</li></ol>
+<!--l. 7675--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6.1 </span> <a
+ id="sec:entrycount"></a>Entry Counting (First Use Flag)</h3>
+<!--l. 7678--><p class="noindent" >As mentioned in <a
+href="#sec:entrycountmods"><span
+class="cmsy-10">&sect;</span>2.4 </a><a
+href="#sec:entrycountmods">Entry Counting Modifications<!--tex4ht:ref: sec:entrycountmods --></a>, <span
+class="cmss-10">glossaries-extra </span>modifies the
+<span
+class="cmtt-10">\glsenableentrycount</span><a
+ id="dx1-32001"></a> command to allow for the <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-32002"></a> attribute. This means
+that you not only need to enable entry counting with <span
+class="cmtt-10">\glsenableentrycount</span><a
+ id="dx1-32003"></a>, but
+you also need to set the appropriate attribute (see <a
+href="#sec:categories"><span
+class="cmsy-10">&sect;</span>5 </a><a
+href="#sec:categories">Categories<!--tex4ht:ref: sec:categories --></a>).
+</p><!--l. 7685--><p class="indent" > <div class="important" title="Important Note"> Remember that entry counting only counts the number of times an entry is used
+by commands that change the <a
+ id="dx1-32004"></a><a
+href="#glo:firstuseflag">first use flag</a>. (That is, all those commands
+that mark the entry as having been used.) There are many commands that
+don&#8217;t modify this flag and they won&#8217;t contribute to the entry use count.
+</div>
+</p><!--l. 7691--><p class="noindent" >
+</p><!--l. 7693--><p class="indent" > With <span
+class="cmss-10">glossaries-extra</span>, you may use <span
+class="cmtt-10">\cgls</span><a
+ id="dx1-32005"></a> instead of <span
+class="cmtt-10">\gls</span><a
+ id="dx1-32006"></a> even if you haven&#8217;t enabled
+entry counting. You will only get a warning if you use <span
+class="cmtt-10">\glsenableentrycount</span>
+without setting the <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-32007"></a> attribute. (With <span
+class="cmss-10">glossaries</span>, commands like <span
+class="cmtt-10">\cgls</span><a
+ id="dx1-32008"></a>
+will generate a warning if <span
+class="cmtt-10">\glsenableentrycount </span>hasn&#8217;t been used.) The
+
+
+
+abbreviation shortcut <span
+class="cmtt-10">\ab</span><a
+ id="dx1-32009"></a> uses <span
+class="cmtt-10">\cgls </span>(see <a
+href="#sec:abbrshortcuts"><span
+class="cmsy-10">&sect;</span>3.3 </a><a
+href="#sec:abbrshortcuts">Shortcut Commands<!--tex4ht:ref: sec:abbrshortcuts --></a>). The
+acronym shortcut <span
+class="cmtt-10">\ac</span><a
+ id="dx1-32010"></a> uses <span
+class="cmtt-10">\cgls </span>if it&#8217;s been defined with <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=ac</span><a
+ id="dx1-32011"></a> (or
+<a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=all</span><a
+ id="dx1-32012"></a>) but uses <span
+class="cmtt-10">\gls </span>if it&#8217;s been defined with <a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=acronyms</span><a
+ id="dx1-32013"></a> (or
+<a
+href="#styopt.shortcuts"><span
+class="cmss-10">shortcuts</span></a><span
+class="cmss-10">=acro</span><a
+ id="dx1-32014"></a>).
+</p><!--l. 7706--><p class="indent" > All upper case versions (not provided by <span
+class="cmss-10">glossaries</span>) are also available:
+</p><!--l. 7708--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\cGLS</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32015"></a> <span
+class="cmtt-10">\cGLS[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 7710--><p class="noindent" >
+and
+</p><!--l. 7712--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\cGLSpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32016"></a> <span
+class="cmtt-10">\cGLSpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 7714--><p class="noindent" >
+These are analogous to <span
+class="cmtt-10">\cgls </span>and <span
+class="cmtt-10">\cglspl </span>but they use
+</p><!--l. 7717--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\cGLSformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32017"></a> <span
+class="cmtt-10">\cGLSformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7719--><p class="noindent" >
+and
+</p><!--l. 7721--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\cGLSplformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32018"></a> <span
+class="cmtt-10">\cGLSplformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7723--><p class="noindent" >
+which convert the analogous <span
+class="cmtt-10">\cglsformat </span>and <span
+class="cmtt-10">\cglsplformat </span>to upper
+case.
+</p><!--l. 7727--><p class="indent" > Just using <span
+class="cmss-10">glossaries</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-180">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\glsenableentrycount
+&#x00A0;<br />\newacronym{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newacronym{xml}{XML}{extensible&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />Used&#x00A0;once:&#x00A0;\cgls{html}.
+&#x00A0;<br />Used&#x00A0;twice:&#x00A0;\cgls{xml}&#x00A0;and&#x00A0;\cgls{xml}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 7749--><p class="nopar" >
+</p><!--l. 7751--><p class="indent" > If you switch to <span
+class="cmss-10">glossaries-extra </span>you must set the <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-32019"></a> attribute:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-181">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\glsenableentrycount
+&#x00A0;<br />\glssetcategoryattribute{abbreviation}{entrycount}{1}
+&#x00A0;<br />\newabbreviation{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newabbreviation{xml}{XML}{extensible&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />Used&#x00A0;once:&#x00A0;\cgls{html}.
+&#x00A0;<br />Used&#x00A0;twice:&#x00A0;\cgls{xml}&#x00A0;and&#x00A0;\cgls{xml}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 7776--><p class="nopar" >
+</p><!--l. 7778--><p class="indent" > When activated with <span
+class="cmtt-10">\glsenableentrycount</span>, commands such as <span
+class="cmtt-10">\cgls</span><a
+ id="dx1-32020"></a> now
+use
+</p><!--l. 7780--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrifcounttrigger</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32021"></a> <span
+class="cmtt-10">\glsxtrifcounttrigger{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">trigger code</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">normal code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7783--><p class="noindent" >
+to determine if the entry trips the entry count trigger. The &#x27E8;<span
+class="cmti-10">trigger code</span>&#x27E9; uses
+commands like <span
+class="cmtt-10">\cglsformat </span>and unsets the <a
+ id="dx1-32022"></a><a
+href="#glo:firstuseflag">first use flag</a>. The &#x27E8;<span
+class="cmti-10">normal code</span>&#x27E9; is the
+code that would ordinarily be performed by whatever the equivalent command is (for
+example, <span
+class="cmtt-10">\cgls </span>will use <span
+class="cmtt-10">\cglsformat </span>in &#x27E8;<span
+class="cmti-10">trigger code</span>&#x27E9; but the usual <span
+class="cmtt-10">\gls </span>behaviour in
+&#x27E8;<span
+class="cmti-10">normal code</span>&#x27E9;).
+</p><!--l. 7792--><p class="indent" > The default definition is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-182">
+\newcommand*{\glsxtrifcounttrigger}[3]{%
+&#x00A0;<br />&#x00A0;\glshasattribute{#1}{entrycount}%
+&#x00A0;<br />&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\ifnum\glsentryprevcount{#1}&#x003E;\glsgetattribute{#1}{entrycount}\relax
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;#3%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\else
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;#2%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\fi
+&#x00A0;<br />&#x00A0;}%
+&#x00A0;<br />&#x00A0;{#3}%
+&#x00A0;<br />}
+</div>
+<!--l. 7805--><p class="nopar" > This means that if an entry is assigned to a category that has the <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-32023"></a>
+attribute then the &#x27E8;<span
+class="cmti-10">trigger code</span>&#x27E9; 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.
+</p><!--l. 7812--><p class="indent" > For example, to trigger normal use if the previous count value is greater than
+four:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-183">
+\glssetcategoryattribute{abbreviation}{entrycount}{4}
+</div>
+<!--l. 7816--><p class="nopar" >
+</p><!--l. 7818--><p class="indent" > There is a convenient command provided to enable entry counting, set the
+<a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-32024"></a> attribute and redefine <span
+class="cmtt-10">\gls</span><a
+ id="dx1-32025"></a>, etc to use <span
+class="cmtt-10">\cgls</span><a
+ id="dx1-32026"></a> etc:
+</p><!--l. 7821--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrEnableEntryCounting</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32027"></a> <span
+class="cmtt-10">\GlsXtrEnableEntryCounting{</span>&#x27E8;<span
+class="cmitt-10">categories</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7823--><p class="noindent" >
+The first argument &#x27E8;<span
+class="cmti-10">categories</span>&#x27E9; is a comma-separated list of categories. For each
+category, the <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-32028"></a> attribute is set to &#x27E8;<span
+class="cmti-10">value</span>&#x27E9;. In addition, this does:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-184">
+\renewcommand*{\gls}{\cgls}%
+&#x00A0;<br />\renewcommand*{\Gls}{\cGls}%
+&#x00A0;<br />\renewcommand*{\glspl}{\cglspl}%
+&#x00A0;<br />\renewcommand*{\Glspl}{\cGlspl}%
+&#x00A0;<br />\renewcommand*{\GLS}{\cGLS}%
+&#x00A0;<br />\renewcommand*{\GLSpl}{\cGLSpl}%
+</div>
+<!--l. 7834--><p class="nopar" > This makes it easier to enable entry-counting on existing documents.
+</p><!--l. 7838--><p class="indent" > If you use <span
+class="cmtt-10">\GlsXtrEnableEntryCounting </span>more than once, subsequent uses will
+just set the <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-32029"></a> attribute for each listed category.
+</p><!--l. 7842--><p class="indent" > The above example document can then become:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-185">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\GlsXtrEnableEntryCounting{abbreviation}{1}
+&#x00A0;<br />\newabbreviation{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newabbreviation{xml}{XML}{extensible&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />Used&#x00A0;once:&#x00A0;\gls{html}.
+&#x00A0;<br />Used&#x00A0;twice:&#x00A0;\gls{xml}&#x00A0;and&#x00A0;\gls{xml}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 7864--><p class="nopar" >
+</p><!--l. 7866--><p class="indent" > 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
+</p><!--l. 7871--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrEnableEntryUnitCounting</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32030"></a> <span
+class="cmtt-10">\GlsXtrEnableEntryUnitCounting</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">categories</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter-name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7873--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">categories</span>&#x27E9; is a comma-separated list of categories to which this feature should
+be applied, &#x27E8;<span
+class="cmti-10">value</span>&#x27E9; is the trigger value and &#x27E8;<span
+class="cmti-10">counter-name</span>&#x27E9; is the name of the counter
+used by the sectional unit.
+</p><!--l. 7879--><p class="indent" > <div class="important" title="Important Note"> Due to the asynchronous nature of <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s output routine, discrepancies will
+occur in page spanning paragraphs if you use the <span
+class="cmss-10">page</span><a
+ id="dx1-32031"></a> counter. </div>
+</p><!--l. 7883--><p class="noindent" >
+</p><!--l. 7885--><p class="indent" > Note that you can&#8217;t use both the document-wide counting and the per-unit
+counting in the same document.
+</p><!--l. 7888--><p class="indent" > The counter value is used as part of a label, which means that <span
+class="cmtt-10">\the</span>&#x27E8;<span
+class="cmti-10">counter-name</span>&#x27E9;
+needs to be expandable. Since <span
+class="cmss-10">hyperref</span><a
+ id="dx1-32032"></a> also has a similar requirement and provides
+<span
+class="cmtt-10">\theH</span>&#x27E8;<span
+class="cmti-10">counter-name</span>&#x27E9; as an expandable alternative, <span
+class="cmss-10">glossaries-extra </span>will use
+<span
+class="cmtt-10">\theH</span>&#x27E8;<span
+class="cmti-10">counter-name</span>&#x27E9; if it exists otherwise it will use <span
+class="cmtt-10">\the</span>&#x27E8;<span
+class="cmti-10">counter-name</span>&#x27E9;.
+</p><!--l. 7895--><p class="indent" > The per-unit counting function uses two attributes: <a
+href="#catattr.entrycount"><span
+class="cmss-10">entrycount</span></a><a
+ id="dx1-32033"></a> (as before) and
+
+
+
+<a
+href="#catattr.unitcount"><span
+class="cmss-10">unitcount</span></a><a
+ id="dx1-32034"></a> (the name of the counter).
+</p><!--l. 7898--><p class="indent" > 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:
+</p><!--l. 7901--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentrycurrcount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32035"></a> <span
+class="cmtt-10">\glsentrycurrcount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7903--><p class="noindent" >
+and the final value from the previous run:
+</p><!--l. 7905--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryprevcount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32036"></a> <span
+class="cmtt-10">\glsentryprevcount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7907--><p class="noindent" >
+In the case of the per-unit counting, this is the final value <span
+class="cmti-10">for the current unit</span>. In
+both commands &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label.
+</p><!--l. 7912--><p class="indent" > The per-unit counting mechanism additionally provides:
+</p><!--l. 7913--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryprevtotalcount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32037"></a> <span
+class="cmtt-10">\glsentryprevtotalcount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7915--><p class="noindent" >
+which gives the sum of all the per-unit totals from the previous run for the entry
+given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, and
+</p><!--l. 7918--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsentryprevmaxcount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32038"></a> <span
+class="cmtt-10">\glsentryprevmaxcount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 7920--><p class="noindent" >
+which gives the maximum per-unit total from the previous run.
+</p><!--l. 7923--><p class="indent" > The above two commands are unavailable for the document-wide counting.
+</p><!--l. 7925--><p class="indent" > Example of per-unit counting, where the unit is the chapter:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-186">
+\documentclass{report}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\GlsXtrEnableEntryUnitCounting{abbreviation}{2}{chapter}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\newabbreviation{html}{HTML}{hypertext&#x00A0;markup&#x00A0;language}
+&#x00A0;<br />\newabbreviation{css}{CSS}{cascading&#x00A0;style&#x00A0;sheet}
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},description={sample}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\chapter{Sample}
+&#x00A0;<br />Used&#x00A0;once:&#x00A0;\gls{html}.
+&#x00A0;<br />Used&#x00A0;three&#x00A0;times:&#x00A0;\gls{css}&#x00A0;and&#x00A0;\gls{css}&#x00A0;and&#x00A0;\gls{css}.
+&#x00A0;<br />Used&#x00A0;once:&#x00A0;\gls{sample}.
+&#x00A0;<br />\chapter{Another&#x00A0;Sample}
+&#x00A0;<br />Used&#x00A0;once:&#x00A0;\gls{css}.
+&#x00A0;<br />Used&#x00A0;twice:&#x00A0;\gls{html}&#x00A0;and&#x00A0;\gls{html}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 7956--><p class="nopar" > In this document, the <span
+class="cmtt-10">css </span>entry is used three times in the first chapter. This is
+more than the trigger value of 2, so <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{css}</span></span></span> is expanded on <a
+ id="dx1-32039"></a><a
+href="#glo:firstuse">first use</a>
+with the short form used on subsequent use, and the <span
+class="cmtt-10">css </span>entries in that
+chapter are added to the glossary. In the second chapter, the <span
+class="cmtt-10">css </span>entry is
+only used once, which trips the suppression trigger, so in that chapter, the
+long form is used and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{css}</span></span></span> doesn&#8217;t get a line added to the glossary
+file.
+</p><!--l. 7967--><p class="indent" > The <span
+class="cmtt-10">html </span>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.
+</p><!--l. 7973--><p class="indent" > The <span
+class="cmtt-10">sample </span>entry has only been used once, but it doesn&#8217;t trip the indexing
+suppression because it&#8217;s in the <span
+class="cmss-10">general</span><a
+ id="dx1-32040"></a> category, which hasn&#8217;t been listed in
+<span
+class="cmtt-10">\GlsXtrEnableEntryUnitCounting</span>.
+
+
+
+</p><!--l. 7978--><p class="indent" > 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&#8217;t be triggered, but the unit entry count is used to automatically suppress the
+hyperlink for commands like <span
+class="cmtt-10">\gls</span><a
+ id="dx1-32041"></a> by modifying the hook
+</p><!--l. 7984--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glslinkcheckfirsthyperhook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-32042"></a> <span
+class="cmtt-10">\glslinkcheckfirsthyperhook </span></div><hr>
+</p><!--l. 7986--><p class="noindent" >
+which is used at the end of the macro the determines whether or not to suppress the
+hyperlink.
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-187">
+\documentclass{article}
+&#x00A0;<br />\usepackage[colorlinks]{hyperref}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\GlsXtrEnableEntryUnitCounting{general}{0}{page}
+&#x00A0;<br />\newglossaryentry{sample}{name={sample},description={an&#x00A0;example}}
+&#x00A0;<br />\renewcommand*{\glslinkcheckfirsthyperhook}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifnum\glsentrycurrcount\glslabel&#x003E;0
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\setkeys{glslink}{hyper=false}%
+&#x00A0;<br />&#x00A0;&#x00A0;\fi
+&#x00A0;<br />}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />A&#x00A0;\gls{sample}&#x00A0;entry.
+&#x00A0;<br />Next&#x00A0;use:&#x00A0;\gls{sample}.
+&#x00A0;<br />\newpage
+&#x00A0;<br />Next&#x00A0;page:&#x00A0;\gls{sample}.
+&#x00A0;<br />Again:&#x00A0;\gls{sample}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 8021--><p class="nopar" > This only produces a hyperlink for the first instance of <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{sample}</span></span></span> on each
+page.
+</p><!--l. 8025--><p class="indent" > The earlier warning about using the <span
+class="cmss-10">page</span><a
+ id="dx1-32043"></a> counter still applies. If the
+first instance of <span
+class="cmtt-10">\gls </span>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.
+</p><!--l. 8030--><p class="noindent" >
+</p>
+<!--l. 8030--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">6.2 </span> <a
+ id="sec:linkcount"></a>Link Counting</h3>
+<!--l. 8033--><p class="noindent" >As from version 1.26, an alternative method of entry counting is to count the number
+
+
+
+of times the <span
+class="cmtt-10">\gls</span>-like or <span
+class="cmtt-10">\glstext</span>-like commands are used. (The &#8220;link&#8221; in this
+method&#8217;s name refers to the use of the internal command <span
+class="cmtt-10">\@gls@link </span>not to
+<span
+class="cmtt-10">\hyperlink </span>although <span
+class="cmtt-10">\@gls@link </span>may use <span
+class="cmtt-10">\hyperlink </span>when displaying the
+<a
+ id="dx1-33001"></a><a
+href="#glo:linktext">link-text</a>.)
+</p><!--l. 8040--><p class="indent" > To enable link counting use the preamble-only command:
+</p><!--l. 8041--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrEnableLinkCounting</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33002"></a> <span
+class="cmtt-10">\GlsXtrEnableLinkCounting[</span>&#x27E8;<span
+class="cmitt-10">master counter</span>&#x27E9;<span
+class="cmtt-10">]</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">categories</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8043--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">categories</span>&#x27E9; is a list of category labels. The optional argument &#x27E8;<span
+class="cmti-10">master</span>
+<span
+class="cmti-10">counter</span>&#x27E9; may be used to identify a master counter (which must be defined). If
+present, the associated link counter will be reset when the master counter is
+incremented. This command automatically sets the <a
+href="#catattr.linkcount"><span
+class="cmss-10">linkcount</span></a><a
+ id="dx1-33003"></a> attribute for the given
+categories. If the optional argument is present, it also sets the <a
+href="#catattr.linkcountmaster"><span
+class="cmss-10">linkcountmaster</span></a><a
+ id="dx1-33004"></a>
+attribute.
+</p><!--l. 8052--><p class="indent" > When enabled, commands like <span
+class="cmtt-10">\gls </span>and <span
+class="cmtt-10">\glstext </span>increment the associated
+counter using
+</p><!--l. 8054--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrinclinkcounter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33005"></a> <span
+class="cmtt-10">\glsxtrinclinkcounter{</span>&#x27E8;<span
+class="cmitt-10">counter name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8056--><p class="noindent" >
+This just does <span
+class="cmtt-10">\stepcounter{</span>&#x27E8;<span
+class="cmitt-10">counter name</span>&#x27E9;<span
+class="cmtt-10">} </span>by default but if you need
+<span
+class="cmtt-10">\refstepcounter </span>instead, just redefine this command:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-188">
+\renewcommand*{\glsxtrinclinkcounter}[1]{\refstepcounter{#1}}
+</div>
+<!--l. 8062--><p class="nopar" >
+</p><!--l. 8064--><p class="indent" > You can access the internal count register using
+</p><!--l. 8065--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrLinkCounterValue</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33006"></a> <span
+class="cmtt-10">\GlsXtrLinkCounterValue{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8067--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label. This will expand to 0 if the counter hasn&#8217;t been
+defined.
+</p><!--l. 8071--><p class="indent" > It&#8217;s also possible to access the display value (<span
+class="cmtt-10">\the</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;) using
+</p><!--l. 8073--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrTheLinkCounter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33007"></a> <span
+class="cmtt-10">\GlsXtrTheLinkCounter{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8075--><p class="noindent" >
+(This will expand to 0 if the counter hasn&#8217;t been defined.)
+</p><!--l. 8078--><p class="indent" > <div class="important" title="Important Note"> In order to conserve resources, the counter is only defined when it first
+needs to be incremented so terms that have been defined but haven&#8217;t been
+used in the document won&#8217;t have the associated count register allocated.
+</div>
+</p><!--l. 8083--><p class="noindent" >
+</p><!--l. 8085--><p class="indent" > You can test if the counter has been defined using:
+</p><!--l. 8086--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfLinkCounterDef</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33008"></a> <span
+class="cmtt-10">\GlsXtrIfLinkCounterDef{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8088--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label.
+</p><!--l. 8091--><p class="indent" > The counter name can be obtained using
+</p><!--l. 8092--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrLinkCounterName</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-33009"></a> <span
+class="cmtt-10">\GlsXtrLinkCounterName{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8094--><p class="noindent" >
+This simply expands to the counter name associated with the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;
+without any check for existence. For example, to change the display command
+(<span
+class="cmtt-10">\the</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9;) using <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-33010"></a>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-189">
+\csdef{the\GlsXtrLinkCounterName{duck}}{\Roman{\GlsXtrLinkCounterName{duck}}}
+</div>
+<!--l. 8101--><p class="nopar" > This is useful if you just want to change the display for specific entries but isn&#8217;t
+convenient if you want to change the display for all entries. Instead, it&#8217;s simpler to
+redefine <span
+class="cmtt-10">\GlsXtrTheLinkCounter</span>. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-190">
+\renewcommand*{\GlsXtrTheLinkCounter}[1]{%
+&#x00A0;<br />&#x00A0;\GlsXtrIfLinkCounterDef{#1}%
+&#x00A0;<br />&#x00A0;{\Roman{\GlsXtrLinkCounterName{#1}}}%
+&#x00A0;<br />&#x00A0;{0}%
+&#x00A0;<br />}
+</div>
+<!--l. 8112--><p class="nopar" > In both cases, the redefinition should be implemented after <span
+class="cmtt-10">\GlsXtrEnableLinkCounting</span>.
+</p><!--l. 8116--><p class="indent" > Here&#8217;s an example document that uses link counting to disable the hyperlink after
+the first reference. This redefines <span
+class="cmtt-10">\glslinkpresetkeys</span><a
+ id="dx1-33011"></a> (which is used by both <span
+class="cmtt-10">\gls</span>
+and <span
+class="cmtt-10">\glstext</span>) instead of <span
+class="cmtt-10">\glslinkcheckfirsthyperhook </span>(which is used by <span
+class="cmtt-10">\gls</span>
+but not by <span
+class="cmtt-10">\glstext</span>).
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-191">
+\documentclass{article}
+&#x00A0;<br />\usepackage[colorlinks]{hyperref}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\renewcommand*{\glslinkpresetkeys}{%
+&#x00A0;<br />&#x00A0;\ifnum\GlsXtrLinkCounterValue{\glslabel}&#x003E;1
+&#x00A0;<br />&#x00A0;&#x00A0;\setkeys{glslink}{hyper=false}%
+&#x00A0;<br />&#x00A0;\fi
+&#x00A0;<br />}
+&#x00A0;<br />\GlsXtrEnableLinkCounting{general}
+&#x00A0;<br />\newglossaryentry{sample1}{name={sample1},description={an&#x00A0;example}}
+&#x00A0;<br />\newglossaryentry{sample2}{name={sample2},description={another&#x00A0;example}}
+&#x00A0;<br />\newabbreviation{ex}{ex}{example}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\section{Sample&#x00A0;Section}
+&#x00A0;<br />\Gls{sample1},&#x00A0;\gls{sample2}&#x00A0;and&#x00A0;\gls{ex}.
+&#x00A0;<br />\Glstext{sample1}&#x00A0;and&#x00A0;\gls{ex}&#x00A0;again.
+&#x00A0;<br />\section{Another&#x00A0;Sample&#x00A0;Section}
+&#x00A0;<br />\Gls{sample1},&#x00A0;\gls{sample2}&#x00A0;and&#x00A0;\gls{ex}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 8158--><p class="nopar" > The use of <span
+class="cmtt-10">\glslinkpresetkeys</span><a
+ id="dx1-33012"></a> means that the options can override this. For
+example
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-192">
+\gls[hyper=true]{sample1}
+</div>
+<!--l. 8163--><p class="nopar" > will override the <span
+class="cmtt-10">hyper=false </span>setting in <span
+class="cmtt-10">\glslinkpresetkeys</span><a
+ id="dx1-33013"></a>. If <span
+class="cmtt-10">\glslinkpostsetkeys</span><a
+ id="dx1-33014"></a>
+is used instead, the <span
+class="cmtt-10">hyper=false </span>setting will override the setting provided in the
+optional argument.
+</p><!--l. 8169--><p class="indent" > The <span
+class="cmss-10">abbreviation</span><a
+ id="dx1-33015"></a> category doesn&#8217;t have the <a
+href="#catattr.linkcount"><span
+class="cmss-10">linkcount</span></a><a
+ id="dx1-33016"></a> attribute set (since it&#8217;s not
+listed in the argument of <span
+class="cmtt-10">\GlsXtrEnableLinkCounting</span>). This means that
+<span
+class="cmtt-10">\GlsXtrLinkCounterValue </span>always expands to 0 for the abbreviation (<span
+class="cmtt-10">ex</span>), so the
+inequality test
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-193">
+\ifnum\GlsXtrLinkCounterValue{\glslabel}&#x003E;1
+</div>
+<!--l. 8177--><p class="nopar" > will always be false. This means that the abbreviation won&#8217;t have <span
+class="cmtt-10">hyper=false</span>
+applied. If the test is changed to
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-194">
+\ifnum\GlsXtrLinkCounterValue{\glslabel}=1
+&#x00A0;<br />\else
+&#x00A0;<br />&#x00A0;\setkeys{glslink}{hyper=false}%
+&#x00A0;<br />\fi
+</div>
+<!--l. 8185--><p class="nopar" > Then the abbreviation will always have <span
+class="cmtt-10">hyper=false </span>applied.
+</p><!--l. 8189--><p class="indent" > To reset the counter every section use the optional argument to set the master
+counter:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-195">
+\GlsXtrEnableLinkCounting[section]{general}
+</div>
+<!--l. 8193--><p class="nopar" >
+
+
+
+</p>
+<!--l. 8195--><p class="indent" > </div>
+</p><!--l. 8195--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">7. <a
+ id="sec:autoindex"></a>Auto-Indexing</h2>
+</p><!--l. 8198--><p class="indent" > It&#8217;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: <a
+href="#catattr.indexname"><span
+class="cmss-10">indexname</span></a><a
+ id="dx1-34001"></a> and
+<a
+href="#catattr.dualindex"><span
+class="cmss-10">dualindex</span></a><a
+ id="dx1-34002"></a>.
+</p><!--l. 8204--><p class="indent" > <div class="important" title="Important Note"> The auto-indexing is designed for <a
+ id="dx1-34003"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> syntax. If you&#8217;ve used the <a
+href="#styopt.xindy"><span
+class="cmss-10">xindy</span></a><a
+ id="dx1-34004"></a>
+package option, the automatic escaping of <a
+ id="dx1-34005"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> special characters in the <span
+class="cmss-10">sort</span><a
+ id="dx1-34006"></a> field
+may result in an incorrect sort value for the <span
+class="cmtt-10">\index </span>command used by the
+auto-indexing. Note also that <span
+class="cmtt-10">texindy</span><a
+ id="dx1-34007"></a> has a fixed set of special characters
+(corresponding to <a
+ id="dx1-34008"></a><span
+class="cmtt-10">makeindex</span>&#8217;s defaults) that can&#8217;t be customized. You may want
+to consider using <a
+ id="dx1-34009"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> and its dual entries as an alternative approach.
+</div>
+</p><!--l. 8213--><p class="noindent" >
+</p><!--l. 8216--><p class="indent" > The <span
+class="cmtt-10">\glsxtrpostnamehook</span><a
+ id="dx1-34010"></a> macro, used at the end of <span
+class="cmtt-10">\glossentryname</span><a
+ id="dx1-34011"></a> and
+<span
+class="cmtt-10">\Glossentryname</span><a
+ id="dx1-34012"></a>, checks the <a
+href="#catattr.indexname"><span
+class="cmss-10">indexname</span></a><a
+ id="dx1-34013"></a> attribute for the category associated with
+that entry. Since <span
+class="cmtt-10">\glossentryname </span>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 <span
+class="cmss-10">name</span><a
+ id="dx1-34014"></a>
+key.
+</p><!--l. 8226--><p class="indent" > The internal macro used by the <span
+class="cmss-10">glossaries </span>package to write the information to the
+external glossary file is modified to check for the <a
+href="#catattr.dualindex"><span
+class="cmss-10">dualindex</span></a><a
+ id="dx1-34015"></a> attribute.
+</p><!--l. 8230--><p class="indent" > In both cases, the indexing is done through
+</p><!--l. 8231--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdoautoindexname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34016"></a> <span
+class="cmtt-10">\glsxtrdoautoindexname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">attribute-label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8233--><p class="noindent" >
+This uses the standard <span
+class="cmtt-10">\index</span><a
+ id="dx1-34017"></a> command with the sort value taken from the entry&#8217;s
+<span
+class="cmss-10">sort</span><a
+ id="dx1-34018"></a> key and the actual value set to <span
+class="cmtt-10">\glsentryname{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>. As from v1.16, there are
+user-level commands available to change the sort and actual value used by the
+automated index.
+</p><!--l. 8240--><p class="indent" > The actual value is given by
+</p><!--l. 8241--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrautoindexentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34019"></a> <span
+class="cmtt-10">\glsxtrautoindexentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8243--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label. The default definition is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-196">
+\newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}}
+</div>
+<!--l. 8248--><p class="nopar" > Note the use of <span
+class="cmtt-10">\string </span>to prevent <span
+class="cmtt-10">\glsentryname </span>from being expanded as it&#8217;s
+written to the index file.
+</p><!--l. 8252--><p class="indent" > The sort value is assigned using:
+</p><!--l. 8253--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrautoindexassignsort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34020"></a> <span
+class="cmtt-10">\glsxtrautoindexassignsort{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8255--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry label and &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; is the command which needs to be set to the
+sort value. The default definition is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-197">
+\newcommand*{\glsxtrautoindexassignsort}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsletentryfield{#1}{#2}{sort}%
+&#x00A0;<br />}
+</div>
+<!--l. 8262--><p class="nopar" > After this macro is called, &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; is then processed to escape any of <span
+class="cmtt-10">makeindex</span><a
+ id="dx1-34021"></a>&#8217;s special
+characters. Note that this escaping is only performed on the sort not on the actual
+value. The escaping of the sort value is performed by
+</p><!--l. 8267--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrautoindexesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34022"></a> <span
+class="cmtt-10">\glsxtrautoindexesc </span></div><hr>
+</p><!--l. 8269--><p class="noindent" >
+You can redefine this to do nothing if you want to omit the escaping. You may want
+to consider providing another field to obtain the appropriate sort value if the one
+provided in the <span
+class="cmss-10">sort</span><a
+ id="dx1-34023"></a> field isn&#8217;t suitable (because it may already have had special
+characters escaped or it may be a numeric value in the case of sort by use or
+definition).
+</p><!--l. 8277--><p class="indent" > The command used to perform the actual indexing is:
+</p><!--l. 8278--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrautoindex</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34024"></a> <span
+class="cmtt-10">\glsxtrautoindex{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8280--><p class="noindent" >
+This just does <span
+class="cmtt-10">\index{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span>by default.
+</p><!--l. 8283--><p class="indent" > <div class="important" title="Important Note"> The entry&#8217;s <span
+class="cmss-10">parent</span><a
+ id="dx1-34025"></a> field isn&#8217;t referenced in this automated indexing.
+</div>
+</p><!--l. 8286--><p class="noindent" >
+</p><!--l. 8288--><p class="indent" > For example, to index the value of the <span
+class="cmss-10">first</span><a
+ id="dx1-34026"></a> key, instead of the <span
+class="cmss-10">name</span><a
+ id="dx1-34027"></a> key:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-198">
+\renewcommand*{\glsxtrautoindexentry}[1]{\string\glsentryfirst{#1}}
+</div>
+<!--l. 8292--><p class="nopar" > and if the sort value also needs to be set to the <span
+class="cmss-10">long</span><a
+ id="dx1-34028"></a> field, if present, otherwise the
+<span
+class="cmss-10">sort</span><a
+ id="dx1-34029"></a> field:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-199">
+\renewcommand*{\glsxtrautoindexassignsort}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifglshaslong{#2}%
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsletentryfield{#1}{#2}{long}}%
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsletentryfield{#1}{#2}{sort}}%
+&#x00A0;<br />}
+</div>
+<!--l. 8301--><p class="nopar" >
+</p><!--l. 8303--><p class="indent" > If the value of the attribute given by &#x27E8;<span
+class="cmti-10">attribute-label</span>&#x27E9; is &#8220;true&#8221;, no encap will be
+added, otherwise the encap will be the attribute value. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-200">
+\glssetcategoryattribute{general}{indexname}{textbf}
+</div>
+<!--l. 8309--><p class="nopar" > will set the encap to <span
+class="cmtt-10">textbf </span>which will display the relevant page number in bold
+whereas
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-201">
+\glssetcategoryattribute{general}{dualindex}{true}
+</div>
+<!--l. 8314--><p class="nopar" > won&#8217;t apply any formatting to the page number in the index.
+</p><!--l. 8317--><p class="indent" > <div class="important" title="Important Note"> The location used in the index will always be the page number not the counter
+used in the glossary. (Unless some other loaded package has modified the definition of
+<span
+class="cmtt-10">\index </span>to use some thing else.) </div>
+</p><!--l. 8322--><p class="noindent" >
+</p><!--l. 8324--><p class="indent" > By default the <span
+class="cmss-10">format</span><a
+ id="dx1-34030"></a> key won&#8217;t be used with the <a
+href="#catattr.dualindex"><span
+class="cmss-10">dualindex</span></a><a
+ id="dx1-34031"></a> attribute. You can
+allow the <span
+class="cmss-10">format</span><a
+ id="dx1-34032"></a> key to override the attribute value by using the preamble-only
+command:
+</p><!--l. 8328--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrEnableIndexFormatOverride</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34033"></a> <span
+class="cmtt-10">\GlsXtrEnableIndexFormatOverride</span>
+</div><hr>
+</p><!--l. 8330--><p class="noindent" >
+If you use this command and <span
+class="cmss-10">hyperref</span><a
+ id="dx1-34034"></a> has been loaded, then the <span
+class="cmss-10">theindex</span><a
+ id="dx1-34035"></a><a
+ id="dx1-34036"></a>
+environment will be modified to redefine <span
+class="cmtt-10">\glshypernumber</span><a
+ id="dx1-34037"></a> to allow formats that use
+that command.
+</p><!--l. 8335--><p class="indent" > <div class="important" title="Important Note"> The <a
+href="#catattr.dualindex"><span
+class="cmss-10">dualindex</span></a><a
+ id="dx1-34038"></a> attribute will still be used on subsequent use even if the
+<a
+href="#catattr.indexonlyfirst"><span
+class="cmss-10">indexonlyfirst</span></a><a
+ id="dx1-34039"></a> attribute (or <a
+href="#styopt.indexonlyfirst"><span
+class="cmss-10">indexonlyfirst</span></a><a
+ id="dx1-34040"></a> package option) is set. However, the <a
+href="#catattr.dualindex"><span
+class="cmss-10">dualindex</span></a><a
+ id="dx1-34041"></a>
+attribute will honour the <span
+class="cmss-10">noindex</span><a
+ id="dx1-34042"></a> key. </div>
+</p><!--l. 8341--><p class="noindent" >
+</p><!--l. 8343--><p class="indent" > The <span
+class="cmtt-10">\glsxtrdoautoindexname </span>command will attempt to escape any of
+<span
+class="cmtt-10">\makeindex</span><a
+ id="dx1-34043"></a>&#8217;s special characters, but there may be special cases where it fails, so take
+care. This assumes the default <a
+ id="dx1-34044"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> actual, level, quote and encap values
+(unless any of the commands <span
+class="cmtt-10">\actualchar</span><a
+ id="dx1-34045"></a>, <span
+class="cmtt-10">\levelchar</span><a
+ id="dx1-34046"></a>, <span
+class="cmtt-10">\quotechar</span><a
+ id="dx1-34047"></a> or <span
+class="cmtt-10">\encapchar</span><a
+ id="dx1-34048"></a>
+have been defined before <span
+class="cmss-10">glossaries-extra </span>is loaded).
+</p><!--l. 8351--><p class="indent" > If this isn&#8217;t the case, you can use the following preamble-only commands to set
+the correct characters.
+</p><!--l. 8353--><p class="indent" > <div class="important" title="Important Note"> Be very careful of possible shifting category codes! </div>
+</p><!--l. 8355--><p class="noindent" >
+</p><!--l. 8357--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrSetActualChar</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34049"></a> <span
+class="cmtt-10">\GlsXtrSetActualChar{</span>&#x27E8;<span
+class="cmitt-10">char</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8359--><p class="noindent" >
+Set the actual character to &#x27E8;<span
+class="cmti-10">char</span>&#x27E9;.
+</p><!--l. 8362--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrSetLevelChar</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34050"></a> <span
+class="cmtt-10">\GlsXtrSetLevelChar{</span>&#x27E8;<span
+class="cmitt-10">char</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8364--><p class="noindent" >
+Set the level character to &#x27E8;<span
+class="cmti-10">char</span>&#x27E9;.
+</p><!--l. 8367--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrSetEscChar</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34051"></a> <span
+class="cmtt-10">\GlsXtrSetEscChar{</span>&#x27E8;<span
+class="cmitt-10">char</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8369--><p class="noindent" >
+Set the escape (quote) character to &#x27E8;<span
+class="cmti-10">char</span>&#x27E9;.
+</p><!--l. 8372--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrSetEncapChar</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-34052"></a> <span
+class="cmtt-10">\GlsXtrSetEncapChar{</span>&#x27E8;<span
+class="cmitt-10">char</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 8374--><p class="noindent" >
+Set the encap character to &#x27E8;<span
+class="cmti-10">char</span>&#x27E9;.
+
+
+
+</p>
+<!--l. 8377--><p class="indent" > </div>
+</p><!--l. 8377--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">8. <a
+ id="sec:onthefly"></a>On-the-Fly Document Definitions</h2>
+</p><!--l. 8380--><p class="indent" > <div class="important" title="Important Note"> The commands described here may superficially look like &#x27E8;<span
+class="cmti-10">word</span>&#x27E9;<span
+class="cmtt-10">\index{</span>&#x27E8;<span
+class="cmti-10">word</span>&#x27E9;<span
+class="cmtt-10">}</span>,
+but they behave rather differently. If you want to use <span
+class="cmtt-10">\index </span>then just use <span
+class="cmtt-10">\index</span>.
+</div>
+</p><!--l. 8385--><p class="noindent" >
+</p><!--l. 8387--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package advises against defining entries in the <span
+class="cmss-10">document</span><a
+ id="dx1-35001"></a><a
+ id="dx1-35002"></a>
+environment. As mentioned in <a
+href="#sec:pkgopts"><span
+class="cmsy-10">&sect;</span>1.2 </a><a
+href="#sec:pkgopts">New or Modified Package Options<!--tex4ht:ref: sec:pkgopts --></a> above, this
+ability is disabled by default with <span
+class="cmss-10">glossaries-extra </span>but can be enabled using the
+<a
+href="#styopt.docdefs"><span
+class="cmss-10">docdefs</span></a><a
+ id="dx1-35003"></a> package options.
+</p><!--l. 8393--><p class="indent" > Although this can be problematic, the <span
+class="cmss-10">glossaries-extra </span>package provides a way of
+defining and using entries within the <span
+class="cmss-10">document</span><a
+ id="dx1-35004"></a><a
+ id="dx1-35005"></a> environment without the tricks used
+with the <a
+href="#styopt.docdefs"><span
+class="cmss-10">docdefs</span></a><a
+ id="dx1-35006"></a> option. <span
+class="cmti-10">There are limitations with this approach, so take care with it.</span>
+This function is disabled by default, but can be enabled using the preamble-only
+command:
+</p><!--l. 8399--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrEnableOnTheFly</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-35007"></a> <span
+class="cmtt-10">\GlsXtrEnableOnTheFly </span></div><hr>
+</p><!--l. 8401--><p class="noindent" >
+When used, this defines the commands described below.
+</p><!--l. 8404--><p class="indent" > <div class="important" title="Important Note"> The commands <span
+class="cmtt-10">\glsxtr</span>, <span
+class="cmtt-10">\glsxtrpl</span>, <span
+class="cmtt-10">\Glsxtr </span>and <span
+class="cmtt-10">\Glsxtrpl </span>can&#8217;t be used after
+the glossaries have been displayed (through <span
+class="cmtt-10">\printglossary</span><a
+ id="dx1-35008"></a> etc). It&#8217;s best not to
+mix these commands with the standard glossary commands, such as <span
+class="cmtt-10">\gls </span>or there
+may be unexpected results. </div>
+</p><!--l. 8410--><p class="noindent" >
+</p><!--l. 8412--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtr</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-35009"></a> <span
+class="cmtt-10">\glsxtr[</span>&#x27E8;<span
+class="cmitt-10">gls-options</span>&#x27E9;<span
+class="cmtt-10">][</span>&#x27E8;<span
+class="cmitt-10">dfn-options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8414--><p class="noindent" >
+If an entry with the label &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; has already been defined, this just does <span
+class="cmtt-10">\gls</span>
+<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">gls-options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>. If &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; hasn&#8217;t been defined, this will define the entry using:
+</p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\newglossaryentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">name={</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">},</span>
+<br /><span
+class="cmtt-10">&#x00A0;category=\glsxtrcat,</span>
+<br /><span
+class="cmtt-10">&#x00A0;description=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\nopostdesc</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">,</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span>&#x27E8;<span
+class="cmitt-10">dfn-options</span>&#x27E9;<span
+class="cmsy-10">}</span>
+</div>
+</div>
+<!--l. 8426--><p class="indent" > <div class="important" title="Important Note"> The &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; must contain any non-expandable commands, such as formatting
+commands or problematic characters. If the term requires any of these, they must be
+omitted from the &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; and placed in the <span
+class="cmss-10">name</span><a
+ id="dx1-35010"></a> key must be provided in the optional
+argument &#x27E8;<span
+class="cmti-10">dfn-options</span>&#x27E9;. </div>
+</p><!--l. 8432--><p class="noindent" >
+
+
+
+</p><!--l. 8434--><p class="indent" > The second optional argument &#x27E8;<span
+class="cmti-10">dfn-options</span>&#x27E9; should be empty if the entry has
+already been defined, since it&#8217;s too late for them. If it&#8217;s not empty, a&#x00A0;warning will be
+generated with
+</p><!--l. 8437--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrWarning</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-35011"></a> <span
+class="cmtt-10">\GlsXtrWarning{</span>&#x27E8;<span
+class="cmitt-10">dfn-options</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8439--><p class="noindent" >
+</p><!--l. 8441--><p class="indent" > For example, this warning will be generated on the second instance of <span
+class="cmtt-10">\glsxtr</span>
+below:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-202">
+\glsxtr[][plural=geese]{goose}
+&#x00A0;<br />&#x00A0;...&#x00A0;later
+&#x00A0;<br />\glsxtr[][plural=geese]{goose}
+</div>
+<!--l. 8447--><p class="nopar" >
+</p><!--l. 8449--><p class="indent" > If you are considering doing something like:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-203">
+\newcommand*{\goose}{\glsxtr[][plural=geese]{goose}}
+&#x00A0;<br />\renewcommand*{\GlsXtrWarning}[2]{}
+&#x00A0;<br />&#x00A0;...&#x00A0;later
+&#x00A0;<br />\goose\&#x00A0;some&#x00A0;more&#x00A0;text&#x00A0;here
+</div>
+<!--l. 8455--><p class="nopar" > then don&#8217;t bother. It&#8217;s simpler and less problematic to just define the entries in the
+preamble with <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-35012"></a> and then use <span
+class="cmtt-10">\gls </span>in the document.
+</p><!--l. 8460--><p class="indent" > There are plural and case-changing alternatives to <span
+class="cmtt-10">\glsxtr</span>:
+</p><!--l. 8461--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-35013"></a> <span
+class="cmtt-10">\glsxtrpl[</span>&#x27E8;<span
+class="cmitt-10">gls-options</span>&#x27E9;<span
+class="cmtt-10">][</span>&#x27E8;<span
+class="cmitt-10">dfn-options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8463--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtr </span>but uses <span
+class="cmtt-10">\glspl </span>instead of <span
+class="cmtt-10">\gls</span>.
+</p><!--l. 8466--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtr</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-35014"></a> <span
+class="cmtt-10">\Glsxtr[</span>&#x27E8;<span
+class="cmitt-10">gls-options</span>&#x27E9;<span
+class="cmtt-10">][</span>&#x27E8;<span
+class="cmitt-10">dfn-options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8468--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtr </span>but uses <span
+class="cmtt-10">\Gls </span>instead of <span
+class="cmtt-10">\gls</span>.
+</p><!--l. 8471--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-35015"></a> <span
+class="cmtt-10">\Glsxtrpl[</span>&#x27E8;<span
+class="cmitt-10">gls-options</span>&#x27E9;<span
+class="cmtt-10">][</span>&#x27E8;<span
+class="cmitt-10">dfn-options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8473--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtr </span>but uses <span
+class="cmtt-10">\Glspl </span>instead of <span
+class="cmtt-10">\gls</span>.
+</p><!--l. 8476--><p class="indent" > If you use UTF-8 and don&#8217;t want the inconvenient of needing to use an
+ASCII-only label, then it&#8217;s better to use <span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">&#x018e;</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span>&#x00A0;or Lua<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>&#x00A0;instead of
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;(or pdf<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>). If you really desperately want to use UTF-8 entry labels
+without switching to <span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">&#x018e;</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span>&#x00A0;or Lua<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>&#x00A0;then there is a starred version of
+<span
+class="cmtt-10">\GlsXtrEnableOnTheFly </span>that allows you to use UTF-8 characters in &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, but it&#8217;s
+experimental and may not work in some cases.
+</p><!--l. 8485--><p class="indent" > <div class="important" title="Important Note"> If you use the starred version of <span
+class="cmtt-10">\GlsXtrEnableOnTheFly </span>don&#8217;t use any
+commands in the &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, even if they expand to just text. </div>
+</p><!--l. 8489--><p class="noindent" >
+
+
+
+</p>
+<!--l. 8491--><p class="indent" > </div>
+</p><!--l. 8491--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">9. <a
+ id="sec:bib2gls"></a><span
+class="cmtt-10">bib2gls</span>: Managing Reference Databases</h2>
+</p><!--l. 8494--><p class="indent" > There is a new command line application called <a
+ id="dx1-36001"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>, which works in much
+the same way as a combination of <span
+class="cmtt-10">bibtex </span>and <span
+class="cmtt-10">makeindex</span>/<span
+class="cmtt-10">xindy</span>. Instead of
+storing all your entry definitions in a <span
+class="cmtt-10">.tex </span>and loading them using <span
+class="cmtt-10">\input </span>or
+<span
+class="cmtt-10">\loadglsentries</span>, the entries can instead be stored in a <span
+class="cmtt-10">.bib </span>file and <a
+ id="dx1-36002"></a><span
+class="cmtt-10">bib2gls </span>can
+selectively write the appropriate commands to a <span
+class="cmtt-10">.glstex </span>file which is loaded using
+<span
+class="cmtt-10">\glsxtrresourcefile </span>(or <span
+class="cmtt-10">\GlsXtrLoadResources</span>).
+</p><!--l. 8505--><p class="indent" > This means that you can use a reference managing system, such as JabRef, to
+maintain the database and it reduces the <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;overhead by only defining the entries
+that are actually required in the document. If you currently have a <span
+class="cmtt-10">.tex </span>file that
+contains hundreds of definitions, but you only use a dozen or so in your
+document, then the build time is needlessly slowed by the unrequired definitions
+that occur when the file is input. (You can convert an existing <span
+class="cmtt-10">.tex </span>file
+containing glossary definitions to a <span
+class="cmtt-10">.bib </span>file using <span
+class="cmtt-10">convertgls2bib</span><a
+ id="dx1-36003"></a>, supplied with
+<a
+ id="dx1-36004"></a><span
+class="cmtt-10">bib2gls</span>.)
+</p><!--l. 8516--><p class="indent" > There are some new commands and options added to <span
+class="cmss-10">glossaries-extra </span>to help assist
+the integration of <a
+ id="dx1-36005"></a><span
+class="cmtt-10">bib2gls </span>into the document build process.
+</p><!--l. 8520--><p class="indent" > This chapter just provides a general overview of <a
+ id="dx1-36006"></a><span
+class="cmtt-10">bib2gls</span>. The full details and
+some sample documents are provided in the <a
+ id="dx1-36007"></a><span
+class="cmtt-10">bib2gls </span><a
+href="http://mirrors.ctan.org/support/bib2gls/bib2gls.pdf" >manual</a>.
+</p><!--l. 8524--><p class="indent" > An example of the contents of <span
+class="cmtt-10">.bib </span>file that stores glossary entries that can be
+extracted with <a
+ id="dx1-36008"></a><span
+class="cmtt-10">bib2gls</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-204">
+@entry{bird,
+&#x00A0;<br />&#x00A0;&#x00A0;name={bird},
+&#x00A0;<br />&#x00A0;&#x00A0;description&#x00A0;=&#x00A0;{feathered&#x00A0;animal},
+&#x00A0;<br />&#x00A0;&#x00A0;see={[see&#x00A0;also]{duck,goose}}
+&#x00A0;<br />}
+&#x00A0;<br />@entry{duck,
+&#x00A0;<br />&#x00A0;&#x00A0;name={duck},
+&#x00A0;<br />&#x00A0;&#x00A0;description&#x00A0;=&#x00A0;{a&#x00A0;waterbird&#x00A0;with&#x00A0;short&#x00A0;legs}
+&#x00A0;<br />}
+&#x00A0;<br />@entry{goose,
+&#x00A0;<br />&#x00A0;&#x00A0;name="goose",
+&#x00A0;<br />&#x00A0;&#x00A0;plural="geese",
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;waterbird&#x00A0;with&#x00A0;a&#x00A0;long&#x00A0;neck}
+&#x00A0;<br />}
+</div>
+<!--l. 8543--><p class="nopar" >
+</p><!--l. 8545--><p class="indent" > The follow provides some abbreviations:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-205">
+@string{ssi={server-side&#x00A0;includes}}
+&#x00A0;<br />@string{html={hypertext&#x00A0;markup&#x00A0;language}}
+&#x00A0;<br />@abbreviation{shtml,
+&#x00A0;<br />&#x00A0;&#x00A0;short="shtml",
+&#x00A0;<br />&#x00A0;&#x00A0;long=&#x00A0;ssi&#x00A0;#&#x00A0;"&#x00A0;enabled&#x00A0;"&#x00A0;#&#x00A0;html,
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;combination&#x00A0;of&#x00A0;\gls{html}&#x00A0;and&#x00A0;\gls{ssi}}
+&#x00A0;<br />}
+&#x00A0;<br />@abbreviation{html,
+&#x00A0;<br />&#x00A0;&#x00A0;short&#x00A0;="html",
+&#x00A0;<br />&#x00A0;&#x00A0;long&#x00A0;&#x00A0;=&#x00A0;html,
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;markup&#x00A0;language&#x00A0;for&#x00A0;creating&#x00A0;web&#x00A0;pages}
+&#x00A0;<br />}
+&#x00A0;<br />@abbreviation{ssi,
+&#x00A0;<br />&#x00A0;&#x00A0;short="ssi",
+&#x00A0;<br />&#x00A0;&#x00A0;long&#x00A0;=&#x00A0;ssi,
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;simple&#x00A0;interpreted&#x00A0;server-side&#x00A0;scripting&#x00A0;language}
+&#x00A0;<br />}
+</div>
+<!--l. 8567--><p class="nopar" >
+</p><!--l. 8569--><p class="indent" > Here are some symbols:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-206">
+preamble{"\providecommand{\mtx}[1]{\boldsymbol{#1}}"}
+&#x00A0;<br />@symbol{M,
+&#x00A0;<br />&#x00A0;&#x00A0;name={$\mtx{M}$},
+&#x00A0;<br />&#x00A0;&#x00A0;text={\mtx{M}},
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;matrix}
+&#x00A0;<br />}
+&#x00A0;<br />@symbol{v,
+&#x00A0;<br />&#x00A0;&#x00A0;name={$\vec{v}$},
+&#x00A0;<br />&#x00A0;&#x00A0;text={\vec{v}},
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;vector}
+&#x00A0;<br />}
+&#x00A0;<br />@symbol{S,
+&#x00A0;<br />&#x00A0;&#x00A0;name={$\mathcal{S}$},
+&#x00A0;<br />&#x00A0;&#x00A0;text={\mathcal{S}},
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;set}
+&#x00A0;<br />}
+</div>
+<!--l. 8590--><p class="nopar" >
+</p><!--l. 8592--><p class="indent" > To ensure that <a
+ id="dx1-36009"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> can find out which entries have been used in the
+document, you need the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-36010"></a> package option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-207">
+\usepackage[record]{glossaries-extra}
+</div>
+<!--l. 8596--><p class="nopar" > If this option&#8217;s value is omitted (as above), the normal indexing will be switched off,
+since <a
+ id="dx1-36011"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> can also sort the entries and collate the locations.
+</p><!--l. 8601--><p class="indent" > If you still want to use an indexing application (for example, you need a custom
+<a
+ id="dx1-36012"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> rule), then just use <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=alsoindex</span><a
+ id="dx1-36013"></a> and continue to use <span
+class="cmtt-10">\makeglossaries</span>
+and <span
+class="cmtt-10">\printglossary </span>(or <span
+class="cmtt-10">\printglossaries</span>), but you also need to instruct
+<a
+ id="dx1-36014"></a><span
+class="cmtt-10">bib2gls </span>to omit sorting to save time and to prevent the <span
+class="cmss-10">sort</span><a
+ id="dx1-36015"></a> key from being
+set.
+</p><!--l. 8608--><p class="indent" > The <span
+class="cmtt-10">.glstex </span>file created by <a
+ id="dx1-36016"></a><span
+class="cmtt-10">bib2gls </span>is loaded using:
+</p><!--l. 8609--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrresourcefile</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-36017"></a> <span
+class="cmtt-10">\glsxtrresourcefile[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">filename</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8611--><p class="noindent" >
+(Don&#8217;t include the file extension in &#x27E8;<span
+class="cmti-10">filename</span>&#x27E9;.) There&#8217;s a shortcut version
+(recommended over the above) that sets &#x27E8;<span
+class="cmti-10">filename</span>&#x27E9; to use <span
+class="cmtt-10">\jobname</span>:
+</p><!--l. 8614--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrLoadResources</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-36018"></a> <span
+class="cmtt-10">\GlsXtrLoadResources[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 8616--><p class="noindent" >
+On the first use, this command is a shortcut for </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsxtrresourcefile[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\jobname</span><span
+class="cmsy-10">}</span>
+</div>
+</div> On subsequent use,<span class="footnote-mark"><a
+href="#fn1x9" id="fn1x9-bk"><sup class="textsuperscript">9.1</sup></a></span><a
+ id="x1-36019f1"></a>&#x00A0;this
+command is a shortcut for <div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsxtrresourcefile[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\jobname-</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmsy-10">}</span>
+</div>
+</div> where &#x27E8;<span
+class="cmti-10">n</span>&#x27E9; is the current value of
+<!--l. 8628--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsxtrresourcecount </span></div><hr>
+</p><!--l. 8629--><p class="noindent" >
+which is incremented at the end of <span
+class="cmtt-10">\GlsXtrLoadResources</span>. Any advisory notes
+regarding <span
+class="cmtt-10">\glsxtrresourcefile </span>also apply to <span
+class="cmtt-10">\GlsXtrLoadResources</span>.
+</p><!--l. 8634--><p class="indent" > The <span
+class="cmtt-10">\glsxtrresourcefile </span>command writes the line </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsxtr@resource{</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">filename</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> to the <span
+class="cmtt-10">.aux </span>file and will input &#x27E8;<span
+class="cmti-10">filename</span>&#x27E9;<span
+class="cmtt-10">.glstex </span>if it
+exists.<span class="footnote-mark"><a
+href="#fn2x9" id="fn2x9-bk"><sup class="textsuperscript">9.2</sup></a></span><a
+ id="x1-36020f2"></a>
+
+
+
+<!--l. 8644--><p class="indent" > Since the <span
+class="cmtt-10">.glstex </span>file won&#8217;t exist on the first <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run, the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-36021"></a> package
+option additionally switches on <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-36022"></a>. Any use of commands like <span
+class="cmtt-10">\gls </span>or
+<span
+class="cmtt-10">\glstext </span>will produce ?? in the document, since the entries are undefined at this
+point. Once <a
+ id="dx1-36023"></a><span
+class="cmtt-10">bib2gls </span>has created the <span
+class="cmtt-10">.glstex </span>file the references should be resolved.
+This may cause a shift in the locations if the actual text produced once the entry is
+defined is significantly larger than the placeholder ?? (as this can alter the page
+breaking).
+</p><!--l. 8654--><p class="indent" > Note that as from v1.12, <span
+class="cmtt-10">\glsxtrresourcefile </span>temporarily switches the
+category code of <span
+class="cmtt-10">@ </span>to 11 (letter) while it reads the file to allow for any internal
+commands stored in the location field.
+</p>
+<!--l. 8659--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.1 </span> <a
+ id="selection"></a>Selection</h3>
+<!--l. 8661--><p class="noindent" >The default behaviour is for <a
+ id="dx1-37001"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> to select all entries that have a record in the
+<span
+class="cmtt-10">.aux </span>file, and any dependent entries (including parent and cross-references). The
+<span
+class="cmtt-10">glsignore </span>format (for example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[format=glsignore]{duck}</span></span></span>) is recognised by
+<a
+ id="dx1-37002"></a><span
+class="cmtt-10">bib2gls </span>as a special ignored record. This means that it will match the selection
+criteria but the record won&#8217;t be added to the location list. This means that you won&#8217;t
+get spurious commas in the location list (as can happen with the other indexing
+methods), so you can do, for example,
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-208">
+\GlsXtrSetDefaultNumberFormat{glsignore}
+</div>
+<!--l. 8673--><p class="nopar" > at the start of the front matter and
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-209">
+\GlsXtrSetDefaultNumberFormat{glsnumberformat}
+</div>
+<!--l. 8677--><p class="nopar" > at the start of the main matter to prevent any records in the front matter from
+occurring in the location lists.
+</p><!--l. 8681--><p class="indent" > <div class="important" title="Important Note"> Note that commands like <span
+class="cmtt-10">\glsaddall </span>and <span
+class="cmtt-10">\glsaddallunused </span>don&#8217;t
+work with <a
+ id="dx1-37003"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> as the command has to iterate over the internal lists of
+defined entry labels, which will be empty on the first run and on subsequent
+runs will only contain those entries that have been selected by <a
+ id="dx1-37004"></a><span
+class="cmtt-10">bib2gls</span>.
+</div>
+</p><!--l. 8686--><p class="noindent" >
+</p><!--l. 8688--><p class="indent" > If you want to add all entries to the glossary, you need to tell <a
+ id="dx1-37005"></a><span
+class="cmtt-10">bib2gls </span>this in the
+options list. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-210">
+\GlsXtrLoadResources[src={terms},selection={all}]
+</div>
+<!--l. 8693--><p class="nopar" > This will add all entries, regardless of whether or not they have any records in the
+<span
+class="cmtt-10">.aux </span>file. Those that don&#8217;t have any records will have an empty location list. See the
+<a
+ id="dx1-37006"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> user manual for more details of this option.
+</p><!--l. 8699--><p class="noindent" >
+</p>
+<!--l. 8699--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.2 </span> <a
+ id="sortinganddisplayingtheglossary"></a>Sorting and Displaying the Glossary</h3>
+<!--l. 8701--><p class="noindent" >There are many sorting options provided by <a
+ id="dx1-38001"></a><span
+class="cmtt-10">bib2gls</span>. The default is to sort
+according to the system locale. If the document has a language setting, you can use
+<span
+class="cmtt-10">sort=doc </span>to instruct <a
+ id="dx1-38002"></a><span
+class="cmtt-10">bib2gls </span>to sort according to that. (The language tag obtained
+from <span
+class="cmss-10">tracklang</span><a
+ id="dx1-38003"></a>&#8217;s interface is written to the <span
+class="cmtt-10">.aux </span>file.) For a multilingual document
+you need to explicitly set the locale using a well-formed language tag. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-211">
+\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;&#x00A0;src=terms,&#x00A0;%&#x00A0;data&#x00A0;in&#x00A0;terms.bib
+&#x00A0;<br />&#x00A0;&#x00A0;sort=de-DE-1996&#x00A0;%&#x00A0;sort&#x00A0;according&#x00A0;to&#x00A0;this&#x00A0;locale
+&#x00A0;<br />]
+</div>
+<!--l. 8714--><p class="nopar" > The locale-sensitive sort methods usually ignore most punctuation so for lists of
+symbols you may find it more appropriate to use one of the letter-base sort methods
+that sort according to the Unicode value of each character. Alternatively you can
+provide a custom rule. See the <a
+ id="dx1-38004"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> manual for full details of all the available sort
+methods.
+</p><!--l. 8723--><p class="indent" > Since the <span
+class="cmtt-10">.glstex </span>file only defines those references required within the document
+(selected according to the <span
+class="cmtt-10">selection </span>option) and the definitions have been written in
+the order corresponding to <a
+ id="dx1-38005"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s sorted list, the glossaries can simply be
+displayed using <span
+class="cmtt-10">\printunsrtglossary </span>(or <span
+class="cmtt-10">\printunsrtglossaries</span>), described in
+<a
+href="#sec:printunsrt"><span
+class="cmsy-10">&sect;</span>10.2 </a><a
+href="#sec:printunsrt">Display All Entries Without Sorting or Indexing<!--tex4ht:ref: sec:printunsrt --></a>.
+</p><!--l. 8731--><p class="indent" > Suppose the <span
+class="cmtt-10">.bib </span>examples shown above have been stored in the files <span
+class="cmtt-10">terms.bib</span>,
+<span
+class="cmtt-10">abbrvs.bib </span>and <span
+class="cmtt-10">symbols.bib </span>which may either be in the current directory or on
+<span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s path. Then the document might look like:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-212">
+\documentclass{article}
+&#x00A0;<br />\usepackage[record]{glossaries-extra}
+&#x00A0;<br />\setabbreviationstyle{long-short-desc}
+&#x00A0;<br />\GlsXtrLoadResources[src={terms,abbrvs,symbols}]
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{bird}
+&#x00A0;<br />\gls{shtml}
+&#x00A0;<br />\gls{M}
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 8753--><p class="nopar" > The document build process (assuming the document is called <span
+class="cmtt-10">mydoc</span>) is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-213">
+pdflatex&#x00A0;mydoc
+&#x00A0;<br />bib2gls&#x00A0;mydoc
+&#x00A0;<br />pdflatex&#x00A0;mydoc
+</div>
+<!--l. 8760--><p class="nopar" > This creates a single glossary containing the entries: <span
+class="cmtt-10">bird</span>, <span
+class="cmtt-10">duck</span>, <span
+class="cmtt-10">goose</span>, <span
+class="cmtt-10">html</span>, <span
+class="cmtt-10">M</span>,
+<span
+class="cmtt-10">shtml </span>and <span
+class="cmtt-10">ssi </span>(in that order). The <span
+class="cmtt-10">bird</span>, <span
+class="cmtt-10">shtml </span>and <span
+class="cmtt-10">M </span>entries were added because
+<a
+ id="dx1-38006"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> detected (from the <span
+class="cmtt-10">.aux </span>file) that they had been used in the document. The
+other entries were added because <a
+ id="dx1-38007"></a><span
+class="cmtt-10">bib2gls </span>detected (from the <span
+class="cmtt-10">.bib </span>files) that they
+are referenced by the used entries. In the case of <span
+class="cmtt-10">duck </span>and <span
+class="cmtt-10">goose</span>, they are
+in the <span
+class="cmss-10">see</span><a
+ id="dx1-38008"></a> field for <span
+class="cmtt-10">bird</span>. In the case of <span
+class="cmtt-10">ssi </span>and <span
+class="cmtt-10">html</span>, they are referenced
+in the <span
+class="cmss-10">description</span><a
+ id="dx1-38009"></a> field of <span
+class="cmtt-10">shtml</span>. These cross-referenced entries won&#8217;t have
+a location list when the glossary is first displayed, but depending on how
+they are referenced, they may pick up a location list on the next document
+build.
+</p><!--l. 8777--><p class="indent" > The entries can be separated into different glossaries with different sort
+methods:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-214">
+\documentclass{article}
+&#x00A0;<br />\usepackage[record,abbreviations,symbols]{glossaries-extra}
+&#x00A0;<br />\setabbreviationstyle{long-short-desc}
+&#x00A0;<br />\GlsXtrLoadResources[src={terms},sort={en-GB},type=main]
+&#x00A0;<br />\GlsXtrLoadResources
+&#x00A0;<br />&#x00A0;[src={abbrvs},sort={letter-nocase},type=abbreviations]
+&#x00A0;<br />\GlsXtrLoadResources
+&#x00A0;<br />&#x00A0;[src={symbols},sort={use},type={symbols}]
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{bird}
+&#x00A0;<br />\gls{shtml}
+&#x00A0;<br />\gls{M}
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 8803--><p class="nopar" >
+</p><!--l. 8805--><p class="indent" > Or you can have multiple instance of <span
+class="cmtt-10">\GlsXtrLoadResources </span>with the same
+<span
+class="cmtt-10">type</span>, which will produce a glossary with ordered sub-blocks. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-215">
+\documentclass{article}
+&#x00A0;<br />\usepackage[record,style=indexgroup]{glossaries-extra}
+&#x00A0;<br />\setabbreviationstyle{long-short-desc}
+&#x00A0;<br />\GlsXtrLoadResources
+&#x00A0;<br />&#x00A0;[src={abbrvs},sort={letter-nocase},type=main,
+&#x00A0;<br />&#x00A0;&#x00A0;group={Abbreviations}]
+&#x00A0;<br />\GlsXtrLoadResources
+&#x00A0;<br />&#x00A0;[src={symbols},sort={use},type=main,
+&#x00A0;<br />&#x00A0;&#x00A0;group={Symbols}]
+&#x00A0;<br />\GlsXtrLoadResources[src={terms},sort={en-GB},type=main]
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{bird}
+&#x00A0;<br />\gls{shtml}
+&#x00A0;<br />\gls{M}
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 8834--><p class="nopar" > This will result in a glossary where the first group has the title &#8220;Abbreviations&#8221;, the
+second group has the title &#8220;Symbols&#8221; and then follow the usual letter groups. Note
+that for this example to work, you must run <a
+ id="dx1-38010"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> with the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">--group</span></span></span> (or <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">-g</span></span></span>)
+switch. For example, if the document is called <span
+class="cmtt-10">myDoc.tex</span>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-216">
+pdflatex&#x00A0;myDoc
+&#x00A0;<br />bib2gls&#x00A0;-g&#x00A0;myDoc
+&#x00A0;<br />pdflatex&#x00A0;myDoc
+</div>
+<!--l. 8845--><p class="nopar" > The value of the <span
+class="cmss-10">group</span><a
+ id="dx1-38011"></a> field must always be a label. You can set the corresponding
+title with <span
+class="cmtt-10">\glsxtrsetgrouptitle </span>(see <a
+href="#sec:glosstylemods"><span
+class="cmsy-10">&sect;</span>2.12 </a><a
+href="#sec:glosstylemods">Glossary Style Modifications<!--tex4ht:ref: sec:glosstylemods --></a>). If no title
+is set then the label is used as the group title.
+</p><!--l. 8851--><p class="indent" > You can provide your own custom sort rule. For example, if you are using
+<span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">&#x018e;</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span>&#x00A0;or Lua<span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span>: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\GlsXtrLoadResources[</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;src=terms,</span><span
+class="cmtt-10">&#x00A0;%</span><span
+class="cmtt-10">&#x00A0;entries</span><span
+class="cmtt-10">&#x00A0;in</span><span
+class="cmtt-10">&#x00A0;terms.bib</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;sort=custom,</span><span
+class="cmtt-10">&#x00A0;%</span><span
+class="cmtt-10">&#x00A0;custom</span><span
+class="cmtt-10">&#x00A0;sort</span><span
+class="cmtt-10">&#x00A0;rule</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;sort-rule=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;required</span><span
+class="cmtt-10">&#x00A0;with</span><span
+class="cmtt-10">&#x00A0;sort=custom</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;&aelig;;&AElig;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;a;</span><span
+class="cmtt-10">&aacute;</span><span
+class="cmtt-10">;</span><span
+class="cmtt-10">å</span><span
+class="cmtt-10">;</span><span
+class="cmtt-10">&auml;</span><span
+class="cmtt-10">,</span><span
+class="cmtt-10">&Auml;</span><span
+class="cmtt-10">;</span><span
+class="cmtt-10">&Aacute;</span><span
+class="cmtt-10">;</span><span
+class="cmtt-10">Å</span><span
+class="cmtt-10">;</span><span
+class="cmtt-10">&Auml;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;b,B</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;c;</span><span
+class="cmtt-10">&#263;</span><span
+class="cmtt-10">,C;</span><span
+class="cmtt-10">&#262;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;d,D</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;e;</span><span
+class="cmtt-10">&eacute;</span><span
+class="cmtt-10">,E;</span><span
+class="cmtt-10">É</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;f,F</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;g,G</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;h,H</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;i;</span><span
+class="cmtt-10">í</span><span
+class="cmtt-10">,I;</span><span
+class="cmtt-10">Í</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;j,J</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;l;</span><span
+class="cmtt-10">&#322;,L;</span><span
+class="cmtt-10">&#321;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;m,M</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;n,N</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;o;</span><span
+class="cmtt-10">ö</span><span
+class="cmtt-10">;&oslash;,O;</span><span
+class="cmtt-10">Ö</span><span
+class="cmtt-10">;Ø</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;p,P</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;q,Q</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;r,R</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;s;</span><span
+class="cmtt-10">&#347;</span><span
+class="cmtt-10">,S;</span><span
+class="cmtt-10">&#346;</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;t,T</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;u;</span><span
+class="cmtt-10">ú</span><span
+class="cmtt-10">,U;</span><span
+class="cmtt-10">Ú</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;v,V</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;w,W</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;x,X</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;y,Y</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;z;</span><span
+class="cmtt-10">&#380;</span><span
+class="cmtt-10">,Z;</span><span
+class="cmtt-10">&#379;</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmsy-10">}</span>
+<br /><span
+class="cmtt-10">]</span>
+</div>
+</div> Remember that if you are using <span
+class="cmss-10">inputenc</span><a
+ id="dx1-38012"></a> then extended characters, such as &eacute; or &oslash;,
+are active and will expand when written to the <span
+class="cmtt-10">.aux </span>file. So with PDF<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;the
+above would have to be changed to protect against expansion. Some of the
+options, including <span
+class="cmtt-10">sort-rule</span>, allow Unicode characters to be indicated in the
+format <span
+class="cmtt-10">\u</span>&#x27E8;<span
+class="cmti-10">hex</span>&#x27E9; (or <span
+class="cmtt-10">\u</span>&#x00A0;&#x27E8;<span
+class="cmti-10">hex</span>&#x27E9;) <span
+class="cmbx-10">in the </span><span
+class="cmtt-10">.aux </span><span
+class="cmbx-10">file</span>. <a
+ id="dx1-38013"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> will recognise this as the
+character given by the hexadecimal value &#x27E8;<span
+class="cmti-10">hex</span>&#x27E9;. The <span
+class="cmtt-10">\u </span>also needs protection from
+expansion, so with a non-Unicode aware engine, the character &aelig;&#x00A0;needs to be
+written as <span
+class="cmtt-10">\string\uE6 </span>and so on. This is quite cumbersome, but you can
+use the shortcut <span
+class="cmtt-10">\glshex</span><a
+ id="dx1-38014"></a> <span
+class="cmtt-10">E6 </span>instead, so the above needs to be written as:
+<div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\GlsXtrLoadResources[</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;src=terms,</span><span
+class="cmtt-10">&#x00A0;%</span><span
+class="cmtt-10">&#x00A0;entries</span><span
+class="cmtt-10">&#x00A0;in</span><span
+class="cmtt-10">&#x00A0;terms.bib</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;sort=custom,</span><span
+class="cmtt-10">&#x00A0;%</span><span
+class="cmtt-10">&#x00A0;custom</span><span
+class="cmtt-10">&#x00A0;sort</span><span
+class="cmtt-10">&#x00A0;rule</span>
+
+
+
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;sort-rule=</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">%</span><span
+class="cmtt-10">&#x00A0;required</span><span
+class="cmtt-10">&#x00A0;with</span><span
+class="cmtt-10">&#x00A0;sort=custom</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;\glshex</span><span
+class="cmtt-10">&#x00A0;E6;\glshex</span><span
+class="cmtt-10">&#x00A0;C6</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;a;\glshex</span><span
+class="cmtt-10">&#x00A0;E1;\glshex</span><span
+class="cmtt-10">&#x00A0;E5,\glshex</span><span
+class="cmtt-10">&#x00A0;E4,A;\glshex</span><span
+class="cmtt-10">&#x00A0;C1;\glshex</span><span
+class="cmtt-10">&#x00A0;C5;\glshex</span><span
+class="cmtt-10">&#x00A0;C4</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;b,B</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;c;\glshex</span><span
+class="cmtt-10">&#x00A0;0107,C;\glshex</span><span
+class="cmtt-10">&#x00A0;0106</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;d,D</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;e;\glshex</span><span
+class="cmtt-10">&#x00A0;E9,E;\glshex</span><span
+class="cmtt-10">&#x00A0;C9</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;f,F</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;g,G</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;h,H</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;i;\glshex</span><span
+class="cmtt-10">&#x00A0;ED,I;\glshex</span><span
+class="cmtt-10">&#x00A0;CD</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;j,J</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;l;\glshex</span><span
+class="cmtt-10">&#x00A0;0142,L;\glshex</span><span
+class="cmtt-10">&#x00A0;0141</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;m,M</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;n,N</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;o;\glshex</span><span
+class="cmtt-10">&#x00A0;F6;\glshex</span><span
+class="cmtt-10">&#x00A0;F8,O;\glshex</span><span
+class="cmtt-10">&#x00A0;D6;\glshex</span><span
+class="cmtt-10">&#x00A0;D8</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;p,P</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;q,Q</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;r,R</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;s;\glshex</span><span
+class="cmtt-10">&#x00A0;013F,S;\glshex</span><span
+class="cmtt-10">&#x00A0;015A</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;t,T</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;u;\glshex</span><span
+class="cmtt-10">&#x00A0;FA,U;\glshex</span><span
+class="cmtt-10">&#x00A0;DA</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;v,V</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;w,W</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;x,X</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;y,Y</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;&#x003C;</span><span
+class="cmtt-10">&#x00A0;z;\glshex</span><span
+class="cmtt-10">&#x00A0;017C,Z;\glshex</span><span
+class="cmtt-10">&#x00A0;017B</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmtt-10">&#x00A0;</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">]</span>
+</div>
+</div>
+<!--l. 8899--><p class="noindent" >
+</p>
+<!--l. 8899--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.3 </span> <a
+ id="x1-390009.3"></a>The <span
+class="cmss-10">glossaries-extra-bib2gls </span>package</h3>
+<!--l. 8902--><p class="noindent" >The package option <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-39001"></a> (or simply <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-39002"></a>) automatically loads the
+supplementary package <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-39003"></a>, which provides some commands that
+are specific to <a
+ id="dx1-39004"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>. The package isn&#8217;t loaded by <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=alsoindex</span><a
+ id="dx1-39005"></a> as that option
+is intended for sorting with <a
+ id="dx1-39006"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a> or <a
+ id="dx1-39007"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> and it is expected that the sorting
+will be switched off (with the resource option <span
+class="cmtt-10">sort=none</span>).
+</p><!--l. 8911--><p class="indent" > If <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-39008"></a> is loaded via the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-39009"></a> package option then the
+check for associated language resource files (see <a
+href="#sec:lang"><span
+class="cmsy-10">&sect;</span>13 </a><a
+href="#sec:lang">Multi-Lingual Support<!--tex4ht:ref: sec:lang --></a>)
+will also search for the existence of <span
+class="cmtt-10">glossariesxtr-</span>&#x27E8;<span
+class="cmti-10">script</span>&#x27E9;<span
+class="cmtt-10">.ldf </span>for each
+document dialect (where &#x27E8;<span
+class="cmti-10">script</span>&#x27E9; is the four letter script identifier, such as
+<span
+class="cmtt-10">Latn</span>).
+</p><!--l. 8919--><p class="indent" > This package provides some shortcut commands that use <span
+class="cmtt-10">\printunsrtglossary</span><a
+ id="dx1-39010"></a> if the
+relevant package option has defined the associated glossary: <span
+class="cmtt-10">\printunsrtabbreviations</span><a
+ id="dx1-39011"></a>,
+<span
+class="cmtt-10">\printunsrtacronyms</span><a
+ id="dx1-39012"></a>, <span
+class="cmtt-10">\printunsrtsymbols</span><a
+ id="dx1-39013"></a>, <span
+class="cmtt-10">\printunsrtnumbers</span><a
+ id="dx1-39014"></a> and
+<span
+class="cmtt-10">\printunsrtindex</span><a
+ id="dx1-39015"></a>.
+</p><!--l. 8925--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrprovidecommand</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-39016"></a> <span
+class="cmtt-10">\glsxtrprovidecommand{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">][</span>&#x27E8;<span
+class="cmitt-10">default</span>&#x27E9;<span
+class="cmtt-10">]</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8927--><p class="noindent" >
+This command is intended for use in <span
+class="cmtt-10">@preamble</span>. It&#8217;s simply defined to
+<span
+class="cmtt-10">\providecommand </span>in <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-39017"></a> but <a
+ id="dx1-39018"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s interpreter treats it as
+<span
+class="cmtt-10">\renewcommand</span>. This means that you can override <a
+ id="dx1-39019"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s internal definition of a
+command without overriding the command definition in the document (if it&#8217;s already
+defined before the resource file is input). For example
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-217">
+@preamble{"\glsxtrprovidecommand{\int}{integral}"}
+</div>
+<!--l. 8938--><p class="nopar" > This will force <a
+ id="dx1-39020"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> to treat <span
+class="cmtt-10">\int </span>as the word &#8220;integral&#8221; to assist sorting but if
+this preamble code is written to the <span
+class="cmtt-10">.glstex </span>file (as it is by default) then it won&#8217;t
+override the current definition (provided by the kernel or redefined by a
+package).
+</p><!--l. 8945--><p class="indent" > The helper commands in the resource files are defined using <span
+class="cmtt-10">\providecommand</span>.
+For many of them, if you want to provide an alternative definition then you need to
+define the command before the resource file is loaded. There are a few that may be
+redefined afterwards but if you use <span
+class="cmtt-10">\renewcommand </span>then you will get an error on the
+first <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run when the <span
+class="cmtt-10">.glstex </span>file doesn&#8217;t exist. In this case, you may prefer to
+use:
+</p><!--l. 8952--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsrenewcommand</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-39021"></a> <span
+class="cmtt-10">\glsrenewcommand{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">][</span>&#x27E8;<span
+class="cmitt-10">default</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">definition</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8954--><p class="noindent" >
+This behaves like <span
+class="cmtt-10">\renewcommand </span>but only generates a warning rather than an error
+if the command isn&#8217;t already defined so it won&#8217;t interrupt the document
+build.
+</p><!--l. 8959--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIndexCounterLink</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-39022"></a> <span
+class="cmtt-10">\GlsXtrIndexCounterLink{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 8961--><p class="noindent" >
+If the <span
+class="cmtt-10">\hyperref</span><a
+ id="dx1-39023"></a> command has been defined (that is, <span
+class="cmss-10">hyperref</span><a
+ id="dx1-39024"></a> has been
+loaded before <span
+class="cmss-10">glossaries-extra</span>) then this command checks for the existence of
+the <span
+class="cmtt-10">indexcounter </span>field. If this field is set for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;, this
+command does <span
+class="cmtt-10">\hyperref[wrglossary.</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}</span>, where &#x27E8;<span
+class="cmti-10">value</span>&#x27E9; is the
+value of the <span
+class="cmtt-10">indexcounter </span>field. If the field isn&#8217;t set or if <span
+class="cmtt-10">\hyperref </span>hasn&#8217;t
+been defined, this just does &#x27E8;<span
+class="cmti-10">text</span>&#x27E9;. This command is provided for use with the
+<a
+href="#styopt.indexcounter"><span
+class="cmss-10">indexcounter</span></a><a
+ id="dx1-39025"></a> package option combined with <a
+ id="dx1-39026"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s <span
+class="cmtt-10">save-index-counter</span>
+resource option. See the <a
+ id="dx1-39027"></a><span
+class="cmtt-10">bib2gls </span>manual for further details (at least version
+1.4).
+</p><!--l. 8975--><p class="indent" > If you use the <span
+class="cmtt-10">set-widest </span>resource option, <a
+ id="dx1-39028"></a><span
+class="cmtt-10">bib2gls </span>v1.8+ will now
+use:
+</p><!--l. 8977--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrSetWidest</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-39029"></a> <span
+class="cmtt-10">\glsxtrSetWidest{</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">level</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 8979--><p class="noindent" >
+(if it has been defined) to set the widest name for the given glossary type and level.
+This allows for both the <span
+class="cmss-10">alttree</span><a
+ id="dx1-39030"></a> style and the styles provided by <span
+class="cmss-10">glossary-longextra</span><a
+ id="dx1-39031"></a>,
+which need to know the widest name.
+</p><!--l. 8985--><p class="indent" > If <a
+ id="dx1-39032"></a><span
+class="cmtt-10">bib2gls </span>can&#8217;t determine the widest name (typically because the name field
+consists of commands that aren&#8217;t recognised by the interpreter) then <a
+ id="dx1-39033"></a><span
+class="cmtt-10">bib2gls </span>v1.8+
+will now use:
+</p><!--l. 8988--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrSetWidestFallback</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-39034"></a> <span
+class="cmtt-10">\glsxtrSetWidestFallback{</span>&#x27E8;<span
+class="cmitt-10">max depth</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+
+
+
+</p><!--l. 8990--><p class="noindent" >
+(if defined). Currently the maximum hierarchical depth &#x27E8;<span
+class="cmti-10">max depth</span>&#x27E9; may only be 0 or
+2. This command requires commands provided by the <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-39035"></a>
+package with the <span
+class="cmss-10">alttree</span><a
+ id="dx1-39036"></a> style enabled. In this case, it may be simpler to just use
+<span
+class="cmtt-10">\glssetwidest</span><a
+ id="dx1-39037"></a>.
+</p><!--l. 8997--><p class="noindent" >
+</p>
+<!--l. 8997--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">9.3.1 </span> <a
+ id="sec:supplocations"></a>Supplemental Locations</h4>
+<!--l. 9000--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdisplaysupploc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-40001"></a> <span
+class="cmtt-10">\glsxtrdisplaysupploc{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">src</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9002--><p class="noindent" >
+This is used by <a
+ id="dx1-40002"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> version 1.7+ for supplemental locations, instead of using
+<span
+class="cmtt-10">\glsxtrsupphypernumber </span>with the <a
+href="#catattr.externallocation"><span
+class="cmss-10">externallocation</span></a><a
+ id="dx1-40003"></a> attribute. This command sets up
+the location counter and prefix (used in the formation of hyperlinks) and then
+uses
+</p><!--l. 9008--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrmultisupplocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-40004"></a> <span
+class="cmtt-10">\glsxtrmultisupplocation{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">src</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9010--><p class="noindent" >
+to format the actual location (with an external hyperlink, if supported).
+</p><!--l. 9014--><p class="noindent" >
+</p>
+<!--l. 9014--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">9.3.2 </span> <a
+ id="sec:recordnameref"></a>Nameref Record</h4>
+<!--l. 9017--><p class="noindent" >Normally locations are recorded in the <span
+class="cmtt-10">.aux </span>file in the form:
+</p><!--l. 9020--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsxtr@record{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 9021--><p class="noindent" >
+The <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=nameref</span><a
+ id="dx1-41001"></a> option, which requires at least <a
+ id="dx1-41002"></a><span
+class="cmtt-10">bib2gls </span>v1.8, instead
+uses:
+</p><!--l. 9025--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsxtr@record@nameref{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">href</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">hcounter</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9026--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; is obtained from <span
+class="cmtt-10">\@currentlabelname </span>and &#x27E8;<span
+class="cmti-10">href </span>&#x27E9; is obtained from
+<span
+class="cmtt-10">\@currentHref</span>. These commands require <span
+class="cmss-10">hyperref</span><a
+ id="dx1-41003"></a>. If they are undefined, &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; and
+&#x27E8;<span
+class="cmti-10">href </span>&#x27E9; will be left empty and <a
+ id="dx1-41004"></a><span
+class="cmtt-10">bib2gls </span>will treat it as a regular record.
+</p><!--l. 9033--><p class="indent" > <div class="important" title="Important Note"> Be careful with this option as &#x27E8;<span
+class="cmti-10">href </span>&#x27E9; will globally change on every instance of
+<span
+class="cmtt-10">\refstepcounter </span>but &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; won&#8217;t necessarily change. It can therefore cause
+unexpected behaviour. </div>
+</p><!--l. 9037--><p class="noindent" >
+</p><!--l. 9039--><p class="indent" > The final argument &#x27E8;<span
+class="cmti-10">hcounter</span>&#x27E9; is obtained from <span
+class="cmtt-10">\theH</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; which provides the
+partial target name associated with the indexing counter. With the original
+
+
+
+<a
+ id="dx1-41005"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a>/<a
+ id="dx1-41006"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> approach, it&#8217;s not possible to include this information in the
+location, so the base <span
+class="cmss-10">glossaries</span><a
+ id="dx1-41007"></a> package attempts to derive a prefix from which the
+&#x27E8;<span
+class="cmti-10">hcounter</span>&#x27E9; value can be reconstituted by appending the prefix. Unfortunately, not all
+definitions of <span
+class="cmtt-10">\theH</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; are in the form &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;<span
+class="cmtt-10">\the</span>&#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; (most notably the
+<span
+class="cmss-10">equation</span><a
+ id="dx1-41008"></a> counter with chapters) so this can fail.
+</p><!--l. 9050--><p class="indent" > Since <a
+ id="dx1-41009"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> is customized specifically for use with <span
+class="cmss-10">glossaries-extra</span>, it&#8217;s now
+possible to save &#x27E8;<span
+class="cmti-10">hcounter</span>&#x27E9;, so the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=nameref</span><a
+ id="dx1-41010"></a> option does this. By providing both
+&#x27E8;<span
+class="cmti-10">href </span>&#x27E9; and &#x27E8;<span
+class="cmti-10">hcounter</span>&#x27E9;, you can determine which target you would rather use. The default
+is to use &#x27E8;<span
+class="cmti-10">hcounter</span>&#x27E9;, which will take you to the place where the corresponding counter
+was incremented with <span
+class="cmtt-10">\refstepcounter</span>. However, you may choose to switch to
+using the &#x27E8;<span
+class="cmti-10">href </span>&#x27E9; target, which will take you to the nearest target before the indexing
+took place.
+</p><!--l. 9061--><p class="indent" > With <a
+ id="dx1-41011"></a><span
+class="cmtt-10">bib2gls </span>v1.8+, normal locations are displayed using:
+</p><!--l. 9063--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\glsnoidxdisplayloc{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9064--><p class="noindent" >
+This is provided by the base <span
+class="cmss-10">glossaries</span><a
+ id="dx1-41012"></a> package and is simply defined to do:
+</p><!--l. 9068--><p class="indent" > <hr><div title="Definition"><span
+class="cmtt-10">\setentrycounter[</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}\csuse{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 9069--><p class="noindent" >
+Earlier versions of <a
+ id="dx1-41013"></a><span
+class="cmtt-10">bib2gls </span>only used this in the <span
+class="cmss-10">loclist</span><a
+ id="dx1-41014"></a> field and explicitly used
+<span
+class="cmtt-10">\setentrycounter </span>in the <span
+class="cmss-10">location</span><a
+ id="dx1-41015"></a> field followed by <span
+class="cmtt-10">\</span>&#x27E8;<span
+class="cmti-10">format</span>&#x27E9;<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">location</span>&#x27E9;<span
+class="cmtt-10">}</span>, which follows
+the code that&#8217;s created with the default <a
+href="#styopt.makeindex"><span
+class="cmss-10">makeindex</span></a><a
+ id="dx1-41016"></a> setting. The <span
+class="cmtt-10">\setentrycounter</span>
+command sets up the prefix needed for <span
+class="cmtt-10">\glshypernumber </span>to reform the target name
+from the given location.
+</p><!--l. 9079--><p class="indent" > The locations identified by <span
+class="cmtt-10">\glsxtr@record@nameref </span>are written by <a
+ id="dx1-41017"></a><span
+class="cmtt-10">bib2gls </span>to
+the location list using:
+</p><!--l. 9081--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdisplaylocnameref</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-41018"></a> <span
+class="cmtt-10">\glsxtrdisplaylocnameref{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">href</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">hcounter</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9083--><p class="noindent" >
+With normal internal locations, &#x27E8;<span
+class="cmti-10">file</span>&#x27E9; will always be empty. With supplemental
+locations, &#x27E8;<span
+class="cmti-10">file</span>&#x27E9; will be the external file reference.
+</p><!--l. 9088--><p class="indent" > The default definition is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-218">
+\newcommand*{\glsxtrdisplaylocnameref}[8]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifstrequal{#2}{equation}%
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifstrempty{#5}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\ifstrequal{#2}{page}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+</div>
+<!--l. 9105--><p class="nopar" > which uses:
+</p><!--l. 9107--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnamereflink</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-41019"></a> <span
+class="cmtt-10">\glsxtrnamereflink{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">target</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 9109--><p class="noindent" >
+This ignores the &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; and <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span>arguments and instead creates a
+hyperlink with the target name obtained from &#x27E8;<span
+class="cmti-10">target</span>&#x27E9; (and &#x27E8;<span
+class="cmti-10">file</span>&#x27E9;, if not empty).
+</p><!--l. 9113--><p class="indent" > Since pages and equations typically don&#8217;t have titles, the default definition of
+<span
+class="cmtt-10">\glsxtrdisplaylocnameref </span>checks the counter was used as the location. If it&#8217;s <span
+class="cmss-10">page</span><a
+ id="dx1-41020"></a>
+or if &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; is empty, then just the location is used as the hyperlink text. If the counter
+<span
+class="cmss-10">equation</span><a
+ id="dx1-41021"></a>, then the text is the location in parentheses. Otherwise the text is obtained
+from &#x27E8;<span
+class="cmti-10">title</span>&#x27E9;.
+</p><!--l. 9120--><p class="indent" > If &#x27E8;<span
+class="cmti-10">file</span>&#x27E9; is empty an internal link is created with:
+</p><!--l. 9121--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfmtinternalnameref</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-41022"></a> <span
+class="cmtt-10">\glsxtrfmtinternalnameref{</span>&#x27E8;<span
+class="cmitt-10">target</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9123--><p class="noindent" >
+otherwise an external link is created with:
+</p><!--l. 9125--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfmtexternalnameref</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-41023"></a> <span
+class="cmtt-10">\glsxtrfmtexternalnameref{</span>&#x27E8;<span
+class="cmitt-10">target</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9127--><p class="noindent" >
+The &#x27E8;<span
+class="cmti-10">file</span>&#x27E9; argument is set by <a
+ id="dx1-41024"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> for supplemental locations.
+</p><!--l. 9131--><p class="indent" > Here&#8217;s alternative definition that uses the &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; to reform the
+target name (as <span
+class="cmtt-10">\glsnoidxdisplayloc</span>) but uses the &#x27E8;<span
+class="cmti-10">title</span>&#x27E9; as the hyperlink
+text:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-219">
+\renewcommand*{\glsxtrdisplaylocnameref}[7]{%
+&#x00A0;<br />&#x00A0;\glsxtrnamereflink{#3}{#5}{#6}{#7}%
+&#x00A0;<br />}
+</div>
+<!--l. 9138--><p class="nopar" > which uses:
+</p><!--l. 9140--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnameloclink</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-41025"></a> <span
+class="cmtt-10">\glsxtrnameloclink{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">format</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">title</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9142--><p class="noindent" >
+This uses the same commands as <span
+class="cmtt-10">\glsxtrnamereflink </span>to produce the hyperlinks.
+</p><!--l. 9146--><p class="indent" > In both cases, the link is encapsulated with the text-block command whose
+name is given by &#x27E8;<span
+class="cmti-10">format</span>&#x27E9;, but <span
+class="cmtt-10">\glshypernumber </span>is first locally redefined to
+<span
+class="cmtt-10">\@firstofone </span>to prevent a conflict with the usual location hyperlink formation.
+This means that if the &#x27E8;<span
+class="cmti-10">format</span>&#x27E9; is <span
+class="cmtt-10">hyperbf </span>then it will simply behave like
+<span
+class="cmtt-10">textbf</span>.
+</p><!--l. 9153--><p class="indent" > For compactness, <a
+ id="dx1-41026"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> merges normal records if the &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;, &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; and
+&#x27E8;<span
+class="cmti-10">location</span>&#x27E9; all match. (An order of precedence can be provided for format conflicts.)
+With nameref records, you can use the <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">--merge-nameref-on</span></span></span> switch provided by
+<a
+ id="dx1-41027"></a><span
+class="cmtt-10">bib2gls </span>v1.8+ to determine how to merge nameref records. This switch
+must be followed by one of the following keywords: <span
+class="cmtt-10">hcounter </span>(merge on
+&#x27E8;<span
+class="cmti-10">hcounter</span>&#x27E9;, default) <span
+class="cmtt-10">href </span>(merge on &#x27E8;<span
+class="cmti-10">href </span>&#x27E9;), <span
+class="cmtt-10">title </span>(merge on &#x27E8;<span
+class="cmti-10">title</span>&#x27E9;) and <span
+class="cmtt-10">location</span>
+(merge on &#x27E8;<span
+class="cmti-10">location</span>&#x27E9;, as regular records). In all cases, the &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; must also
+match.
+</p><!--l. 9164--><p class="noindent" >
+</p>
+<!--l. 9164--><p class="noindent" ><a
+href="#top">Top</a><h4 class="subsectionHead"></p><h4 class="subsectionHead"><span class="titlemark">9.3.3 </span> <a
+ id="sec:resourcecommands"></a>Helper Commands for Resource Options</h4>
+<!--l. 9167--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glshex</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42001"></a> <span
+class="cmtt-10">\glshex </span></div><hr>
+</p><!--l. 9169--><p class="noindent" >
+This is just defined as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\string\u</span></span></span>, which is required when you need to indicate a
+Unicode character in the form <span
+class="cmtt-10">\u</span>&#x27E8;<span
+class="cmti-10">hex</span>&#x27E9; in some of the resource options (as illustrated
+above).
+</p><!--l. 9175--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glscapturedgroup</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42002"></a> <span
+class="cmtt-10">\glscapturedgroup </span></div><hr>
+</p><!--l. 9177--><p class="noindent" >
+This is just defined as <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\string\$</span></span></span> and is used for the captured group reference in a
+replacement part of a regular expression substitution (requires at least <a
+ id="dx1-42003"></a><span
+class="cmtt-10">bib2gls</span>
+version 1.5). For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-220">
+sort-replace={{([a-zA-Z])\string\.}{\glscapturedgroup1}}
+</div>
+<!--l. 9183--><p class="nopar" > This only removes a full stop that follows any of the characters a,&#x2026;,z or
+A,&#x2026;,Z.
+</p><!--l. 9187--><p class="indent" > If you use the <span
+class="cmtt-10">save-child-count </span>resource option, you can test if the <span
+class="cmtt-10">childcount</span>
+field is non-zero using:
+</p><!--l. 9189--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfHasNonZeroChildCount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42004"></a> <span
+class="cmtt-10">\GlsXtrIfHasNonZeroChildCount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9191--><p class="noindent" >
+This internally uses <span
+class="cmtt-10">\GlsXtrIfFieldNonZero </span>and will do &#x27E8;<span
+class="cmti-10">false</span>&#x27E9; if the field isn&#8217;t set.
+Within &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">false</span>&#x27E9; you can use <span
+class="cmtt-10">\glscurrentfieldvalue </span>to access the value. (It
+will be 0 in &#x27E8;<span
+class="cmti-10">false</span>&#x27E9; if the field isn&#8217;t set.)
+</p><!--l. 9198--><p class="indent" > A convenient shortcut for use in the <span
+class="cmtt-10">entry-type-aliases </span>setting:
+</p><!--l. 9200--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrBibTeXEntryAliases</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42005"></a> <span
+class="cmtt-10">\GlsXtrBibTeXEntryAliases </span></div><hr>
+</p><!--l. 9202--><p class="noindent" >
+This provides aliases for Bib<span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s standard entry types to <a
+ id="dx1-42006"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span>&#8217;s</a> <span
+class="cmtt-10">@bibtexentry</span>
+entry type (requires at least <a
+ id="dx1-42007"></a><span
+class="cmtt-10">bib2gls </span>version 1.4).
+</p><!--l. 9207--><p class="indent" > You may also want to provide storage keys for Bib<span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s standard fields rather
+than having to alias them all. This can be done with:
+</p><!--l. 9209--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrProvideBibTeXFields</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42008"></a> <span
+class="cmtt-10">\GlsXtrProvideBibTeXFields </span></div><hr>
+</p><!--l. 9211--><p class="noindent" >
+Note that Bib<span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s <span
+class="cmtt-10">type </span>field clashes with the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-42009"></a> package&#8217;s <span
+class="cmss-10">type</span><a
+ id="dx1-42010"></a> key, so
+this command provides the key <span
+class="cmtt-10">bibtextype </span>instead. You can alias it with
+<span
+class="cmtt-10">field-aliases=type=bibtextype </span>in the resource options. Each storage
+key is provided with a convenient command to access the value in the form
+<span
+class="cmtt-10">\glsxtrbib</span>&#x27E8;<span
+class="cmti-10">field</span>&#x27E9;. For example, <span
+class="cmtt-10">\glsxtrbibaddress</span>. The <span
+class="cmtt-10">bibtextype </span>field can be
+accessed with <span
+class="cmtt-10">\glsxtrbibtype</span>. Each of these commands takes the entry label as the
+sole argument.
+</p><!--l. 9222--><p class="indent" > The <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-42011"></a> package also provides definitions of the missing
+mathematical Greek commands: <span
+class="cmtt-10">\Alpha</span><a
+ id="dx1-42012"></a>, <span
+class="cmtt-10">\Beta</span><a
+ id="dx1-42013"></a>, <span
+class="cmtt-10">\Epsilon</span><a
+ id="dx1-42014"></a>, <span
+class="cmtt-10">\Zeta</span><a
+ id="dx1-42015"></a>, <span
+class="cmtt-10">\Eta</span><a
+ id="dx1-42016"></a>, <span
+class="cmtt-10">\Iota</span><a
+ id="dx1-42017"></a>,
+<span
+class="cmtt-10">\Kappa</span><a
+ id="dx1-42018"></a>, <span
+class="cmtt-10">\Mu</span><a
+ id="dx1-42019"></a>, <span
+class="cmtt-10">\Nu</span><a
+ id="dx1-42020"></a>, <span
+class="cmtt-10">\Omicron</span><a
+ id="dx1-42021"></a>, <span
+class="cmtt-10">\Rho</span><a
+ id="dx1-42022"></a>, <span
+class="cmtt-10">\Tau</span><a
+ id="dx1-42023"></a>, <span
+class="cmtt-10">\Chi</span><a
+ id="dx1-42024"></a>, <span
+class="cmtt-10">\Digamma</span><a
+ id="dx1-42025"></a>, <span
+class="cmtt-10">\omicron</span><a
+ id="dx1-42026"></a>. These are all
+defined with <span
+class="cmtt-10">\providecommand</span>, so they won&#8217;t override any definitions provided by
+any package loaded before <span
+class="cmss-10">glossaries-extra</span><a
+ id="dx1-42027"></a>. Since <a
+ id="dx1-42028"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s interpreter recognises
+these commands, using them instead of explicitly using the Latin characters with the
+same shape helps to keep the Greek symbols together when sorting. Similarly,
+if <span
+class="cmss-10">upgreek</span><a
+ id="dx1-42029"></a> has been loaded, the missing upright Greek commands are also
+provided.
+</p><!--l. 9236--><p class="indent" > The remaining commands provide common rule blocks for use in the
+<span
+class="cmtt-10">sort-rule </span>resource option. If you want a rule for a specific locale, you can
+provide similar commands in a file called <span
+class="cmtt-10">glossariesxtr-</span>&#x27E8;<span
+class="cmti-10">tag</span>&#x27E9;<span
+class="cmtt-10">.ldf</span>, where &#x27E8;<span
+class="cmti-10">tag</span>&#x27E9;
+identifies the dialect, locale, region or root language. See the description of
+<span
+class="cmtt-10">\IfTrackedLanguageFileExists </span>in the <span
+class="cmss-10">tracklang</span><a
+ id="dx1-42030"></a> documentation for further details.
+
+
+
+If this file is on <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s path and the <span
+class="cmss-10">tracklang</span><a
+ id="dx1-42031"></a> package (automatically loaded by
+<span
+class="cmss-10">glossaries</span>) detects that the document has requested that language or locale, then the
+file will automatically be loaded. For example, if you want to provide a rule
+block for Welsh, then create a file called <span
+class="cmtt-10">glossariesxtr-welsh.ldf </span>that
+contains:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-221">
+\ProvidesGlossariesExtraLang{welsh}[2018/02/23&#x00A0;v1.0]
+&#x00A0;<br />\@ifpackageloaded{glossaries-extra-bib2gls}
+&#x00A0;<br />{
+&#x00A0;<br />&#x00A0;&#x00A0;\newcommand{\glsxtrWelshRules}{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\glsxtrLatinA
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;b,B
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;c,C
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;ch,CH
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;d,D
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;dd,DD
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinE
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;f,F
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;ff,FF
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;g,G
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;ng,NG
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinH
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinI
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;j,J
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinL
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;ll,LL
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinM
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinN
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinO
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinP
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;ph,PH
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;r,R
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;rh,RH
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinS
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;\glsxtrLatinT
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;th,TH
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;u,U
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;w,W
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\string&#x003C;y,Y
+&#x00A0;<br />&#x00A0;&#x00A0;}
+&#x00A0;<br />}
+&#x00A0;<br />{}%&#x00A0;glossaries-extra-bib2gls.sty&#x00A0;not&#x00A0;loaded
+</div>
+<!--l. 9286--><p class="nopar" > (The use of <span
+class="cmtt-10">\string </span>is in case the <span
+class="cmtt-10">&#x003C; </span>character has been made active.) You can
+provide more than one rule-block per local, to allow for loanwords or foreign words.
+For example, you could provide <span
+class="cmtt-10">\glsxtrWelshIRules</span>, <span
+class="cmtt-10">\glsxtrWelshIIRules</span>
+etc.
+</p><!--l. 9293--><p class="indent" > If the rules are for a particular script (independent of language or region) then
+they can be provided in a file given by <span
+class="cmtt-10">glossariesxtr-</span>&#x27E8;<span
+class="cmti-10">script</span>&#x27E9;<span
+class="cmtt-10">.ldf </span>instead. For
+example, the file <span
+class="cmtt-10">glossariesxtr-Cyrl.ldf </span>could contain:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-222">
+\ProvidesGlossariesExtraLang{Cyrl}[2018/02/23&#x00A0;v1.0]
+&#x00A0;<br />\newcommand*{\glsxtrGeneralCyrillicIRules}{%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;Cyrillic&#x00A0;rules
+&#x00A0;<br />}
+&#x00A0;<br />\newcommand*{\glsxtrGeneralCyrillicIIRules}{%
+&#x00A0;<br />&#x00A0;&#x00A0;%&#x00A0;an&#x00A0;alternative&#x00A0;set&#x00A0;of&#x00A0;Cyrillic&#x00A0;rules
+&#x00A0;<br />}
+</div>
+<!--l. 9305--><p class="nopar" > (Remember that the required document language scripts need to be tracked through
+the <span
+class="cmss-10">tracklang</span><a
+ id="dx1-42032"></a> package, in order for these files to be automatically loaded. This
+essentially means ensuring you load the appropriate language package before
+<span
+class="cmss-10">tracklang</span><a
+ id="dx1-42033"></a> is loaded by the base <span
+class="cmss-10">glossaries</span><a
+ id="dx1-42034"></a> package or any other package that uses it.
+See the <span
+class="cmss-10">tracklang</span><a
+ id="dx1-42035"></a> documentation for further details.)
+</p><!--l. 9313--><p class="indent" > Alternatively, if the rules are specific to a subject rather than a region or
+language, then you can provide a supplementary package. For example, if you have a
+package called, say, <span
+class="cmss-10">mapsymbols </span>that provides map symbols, then the file
+<span
+class="cmtt-10">mapsymbols.sty </span>might contain:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-223">
+\NeedsTeXFormat{LaTeX2e}
+&#x00A0;<br />\ProvidesPackage{mapsymbols}
+&#x00A0;<br />&#x00A0;some&#x00A0;package&#x00A0;or&#x00A0;font&#x00A0;loading&#x00A0;stuff&#x00A0;here&#x00A0;to&#x00A0;provide
+&#x00A0;<br />&#x00A0;the&#x00A0;appropriate&#x00A0;symbols
+&#x00A0;<br />\newcommand{\Stadium}{...}
+&#x00A0;<br />\newcommand{\Battlefield}{...}
+&#x00A0;<br />\newcommand{\Harbour}{...}
+&#x00A0;<br />&#x00A0;etc
+&#x00A0;<br />&#x00A0;Provide&#x00A0;a&#x00A0;rule&#x00A0;block:
+&#x00A0;<br />\newcommand{\MapSymbolOrder}{%
+&#x00A0;<br />&#x00A0;\glshex&#x00A0;2694&#x00A0;%&#x00A0;crossed-swords&#x00A0;0x2694
+&#x00A0;<br />&#x00A0;\string&#x003C;&#x00A0;\glshex&#x00A0;2693&#x00A0;%&#x00A0;anchor&#x00A0;0x2693
+&#x00A0;<br />&#x00A0;\string&#x003C;&#x00A0;\glshex&#x00A0;26BD&#x00A0;%&#x00A0;football&#x00A0;0x26BD
+&#x00A0;<br />}
+</div>
+<!--l. 9334--><p class="nopar" > and the supplementary file <span
+class="cmtt-10">mapsymbols.bib </span>can provide the appropriate definitions
+for <a
+ id="dx1-42036"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-224">
+@preamble{"\glsxtrprovidecommand{\Harbour}{\char"2693}
+&#x00A0;<br />\glsxtrprovidecommand{\Battlefield}{\char"2694}
+&#x00A0;<br />\glsxtrprovidecommand{\Stadium}{\char"26BD}"}
+</div>
+<!--l. 9341--><p class="nopar" > Now both the preamble and rule block can be used in the resource set:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-225">
+\usepackage{mapsymbols}%&#x00A0;my&#x00A0;custom&#x00A0;package
+&#x00A0;<br />\usepackage[record]{glossaries-extra}
+&#x00A0;<br />\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;&#x00A0;src={mapsymbols,%&#x00A0;&#x003C;---&#x00A0;my&#x00A0;custom&#x00A0;mapsymbols.bib
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;entries%&#x00A0;data&#x00A0;in&#x00A0;entries.bib
+&#x00A0;<br />&#x00A0;&#x00A0;},
+&#x00A0;<br />&#x00A0;&#x00A0;sort={custom},
+&#x00A0;<br />&#x00A0;&#x00A0;sort-rule={\glsxtrcontrolrules&#x00A0;%&#x00A0;control&#x00A0;codes
+&#x00A0;<br />&#x00A0;;\glsxtrspacerules&#x00A0;%&#x00A0;space&#x00A0;characters
+&#x00A0;<br />&#x00A0;;\glsxtrnonprintablerules&#x00A0;%&#x00A0;non-printable&#x00A0;characters
+&#x00A0;<br />&#x00A0;;\glsxtrcombiningdiacriticrules&#x00A0;%&#x00A0;combining&#x00A0;diacritics
+&#x00A0;<br />&#x00A0;,\glsxtrhyphenrules&#x00A0;%&#x00A0;hyphens
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrgeneralpuncrules&#x00A0;%&#x00A0;general&#x00A0;punctuation
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrdigitrules&#x00A0;%&#x00A0;0,&#x00A0;...,&#x00A0;9
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrfractionrules&#x00A0;%&#x00A0;fraction&#x00A0;symbols
+&#x00A0;<br />&#x00A0;&#x003C;\MapSymbolOrder&#x00A0;%&#x00A0;&#x003C;---&#x00A0;custom&#x00A0;map&#x00A0;symbols
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrMathItalicGreekIrules&#x00A0;%&#x00A0;math-greek&#x00A0;symbols
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrGeneralLatinIrules&#x00A0;%&#x00A0;Latin&#x00A0;letters
+&#x00A0;<br />&#x00A0;}
+&#x00A0;<br />]
+</div>
+<!--l. 9366--><p class="nopar" >
+</p><!--l. 9368--><p class="indent" > The following commands are provided by <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-42037"></a>. They should be
+separated by the rule separator characters <span
+class="cmtt-10">;</span>&#x00A0;(semi-colon) or <span
+class="cmtt-10">,</span>&#x00A0;(comma) or
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">&amp;</span></span></span>&#x00A0;(ampersand) or <span
+class="cmtt-10">&#x003C;</span>&#x00A0;(less than). See Java&#8217;s <a
+href="http://docs.oracle.com/javase/8/docs/api/java/text/RuleBasedCollator.html" >RuleBasedCollator</a> documentation for
+details of the rule syntax.
+</p><!--l. 9375--><p class="indent" > For example, the following will place the mathematical Greek symbols (<span
+class="cmtt-10">\alpha</span><a
+ id="dx1-42038"></a>,
+<span
+class="cmtt-10">\Alpha</span><a
+ id="dx1-42039"></a>, <span
+class="cmtt-10">\beta</span><a
+ id="dx1-42040"></a>, <span
+class="cmtt-10">\Beta</span><a
+ id="dx1-42041"></a> etc) in a block before Latin characters:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-226">
+sort-rule={\glsxtrcontrolrules
+&#x00A0;<br />&#x00A0;;\glsxtrspacerules
+&#x00A0;<br />&#x00A0;;\glsxtrnonprintablerules
+&#x00A0;<br />&#x00A0;;\glsxtrcombiningdiacriticrules
+&#x00A0;<br />&#x00A0;,\glsxtrhyphenrules
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrgeneralpuncrules
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrdigitrules
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrfractionrules
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrMathItalicGreekIrules
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrGeneralLatinIVrules
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrLatinAA
+&#x00A0;<br />&#x00A0;&#x003C;\glsxtrLatinOslash
+&#x00A0;<br />}
+</div>
+<!--l. 9392--><p class="nopar" >
+</p><!--l. 9394--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrcontrolrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42042"></a> <span
+class="cmtt-10">\glsxtrcontrolrules </span></div><hr>
+</p><!--l. 9396--><p class="noindent" >
+These are control characters that are usually placed at the start of a rule in the
+ignored section. They typically won&#8217;t occur in any sort values, but if they do they
+should normally be ignored.
+</p><!--l. 9401--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrspacerules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42043"></a> <span
+class="cmtt-10">\glsxtrspacerules </span></div><hr>
+</p><!--l. 9403--><p class="noindent" >
+These are space characters. They typically come after the control characters with the
+two blocks separated by a <span
+class="cmtt-10">;</span>&#x00A0;(semi-colon).
+</p><!--l. 9407--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnonprintablerules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42044"></a> <span
+class="cmtt-10">\glsxtrnonprintablerules </span></div><hr>
+</p><!--l. 9409--><p class="noindent" >
+These are non-printable characters (BOM, tabs, line feed and carriage return). They
+typically come after the spaces separated by a <span
+class="cmtt-10">;</span>&#x00A0;(semi-colon). These characters
+aren&#8217;t checked for by <a
+ id="dx1-42045"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> when it determines whether or not to use the
+interpreter, so a&#x00A0;TAB or newline character may end up in the sort value if it wasn&#8217;t
+interpreted.
+</p><!--l. 9417--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrcombiningdiacriticrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42046"></a> <span
+class="cmtt-10">\glsxtrcombiningdiacriticrules</span>
+</div><hr>
+</p><!--l. 9419--><p class="noindent" >
+These are combining diacritic marks which typically follow the space and
+non-printable blocks (separated by a semi-colon). This command is defined in terms
+of sub-block commands:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-227">
+\newcommand*{\glsxtrcombiningdiacriticrules}{%
+&#x00A0;<br />&#x00A0;\glsxtrcombiningdiacriticIrules\string;
+&#x00A0;<br />&#x00A0;\glsxtrcombiningdiacriticIIrules\string;
+&#x00A0;<br />&#x00A0;\glsxtrcombiningdiacriticIIIrules\string;
+&#x00A0;<br />&#x00A0;\glsxtrcombiningdiacriticIVrules
+&#x00A0;<br />}
+</div>
+<!--l. 9430--><p class="nopar" > If you prefer, you can use the sub-blocks directly in your required ordered.
+</p><!--l. 9434--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrcombiningdiacriticIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42047"></a> <span
+class="cmtt-10">\glsxtrcombiningdiacriticIrules</span>
+</div><hr>
+</p><!--l. 9436--><p class="noindent" >
+This contains the combining diacritics: acute, grave, breve, circumflex, caron, ring,
+vertical line above, diaeresis (umlaut), double acute, tilde, dot above, combining
+macron.
+</p><!--l. 9441--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrcombiningdiacriticIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42048"></a> <span
+class="cmtt-10">\glsxtrcombiningdiacriticIIrules</span>
+</div><hr>
+</p><!--l. 9443--><p class="noindent" >
+This contains the combining diacritics: short solidus overlay, cedilla, ogonek, dot
+below, low line, overline, hook above, double vertical line above, double grave
+accent, candrabindu, inverted breve, turned comma above, comma above,
+reversed comma above, comma above right, grave accent below, acute accent
+below.
+</p><!--l. 9450--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrcombiningdiacriticIIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42049"></a> <span
+class="cmtt-10">\glsxtrcombiningdiacriticIIIrules</span>
+</div><hr>
+</p><!--l. 9452--><p class="noindent" >
+This contains the combining diacritics: left tack below, right tack below, left angle
+above, horn, left half ring below, up tack below, down tack below, plus sign below,
+minus sign below, palatalized hook below, retroflex hook below, diaresis below, ring
+below, comma below, vertical line below, bridge below, inverted double arch below,
+caron below, circumflex accent below, breve below, inverted breve below, tilde below,
+macron below, double low line, tilde overlay, short stroke overlay, long stroke overlay,
+long solidus overlay, right half ring below, inverted bridge below, square below,
+seagull below, x above, vertical tilde, double overline, Greek perispomeni, Greek
+dialytika tonos, Greek ypogegrammeni, double tilde, double inverted breve,
+Cyrillic titlo, Cyrillic palatalization, Cyrillic dasia pneumata, Cyrillic psili
+pneumata.
+</p><!--l. 9467--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrcombiningdiacriticIVrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42050"></a> <span
+class="cmtt-10">\glsxtrcombiningdiacriticIVrules</span>
+</div><hr>
+</p><!--l. 9469--><p class="noindent" >
+This contains the combining diacritics: left harpoon above, right harpoon above, long
+vertical line overlay, short vertical line overlay, anticlockwise arrow above, clockwise
+arrow above, left arrow above, right arrow above, ring overlay, clockwise ring overlay,
+
+
+
+anticlockwise ring overlay, three dots above, four dots above, enclosing circle,
+enclosing square, enclosing diamond, enclosing circle backslash, left right arrow
+above.
+</p><!--l. 9479--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrhyphenrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42051"></a> <span
+class="cmtt-10">\glsxtrhyphenrules </span></div><hr>
+</p><!--l. 9481--><p class="noindent" >
+This contains hyphens (including the minus sign 0x2212). This rule block typically
+comes after the diacritic rules separated by a comma.
+</p><!--l. 9486--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrgeneralpuncrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42052"></a> <span
+class="cmtt-10">\glsxtrgeneralpuncrules </span></div><hr>
+</p><!--l. 9488--><p class="noindent" >
+This contains punctuation characters. This rule block typically comes after the
+hyphen rules separated by a less than (<span
+class="cmtt-10">&#x003C;</span>). As with the combining diacritics, this
+command is defined in terms of sub-blocks which may be used directly instead if a
+different order is required:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-228">
+\newcommand*{\glsxtrgeneralpuncrules}{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrgeneralpuncIrules
+&#x00A0;<br />&#x00A0;&#x00A0;\string&#x003C;\glsxtrcurrencyrules
+&#x00A0;<br />&#x00A0;&#x00A0;\string&#x003C;\glsxtrgeneralpuncIIrules
+&#x00A0;<br />}
+</div>
+<!--l. 9500--><p class="nopar" >
+</p><!--l. 9502--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrgeneralpuncIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42053"></a> <span
+class="cmtt-10">\glsxtrgeneralpuncIrules </span></div><hr>
+</p><!--l. 9504--><p class="noindent" >
+This is the first punctuation sub-block containing: underscore, macron, comma,
+semi-colon, colon, exclamation mark, inverted exclamation mark, question
+mark, inverted question mark, solidus, full stop, acute accent, grave accent,
+circumflex accent, diaersis, tilde, middle dot, cedilla, straight apostrophe,
+straight double quote, left guillemet, right guillemet, left parenthesis, right
+parenthesis, left square bracket, right square bracket, left curly bracket, right
+curly bracket, section sign, pilcrow sign, copyright sign, registered sign, at
+sign.
+</p><!--l. 9515--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrcurrencyrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42054"></a> <span
+class="cmtt-10">\glsxtrcurrencyrules </span></div><hr>
+</p><!--l. 9517--><p class="noindent" >
+This sub-block contains some currency symbols: currency sign, Thai currency symbol
+baht, cent sign, colon sign, cruzeiro sign, dollar sign, dong sign, euro sign, French
+franc sign, lira sign, mill sign, naira sign, peseta sign, pound sign, rupee sign, new
+sheqel sign, won sign, yen sign.
+</p><!--l. 9524--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrgeneralpuncIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42055"></a> <span
+class="cmtt-10">\glsxtrgeneralpuncIIrules </span></div><hr>
+</p><!--l. 9526--><p class="noindent" >
+This sub-block contains some other punctuation symbols: asterisk, backslash,
+ampersand, hash sign, percent sign, plus sign, plus-minus sign, division sign,
+multiplication sign, less-than sign, equals sign, greater-than sign, not sign, vertical
+bar (pipe), broken bar, degree sign, micron sign.
+</p><!--l. 9533--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdigitrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42056"></a> <span
+class="cmtt-10">\glsxtrdigitrules </span></div><hr>
+</p><!--l. 9535--><p class="noindent" >
+This rule block contains the Basic Latin digits (0, &#x2026;, 9) and the subscript and
+superscript digits (<sub class="textsubscript"><span
+class="cmr-9">0</span></sub> <sup class="textsuperscript"><span
+class="cmr-9">0</span></sup> etc) made equivalent to the corresponding Basic Latin digit.
+The digit block typically comes after the punctuation rules separated by a less than
+(<span
+class="cmtt-10">&#x003C;</span>).
+</p><!--l. 9543--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrBasicDigitrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42057"></a> <span
+class="cmtt-10">\glsxtrBasicDigitrules </span></div><hr>
+</p><!--l. 9545--><p class="noindent" >
+This rule block contains just the Basic Latin digits (0, &#x2026;, 9).
+</p><!--l. 9548--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrSubScriptDigitrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42058"></a> <span
+class="cmtt-10">\glsxtrSubScriptDigitrules </span></div><hr>
+</p><!--l. 9550--><p class="noindent" >
+This rule block contains just the subscript digits (<sub class="textsubscript"><span
+class="cmr-9">0</span></sub> &#x2026;&#x00A0;<sub class="textsubscript"><span
+class="cmr-9">9</span></sub>).
+</p><!--l. 9554--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrSuperScriptDigitrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42059"></a> <span
+class="cmtt-10">\glsxtrSuperScriptDigitrules </span></div><hr>
+
+
+
+</p><!--l. 9556--><p class="noindent" >
+This rule block contains just the superscript digits (<sup class="textsuperscript"><span
+class="cmr-9">0</span></sup> &#x2026;&#x00A0;<sup class="textsuperscript"><span
+class="cmr-9">9</span></sup>).
+</p><!--l. 9560--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfractionrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42060"></a> <span
+class="cmtt-10">\glsxtrfractionrules </span></div><hr>
+</p><!--l. 9562--><p class="noindent" >
+This rule block contains vulgar fraction characters. The digit block typically comes
+after the digit rules separated by a less than (<span
+class="cmtt-10">&#x003C;</span>).
+</p><!--l. 9567--><p class="indent" > There are a number of Latin rule blocks. Some of these included extended
+characters or ligatures (such as &szlig;&#x00A0;or &#339;) but they don&#8217;t include accented
+characters. If you require a Latin rule block that includes accented characters,
+digraphs, trigraphs or other extended characters, then it&#8217;s best to provide similar
+commands in a <span
+class="cmtt-10">glossariesxtr-</span>&#x27E8;<span
+class="cmti-10">tag</span>&#x27E9;<span
+class="cmtt-10">.ldf </span>file for the particular language or
+region.
+</p><!--l. 9575--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrGeneralLatinIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42061"></a> <span
+class="cmtt-10">\glsxtrGeneralLatinIrules </span></div><hr>
+</p><!--l. 9577--><p class="noindent" >
+This is just the basic (non-extended) Latin alphabet with the superscript and
+subscript Latin letters (<sup class="textsuperscript"><span
+class="cmr-9">a</span></sup> <sub class="textsubscript"><span
+class="cmr-9">a</span></sub> etc) treated as the equivalent basic Latin letter. (If you
+don&#8217;t want the subscripts and superscripts included you can redefine <span
+class="cmtt-10">\glsxtrLatinA</span>
+etc to omit them.)
+</p><!--l. 9584--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrGeneralLatinIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42062"></a> <span
+class="cmtt-10">\glsxtrGeneralLatinIIrules </span></div><hr>
+</p><!--l. 9586--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between &#8216;D&#8217; and &#8216;E&#8217;
+and eszett (&szlig;) treated as &#8216;ss&#8217;.
+</p><!--l. 9590--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrGeneralLatinIIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42063"></a> <span
+class="cmtt-10">\glsxtrGeneralLatinIIIrules </span></div><hr>
+</p><!--l. 9592--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between &#8216;D&#8217; and &#8216;E&#8217;
+and eszett (&szlig;) treated as &#8216;sz&#8217;.
+</p><!--l. 9596--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrGeneralLatinIVrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42064"></a> <span
+class="cmtt-10">\glsxtrGeneralLatinIVrules </span></div><hr>
+</p><!--l. 9598--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between &#8216;D&#8217; and &#8216;E&#8217;,
+ae-ligature (&aelig;) is treated as &#8216;ae&#8217;, oe-ligature (&#339;) is treated as &#8216;oe&#8217;, eszett (&szlig;) treated
+as &#8216;ss&#8217; and thorn (þ) is treated as &#8216;th&#8217;.
+</p><!--l. 9604--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrGeneralLatinVrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42065"></a> <span
+class="cmtt-10">\glsxtrGeneralLatinVrules </span></div><hr>
+</p><!--l. 9606--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between &#8216;D&#8217; and &#8216;E&#8217;,
+eszett (&szlig;) treated as &#8216;ss&#8217; and thorn (þ) treated as &#8216;th&#8217;.
+</p><!--l. 9611--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrGeneralLatinVIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42066"></a> <span
+class="cmtt-10">\glsxtrGeneralLatinVIrules </span></div><hr>
+</p><!--l. 9613--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes eth (Ð) between &#8216;D&#8217; and &#8216;E&#8217;,
+eszett (&szlig;) treated as &#8216;sz&#8217; and thorn (þ) treated as &#8216;th&#8217;.
+</p><!--l. 9618--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrGeneralLatinVIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42067"></a> <span
+class="cmtt-10">\glsxtrGeneralLatinVIIrules </span></div><hr>
+</p><!--l. 9620--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtrGeneralLatinIrules </span>but it includes ae-ligature (&aelig;) between &#8216;A&#8217;
+and &#8216;B&#8217;, eth (Ð) between &#8216;D&#8217; and &#8216;E&#8217;, insular G (&#xA77D;) instead of &#8216;G&#8217;, oe-ligature between
+&#8216;O&#8217; and &#8216;P&#8217;, long&#x00A0;s (&#x017F;) equivalent to &#8216;s&#8217;, thorn (þ) between &#8216;T&#8217; and &#8216;U&#8217; and wynn (&#x01F7;)
+instead of W.
+</p><!--l. 9627--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrGeneralLatinVIIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42068"></a> <span
+class="cmtt-10">\glsxtrGeneralLatinVIIIrules </span></div><hr>
+
+
+
+</p><!--l. 9629--><p class="noindent" >
+This is like <span
+class="cmtt-10">\glsxtrGeneralLatinIrules </span>but ae-ligature (&aelig;) is treated as &#8216;ae&#8217;,
+oe-ligature (&#339;) is treated as &#8216;oe&#8217;, eszett (&szlig;) treated as &#8216;ss&#8217;, thorn (þ) is treated as &#8216;th&#8217;,
+Ø&#x00A0;is treated as &#8216;O&#8217; and &#8216;&#321;&#8217; is treated as &#8216;L&#8217;.
+</p><!--l. 9635--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinA</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42069"></a> <span
+class="cmtt-10">\glsxtrLatinA </span></div><hr>
+</p><!--l. 9637--><p class="noindent" >
+A mini-rule that just covers &#8216;A&#8217; but includes the sub- and superscript A.
+</p><!--l. 9641--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinE</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42070"></a> <span
+class="cmtt-10">\glsxtrLatinE </span></div><hr>
+</p><!--l. 9643--><p class="noindent" >
+A mini-rule that just covers &#8216;E&#8217; but includes the subscript E.
+</p><!--l. 9647--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinH</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42071"></a> <span
+class="cmtt-10">\glsxtrLatinH </span></div><hr>
+</p><!--l. 9649--><p class="noindent" >
+A mini-rule that just covers &#8216;H&#8217; but includes the subscript H.
+</p><!--l. 9653--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinK</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42072"></a> <span
+class="cmtt-10">\glsxtrLatinK </span></div><hr>
+</p><!--l. 9655--><p class="noindent" >
+A mini-rule that just covers &#8216;K&#8217; but includes the subscript K.
+</p><!--l. 9659--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinI</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42073"></a> <span
+class="cmtt-10">\glsxtrLatinI </span></div><hr>
+</p><!--l. 9661--><p class="noindent" >
+A mini-rule that just covers &#8216;I&#8217; but includes the superscript I.
+</p><!--l. 9665--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinL</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42074"></a> <span
+class="cmtt-10">\glsxtrLatinL </span></div><hr>
+</p><!--l. 9667--><p class="noindent" >
+A mini-rule that just covers &#8216;L&#8217; but includes the subscript L.
+</p><!--l. 9671--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinM</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42075"></a> <span
+class="cmtt-10">\glsxtrLatinM </span></div><hr>
+</p><!--l. 9673--><p class="noindent" >
+A mini-rule that just covers &#8216;M&#8217; but includes the subscript M.
+</p><!--l. 9677--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinN</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42076"></a> <span
+class="cmtt-10">\glsxtrLatinN </span></div><hr>
+</p><!--l. 9679--><p class="noindent" >
+A mini-rule that just covers &#8216;N&#8217; but includes the sub- and superscript N.
+</p><!--l. 9683--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinO</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42077"></a> <span
+class="cmtt-10">\glsxtrLatinO </span></div><hr>
+</p><!--l. 9685--><p class="noindent" >
+A mini-rule that just covers &#8216;O&#8217; but includes the sub- and superscript O.
+</p><!--l. 9689--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinP</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42078"></a> <span
+class="cmtt-10">\glsxtrLatinP </span></div><hr>
+</p><!--l. 9691--><p class="noindent" >
+A mini-rule that just covers &#8216;P&#8217; but includes the subscript P.
+</p><!--l. 9695--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinS</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42079"></a> <span
+class="cmtt-10">\glsxtrLatinS </span></div><hr>
+</p><!--l. 9697--><p class="noindent" >
+A mini-rule that just covers &#8216;S&#8217; but includes the subscript S.
+</p><!--l. 9701--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinT</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42080"></a> <span
+class="cmtt-10">\glsxtrLatinT </span></div><hr>
+</p><!--l. 9703--><p class="noindent" >
+A mini-rule that just covers &#8216;T&#8217; but includes the subscript T.
+</p><!--l. 9707--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinX</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42081"></a> <span
+class="cmtt-10">\glsxtrLatinX </span></div><hr>
+</p><!--l. 9709--><p class="noindent" >
+A mini-rule that just covers &#8216;X&#8217; but includes the subscript X.
+</p><!--l. 9713--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinEszettSs</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42082"></a> <span
+class="cmtt-10">\glsxtrLatinEszettSs </span></div><hr>
+</p><!--l. 9715--><p class="noindent" >
+A mini-rule that just covers eszett (&szlig;) and makes long&#x00A0;s (&#x017F;) followed by short &#8216;s&#8217;
+
+
+
+equivalent to &#8216;&szlig;&#8217;. (This is used in the above blocks that treat &#8216;&szlig;&#8217; as &#8216;ss&#8217;.)
+</p><!--l. 9720--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinEszettSz</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42083"></a> <span
+class="cmtt-10">\glsxtrLatinEszettSz </span></div><hr>
+</p><!--l. 9722--><p class="noindent" >
+A mini-rule that just covers eszett (&szlig;) and makes long&#x00A0;s (&#x017F;) followed by &#8216;z&#8217; equivalent
+to &#8216;&szlig;&#8217;. (This is used in the above blocks that treat &#8216;&szlig;&#8217; as &#8216;sz&#8217;.)
+</p><!--l. 9727--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinEth</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42084"></a> <span
+class="cmtt-10">\glsxtrLatinEth </span></div><hr>
+</p><!--l. 9729--><p class="noindent" >
+A mini-rule for eth (Ð) so you don&#8217;t need to remember the Unicode values.
+</p><!--l. 9733--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinThorn</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42085"></a> <span
+class="cmtt-10">\glsxtrLatinThorn </span></div><hr>
+</p><!--l. 9735--><p class="noindent" >
+A mini-rule for thorn (þ) so you don&#8217;t need to remember the Unicode values.
+</p><!--l. 9739--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinAELigature</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42086"></a> <span
+class="cmtt-10">\glsxtrLatinAELigature </span></div><hr>
+</p><!--l. 9741--><p class="noindent" >
+A mini-rule for ae-ligature (&aelig;) so you don&#8217;t need to remember the Unicode
+values.
+</p><!--l. 9745--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinOELigature</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42087"></a> <span
+class="cmtt-10">\glsxtrLatinOELigature </span></div><hr>
+</p><!--l. 9747--><p class="noindent" >
+A mini-rule for oe-ligature (&#339;) so you don&#8217;t need to remember the Unicode
+values.
+</p><!--l. 9751--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinOslash</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42088"></a> <span
+class="cmtt-10">\glsxtrLatinOslash </span></div><hr>
+</p><!--l. 9753--><p class="noindent" >
+A mini-rule for &#8216;Ø&#8217; so you don&#8217;t need to remember the Unicode values.
+</p><!--l. 9757--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinLslash</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42089"></a> <span
+class="cmtt-10">\glsxtrLatinLslash </span></div><hr>
+</p><!--l. 9759--><p class="noindent" >
+A mini-rule for &#8216;&#321;&#8217; so you don&#8217;t need to remember the Unicode values.
+</p><!--l. 9763--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinWynn</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42090"></a> <span
+class="cmtt-10">\glsxtrLatinWynn </span></div><hr>
+</p><!--l. 9765--><p class="noindent" >
+A mini-rule for wynn (&#x01F7;) so you don&#8217;t need to remember the Unicode values.
+</p><!--l. 9769--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinInsularG</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42091"></a> <span
+class="cmtt-10">\glsxtrLatinInsularG </span></div><hr>
+</p><!--l. 9771--><p class="noindent" >
+A mini-rule for insular G (&#xA77D;) so you don&#8217;t need to remember the Unicode
+values.
+</p><!--l. 9775--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinSchwa</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42092"></a> <span
+class="cmtt-10">\glsxtrLatinSchwa </span></div><hr>
+</p><!--l. 9777--><p class="noindent" >
+A mini-rule that just covers schwa (&#x018F;) but includes the subscript schwa. (Not used in
+any of the provided Latin rule blocks described above.)
+</p><!--l. 9782--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrLatinAA</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42093"></a> <span
+class="cmtt-10">\glsxtrLatinAA </span></div><hr>
+</p><!--l. 9784--><p class="noindent" >
+A mini-rule for &#8216;Å&#8217; so you don&#8217;t need to remember the Unicode values. (Not used in
+any of the provided Latin rule blocks described above.)
+</p><!--l. 9789--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathGreekIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42094"></a> <span
+class="cmtt-10">\glsxtrMathGreekIrules </span></div><hr>
+</p><!--l. 9791--><p class="noindent" >
+A rule block for mathematical Greek (<span
+class="cmtt-10">\alpha</span><a
+ id="dx1-42095"></a>, <span
+class="cmtt-10">\beta</span><a
+ id="dx1-42096"></a> etc) and upright Greek
+(<span
+class="cmtt-10">\upalpha</span><a
+ id="dx1-42097"></a>, etc, from the <span
+class="cmss-10">upgreek</span><a
+ id="dx1-42098"></a> package) characters that includes digamma
+(<span
+class="cmtt-10">\digamma</span><a
+ id="dx1-42099"></a> and <span
+class="cmtt-10">\Digamma</span><a
+ id="dx1-42100"></a>) between epsilon and zeta. The upright and italic versions
+are gathered together into the same letter group.
+
+
+
+</p><!--l. 9798--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathGreekIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42101"></a> <span
+class="cmtt-10">\glsxtrMathGreekIIrules </span></div><hr>
+</p><!--l. 9800--><p class="noindent" >
+As <span
+class="cmtt-10">\glsxtrMathGreekIrules </span>but doesn&#8217;t include digamma.
+</p><!--l. 9803--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathUpGreekIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42102"></a> <span
+class="cmtt-10">\glsxtrMathUpGreekIrules </span></div><hr>
+</p><!--l. 9805--><p class="noindent" >
+A rule block for upright Greek (<span
+class="cmtt-10">\upalpha</span><a
+ id="dx1-42103"></a>, etc, from the <span
+class="cmss-10">upgreek</span><a
+ id="dx1-42104"></a> package)
+characters that includes digamma (<span
+class="cmtt-10">\digamma</span><a
+ id="dx1-42105"></a> and <span
+class="cmtt-10">\Digamma</span><a
+ id="dx1-42106"></a>) between epsilon and
+zeta.
+</p><!--l. 9811--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathUpGreekIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42107"></a> <span
+class="cmtt-10">\glsxtrMathUpGreekIIrules </span></div><hr>
+</p><!--l. 9813--><p class="noindent" >
+A rule block for upright Greek (<span
+class="cmtt-10">\upalpha</span><a
+ id="dx1-42108"></a>, etc, from the <span
+class="cmss-10">upgreek</span><a
+ id="dx1-42109"></a> package) that
+doesn&#8217;t include digamma.
+</p><!--l. 9817--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathItalicGreekIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42110"></a> <span
+class="cmtt-10">\glsxtrMathItalicGreekIrules </span></div><hr>
+</p><!--l. 9819--><p class="noindent" >
+A rule block for mathematical Greek (<span
+class="cmtt-10">\alpha</span><a
+ id="dx1-42111"></a>, <span
+class="cmtt-10">\Alpha</span><a
+ id="dx1-42112"></a>, etc) characters that includes
+digamma (<span
+class="cmtt-10">\diagamma</span><a
+ id="dx1-42113"></a> and <span
+class="cmtt-10">\Digamma</span><a
+ id="dx1-42114"></a>) between epsilon and zeta. Note that even
+though the upper case <span
+class="cmtt-10">\Delta </span>etc are actually rendered upright by <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>,
+<a
+ id="dx1-42115"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span>&#8217;s</a> interpreter treats them as italic to help keep them close to the lower case
+versions.
+</p><!--l. 9827--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathItalicGreekIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42116"></a> <span
+class="cmtt-10">\glsxtrMathItalicGreekIIrules </span></div><hr>
+</p><!--l. 9829--><p class="noindent" >
+A rule block for mathematical Greek (<span
+class="cmtt-10">\alpha</span><a
+ id="dx1-42117"></a>, <span
+class="cmtt-10">\Alpha</span><a
+ id="dx1-42118"></a>, etc) characters that doesn&#8217;t
+include digamma.
+</p><!--l. 9833--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathItalicUpperGreekIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42119"></a> <span
+class="cmtt-10">\glsxtrMathItalicUpperGreekIrules</span>
+</div><hr>
+</p><!--l. 9835--><p class="noindent" >
+A rule block for upper case mathematical Greek (<span
+class="cmtt-10">\Alpha</span><a
+ id="dx1-42120"></a>, <span
+class="cmtt-10">\Beta</span><a
+ id="dx1-42121"></a>, etc) characters that
+includes digamma (<span
+class="cmtt-10">\Digamma</span><a
+ id="dx1-42122"></a>) between epsilon and zeta.
+</p><!--l. 9840--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathItalicUpperGreekIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42123"></a> <span
+class="cmtt-10">\glsxtrMathItalicUpperGreekIIrules</span>
+</div><hr>
+</p><!--l. 9842--><p class="noindent" >
+A rule block for upper case mathematical Greek (<span
+class="cmtt-10">\Alpha</span><a
+ id="dx1-42124"></a>, <span
+class="cmtt-10">\Beta</span><a
+ id="dx1-42125"></a>, etc) characters that
+doesn&#8217;t include digamma.
+</p><!--l. 9846--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathItalicLowerGreekIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42126"></a> <span
+class="cmtt-10">\glsxtrMathItalicLowerGreekIrules</span>
+</div><hr>
+</p><!--l. 9848--><p class="noindent" >
+A rule block for lower case mathematical Greek (<span
+class="cmtt-10">\alpha</span><a
+ id="dx1-42127"></a>, <span
+class="cmtt-10">\beta</span><a
+ id="dx1-42128"></a>, etc) characters that
+includes digamma (<span
+class="cmtt-10">\digamma</span><a
+ id="dx1-42129"></a>) between epsilon and zeta.
+</p><!--l. 9853--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathItalicLowerGreekIIrules</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42130"></a> <span
+class="cmtt-10">\glsxtrMathItalicLowerGreekIIrules</span>
+</div><hr>
+</p><!--l. 9855--><p class="noindent" >
+A rule block for lower case mathematical Greek (<span
+class="cmtt-10">\alpha</span><a
+ id="dx1-42131"></a>, <span
+class="cmtt-10">\beta</span><a
+ id="dx1-42132"></a>, etc) characters that
+doesn&#8217;t include digamma.
+</p><!--l. 9859--><p class="indent" > Additionally, there are commands in the form <span
+class="cmtt-10">\glsxtrUpAlpha</span>, <span
+class="cmtt-10">\glsxtrUpBeta</span>
+etc and <span
+class="cmtt-10">\glsxtrMathItalicAlpha</span>, <span
+class="cmtt-10">\glsxtrMathItalicBeta </span>etc that just cover the
+upper and lower case forms of a special Greek character (<span
+class="cmtt-10">\Upalpha</span>, <span
+class="cmtt-10">\upalpha </span>etc
+
+
+
+and <span
+class="cmtt-10">\Alpha</span>, <span
+class="cmtt-10">\alpha </span>etc) as well as the following:
+</p><!--l. 9866--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathItalicPartial</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42133"></a> <span
+class="cmtt-10">\glsxtrMathItalicPartial </span></div><hr>
+</p><!--l. 9868--><p class="noindent" >
+The partial derivative symbol (<span
+class="cmmi-10">&#x2202;</span>).
+</p><!--l. 9871--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrMathItalicNabla</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-42134"></a> <span
+class="cmtt-10">\glsxtrMathItalicNabla </span></div><hr>
+</p><!--l. 9873--><p class="noindent" >
+The nabla symbol (<span
+class="cmsy-10">&#x2207;</span>).
+</p><!--l. 9877--><p class="noindent" >
+</p>
+<!--l. 9877--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.4 </span> <a
+ id="supplementarycommands"></a>Supplementary Commands</h3>
+<!--l. 9879--><p class="noindent" >These commands are provided by <span
+class="cmss-10">glossaries-extra </span>for use with <a
+ id="dx1-43001"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>.
+</p><!--l. 9882--><p class="indent" > The information provided with <span
+class="cmtt-10">\GlsXtrLoadResources </span>is written to the <span
+class="cmtt-10">.aux </span>file
+using </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\protected@write\@auxout</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glsxtrresourceinit</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">information</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> where &#x27E8;<span
+class="cmti-10">information</span>&#x27E9; is the information to pass to <a
+ id="dx1-43002"></a><span
+class="cmtt-10">bib2gls</span>. The command in the
+second argument
+<!--l. 9889--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrresourceinit</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43003"></a> <span
+class="cmtt-10">\glsxtrresourceinit </span></div><hr>
+</p><!--l. 9891--><p class="noindent" >
+may be used to temporarily redefine commands before the information is written to
+the file. This does nothing by default, but may be redefined to allow the use of short
+commands for convenience. For example, with:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-229">
+\renewcommand{\glsxtrresourceinit}{\let\u\glshex}
+</div>
+<!--l. 9898--><p class="nopar" > you can just use, for example, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\u</span><span
+class="cmtt-10">&#x00A0;E6</span></span></span> instead of <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\string\uE6</span></span></span> in the custom rule.
+This redefinition of <span
+class="cmtt-10">\u </span>is scoped so its original definition is restored after the write
+operation.
+</p><!--l. 9903--><p class="indent" > If you have multiple resource commands and you want a default set of options you
+can supply them in the definition of:
+</p><!--l. 9905--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrDefaultResourceOptions</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43004"></a> <span
+class="cmtt-10">\GlsXtrDefaultResourceOptions </span></div><hr>
+</p><!--l. 9907--><p class="noindent" >
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-230">
+\renewcommand{\GlsXtrDefaultResourceOptions}{selection=all}
+</div>
+<!--l. 9911--><p class="nopar" > This should be done before the resource commands.
+</p><!--l. 9914--><p class="indent" > It&#8217;s possible to specify label prefixes. For example, modifying the earlier
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-231">
+\documentclass{article}
+&#x00A0;<br />\usepackage[record,style=indexgroup]{glossaries-extra}
+&#x00A0;<br />\setabbreviationstyle{long-short-desc}
+&#x00A0;<br />\GlsXtrLoadResources
+&#x00A0;<br />&#x00A0;[src={abbrvs},sort={letter-nocase},type=main,
+&#x00A0;<br />&#x00A0;&#x00A0;label-prefix={abr.},
+&#x00A0;<br />&#x00A0;&#x00A0;group={Abbreviations}]
+&#x00A0;<br />\GlsXtrLoadResources
+&#x00A0;<br />&#x00A0;[src={symbols},sort={use},type=main,
+&#x00A0;<br />&#x00A0;&#x00A0;label-prefix={sym.},
+&#x00A0;<br />&#x00A0;&#x00A0;group={Symbols}]
+&#x00A0;<br />\GlsXtrLoadResources[src={terms},sort={en-GB},type=main
+&#x00A0;<br />&#x00A0;&#x00A0;label-prefix={trm.}]
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{trm.bird}
+&#x00A0;<br />\gls{abr.shtml}
+&#x00A0;<br />\gls{sym.M}
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 9945--><p class="nopar" > If you do something like this, you may find it more convenient to define custom
+commands that set the prefix. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-232">
+\newcommand*{\sym}[2][]{\gls[#1]{sym.#2}}
+</div>
+<!--l. 9950--><p class="nopar" > The problem with this is that the custom command <span
+class="cmtt-10">\sym </span>doesn&#8217;t allow for modifiers
+(such as <span
+class="cmtt-10">\gls* </span>or <span
+class="cmtt-10">\gls+</span>). Instead you can use:
+</p><!--l. 9954--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnewgls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43005"></a> <span
+class="cmtt-10">\glsxtrnewgls[</span>&#x27E8;<span
+class="cmitt-10">default options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9956--><p class="noindent" >
+which defines the command &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; that behaves like </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\gls</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">default</span><span
+class="cmitt-10">&#x00A0;options</span>&#x27E9;<span
+class="cmtt-10">,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span><span
+class="cmsy-10">{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmsy-10">}</span><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+</div> For example:
+
+
+
+ <div class="verbatim" id="verbatim-233">
+\glsxtrnewgls{sym.}{\sym}
+</div>
+<!--l. 9964--><p class="nopar" > or (to default to no hyperlinks)
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-234">
+\glsxtrnewgls[hyper=false]{sym.}{\sym}
+</div>
+<!--l. 9968--><p class="nopar" > now you can use <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\sym+{M}</span></span></span> to behave like <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls+{sym.M}</span></span></span>.
+</p><!--l. 9971--><p class="indent" > If you also want the plural and first letter upper case versions you can
+use
+</p><!--l. 9973--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnewglslike</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43006"></a> <span
+class="cmtt-10">\glsxtrnewglslike[</span>&#x27E8;<span
+class="cmitt-10">default options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">\gls-like cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">\glspl-like cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">\Gls-like cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">\Glspl-like cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 9976--><p class="noindent" >
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-235">
+\glsxtrnewglslike[hyper=false]{idx.}{\idx}{\idxpl}{\Idx}{\Idxpl}
+</div>
+<!--l. 9980--><p class="nopar" > For the all caps versions:
+</p><!--l. 9982--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnewGLSlike</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43007"></a> <span
+class="cmtt-10">\glsxtrnewGLSlike[</span>&#x27E8;<span
+class="cmitt-10">default options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">\GLS-like cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">\GLSpl-like cs</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 9985--><p class="noindent" >
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-236">
+\glsxtrnewGLSlike[hyper=false]{idx.}{\IDX}{\IDXpl}
+</div>
+<!--l. 9989--><p class="nopar" >
+</p><!--l. 9991--><p class="indent" > There&#8217;s an analogous command for <span
+class="cmtt-10">\rgls</span>:
+</p><!--l. 9992--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnewrgls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43008"></a> <span
+class="cmtt-10">\glsxtrnewrgls[</span>&#x27E8;<span
+class="cmitt-10">default options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 9994--><p class="noindent" >
+and for <span
+class="cmtt-10">\rgls</span>, <span
+class="cmtt-10">\rglspl</span>, <span
+class="cmtt-10">\rGls </span>and <span
+class="cmtt-10">\rGlspl</span>:
+</p><!--l. 9997--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnewrglslike</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43009"></a> <span
+class="cmtt-10">\glsxtrnewrglslike[</span>&#x27E8;<span
+class="cmitt-10">default options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">\rgls-like cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">\rglspl-like cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">\rGls-like cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">\rGlspl-like cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10001--><p class="noindent" >
+and for the all caps:
+</p><!--l. 10003--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrnewrGLSlike</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43010"></a> <span
+class="cmtt-10">\glsxtrnewrGLSlike[</span>&#x27E8;<span
+class="cmitt-10">default options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">\rGLS-like cs</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">\rGLSpl-like cs</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10006--><p class="noindent" >
+</p><!--l. 10008--><p class="indent" > If you provide your own custom command with just <span
+class="cmtt-10">\newcommand </span>that
+has syntax that starts with <span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmti-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>, then you can notify <a
+ id="dx1-43011"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>
+using:
+</p><!--l. 10011--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtridentifyglslike</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43012"></a> <span
+class="cmtt-10">\glsxtridentifyglslike{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">command</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10013--><p class="noindent" >
+This writes information to the <span
+class="cmtt-10">.aux </span>file so that <a
+ id="dx1-43013"></a><span
+class="cmtt-10">bib2gls </span>can search for the given
+command when looking for dependencies.
+</p><!--l. 10018--><p class="indent" > Another possibility is to set up known label prefixes, with each one identified
+by:
+</p><!--l. 10020--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtraddlabelprefix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43014"></a> <span
+class="cmtt-10">\glsxtraddlabelprefix{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10022--><p class="noindent" >
+These should be listed in order of precedence. Since no entries are defined on the first
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run, the final prefix should be the fallback. You can prepend a prefix to the
+list using:
+</p><!--l. 10026--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrprependlabelprefix</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43015"></a> <span
+class="cmtt-10">\glsxtrprependlabelprefix{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10028--><p class="noindent" >
+which gives it the highest order of precedence.
+</p><!--l. 10031--><p class="indent" > The &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9; argument may be empty. You can clear the list with:
+</p><!--l. 10033--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrclearlabelprefixes</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43016"></a> <span
+class="cmtt-10">\glsxtrclearlabelprefixes </span></div><hr>
+</p><!--l. 10035--><p class="noindent" >
+</p><!--l. 10037--><p class="indent" > You can test if a prefix is already in the list with:
+
+
+
+</p><!--l. 10038--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrifinlabelprefixlist</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43017"></a> <span
+class="cmtt-10">\glsxtrifinlabelprefixlist{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10040--><p class="noindent" >
+In general it&#8217;s best to avoid adding multiple instances of the same prefix, so you can
+check with this command before adding a prefix to the list. However, it can be useful
+to repeat a prefix at the end of the list so that it can be used as a fallback for entries
+that haven&#8217;t yet been defined.
+</p><!--l. 10047--><p class="indent" > With the list of possible prefixes set up (including an empty prefix if necessary),
+you can use:
+</p><!--l. 10049--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\dgls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43018"></a> <span
+class="cmtt-10">\dgls[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10051--><p class="noindent" >
+which behaves like </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\gls[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]</span><span
+class="cmsy-10">{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmsy-10">}</span><span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">]</span>
+</div>
+</div> where &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9; is the first prefix in the list such that &#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;&#x27E8;<span
+class="cmti-10">label</span>&#x27E9; matches a defined
+entry (or the last entry in the prefix list if none match).
+<!--l. 10060--><p class="indent" > There are also analogous commands for the plural and case-changing
+versions:
+</p><!--l. 10062--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\dglspl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43019"></a> <span
+class="cmtt-10">\dglspl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10064--><p class="noindent" >
+(uses <span
+class="cmtt-10">\glspl</span>),
+</p><!--l. 10066--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\dGls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43020"></a> <span
+class="cmtt-10">\dGls[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10068--><p class="noindent" >
+(uses <span
+class="cmtt-10">\Gls</span>),
+</p><!--l. 10070--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\dGlspl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43021"></a> <span
+class="cmtt-10">\dGlspl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10072--><p class="noindent" >
+(uses <span
+class="cmtt-10">\Glspl</span>),
+</p><!--l. 10074--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\dGLS</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43022"></a> <span
+class="cmtt-10">\dGLS[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10076--><p class="noindent" >
+(uses <span
+class="cmtt-10">\GLS</span>),
+</p><!--l. 10078--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\dGLSpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43023"></a> <span
+class="cmtt-10">\dGLSpl[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10080--><p class="noindent" >
+(uses <span
+class="cmtt-10">\GLSpl</span>),
+</p><!--l. 10082--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\dglslink</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43024"></a> <span
+class="cmtt-10">\dglslink[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10084--><p class="noindent" >
+(uses <span
+class="cmtt-10">\glslink</span>),
+</p><!--l. 10086--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\dglsdisp</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-43025"></a> <span
+class="cmtt-10">\dglsdisp[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10088--><p class="noindent" >
+(uses <span
+class="cmtt-10">\glsdisp</span>).
+</p><!--l. 10091--><p class="indent" > These commands are essentially provided for a mixture of single and dual entries.
+Suppose the file <span
+class="cmtt-10">entries.bib </span>contains:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-237">
+@index{duck}
+&#x00A0;<br />@dualindexabbreviation{svm,
+&#x00A0;<br />&#x00A0;&#x00A0;short={SVM},
+&#x00A0;<br />&#x00A0;&#x00A0;long={support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />}
+&#x00A0;<br />@dualindexsymbol{pi,
+&#x00A0;<br />&#x00A0;&#x00A0;symbol={\ensuremath{\pi}},
+&#x00A0;<br />&#x00A0;&#x00A0;description={ratio&#x00A0;of&#x00A0;a&#x00A0;circle's&#x00A0;circumference&#x00A0;to&#x00A0;its
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;diameter}
+&#x00A0;<br />}
+</div>
+<!--l. 10104--><p class="nopar" > and suppose the document code is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-238">
+\documentclass{article}
+&#x00A0;<br />\usepackage{hyperref}
+&#x00A0;<br />\usepackage[record,abbreviations,symbols]{glossaries-extra}
+&#x00A0;<br />\newcommand{\bibglsnewdualindexsymbolsecondary}[5]{%
+&#x00A0;<br />&#x00A0;\longnewglossaryentry*{#1}{name={#3},category={symbol},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;type={symbols},symbol={#4},#2}{#5}%
+&#x00A0;<br />}
+&#x00A0;<br />\GlsXtrLoadResources[src=entries]
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />First&#x00A0;use:&#x00A0;\gls{duck},&#x00A0;\gls{svm},&#x00A0;\gls{pi}.
+&#x00A0;<br />Next&#x00A0;use:&#x00A0;\gls{duck},&#x00A0;\gls{svm},&#x00A0;\gls{pi}.
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 10123--><p class="nopar" > This uses the default empty primary prefix and <span
+class="cmtt-10">dual.</span>&#x00A0;for the dual prefix, so
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span> is referencing the primary entry, which is (essentially) an <span
+class="cmtt-10">@index </span>type
+not an abbreviation. It therefore doesn&#8217;t follow the abbreviation style, and
+it also hyperlinks to the index not to the list of abbreviations. Similarly
+for <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{pi}</span></span></span>, which references the primary <span
+class="cmtt-10">@index </span>entry rather than the
+symbol.
+</p><!--l. 10132--><p class="indent" > What&#8217;s really needed is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-239">
+\gls{duck},&#x00A0;\gls{dual.svm},&#x00A0;\gls{dual.pi}.
+</div>
+<!--l. 10135--><p class="nopar" > or with
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-240">
+\GlsXtrLoadResources[src=entries,
+&#x00A0;<br />&#x00A0;label-prefix={idx.},
+&#x00A0;<br />&#x00A0;dual-prefix={}
+&#x00A0;<br />]
+</div>
+<!--l. 10142--><p class="nopar" > then only the entries without a dual need a prefix:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-241">
+\gls{idx.duck},&#x00A0;\gls{svm},&#x00A0;\gls{pi}.
+</div>
+<!--l. 10146--><p class="nopar" > Using <span
+class="cmtt-10">\glsxtrnewglslike</span>, as earlier, this can be simplified to:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-242">
+\idx{duck},&#x00A0;\gls{svm},&#x00A0;\gls{pi}.
+</div>
+<!--l. 10150--><p class="nopar" > but this requires remembering which terms have duals.
+</p><!--l. 10153--><p class="indent" > An alternative is to use <span
+class="cmtt-10">\dgls </span>instead:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-243">
+\documentclass{article}
+&#x00A0;<br />\usepackage{hyperref}
+&#x00A0;<br />\usepackage[record,abbreviations,symbols]{glossaries-extra}
+&#x00A0;<br />\newcommand{\bibglsnewdualindexsymbolsecondary}[5]{%
+&#x00A0;<br />&#x00A0;\longnewglossaryentry*{#1}{name={#3},category={symbol},
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;type={symbols},symbol={#4},#2}{#5}%
+&#x00A0;<br />}
+&#x00A0;<br />\GlsXtrLoadResources[src=entries]
+&#x00A0;<br />\glsxtraddlabelprefix{dual.}
+&#x00A0;<br />\glsxtraddlabelprefix{}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />First&#x00A0;use:&#x00A0;\dgls{duck},&#x00A0;\dgls{svm},&#x00A0;\dgls{pi}.
+&#x00A0;<br />Next&#x00A0;use:&#x00A0;\dgls{duck},&#x00A0;\dgls{svm},&#x00A0;\dgls{pi}.
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 10174--><p class="nopar" > On the first <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;call (when the <span
+class="cmtt-10">.glstex </span>file doesn&#8217;t exist), neither
+<span
+class="cmtt-10">dual.svm </span>nor <span
+class="cmtt-10">svm </span>exists, so <span
+class="cmtt-10">\dgls </span>uses the last prefix (which is empty in this
+case). This means that on the first <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run, <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dgls{svm}</span></span></span> behaves like
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{svm}</span></span></span>, which adds a record for the primary <span
+class="cmtt-10">svm </span>entry. The default
+primary-dual dependency means that this will cause both the primary (<span
+class="cmtt-10">svm</span>) and
+dual (<span
+class="cmtt-10">dual.svm</span>) entry to be selected. The location will be added to the
+primary entry&#8217;s location list, unless overridden by resource options, such as
+<span
+class="cmtt-10">combine-dual-locations</span>.
+</p><!--l. 10186--><p class="indent" > Once <a
+ id="dx1-43026"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> has been run and the <span
+class="cmtt-10">.glstex </span>file exists, then <span
+class="cmtt-10">dual.svm </span>exists.
+So <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dgls{svm}</span></span></span> will again first try <span
+class="cmtt-10">dual.svm </span>(as <span
+class="cmtt-10">dual. </span>is the first in the
+list of label prefixes). That now exists, so <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dgls{svm}</span></span></span> now behaves like
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{dual.svm}</span></span></span>, which follows the abbreviation style and hyperlinks to the list of
+abbreviations.
+</p><!--l. 10194--><p class="indent" > Similarly for the index-symbol combination <span
+class="cmtt-10">dual.pi </span>and <span
+class="cmtt-10">pi</span>. In the case of
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dgls{duck}</span></span></span>, the label <span
+class="cmtt-10">dual.duck </span>never exists, so that&#8217;s never selected. The empty
+prefix is the only one that matches, so <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dgls{duck}</span></span></span> always behaves like
+<span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{duck}</span></span></span>.
+</p><!--l. 10200--><p class="indent" > If you haven&#8217;t used <span
+class="cmtt-10">combine-dual-locations </span>an extra <a
+ id="dx1-43027"></a><span
+class="cmtt-10">bib2gls</span>+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run
+may be required to correct the location lists.
+</p><!--l. 10204--><p class="indent" > If you change the label prefixes, remember to update the corresponding
+<span
+class="cmtt-10">\glsxtraddlabelprefix{</span>&#x27E8;<span
+class="cmti-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>. If no prefixes have been added to the list (or if the
+list is cleared), just an empty prefix is assumed.
+</p><!--l. 10209--><p class="indent" > As from version 1.8, <a
+ id="dx1-43028"></a><span
+class="cmtt-10">bib2gls </span>provides hooks that identify the label prefixes in the
+
+
+
+<span
+class="cmtt-10">.glstex </span>file: </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\bibglstertiaryprefixlabel</span><a
+ id="dx1-43029"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<br /><span
+class="cmtt-10">\bibglsdualprefixlabel</span><a
+ id="dx1-43030"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<br /><span
+class="cmtt-10">\bibglsprimaryprefixlabel</span><a
+ id="dx1-43031"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">prefix</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> These do nothing by default, but they can be defined before the resource file is
+loaded to set up the prefix list. For example:
+
+
+
+ <div class="verbatim" id="verbatim-244">
+\newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}}
+&#x00A0;<br />\newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}}
+&#x00A0;<br />\GlsXtrLoadResources[src=entries]
+</div>
+<!--l. 10223--><p class="nopar" > Remember that this will only have an effect once the <span
+class="cmtt-10">.glstex </span>file has been created.
+The prefix list will be empty on the first run (which is treated as a single empty
+prefix). If this isn&#8217;t a suitable fallback, it may be necessary to add one after all the
+resource commands:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-245">
+\newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}}
+&#x00A0;<br />\newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}}
+&#x00A0;<br />\GlsXtrLoadResources[src=entries,label-prefix={idx.}]
+&#x00A0;<br />\glsxtraddlabelprefix{idx.}
+</div>
+<!--l. 10234--><p class="nopar" > Although this rather defeats the purpose of using the hooks as you still have to keep
+track of the fallback prefix.
+</p><!--l. 10238--><p class="noindent" >
+</p>
+<!--l. 10238--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">9.5 </span> <a
+ id="sec:recordcount"></a>Record Counting</h3>
+<!--l. 10241--><p class="noindent" >As from version 1.1 of <a
+ id="dx1-44001"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>, you can save the total record count for each entry by
+invoking <a
+ id="dx1-44002"></a><span
+class="cmtt-10">bib2gls </span>with the <span
+class="cmtt-10">--record-count </span>or <span
+class="cmtt-10">--record-count-unit </span>switches.
+These options will ensure that when each entry is written to the <span
+class="cmtt-10">.glstex </span>file
+<a
+ id="dx1-44003"></a><span
+class="cmtt-10">bib2gls </span>will additionally set the following internal fields for that entry:
+</p>
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmtt-10">recordcount</span>: set to the total number of records found for the entry;
+ </li>
+ <li class="itemize"><span
+class="cmtt-10">recordcount.</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;: set to the total number of records found for the
+ entry for the given counter.</li></ul>
+<!--l. 10253--><p class="noindent" >If <span
+class="cmtt-10">--record-count-unit </span>is used then additionally: </p>
+ <ul class="itemize1">
+ <li class="itemize"><span
+class="cmtt-10">recordcount.</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">.</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;: set to the total number of records
+ found for the entry for the given counter with the given location.</li></ul>
+<!--l. 10259--><p class="noindent" >Only use the unit counting option if the locations don&#8217;t contain any special characters. If
+you really need it with locations that may contain formatting commands, then you
+can try redefining:
+</p><!--l. 10262--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdetoklocation</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44004"></a> <span
+class="cmtt-10">\glsxtrdetoklocation{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10264--><p class="noindent" >
+so that it detokenizes &#x27E8;<span
+class="cmti-10">location</span>&#x27E9; but take care when using <span
+class="cmtt-10">\GlsXtrLocationRecordCount</span>
+with commands like <span
+class="cmtt-10">\thepage </span>as they can end up becoming detokenized too
+early.
+</p><!--l. 10270--><p class="indent" > Note that the record count includes locations that <a
+ id="dx1-44005"></a><span
+class="cmtt-10">bib2gls </span>discards, such as
+ignored records, duplicates and partial duplicates. It doesn&#8217;t include cross-reference
+records. For example, if <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{bird}</span></span></span> is used twice on page&#x00A0;1, once on page&#x00A0;2 and
+fours times on page&#x00A0;3, and <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls[counter=section]{bird}</span></span></span> is used once in
+
+
+
+section&#x00A0;3, then the total record count (stored in the <span
+class="cmtt-10">recordcount </span>field) is
+2 + 1 + 4 + 1 = 8, the total for the <span
+class="cmtt-10">page </span>counter (stored in the <span
+class="cmtt-10">recordcount.page</span>
+field) is 2 + 1 + 4 = 7, and the total for the <span
+class="cmtt-10">section </span>counter (stored in the
+<span
+class="cmtt-10">recordcount.section </span>field) is 1.
+</p><!--l. 10282--><p class="indent" > With the unit counting on as well, the field <span
+class="cmtt-10">recordcount.page.1 </span>is set to
+2, <span
+class="cmtt-10">recordcount.page.2 </span>is set to 1, <span
+class="cmtt-10">recordcount.page.3 </span>is set to 4 and
+<span
+class="cmtt-10">recordcount.section.3 </span>is set to 1.
+</p><!--l. 10287--><p class="indent" > You can access these fields using the following commands which will expand to
+the field value if set or to 0 if unset:
+</p><!--l. 10289--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrTotalRecordCount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44006"></a> <span
+class="cmtt-10">\GlsXtrTotalRecordCount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10291--><p class="noindent" >
+This expands to the total record count for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-246">
+\GlsXtrTotalRecordCount{bird}
+</div>
+<!--l. 10296--><p class="nopar" > expands to 8.
+</p><!--l. 10299--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrRecordCount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44007"></a> <span
+class="cmtt-10">\GlsXtrRecordCount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10301--><p class="noindent" >
+This expands to the counter total for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; where &#x27E8;<span
+class="cmti-10">counter</span>&#x27E9; is the
+counter name. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-247">
+\GlsXtrRecordCount{bird}{page}
+</div>
+<!--l. 10307--><p class="nopar" > expands to 7 and
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-248">
+\GlsXtrRecordCount{bird}{section}
+</div>
+<!--l. 10311--><p class="nopar" > expands to 1.
+</p><!--l. 10314--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrLocationRecordCount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44008"></a> <span
+class="cmtt-10">\GlsXtrLocationRecordCount{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">location</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10316--><p class="noindent" >
+This expands to the total for the given location. For example
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-249">
+\GlsXtrLocationRecordCount{bird}{page}{3}
+</div>
+<!--l. 10320--><p class="nopar" > expands to 4. Be careful about using <span
+class="cmtt-10">\thepage </span>in the &#x27E8;<span
+class="cmti-10">location</span>&#x27E9; part. Remember that
+due to <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s asynchronous output routine, <span
+class="cmtt-10">\thepage </span>may not be correct.
+</p><!--l. 10325--><p class="indent" > There are commands analogous to the entry counting commands like <span
+class="cmtt-10">\cgls</span>
+and <span
+class="cmtt-10">\cglsformat </span>that are triggered by the record count. These are listed
+below.
+</p><!--l. 10329--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rgls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44009"></a> <span
+class="cmtt-10">\rgls</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10331--><p class="noindent" >
+</p><!--l. 10332--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rglspl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44010"></a> <span
+class="cmtt-10">\rglspl</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10334--><p class="noindent" >
+</p><!--l. 10335--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rGls</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44011"></a> <span
+class="cmtt-10">\rGls</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10337--><p class="noindent" >
+</p><!--l. 10338--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rGlspl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44012"></a> <span
+class="cmtt-10">\rGlspl</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10340--><p class="noindent" >
+</p><!--l. 10341--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rGLS</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44013"></a> <span
+class="cmtt-10">\rGLS</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10343--><p class="noindent" >
+</p><!--l. 10344--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rGLSpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44014"></a> <span
+class="cmtt-10">\rGLSpl</span>&#x27E8;<span
+class="cmitt-10">modifier</span>&#x27E9;<span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10346--><p class="noindent" >
+These commands check the <a
+href="#catattr.recordcount"><span
+class="cmss-10">recordcount</span></a><a
+ id="dx1-44015"></a> attribute which, if set, should be a number.
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-250">
+\glssetcategoryattribute{abbreviation}{recordcount}{1}
+</div>
+<!--l. 10351--><p class="nopar" > For convenience, you can use
+</p><!--l. 10353--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrSetRecordCountAttribute</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44016"></a> <span
+class="cmtt-10">\GlsXtrSetRecordCountAttribute{</span>&#x27E8;<span
+class="cmitt-10">category</span>
+<span
+class="cmitt-10">list</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10355--><p class="noindent" >
+to set the <a
+href="#catattr.recordcount"><span
+class="cmss-10">recordcount</span></a><a
+ id="dx1-44017"></a> attribute to &#x27E8;<span
+class="cmti-10">n</span>&#x27E9; for all the categories listed in &#x27E8;<span
+class="cmti-10">category</span>
+<span
+class="cmti-10">list</span>&#x27E9;.
+</p><!--l. 10359--><p class="indent" > The <span
+class="cmtt-10">\rgls</span>-like commands use
+</p><!--l. 10360--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrifrecordtrigger</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44018"></a> <span
+class="cmtt-10">\glsxtrifrecordtrigger{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">trigger code</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">normal</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10363--><p class="noindent" >
+to determine whether the <span
+class="cmtt-10">\rgls</span>-like command should behave like its <span
+class="cmtt-10">\gls</span>
+counterpart (&#x27E8;<span
+class="cmti-10">normal</span>&#x27E9;) or whether it should instead use &#x27E8;<span
+class="cmti-10">trigger code</span>&#x27E9;.
+</p><!--l. 10368--><p class="indent" > This command checks if the <a
+href="#catattr.recordcount"><span
+class="cmss-10">recordcount</span></a><a
+ id="dx1-44019"></a> attribute is set. If not is just does
+&#x27E8;<span
+class="cmti-10">normal</span>&#x27E9;, otherwise it tests if
+</p><!--l. 10371--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrrecordtriggervalue</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44020"></a> <span
+class="cmtt-10">\glsxtrrecordtriggervalue{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10373--><p class="noindent" >
+is greater than the value given in the <a
+href="#catattr.recordcount"><span
+class="cmss-10">recordcount</span></a><a
+ id="dx1-44021"></a> attribute for that entry&#8217;s category.
+If true, this does &#x27E8;<span
+class="cmti-10">normal</span>&#x27E9; otherwise it does &#x27E8;<span
+class="cmti-10">trigger code</span>&#x27E9;. The default definition of the
+trigger value command is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-251">
+\newcommand*{\glsxtrrecordtriggervalue}[1]{%
+&#x00A0;<br />&#x00A0;\GlsXtrTotalRecordCount{#1}%
+&#x00A0;<br />}
+</div>
+<!--l. 10382--><p class="nopar" > The &#x27E8;<span
+class="cmti-10">trigger code</span>&#x27E9; part writes a record with the <span
+class="cmss-10">format</span><a
+ id="dx1-44022"></a> set to <span
+class="cmtt-10">glstriggerrecordformat</span>
+(which <a
+ id="dx1-44023"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> v1.1+ recognises as a special type of ignored location format) and
+does &#x27E8;<span
+class="cmti-10">trigger format</span>&#x27E9;. Then it unsets the <a
+ id="dx1-44024"></a><a
+href="#glo:firstuseflag">first use flag</a>. Note that it doesn&#8217;t implement
+the post-link hook. This ensures that the record count is correct on the next
+run.
+</p><!--l. 10391--><p class="indent" > The &#x27E8;<span
+class="cmti-10">trigger format</span>&#x27E9; depends on the <span
+class="cmtt-10">\rgls</span>-like command used and will be one of
+the following:
+</p><!--l. 10393--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rglsformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44025"></a> <span
+class="cmtt-10">\rglsformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10395--><p class="noindent" >
+</p><!--l. 10396--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rglsplformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44026"></a> <span
+class="cmtt-10">\rglsplformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10398--><p class="noindent" >
+</p><!--l. 10399--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rGlsformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44027"></a> <span
+class="cmtt-10">\rGlsformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10401--><p class="noindent" >
+</p><!--l. 10402--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rGlsplformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44028"></a> <span
+class="cmtt-10">\rGlsplformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10404--><p class="noindent" >
+</p><!--l. 10405--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rGLSformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44029"></a> <span
+class="cmtt-10">\rGLSformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10407--><p class="noindent" >
+</p><!--l. 10408--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\rGLSplformat</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44030"></a> <span
+class="cmtt-10">\rGLSplformat{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10410--><p class="noindent" >
+These all behave much like their <span
+class="cmtt-10">\cglsformat </span>counterparts. If the entry&#8217;s <a
+href="#catattr.regular"><span
+class="cmss-10">regular</span></a><a
+ id="dx1-44031"></a>
+attribute is set or if the entry doesn&#8217;t have a long form, the first or first plural is
+used, otherwise the long or long plural form is used.
+</p><!--l. 10416--><p class="indent" > You can use
+</p><!--l. 10417--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrenablerecordcount</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-44032"></a> <span
+class="cmtt-10">\glsxtrenablerecordcount </span></div><hr>
+</p><!--l. 10419--><p class="noindent" >
+to redefine <span
+class="cmtt-10">\gls</span>, <span
+class="cmtt-10">\glspl</span>, <span
+class="cmtt-10">\Gls</span>, <span
+class="cmtt-10">\Glspl</span>, <span
+class="cmtt-10">\GLS</span>, <span
+class="cmtt-10">\GLSpl </span>to <span
+class="cmtt-10">\rgls</span>, <span
+class="cmtt-10">\rglspl</span>, <span
+class="cmtt-10">\rGls</span>,
+<span
+class="cmtt-10">\rGlspl</span>, <span
+class="cmtt-10">\rGLS</span>, <span
+class="cmtt-10">\rGLSpl</span>, respectively, for convenience.
+</p><!--l. 10424--><p class="indent" > If you don&#8217;t want the entries that use &#x27E8;<span
+class="cmti-10">trigger code</span>&#x27E9; to appear in the glossary, you
+need to use the resource option <span
+class="cmtt-10">trigger-type </span>to assign them to another glossary.
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-252">
+\documentclass{article}
+&#x00A0;<br />\usepackage[record]{glossaries-extra}
+&#x00A0;<br />\newignoredglossary{ignored}
+&#x00A0;<br />\GlsXtrLoadResources[
+&#x00A0;<br />&#x00A0;src=example-glossaries-acronym,
+&#x00A0;<br />&#x00A0;trigger-type=ignored,
+&#x00A0;<br />&#x00A0;category=abbreviation
+&#x00A0;<br />]
+&#x00A0;<br />\glsxtrenablerecordcount
+&#x00A0;<br />\GlsXtrSetRecordCountAttribute{abbreviation}{1}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{lid}.&#x00A0;&#x00A0;\gls{stc}.&#x00A0;\gls{lid}.&#x00A0;&#x00A0;\gls{aeu}.
+&#x00A0;<br />\gls{upa}.&#x00A0;\gls{aeu}.
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 10450--><p class="nopar" > In the above, <span
+class="cmtt-10">stc </span>and <span
+class="cmtt-10">upa </span>both only have one record, so they are assigned to the
+<span
+class="cmtt-10">ignored </span>glossary instead of the <span
+class="cmtt-10">main </span>one.
+
+
+
+</p>
+<!--l. 10455--><p class="indent" > </div>
+</p><!--l. 10455--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">10. <a
+ id="sec:miscnew"></a>Miscellaneous New Commands</h2>
+</p><!--l. 10458--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package provides <span
+class="cmtt-10">\glsrefentry</span><a
+ id="dx1-45001"></a> entry to cross-reference entries
+when used with the <a
+href="#styopt.entrycounter"><span
+class="cmss-10">entrycounter</span></a><a
+ id="dx1-45002"></a> or <a
+href="#styopt.subentrycounter"><span
+class="cmss-10">subentrycounter</span></a><a
+ id="dx1-45003"></a> options. The <span
+class="cmss-10">glossaries-extra</span>
+package provides a supplementary command
+</p><!--l. 10462--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrpageref</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-45004"></a> <span
+class="cmtt-10">\glsxtrpageref{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10464--><p class="noindent" >
+that works in the same way except that it uses <span
+class="cmtt-10">\pageref</span><a
+ id="dx1-45005"></a> instead of <span
+class="cmtt-10">\ref</span><a
+ id="dx1-45006"></a>.
+</p><!--l. 10468--><p class="indent" > You can copy an entry to another glossary using
+</p><!--l. 10469--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrcopytoglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-45007"></a> <span
+class="cmtt-10">\glsxtrcopytoglossary{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">glossary-type</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10471--><p class="noindent" >
+This appends &#x27E8;<span
+class="cmti-10">entry-label</span>&#x27E9; to the end of the internal list for the glossary given by
+&#x27E8;<span
+class="cmti-10">glossary-type</span>&#x27E9;. Be careful if you use the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-45008"></a> package as this may cause duplicate
+hypertargets. You will need to change <span
+class="cmtt-10">\glolinkprefix </span>to another value or disable
+hyperlinks when you display the duplicate. Alternatively, use the new <span
+class="cmss-10">target</span><a
+ id="dx1-45009"></a> key to
+switch off the targets:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-253">
+\printunsrtglossary[target=false]
+</div>
+<!--l. 10481--><p class="nopar" >
+</p><!--l. 10483--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package allows you to set preamble code for a given glossary
+type using <span
+class="cmtt-10">\setglossarypreamble</span>. This overrides any previous setting.
+With <span
+class="cmss-10">glossaries-extra </span>(as from v1.12) you can instead append to the preamble
+using
+</p><!--l. 10488--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\apptoglossarypreamble</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-45010"></a> <span
+class="cmtt-10">\apptoglossarypreamble[</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10490--><p class="noindent" >
+or prepend using
+</p><!--l. 10492--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\pretoglossarypreamble</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-45011"></a> <span
+class="cmtt-10">\pretoglossarypreamble[</span>&#x27E8;<span
+class="cmitt-10">type</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10494--><p class="noindent" >
+</p>
+<!--l. 10496--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10.1 </span> <a
+ id="sec:fields"></a>Entry Fields</h3>
+<!--l. 10499--><p class="noindent" >A field may now be used to store the name of a text-block command that takes a
+single argument. The field is given by
+</p><!--l. 10501--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrFmtField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46001"></a> <span
+class="cmtt-10">\GlsXtrFmtField </span></div><hr>
+</p><!--l. 10503--><p class="noindent" >
+The default value is <span
+class="cmtt-10">useri</span>. Note that the value must be the control sequence name
+<span
+class="cmti-10">without the initial backslash</span>.
+</p><!--l. 10508--><p class="indent" > For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-254">
+\newcommand*{\mtx}[1]{\boldsymbol{#1}}
+&#x00A0;<br />\newcommand*{\mtxinv}[1]{\mtx{#1}\sp{-1}}
+&#x00A0;<br />\newglossaryentry{matrix}{%
+&#x00A0;<br />&#x00A0;&#x00A0;name={matrix},
+&#x00A0;<br />&#x00A0;&#x00A0;symbol={\ensuremath{\mtx{M}}},
+&#x00A0;<br />&#x00A0;&#x00A0;plural={matrices},
+&#x00A0;<br />&#x00A0;&#x00A0;user1={mtx},
+&#x00A0;<br />&#x00A0;&#x00A0;description={rectangular&#x00A0;array&#x00A0;of&#x00A0;values}
+&#x00A0;<br />}
+&#x00A0;<br />\newglossaryentry{identitymatrix}{%
+&#x00A0;<br />&#x00A0;&#x00A0;name={identity&#x00A0;matrix},
+&#x00A0;<br />&#x00A0;&#x00A0;symbol={\ensuremath{\mtx{I}}},
+&#x00A0;<br />&#x00A0;&#x00A0;plural={identity&#x00A0;matrices},
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;diagonal&#x00A0;matrix&#x00A0;with&#x00A0;all&#x00A0;diagonal&#x00A0;elements&#x00A0;equal&#x00A0;to
+&#x00A0;<br />1&#x00A0;and&#x00A0;all&#x00A0;other&#x00A0;elements&#x00A0;equal&#x00A0;to&#x00A0;0}
+&#x00A0;<br />}
+&#x00A0;<br />\newglossaryentry{matrixinv}{%
+&#x00A0;<br />&#x00A0;&#x00A0;name={matrix&#x00A0;inverse},
+&#x00A0;<br />&#x00A0;&#x00A0;symbol={\ensuremath{\mtxinv{M}}},
+&#x00A0;<br />&#x00A0;&#x00A0;user1={mtxinv},
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;square&#x00A0;\gls{matrix}&#x00A0;such&#x00A0;that
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;$\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$}
+&#x00A0;<br />}
+</div>
+<!--l. 10536--><p class="nopar" >
+</p><!--l. 10538--><p class="indent" > There are two commands provided that allow you to apply the command to an
+argument:
+</p><!--l. 10540--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46002"></a> <span
+class="cmtt-10">\glsxtrfmt[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10542--><p class="noindent" >
+This effectively does </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glslink[</span>&#x27E8;<span
+class="cmitt-10">default-options</span>&#x27E9;<span
+class="cmtt-10">,</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glsxtrfmtdisplay</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">cs</span><span
+class="cmitt-10">&#x00A0;name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{}}</span>
+</div>
+</div> where &#x27E8;<span
+class="cmti-10">cs name</span>&#x27E9; is the control sequence name supplied in the provided field, which
+must be defined to take a single required argument. Although it effectively acts like
+<span
+class="cmtt-10">\glslink </span>it misses out the post-link hook.
+<!--l. 10552--><p class="indent" > The default &#x27E8;<span
+class="cmti-10">default-options</span>&#x27E9; are given by
+
+
+
+</p><!--l. 10553--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrFmtDefaultOptions</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46003"></a> <span
+class="cmtt-10">\GlsXtrFmtDefaultOptions </span></div><hr>
+</p><!--l. 10555--><p class="noindent" >
+This is defined as <span
+class="cmtt-10">noindex </span>but may be redefined as appropriate. Note that the
+replacement text of <span
+class="cmtt-10">\GlsXtrFmtDefaultOptions </span>is prepended to the optional
+argument of <span
+class="cmtt-10">\glslink</span>.
+</p><!--l. 10561--><p class="indent" > As from version 1.23, there&#8217;s also a starred version of this command that has a
+final optional argument:
+</p><!--l. 10563--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfmt*</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46004"></a> <span
+class="cmtt-10">\glsxtrfmt*[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}[</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 10565--><p class="noindent" >
+Both the starred and unstarred versions use:
+</p><!--l. 10567--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfmtdisplay</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46005"></a> <span
+class="cmtt-10">\glsxtrfmtdisplay{</span>&#x27E8;<span
+class="cmitt-10">cs name</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">insert</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10569--><p class="noindent" >
+within the link text. In the case of the unstarred version &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; will be empty. It will
+also be empty if the final option argument is missing from the starred form. If the
+entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is undefined <span
+class="cmtt-10">\glsxtrfmt </span>and <span
+class="cmtt-10">\glsxtrfmt* </span>will issue an error (or
+warning if <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-46006"></a>). There won&#8217;t be a warning or error if the entry is
+defined by the given field is missing. In either case, (the entry is undefined or the field
+is missing) &#x27E8;<span
+class="cmti-10">cs name</span>&#x27E9; will be <span
+class="cmtt-10">@firstofone </span>otherwise it will be the field value. The
+default definition is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-255">
+\newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3}
+</div>
+<!--l. 10583--><p class="nopar" > which puts &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; inside the argument of the control sequence and &#x27E8;<span
+class="cmti-10">insert</span>&#x27E9; outside it
+(but it will still be inside the link text).
+</p><!--l. 10588--><p class="indent" > <div class="important" title="Important Note"> Remember that nested links cause a problem so avoid using commands like <span
+class="cmtt-10">\gls</span>
+or <span
+class="cmtt-10">\glsxtrfmt </span>within &#x27E8;<span
+class="cmti-10">text</span>&#x27E9;. </div>
+</p><!--l. 10591--><p class="noindent" >
+</p><!--l. 10593--><p class="indent" > For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-256">
+\[
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrfmt{matrix}{A}
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrfmt{matrixinv}{A}
+&#x00A0;<br />&#x00A0;&#x00A0;=
+&#x00A0;<br />&#x00A0;&#x00A0;\glssymbol{identitymatrix}
+&#x00A0;<br />\]
+</div>
+<!--l. 10601--><p class="nopar" > If the default options are set to <span
+class="cmtt-10">noindex </span>then <span
+class="cmtt-10">\glsxtrfmt </span>won&#8217;t index, but will
+create a hyperlink (if <span
+class="cmss-10">hyperref</span><a
+ id="dx1-46007"></a> has been loaded). This can be changed so that it also
+suppresses the hyperlink:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-257">
+\renewcommand{\GlsXtrFmtDefaultOptions}{hyper=false,noindex}
+</div>
+<!--l. 10608--><p class="nopar" >
+</p><!--l. 10610--><p class="indent" > Note that <span
+class="cmtt-10">\glsxtrfmt </span>won&#8217;t work with PDF bookmarks. Instead you can
+use
+</p><!--l. 10612--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrentryfmt</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46008"></a> <span
+class="cmtt-10">\glsxtrentryfmt{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10614--><p class="noindent" >
+This uses <span
+class="cmtt-10">\texorpdfstring </span>and will simply expand to &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; within the PDF
+bookmarks, but in the document it will do &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9;<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span>if a control sequence name has
+been provided or just &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; otherwise.
+</p><!--l. 10620--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package provides <span
+class="cmtt-10">\glsaddstoragekey </span>to add new keys. This
+command will cause an error if the key has already been defined. The <span
+class="cmss-10">glossaries-extra</span>
+package provides a supplementary command that will only define the key if it doesn&#8217;t
+already exist:
+</p><!--l. 10625--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrprovidestoragekey</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46009"></a> <span
+class="cmtt-10">\glsxtrprovidestoragekey{</span>&#x27E8;<span
+class="cmitt-10">key</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">default</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10627--><p class="noindent" >
+If the key has already been defined, it will still provide the command given in the
+third argument &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; (if it hasn&#8217;t already been defined). Unlike <span
+class="cmtt-10">\glsaddstoragekey</span>, &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9;
+may be left empty if you&#8217;re happy to just use <span
+class="cmtt-10">\glsfieldfetch </span>to fetch the value of
+this new key.
+</p><!--l. 10633--><p class="indent" > You can test if a key has been provided with:
+</p><!--l. 10634--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrifkeydefined</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46010"></a> <span
+class="cmtt-10">\glsxtrifkeydefined{</span>&#x27E8;<span
+class="cmitt-10">key</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10636--><p class="noindent" >
+This tests if &#x27E8;<span
+class="cmti-10">key</span>&#x27E9; is available for use in the &#x27E8;<span
+class="cmti-10">key</span>&#x27E9;= list in the second argument of
+<span
+class="cmtt-10">\newglossaryentry </span>(or the optional argument of commands like <span
+class="cmtt-10">\newabbreviation</span>).
+The corresponding field may not have been set for any of the entries if no default was
+provided.
+</p><!--l. 10644--><p class="indent" > There are now commands provided to set individual fields. Note that
+these only change the specified field, not any related values. For example,
+changing the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-46011"></a> field won&#8217;t update the <span
+class="cmss-10">plural</span><a
+ id="dx1-46012"></a> field. There are also
+some fields that should really only be set when entries are defined (such as
+the <span
+class="cmss-10">parent</span><a
+ id="dx1-46013"></a> field). Unexpected results may occur if they are subsequently
+changed.
+</p><!--l. 10652--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrSetField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46014"></a> <span
+class="cmtt-10">\GlsXtrSetField{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10654--><p class="noindent" >
+Sets the field given by &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; to &#x27E8;<span
+class="cmti-10">value</span>&#x27E9; for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;. No expansion is
+performed. It&#8217;s not necessary for the field to have been defined as a key. You can
+access the value later with <span
+class="cmtt-10">\glsxtrusefield</span>. Note that <span
+class="cmtt-10">\glsxtrifkeydefined </span>only
+tests if a key has been defined for use with commands like <span
+class="cmtt-10">\newglossaryentry</span>. If a
+field without a corresponding key is assigned a value, the key remains undefined. This
+command is robust.
+
+
+
+</p><!--l. 10664--><p class="indent" > <span
+class="cmtt-10">\GlsXtrSetField </span>uses
+</p><!--l. 10665--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsetfieldifexists</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46015"></a> <span
+class="cmtt-10">\glsxtrsetfieldifexists{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10667--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry label and &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; is the assignment code.
+</p><!--l. 10671--><p class="indent" > This command just uses <span
+class="cmtt-10">\glsdoifexists</span><a
+ id="dx1-46016"></a><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span>(ignoring the
+&#x27E8;<span
+class="cmti-10">field</span>&#x27E9; argument), so by default it causes an error if the entry doesn&#8217;t exist.
+This can be changed to a warning with <a
+href="#styopt.undefaction"><span
+class="cmss-10">undefaction</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-46017"></a>. You can redefine
+<span
+class="cmtt-10">\glsxtrsetfieldifexists </span>to simply do &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; if you want to skip the existence check.
+Alternatively you can instead use
+</p><!--l. 10677--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrdeffield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46018"></a> <span
+class="cmtt-10">\glsxtrdeffield{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">arguments</span>&#x27E9;<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">replacement</span>
+<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10679--><p class="noindent" >
+This simply uses <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-46019"></a>&#8217;s <span
+class="cmtt-10">\csdef </span>without any checks. This command
+isn&#8217;t robust. There is also a version that uses <span
+class="cmtt-10">\protected@csedef</span>
+instead:<span class="footnote-mark"><a
+href="#fn1x10" id="fn1x10-bk"><sup class="textsuperscript">10.1</sup></a></span><a
+ id="x1-46020f1"></a>
+</p><!--l. 10684--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtredeffield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46021"></a> <span
+class="cmtt-10">\glsxtredeffield{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}</span>&#x27E8;<span
+class="cmitt-10">arguments</span>&#x27E9;<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">replacement</span>
+<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10686--><p class="noindent" >
+</p><!--l. 10688--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\gGlsXtrSetField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46022"></a> <span
+class="cmtt-10">\gGlsXtrSetField{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10690--><p class="noindent" >
+As <span
+class="cmtt-10">\GlsXtrSetField </span>but globally.
+</p><!--l. 10693--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\eGlsXtrSetField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46023"></a> <span
+class="cmtt-10">\eGlsXtrSetField{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10695--><p class="noindent" >
+As <span
+class="cmtt-10">\GlsXtrSetField </span>but uses protected expansion.
+</p><!--l. 10698--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\xGlsXtrSetField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46024"></a> <span
+class="cmtt-10">\xGlsXtrSetField{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">value</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10700--><p class="noindent" >
+As <span
+class="cmtt-10">\gGlsXtrSetField </span>but uses protected expansion.
+</p><!--l. 10703--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrLetField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46025"></a> <span
+class="cmtt-10">\GlsXtrLetField{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">cs</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10705--><p class="noindent" >
+Sets the field given by &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; to the replacement text of &#x27E8;<span
+class="cmti-10">cs</span>&#x27E9; for the entry given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;
+(using <span
+class="cmtt-10">\let</span>).
+</p><!--l. 10709--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\csGlsXtrLetField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46026"></a> <span
+class="cmtt-10">\csGlsXtrLetField{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">cs name</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10711--><p class="noindent" >
+As <span
+class="cmtt-10">\GlsXtrLetField </span>but the control sequence name is supplied instead.
+</p><!--l. 10715--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrLetFieldToField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46027"></a> <span
+class="cmtt-10">\GlsXtrLetFieldToField{</span>&#x27E8;<span
+class="cmitt-10">label-1</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field-1</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label-2</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field-2</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10717--><p class="noindent" >
+Sets the field given by &#x27E8;<span
+class="cmti-10">field-1</span>&#x27E9; for the entry given by &#x27E8;<span
+class="cmti-10">label-1</span>&#x27E9; to the field given by
+&#x27E8;<span
+class="cmti-10">field-2</span>&#x27E9; for the entry given by &#x27E8;<span
+class="cmti-10">label-2</span>&#x27E9;. There&#8217;s no check for the existence of &#x27E8;<span
+class="cmti-10">label-2</span>&#x27E9;,
+but <span
+class="cmtt-10">\glsxtrsetfieldifexists{</span>&#x27E8;<span
+class="cmti-10">label-1</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">field-1</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span>is still used, as for
+<span
+class="cmtt-10">\GlsXtrSetField</span>.
+</p><!--l. 10725--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package provides <span
+class="cmtt-10">\ifglshasfield</span><a
+ id="dx1-46028"></a> to determine if a field has been
+set. The <span
+class="cmss-10">glossaries-extra </span>package provides a simpler version:
+
+
+
+</p><!--l. 10728--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrifhasfield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46029"></a> <span
+class="cmtt-10">\glsxtrifhasfield{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10730--><p class="noindent" >
+(New to v1.19.) Note that in this case the &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; must be the <span
+class="cmti-10">internal </span>field label (for
+example, <span
+class="cmtt-10">useri </span>rather than <span
+class="cmtt-10">user1</span>). Unlike <span
+class="cmtt-10">\ifglshasfield</span>, this version
+doesn&#8217;t complain if the entry (given by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;) or the field don&#8217;t exist and
+will simply do &#x27E8;<span
+class="cmti-10">false</span>&#x27E9;. If the field does exist for the given entry and it&#8217;s not
+empty, the &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; part is done otherwise it does &#x27E8;<span
+class="cmti-10">false</span>&#x27E9;. Within &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; you may
+use
+</p><!--l. 10739--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glscurrentfieldvalue</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46030"></a> <span
+class="cmtt-10">\glscurrentfieldvalue </span></div><hr>
+</p><!--l. 10741--><p class="noindent" >
+to access the field value. This command includes grouping which scopes the &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; and
+&#x27E8;<span
+class="cmti-10">false</span>&#x27E9; parts. The starred version
+</p><!--l. 10745--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrifhasfield*</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46031"></a> <span
+class="cmtt-10">\glsxtrifhasfield*{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10747--><p class="noindent" >
+omits the implicit grouping.
+</p><!--l. 10750--><p class="indent" > <div class="important" title="Important Note"> Be careful of keys that use <span
+class="cmtt-10">\relax </span>as the default value (such as the <span
+class="cmss-10">symbol</span><a
+ id="dx1-46032"></a>). Use
+<span
+class="cmtt-10">\ifglshassymbol </span>instead. </div>
+</p><!--l. 10753--><p class="noindent" >
+</p><!--l. 10755--><p class="indent" > There is also a version that simply uses <span
+class="cmtt-10">\ifcsundef</span>. It doesn&#8217;t save the field
+value, but can be used if you only need to check if the field is defined without
+accessing it:
+</p><!--l. 10758--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfFieldUndef</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46033"></a> <span
+class="cmtt-10">\GlsXtrIfFieldUndef{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10760--><p class="noindent" >
+</p><!--l. 10762--><p class="indent" > <div class="important" title="Important Note"> There&#8217;s a difference between an undefined field and an unset field. An undefined
+field hasn&#8217;t been assigned any value (no associated internal control sequence
+has been defined). If a defined field has been defined to empty, then it&#8217;s
+considered unset. <span
+class="cmtt-10">\GlsXtrIfFieldUndef </span>implement &#x27E8;<span
+class="cmti-10">false</span>&#x27E9; for a defined but
+empty field whereas <span
+class="cmtt-10">\glsxtrifhasfield </span>and <span
+class="cmtt-10">\ifglshasfield </span>will implement
+&#x27E8;<span
+class="cmti-10">false</span>&#x27E9; a defined but empty field. Remember that any keys that may be used
+in <span
+class="cmtt-10">\newglossaryentry </span>will have a default value if not provided. In many
+cases, the default value is empty, so only use <span
+class="cmtt-10">\GlsXtrIfFieldUndef </span>for
+fields that can only be defined through commands like <span
+class="cmtt-10">\GlsXtrSetField</span>.
+</div>
+</p><!--l. 10775--><p class="noindent" >
+</p><!--l. 10777--><p class="indent" > You can test if a field value equals a string using
+</p><!--l. 10778--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfFieldEqStr</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46034"></a> <span
+class="cmtt-10">\GlsXtrIfFieldEqStr{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10780--><p class="noindent" >
+If the entry exists and has the given field set to the given text then this does &#x27E8;<span
+class="cmti-10">true</span>&#x27E9;
+otherwise it does &#x27E8;<span
+class="cmti-10">false</span>&#x27E9;. This uses <span
+class="cmtt-10">\glsxtrifhasfield </span>to test if the field exists and
+
+
+
+then compares the replacement text of <span
+class="cmtt-10">\glscurrentfieldvalue </span>with &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; using
+<span
+class="cmss-10">etoolbox</span><a
+ id="dx1-46035"></a>&#8217;s <span
+class="cmtt-10">\ifdefstring</span>. Version 1.39 introduced a starred form of this command,
+which uses the starred form of <span
+class="cmtt-10">\glsxtrifhasfield</span>.
+</p><!--l. 10790--><p class="indent" > As from version 1.31, there&#8217;s a similar command:
+</p><!--l. 10791--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfFieldEqXpStr</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46036"></a> <span
+class="cmtt-10">\GlsXtrIfFieldEqXpStr{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10793--><p class="noindent" >
+This is like <span
+class="cmtt-10">\GlsXtrIfFieldEqStr </span>but first (protected) fully expands &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; (but not
+the field value). If you want to compare the (protected) full expansion of both the
+field value and &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; use:
+</p><!--l. 10798--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfXpFieldEqXpStr</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46037"></a> <span
+class="cmtt-10">\GlsXtrIfXpFieldEqXpStr{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10800--><p class="noindent" >
+Again, version 1.39 introduced a starred form of these commands, which use the
+starred form of <span
+class="cmtt-10">\glsxtrifhasfield</span>.
+</p><!--l. 10804--><p class="indent" > As from v1.31, if a field represents a numeric (integer) value, you can use the
+following two numeric tests. If the field is set, it must expand to an integer. You may
+use <span
+class="cmtt-10">\glscurrentfieldvalue </span>within &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; or &#x27E8;<span
+class="cmti-10">false</span>&#x27E9; to access the actual value. Both
+&#x27E8;<span
+class="cmti-10">true</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">false</span>&#x27E9; are scoped. If the field is undefined or empty, the value is assumed to
+be 0, and <span
+class="cmtt-10">\glscurrentfieldvalue </span>is set accordingly. As from version 1.39, these
+numeric tests have starred versions. The unstarred versions add implicit grouping.
+The starred versions don&#8217;t.
+</p><!--l. 10814--><p class="indent" > To test if the value is non-zero:
+</p><!--l. 10815--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfFieldNonZero</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46038"></a> <span
+class="cmtt-10">\GlsXtrIfFieldNonZero{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10817--><p class="noindent" >
+Alternatively, you can test if the field expands to a specific number using:
+</p><!--l. 10820--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfFieldEqNum</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46039"></a> <span
+class="cmtt-10">\GlsXtrIfFieldEqNum{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10822--><p class="noindent" >
+This does &#x27E8;<span
+class="cmti-10">true</span>&#x27E9; if the field value equals &#x27E8;<span
+class="cmti-10">n</span>&#x27E9; (using <span
+class="cmtt-10">\ifnum </span>for the comparison)
+otherwise it does &#x27E8;<span
+class="cmti-10">false</span>&#x27E9;. For a more general numeric comparison you can
+use:
+</p><!--l. 10827--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrIfFieldCmpNum</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46040"></a> <span
+class="cmtt-10">\GlsXtrIfFieldCmpNum{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">comparison</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10829--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">comparison</span>&#x27E9; is one of <span
+class="cmtt-10">=</span>, <span
+class="cmtt-10">&#x003C; </span>or <span
+class="cmtt-10">&#x003E;</span>.
+</p><!--l. 10833--><p class="indent" > The <span
+class="cmss-10">glossaries </span>package provides <span
+class="cmtt-10">\glsfieldfetch</span><a
+ id="dx1-46041"></a> which can be used to fetch the
+value of the given field and store it in a control sequence. The <span
+class="cmss-10">glossaries-extra </span>package
+provides another way of accessing the field value:
+</p><!--l. 10837--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrusefield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46042"></a> <span
+class="cmtt-10">\glsxtrusefield{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field-label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10839--><p class="noindent" >
+This works in the same way as commands like <span
+class="cmtt-10">\glsentrytext </span>but the field label is
+specified in the first argument. Note that the &#x27E8;<span
+class="cmti-10">field-label</span>&#x27E9; corresponds to the internal
+field tag, which isn&#8217;t always the same as the key name. See Table&#x00A0;4.1 of the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-46043"></a>
+manual. No error occurs if the entry or field haven&#8217;t been defined. This command is
+
+
+
+not robust.
+</p><!--l. 10847--><p class="indent" > There is also a version that converts the first letter to uppercase (analogous to
+<span
+class="cmtt-10">\Glsentrytext</span>):
+</p><!--l. 10849--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsxtrusefield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46044"></a> <span
+class="cmtt-10">\Glsxtrusefield{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field-label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10851--><p class="noindent" >
+and, as from v1.37, a command that converts the entire value to upper case:
+</p><!--l. 10853--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GLSxtrusefield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46045"></a> <span
+class="cmtt-10">\GLSxtrusefield{</span>&#x27E8;<span
+class="cmitt-10">entry-label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field-label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10855--><p class="noindent" >
+</p><!--l. 10857--><p class="indent" > If you want to use a field to store a list that can be used as an <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-46046"></a> internal
+list, you can use the following command that adds an item to the field using
+<span
+class="cmss-10">etoolbox</span><a
+ id="dx1-46047"></a>&#8217;s <span
+class="cmtt-10">\listcsadd</span>:
+</p><!--l. 10861--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfieldlistadd</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46048"></a> <span
+class="cmtt-10">\glsxtrfieldlistadd{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">item</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10863--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label, &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; is the entry&#8217;s field and &#x27E8;<span
+class="cmti-10">item</span>&#x27E9; is the item to
+add. There are analogous commands that use <span
+class="cmtt-10">\listgadd</span>, <span
+class="cmtt-10">\listeadd </span>and
+<span
+class="cmtt-10">\listxadd</span>:
+</p><!--l. 10868--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfieldlistgadd</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46049"></a> <span
+class="cmtt-10">\glsxtrfieldlistgadd{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">item</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10870--><p class="noindent" >
+</p><!--l. 10871--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfieldlisteadd</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46050"></a> <span
+class="cmtt-10">\glsxtrfieldlisteadd{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">item</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10873--><p class="noindent" >
+</p><!--l. 10874--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfieldlistxadd</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46051"></a> <span
+class="cmtt-10">\glsxtrfieldlistxadd{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">item</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10876--><p class="noindent" >
+You can then iterate over the list using:
+</p><!--l. 10878--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfielddolistloop</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46052"></a> <span
+class="cmtt-10">\glsxtrfielddolistloop{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10880--><p class="noindent" >
+or
+</p><!--l. 10882--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfieldforlistloop</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46053"></a> <span
+class="cmtt-10">\glsxtrfieldforlistloop{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">handler</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10884--><p class="noindent" >
+that internally use <span
+class="cmtt-10">\dolistcsloop </span>and <span
+class="cmtt-10">\forlistloop</span>, respectively.
+</p><!--l. 10888--><p class="indent" > There are also commands that use <span
+class="cmtt-10">\ifinlistcs</span>:
+</p><!--l. 10889--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfieldifinlist</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46054"></a> <span
+class="cmtt-10">\glsxtrfieldifinlist{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">item</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10891--><p class="noindent" >
+and <span
+class="cmtt-10">\xifinlistcs</span>
+</p><!--l. 10893--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrfieldxifinlist</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46055"></a> <span
+class="cmtt-10">\glsxtrfieldxifinlist{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">item</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 10895--><p class="noindent" >
+</p><!--l. 10897--><p class="indent" > See the <span
+class="cmss-10">etoolbox</span><a
+ id="dx1-46056"></a>&#8217;s user manual for further details of these commands, in particular
+the limitations of <span
+class="cmtt-10">\ifinlist</span>.
+</p><!--l. 10901--><p class="indent" > If the field has a comma-separated list value instead, you can iterate over it
+using:
+</p><!--l. 10903--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrforcsvfield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46057"></a> <span
+class="cmtt-10">\glsxtrforcsvfield{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">handler</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 10905--><p class="noindent" >
+where again &#x27E8;<span
+class="cmti-10">handler</span>&#x27E9; is a control sequence that takes a single argument. Unlike the
+<span
+class="cmss-10">etoolbox</span><a
+ id="dx1-46058"></a> loops, this doesn&#8217;t ignore empty elements nor does it discard leading /
+trailing spaces. Internally it uses <span
+class="cmtt-10">\@for </span>(modified by <span
+class="cmss-10">xfor</span><a
+ id="dx1-46059"></a> which is automatically
+loaded by <span
+class="cmss-10">glossaries</span><a
+ id="dx1-46060"></a>). The <span
+class="cmss-10">xfor</span><a
+ id="dx1-46061"></a> package modifies the behaviour of <span
+class="cmtt-10">\@for </span>to allow the
+loop to be broken prematurely using <span
+class="cmtt-10">\@endfortrue</span>. The <span
+class="cmtt-10">\glsxtrforcsvfield</span>
+command locally defines a user level command:
+</p><!--l. 10915--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrendfor</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46062"></a> <span
+class="cmtt-10">\glsxtrendfor </span></div><hr>
+</p><!--l. 10917--><p class="noindent" >
+which is just a synonym for <span
+class="cmtt-10">\@endfortrue</span>.
+</p><!--l. 10920--><p class="indent" > The loop is performed within the true part of <span
+class="cmtt-10">\glsxtrifhasfield </span>so scoping is
+automatically applied.
+</p><!--l. 10923--><p class="indent" > As from version 1.32, if the field given by
+</p><!--l. 10924--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrForeignTextField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46063"></a> <span
+class="cmtt-10">\GlsXtrForeignTextField </span></div><hr>
+</p><!--l. 10926--><p class="noindent" >
+(which defaults to <span
+class="cmtt-10">userii</span>) contains a locale tag, then
+</p><!--l. 10928--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrForeignText</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46064"></a> <span
+class="cmtt-10">\GlsXtrForeignText{</span>&#x27E8;<span
+class="cmitt-10">entry label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10930--><p class="noindent" >
+can be used to encapsulate &#x27E8;<span
+class="cmti-10">text</span>&#x27E9; in <span
+class="cmtt-10">\foreignlanguage{</span>&#x27E8;<span
+class="cmti-10">dialect</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmti-10">text</span>&#x27E9;<span
+class="cmtt-10">} </span>where &#x27E8;<span
+class="cmti-10">dialect</span>&#x27E9; is
+obtained from the locale tag through <span
+class="cmss-10">tracklang</span><a
+ id="dx1-46065"></a>&#8217;s <span
+class="cmtt-10">\GetTrackedDialectFromLanguageTag</span><a
+ id="dx1-46066"></a>
+command. You need at least <span
+class="cmss-10">tracklang</span><a
+ id="dx1-46067"></a> v1.3.6 for this to work properly. The &#x27E8;<span
+class="cmti-10">dialect</span>&#x27E9;
+must be one that&#8217;s tracked (which typically means that <span
+class="cmss-10">babel</span><a
+ id="dx1-46068"></a> or <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-46069"></a> has been
+loaded with the appropriate setting for that language). If <span
+class="cmtt-10">\foreignlanguage </span>hasn&#8217;t
+been defined, this just does &#x27E8;<span
+class="cmti-10">text</span>&#x27E9;. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-258">
+\documentclass{article}
+&#x00A0;<br />\usepackage[main=british,brazilian,ngerman]{babel}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\setabbreviationstyle{long-short-user}
+&#x00A0;<br />\newabbreviation
+&#x00A0;<br />&#x00A0;[user1={Associa\c{c}\~ao&#x00A0;Brasileria&#x00A0;de&#x00A0;Normas&#x00A0;T\'ecnicas},
+&#x00A0;<br />&#x00A0;&#x00A0;user2=&#x00A0;{pt-BR}
+&#x00A0;<br />&#x00A0;]
+&#x00A0;<br />&#x00A0;{abnt}{ABNT}{Brazilian&#x00A0;National&#x00A0;Standards&#x00A0;Organization}
+&#x00A0;<br />\newabbreviation
+&#x00A0;<br />&#x00A0;[user1={Deutsches&#x00A0;Institut&#x00A0;f\"ur&#x00A0;Normung&#x00A0;e.V.},
+&#x00A0;<br />&#x00A0;&#x00A0;user2={de-DE-1996}]
+&#x00A0;<br />&#x00A0;{din}{DIN}{German&#x00A0;Institute&#x00A0;for&#x00A0;Standardization}
+&#x00A0;<br />\renewcommand*{\glsxtruserparen}[2]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrfullsep{#2}%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrparen
+&#x00A0;<br />&#x00A0;&#x00A0;{#1%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;\ifglshasfield{\glsxtruserfield}{#2}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;{,&#x00A0;\emph{\GlsXtrForeignText{#2}{\glscurrentfieldvalue}}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;{}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{abnt},&#x00A0;\gls{din}.
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 10972--><p class="nopar" >
+</p><!--l. 10975--><p class="indent" > When using the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-46070"></a> option, in addition to recording the usual location, you can
+also record the current value of another counter at the same time using the
+preamble-only command:
+</p><!--l. 10978--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrRecordCounter</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-46071"></a> <span
+class="cmtt-10">\GlsXtrRecordCounter{</span>&#x27E8;<span
+class="cmitt-10">counter name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 10980--><p class="noindent" >
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-259">
+\usepackage[record]{glossaries-extra}
+&#x00A0;<br />\GlsXtrRecordCounter{section}
+</div>
+<!--l. 10985--><p class="nopar" > Each time an entry is referenced with commands like <span
+class="cmtt-10">\gls </span>or <span
+class="cmtt-10">\glstext</span>,
+the <span
+class="cmtt-10">.aux </span>file will not only contain the <span
+class="cmtt-10">\glsxtr@record </span>command but also
+</p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsxtr@counterrecord{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">section</span><span
+class="cmsy-10">}</span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> where &#x27E8;<span
+class="cmti-10">n</span>&#x27E9; is the current expansion of <span
+class="cmtt-10">\thesection </span>and &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s
+label. On the next run, when the <span
+class="cmtt-10">.aux </span>file is run, this command will do
+<div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glsxtrfieldlistgadd{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">record.</span>&#x27E8;<span
+class="cmitt-10">counter</span>&#x27E9;<span
+class="cmsy-10">}</span><span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">n</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> In the above example, if <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gls{bird}</span></span></span> is used in section&#x00A0;1.2 this would be
+
+
+
+ <div class="verbatim" id="verbatim-260">
+\glsxtrfieldlistgadd{bird}{record.section}{1.2}
+</div>
+<!--l. 11002--><p class="nopar" > Note that there&#8217;s no key corresponding to this new <span
+class="cmtt-10">record.section </span>field, but its
+value can be accessed with <span
+class="cmtt-10">\glsxtrfielduse </span>or the list can be iterated over with
+<span
+class="cmtt-10">\glsxtrfielddolistloop </span>etc.
+</p><!--l. 11008--><p class="noindent" >
+</p>
+<!--l. 11008--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10.2 </span> <a
+ id="sec:printunsrt"></a>Display All Entries Without Sorting or Indexing</h3>
+<!--l. 11011--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47001"></a> <span
+class="cmtt-10">\printunsrtglossary[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">] </span></div><hr>
+</p><!--l. 11013--><p class="noindent" >
+This behaves like <span
+class="cmtt-10">\printnoidxglossary </span>but never sorts the entries and
+always lists all the defined entries for the given glossary (and doesn&#8217;t require
+<span
+class="cmtt-10">\makenoidxglossaries</span>). If you want to use one of the <span
+class="cmss-10">tabular</span><a
+ id="dx1-47002"></a><a
+ id="dx1-47003"></a>-like styles with
+<span
+class="cmtt-10">\printunsrtglossary</span>, make sure you load <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-47004"></a> which modifies
+the definition of <span
+class="cmtt-10">\glsgroupskip </span>to avoid the &#8220;Incomplete <span
+class="cmtt-10">\iftrue</span>&#8221; error that may
+otherwise occur.
+</p><!--l. 11023--><p class="noindent" >There&#8217;s also a starred form
+</p><!--l. 11024--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossary*</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47005"></a> <span
+class="cmtt-10">\printunsrtglossary*[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11026--><p class="noindent" >
+which is equivalent to </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\begingroup</span>
+<br /><span
+class="cmtt-10">&#x00A0;</span>&#x27E8;<span
+class="cmitt-10">code</span>&#x27E9;<span
+class="cmtt-10">\printunsrtglossary[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]%</span>
+<br /><span
+class="cmtt-10">\endgroup</span>
+</div>
+</div> Note that unlike <span
+class="cmtt-10">\glossarypreamble</span>, the supplied &#x27E8;<span
+class="cmti-10">code</span>&#x27E9; is done before the glossary
+header.
+<!--l. 11036--><p class="indent" > This means you now have the option to simply list all entries on the first
+<span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run without the need for a post-processor, however there will be no <a
+ id="dx1-47006"></a><a
+href="#glo:numberlist">number
+list</a> in this case, as that has to be set by a post-processor such as <a
+ id="dx1-47007"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> (see <a
+href="#sec:bib2gls"><span
+class="cmsy-10">&sect;</span>9
+</a><a
+href="#sec:bib2gls"><span
+class="cmtt-10">bib2gls</span>: Managing Reference Databases<!--tex4ht:ref: sec:bib2gls --></a>).
+</p><!--l. 11042--><p class="indent" > <div class="important" title="Important Note"> No attempt is made to gather hierarchical elements. If child entries aren&#8217;t defined
+immediately after their parent entry, they won&#8217;t be together in the glossary when
+using <span
+class="cmtt-10">\printunsrtglossary</span>. </div>
+</p><!--l. 11047--><p class="noindent" >
+
+
+
+</p><!--l. 11049--><p class="indent" > There&#8217;s a difference in behaviour depending on whether or not the <span
+class="cmss-10">group</span><a
+ id="dx1-47008"></a> key is
+defined. If not defined (default), the group label will be formed from the first
+letter of the <span
+class="cmss-10">name</span><a
+ id="dx1-47009"></a> field. The corresponding group title will be obtained as
+discussed in <a
+href="#sec:glosstylemods"><span
+class="cmsy-10">&sect;</span>2.12 </a><a
+href="#sec:glosstylemods">Glossary Style Modifications<!--tex4ht:ref: sec:glosstylemods --></a>. This can lead to an odd effect if
+you are using a style that separates letter groups when the ordering isn&#8217;t
+alphabetical.
+</p><!--l. 11057--><p class="indent" > If the <span
+class="cmss-10">group</span><a
+ id="dx1-47010"></a> key is defined (which it is with the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-47011"></a> option) then the group label
+will be obtained from the value of that field. If the field is empty, <span
+class="cmti-10">no grouping is</span>
+<span
+class="cmti-10">performed</span>, even if the style supports it. (That is, there won&#8217;t be a header or a vertical
+separation.) If the <span
+class="cmss-10">group</span><a
+ id="dx1-47012"></a> field is non-empty, then the corresponding title is obtained
+as described earlier.
+</p><!--l. 11065--><p class="indent" > If you want to use a different field, you can redefine
+</p><!--l. 11066--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrgroupfield</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47013"></a> <span
+class="cmtt-10">\glsxtrgroupfield </span></div><hr>
+</p><!--l. 11068--><p class="noindent" >
+to the relevant internal field label, but the <span
+class="cmss-10">group</span><a
+ id="dx1-47014"></a> <span
+class="cmti-10">key </span>must still be defined (through
+the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-47015"></a> option or with commands like <span
+class="cmtt-10">\glsaddstoragekey</span>) to ensure that
+<span
+class="cmtt-10">\printunsrtglossary </span>uses <span
+class="cmtt-10">\glsxtrgroupfield</span>. (This method is used by <a
+ id="dx1-47016"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>
+for secondary entries, which have the group label stored in the <span
+class="cmtt-10">secondarygroup</span>
+internal field.)
+</p><!--l. 11076--><p class="indent" > If you have any entries with the <span
+class="cmss-10">see</span><a
+ id="dx1-47017"></a> key set, you will need the <span
+class="cmss-10">glossaries</span><a
+ id="dx1-47018"></a> package
+option <a
+href="#styopt.seenoindex"><span
+class="cmss-10">seenoindex</span></a><span
+class="cmss-10">=ignore</span><a
+ id="dx1-47019"></a> or <a
+href="#styopt.seenoindex"><span
+class="cmss-10">seenoindex</span></a><span
+class="cmss-10">=warn</span><a
+ id="dx1-47020"></a> to prevent an error occurring from the
+automated <span
+class="cmtt-10">\glssee </span>normally triggered by this key. The <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-47021"></a> package option
+will automatically deal with this.
+</p><!--l. 11083--><p class="indent" > For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-261">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\newglossaryentry{zebra}{name={zebra},description={stripy&#x00A0;animal}}
+&#x00A0;<br />\newglossaryentry{ant}{name={ant},description={an&#x00A0;insect}}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />\gls{ant}&#x00A0;and&#x00A0;\gls{zebra}
+&#x00A0;<br />\printunsrtglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 11097--><p class="nopar" > In the above, zebra will be listed before ant as it was defined first.
+</p><!--l. 11101--><p class="indent" > If you allow document definitions with the <a
+href="#styopt.docdefs"><span
+class="cmss-10">docdefs</span></a><a
+ id="dx1-47022"></a> option, the document will
+require a second <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;run if the entries are defined after <span
+class="cmtt-10">\printunsrtglossary</span>.
+</p><!--l. 11105--><p class="indent" > The optional argument is as for <span
+class="cmtt-10">\printnoidxglossary </span>(except for the <span
+class="cmss-10">sort</span><a
+ id="dx1-47023"></a> key,
+which isn&#8217;t available).
+</p><!--l. 11108--><p class="indent" > All glossaries may be displayed in the order of their definition using:
+</p><!--l. 11110--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossaries</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47024"></a> <span
+class="cmtt-10">\printunsrtglossaries </span></div><hr>
+</p><!--l. 11112--><p class="noindent" >
+which is analogous to <span
+class="cmtt-10">\printnoidxglossaries</span>. This just iterates over all defined
+glossaries (that aren&#8217;t on the ignored list) and does <span
+class="cmtt-10">\printunsrtglossary</span>[type=&#x27E8;<span
+class="cmti-10">type</span>&#x27E9;].
+</p><!--l. 11117--><p class="indent" > To avoid complications caused by <span
+class="cmss-10">tabular</span><a
+ id="dx1-47025"></a><a
+ id="dx1-47026"></a>-like glossary styles, <span
+class="cmtt-10">\printunsrtglossary</span>
+iterates over all entries in the selected glossary and appends the appropriate code to
+an internal command. Once the construction of this command is complete, then it&#8217;s
+performed to display the glossary. This puts the loop outside the style code. For
+convenience, there&#8217;s a hook used within the loop:
+</p><!--l. 11124--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossaryentryprocesshook</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47027"></a> <span
+class="cmtt-10">\printunsrtglossaryentryprocesshook</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11126--><p class="noindent" >
+This hook should not display any content, but may be used to perform calculations.
+For example, to calculate widths. Within this hook you can use:
+</p><!--l. 11130--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossaryskipentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47028"></a> <span
+class="cmtt-10">\printunsrtglossaryskipentry </span></div><hr>
+</p><!--l. 11132--><p class="noindent" >
+to skip the current entry. This will prevent the entry from being added to the internal
+command.
+</p><!--l. 11136--><p class="indent" > There&#8217;s another hook immediately before the internal command containing the
+glossary code is performed:
+</p><!--l. 11138--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossarypredoglossary</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47029"></a> <span
+class="cmtt-10">\printunsrtglossarypredoglossary</span>
+</div><hr>
+</p><!--l. 11140--><p class="noindent" >
+
+
+
+</p><!--l. 11142--><p class="indent" > The internal command uses
+</p><!--l. 11143--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossaryhandler</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47030"></a> <span
+class="cmtt-10">\printunsrtglossaryhandler{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 11145--><p class="noindent" >
+to display each item in the list, where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the current label.
+</p><!--l. 11148--><p class="indent" > By default the handler just does
+</p><!--l. 11149--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrunsrtdo</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47031"></a> <span
+class="cmtt-10">\glsxtrunsrtdo{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11151--><p class="noindent" >
+which determines whether to use <span
+class="cmtt-10">\glossentry </span>or <span
+class="cmtt-10">\subglossentry </span>and checks the
+<span
+class="cmss-10">location</span><a
+ id="dx1-47032"></a> and <span
+class="cmss-10">loclist</span><a
+ id="dx1-47033"></a> fields for the <a
+ id="dx1-47034"></a><a
+href="#glo:numberlist">number list</a>. If you want to use a different field to be
+used instead of <span
+class="cmss-10">location</span><a
+ id="dx1-47035"></a> then redefine:
+</p><!--l. 11157--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrLocationField</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47036"></a> <span
+class="cmtt-10">\GlsXtrLocationField </span></div><hr>
+</p><!--l. 11159--><p class="noindent" >
+to the internal name of the desired field. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-262">
+\renewcommand{\GlsXtrLocationField}{primarylocation}
+</div>
+<!--l. 11163--><p class="nopar" >
+</p><!--l. 11164--><p class="indent" > <div class="important" title="Important Note"> Note that if the given location field is undefined or unset, the handler will
+fallback on the <span
+class="cmss-10">loclist</span><a
+ id="dx1-47037"></a> field. </div>
+</p><!--l. 11167--><p class="noindent" >
+You can instruct <a
+ id="dx1-47038"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a> to omit setting the <span
+class="cmss-10">loclist</span><a
+ id="dx1-47039"></a> field with the resource option
+<span
+class="cmtt-10">--save-loclist=false </span>to prevent it from being used as a fallback.
+</p><!--l. 11172--><p class="indent" > You can redefine the handler if required. For example, you may want to filter
+entries according to the category label. You can test if a label is contained in a
+comma-separated list of labels using:
+</p><!--l. 11176--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtriflabelinlist</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47040"></a> <span
+class="cmtt-10">\glsxtriflabelinlist{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label list</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">true</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmitt-10">false</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11178--><p class="noindent" >
+The &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; and &#x27E8;<span
+class="cmti-10">label list</span>&#x27E9; will be fully expanded.
+</p><!--l. 11181--><p class="indent" > <div class="important" title="Important Note"> If you redefine the handler to exclude entries, you may end up with an empty
+glossary. This could cause a problem for the list-based styles. </div>
+</p><!--l. 11185--><p class="noindent" >
+</p><!--l. 11187--><p class="indent" > For example, if the preamble includes:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-263">
+\usepackage[record,style=index]{glossaries-extra}
+&#x00A0;<br />\GlsXtrRecordCounter{section}
+</div>
+<!--l. 11191--><p class="nopar" > then you can print the glossary but first redefine the handler to only select entries
+that include the current section number in the <span
+class="cmtt-10">record.section </span>field:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-264">
+\renewcommand{\printunsrtglossaryhandler}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+&#x00A0;<br />&#x00A0;&#x00A0;{\glsxtrunsrtdo{#1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;{}%
+&#x00A0;<br />}
+</div>
+<!--l. 11201--><p class="nopar" >
+</p><!--l. 11203--><p class="indent" > Alternatively you can use the starred form of <span
+class="cmtt-10">\printunsrtglossary </span>which will
+localise the change:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-265">
+\printunsrtglossary*{%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand{\printunsrtglossaryhandler}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\glsxtrunsrtdo{#1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+</div>
+<!--l. 11214--><p class="nopar" >
+</p><!--l. 11216--><p class="indent" > If you are using the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-47041"></a> package and want to display the same glossary more
+than once, you can also add a temporary redefinition of <span
+class="cmtt-10">\glolinkprefix </span>to avoid
+duplicate hypertarget names. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-266">
+\printunsrtglossary*{%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand{\printunsrtglossaryhandler}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\glsxtrunsrtdo{#1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifcsundef{theHsection}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+</div>
+<!--l. 11236--><p class="nopar" > Note that this will cause a problem if your descriptions contain commands like <span
+class="cmtt-10">\gls</span>
+that need to link an entry that doesn&#8217;t appear in the summary. In this case, it&#8217;s a
+better approach to use:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-267">
+\printunsrtglossary*{%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand{\printunsrtglossaryhandler}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\glsxtrunsrtdo{#1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifcsundef{theHsection}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\setkeys{printgloss}{targetnameprefix={record.\csuse{thesection}.}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\setkeys{printgloss}{targetnameprefix={record.\csuse{theHsection}.}}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}
+</div>
+<!--l. 11256--><p class="nopar" >
+</p><!--l. 11258--><p class="indent" > If it&#8217;s a short summary at the start of a section, you might also want to suppress
+the glossary header and add some vertical space afterwards:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-268">
+\printunsrtglossary*{%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand{\printunsrtglossaryhandler}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{\glsxtrunsrtdo{#1}}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifcsundef{theHsection}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glossarysection}[2][]{}%
+&#x00A0;<br />&#x00A0;&#x00A0;\appto\glossarypostamble{\glspar\medskip\glspar}%
+&#x00A0;<br />}
+</div>
+<!--l. 11278--><p class="nopar" >
+</p><!--l. 11280--><p class="indent" > There&#8217;s a shortcut command that essentially does this:
+</p><!--l. 11281--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossaryunit</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47042"></a> <span
+class="cmtt-10">\printunsrtglossaryunit[</span>&#x27E8;<span
+class="cmitt-10">options</span>&#x27E9;<span
+class="cmtt-10">]{</span>&#x27E8;<span
+class="cmitt-10">counter</span>
+<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11283--><p class="noindent" >
+The above example can simply be replaced with:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-269">
+\printunsrtglossaryunit{section}
+</div>
+<!--l. 11287--><p class="nopar" >
+</p><!--l. 11289--><p class="indent" > This shortcut command is actually defined to use <span
+class="cmtt-10">\printunsrtglossary*</span>
+with
+</p><!--l. 11290--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\printunsrtglossaryunitsetup</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-47043"></a> <span
+class="cmtt-10">\printunsrtglossaryunitsetup{</span>&#x27E8;<span
+class="cmitt-10">counter</span>
+<span
+class="cmitt-10">name</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11292--><p class="noindent" >
+so if you want to just make some minor modifications you can do
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-270">
+\printunsrtglossary*{\printunsrtglossaryunitsetup{section}%
+&#x00A0;<br />&#x00A0;&#x00A0;\renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}%
+&#x00A0;<br />}
+</div>
+<!--l. 11299--><p class="nopar" > which will start the list with a subsection header with the title &#8220;Summary&#8221;
+(overriding the glossary&#8217;s title).
+</p><!--l. 11303--><p class="indent" > Note that this shortcut command is only available with the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-47044"></a> (or
+<a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=alsoindex</span><a
+ id="dx1-47045"></a>) package option.
+</p><!--l. 11306--><p class="indent" > This temporary change in the hypertarget prefix means you need to explicitly use
+<span
+class="cmtt-10">\hyperlink </span>to create a link to it as commands like <span
+class="cmtt-10">\gls </span>will try to link to the target
+created with the default definition of <span
+class="cmtt-10">\gloslinkprefix</span>. This isn&#8217;t a problem if you
+want a primary glossary of all terms produced using just <span
+class="cmtt-10">\printunsrtglossary </span>(in
+the front or back matter) which can be the target for all glossary references and then
+just use <span
+class="cmtt-10">\printunsrtglossaryunit </span>for a quick summary at the start of a section
+etc.
+</p><!--l. 11316--><p class="noindent" >
+</p>
+<!--l. 11316--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10.3 </span> <a
+ id="sec:glossentry"></a>Standalone Entry Items</h3>
+<!--l. 11319--><p class="noindent" >It may be that you don&#8217;t want a list but would rather display entry details
+throughout the document. You can simply do <span
+class="cmtt-10">\glsentryname </span>followed by
+<span
+class="cmtt-10">\glsentrydesc</span>. (Remember that if you don&#8217;t want a sorted list, use <a
+href="#styopt.sort"><span
+class="cmss-10">sort</span></a><span
+class="cmss-10">=none</span><a
+ id="dx1-48001"></a> to
+skip the construction of the <span
+class="cmss-10">sort</span><a
+ id="dx1-48002"></a> field.) For example, in the preamble provide a
+custom command:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-271">
+\newcommand{\displayterm}[1]{%
+&#x00A0;<br />&#x00A0;\par\medskip\par\noindent
+&#x00A0;<br />&#x00A0;Definition:&#x00A0;\glsentryname{#1}.\par
+&#x00A0;<br />&#x00A0;\glsentrydesc{#1}
+&#x00A0;<br />&#x00A0;\par\medskip
+&#x00A0;<br />}
+</div>
+<!--l. 11333--><p class="nopar" > define your entries
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-272">
+\newglossaryentry{function}{name={function},
+&#x00A0;<br />&#x00A0;&#x00A0;description={a&#x00A0;relation&#x00A0;or&#x00A0;expression&#x00A0;involving&#x00A0;variables}
+&#x00A0;<br />}
+</div>
+<!--l. 11339--><p class="nopar" > and then later in the text:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-273">
+\displayterm{function}
+</div>
+<!--l. 11343--><p class="nopar" >
+</p><!--l. 11345--><p class="indent" > However, if may be that you want to use <span
+class="cmss-10">hyperref</span><a
+ id="dx1-48003"></a> and have commands like <span
+class="cmtt-10">\gls</span>
+link back to the place where the term is described. Instead of using <span
+class="cmtt-10">\glsentryname</span>
+use
+</p><!--l. 11349--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrglossentry</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-48004"></a> <span
+class="cmtt-10">\glsxtrglossentry{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11351--><p class="noindent" >
+where &#x27E8;<span
+class="cmti-10">label</span>&#x27E9; is the entry&#8217;s label.
+</p><!--l. 11354--><p class="indent" > This is designed to behave much like the way the name is displayed in the
+glossary. It performs the following: </p>
+ <ul class="itemize1">
+ <li class="itemize">Defines <span
+class="cmtt-10">\glscurrententrylabel </span>to the entry&#8217;s label. This is usually
+ done at the start of the glossary style commands <span
+class="cmtt-10">\glossentry </span>and
+ <span
+class="cmtt-10">\subglossentry </span>and may be used by hooks, such as the post-name
+ hooks. Here the definition is localised so that it&#8217;s only available for use in
+ <span
+class="cmtt-10">\glossentryname</span>.
+ </li>
+ <li class="itemize">Defines <span
+class="cmtt-10">\currentglossary </span>to the entry&#8217;s glossary type. This is usually done at
+ the start of commands like <span
+class="cmtt-10">\printglossary </span>and may be used by style hooks.
+ Here the definition is localised so that it&#8217;s only available for use in
+ <span
+class="cmtt-10">\glsentryitem </span>and <span
+class="cmtt-10">\glssubentryitem</span>. The value is obtained by fully
+ expanding:
+ <!--l. 11369--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrStandaloneGlossaryType</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-48005"></a> <span
+class="cmtt-10">\GlsXtrStandaloneGlossaryType</span>
+ </div><hr>
+ </p><!--l. 11371--><p class="noindent" >
+ which defaults to the value of the <span
+class="cmss-10">type</span><a
+ id="dx1-48006"></a> field for the current entry.
+ </p></li>
+ <li class="itemize">Increments and display the entry counters if the <a
+href="#styopt.entrycounter"><span
+class="cmss-10">entrycounter</span></a><a
+ id="dx1-48007"></a> or <a
+href="#styopt.subentrycounter"><span
+class="cmss-10">subentrycounter</span></a><a
+ id="dx1-48008"></a>
+ package options are set. If the entry doesn&#8217;t have a parent, then this
+ does
+ <ul class="itemize2">
+ <li class="itemize"><span
+class="cmtt-10">\glsentryitem{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span></li></ul>
+ <!--l. 11382--><p class="noindent" >otherwise it does (as from v1.31) </p>
+ <ul class="itemize2">
+ <li class="itemize"><span
+class="cmtt-10">\GlsXtrStandaloneSubEntryItem</span><a
+ id="dx1-48009"></a>
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>which defaults to <span
+class="cmtt-10">\glssubentryitem{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span>if the entry has
+ a parent but not a grandparent.</li></ul>
+
+
+
+ <!--l. 11388--><p class="noindent" >This reflects the behaviour of the predefined hierarchical styles. A bug in
+ pre-version&#x00A0;1.31 used <span
+class="cmtt-10">\glsentryitem </span>for all child levels, which doesn&#8217;t match
+ the hierarchical glossary styles. If you want to restore this behaviour, just
+ do:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-274">
+ \renewcommand*{\GlsXtrStandaloneSubEntryItem}[1]{\glssubentryitem{#1}}
+</div>
+ <!--l. 11394--><p class="nopar" >
+ </p></li>
+ <li class="itemize">Sets the hyper-target if supported (using <span
+class="cmtt-10">\glstarget</span>) and displays the entry
+ name using:
+ <!--l. 11398--><p class="noindent" ><hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrStandaloneEntryName</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-48010"></a> <span
+class="cmtt-10">\GlsXtrStandaloneEntryName{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+ </div><hr>
+ </p><!--l. 11400--><p class="noindent" >
+ which uses <span
+class="cmtt-10">\glstarget{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">{</span><span
+class="cmtt-10">\glossentryname{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span><span
+class="cmsy-10">} </span>by default.
+ Remember that <span
+class="cmtt-10">\glossentryname </span>uses <span
+class="cmtt-10">\glsnamefont </span>or picks up the style
+ from category attributes such as <a
+href="#catattr.glossnamefont"><span
+class="cmss-10">glossnamefont</span></a><a
+ id="dx1-48011"></a>.</p></li></ul>
+<!--l. 11408--><p class="noindent" >If you have used <span
+class="cmtt-10">\nopostdesc</span><a
+ id="dx1-48012"></a> or <span
+class="cmtt-10">\glsxtrnopostpunc</span><a
+ id="dx1-48013"></a> in any of your description fields,
+you can use
+</p><!--l. 11410--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtractivatenopost</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-48014"></a> <span
+class="cmtt-10">\glsxtractivatenopost </span></div><hr>
+</p><!--l. 11412--><p class="noindent" >
+to make these commands behave as they normally do within a glossary. This needs to
+be placed before </p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\glossentrydesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}\glspostdescription</span>
+</div>
+</div> and scoped. Note that <span
+class="cmtt-10">\glsnonextpages </span>and <span
+class="cmtt-10">\glsnextpages </span>have no effect outside
+of the glossary and are not intended for use in a standalone context.
+<!--l. 11422--><p class="indent" > It&#8217;s also possible to select a different field (rather than using <span
+class="cmss-10">name</span><a
+ id="dx1-48015"></a>):
+</p><!--l. 11424--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrglossentryother</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-48016"></a> <span
+class="cmtt-10">\glsxtrglossentryother{</span>&#x27E8;<span
+class="cmitt-10">header</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 11426--><p class="noindent" >
+The &#x27E8;<span
+class="cmti-10">field</span>&#x27E9; must be given using its internal field label which may not be the same as
+the key used to set the field. See the key to field mappings table in the <span
+class="cmss-10">glossaries </span>user
+manual. The &#x27E8;<span
+class="cmti-10">header</span>&#x27E9; argument is the code to pass to the third argument of
+<span
+class="cmtt-10">\glsxtrtitleorpdforheading</span>. It may be left empty in which case the default is
+determined as follows: </p>
+ <ul class="itemize1">
+ <li class="itemize">If <span
+class="cmtt-10">\glsxtrhead</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9; is defined, then &#x27E8;<span
+class="cmti-10">header</span>&#x27E9; is <span
+class="cmtt-10">\glsxtrhead</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;
+ <span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.
+
+
+
+ </li>
+ <li class="itemize">Otherwise &#x27E8;<span
+class="cmti-10">header</span>&#x27E9; is simply the field value.</li></ul>
+<!--l. 11438--><p class="noindent" >The <span
+class="cmtt-10">\glsxtrglossentryother </span>command internally uses
+</p><!--l. 11439--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrStandaloneEntryOther</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-48017"></a> <span
+class="cmtt-10">\GlsXtrStandaloneEntryOther{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 11441--><p class="noindent" >
+instead of <span
+class="cmtt-10">\GlsXtrStandaloneEntryName</span>, which uses <span
+class="cmtt-10">\glossentrynameother{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+<span
+class="cmtt-10">{</span>&#x27E8;<span
+class="cmti-10">field</span>&#x27E9;<span
+class="cmtt-10">} </span>instead of <span
+class="cmtt-10">\glossentryname{</span>&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>.
+</p><!--l. 11446--><p class="indent" > If you have loaded the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-48018"></a> package (through the <a
+href="#styopt.accsupp"><span
+class="cmss-10">accsupp</span></a><a
+ id="dx1-48019"></a> option)
+then accessibility support will be provided if there&#8217;s a corresponding command
+</p><div class="alltt">
+<div class="obeylines-v">
+<span
+class="cmtt-10">\gls</span>&#x27E8;<span
+class="cmitt-10">field</span>&#x27E9;<span
+class="cmtt-10">accessdisplay{</span>&#x27E8;<span
+class="cmitt-10">text</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+</div> (for example, <span
+class="cmtt-10">\glssymbolaccessdisplay</span>).
+<!--l. 11455--><p class="indent" > This means that my custom command can be changed to:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-275">
+\newcommand{\displayterm}[1]{%
+&#x00A0;<br />&#x00A0;\par\medskip\par\noindent
+&#x00A0;<br />&#x00A0;Definition:&#x00A0;\glsxtrglossentry{#1}.\par
+&#x00A0;<br />&#x00A0;\glsentrydesc{#1}
+&#x00A0;<br />&#x00A0;\par\medskip
+&#x00A0;<br />}
+</div>
+<!--l. 11463--><p class="nopar" > If I want numbered definitions, then I can use the package options <span
+class="cmss-10">entrycounter</span><a
+ id="dx1-48020"></a> or
+<span
+class="cmss-10">subentrycounter</span><a
+ id="dx1-48021"></a> and remove the colon:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-276">
+\newcommand{\displayterm}[1]{%
+&#x00A0;<br />&#x00A0;\par\medskip\par\noindent
+&#x00A0;<br />&#x00A0;Definition&#x00A0;\glsxtrglossentry{#1}.\par
+&#x00A0;<br />&#x00A0;\glsentrydesc{#1}
+&#x00A0;<br />&#x00A0;\par\medskip
+&#x00A0;<br />}
+</div>
+<!--l. 11474--><p class="nopar" > The counter label uses a dot after the number by default but this can be changed to
+a colon:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-277">
+\renewcommand*{\glsentrycounterlabel}{\theglossaryentry:\space}
+</div>
+<!--l. 11479--><p class="nopar" > It&#8217;s now possible to not only use <span
+class="cmtt-10">\gls </span>to link back to the definition but also use
+<span
+class="cmtt-10">\glsrefentry </span>to reference the counter and <span
+class="cmtt-10">\glsxtrpageref </span>to reference the page
+number.
+</p><!--l. 11484--><p class="indent" > If I want the description to behave more like it does in a glossary in need to make
+the following modification:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-278">
+\newcommand{\displayterm}[1]{%
+&#x00A0;<br />&#x00A0;\par\medskip\par\noindent
+&#x00A0;<br />&#x00A0;Definition&#x00A0;\glsxtrglossentry{#1}.\par
+&#x00A0;<br />&#x00A0;\begingroup
+&#x00A0;<br />&#x00A0;&#x00A0;\glsxtractivatenopost
+&#x00A0;<br />&#x00A0;&#x00A0;\glossentrydesc{#1}\glspostdescription
+&#x00A0;<br />&#x00A0;\endgroup
+&#x00A0;<br />&#x00A0;\par\medskip
+&#x00A0;<br />}
+</div>
+<!--l. 11496--><p class="nopar" > (Note the grouping to localise <span
+class="cmtt-10">\glsxtractivatenopost</span>.)
+</p><!--l. 11499--><p class="indent" > You can also use <span
+class="cmtt-10">\glsxtrglossentry </span>within section headings. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-279">
+\section{\glsxtrglossentry{function}}
+</div>
+<!--l. 11503--><p class="nopar" > This will use <span
+class="cmtt-10">\glsentryname </span>in PDF bookmarks (if <span
+class="cmtt-10">\texorpdfstring </span>is defined)
+and will use <span
+class="cmtt-10">\glsxtrheadname </span>in page headers and table of contents. (If you&#8217;re using
+a page style or table of contents that doesn&#8217;t use <span
+class="cmtt-10">\markright </span>or <span
+class="cmtt-10">\markbook </span>or
+<span
+class="cmtt-10">\@starttoc </span>then you need to insert <span
+class="cmtt-10">\glsxtrmarkhook </span>and <span
+class="cmtt-10">\@glsxtrinmark </span>at the
+start of the header or table of contents either scoped or afterwards cancelled with
+<span
+class="cmtt-10">\@glsxtrnotinmark </span>and <span
+class="cmtt-10">\glsxtrrestoremarkhook</span>.)
+</p><!--l. 11513--><p class="noindent" >
+</p>
+<!--l. 11513--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">10.4 </span> <a
+ id="sec:alias"></a>Entry Aliases</h3>
+<!--l. 11516--><p class="noindent" >An entry can be made an alias of another entry using the <span
+class="cmss-10">alias</span><a
+ id="dx1-49001"></a> key. The
+value should be the label of the other term. There&#8217;s no check for the other&#8217;s
+existence when the aliased entry is defined. This is to allow the possibility of
+defining the other entry after the aliased entry. (For example, when used with
+<a
+ id="dx1-49002"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span></a>.)
+</p><!--l. 11523--><p class="indent" > If an entry &#x27E8;<span
+class="cmti-10">entry-1</span>&#x27E9; is made an alias of &#x27E8;<span
+class="cmti-10">entry-2</span>&#x27E9; then: </p>
+ <ul class="itemize1">
+ <li class="itemize">If the <span
+class="cmss-10">see</span><a
+ id="dx1-49003"></a> field wasn&#8217;t provided when &#x27E8;<span
+class="cmti-10">entry-1</span>&#x27E9; was defined, the <span
+class="cmss-10">alias</span><a
+ id="dx1-49004"></a> key will
+ automatically trigger <div class="alltt">
+ <div class="obeylines-v">
+ <span
+class="cmtt-10">\glssee{</span>&#x27E8;<span
+class="cmitt-10">entry-1</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">entry-2</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div>
+ </div>
+ </li>
+ <li class="itemize">If the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-49005"></a> package has been loaded then <span
+class="cmtt-10">\gls{</span>&#x27E8;<span
+class="cmti-10">entry-1</span>&#x27E9;<span
+class="cmtt-10">} </span>will link to
+ &#x27E8;<span
+class="cmti-10">entry-2</span>&#x27E9;&#8217;s target. (Unless the <a
+href="#catattr.targeturl"><span
+class="cmss-10">targeturl</span></a><a
+ id="dx1-49006"></a> attribute has been set for &#x27E8;<span
+class="cmti-10">entry-1</span>&#x27E9;&#8217;s
+ category.)
+ </li>
+ <li class="itemize">With <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=off</span><a
+ id="dx1-49007"></a> or <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=alsoindex</span><a
+ id="dx1-49008"></a>, the <span
+class="cmss-10">noindex</span><a
+ id="dx1-49009"></a> setting will automatically
+ be triggered when referencing &#x27E8;<span
+class="cmti-10">entry-1</span>&#x27E9; with commands like <span
+class="cmtt-10">\gls </span>or
+ <span
+class="cmtt-10">\glstext</span>. This prevents &#x27E8;<span
+class="cmti-10">entry-1</span>&#x27E9; from have a <a
+ id="dx1-49010"></a><a
+href="#glo:locationlist">location list</a> (aside from
+ the cross-reference added with <span
+class="cmtt-10">\glssee</span>) unless it&#8217;s been explicitly
+ indexed with <span
+class="cmtt-10">\glsadd </span>or if the indexing has been explicitly set using
+ <span
+class="cmtt-10">noindex=false</span>.
+
+
+
+ <!--l. 11542--><p class="noindent" >Note that with <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-49011"></a>, the <a
+ id="dx1-49012"></a>location list for aliased entries is controlled
+ with <a
+ id="dx1-49013"></a><span
+class="cmtt-10">bib2gls</span>&#8217;s settings.</p></li></ul>
+<!--l. 11546--><p class="indent" > The index suppression trigger is performed by
+</p><!--l. 11547--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrsetaliasnoindex</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-49014"></a> <span
+class="cmtt-10">\glsxtrsetaliasnoindex </span></div><hr>
+</p><!--l. 11549--><p class="noindent" >
+This is performed after the default options provided by <span
+class="cmtt-10">\GlsXtrSetDefaultGlsOpts</span><a
+ id="dx1-49015"></a>
+have been set. With <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><span
+class="cmss-10">=only</span><a
+ id="dx1-49016"></a>, <span
+class="cmtt-10">\glsxtrsetaliasnoindex </span>will default to do
+nothing.
+</p><!--l. 11555--><p class="indent" > Within the definition of <span
+class="cmtt-10">\glsxtrsetaliasnoindex </span>you can use
+</p><!--l. 11556--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtrindexaliased</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-49017"></a> <span
+class="cmtt-10">\glsxtrindexaliased </span></div><hr>
+</p><!--l. 11558--><p class="noindent" >
+to index &#x27E8;<span
+class="cmti-10">entry-2</span>&#x27E9;.
+</p><!--l. 11561--><p class="indent" > The index suppression command can be redefined to index the main term instead.
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-280">
+\renewcommand{\glsxtrsetaliasnoindex}{%
+&#x00A0;<br />&#x00A0;\glsxtrindexaliased
+&#x00A0;<br />&#x00A0;\setkeys{glslink}{noindex}%
+&#x00A0;<br />}
+</div>
+<!--l. 11568--><p class="nopar" >
+</p><!--l. 11570--><p class="indent" > The value of the <span
+class="cmss-10">alias</span><a
+ id="dx1-49018"></a> field can be accessed using
+</p><!--l. 11571--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsxtralias</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-49019"></a> <span
+class="cmtt-10">\glsxtralias{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11573--><p class="noindent" >
+
+
+
+</p>
+<!--l. 11575--><p class="indent" > </div>
+</p><!--l. 11575--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">11. <a
+ id="sec:supplemental"></a>Supplemental Packages</h2>
+</p><!--l. 11578--><p class="indent" > The <span
+class="cmss-10">glossaries </span>bundle provides additional support packages <span
+class="cmss-10">glossaries-prefix</span><a
+ id="dx1-50001"></a> (for
+prefixing) and <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-50002"></a> (for accessibility support). These packages aren&#8217;t
+automatically loaded.
+</p>
+<!--l. 11583--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">11.1 </span> <a
+ id="sec:prefix"></a>Prefixes or Determiners</h3>
+<!--l. 11586--><p class="noindent" >If prefixing is required, you can simply load <span
+class="cmss-10">glossaries-prefix</span><a
+ id="dx1-51001"></a> after <span
+class="cmss-10">glossaries-extra</span>. For
+example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-281">
+\documentclass{article}
+&#x00A0;<br />\usepackage{glossaries-extra}
+&#x00A0;<br />\usepackage{glossaries-prefix}
+&#x00A0;<br />\makeglossaries
+&#x00A0;<br />\newabbreviation
+&#x00A0;<br />&#x00A0;[prefix={an\space},
+&#x00A0;<br />&#x00A0;prefixfirst={a~}]
+&#x00A0;<br />&#x00A0;{svm}{SVM}{support&#x00A0;vector&#x00A0;machine}
+&#x00A0;<br />\begin{document}
+&#x00A0;<br />First&#x00A0;use:&#x00A0;\pgls{svm}.
+&#x00A0;<br />Next&#x00A0;use:&#x00A0;\pgls{svm}.
+&#x00A0;<br />\printglossaries
+&#x00A0;<br />\end{document}
+</div>
+<!--l. 11609--><p class="nopar" >
+</p><!--l. 11611--><p class="noindent" >
+</p>
+<!--l. 11611--><p class="noindent" ><a
+href="#top">Top</a><h3 class="sectionHead"></p><h3 class="sectionHead"><span class="titlemark">11.2 </span> <a
+ id="sec:accsupp"></a>Accessibility Support</h3>
+<!--l. 11614--><p class="noindent" >The <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-52001"></a> package needs to be loaded before <span
+class="cmss-10">glossaries-extra </span>or through
+the <a
+href="#styopt.accsupp"><span
+class="cmss-10">accsupp</span></a><a
+ id="dx1-52002"></a> package option:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-282">
+\usepackage[accsupp]{glossaries-extra}
+</div>
+<!--l. 11619--><p class="nopar" > If you don&#8217;t load <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-52003"></a> or you load <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-52004"></a> after <span
+class="cmss-10">glossaries-extra</span>
+the new <span
+class="cmtt-10">\glsaccess</span>&#x27E8;<span
+class="cmti-10">xxx</span>&#x27E9; commands described below will simply be equivalent to the
+corresponding <span
+class="cmtt-10">\glsentry</span>&#x27E8;<span
+class="cmti-10">xxx</span>&#x27E9; commands.
+</p><!--l. 11626--><p class="indent" > The following <span
+class="cmtt-10">\glsaccess</span>&#x27E8;<span
+class="cmti-10">xxx</span>&#x27E9; commands add accessibility information wrapped
+around the corresponding <span
+class="cmtt-10">\glsentry</span>&#x27E8;<span
+class="cmti-10">xxx</span>&#x27E9; commands. There is no check for existence
+of the entry nor do any of these commands add formatting, hyperlinks or indexing
+information.
+</p><!--l. 11631--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccessname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52005"></a> <span
+class="cmtt-10">\glsaccessname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11633--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">name</span><a
+ id="dx1-52006"></a> field for the entry identified by &#x27E8;<span
+class="cmti-10">label</span>&#x27E9;.
+</p><!--l. 11637--><p class="indent" > If the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-52007"></a> package isn&#8217;t loaded, this is simply defined as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-283">
+\newcommand*{\glsaccessname}[1]{\glsentryname{#1}}
+</div>
+<!--l. 11641--><p class="nopar" > otherwise it&#8217;s defined as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-284">
+\newcommand*{\glsaccessname}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsnameaccessdisplay
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glsentryname{#1}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{#1}%
+&#x00A0;<br />}
+</div>
+<!--l. 11651--><p class="nopar" > (<span
+class="cmtt-10">\glsnameaccessdisplay</span><a
+ id="dx1-52008"></a> is defined by the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-52009"></a> package.) The first
+letter upper case version is:
+</p><!--l. 11655--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccessname</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52010"></a> <span
+class="cmtt-10">\Glsaccessname{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11657--><p class="noindent" >
+Without the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-52011"></a> package this is just defined as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-285">
+\newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}}
+</div>
+<!--l. 11662--><p class="nopar" > With the <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-52012"></a> package this is defined as:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-286">
+\newcommand*{\Glsaccessname}[1]{%
+&#x00A0;<br />&#x00A0;&#x00A0;\glsnameaccessdisplay
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\Glsentryname{#1}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{#1}%
+&#x00A0;<br />}
+</div>
+<!--l. 11672--><p class="nopar" >
+</p><!--l. 11674--><p class="indent" > The following commands are all defined in an analogous manner.
+</p><!--l. 11675--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccesstext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52013"></a> <span
+class="cmtt-10">\glsaccesstext{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11677--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-52014"></a> field.
+</p><!--l. 11680--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccesstext</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52015"></a> <span
+class="cmtt-10">\Glsaccesstext{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11682--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">text</span><a
+ id="dx1-52016"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11686--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccessplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52017"></a> <span
+class="cmtt-10">\glsaccessplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11688--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">plural</span><a
+ id="dx1-52018"></a> field.
+</p><!--l. 11691--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccessplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52019"></a> <span
+class="cmtt-10">\Glsaccessplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11693--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">plural</span><a
+ id="dx1-52020"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11697--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccessfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52021"></a> <span
+class="cmtt-10">\glsaccessfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11699--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">first</span><a
+ id="dx1-52022"></a> field.
+</p><!--l. 11702--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccessfirst</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52023"></a> <span
+class="cmtt-10">\Glsaccessfirst{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11704--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">first</span><a
+ id="dx1-52024"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11708--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccessfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52025"></a> <span
+class="cmtt-10">\glsaccessfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11710--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-52026"></a> field.
+</p><!--l. 11713--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccessfirstplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52027"></a> <span
+class="cmtt-10">\Glsaccessfirstplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11715--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">firstplural</span><a
+ id="dx1-52028"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11719--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccesssymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52029"></a> <span
+class="cmtt-10">\glsaccesssymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11721--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">symbol</span><a
+ id="dx1-52030"></a> field.
+</p><!--l. 11724--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccesssymbol</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52031"></a> <span
+class="cmtt-10">\Glsaccesssymbol{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 11726--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">symbol</span><a
+ id="dx1-52032"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11730--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccesssymbolplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52033"></a> <span
+class="cmtt-10">\glsaccesssymbolplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11732--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">symbolplural</span><a
+ id="dx1-52034"></a> field.
+</p><!--l. 11735--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccesssymbolplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52035"></a> <span
+class="cmtt-10">\Glsaccesssymbolplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11737--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">symbolplural</span><a
+ id="dx1-52036"></a> field with the first letter converted to
+upper case.
+</p><!--l. 11741--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccessdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52037"></a> <span
+class="cmtt-10">\glsaccessdesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11743--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">description</span><a
+ id="dx1-52038"></a> field.
+</p><!--l. 11746--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccessdesc</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52039"></a> <span
+class="cmtt-10">\Glsaccessdesc{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11748--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">description</span><a
+ id="dx1-52040"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11752--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccessdescplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52041"></a> <span
+class="cmtt-10">\glsaccessdescplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11754--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">descriptionplural</span><a
+ id="dx1-52042"></a> field.
+</p><!--l. 11757--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccessdescplural</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52043"></a> <span
+class="cmtt-10">\Glsaccessdescplural{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11759--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">descriptionplural</span><a
+ id="dx1-52044"></a> field with the first letter converted to
+upper case.
+</p><!--l. 11763--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccessshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52045"></a> <span
+class="cmtt-10">\glsaccessshort{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11765--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">short</span><a
+ id="dx1-52046"></a> field.
+</p><!--l. 11768--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccessshort</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52047"></a> <span
+class="cmtt-10">\Glsaccessshort{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11770--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">short</span><a
+ id="dx1-52048"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11774--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccessshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52049"></a> <span
+class="cmtt-10">\glsaccessshortpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11776--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-52050"></a> field.
+</p><!--l. 11779--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccessshortpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52051"></a> <span
+class="cmtt-10">\Glsaccessshortpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11781--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">shortplural</span><a
+ id="dx1-52052"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11785--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccesslong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52053"></a> <span
+class="cmtt-10">\glsaccesslong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11787--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">long</span><a
+ id="dx1-52054"></a> field.
+</p><!--l. 11790--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccesslong</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52055"></a> <span
+class="cmtt-10">\Glsaccesslong{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11792--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">long</span><a
+ id="dx1-52056"></a> field with the first letter converted to upper
+case.
+</p><!--l. 11796--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\glsaccesslongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52057"></a> <span
+class="cmtt-10">\glsaccesslongpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+
+
+
+</p><!--l. 11798--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">longplural</span><a
+ id="dx1-52058"></a> field.
+</p><!--l. 11801--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\Glsaccesslongpl</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-52059"></a> <span
+class="cmtt-10">\Glsaccesslongpl{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 11803--><p class="noindent" >
+This displays the value of the <span
+class="cmss-10">longplural</span><a
+ id="dx1-52060"></a> field with the first letter converted to upper
+case.
+
+
+
+</p>
+<!--l. 11807--><p class="indent" > </div>
+</p><!--l. 11807--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">12. <a
+ id="sec:samples"></a>Sample Files</h2>
+</p><!--l. 11810--><p class="indent" > The following sample files are provided with this package:
+ </p><dl class="description"><dt class="description">
+<span
+class="cmbx-10">sample.tex</span> </dt><dd
+class="description">Simple sample file that uses one of the dummy files provided by
+ the <span
+class="cmss-10">glossaries </span>package for testing.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-abbr-styles.tex</span> </dt><dd
+class="description">Demonstrates all predefined abbreviation styles.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-mixture.tex</span> </dt><dd
+class="description">General entries, acronyms and initialisms all treated
+ differently.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-name-font</span> </dt><dd
+class="description">Categories and attributes are used to customize the way
+ different entries appear.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-abbrv.tex</span> </dt><dd
+class="description">General abbreviations.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-acronym.tex</span> </dt><dd
+class="description">Acronyms aren&#8217;t initialisms and don&#8217;t expand on <a
+ id="dx1-53001"></a><a
+href="#glo:firstuse">first
+ use</a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-acronym-desc.tex</span> </dt><dd
+class="description">Acronyms that have a separate long form and
+ description.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-crossref.tex</span> </dt><dd
+class="description">Unused entries that have been cross-referenced
+ automatically are added at the end of the document.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-indexhook.tex</span> </dt><dd
+class="description">Use the index hook to track which entries have been
+ indexed (and therefore find out which ones haven&#8217;t been indexed).
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-footnote.tex</span> </dt><dd
+class="description">Footnote abbreviation style that moves the footnote
+ marker outside of the hyperlink generated by <span
+class="cmtt-10">\gls </span>and moves it after
+ certain punctuation characters for neatness.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-undef.tex</span> </dt><dd
+class="description">Warn on undefined entries instead of generating an error.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-mixed-abbrv-styles.tex</span> </dt><dd
+class="description">Different abbreviation styles for different
+ entries.
+
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-initialisms.tex</span> </dt><dd
+class="description">Automatically insert dots into initialisms.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-postdot.tex</span> </dt><dd
+class="description">Another initialisms example.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-postlink.tex</span> </dt><dd
+class="description">Automatically inserting text after the <a
+ id="dx1-53002"></a><a
+href="#glo:linktext">link-text</a>
+ produced by commands like <span
+class="cmtt-10">\gls </span>(outside of hyperlink, if present).
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-header.tex</span> </dt><dd
+class="description">Using entries in section/chapter headings.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-autoindex.tex</span> </dt><dd
+class="description">Using the <a
+href="#catattr.dualindex"><span
+class="cmss-10">dualindex</span></a><a
+ id="dx1-53003"></a> and <a
+href="#catattr.indexname"><span
+class="cmss-10">indexname</span></a><a
+ id="dx1-53004"></a> attributes to
+ automatically add glossary entries to the index (in addition to the glossary
+ <a
+ id="dx1-53005"></a><a
+href="#glo:locationlist">location list</a>).
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-autoindex-hyp.tex</span> </dt><dd
+class="description">As previous but uses <span
+class="cmss-10">hyperref</span><a
+ id="dx1-53006"></a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-nested.tex</span> </dt><dd
+class="description">Using <span
+class="cmtt-10">\gls</span><a
+ id="dx1-53007"></a> within the value of the <span
+class="cmss-10">name</span><a
+ id="dx1-53008"></a> key.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-entrycount.tex</span> </dt><dd
+class="description">Enable entry-use counting (only index if used more
+ than <span
+class="cmmi-10">n </span>times, see <a
+href="#sec:entrycount"><span
+class="cmsy-10">&sect;</span>6.1 </a><a
+href="#sec:entrycount">Entry Counting (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>).
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-unitentrycount.tex</span> </dt><dd
+class="description">Enable use of per-unit entry-use counting (<a
+href="#sec:entrycount"><span
+class="cmsy-10">&sect;</span>6.1
+ </a><a
+href="#sec:entrycount">Entry Counting (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>).
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-onelink.tex</span> </dt><dd
+class="description">Using the per-unit entry counting (<a
+href="#sec:entrycount"><span
+class="cmsy-10">&sect;</span>6.1 </a><a
+href="#sec:entrycount">Entry Counting
+ (First Use Flag)<!--tex4ht:ref: sec:entrycount --></a>) to only have one hyperlink per entry per page.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-linkcount.tex</span> </dt><dd
+class="description">Using link counting (<a
+href="#sec:linkcount"><span
+class="cmsy-10">&sect;</span>6.2 </a><a
+href="#sec:linkcount">Link Counting<!--tex4ht:ref: sec:linkcount --></a>) to only have
+ one hyperlink per entry.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-pages.tex</span> </dt><dd
+class="description">Insert &#8220;page&#8221; or &#8220;pages&#8221; before the location list.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-altmodifier.tex</span> </dt><dd
+class="description">Set the default options for commands like <span
+class="cmtt-10">\gls </span>and
+ add an alternative modifier.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-mixedsort.tex</span> </dt><dd
+class="description">Uses the optional argument of <span
+class="cmtt-10">\makeglossaries </span>to
+ allow a mixture of <span
+class="cmtt-10">\printglossary </span>and <span
+class="cmtt-10">\printnoidxglossary</span>.
+
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-external.tex</span> </dt><dd
+class="description">Uses the <a
+href="#catattr.targeturl"><span
+class="cmss-10">targeturl</span></a><a
+ id="dx1-53009"></a> attribute to allow for entries that
+ should link to an external URL rather than to an internal glossary.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-fmt.tex</span> </dt><dd
+class="description">Provides text-block commands associated with entries in
+ order to use <span
+class="cmtt-10">\glsxtrfmt</span>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-alias.tex</span> </dt><dd
+class="description">Uses the <span
+class="cmss-10">alias</span><a
+ id="dx1-53010"></a> key. (See <a
+href="#sec:alias"><span
+class="cmsy-10">&sect;</span>10.4 </a><a
+href="#sec:alias">Entry Aliases<!--tex4ht:ref: sec:alias --></a>.)
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-alttree.tex</span> </dt><dd
+class="description">Uses the <span
+class="cmss-10">glossaries-extra-stylemods</span><a
+ id="dx1-53011"></a> package with the <span
+class="cmss-10">alttree</span><a
+ id="dx1-53012"></a>
+ style (see <a
+href="#x1-200002.12.3"><span
+class="cmsy-10">&sect;</span>2.12.3 </a><a
+href="#x1-200002.12.3">The <span
+class="cmss-10">glossaries-extra-stylemods </span>Package<!--tex4ht:ref: sec:stylemods --></a>).
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-alttree-sym.tex</span> </dt><dd
+class="description">Another <span
+class="cmss-10">alttree</span><a
+ id="dx1-53013"></a> example that measures the symbol
+ widths.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-alttree-marginpar.tex</span> </dt><dd
+class="description">Another <span
+class="cmss-10">alttree</span><a
+ id="dx1-53014"></a> example that puts the
+ <a
+ id="dx1-53015"></a><a
+href="#glo:numberlist">number list</a> in the margin.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-onthefly.tex</span> </dt><dd
+class="description">Using on-the-fly commands. Terms with accents must
+ have the <span
+class="cmss-10">name</span><a
+ id="dx1-53016"></a> key explicitly set.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-onthefly-xetex.tex</span> </dt><dd
+class="description">Using on-the-fly commands with <span class="HoLogo-XeLaTeX"><span class="HoLogo-Xe">X<span class="HoLogo-e">&#x018e;</span></span><span class="HoLogo-LaTeX">L<span class="HoLogo-a">A</span><span class="HoLogo-TeX">T<span class="HoLogo-e">E</span>X</span></span></span>.
+ Terms with UTF-8 characters don&#8217;t need to have the <span
+class="cmss-10">name</span><a
+ id="dx1-53017"></a> key explicitly
+ set. Terms that contain commands must have the <span
+class="cmss-10">name</span><a
+ id="dx1-53018"></a> key explicitly set
+ with the commands removed from the label.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-onthefly-utf8.tex</span> </dt><dd
+class="description">Tries to emulate the previous sample file for use
+ with <span class="LATEX">L<span class="A">A</span><span class="TEX">T<span
+class="E">E</span>X</span></span>&#x00A0;through the starred version of <span
+class="cmtt-10">\GlsXtrEnableOnTheFly</span><a
+ id="dx1-53019"></a>.
+ This is a bit iffy and may not always work. Terms that contain commands
+ must have the <span
+class="cmss-10">name</span><a
+ id="dx1-53020"></a> key explicitly set with the commands removed from
+ the label.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-accsupp.tex</span> </dt><dd
+class="description">Integrate <span
+class="cmss-10">glossaries-accsupp</span><a
+ id="dx1-53021"></a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-prefix.tex</span> </dt><dd
+class="description">Integrate <span
+class="cmss-10">glossaries-prefix</span><a
+ id="dx1-53022"></a>.
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-suppl-main.tex</span> </dt><dd
+class="description">Uses <span
+class="cmss-10">thevalue</span><a
+ id="dx1-53023"></a> to reference a location in the
+ supplementary file <span
+class="cmtt-10">sample-suppl.tex</span>.
+
+
+
+ </dd><dt class="description">
+<span
+class="cmbx-10">sample-suppl-main-hyp.tex</span> </dt><dd
+class="description">A more complicated version to the above that
+ uses the <span
+class="cmss-10">hyperref</span><a
+ id="dx1-53024"></a> package to reference a location in the supplementary file
+ <span
+class="cmtt-10">sample-suppl-hyp.tex</span>.
+ </dd></dl>
+
+
+
+<!--l. 11942--><p class="indent" > </div>
+</p><!--l. 11942--><p class="noindent" ><a
+href="#top">Top</a><div class="chapter"><h2 class="chapterHead">13. <a
+ id="sec:lang"></a>Multi-Lingual Support</h2>
+</p><!--l. 11945--><p class="indent" > There&#8217;s only one command provided by <span
+class="cmss-10">glossaries-extra </span>that you&#8217;re likely to want
+to change in your document and that&#8217;s <span
+class="cmtt-10">\abbreviationsname</span><a
+ id="dx1-54001"></a> (<a
+href="#sec:pkgopts"><span
+class="cmsy-10">&sect;</span>1.2 </a><a
+href="#sec:pkgopts">New or
+Modified Package Options<!--tex4ht:ref: sec:pkgopts --></a>) if you use the <a
+href="#styopt.abbreviations"><span
+class="cmss-10">abbreviations</span></a><a
+ id="dx1-54002"></a> package option to
+automatically create the glossary labelled <span
+class="cmtt-10">abbreviations</span>. If this command
+doesn&#8217;t already exist, it will be defined to &#8220;Abbreviations&#8221; if <span
+class="cmss-10">babel</span><a
+ id="dx1-54003"></a> hasn&#8217;t
+been loaded, otherwise it will be defined as <span
+class="cmtt-10">\acronymname </span>(provided by
+<span
+class="cmss-10">glossaries</span>).
+</p><!--l. 11955--><p class="indent" > You can redefine it in the usual way. For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-287">
+\renewcommand*{\abbreviationsname}{List&#x00A0;of&#x00A0;Abbreviations}
+</div>
+<!--l. 11958--><p class="nopar" > Or using <span
+class="cmss-10">babel</span><a
+ id="dx1-54004"></a> or <span
+class="cmss-10">polyglossia</span><a
+ id="dx1-54005"></a> captions hook:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-288">
+\appto\captionsenglish{%
+&#x00A0;<br />&#x00A0;\renewcommand*{\abbreviationsname}{List&#x00A0;of&#x00A0;Abbreviations}%
+&#x00A0;<br />}
+</div>
+<!--l. 11964--><p class="nopar" >
+</p><!--l. 11966--><p class="indent" > Alternatively you can use the <span
+class="cmss-10">title</span><a
+ id="dx1-54006"></a> key when you print the list of abbreviations.
+For example:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-289">
+\printabbreviations[title={List&#x00A0;of&#x00A0;Abbreviations}]
+</div>
+<!--l. 11970--><p class="nopar" > or
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-290">
+\printglossary[type=abbreviations,title={List&#x00A0;of&#x00A0;Abbreviations}]
+</div>
+<!--l. 11974--><p class="nopar" >
+</p><!--l. 11976--><p class="indent" > The other fixed text commands are the diagnostic messages, which shouldn&#8217;t
+appear in the final draft of your document.
+</p><!--l. 11979--><p class="indent" > The <span
+class="cmss-10">glossaries-extra </span>package has the facility to load language modules (whose
+filename is in the form <span
+class="cmtt-10">glossariesxtr-</span>&#x27E8;<span
+class="cmti-10">language</span>&#x27E9;<span
+class="cmtt-10">.ldf</span>) if they exist, but won&#8217;t warn if
+they don&#8217;t. If <span
+class="cmss-10">glossaries-extra-bib2gls</span><a
+ id="dx1-54007"></a> is loaded via the <a
+href="#styopt.record"><span
+class="cmss-10">record</span></a><a
+ id="dx1-54008"></a> package option then the
+check for language resource files will additionally search for an associated language
+script file given by <span
+class="cmtt-10">glossariesxtr-</span>&#x27E8;<span
+class="cmti-10">script</span>&#x27E9;<span
+class="cmtt-10">.ldf </span>where &#x27E8;<span
+class="cmti-10">script</span>&#x27E9; is the four letter script
+identifier, such as <span
+class="cmtt-10">Latn</span>, associated with the given dialect. There&#8217;s no warning
+if the associated file isn&#8217;t found. The script file is loaded after the dialect
+file.
+</p><!--l. 11992--><p class="indent" > If you want to write your own language module, you just need to create a file
+called <span
+class="cmtt-10">glossariesxtr-</span>&#x27E8;<span
+class="cmti-10">lang</span>&#x27E9;<span
+class="cmtt-10">.ldf</span>, where &#x27E8;<span
+class="cmti-10">lang</span>&#x27E9; identifies the language or dialect (see
+the <span
+class="cmss-10">tracklang</span><a
+ id="dx1-54009"></a> package). For example, <span
+class="cmtt-10">glossariesxtr-french.ldf</span>.
+</p><!--l. 11998--><p class="indent" > The simplest code for this file is:
+
+
+
+</p>
+ <div class="verbatim" id="verbatim-291">
+\ProvidesGlossariesExtraLang{french}[2015/12/09&#x00A0;v1.0]
+&#x00A0;<br />\newcommand*{\glossariesxtrcaptionsfrench}{%
+&#x00A0;<br />&#x00A0;\def\abbreviationsname{Abr\'eviations}%
+&#x00A0;<br />}
+&#x00A0;<br />\glossariesxtrcaptionsfrench
+&#x00A0;<br />\ifcsdef{captions\CurrentTrackedDialect}
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\csappto{captions\CurrentTrackedDialect}%
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossariesxtrcaptionsfrench
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />}%
+&#x00A0;<br />{%
+&#x00A0;<br />&#x00A0;&#x00A0;\ifcsdef{captions\CurrentTrackedLanguage}
+&#x00A0;<br />&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;\csappto{captions\CurrentTrackedLanguage}%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;{%
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;\glossariesxtrcaptionsfrench
+&#x00A0;<br />&#x00A0;&#x00A0;&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;}%
+&#x00A0;<br />&#x00A0;&#x00A0;{}%
+&#x00A0;<br />}
+</div>
+<!--l. 12024--><p class="nopar" >
+</p><!--l. 12026--><p class="indent" > You can adapt this for other languages by replacing all instances of the language
+identifier <span
+class="cmtt-10">french </span>and the translated text <span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">Abr\&#8217;eviations</span></span></span> as appropriate. You can
+also use the <span
+class="cmtt-10">.ldf </span>file to provide rule blocks for a particular language for use with
+<a
+ id="dx1-54010"></a><a
+href="#glo:bib2gls"><span
+class="cmtt-10">bib2gls</span>&#8217;s</a> custom sort rule. See <a
+href="#x1-390009.3"><span
+class="cmsy-10">&sect;</span>9.3 </a><a
+href="#x1-390009.3">The <span
+class="cmss-10">glossaries-extra-bib2gls </span>package<!--tex4ht:ref: sec:bib2glssty --></a> for further
+details.
+</p><!--l. 12033--><p class="indent" > This <span
+class="cmtt-10">.ldf </span>file then needs to be put somewhere on <span class="TEX">T<span
+class="E">E</span>X</span>&#8217;s path so that it can be
+found by <span
+class="cmss-10">glossaries-extra</span>. You might also want to consider uploading it to CTAN so
+that it can be useful to others. (Please don&#8217;t send it to me. I already have more
+packages than I am able to maintain.)
+</p><!--l. 12039--><p class="indent" > If you additionally want to provide translations for the diagnostic messages used
+when a glossary is missing, you need to redefine the following commands:
+</p><!--l. 12042--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningHead</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54011"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningHead{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}{</span>&#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 12044--><p class="noindent" >
+This produces the following text in English:
+ </p><div class="quote">
+ <!--l. 12047--><p class="noindent" >This document is incomplete. The external file associated with the
+
+
+
+ glossary &#8216;&#x27E8;<span
+class="cmti-10">label</span>&#x27E9;&#8217; (which should be called &#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;) hasn&#8217;t been created.</p></div>
+<!--l. 12050--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningEmptyStart</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54012"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningEmptyStart </span></div><hr>
+</p><!--l. 12052--><p class="noindent" >
+This produces the following text in English:
+ </p><div class="quote">
+ <!--l. 12055--><p class="noindent" >This has probably happened because there are no entries defined in
+ this glossary.</p></div>
+<!--l. 12058--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningEmptyMain</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54013"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningEmptyMain </span></div><hr>
+</p><!--l. 12060--><p class="noindent" >
+This produces the following text in English:
+ </p><div class="quote">
+ <!--l. 12063--><p class="noindent" >If you don&#8217;t want this glossary, add <span
+class="cmtt-10">nomain </span>to your package option
+ list when you load <span
+class="cmtt-10">glossaries-extra.sty</span>. For example:</p></div>
+<!--l. 12066--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningEmptyNotMain</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54014"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningEmptyNotMain{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 12068--><p class="noindent" >
+This produces the following text in English:
+ </p><div class="quote">
+ <!--l. 12071--><p class="noindent" >Did you forget to use <span
+class="cmtt-10">type=</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9; when you defined your entries?
+ If you tried to load entries into this glossary with <span
+class="cmtt-10">\loadglsentries</span>
+ did you remember to use <span
+class="cmtt-10">[</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">] </span>as the optional argument? If you
+ did, check that the definitions in the file you loaded all had the type
+ set to <span
+class="cmtt-10">\glsdefaulttype</span>.</p></div>
+<!--l. 12074--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningCheckFile</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54015"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningCheckFile{</span>&#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 12076--><p class="noindent" >
+This produces the following text in English:
+ </p><div class="quote">
+ <!--l. 12079--><p class="noindent" >Check the contents of the file &#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;. If it&#8217;s empty, that means you
+ haven&#8217;t indexed any of your entries in this glossary (using commands
+ like <span
+class="cmtt-10">\gls </span>or <span
+class="cmtt-10">\glsadd</span>) so this list can&#8217;t be generated. If the file isn&#8217;t
+ empty, the document build process hasn&#8217;t been completed.</p></div>
+<!--l. 12082--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningMisMatch</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54016"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningMisMatch </span></div><hr>
+</p><!--l. 12084--><p class="noindent" >
+This produces the following text in English:
+ </p><div class="quote">
+
+
+
+ <!--l. 12087--><p class="noindent" >You need
+ to either replace <span
+class="cmtt-10">\makenoidxglossaries </span>with <span
+class="cmtt-10">\makeglossaries </span>or
+ replace <span
+class="cmtt-10">\printglossary </span>(or <span
+class="cmtt-10">\printglossaries</span>)
+ with <span
+class="cmtt-10">\printnoidxglossary </span>(or <span
+class="cmtt-10">\printnoidxglossaries</span>) and then
+ rebuild this document.</p></div>
+<!--l. 12090--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningNoOut</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54017"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningNoOut{</span>&#x27E8;<span
+class="cmitt-10">file</span>&#x27E9;<span
+class="cmtt-10">} </span></div><hr>
+</p><!--l. 12092--><p class="noindent" >
+This produces the following text in English:
+ </p><div class="quote">
+ <!--l. 12095--><p class="noindent" >The file &#x27E8;<span
+class="cmitt-10">file</span>&#x27E9; doesn&#8217;t exist. This most likely means you haven&#8217;t used
+ <span
+class="cmtt-10">\makeglossaries </span>or you have used <span
+class="cmtt-10">\nofiles</span>. If this is just a draft
+ version of the document, you can suppress this message using the
+ <span
+class="cmtt-10">nomissingglstext </span>package option.</p></div>
+<!--l. 12098--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningTail</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54018"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningTail </span></div><hr>
+</p><!--l. 12100--><p class="noindent" >
+This produces the following text in English:
+ </p><div class="quote">
+ <!--l. 12103--><p class="noindent" >This message will be removed once the problem has been fixed.</p></div>
+<!--l. 12106--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningBuildInfo</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54019"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningBuildInfo </span></div><hr>
+</p><!--l. 12108--><p class="noindent" >
+This is advice on how to generate the glossary files. See the documented code
+(<span
+class="cmtt-10">glossaries-extra-code.pdf</span>) for further details.
+</p><!--l. 12113--><p class="indent" > <hr><div title="Definition"><span class="marginpar"><span
+class="cmtt-9">\GlsXtrNoGlsWarningAutoMake</span><span
+class="cmtt-9">&#x00A0;</span></span><a
+ id="dx1-54020"></a> <span
+class="cmtt-10">\GlsXtrNoGlsWarningAutoMake{</span>&#x27E8;<span
+class="cmitt-10">label</span>&#x27E9;<span
+class="cmtt-10">}</span>
+</div><hr>
+</p><!--l. 12115--><p class="noindent" >
+This is the message produced when the <a
+href="#styopt.automake"><span
+class="cmss-10">automake</span></a><a
+ id="dx1-54021"></a> option is used, but the document
+needs a rerun or the shell escape setting doesn&#8217;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.
+
+
+
+</p><!--l. 1--><p class="indent" > <a
+ id="likesection.1"></a><a
+ id="glossary"></a>
+
+
+
+</p>
+<!--l. 1--><p class="indent" > </div>
+</p><!--l. 1--><p class="noindent" ><a
+href="#top">Top</a></p><h2 class="likechapterHead"><a
+ id="x1-5500013"></a>Glossary</h2>
+ <dl class="description"><dt class="description">
+<a
+ id="glo:bib2gls"></a><span
+class="cmtt-10">bib2gls</span><a
+ id="dx1-55001"></a> </dt><dd
+class="description">A command line Java application that selects entries from a .bib file
+ and converts them
+ to glossary definitions (like <span
+class="cmtt-10">bibtex </span>but also performs hierarchical sorting
+ and collation, thus omitting the need for <a
+ id="dx1-55002"></a><a
+href="#glo:xindy"><span
+class="cmtt-10">xindy</span></a> or <a
+ id="dx1-55003"></a><a
+href="#glo:makeindex"><span
+class="cmtt-10">makeindex</span></a>). Further
+ details at: <a
+href="http://www.dickimaw-books.com/software/bib2gls/" class="url" ><span
+class="cmtt-10">http://www.dickimaw-books.com/software/bib2gls/</span></a>.
+ </dd><dt class="description">
+<a
+ id="glo:entrylocation"></a><span
+class="cmbx-10">entry location</span><a
+ id="dx1-55004"></a> </dt><dd
+class="description">The location of the entry in the document. This defaults to
+ the page number on which the entry appears. An entry may have multiple
+ locations.
+ </dd><dt class="description">
+<a
+ id="glo:firstuse"></a><span
+class="cmbx-10">first use</span><a
+ id="dx1-55005"></a> </dt><dd
+class="description">The first time a glossary entry is used (from the start of the document
+ or after a reset) with one of the following commands: <span
+class="cmtt-10">\gls</span><a
+ id="dx1-55006"></a>, <span
+class="cmtt-10">\Gls</span><a
+ id="dx1-55007"></a>, <span
+class="cmtt-10">\GLS</span><a
+ id="dx1-55008"></a>,
+ <span
+class="cmtt-10">\glspl</span><a
+ id="dx1-55009"></a>, <span
+class="cmtt-10">\Glspl</span><a
+ id="dx1-55010"></a>, <span
+class="cmtt-10">\GLSpl</span><a
+ id="dx1-55011"></a> or <span
+class="cmtt-10">\glsdisp</span><a
+ id="dx1-55012"></a>.
+ </dd><dt class="description">
+<a
+ id="glo:firstuseflag"></a><span
+class="cmbx-10">first use flag</span><a
+ id="dx1-55013"></a> </dt><dd
+class="description">A conditional that determines whether or not the entry has been
+ used according to the rules of <a
+ id="dx1-55014"></a><a
+href="#glo:firstuse">first use</a>.
+ </dd><dt class="description">
+<a
+ id="glo:firstusetext"></a><span
+class="cmbx-10">first use text</span><a
+ id="dx1-55015"></a> </dt><dd
+class="description">The text that is displayed on <a
+ id="dx1-55016"></a>first use, which is governed by the
+ <span
+class="cmss-10">first</span><a
+ id="dx1-55017"></a> and <span
+class="cmss-10">firstplural</span><a
+ id="dx1-55018"></a> keys of <span
+class="cmtt-10">\newglossaryentry</span><a
+ id="dx1-55019"></a>. (May be overridden by
+ <span
+class="cmtt-10">\glsdisp</span><a
+ id="dx1-55020"></a>.)
+ </dd><dt class="description">
+<a
+ id="glo:linktext"></a><span
+class="cmbx-10">link-text</span><a
+ id="dx1-55021"></a> </dt><dd
+class="description">The text produced by commands such as <span
+class="cmtt-10">\gls</span><a
+ id="dx1-55022"></a>. It may or may not
+ have a hyperlink to the glossary.
+ </dd><dt class="description">
+<a
+ id="glo:locationlist"></a><span
+class="cmbx-10">location list</span><a
+ id="dx1-55023"></a> </dt><dd
+class="description">A list of <a
+ id="dx1-55024"></a><a
+href="#glo:entrylocation">entry locations</a>. See <a
+ id="dx1-55025"></a><a
+href="#glo:numberlist">number list</a>.
+ </dd><dt class="description">
+<a
+ id="glo:makeglossaries"></a><span
+class="cmtt-10">makeglossaries</span><a
+ id="dx1-55026"></a> </dt><dd
+class="description">A custom designed Perl script interface provided with the
+ <span
+class="cmss-10">glossaries </span>package to run <a
+ id="dx1-55027"></a><span
+class="cmtt-10">xindy </span>or <a
+ id="dx1-55028"></a><span
+class="cmtt-10">makeindex </span>according to the document
+ settings.
+
+
+
+ </dd><dt class="description">
+<a
+ id="glo:makeglossaries-lite.lua"></a><span
+class="cmtt-10">makeglossaries-lite</span><a
+ id="dx1-55029"></a><a
+ id="dx1-55030"></a> </dt><dd
+class="description">A custom designed Lua script interface to <a
+ id="dx1-55031"></a><span
+class="cmtt-10">xindy </span>and
+ <a
+ id="dx1-55032"></a><span
+class="cmtt-10">makeindex </span>provided with the <span
+class="cmss-10">glossaries </span>package. This is a cut-down
+ alternative to the Perl <span
+class="cmtt-10">makeglossaries </span>script. If you have Perl installed,
+ use the Perl script instead. This script is distributed in the source code
+ on CTAN with the file name <span
+class="cmtt-10">makeglossaries-lite.lua </span>but TeX Live
+ on Unix-like systems creates a symbolic link called <span
+class="cmtt-10">makeglossaries-lite</span>
+ (without the <span
+class="cmtt-10">.lua </span>extension) to the actual <span
+class="cmtt-10">makeglossaries-lite.lua</span>
+ script, and <span class="TEX">T<span
+class="E">E</span>X</span>&#x00A0;distributions on Windows convert the script to an
+ executable <span
+class="cmtt-10">makeglossaries-lite.exe</span>.
+ </dd><dt class="description">
+<a
+ id="glo:makeindex"></a><span
+class="cmtt-10">makeindex</span><a
+ id="dx1-55033"></a> </dt><dd
+class="description">An indexing application.
+ </dd><dt class="description">
+<a
+ id="glo:numberlist"></a><span
+class="cmbx-10">number list</span><a
+ id="dx1-55034"></a> </dt><dd
+class="description">A list of <a
+ id="dx1-55035"></a><a
+href="#glo:entrylocation">entry locations</a> (also called a location list). The number
+ list can be suppressed using the <a
+href="#styopt.nonumberlist"><span
+class="cmss-10">nonumberlist</span></a><a
+ id="dx1-55036"></a> package option.
+ </dd><dt class="description">
+<a
+ id="glo:xindy"></a><span
+class="cmtt-10">xindy</span><a
+ id="dx1-55037"></a> </dt><dd
+class="description">An flexible indexing application with multilingual support written in
+ Perl.</dd></dl>
+
+
+
+ <h2 class="likechapterHead"><a
+ id="x1-5600013"></a>Index</h2>
+<!--l. 4--><p class="noindent" > <span
+class="cmbx-10">A</span>
+</p>
+ <div class="theindex"><span class="index-item">abbreviation styles (deprecated):<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">footnote-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27173" >1</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">footnote-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27165" >2</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">footnote-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27169" >3</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-desc-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26078" >4</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-desc-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26070" >5</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-desc-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26074" >6</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26104" >7</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26096" >8</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26100" >9</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">postfootnote-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27196" >10</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">postfootnote-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27188" >11</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">postfootnote-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27192" >12</a> <br /></span>
+<span class="index-item">abbreviation styles:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">footnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27160" >13</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26090" >14</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26064" >15</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-em-noshort-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25088" >16</a>, <a
+href="glossaries-extra-manual.html#dx1-26105" >17</a>, <a
+href="glossaries-extra-manual.html#dx1-27029" >18</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-em-noshort-em-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26079" >19</a>, <a
+href="glossaries-extra-manual.html#dx1-27075" >20</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-em-noshort-em-desc-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27074" >21</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-em-noshort-em-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25090" >22</a>, <a
+href="glossaries-extra-manual.html#dx1-26110" >23</a>, <a
+href="glossaries-extra-manual.html#dx1-27028" >24</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-em-short-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25056" >25</a>, <a
+href="glossaries-extra-manual.html#dx1-25082" >26</a>, <a
+href="glossaries-extra-manual.html#dx1-27018" >27</a>, <a
+href="glossaries-extra-manual.html#dx1-28018" >28</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-em-short-em-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27071" >29</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-hyphen-long-hyphen</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27231" >30</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-hyphen-noshort-desc-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27220" >31</a>, <a
+href="glossaries-extra-manual.html#dx1-27224" >32</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-hyphen-noshort-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25091" >33</a>, <a
+href="glossaries-extra-manual.html#dx1-27223" >34</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-hyphen-postshort-hyphen</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25086" >35</a>, <a
+href="glossaries-extra-manual.html#dx1-27219" >36</a>, <a
+href="glossaries-extra-manual.html#dx1-27228" >37</a>, <a
+href="glossaries-extra-manual.html#dx1-27234" >38</a>, <a
+href="glossaries-extra-manual.html#dx1-27244" >39</a>, <a
+href="glossaries-extra-manual.html#dx1-27246" >40</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-hyphen-postshort-hyphen-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27233" >41</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-hyphen-short-hyphen</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27211" >42</a>, <a
+href="glossaries-extra-manual.html#dx1-27226" >43</a>, <a
+href="glossaries-extra-manual.html#dx1-27229" >44</a>, <a
+href="glossaries-extra-manual.html#dx1-27237" >45</a>, <a
+href="glossaries-extra-manual.html#dx1-30058" >46</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-hyphen-short-hyphen-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27221" >47</a>, <a
+href="glossaries-extra-manual.html#dx1-27225" >48</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13030" >49</a>, <a
+href="glossaries-extra-manual.html#dx1-23002" >50</a>, <a
+href="glossaries-extra-manual.html#dx1-26084" >51</a>, <a
+href="glossaries-extra-manual.html#dx1-26091" >52</a>, <a
+href="glossaries-extra-manual.html#dx1-26093" >53</a>, <a
+href="glossaries-extra-manual.html#dx1-26098" >54</a>, <a
+href="glossaries-extra-manual.html#dx1-26102" >55</a>, <a
+href="glossaries-extra-manual.html#dx1-26106" >56</a>, <a
+href="glossaries-extra-manual.html#dx1-27049" >57</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12040" >58</a>, <a
+href="glossaries-extra-manual.html#dx1-13032" >59</a>, <a
+href="glossaries-extra-manual.html#dx1-26057" >60</a>, <a
+href="glossaries-extra-manual.html#dx1-26065" >61</a>, <a
+href="glossaries-extra-manual.html#dx1-26067" >62</a>, <a
+href="glossaries-extra-manual.html#dx1-26072" >63</a>, <a
+href="glossaries-extra-manual.html#dx1-26076" >64</a>, <a
+href="glossaries-extra-manual.html#dx1-26080" >65</a>, <a
+href="glossaries-extra-manual.html#dx1-26085" >66</a>, <a
+href="glossaries-extra-manual.html#dx1-27052" >67</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-desc-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27051" >68</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26101" >69</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-em-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26075" >70</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27048" >71</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25081" >72</a>, <a
+href="glossaries-extra-manual.html#dx1-26092" >73</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-sc-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26066" >74</a>, <a
+href="glossaries-extra-manual.html#dx1-28041" >75</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26097" >76</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-noshort-sm-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26071" >77</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-only-short-only</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25070" >78</a>, <a
+href="glossaries-extra-manual.html#dx1-27021" >79</a>, <a
+href="glossaries-extra-manual.html#dx1-27025" >80</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-only-short-only-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27024" >81</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-postshort-user</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27204" >82</a>, <a
+href="glossaries-extra-manual.html#dx1-27208" >83</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-postshort-user-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27207" >84</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12047" >85</a>, <a
+href="glossaries-extra-manual.html#dx1-13008" >86</a>, <a
+href="glossaries-extra-manual.html#dx1-13056" >87</a>, <a
+href="glossaries-extra-manual.html#dx1-21019" >88</a>, <a
+href="glossaries-extra-manual.html#dx1-25025" >89</a>, <a
+href="glossaries-extra-manual.html#dx1-25027" >90</a>, <a
+href="glossaries-extra-manual.html#dx1-27002" >91</a>, <a
+href="glossaries-extra-manual.html#dx1-27010" >92</a>, <a
+href="glossaries-extra-manual.html#dx1-27013" >93</a>, <a
+href="glossaries-extra-manual.html#dx1-27016" >94</a>, <a
+href="glossaries-extra-manual.html#dx1-27032" >95</a>, <a
+href="glossaries-extra-manual.html#dx1-27035" >96</a>, <a
+href="glossaries-extra-manual.html#dx1-27217" >97</a>, <a
+href="glossaries-extra-manual.html#dx1-28014" >98</a>, <a
+href="glossaries-extra-manual.html#dx1-28017" >99</a>, <a
+href="glossaries-extra-manual.html#dx1-28091" >100</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13016" >101</a>, <a
+href="glossaries-extra-manual.html#dx1-13022" >102</a>, <a
+href="glossaries-extra-manual.html#dx1-27054" >103</a>, <a
+href="glossaries-extra-manual.html#dx1-27063" >104</a>, <a
+href="glossaries-extra-manual.html#dx1-27066" >105</a>, <a
+href="glossaries-extra-manual.html#dx1-27069" >106</a>, <a
+href="glossaries-extra-manual.html#dx1-27078" >107</a>, <a
+href="glossaries-extra-manual.html#dx1-27085" >108</a>, <a
+href="glossaries-extra-manual.html#dx1-28090" >109</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25051" >110</a>, <a
+href="glossaries-extra-manual.html#dx1-25083" >111</a>, <a
+href="glossaries-extra-manual.html#dx1-27015" >112</a>, <a
+href="glossaries-extra-manual.html#dx1-27019" >113</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-em-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27068" >114</a>, <a
+href="glossaries-extra-manual.html#dx1-27072" >115</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13004" >116</a>, <a
+href="glossaries-extra-manual.html#dx1-25035" >117</a>, <a
+href="glossaries-extra-manual.html#dx1-27009" >118</a>, <a
+href="glossaries-extra-manual.html#dx1-27047" >119</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-sc-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13018" >120</a>, <a
+href="glossaries-extra-manual.html#dx1-27062" >121</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13006" >122</a>, <a
+href="glossaries-extra-manual.html#dx1-25045" >123</a>, <a
+href="glossaries-extra-manual.html#dx1-27012" >124</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-sm-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13020" >125</a>, <a
+href="glossaries-extra-manual.html#dx1-27065" >126</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-user</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25084" >127</a>, <a
+href="glossaries-extra-manual.html#dx1-27008" >128</a>, <a
+href="glossaries-extra-manual.html#dx1-27031" >129</a>, <a
+href="glossaries-extra-manual.html#dx1-27037" >130</a>, <a
+href="glossaries-extra-manual.html#dx1-27043" >131</a>, <a
+href="glossaries-extra-manual.html#dx1-27079" >132</a>, <a
+href="glossaries-extra-manual.html#dx1-27080" >133</a>, <a
+href="glossaries-extra-manual.html#dx1-27113" >134</a>, <a
+href="glossaries-extra-manual.html#dx1-27206" >135</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-short-user-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27077" >136</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolong-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26010" >137</a>, <a
+href="glossaries-extra-manual.html#dx1-27090" >138</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolong-short-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26031" >139</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolong-short-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27089" >140</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolong-short-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26017" >141</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nolong-short-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26024" >142</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">postfootnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27183" >143</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26008" >144</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26040" >145</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26029" >146</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26055" >147</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-footnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25102" >148</a>, <a
+href="glossaries-extra-manual.html#dx1-27170" >149</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-footnote-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25101" >150</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25052" >151</a>, <a
+href="glossaries-extra-manual.html#dx1-27106" >152</a>, <a
+href="glossaries-extra-manual.html#dx1-27110" >153</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27133" >154</a>, <a
+href="glossaries-extra-manual.html#dx1-27137" >155</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-long-em</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25057" >156</a>, <a
+href="glossaries-extra-manual.html#dx1-27109" >157</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-long-em-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27136" >158</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-nolong</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26026" >159</a>, <a
+href="glossaries-extra-manual.html#dx1-26030" >160</a>, <a
+href="glossaries-extra-manual.html#dx1-26032" >161</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-nolong-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26052" >162</a>, <a
+href="glossaries-extra-manual.html#dx1-26056" >163</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-em-postfootnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27193" >164</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-footnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13034" >165</a>, <a
+href="glossaries-extra-manual.html#dx1-21021" >166</a>, <a
+href="glossaries-extra-manual.html#dx1-25094" >167</a>, <a
+href="glossaries-extra-manual.html#dx1-27146" >168</a>, <a
+href="glossaries-extra-manual.html#dx1-27161" >169</a>, <a
+href="glossaries-extra-manual.html#dx1-27163" >170</a>, <a
+href="glossaries-extra-manual.html#dx1-27167" >171</a>, <a
+href="glossaries-extra-manual.html#dx1-27171" >172</a>, <a
+href="glossaries-extra-manual.html#dx1-27175" >173</a>, <a
+href="glossaries-extra-manual.html#dx1-28020" >174</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-footnote-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13040" >175</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-hyphen-long-hyphen</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27236" >176</a>, <a
+href="glossaries-extra-manual.html#dx1-27241" >177</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-hyphen-long-hyphen-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27240" >178</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-hyphen-postlong-hyphen</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27243" >179</a>, <a
+href="glossaries-extra-manual.html#dx1-27249" >180</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-hyphen-postlong-hyphen-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27248" >181</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13010" >182</a>, <a
+href="glossaries-extra-manual.html#dx1-21014" >183</a>, <a
+href="glossaries-extra-manual.html#dx1-25028" >184</a>, <a
+href="glossaries-extra-manual.html#dx1-25077" >185</a>, <a
+href="glossaries-extra-manual.html#dx1-25100" >186</a>, <a
+href="glossaries-extra-manual.html#dx1-27092" >187</a>, <a
+href="glossaries-extra-manual.html#dx1-27101" >188</a>, <a
+href="glossaries-extra-manual.html#dx1-27104" >189</a>, <a
+href="glossaries-extra-manual.html#dx1-27107" >190</a>, <a
+href="glossaries-extra-manual.html#dx1-28088" >191</a>, <a
+href="glossaries-extra-manual.html#dx1-28093" >192</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13024" >193</a>, <a
+href="glossaries-extra-manual.html#dx1-25099" >194</a>, <a
+href="glossaries-extra-manual.html#dx1-27121" >195</a>, <a
+href="glossaries-extra-manual.html#dx1-27128" >196</a>, <a
+href="glossaries-extra-manual.html#dx1-27131" >197</a>, <a
+href="glossaries-extra-manual.html#dx1-27134" >198</a>, <a
+href="glossaries-extra-manual.html#dx1-27140" >199</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-long-user</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27038" >200</a>, <a
+href="glossaries-extra-manual.html#dx1-27044" >201</a>, <a
+href="glossaries-extra-manual.html#dx1-27097" >202</a>, <a
+href="glossaries-extra-manual.html#dx1-27112" >203</a>, <a
+href="glossaries-extra-manual.html#dx1-27141" >204</a>, <a
+href="glossaries-extra-manual.html#dx1-27142" >205</a>, <a
+href="glossaries-extra-manual.html#dx1-27198" >206</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-long-user-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27139" >207</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-nolong</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-21012" >208</a>, <a
+href="glossaries-extra-manual.html#dx1-21020" >209</a>, <a
+href="glossaries-extra-manual.html#dx1-23003" >210</a>, <a
+href="glossaries-extra-manual.html#dx1-23018" >211</a>, <a
+href="glossaries-extra-manual.html#dx1-26002" >212</a>, <a
+href="glossaries-extra-manual.html#dx1-26009" >213</a>, <a
+href="glossaries-extra-manual.html#dx1-26011" >214</a>, <a
+href="glossaries-extra-manual.html#dx1-26013" >215</a>, <a
+href="glossaries-extra-manual.html#dx1-26020" >216</a>, <a
+href="glossaries-extra-manual.html#dx1-26027" >217</a>, <a
+href="glossaries-extra-manual.html#dx1-26034" >218</a>, <a
+href="glossaries-extra-manual.html#dx1-26038" >219</a>, <a
+href="glossaries-extra-manual.html#dx1-26043" >220</a>, <a
+href="glossaries-extra-manual.html#dx1-27087" >221</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-nolong-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26033" >222</a>, <a
+href="glossaries-extra-manual.html#dx1-26041" >223</a>, <a
+href="glossaries-extra-manual.html#dx1-26048" >224</a>, <a
+href="glossaries-extra-manual.html#dx1-26053" >225</a>, <a
+href="glossaries-extra-manual.html#dx1-27119" >226</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-nolong-desc-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27118" >227</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-nolong-noreg</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27086" >228</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-postfootnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8062" >229</a>, <a
+href="glossaries-extra-manual.html#dx1-8067" >230</a>, <a
+href="glossaries-extra-manual.html#dx1-27174" >231</a>, <a
+href="glossaries-extra-manual.html#dx1-27184" >232</a>, <a
+href="glossaries-extra-manual.html#dx1-27186" >233</a>, <a
+href="glossaries-extra-manual.html#dx1-27190" >234</a>, <a
+href="glossaries-extra-manual.html#dx1-27194" >235</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-postlong-user</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27197" >236</a>, <a
+href="glossaries-extra-manual.html#dx1-27201" >237</a>, <a
+href="glossaries-extra-manual.html#dx1-27205" >238</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-postlong-user-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27200" >239</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26015" >240</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26045" >241</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc-footnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13036" >242</a>, <a
+href="glossaries-extra-manual.html#dx1-27162" >243</a>, <a
+href="glossaries-extra-manual.html#dx1-27166" >244</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc-footnote-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13042" >245</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13012" >246</a>, <a
+href="glossaries-extra-manual.html#dx1-25036" >247</a>, <a
+href="glossaries-extra-manual.html#dx1-27100" >248</a>, <a
+href="glossaries-extra-manual.html#dx1-28092" >249</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc-long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13026" >250</a>, <a
+href="glossaries-extra-manual.html#dx1-27127" >251</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc-nolong</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26012" >252</a>, <a
+href="glossaries-extra-manual.html#dx1-26016" >253</a>, <a
+href="glossaries-extra-manual.html#dx1-26018" >254</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc-nolong-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26042" >255</a>, <a
+href="glossaries-extra-manual.html#dx1-26046" >256</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sc-postfootnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25095" >257</a>, <a
+href="glossaries-extra-manual.html#dx1-27185" >258</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26022" >259</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26050" >260</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm-footnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13038" >261</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm-footnote-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13044" >262</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13014" >263</a>, <a
+href="glossaries-extra-manual.html#dx1-25046" >264</a>, <a
+href="glossaries-extra-manual.html#dx1-27103" >265</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm-long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13028" >266</a>, <a
+href="glossaries-extra-manual.html#dx1-27130" >267</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm-nolong</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26019" >268</a>, <a
+href="glossaries-extra-manual.html#dx1-26023" >269</a>, <a
+href="glossaries-extra-manual.html#dx1-26025" >270</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm-nolong-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26047" >271</a>, <a
+href="glossaries-extra-manual.html#dx1-26051" >272</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short-sm-postfootnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27189" >273</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\abbreviationsname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4193" ><span
+class="cmti-10">274</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\abbrvpluralsuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28043" ><span
+class="cmti-10">275</span></a> <br /></span>
+<span class="index-item">acronym styles (glossaries):<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">dua</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13029" >276</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">dua-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13031" >277</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13033" >278</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13039" >279</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-sc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13035" >280</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-sc-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13041" >281</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-sm</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13037" >282</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">footnote-sm-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13043" >283</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sc-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13003" >284</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sc-short-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13017" >285</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-short-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13015" >286</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sm-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13005" >287</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sm-short-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13019" >288</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sp-short</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13007" >289</a>, <a
+href="glossaries-extra-manual.html#dx1-13053" >290</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">long-sp-short-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13021" >291</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">sc-short-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13011" >292</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">sc-short-long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13025" >293</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">short-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13009" >294</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">short-long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13023" >295</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">sm-short-long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13013" >296</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmtt-10">sm-short-long-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13027" >297</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">amsgen </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-10" >298</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">amsmath </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4132" >299</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\apptoglossarypreamble</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-45010" ><span
+class="cmti-10">300</span></a> <br /></span>
+<p class="theindex"> <span
+class="cmbx-10">B</span>
+<span class="index-item"><span
+class="cmss-10">babel </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3010" >301</a>, <a
+href="glossaries-extra-manual.html#dx1-3014" >302</a>, <a
+href="glossaries-extra-manual.html#dx1-4194" >303</a>, <a
+href="glossaries-extra-manual.html#dx1-4195" >304</a>, <a
+href="glossaries-extra-manual.html#dx1-4196" >305</a>, <a
+href="glossaries-extra-manual.html#dx1-30004" >306</a>, <a
+href="glossaries-extra-manual.html#dx1-46068" >307</a>, <a
+href="glossaries-extra-manual.html#dx1-54003" >308</a>, <a
+href="glossaries-extra-manual.html#dx1-54004" >309</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">bib2gls</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-2" >310</a>, <a
+href="glossaries-extra-manual.html#dx1-11" >311</a>, <a
+href="glossaries-extra-manual.html#dx1-4010" >312</a>, <a
+href="glossaries-extra-manual.html#dx1-4031" >313</a>, <a
+href="glossaries-extra-manual.html#dx1-4060" >314</a>, <a
+href="glossaries-extra-manual.html#dx1-4072" >315</a>, <a
+href="glossaries-extra-manual.html#dx1-4075" >316</a>, <a
+href="glossaries-extra-manual.html#dx1-4081" >317</a>, <a
+href="glossaries-extra-manual.html#dx1-4083" >318</a>, <a
+href="glossaries-extra-manual.html#dx1-4087" >319</a>, <a
+href="glossaries-extra-manual.html#dx1-4096" >320</a>, <a
+href="glossaries-extra-manual.html#dx1-4099" >321</a>, <a
+href="glossaries-extra-manual.html#dx1-4102" >322</a>, <a
+href="glossaries-extra-manual.html#dx1-4103" >323</a>, <a
+href="glossaries-extra-manual.html#dx1-4107" >324</a>, <a
+href="glossaries-extra-manual.html#dx1-4122" >325</a>, <a
+href="glossaries-extra-manual.html#dx1-4147" >326</a>, <a
+href="glossaries-extra-manual.html#dx1-4148" >327</a>, <a
+href="glossaries-extra-manual.html#dx1-4152" >328</a>, <a
+href="glossaries-extra-manual.html#dx1-5034" >329</a>, <a
+href="glossaries-extra-manual.html#dx1-6046" >330</a>, <a
+href="glossaries-extra-manual.html#dx1-6057" >331</a>, <a
+href="glossaries-extra-manual.html#dx1-9001" >332</a>, <a
+href="glossaries-extra-manual.html#dx1-10006" >333</a>, <a
+href="glossaries-extra-manual.html#dx1-14007" >334</a>, <a
+href="glossaries-extra-manual.html#dx1-14008" >335</a>, <a
+href="glossaries-extra-manual.html#dx1-14022" >336</a>, <a
+href="glossaries-extra-manual.html#dx1-14035" >337</a>, <a
+href="glossaries-extra-manual.html#dx1-14038" >338</a>, <a
+href="glossaries-extra-manual.html#dx1-15028" >339</a>, <a
+href="glossaries-extra-manual.html#dx1-15029" >340</a>, <a
+href="glossaries-extra-manual.html#dx1-15030" >341</a>, <a
+href="glossaries-extra-manual.html#dx1-16019" >342</a>, <a
+href="glossaries-extra-manual.html#dx1-19012" >343</a>, <a
+href="glossaries-extra-manual.html#dx1-20077" >344</a>, <a
+href="glossaries-extra-manual.html#dx1-20078" >345</a>, <a
+href="glossaries-extra-manual.html#dx1-30160" >346</a>, <a
+href="glossaries-extra-manual.html#dx1-31005" >347</a>, <a
+href="glossaries-extra-manual.html#dx1-34009" >348</a>, <a
+href="glossaries-extra-manual.html#dx1-36001" >349</a>, <a
+href="glossaries-extra-manual.html#dx1-36002" >350</a>, <a
+href="glossaries-extra-manual.html#dx1-36004" >351</a>, <a
+href="glossaries-extra-manual.html#dx1-36005" >352</a>, <a
+href="glossaries-extra-manual.html#dx1-36006" >353</a>, <a
+href="glossaries-extra-manual.html#dx1-36007" >354</a>, <a
+href="glossaries-extra-manual.html#dx1-36008" >355</a>, <a
+href="glossaries-extra-manual.html#dx1-36009" >356</a>, <a
+href="glossaries-extra-manual.html#dx1-36011" >357</a>, <a
+href="glossaries-extra-manual.html#dx1-36014" >358</a>, <a
+href="glossaries-extra-manual.html#dx1-36016" >359</a>, <a
+href="glossaries-extra-manual.html#dx1-36023" >360</a>, <a
+href="glossaries-extra-manual.html#dx1-37001" >361</a>, <a
+href="glossaries-extra-manual.html#dx1-37002" >362</a>, <a
+href="glossaries-extra-manual.html#dx1-37003" >363</a>, <a
+href="glossaries-extra-manual.html#dx1-37004" >364</a>, <a
+href="glossaries-extra-manual.html#dx1-37005" >365</a>, <a
+href="glossaries-extra-manual.html#dx1-37006" >366</a>, <a
+href="glossaries-extra-manual.html#dx1-38001" >367</a>, <a
+href="glossaries-extra-manual.html#dx1-38002" >368</a>, <a
+href="glossaries-extra-manual.html#dx1-38004" >369</a>, <a
+href="glossaries-extra-manual.html#dx1-38005" >370</a>, <a
+href="glossaries-extra-manual.html#dx1-38006" >371</a>, <a
+href="glossaries-extra-manual.html#dx1-38007" >372</a>, <a
+href="glossaries-extra-manual.html#dx1-38010" >373</a>, <a
+href="glossaries-extra-manual.html#dx1-38013" >374</a>, <a
+href="glossaries-extra-manual.html#dx1-39004" >375</a>, <a
+href="glossaries-extra-manual.html#dx1-39018" >376</a>, <a
+href="glossaries-extra-manual.html#dx1-39019" >377</a>, <a
+href="glossaries-extra-manual.html#dx1-39020" >378</a>, <a
+href="glossaries-extra-manual.html#dx1-39026" >379</a>, <a
+href="glossaries-extra-manual.html#dx1-39027" >380</a>, <a
+href="glossaries-extra-manual.html#dx1-39028" >381</a>, <a
+href="glossaries-extra-manual.html#dx1-39032" >382</a>, <a
+href="glossaries-extra-manual.html#dx1-39033" >383</a>, <a
+href="glossaries-extra-manual.html#dx1-40002" >384</a>, <a
+href="glossaries-extra-manual.html#dx1-41002" >385</a>, <a
+href="glossaries-extra-manual.html#dx1-41004" >386</a>, <a
+href="glossaries-extra-manual.html#dx1-41009" >387</a>, <a
+href="glossaries-extra-manual.html#dx1-41011" >388</a>, <a
+href="glossaries-extra-manual.html#dx1-41013" >389</a>, <a
+href="glossaries-extra-manual.html#dx1-41017" >390</a>, <a
+href="glossaries-extra-manual.html#dx1-41024" >391</a>, <a
+href="glossaries-extra-manual.html#dx1-41026" >392</a>, <a
+href="glossaries-extra-manual.html#dx1-41027" >393</a>, <a
+href="glossaries-extra-manual.html#dx1-42003" >394</a>, <a
+href="glossaries-extra-manual.html#dx1-42006" >395</a>, <a
+href="glossaries-extra-manual.html#dx1-42007" >396</a>, <a
+href="glossaries-extra-manual.html#dx1-42028" >397</a>, <a
+href="glossaries-extra-manual.html#dx1-42036" >398</a>, <a
+href="glossaries-extra-manual.html#dx1-42045" >399</a>, <a
+href="glossaries-extra-manual.html#dx1-42115" >400</a>, <a
+href="glossaries-extra-manual.html#dx1-43001" >401</a>, <a
+href="glossaries-extra-manual.html#dx1-43002" >402</a>, <a
+href="glossaries-extra-manual.html#dx1-43011" >403</a>, <a
+href="glossaries-extra-manual.html#dx1-43013" >404</a>, <a
+href="glossaries-extra-manual.html#dx1-43026" >405</a>, <a
+href="glossaries-extra-manual.html#dx1-43027" >406</a>, <a
+href="glossaries-extra-manual.html#dx1-43028" >407</a>, <a
+href="glossaries-extra-manual.html#dx1-44001" >408</a>, <a
+href="glossaries-extra-manual.html#dx1-44002" >409</a>, <a
+href="glossaries-extra-manual.html#dx1-44003" >410</a>, <a
+href="glossaries-extra-manual.html#dx1-44005" >411</a>, <a
+href="glossaries-extra-manual.html#dx1-44023" >412</a>, <a
+href="glossaries-extra-manual.html#dx1-47007" >413</a>, <a
+href="glossaries-extra-manual.html#dx1-47016" >414</a>, <a
+href="glossaries-extra-manual.html#dx1-47038" >415</a>, <a
+href="glossaries-extra-manual.html#dx1-49002" >416</a>, <a
+href="glossaries-extra-manual.html#dx1-49013" >417</a>, <a
+href="glossaries-extra-manual.html#dx1-54010" >418</a>, <a
+href="glossaries-extra-manual.html#dx1-55001" ><span
+class="cmbx-10">419</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">C</span>
+<span class="index-item">categories:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">abbreviation</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-9004" >420</a>, <a
+href="glossaries-extra-manual.html#dx1-21015" >421</a>, <a
+href="glossaries-extra-manual.html#dx1-22007" >422</a>, <a
+href="glossaries-extra-manual.html#dx1-30008" >423</a>, <a
+href="glossaries-extra-manual.html#dx1-33015" >424</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">acronym</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18022" >425</a>, <a
+href="glossaries-extra-manual.html#dx1-21013" >426</a>, <a
+href="glossaries-extra-manual.html#dx1-22006" >427</a>, <a
+href="glossaries-extra-manual.html#dx1-30009" >428</a>, <a
+href="glossaries-extra-manual.html#dx1-30023" >429</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">general</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8037" >430</a>, <a
+href="glossaries-extra-manual.html#dx1-8066" >431</a>, <a
+href="glossaries-extra-manual.html#dx1-18021" >432</a>, <a
+href="glossaries-extra-manual.html#dx1-18025" >433</a>, <a
+href="glossaries-extra-manual.html#dx1-30007" >434</a>, <a
+href="glossaries-extra-manual.html#dx1-30022" >435</a>, <a
+href="glossaries-extra-manual.html#dx1-30171" >436</a>, <a
+href="glossaries-extra-manual.html#dx1-32040" >437</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">index</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5050" >438</a>, <a
+href="glossaries-extra-manual.html#dx1-30012" >439</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">number</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30018" >440</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbol</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8045" >441</a>, <a
+href="glossaries-extra-manual.html#dx1-30015" >442</a> <br /></span>
+<span class="index-item">category attributes:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">accessaposplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30099" >443</a>, <a
+href="glossaries-extra-manual.html#dx1-30109" >444</a>, <a
+href="glossaries-extra-manual.html#dx1-30113" >445</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">accessinsertdots</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30080" >446</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">accessnoshortplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30110" >447</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">aposplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-11036" >448</a>, <a
+href="glossaries-extra-manual.html#dx1-25043" >449</a>, <a
+href="glossaries-extra-manual.html#dx1-30071" >450</a>, <a
+href="glossaries-extra-manual.html#dx1-30079" >451</a>, <a
+href="glossaries-extra-manual.html#dx1-30100" >452</a>, <a
+href="glossaries-extra-manual.html#dx1-30104" >453</a>, <a
+href="glossaries-extra-manual.html#dx1-30106" >454</a>, <a
+href="glossaries-extra-manual.html#dx1-30108" >455</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">discardperiod</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8032" >456</a>, <a
+href="glossaries-extra-manual.html#dx1-30042" >457</a>, <a
+href="glossaries-extra-manual.html#dx1-30049" >458</a>, <a
+href="glossaries-extra-manual.html#dx1-30052" >459</a>, <a
+href="glossaries-extra-manual.html#dx1-30070" >460</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">dualindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30148" >461</a>, <a
+href="glossaries-extra-manual.html#dx1-34002" >462</a>, <a
+href="glossaries-extra-manual.html#dx1-34015" >463</a>, <a
+href="glossaries-extra-manual.html#dx1-34031" >464</a>, <a
+href="glossaries-extra-manual.html#dx1-34038" >465</a>, <a
+href="glossaries-extra-manual.html#dx1-34041" >466</a>, <a
+href="glossaries-extra-manual.html#dx1-53003" >467</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">entrycount</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-9003" >468</a>, <a
+href="glossaries-extra-manual.html#dx1-30119" >469</a>, <a
+href="glossaries-extra-manual.html#dx1-30123" >470</a>, <a
+href="glossaries-extra-manual.html#dx1-32002" >471</a>, <a
+href="glossaries-extra-manual.html#dx1-32007" >472</a>, <a
+href="glossaries-extra-manual.html#dx1-32019" >473</a>, <a
+href="glossaries-extra-manual.html#dx1-32023" >474</a>, <a
+href="glossaries-extra-manual.html#dx1-32024" >475</a>, <a
+href="glossaries-extra-manual.html#dx1-32028" >476</a>, <a
+href="glossaries-extra-manual.html#dx1-32029" >477</a>, <a
+href="glossaries-extra-manual.html#dx1-32033" >478</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">externallocation</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6052" >479</a>, <a
+href="glossaries-extra-manual.html#dx1-6056" >480</a>, <a
+href="glossaries-extra-manual.html#dx1-30159" >481</a>, <a
+href="glossaries-extra-manual.html#dx1-40003" >482</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">firstshortaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30096" >483</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">glossdesc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18004" >484</a>, <a
+href="glossaries-extra-manual.html#dx1-30128" >485</a>, <a
+href="glossaries-extra-manual.html#dx1-30138" >486</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">glossdescfont</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18005" >487</a>, <a
+href="glossaries-extra-manual.html#dx1-30135" >488</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">glossname</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18003" >489</a>, <a
+href="glossaries-extra-manual.html#dx1-18008" >490</a>, <a
+href="glossaries-extra-manual.html#dx1-30137" >491</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">glossnamefont</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18009" >492</a>, <a
+href="glossaries-extra-manual.html#dx1-30143" >493</a>, <a
+href="glossaries-extra-manual.html#dx1-48011" >494</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">headuc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12059" >495</a>, <a
+href="glossaries-extra-manual.html#dx1-29018" >496</a>, <a
+href="glossaries-extra-manual.html#dx1-29020" >497</a>, <a
+href="glossaries-extra-manual.html#dx1-30114" >498</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">hyperoutside</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6019" >499</a>, <a
+href="glossaries-extra-manual.html#dx1-30146" >500</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">indexname</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18014" >501</a>, <a
+href="glossaries-extra-manual.html#dx1-30140" >502</a>, <a
+href="glossaries-extra-manual.html#dx1-34001" >503</a>, <a
+href="glossaries-extra-manual.html#dx1-34013" >504</a>, <a
+href="glossaries-extra-manual.html#dx1-53004" >505</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">indexonlyfirst</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6007" >506</a>, <a
+href="glossaries-extra-manual.html#dx1-30037" >507</a>, <a
+href="glossaries-extra-manual.html#dx1-34039" >508</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">insertdots</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-21004" >509</a>, <a
+href="glossaries-extra-manual.html#dx1-30064" >510</a>, <a
+href="glossaries-extra-manual.html#dx1-30066" >511</a>, <a
+href="glossaries-extra-manual.html#dx1-30083" >512</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">linkcount</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30124" >513</a>, <a
+href="glossaries-extra-manual.html#dx1-33003" >514</a>, <a
+href="glossaries-extra-manual.html#dx1-33016" >515</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">linkcountmaster</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30126" >516</a>, <a
+href="glossaries-extra-manual.html#dx1-33004" >517</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">markshortwords</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30061" >518</a>, <a
+href="glossaries-extra-manual.html#dx1-30068" >519</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">markwords</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27212" >520</a>, <a
+href="glossaries-extra-manual.html#dx1-27215" >521</a>, <a
+href="glossaries-extra-manual.html#dx1-27218" >522</a>, <a
+href="glossaries-extra-manual.html#dx1-28032" >523</a>, <a
+href="glossaries-extra-manual.html#dx1-30054" >524</a>, <a
+href="glossaries-extra-manual.html#dx1-30062" >525</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nameshortaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30087" >526</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nohyper</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30034" >527</a>, <a
+href="glossaries-extra-manual.html#dx1-30172" >528</a>, <a
+href="glossaries-extra-manual.html#dx1-30173" >529</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nohyperfirst</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27148" >530</a>, <a
+href="glossaries-extra-manual.html#dx1-28021" >531</a>, <a
+href="glossaries-extra-manual.html#dx1-28023" >532</a>, <a
+href="glossaries-extra-manual.html#dx1-30025" >533</a>, <a
+href="glossaries-extra-manual.html#dx1-30032" >534</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">noshortplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-11037" >535</a>, <a
+href="glossaries-extra-manual.html#dx1-21005" >536</a>, <a
+href="glossaries-extra-manual.html#dx1-25044" >537</a>, <a
+href="glossaries-extra-manual.html#dx1-30074" >538</a>, <a
+href="glossaries-extra-manual.html#dx1-30075" >539</a>, <a
+href="glossaries-extra-manual.html#dx1-30111" >540</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">pluraldiscardperiod</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30048" >541</a>, <a
+href="glossaries-extra-manual.html#dx1-30053" >542</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">recordcount</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44015" >543</a>, <a
+href="glossaries-extra-manual.html#dx1-44017" >544</a>, <a
+href="glossaries-extra-manual.html#dx1-44019" >545</a>, <a
+href="glossaries-extra-manual.html#dx1-44021" >546</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">regular</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8010" >547</a>, <a
+href="glossaries-extra-manual.html#dx1-8019" >548</a>, <a
+href="glossaries-extra-manual.html#dx1-8022" >549</a>, <a
+href="glossaries-extra-manual.html#dx1-23004" >550</a>, <a
+href="glossaries-extra-manual.html#dx1-25005" >551</a>, <a
+href="glossaries-extra-manual.html#dx1-25014" >552</a>, <a
+href="glossaries-extra-manual.html#dx1-25087" >553</a>, <a
+href="glossaries-extra-manual.html#dx1-25089" >554</a>, <a
+href="glossaries-extra-manual.html#dx1-25092" >555</a>, <a
+href="glossaries-extra-manual.html#dx1-26001" >556</a>, <a
+href="glossaries-extra-manual.html#dx1-26111" >557</a>, <a
+href="glossaries-extra-manual.html#dx1-27001" >558</a>, <a
+href="glossaries-extra-manual.html#dx1-27030" >559</a>, <a
+href="glossaries-extra-manual.html#dx1-27050" >560</a>, <a
+href="glossaries-extra-manual.html#dx1-27053" >561</a>, <a
+href="glossaries-extra-manual.html#dx1-27076" >562</a>, <a
+href="glossaries-extra-manual.html#dx1-27088" >563</a>, <a
+href="glossaries-extra-manual.html#dx1-27091" >564</a>, <a
+href="glossaries-extra-manual.html#dx1-27120" >565</a>, <a
+href="glossaries-extra-manual.html#dx1-28022" >566</a>, <a
+href="glossaries-extra-manual.html#dx1-28053" >567</a>, <a
+href="glossaries-extra-manual.html#dx1-28057" >568</a>, <a
+href="glossaries-extra-manual.html#dx1-28061" >569</a>, <a
+href="glossaries-extra-manual.html#dx1-28065" >570</a>, <a
+href="glossaries-extra-manual.html#dx1-28081" >571</a>, <a
+href="glossaries-extra-manual.html#dx1-30024" >572</a>, <a
+href="glossaries-extra-manual.html#dx1-30162" >573</a>, <a
+href="glossaries-extra-manual.html#dx1-30175" >574</a>, <a
+href="glossaries-extra-manual.html#dx1-30178" >575</a>, <a
+href="glossaries-extra-manual.html#dx1-30179" >576</a>, <a
+href="glossaries-extra-manual.html#dx1-30182" >577</a>, <a
+href="glossaries-extra-manual.html#dx1-44031" >578</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">retainfirstuseperiod</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30050" >579</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">tagging</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-22002" >580</a>, <a
+href="glossaries-extra-manual.html#dx1-22005" >581</a>, <a
+href="glossaries-extra-manual.html#dx1-22008" >582</a>, <a
+href="glossaries-extra-manual.html#dx1-30116" >583</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">targetcategory</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30157" >584</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">targetname</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30154" >585</a>, <a
+href="glossaries-extra-manual.html#dx1-30156" >586</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">targeturl</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5016" >587</a>, <a
+href="glossaries-extra-manual.html#dx1-30152" >588</a>, <a
+href="glossaries-extra-manual.html#dx1-30155" >589</a>, <a
+href="glossaries-extra-manual.html#dx1-49006" >590</a>, <a
+href="glossaries-extra-manual.html#dx1-53009" >591</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">textformat</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6020" >592</a>, <a
+href="glossaries-extra-manual.html#dx1-6023" >593</a>, <a
+href="glossaries-extra-manual.html#dx1-8028" >594</a>, <a
+href="glossaries-extra-manual.html#dx1-10017" >595</a>, <a
+href="glossaries-extra-manual.html#dx1-30145" >596</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">textshortaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30093" >597</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">unitcount</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32034" >598</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">wrgloss</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6015" >599</a>, <a
+href="glossaries-extra-manual.html#dx1-30039" >600</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\cGLS</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32015" ><span
+class="cmti-10">601</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\cGLSformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32017" ><span
+class="cmti-10">602</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\cGLSpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32016" ><span
+class="cmti-10">603</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\cGLSplformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32018" ><span
+class="cmti-10">604</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">convertgls2bib</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-36003" >605</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\csGlsXtrLetField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46026" ><span
+class="cmti-10">606</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\CustomAbbreviationFields</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28006" ><span
+class="cmti-10">607</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">D</span>
+<span class="index-item"><span
+class="cmss-10">datatool-base </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-9" >608</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dGLS</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43022" ><span
+class="cmti-10">609</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dGls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43020" ><span
+class="cmti-10">610</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dgls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43018" ><span
+class="cmti-10">611</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dglsdisp</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43025" ><span
+class="cmti-10">612</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dglslink</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43024" ><span
+class="cmti-10">613</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dGLSpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43023" ><span
+class="cmti-10">614</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dGlspl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43021" ><span
+class="cmti-10">615</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\dglspl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43019" ><span
+class="cmti-10">616</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">E</span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\eglssetwidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20069" ><span
+class="cmti-10">617</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\eglsupdatewidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20073" ><span
+class="cmti-10">618</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\eGlsXtrSetField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46023" ><span
+class="cmti-10">619</span></a> <br /></span>
+<span class="index-item">entry location&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-55004" ><span
+class="cmbx-10">620</span></a>, <a
+href="glossaries-extra-manual.html#dx1-55024" >621</a>, <a
+href="glossaries-extra-manual.html#dx1-55035" >622</a> <br /></span>
+
+
+
+<span class="index-item"><span
+class="cmss-10">entrycounter </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-48020" >623</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">equation </span>(counter)&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4109" >624</a>, <a
+href="glossaries-extra-manual.html#dx1-4134" >625</a>, <a
+href="glossaries-extra-manual.html#dx1-6034" >626</a>, <a
+href="glossaries-extra-manual.html#dx1-41008" >627</a>, <a
+href="glossaries-extra-manual.html#dx1-41021" >628</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">etoolbox </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5" >629</a>, <a
+href="glossaries-extra-manual.html#dx1-30168" >630</a>, <a
+href="glossaries-extra-manual.html#dx1-33010" >631</a>, <a
+href="glossaries-extra-manual.html#dx1-46019" >632</a>, <a
+href="glossaries-extra-manual.html#dx1-46035" >633</a>, <a
+href="glossaries-extra-manual.html#dx1-46046" >634</a>, <a
+href="glossaries-extra-manual.html#dx1-46047" >635</a>, <a
+href="glossaries-extra-manual.html#dx1-46056" >636</a>, <a
+href="glossaries-extra-manual.html#dx1-46058" >637</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">F</span>
+<span class="index-item"><span
+class="cmss-10">fancyhdr </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14049" >638</a> <br /></span>
+<span class="index-item">first use&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6005" >639</a>, <a
+href="glossaries-extra-manual.html#dx1-8015" >640</a>, <a
+href="glossaries-extra-manual.html#dx1-8043" >641</a>, <a
+href="glossaries-extra-manual.html#dx1-8044" >642</a>, <a
+href="glossaries-extra-manual.html#dx1-8047" >643</a>, <a
+href="glossaries-extra-manual.html#dx1-8049" >644</a>, <a
+href="glossaries-extra-manual.html#dx1-8054" >645</a>, <a
+href="glossaries-extra-manual.html#dx1-8058" >646</a>, <a
+href="glossaries-extra-manual.html#dx1-8061" >647</a>, <a
+href="glossaries-extra-manual.html#dx1-8063" >648</a>, <a
+href="glossaries-extra-manual.html#dx1-8065" >649</a>, <a
+href="glossaries-extra-manual.html#dx1-12008" >650</a>, <a
+href="glossaries-extra-manual.html#dx1-12019" >651</a>, <a
+href="glossaries-extra-manual.html#dx1-12020" >652</a>, <a
+href="glossaries-extra-manual.html#dx1-12021" >653</a>, <a
+href="glossaries-extra-manual.html#dx1-12022" >654</a>, <a
+href="glossaries-extra-manual.html#dx1-12026" >655</a>, <a
+href="glossaries-extra-manual.html#dx1-12030" >656</a>, <a
+href="glossaries-extra-manual.html#dx1-12034" >657</a>, <a
+href="glossaries-extra-manual.html#dx1-12048" >658</a>, <a
+href="glossaries-extra-manual.html#dx1-12049" >659</a>, <a
+href="glossaries-extra-manual.html#dx1-13057" >660</a>, <a
+href="glossaries-extra-manual.html#dx1-13058" >661</a>, <a
+href="glossaries-extra-manual.html#dx1-21001" >662</a>, <a
+href="glossaries-extra-manual.html#dx1-21016" >663</a>, <a
+href="glossaries-extra-manual.html#dx1-23017" >664</a>, <a
+href="glossaries-extra-manual.html#dx1-23019" >665</a>, <a
+href="glossaries-extra-manual.html#dx1-25006" >666</a>, <a
+href="glossaries-extra-manual.html#dx1-25020" >667</a>, <a
+href="glossaries-extra-manual.html#dx1-26003" >668</a>, <a
+href="glossaries-extra-manual.html#dx1-27003" >669</a>, <a
+href="glossaries-extra-manual.html#dx1-27055" >670</a>, <a
+href="glossaries-extra-manual.html#dx1-27093" >671</a>, <a
+href="glossaries-extra-manual.html#dx1-27122" >672</a>, <a
+href="glossaries-extra-manual.html#dx1-27147" >673</a>, <a
+href="glossaries-extra-manual.html#dx1-27149" >674</a>, <a
+href="glossaries-extra-manual.html#dx1-27156" >675</a>, <a
+href="glossaries-extra-manual.html#dx1-27178" >676</a>, <a
+href="glossaries-extra-manual.html#dx1-27182" >677</a>, <a
+href="glossaries-extra-manual.html#dx1-28044" >678</a>, <a
+href="glossaries-extra-manual.html#dx1-28048" >679</a>, <a
+href="glossaries-extra-manual.html#dx1-28052" >680</a>, <a
+href="glossaries-extra-manual.html#dx1-28056" >681</a>, <a
+href="glossaries-extra-manual.html#dx1-28060" >682</a>, <a
+href="glossaries-extra-manual.html#dx1-28064" >683</a>, <a
+href="glossaries-extra-manual.html#dx1-30027" >684</a>, <a
+href="glossaries-extra-manual.html#dx1-30029" >685</a>, <a
+href="glossaries-extra-manual.html#dx1-30051" >686</a>, <a
+href="glossaries-extra-manual.html#dx1-32039" >687</a>, <a
+href="glossaries-extra-manual.html#dx1-53001" >688</a>, <a
+href="glossaries-extra-manual.html#dx1-55005" ><span
+class="cmbx-10">689</span></a>, <a
+href="glossaries-extra-manual.html#dx1-55014" >690</a>, <a
+href="glossaries-extra-manual.html#dx1-55016" >691</a> <br /></span>
+<span class="index-item">first use flag&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8052" >692</a>, <a
+href="glossaries-extra-manual.html#dx1-10008" >693</a>, <a
+href="glossaries-extra-manual.html#dx1-29001" >694</a>, <a
+href="glossaries-extra-manual.html#dx1-32004" >695</a>, <a
+href="glossaries-extra-manual.html#dx1-32022" >696</a>, <a
+href="glossaries-extra-manual.html#dx1-44024" >697</a>, <a
+href="glossaries-extra-manual.html#dx1-55013" ><span
+class="cmbx-10">698</span></a> <br /></span>
+<span class="index-item">first use text&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-55015" ><span
+class="cmbx-10">699</span></a>, <a
+href="glossaries-extra-manual.html#dx1-55038" >700</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">fontenc </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25024" >701</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">G</span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gglssetwidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20067" ><span
+class="cmti-10">702</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gglsupdatewidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20072" ><span
+class="cmti-10">703</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\gGlsXtrSetField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46022" ><span
+class="cmti-10">704</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5038" >705</a>, <a
+href="glossaries-extra-manual.html#dx1-7025" >706</a>, <a
+href="glossaries-extra-manual.html#dx1-7028" >707</a>, <a
+href="glossaries-extra-manual.html#dx1-7030" >708</a>, <a
+href="glossaries-extra-manual.html#dx1-7069" >709</a>, <a
+href="glossaries-extra-manual.html#dx1-11001" >710</a>, <a
+href="glossaries-extra-manual.html#dx1-11003" >711</a>, <a
+href="glossaries-extra-manual.html#dx1-11012" >712</a>, <a
+href="glossaries-extra-manual.html#dx1-11029" >713</a>, <a
+href="glossaries-extra-manual.html#dx1-17003" >714</a>, <a
+href="glossaries-extra-manual.html#dx1-17004" >715</a>, <a
+href="glossaries-extra-manual.html#dx1-20035" >716</a>, <a
+href="glossaries-extra-manual.html#dx1-30031" >717</a>, <a
+href="glossaries-extra-manual.html#dx1-41007" >718</a>, <a
+href="glossaries-extra-manual.html#dx1-41012" >719</a>, <a
+href="glossaries-extra-manual.html#dx1-42009" >720</a>, <a
+href="glossaries-extra-manual.html#dx1-42034" >721</a>, <a
+href="glossaries-extra-manual.html#dx1-46043" >722</a>, <a
+href="glossaries-extra-manual.html#dx1-46060" >723</a>, <a
+href="glossaries-extra-manual.html#dx1-47018" >724</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-accsupp </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4034" >725</a>, <a
+href="glossaries-extra-manual.html#dx1-4035" >726</a>, <a
+href="glossaries-extra-manual.html#dx1-4038" >727</a>, <a
+href="glossaries-extra-manual.html#dx1-4041" >728</a>, <a
+href="glossaries-extra-manual.html#dx1-28086" >729</a>, <a
+href="glossaries-extra-manual.html#dx1-28087" >730</a>, <a
+href="glossaries-extra-manual.html#dx1-30081" >731</a>, <a
+href="glossaries-extra-manual.html#dx1-48018" >732</a>, <a
+href="glossaries-extra-manual.html#dx1-50002" >733</a>, <a
+href="glossaries-extra-manual.html#dx1-52001" >734</a>, <a
+href="glossaries-extra-manual.html#dx1-52003" >735</a>, <a
+href="glossaries-extra-manual.html#dx1-52004" >736</a>, <a
+href="glossaries-extra-manual.html#dx1-52007" >737</a>, <a
+href="glossaries-extra-manual.html#dx1-52009" >738</a>, <a
+href="glossaries-extra-manual.html#dx1-52011" >739</a>, <a
+href="glossaries-extra-manual.html#dx1-52012" >740</a>, <a
+href="glossaries-extra-manual.html#dx1-53021" >741</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-extra </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5011" >742</a>, <a
+href="glossaries-extra-manual.html#dx1-5040" >743</a>, <a
+href="glossaries-extra-manual.html#dx1-7032" >744</a>, <a
+href="glossaries-extra-manual.html#dx1-7035" >745</a>, <a
+href="glossaries-extra-manual.html#dx1-17005" >746</a>, <a
+href="glossaries-extra-manual.html#dx1-42027" >747</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-extra-bib2gls </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4077" >748</a>, <a
+href="glossaries-extra-manual.html#dx1-4078" >749</a>, <a
+href="glossaries-extra-manual.html#dx1-4104" >750</a>, <a
+href="glossaries-extra-manual.html#dx1-4190" >751</a>, <a
+href="glossaries-extra-manual.html#dx1-4207" >752</a>, <a
+href="glossaries-extra-manual.html#dx1-4212" >753</a>, <a
+href="glossaries-extra-manual.html#dx1-4217" >754</a>, <a
+href="glossaries-extra-manual.html#dx1-4222" >755</a>, <a
+href="glossaries-extra-manual.html#dx1-39003" >756</a>, <a
+href="glossaries-extra-manual.html#dx1-39008" >757</a>, <a
+href="glossaries-extra-manual.html#dx1-39017" >758</a>, <a
+href="glossaries-extra-manual.html#dx1-42011" >759</a>, <a
+href="glossaries-extra-manual.html#dx1-42037" >760</a>, <a
+href="glossaries-extra-manual.html#dx1-54007" >761</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-extra-stylemods </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4026" >762</a>, <a
+href="glossaries-extra-manual.html#dx1-4043" >763</a>, <a
+href="glossaries-extra-manual.html#dx1-17001" >764</a>, <a
+href="glossaries-extra-manual.html#dx1-20001" >765</a>, <a
+href="glossaries-extra-manual.html#dx1-20002" >766</a>, <a
+href="glossaries-extra-manual.html#dx1-20039" >767</a>, <a
+href="glossaries-extra-manual.html#dx1-39035" >768</a>, <a
+href="glossaries-extra-manual.html#dx1-47004" >769</a>, <a
+href="glossaries-extra-manual.html#dx1-53011" >770</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossaries-prefix </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-50001" >771</a>, <a
+href="glossaries-extra-manual.html#dx1-51001" >772</a>, <a
+href="glossaries-extra-manual.html#dx1-53022" >773</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossariesextrasetup</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4249" ><span
+class="cmti-10">774</span></a> <br /></span>
+<span class="index-item">glossary styles:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">altlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20023" >775</a>, <a
+href="glossaries-extra-manual.html#dx1-20026" >776</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">alttree</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15026" >777</a>, <a
+href="glossaries-extra-manual.html#dx1-15027" >778</a>, <a
+href="glossaries-extra-manual.html#dx1-16004" >779</a>, <a
+href="glossaries-extra-manual.html#dx1-20057" >780</a>, <a
+href="glossaries-extra-manual.html#dx1-20064" >781</a>, <a
+href="glossaries-extra-manual.html#dx1-20082" >782</a>, <a
+href="glossaries-extra-manual.html#dx1-20101" >783</a>, <a
+href="glossaries-extra-manual.html#dx1-20104" >784</a>, <a
+href="glossaries-extra-manual.html#dx1-39030" >785</a>, <a
+href="glossaries-extra-manual.html#dx1-39036" >786</a>, <a
+href="glossaries-extra-manual.html#dx1-53012" >787</a>, <a
+href="glossaries-extra-manual.html#dx1-53013" >788</a>, <a
+href="glossaries-extra-manual.html#dx1-53014" >789</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">bookindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14002" >790</a>, <a
+href="glossaries-extra-manual.html#dx1-14006" >791</a>, <a
+href="glossaries-extra-manual.html#dx1-14036" >792</a>, <a
+href="glossaries-extra-manual.html#dx1-14037" >793</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">index</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20045" >794</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">inline</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20006" >795</a>, <a
+href="glossaries-extra-manual.html#dx1-20008" >796</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">list</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20018" >797</a>, <a
+href="glossaries-extra-manual.html#dx1-20022" >798</a>, <a
+href="glossaries-extra-manual.html#dx1-20025" >799</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">listdotted</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20024" >800</a>, <a
+href="glossaries-extra-manual.html#dx1-20027" >801</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20012" >802</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-desc-name</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15066" >803</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-desc-sym-name</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15133" >804</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-loc-desc-name</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15075" >805</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-loc-desc-sym-name</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15141" >806</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-loc-sym-desc-name</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15125" >807</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-name-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15044" >808</a>, <a
+href="glossaries-extra-manual.html#dx1-15058" >809</a>, <a
+href="glossaries-extra-manual.html#dx1-15067" >810</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-name-desc-loc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15057" >811</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-name-desc-sym</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15083" >812</a>, <a
+href="glossaries-extra-manual.html#dx1-15100" >813</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-name-desc-sym-loc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15091" >814</a>, <a
+href="glossaries-extra-manual.html#dx1-15109" >815</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-name-sym-desc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15099" >816</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-name-sym-desc-loc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15108" >817</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long-sym-desc-name</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15117" >818</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long3col</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20004" >819</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">longragged-booktabs</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15045" >820</a>, <a
+href="glossaries-extra-manual.html#dx1-15048" >821</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">mcolindexgroup</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14003" >822</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">topic</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16006" >823</a>, <a
+href="glossaries-extra-manual.html#dx1-16010" >824</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">topicmcols</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16009" >825</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">tree</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16005" >826</a>, <a
+href="glossaries-extra-manual.html#dx1-16007" >827</a>, <a
+href="glossaries-extra-manual.html#dx1-20046" >828</a>, <a
+href="glossaries-extra-manual.html#dx1-20055" >829</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">treenoname</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20051" >830</a>, <a
+href="glossaries-extra-manual.html#dx1-20053" >831</a>, <a
+href="glossaries-extra-manual.html#dx1-20056" >832</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-bookindex </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14001" >833</a>, <a
+href="glossaries-extra-manual.html#dx1-14043" >834</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-inline </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20007" >835</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-long </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15018" >836</a>, <a
+href="glossaries-extra-manual.html#dx1-15022" >837</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-longextra </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15001" >838</a>, <a
+href="glossaries-extra-manual.html#dx1-39031" >839</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-topic </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16001" >840</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">glossary-tree </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14042" >841</a>, <a
+href="glossaries-extra-manual.html#dx1-16003" >842</a>, <a
+href="glossaries-extra-manual.html#dx1-20034" >843</a>, <a
+href="glossaries-extra-manual.html#dx1-20065" >844</a>, <a
+href="glossaries-extra-manual.html#dx1-20068" >845</a>, <a
+href="glossaries-extra-manual.html#dx1-20079" >846</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossentrynameother</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18007" ><span
+class="cmti-10">847</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glossxtrsetpopts</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12058" ><span
+class="cmti-10">848</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsabbrvdefaultfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25029" ><span
+class="cmti-10">849</span></a>, <a
+href="glossaries-extra-manual.html#dx1-25039" ><span
+class="cmti-10">850</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsabbrvemfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25053" ><span
+class="cmti-10">851</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsabbrvfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28047" ><span
+class="cmti-10">852</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsabbrvhyphenfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25065" ><span
+class="cmti-10">853</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsabbrvonlyfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25071" ><span
+class="cmti-10">854</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsabbrvscfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25037" ><span
+class="cmti-10">855</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsabbrvsmfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25047" ><span
+class="cmti-10">856</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsabbrvuserfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25060" ><span
+class="cmti-10">857</span></a>, <a
+href="glossaries-extra-manual.html#dx1-27045" ><span
+class="cmti-10">858</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccessdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52039" ><span
+class="cmti-10">859</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccessdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52037" ><span
+class="cmti-10">860</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccessdescplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52043" ><span
+class="cmti-10">861</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccessdescplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52041" ><span
+class="cmti-10">862</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccessfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52023" ><span
+class="cmti-10">863</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccessfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52021" ><span
+class="cmti-10">864</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccessfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52027" ><span
+class="cmti-10">865</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccessfirstplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52025" ><span
+class="cmti-10">866</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccesslong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52055" ><span
+class="cmti-10">867</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccesslong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52053" ><span
+class="cmti-10">868</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccesslongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52059" ><span
+class="cmti-10">869</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccesslongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52057" ><span
+class="cmti-10">870</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccessname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52010" ><span
+class="cmti-10">871</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccessname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52005" ><span
+class="cmti-10">872</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccessplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52019" ><span
+class="cmti-10">873</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccessplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52017" ><span
+class="cmti-10">874</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccessshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52047" ><span
+class="cmti-10">875</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccessshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52045" ><span
+class="cmti-10">876</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccessshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52051" ><span
+class="cmti-10">877</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccessshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52049" ><span
+class="cmti-10">878</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccesssymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52031" ><span
+class="cmti-10">879</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccesssymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52029" ><span
+class="cmti-10">880</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccesssymbolplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52035" ><span
+class="cmti-10">881</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccesssymbolplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52033" ><span
+class="cmti-10">882</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsaccesstext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52015" ><span
+class="cmti-10">883</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaccesstext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52013" ><span
+class="cmti-10">884</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsacspace</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13052" ><span
+class="cmti-10">885</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsacspacemax</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13054" ><span
+class="cmti-10">886</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">\glsadd </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">format</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8075" >887</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">theHvalue</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6038" >888</a>, <a
+href="glossaries-extra-manual.html#dx1-6054" >889</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">thevalue</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6037" >890</a>, <a
+href="glossaries-extra-manual.html#dx1-6039" >891</a>, <a
+href="glossaries-extra-manual.html#dx1-6043" >892</a>, <a
+href="glossaries-extra-manual.html#dx1-6050" >893</a>, <a
+href="glossaries-extra-manual.html#dx1-53023" >894</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaddeach</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6001" ><span
+class="cmti-10">895</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaddpostsetkeys</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6033" ><span
+class="cmti-10">896</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsaddpresetkeys</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6032" ><span
+class="cmti-10">897</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glscapturedgroup</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42002" ><span
+class="cmti-10">898</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glscategory</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30019" ><span
+class="cmti-10">899</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glscategorylabel</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28039" ><span
+class="cmti-10">900</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glscurrententrylabel</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18024" ><span
+class="cmti-10">901</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glscurrentfieldvalue</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46030" ><span
+class="cmti-10">902</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdefpostdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18023" ><span
+class="cmti-10">903</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdefpostlink</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8038" ><span
+class="cmti-10">904</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsdefpostname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18017" ><span
+class="cmti-10">905</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentrycurrcount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32035" ><span
+class="cmti-10">906</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryprevcount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32036" ><span
+class="cmti-10">907</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryprevmaxcount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32038" ><span
+class="cmti-10">908</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsentryprevtotalcount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32037" ><span
+class="cmti-10">909</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsextrapostnamehook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18018" ><span
+class="cmti-10">910</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestAnyName</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20085" ><span
+class="cmti-10">911</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestAnyNameLocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20097" ><span
+class="cmti-10">912</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestAnyNameSymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20089" ><span
+class="cmti-10">913</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestAnyNameSymbolLocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20094" ><span
+class="cmti-10">914</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestLevelTwo</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20087" ><span
+class="cmti-10">915</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestTopLevelName</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20080" ><span
+class="cmti-10">916</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestUsedAnyName</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20083" ><span
+class="cmti-10">917</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestUsedAnyNameLocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20095" ><span
+class="cmti-10">918</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestUsedAnyNameSymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20088" ><span
+class="cmti-10">919</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestUsedAnyNameSymbolLocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20090" ><span
+class="cmti-10">920</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestUsedLevelTwo</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20086" ><span
+class="cmti-10">921</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsFindWidestUsedTopLevelName</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20081" ><span
+class="cmti-10">922</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstabbrvdefaultfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25030" ><span
+class="cmti-10">923</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstabbrvemfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25054" ><span
+class="cmti-10">924</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstabbrvfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28045" ><span
+class="cmti-10">925</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstabbrvhyphenfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25066" ><span
+class="cmti-10">926</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstabbrvonlyfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25072" ><span
+class="cmti-10">927</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstabbrvsmfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25049" ><span
+class="cmti-10">928</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstabbrvuserfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25061" ><span
+class="cmti-10">929</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstlongdefaultfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25032" ><span
+class="cmti-10">930</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstlongemfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25058" ><span
+class="cmti-10">931</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstlongfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28049" ><span
+class="cmti-10">932</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstlongfootnotefont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27155" ><span
+class="cmti-10">933</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstlonghyphenfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25068" ><span
+class="cmti-10">934</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstlongonlyfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25074" ><span
+class="cmti-10">935</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfirstlonguserfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25063" ><span
+class="cmti-10">936</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29044" ><span
+class="cmti-10">937</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29043" ><span
+class="cmti-10">938</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtfirstpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29046" ><span
+class="cmti-10">939</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtfirstpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29045" ><span
+class="cmti-10">940</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29032" ><span
+class="cmti-10">941</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29030" ><span
+class="cmti-10">942</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29033" ><span
+class="cmti-10">943</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29031" ><span
+class="cmti-10">944</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29028" ><span
+class="cmti-10">945</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29026" ><span
+class="cmti-10">946</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtlongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29029" ><span
+class="cmti-10">947</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtlongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29027" ><span
+class="cmti-10">948</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29041" ><span
+class="cmti-10">949</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29040" ><span
+class="cmti-10">950</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29038" ><span
+class="cmti-10">951</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtplural</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29037" ><span
+class="cmti-10">952</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29024" ><span
+class="cmti-10">953</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29022" ><span
+class="cmti-10">954</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmtshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29025" ><span
+class="cmti-10">955</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmtshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29023" ><span
+class="cmti-10">956</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsfmttext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29036" ><span
+class="cmti-10">957</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsfmttext</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29035" ><span
+class="cmti-10">958</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsforeachwithattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30183" ><span
+class="cmti-10">959</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgetattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30166" ><span
+class="cmti-10">960</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgetcategoryattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30165" ><span
+class="cmti-10">961</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgetwidestname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20075" ><span
+class="cmti-10">962</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsgetwidestsubname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20076" ><span
+class="cmti-10">963</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glshasattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30169" ><span
+class="cmti-10">964</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glshascategoryattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30167" ><span
+class="cmti-10">965</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glshex</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42001" ><span
+class="cmti-10">966</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30174" ><span
+class="cmti-10">967</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifcategory</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30020" ><span
+class="cmti-10">968</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifcategoryattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30170" ><span
+class="cmti-10">969</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifnotregular</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30181" ><span
+class="cmti-10">970</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifnotregularcategory</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30180" ><span
+class="cmti-10">971</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifregular</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30177" ><span
+class="cmti-10">972</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsifregularcategory</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30176" ><span
+class="cmti-10">973</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glskeylisttok</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28037" ><span
+class="cmti-10">974</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslabeltok</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28036" ><span
+class="cmti-10">975</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">\glslink </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">counter</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4114" >976</a>, <a
+href="glossaries-extra-manual.html#dx1-4120" >977</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">format</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6049" >978</a>, <a
+href="glossaries-extra-manual.html#dx1-34030" >979</a>, <a
+href="glossaries-extra-manual.html#dx1-34032" >980</a>, <a
+href="glossaries-extra-manual.html#dx1-44022" >981</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">hyper</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12055" >982</a>, <a
+href="glossaries-extra-manual.html#dx1-30028" >983</a>, <a
+href="glossaries-extra-manual.html#dx1-30036" >984</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">hyper=false</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29017" >985</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">hyperoutside</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6018" >986</a>, <a
+href="glossaries-extra-manual.html#dx1-30147" >987</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">noindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6003" >988</a>, <a
+href="glossaries-extra-manual.html#dx1-6008" >989</a>, <a
+href="glossaries-extra-manual.html#dx1-6012" >990</a>, <a
+href="glossaries-extra-manual.html#dx1-12056" >991</a>, <a
+href="glossaries-extra-manual.html#dx1-29016" >992</a>, <a
+href="glossaries-extra-manual.html#dx1-34042" >993</a>, <a
+href="glossaries-extra-manual.html#dx1-49009" >994</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">prefix</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5024" >995</a>, <a
+href="glossaries-extra-manual.html#dx1-6025" >996</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">textformat</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6022" >997</a>, <a
+href="glossaries-extra-manual.html#dx1-10016" >998</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">theHvalue</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6028" >999</a>, <a
+href="glossaries-extra-manual.html#dx1-6041" >1000</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">thevalue</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6027" >1001</a>, <a
+href="glossaries-extra-manual.html#dx1-6040" >1002</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">wrgloss</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6011" >1003</a>, <a
+href="glossaries-extra-manual.html#dx1-6016" >1004</a>, <a
+href="glossaries-extra-manual.html#dx1-8073" >1005</a>, <a
+href="glossaries-extra-manual.html#dx1-30041" >1006</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslinkcheckfirsthyperhook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32042" ><span
+class="cmti-10">1007</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslinkpresetkeys</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6030" ><span
+class="cmti-10">1008</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslistchildpostlocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20029" ><span
+class="cmti-10">1009</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslistchildprelocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20020" ><span
+class="cmti-10">1010</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslistdesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20021" ><span
+class="cmti-10">1011</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslistgroupskip</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20032" ><span
+class="cmti-10">1012</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslistprelocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20019" ><span
+class="cmti-10">1013</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslocalreseteach</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-10010" ><span
+class="cmti-10">1014</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslocalunseteach</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-10011" ><span
+class="cmti-10">1015</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongdefaultfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25031" ><span
+class="cmti-10">1016</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongemfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25059" ><span
+class="cmti-10">1017</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraDescAlign</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15020" ><span
+class="cmti-10">1018</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraDescFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15036" ><span
+class="cmti-10">1019</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraDescNameHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15070" ><span
+class="cmti-10">1020</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraDescNameTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15074" ><span
+class="cmti-10">1021</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraDescNameTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15073" ><span
+class="cmti-10">1022</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraDescSymNameHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15136" ><span
+class="cmti-10">1023</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraDescSymNameTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15140" ><span
+class="cmti-10">1024</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraDescSymNameTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15139" ><span
+class="cmti-10">1025</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraGroupHeading</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15043" ><span
+class="cmti-10">1026</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraHeaderFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15010" ><span
+class="cmti-10">1027</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationAlign</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15016" ><span
+class="cmti-10">1028</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationDescNameHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15078" ><span
+class="cmti-10">1029</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationDescNameTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15082" ><span
+class="cmti-10">1030</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationDescNameTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15081" ><span
+class="cmti-10">1031</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationDescSymNameHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15144" ><span
+class="cmti-10">1032</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationDescSymNameTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15148" ><span
+class="cmti-10">1033</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationDescSymNameTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15147" ><span
+class="cmti-10">1034</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15038" ><span
+class="cmti-10">1035</span></a>, <a
+href="glossaries-extra-manual.html#dx1-15042" ><span
+class="cmti-10">1036</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationSymDescNameHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15128" ><span
+class="cmti-10">1037</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationSymDescNameTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15132" ><span
+class="cmti-10">1038</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocationSymDescNameTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15131" ><span
+class="cmti-10">1039</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraLocSetDescWidth</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15033" ><span
+class="cmti-10">1040</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameAlign</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15012" ><span
+class="cmti-10">1041</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15047" ><span
+class="cmti-10">1042</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescLocationHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15061" ><span
+class="cmti-10">1043</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescLocationTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15065" ><span
+class="cmti-10">1044</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescLocationTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15064" ><span
+class="cmti-10">1045</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescSymHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15086" ><span
+class="cmti-10">1046</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescSymLocationHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15094" ><span
+class="cmti-10">1047</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescSymLocationTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15098" ><span
+class="cmti-10">1048</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescSymLocationTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15097" ><span
+class="cmti-10">1049</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescSymTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15090" ><span
+class="cmti-10">1050</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescSymTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15089" ><span
+class="cmti-10">1051</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15050" ><span
+class="cmti-10">1052</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameDescTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15049" ><span
+class="cmti-10">1053</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15035" ><span
+class="cmti-10">1054</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameSymDescHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15103" ><span
+class="cmti-10">1055</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameSymDescLocationHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15112" ><span
+class="cmti-10">1056</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameSymDescLocationTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15116" ><span
+class="cmti-10">1057</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameSymDescLocationTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15115" ><span
+class="cmti-10">1058</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameSymDescTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15107" ><span
+class="cmti-10">1059</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraNameSymDescTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15106" ><span
+class="cmti-10">1060</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSetDescWidth</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15023" ><span
+class="cmti-10">1061</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSetWidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15024" ><span
+class="cmti-10">1062</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSubDescFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15040" ><span
+class="cmti-10">1063</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSubNameFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15039" ><span
+class="cmti-10">1064</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSubSymbolFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15041" ><span
+class="cmti-10">1065</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSymbolAlign</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15014" ><span
+class="cmti-10">1066</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSymbolFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15037" ><span
+class="cmti-10">1067</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSymDescNameHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15120" ><span
+class="cmti-10">1068</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSymDescNameTabularFooter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15124" ><span
+class="cmti-10">1069</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSymDescNameTabularHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15123" ><span
+class="cmti-10">1070</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSymLocSetDescWidth</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15034" ><span
+class="cmti-10">1071</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraSymSetDescWidth</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15032" ><span
+class="cmti-10">1072</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraTabularVAlign</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15009" ><span
+class="cmti-10">1073</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraUpdateWidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15025" ><span
+class="cmti-10">1074</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongextraUpdateWidestChild</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15031" ><span
+class="cmti-10">1075</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsLongExtraUseTabulartrue</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-15008" ><span
+class="cmti-10">1076</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28050" ><span
+class="cmti-10">1077</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongfootnotefont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27157" ><span
+class="cmti-10">1078</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslonghyphenfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25067" ><span
+class="cmti-10">1079</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongonlyfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25073" ><span
+class="cmti-10">1080</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongpltok</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28029" ><span
+class="cmti-10">1081</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslongtok</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28028" ><span
+class="cmti-10">1082</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glslonguserfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25062" ><span
+class="cmti-10">1083</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsnoidxdisplayloc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8079" ><span
+class="cmti-10">1084</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsps</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12053" ><span
+class="cmti-10">1085</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glspt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12054" ><span
+class="cmti-10">1086</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsrenewcommand</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-39021" ><span
+class="cmti-10">1087</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsseeitemformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5005" ><span
+class="cmti-10">1088</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssetattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30164" ><span
+class="cmti-10">1089</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssetcategoryattribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30161" ><span
+class="cmti-10">1090</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glssetregularcategory</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30163" ><span
+class="cmti-10">1091</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsshortpltok</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28025" ><span
+class="cmti-10">1092</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsshorttok</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28024" ><span
+class="cmti-10">1093</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicAssignSubIndent</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16029" ><span
+class="cmti-10">1094</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicAssignWidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16030" ><span
+class="cmti-10">1095</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicCols</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16014" ><span
+class="cmti-10">1096</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicColsEnv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16013" ><span
+class="cmti-10">1097</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicDesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16026" ><span
+class="cmti-10">1098</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicGroupHeading</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16018" ><span
+class="cmti-10">1099</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicInit</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16017" ><span
+class="cmti-10">1100</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicItem</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16020" ><span
+class="cmti-10">1101</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicLoc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16028" ><span
+class="cmti-10">1102</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicMarker</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16022" ><span
+class="cmti-10">1103</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicMidSkip</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16025" ><span
+class="cmti-10">1104</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicParIndent</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16015" ><span
+class="cmti-10">1105</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicPostSkip</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16027" ><span
+class="cmti-10">1106</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicPreSkip</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16021" ><span
+class="cmti-10">1107</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicSubIndent</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16016" ><span
+class="cmti-10">1108</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicSubItem</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16031" ><span
+class="cmti-10">1109</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicSubItemBox</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16034" ><span
+class="cmti-10">1110</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicSubItemSep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16033" ><span
+class="cmti-10">1111</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicSubLoc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16036" ><span
+class="cmti-10">1112</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicSubNameFont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16032" ><span
+class="cmti-10">1113</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicSubPreLocSep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16035" ><span
+class="cmti-10">1114</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicTitle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16023" ><span
+class="cmti-10">1115</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstopicTitleFont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16024" ><span
+class="cmti-10">1116</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreechilddesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20060" ><span
+class="cmti-10">1117</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreeChildDescLoc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20063" ><span
+class="cmti-10">1118</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreechildprelocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20049" ><span
+class="cmti-10">1119</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreechildsymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20061" ><span
+class="cmti-10">1120</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreedefaultnamefmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20040" ><span
+class="cmti-10">1121</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreedesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20058" ><span
+class="cmti-10">1122</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreeDescLoc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20062" ><span
+class="cmti-10">1123</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreegroupskip</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20042" ><span
+class="cmti-10">1124</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreenonamechilddesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20054" ><span
+class="cmti-10">1125</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreenonamedesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20050" ><span
+class="cmti-10">1126</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreenonamesymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20052" ><span
+class="cmti-10">1127</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreePreHeader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20044" ><span
+class="cmti-10">1128</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreeprelocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20048" ><span
+class="cmti-10">1129</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glstreesymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20059" ><span
+class="cmti-10">1130</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsupdatewidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20071" ><span
+class="cmti-10">1131</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuseabbrvfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-21027" ><span
+class="cmti-10">1132</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuselongfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-21028" ><span
+class="cmti-10">1133</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsuserdescription</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27041" ><span
+class="cmti-10">1134</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtr</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-35014" ><span
+class="cmti-10">1135</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtr</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-35009" ><span
+class="cmti-10">1136</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrabbreviationfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8029" ><span
+class="cmti-10">1137</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrabbrvfootnote</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27158" ><span
+class="cmti-10">1138</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrabbrvpluralsuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-11035" ><span
+class="cmti-10">1139</span></a>, <a
+href="glossaries-extra-manual.html#dx1-25033" ><span
+class="cmti-10">1140</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtractivatenopost</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-48014" ><span
+class="cmti-10">1141</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtraddallcrossrefs</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7010" ><span
+class="cmti-10">1142</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtraddlabelprefix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43014" ><span
+class="cmti-10">1143</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtralias</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-49019" ><span
+class="cmti-10">1144</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrAltTreeIndent</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20103" ><span
+class="cmti-10">1145</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtralttreeInit</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20102" ><span
+class="cmti-10">1146</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtralttreeSubSymbolDescLocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20100" ><span
+class="cmti-10">1147</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtralttreeSymbolDescLocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20099" ><span
+class="cmti-10">1148</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrAutoAddOnFormat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6002" ><span
+class="cmti-10">1149</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrautoindex</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34024" ><span
+class="cmti-10">1150</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrautoindexassignsort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34020" ><span
+class="cmti-10">1151</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrautoindexentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34019" ><span
+class="cmti-10">1152</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrautoindexesc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34022" ><span
+class="cmti-10">1153</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrBasicDigitrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42057" ><span
+class="cmti-10">1154</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrBibTeXEntryAliases</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42005" ><span
+class="cmti-10">1155</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexatendgroup</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14034" ><span
+class="cmti-10">1156</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexbetween</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14029" ><span
+class="cmti-10">1157</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexbookmark</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14039" ><span
+class="cmti-10">1158</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexcols</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14010" ><span
+class="cmti-10">1159</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexcolspread</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14013" ><span
+class="cmti-10">1160</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexfirstmark</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14045" ><span
+class="cmti-10">1161</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexfirstmarkfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14047" ><span
+class="cmti-10">1162</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexformatheader</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14041" ><span
+class="cmti-10">1163</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexlastmark</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14046" ><span
+class="cmti-10">1164</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexlastmarkfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14048" ><span
+class="cmti-10">1165</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexlocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14025" ><span
+class="cmti-10">1166</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexmarkentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14044" ><span
+class="cmti-10">1167</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexmulticolsenv</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14018" ><span
+class="cmti-10">1168</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14019" ><span
+class="cmti-10">1169</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexparentchildsep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14027" ><span
+class="cmti-10">1170</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexparentsubchildsep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14028" ><span
+class="cmti-10">1171</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexprelocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14021" ><span
+class="cmti-10">1172</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexsubatendgroup</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14033" ><span
+class="cmti-10">1173</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexsubbetween</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14030" ><span
+class="cmti-10">1174</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexsublocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14026" ><span
+class="cmti-10">1175</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexsubname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14020" ><span
+class="cmti-10">1176</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexsubprelocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14024" ><span
+class="cmti-10">1177</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexsubsubatendgroup</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14032" ><span
+class="cmti-10">1178</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrbookindexsubsubbetween</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14031" ><span
+class="cmti-10">1179</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrchecknohyperfirst</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30033" ><span
+class="cmti-10">1180</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrclearlabelprefixes</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43016" ><span
+class="cmti-10">1181</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrcombiningdiacriticIIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42049" ><span
+class="cmti-10">1182</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrcombiningdiacriticIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42048" ><span
+class="cmti-10">1183</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrcombiningdiacriticIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42047" ><span
+class="cmti-10">1184</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrcombiningdiacriticIVrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42050" ><span
+class="cmti-10">1185</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrcombiningdiacriticrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42046" ><span
+class="cmti-10">1186</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrcontrolrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42042" ><span
+class="cmti-10">1187</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrcopytoglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-45007" ><span
+class="cmti-10">1188</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrcurrencyrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42054" ><span
+class="cmti-10">1189</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrDefaultResourceOptions</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43004" ><span
+class="cmti-10">1190</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdeffield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46018" ><span
+class="cmti-10">1191</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdetoklocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44004" ><span
+class="cmti-10">1192</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdigitrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42056" ><span
+class="cmti-10">1193</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdisplayendloc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8082" ><span
+class="cmti-10">1194</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdisplayendlochook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8084" ><span
+class="cmti-10">1195</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdisplaylocnameref</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-41018" ><span
+class="cmti-10">1196</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdisplaysingleloc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8080" ><span
+class="cmti-10">1197</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdisplaystartloc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8081" ><span
+class="cmti-10">1198</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdisplaysupploc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-40001" ><span
+class="cmti-10">1199</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdoautoindexname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34016" ><span
+class="cmti-10">1200</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrdowrglossaryhook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6029" ><span
+class="cmti-10">1201</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtredeffield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46021" ><span
+class="cmti-10">1202</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtremsuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25055" ><span
+class="cmti-10">1203</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrEnableEntryCounting</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32027" ><span
+class="cmti-10">1204</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrEnableEntryUnitCounting</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32030" ><span
+class="cmti-10">1205</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrEnableIndexFormatOverride</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34033" ><span
+class="cmti-10">1206</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrEnableInitialTagging</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-22001" ><span
+class="cmti-10">1207</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrEnableLinkCounting</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-33002" ><span
+class="cmti-10">1208</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrEnableOnTheFly</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-35007" ><span
+class="cmti-10">1209</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrEnablePreLocationTag</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-19010" ><span
+class="cmti-10">1210</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrenablerecordcount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44032" ><span
+class="cmti-10">1211</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrendfor</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46062" ><span
+class="cmti-10">1212</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrentryfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46008" ><span
+class="cmti-10">1213</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrExpandedFmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-10018" ><span
+class="cmti-10">1214</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfielddolistloop</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46052" ><span
+class="cmti-10">1215</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfieldforlistloop</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46053" ><span
+class="cmti-10">1216</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfieldifinlist</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46054" ><span
+class="cmti-10">1217</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfieldlistadd</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46048" ><span
+class="cmti-10">1218</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfieldlisteadd</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46050" ><span
+class="cmti-10">1219</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfieldlistgadd</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46049" ><span
+class="cmti-10">1220</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfieldlistxadd</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46051" ><span
+class="cmti-10">1221</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfieldtitlecasecs</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30133" ><span
+class="cmti-10">1222</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfieldxifinlist</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46055" ><span
+class="cmti-10">1223</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46002" ><span
+class="cmti-10">1224</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfmt*</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46004" ><span
+class="cmti-10">1225</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrFmtDefaultOptions</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46003" ><span
+class="cmti-10">1226</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfmtdisplay</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46005" ><span
+class="cmti-10">1227</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfmtexternalnameref</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-41023" ><span
+class="cmti-10">1228</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrFmtField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46001" ><span
+class="cmti-10">1229</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfmtinternalnameref</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-41022" ><span
+class="cmti-10">1230</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfootnotename</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27154" ><span
+class="cmti-10">1231</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrforcsvfield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46057" ><span
+class="cmti-10">1232</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrForeignText</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46064" ><span
+class="cmti-10">1233</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrForeignTextField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46063" ><span
+class="cmti-10">1234</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrFormatLocationList</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-19002" ><span
+class="cmti-10">1235</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrForUnsetBufferedList</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-10015" ><span
+class="cmti-10">1236</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfractionrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42060" ><span
+class="cmti-10">1237</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSxtrfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23025" ><span
+class="cmti-10">1238</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23022" ><span
+class="cmti-10">1239</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfull</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23014" ><span
+class="cmti-10">1240</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrfullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28058" ><span
+class="cmti-10">1241</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28054" ><span
+class="cmti-10">1242</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSxtrfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23034" ><span
+class="cmti-10">1243</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23033" ><span
+class="cmti-10">1244</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfullpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23032" ><span
+class="cmti-10">1245</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrfullplformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28066" ><span
+class="cmti-10">1246</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfullplformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28062" ><span
+class="cmti-10">1247</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrfullsep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25078" ><span
+class="cmti-10">1248</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrGeneralLatinIIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42063" ><span
+class="cmti-10">1249</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrGeneralLatinIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42062" ><span
+class="cmti-10">1250</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrGeneralLatinIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42061" ><span
+class="cmti-10">1251</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrGeneralLatinIVrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42064" ><span
+class="cmti-10">1252</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrGeneralLatinVIIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42068" ><span
+class="cmti-10">1253</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrGeneralLatinVIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42067" ><span
+class="cmti-10">1254</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrGeneralLatinVIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42066" ><span
+class="cmti-10">1255</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrGeneralLatinVrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42065" ><span
+class="cmti-10">1256</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrgeneralpuncIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42055" ><span
+class="cmti-10">1257</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrgeneralpuncIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42053" ><span
+class="cmti-10">1258</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrgeneralpuncrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42052" ><span
+class="cmti-10">1259</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrglossentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-48004" ><span
+class="cmti-10">1260</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrglossentryother</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-48016" ><span
+class="cmti-10">1261</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrgroupfield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47013" ><span
+class="cmti-10">1262</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSXTRhiername</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7046" ><span
+class="cmti-10">1263</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSxtrhiername</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7045" ><span
+class="cmti-10">1264</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrhiername</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7044" ><span
+class="cmti-10">1265</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrhiername</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7043" ><span
+class="cmti-10">1266</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrhiername</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7036" ><span
+class="cmti-10">1267</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrhiernamesep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7042" ><span
+class="cmti-10">1268</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrhyphenrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42051" ><span
+class="cmti-10">1269</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrhyphensuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25069" ><span
+class="cmti-10">1270</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtridentifyglslike</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43012" ><span
+class="cmti-10">1271</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrifcounttrigger</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-32021" ><span
+class="cmti-10">1272</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrifcustomdiscardperiod</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8035" ><span
+class="cmti-10">1273</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfFieldCmpNum</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46040" ><span
+class="cmti-10">1274</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfFieldEqNum</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46039" ><span
+class="cmti-10">1275</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfFieldEqStr</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46034" ><span
+class="cmti-10">1276</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfFieldEqXpStr</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46036" ><span
+class="cmti-10">1277</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfFieldNonZero</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46038" ><span
+class="cmti-10">1278</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfFieldUndef</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46033" ><span
+class="cmti-10">1279</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrifhasfield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46029" ><span
+class="cmti-10">1280</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrifhasfield*</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46031" ><span
+class="cmti-10">1281</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfHasNonZeroChildCount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42004" ><span
+class="cmti-10">1282</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrifinlabelprefixlist</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43017" ><span
+class="cmti-10">1283</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrifkeydefined</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46010" ><span
+class="cmti-10">1284</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtriflabelinlist</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47040" ><span
+class="cmti-10">1285</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfLinkCounterDef</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-33008" ><span
+class="cmti-10">1286</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrifrecordtrigger</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44018" ><span
+class="cmti-10">1287</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfUnusedOrUndefined</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-10007" ><span
+class="cmti-10">1288</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrifwasfirstuse</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8053" ><span
+class="cmti-10">1289</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIfXpFieldEqXpStr</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46037" ><span
+class="cmti-10">1290</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrinclinkcounter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-33005" ><span
+class="cmti-10">1291</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrindexaliased</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-49017" ><span
+class="cmti-10">1292</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrIndexCounterLink</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-39022" ><span
+class="cmti-10">1293</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrindexseealso</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7067" ><span
+class="cmti-10">1294</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrinitwrgloss</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6013" ><span
+class="cmti-10">1295</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrinlinefullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28073" ><span
+class="cmti-10">1296</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrinlinefullformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28070" ><span
+class="cmti-10">1297</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrinlinefullplformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28080" ><span
+class="cmti-10">1298</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrinlinefullplformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28077" ><span
+class="cmti-10">1299</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrinsertinsidetrue</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25076" ><span
+class="cmti-10">1300</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinA</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42069" ><span
+class="cmti-10">1301</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinAA</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42093" ><span
+class="cmti-10">1302</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinAELigature</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42086" ><span
+class="cmti-10">1303</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinE</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42070" ><span
+class="cmti-10">1304</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinEszettSs</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42082" ><span
+class="cmti-10">1305</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinEszettSz</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42083" ><span
+class="cmti-10">1306</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinEth</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42084" ><span
+class="cmti-10">1307</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinH</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42071" ><span
+class="cmti-10">1308</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinI</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42073" ><span
+class="cmti-10">1309</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinInsularG</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42091" ><span
+class="cmti-10">1310</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinK</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42072" ><span
+class="cmti-10">1311</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinL</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42074" ><span
+class="cmti-10">1312</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinLslash</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42089" ><span
+class="cmti-10">1313</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinM</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42075" ><span
+class="cmti-10">1314</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinN</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42076" ><span
+class="cmti-10">1315</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinO</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42077" ><span
+class="cmti-10">1316</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinOELigature</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42087" ><span
+class="cmti-10">1317</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinOslash</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42088" ><span
+class="cmti-10">1318</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinP</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42078" ><span
+class="cmti-10">1319</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinS</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42079" ><span
+class="cmti-10">1320</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinSchwa</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42092" ><span
+class="cmti-10">1321</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinT</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42080" ><span
+class="cmti-10">1322</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinThorn</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42085" ><span
+class="cmti-10">1323</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinWynn</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42090" ><span
+class="cmti-10">1324</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrLatinX</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42081" ><span
+class="cmti-10">1325</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrLetField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46025" ><span
+class="cmti-10">1326</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrLetFieldToField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46027" ><span
+class="cmti-10">1327</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrLinkCounterName</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-33009" ><span
+class="cmti-10">1328</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrLinkCounterValue</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-33006" ><span
+class="cmti-10">1329</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrLoadResources</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-36018" ><span
+class="cmti-10">1330</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlocalsetgrouptitle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-17007" ><span
+class="cmti-10">1331</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrLocationField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47036" ><span
+class="cmti-10">1332</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrLocationRecordCount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44008" ><span
+class="cmti-10">1333</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlocrangefmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8083" ><span
+class="cmti-10">1334</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23021" ><span
+class="cmti-10">1335</span></a>, <a
+href="glossaries-extra-manual.html#dx1-23024" ><span
+class="cmti-10">1336</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23012" ><span
+class="cmti-10">1337</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlonghyphen</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27232" ><span
+class="cmti-10">1338</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlonghyphenshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27213" ><span
+class="cmti-10">1339</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlongnoshortdescname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26062" ><span
+class="cmti-10">1340</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlongnoshortname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26088" ><span
+class="cmti-10">1341</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSxtrlongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23031" ><span
+class="cmti-10">1342</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrlongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23030" ><span
+class="cmti-10">1343</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlongpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23029" ><span
+class="cmti-10">1344</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlongshortdescname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27061" ><span
+class="cmti-10">1345</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlongshortdescsort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27058" ><span
+class="cmti-10">1346</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlongshortname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27006" ><span
+class="cmti-10">1347</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrlongshortuserdescname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27082" ><span
+class="cmti-10">1348</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathGreekIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42101" ><span
+class="cmti-10">1349</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathGreekIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42094" ><span
+class="cmti-10">1350</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathItalicGreekIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42116" ><span
+class="cmti-10">1351</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathItalicGreekIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42110" ><span
+class="cmti-10">1352</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathItalicLowerGreekIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42130" ><span
+class="cmti-10">1353</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathItalicLowerGreekIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42126" ><span
+class="cmti-10">1354</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathItalicNabla</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42134" ><span
+class="cmti-10">1355</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathItalicPartial</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42133" ><span
+class="cmti-10">1356</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathItalicUpperGreekIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42123" ><span
+class="cmti-10">1357</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathItalicUpperGreekIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42119" ><span
+class="cmti-10">1358</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathUpGreekIIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42107" ><span
+class="cmti-10">1359</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrMathUpGreekIrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42102" ><span
+class="cmti-10">1360</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrmultisupplocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-40004" ><span
+class="cmti-10">1361</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnameloclink</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-41025" ><span
+class="cmti-10">1362</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnamereflink</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-41019" ><span
+class="cmti-10">1363</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnewgls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43005" ><span
+class="cmti-10">1364</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnewGLSlike</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43007" ><span
+class="cmti-10">1365</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnewglslike</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43006" ><span
+class="cmti-10">1366</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnewnumber</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4211" ><span
+class="cmti-10">1367</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnewrgls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43008" ><span
+class="cmti-10">1368</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnewrGLSlike</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43010" ><span
+class="cmti-10">1369</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnewrglslike</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43009" ><span
+class="cmti-10">1370</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnewsymbol</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4205" ><span
+class="cmti-10">1371</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningAutoMake</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54020" ><span
+class="cmti-10">1372</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningBuildInfo</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54019" ><span
+class="cmti-10">1373</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningCheckFile</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54015" ><span
+class="cmti-10">1374</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningEmptyMain</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54013" ><span
+class="cmti-10">1375</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningEmptyNotMain</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54014" ><span
+class="cmti-10">1376</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningEmptyStart</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54012" ><span
+class="cmti-10">1377</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningHead</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54011" ><span
+class="cmti-10">1378</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningMisMatch</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54016" ><span
+class="cmti-10">1379</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningNoOut</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54017" ><span
+class="cmti-10">1380</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrNoGlsWarningTail</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54018" ><span
+class="cmti-10">1381</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnonprintablerules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42044" ><span
+class="cmti-10">1382</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrnopostpunc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5003" ><span
+class="cmti-10">1383</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtronlydescname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27027" ><span
+class="cmti-10">1384</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtronlyname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27023" ><span
+class="cmti-10">1385</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtronlysuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25075" ><span
+class="cmti-10">1386</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrorglong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28034" ><span
+class="cmti-10">1387</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrorgshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28033" ><span
+class="cmti-10">1388</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSxtrp</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12062" ><span
+class="cmti-10">1389</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrp</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12061" ><span
+class="cmti-10">1390</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrp</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12052" ><span
+class="cmti-10">1391</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpageref</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-45004" ><span
+class="cmti-10">1392</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrparen</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25026" ><span
+class="cmti-10">1393</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-35015" ><span
+class="cmti-10">1394</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-35013" ><span
+class="cmti-10">1395</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostdescription</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18019" ><span
+class="cmti-10">1396</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrposthyphenlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27245" ><span
+class="cmti-10">1397</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrposthyphenshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27230" ><span
+class="cmti-10">1398</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostlink</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8033" ><span
+class="cmti-10">1399</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostlinkAddDescOnFirstUse</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8042" ><span
+class="cmti-10">1400</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostlinkAddSymbolDescOnFirstUse</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8048" ><span
+class="cmti-10">1401</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostlinkAddSymbolOnFirstUse</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8046" ><span
+class="cmti-10">1402</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostlinkendsentence</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8034" ><span
+class="cmti-10">1403</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostlinkhook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8031" ><span
+class="cmti-10">1404</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostlongdescription</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5037" ><span
+class="cmti-10">1405</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrpostnamehook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-18013" ><span
+class="cmti-10">1406</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrPostNewAbbreviation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28019" ><span
+class="cmti-10">1407</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrprelocation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20017" ><span
+class="cmti-10">1408</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrprependlabelprefix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43015" ><span
+class="cmti-10">1409</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrProvideBibTeXFields</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42008" ><span
+class="cmti-10">1410</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrprovidecommand</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-39016" ><span
+class="cmti-10">1411</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrprovidestoragekey</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46009" ><span
+class="cmti-10">1412</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrRecordCount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44007" ><span
+class="cmti-10">1413</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrRecordCounter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46071" ><span
+class="cmti-10">1414</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrrecordtriggervalue</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44020" ><span
+class="cmti-10">1415</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrregularfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8026" ><span
+class="cmti-10">1416</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrresourcefile</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-36017" ><span
+class="cmti-10">1417</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrresourceinit</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-43003" ><span
+class="cmti-10">1418</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrrestorepostpunc</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5004" ><span
+class="cmti-10">1419</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrRevertMarks</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29012" ><span
+class="cmti-10">1420</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrRevertTocMarks</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29013" ><span
+class="cmti-10">1421</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrscsuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25040" ><span
+class="cmti-10">1422</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrseealsolabels</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7061" ><span
+class="cmti-10">1423</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrseelist</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7065" ><span
+class="cmti-10">1424</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrSetActualChar</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34049" ><span
+class="cmti-10">1425</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsetaliasnoindex</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-49014" ><span
+class="cmti-10">1426</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrSetAltModifier</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8077" ><span
+class="cmti-10">1427</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsetcategory</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30185" ><span
+class="cmti-10">1428</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsetcategoryforall</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30187" ><span
+class="cmti-10">1429</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrSetDefaultGlsOpts</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8071" ><span
+class="cmti-10">1430</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrSetEncapChar</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34052" ><span
+class="cmti-10">1431</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrSetEscChar</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34051" ><span
+class="cmti-10">1432</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrSetField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46014" ><span
+class="cmti-10">1433</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsetfieldifexists</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46015" ><span
+class="cmti-10">1434</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsetglossarylabel</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5026" ><span
+class="cmti-10">1435</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsetgrouptitle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-17006" ><span
+class="cmti-10">1436</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrSetLevelChar</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34050" ><span
+class="cmti-10">1437</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsetpopts</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-12057" ><span
+class="cmti-10">1438</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrSetRecordCountAttribute</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44016" ><span
+class="cmti-10">1439</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrSetWidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-39029" ><span
+class="cmti-10">1440</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrSetWidestFallback</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-39034" ><span
+class="cmti-10">1441</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23020" ><span
+class="cmti-10">1442</span></a>, <a
+href="glossaries-extra-manual.html#dx1-23023" ><span
+class="cmti-10">1443</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrshort</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23010" ><span
+class="cmti-10">1444</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrshortdescname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26036" ><span
+class="cmti-10">1445</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrshorthyphenlong</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27238" ><span
+class="cmti-10">1446</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrshortlongdescname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27126" ><span
+class="cmti-10">1447</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrshortlongname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27099" ><span
+class="cmti-10">1448</span></a>, <a
+href="glossaries-extra-manual.html#dx1-27116" ><span
+class="cmti-10">1449</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrshortlonguserdescname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27144" ><span
+class="cmti-10">1450</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrshortnolongname</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-26005" ><span
+class="cmti-10">1451</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSxtrshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23028" ><span
+class="cmti-10">1452</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23027" ><span
+class="cmti-10">1453</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrshortpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23026" ><span
+class="cmti-10">1454</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsmsuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25050" ><span
+class="cmti-10">1455</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrspacerules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42043" ><span
+class="cmti-10">1456</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrStandaloneEntryName</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-48010" ><span
+class="cmti-10">1457</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrStandaloneEntryOther</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-48017" ><span
+class="cmti-10">1458</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrStandaloneGlossaryType</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-48005" ><span
+class="cmti-10">1459</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrStartUnsetBuffering</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-10013" ><span
+class="cmti-10">1460</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrStopUnsetBuffering</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-10014" ><span
+class="cmti-10">1461</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrSubScriptDigitrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42058" ><span
+class="cmti-10">1462</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrsubsequentfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28083" ><span
+class="cmti-10">1463</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsubsequentfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28082" ><span
+class="cmti-10">1464</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrsubsequentplfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28085" ><span
+class="cmti-10">1465</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrsubsequentplfmt</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28084" ><span
+class="cmti-10">1466</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrSuperScriptDigitrules</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42059" ><span
+class="cmti-10">1467</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrtagfont</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-22003" ><span
+class="cmti-10">1468</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrTheLinkCounter</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-33007" ><span
+class="cmti-10">1469</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrTotalRecordCount</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44006" ><span
+class="cmti-10">1470</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrunsrtdo</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47031" ><span
+class="cmti-10">1471</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrUseAbbrStyleFmts</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28089" ><span
+class="cmti-10">1472</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrUseAbbrStyleSetup</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28040" ><span
+class="cmti-10">1473</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GLSxtrusefield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46045" ><span
+class="cmti-10">1474</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\Glsxtrusefield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46044" ><span
+class="cmti-10">1475</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrusefield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46042" ><span
+class="cmti-10">1476</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtruserfield</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27033" ><span
+class="cmti-10">1477</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtruserparen</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-27036" ><span
+class="cmti-10">1478</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrusersuffix</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25064" ><span
+class="cmti-10">1479</span></a>, <a
+href="glossaries-extra-manual.html#dx1-27046" ><span
+class="cmti-10">1480</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrusesee</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7020" ><span
+class="cmti-10">1481</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtruseseealso</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7058" ><span
+class="cmti-10">1482</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtruseseeformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7021" ><span
+class="cmti-10">1483</span></a>, <a
+href="glossaries-extra-manual.html#dx1-7059" ><span
+class="cmti-10">1484</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrWarnDeprecatedAbbrStyle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25103" ><span
+class="cmti-10">1485</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\GlsXtrWarning</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-35011" ><span
+class="cmti-10">1486</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrword</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30057" ><span
+class="cmti-10">1487</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrwordsep</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30056" ><span
+class="cmti-10">1488</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\glsxtrwrglossmark</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4008" ><span
+class="cmti-10">1489</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">H</span>
+<span class="index-item"><span
+class="cmss-10">hyperref </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4089" >1490</a>, <a
+href="glossaries-extra-manual.html#dx1-4123" >1491</a>, <a
+href="glossaries-extra-manual.html#dx1-4135" >1492</a>, <a
+href="glossaries-extra-manual.html#dx1-6048" >1493</a>, <a
+href="glossaries-extra-manual.html#dx1-6053" >1494</a>, <a
+href="glossaries-extra-manual.html#dx1-6055" >1495</a>, <a
+href="glossaries-extra-manual.html#dx1-12029" >1496</a>, <a
+href="glossaries-extra-manual.html#dx1-12060" >1497</a>, <a
+href="glossaries-extra-manual.html#dx1-27150" >1498</a>, <a
+href="glossaries-extra-manual.html#dx1-29002" >1499</a>, <a
+href="glossaries-extra-manual.html#dx1-29003" >1500</a>, <a
+href="glossaries-extra-manual.html#dx1-29004" >1501</a>, <a
+href="glossaries-extra-manual.html#dx1-29008" >1502</a>, <a
+href="glossaries-extra-manual.html#dx1-29015" >1503</a>, <a
+href="glossaries-extra-manual.html#dx1-32032" >1504</a>, <a
+href="glossaries-extra-manual.html#dx1-34034" >1505</a>, <a
+href="glossaries-extra-manual.html#dx1-39024" >1506</a>, <a
+href="glossaries-extra-manual.html#dx1-41003" >1507</a>, <a
+href="glossaries-extra-manual.html#dx1-45008" >1508</a>, <a
+href="glossaries-extra-manual.html#dx1-46007" >1509</a>, <a
+href="glossaries-extra-manual.html#dx1-47041" >1510</a>, <a
+href="glossaries-extra-manual.html#dx1-48003" >1511</a>, <a
+href="glossaries-extra-manual.html#dx1-49005" >1512</a>, <a
+href="glossaries-extra-manual.html#dx1-53006" >1513</a>, <a
+href="glossaries-extra-manual.html#dx1-53024" >1514</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">I</span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\ifglsxtrinitwrglossbefore</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6014" ><span
+class="cmti-10">1515</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">inputenc </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-38012" >1516</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">L</span>
+<span class="index-item">link-text&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8001" >1517</a>, <a
+href="glossaries-extra-manual.html#dx1-8003" >1518</a>, <a
+href="glossaries-extra-manual.html#dx1-8030" >1519</a>, <a
+href="glossaries-extra-manual.html#dx1-8041" >1520</a>, <a
+href="glossaries-extra-manual.html#dx1-8051" >1521</a>, <a
+href="glossaries-extra-manual.html#dx1-8055" >1522</a>, <a
+href="glossaries-extra-manual.html#dx1-8059" >1523</a>, <a
+href="glossaries-extra-manual.html#dx1-8064" >1524</a>, <a
+href="glossaries-extra-manual.html#dx1-8068" >1525</a>, <a
+href="glossaries-extra-manual.html#dx1-12036" >1526</a>, <a
+href="glossaries-extra-manual.html#dx1-12037" >1527</a>, <a
+href="glossaries-extra-manual.html#dx1-25079" >1528</a>, <a
+href="glossaries-extra-manual.html#dx1-25093" >1529</a>, <a
+href="glossaries-extra-manual.html#dx1-25096" >1530</a>, <a
+href="glossaries-extra-manual.html#dx1-27177" >1531</a>, <a
+href="glossaries-extra-manual.html#dx1-30043" >1532</a>, <a
+href="glossaries-extra-manual.html#dx1-30047" >1533</a>, <a
+href="glossaries-extra-manual.html#dx1-33001" >1534</a>, <a
+href="glossaries-extra-manual.html#dx1-53002" >1535</a>, <a
+href="glossaries-extra-manual.html#dx1-55021" ><span
+class="cmbx-10">1536</span></a> <br /></span>
+<span class="index-item">location list&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8078" >1537</a>, <a
+href="glossaries-extra-manual.html#dx1-49010" >1538</a>, <a
+href="glossaries-extra-manual.html#dx1-49012" >1539</a>, <a
+href="glossaries-extra-manual.html#dx1-53005" >1540</a>, <a
+href="glossaries-extra-manual.html#dx1-55023" ><span
+class="cmbx-10">1541</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\longnewglossaryentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5035" ><span
+class="cmti-10">1542</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">M</span>
+<span class="index-item"><span
+class="cmtt-10">makeglossaries</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3027" >1543</a>, <a
+href="glossaries-extra-manual.html#dx1-3029" >1544</a>, <a
+href="glossaries-extra-manual.html#dx1-3030" >1545</a>, <a
+href="glossaries-extra-manual.html#dx1-5057" >1546</a>, <a
+href="glossaries-extra-manual.html#dx1-55026" ><span
+class="cmbx-10">1547</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\makeglossaries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5052" ><span
+class="cmti-10">1548</span></a> <br /></span>
+
+
+
+<span class="index-item"><span
+class="cmtt-10">makeglossaries-lite</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5058" >1549</a>, <a
+href="glossaries-extra-manual.html#dx1-55030" ><span
+class="cmbx-10">1550</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">makeglossaries-lite</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5059" >1551</a>, <a
+href="glossaries-extra-manual.html#dx1-55029" ><span
+class="cmbx-10">1552</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">makeindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3022" >1553</a>, <a
+href="glossaries-extra-manual.html#dx1-3028" >1554</a>, <a
+href="glossaries-extra-manual.html#dx1-3031" >1555</a>, <a
+href="glossaries-extra-manual.html#dx1-4011" >1556</a>, <a
+href="glossaries-extra-manual.html#dx1-4097" >1557</a>, <a
+href="glossaries-extra-manual.html#dx1-4100" >1558</a>, <a
+href="glossaries-extra-manual.html#dx1-4124" >1559</a>, <a
+href="glossaries-extra-manual.html#dx1-4141" >1560</a>, <a
+href="glossaries-extra-manual.html#dx1-4145" >1561</a>, <a
+href="glossaries-extra-manual.html#dx1-4171" >1562</a>, <a
+href="glossaries-extra-manual.html#dx1-4180" >1563</a>, <a
+href="glossaries-extra-manual.html#dx1-34003" >1564</a>, <a
+href="glossaries-extra-manual.html#dx1-34008" >1565</a>, <a
+href="glossaries-extra-manual.html#dx1-34044" >1566</a>, <a
+href="glossaries-extra-manual.html#dx1-39006" >1567</a>, <a
+href="glossaries-extra-manual.html#dx1-41005" >1568</a>, <a
+href="glossaries-extra-manual.html#dx1-55003" >1569</a>, <a
+href="glossaries-extra-manual.html#dx1-55028" >1570</a>, <a
+href="glossaries-extra-manual.html#dx1-55032" >1571</a>, <a
+href="glossaries-extra-manual.html#dx1-55033" ><span
+class="cmbx-10">1572</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">makeindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6044" >1573</a>, <a
+href="glossaries-extra-manual.html#dx1-6045" >1574</a>, <a
+href="glossaries-extra-manual.html#dx1-6051" >1575</a>, <a
+href="glossaries-extra-manual.html#dx1-7026" >1576</a>, <a
+href="glossaries-extra-manual.html#dx1-34021" >1577</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">memoir </span>class&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3021" >1578</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">mfirstuc </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4" >1579</a>, <a
+href="glossaries-extra-manual.html#dx1-30132" >1580</a>, <a
+href="glossaries-extra-manual.html#dx1-30134" >1581</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">multicols </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16002" >1582</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">N</span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newabbreviation</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-21002" ><span
+class="cmti-10">1583</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newabbreviationstyle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-28001" ><span
+class="cmti-10">1584</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\newacronym</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-21011" ><span
+class="cmti-10">1585</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">\newglossaryentry </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">access</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30088" >1586</a>, <a
+href="glossaries-extra-manual.html#dx1-30092" >1587</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">alias</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5028" >1588</a>, <a
+href="glossaries-extra-manual.html#dx1-5032" >1589</a>, <a
+href="glossaries-extra-manual.html#dx1-49001" >1590</a>, <a
+href="glossaries-extra-manual.html#dx1-49004" >1591</a>, <a
+href="glossaries-extra-manual.html#dx1-49018" >1592</a>, <a
+href="glossaries-extra-manual.html#dx1-53010" >1593</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">category</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5027" >1594</a>, <a
+href="glossaries-extra-manual.html#dx1-6021" >1595</a>, <a
+href="glossaries-extra-manual.html#dx1-21003" >1596</a>, <a
+href="glossaries-extra-manual.html#dx1-21010" >1597</a>, <a
+href="glossaries-extra-manual.html#dx1-30003" >1598</a>, <a
+href="glossaries-extra-manual.html#dx1-30005" >1599</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">counter</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6035" >1600</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">description</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5002" >1601</a>, <a
+href="glossaries-extra-manual.html#dx1-25098" >1602</a>, <a
+href="glossaries-extra-manual.html#dx1-26006" >1603</a>, <a
+href="glossaries-extra-manual.html#dx1-26037" >1604</a>, <a
+href="glossaries-extra-manual.html#dx1-26039" >1605</a>, <a
+href="glossaries-extra-manual.html#dx1-26063" >1606</a>, <a
+href="glossaries-extra-manual.html#dx1-26089" >1607</a>, <a
+href="glossaries-extra-manual.html#dx1-27007" >1608</a>, <a
+href="glossaries-extra-manual.html#dx1-27040" >1609</a>, <a
+href="glossaries-extra-manual.html#dx1-27059" >1610</a>, <a
+href="glossaries-extra-manual.html#dx1-27083" >1611</a>, <a
+href="glossaries-extra-manual.html#dx1-27096" >1612</a>, <a
+href="glossaries-extra-manual.html#dx1-27117" >1613</a>, <a
+href="glossaries-extra-manual.html#dx1-27124" >1614</a>, <a
+href="glossaries-extra-manual.html#dx1-27145" >1615</a>, <a
+href="glossaries-extra-manual.html#dx1-27152" >1616</a>, <a
+href="glossaries-extra-manual.html#dx1-27181" >1617</a>, <a
+href="glossaries-extra-manual.html#dx1-27202" >1618</a>, <a
+href="glossaries-extra-manual.html#dx1-27209" >1619</a>, <a
+href="glossaries-extra-manual.html#dx1-28013" >1620</a>, <a
+href="glossaries-extra-manual.html#dx1-38009" >1621</a>, <a
+href="glossaries-extra-manual.html#dx1-52038" >1622</a>, <a
+href="glossaries-extra-manual.html#dx1-52040" >1623</a>, <a
+href="glossaries-extra-manual.html#dx1-5046" >1624</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">descriptionplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5036" >1625</a>, <a
+href="glossaries-extra-manual.html#dx1-5039" >1626</a>, <a
+href="glossaries-extra-manual.html#dx1-5041" >1627</a>, <a
+href="glossaries-extra-manual.html#dx1-52042" >1628</a>, <a
+href="glossaries-extra-manual.html#dx1-52044" >1629</a>, <a
+href="glossaries-extra-manual.html#dx1-5043" >1630</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">first</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8013" >1631</a>, <a
+href="glossaries-extra-manual.html#dx1-11014" >1632</a>, <a
+href="glossaries-extra-manual.html#dx1-11015" >1633</a>, <a
+href="glossaries-extra-manual.html#dx1-12004" >1634</a>, <a
+href="glossaries-extra-manual.html#dx1-25008" >1635</a>, <a
+href="glossaries-extra-manual.html#dx1-25015" >1636</a>, <a
+href="glossaries-extra-manual.html#dx1-28009" >1637</a>, <a
+href="glossaries-extra-manual.html#dx1-28015" >1638</a>, <a
+href="glossaries-extra-manual.html#dx1-29042" >1639</a>, <a
+href="glossaries-extra-manual.html#dx1-34026" >1640</a>, <a
+href="glossaries-extra-manual.html#dx1-52022" >1641</a>, <a
+href="glossaries-extra-manual.html#dx1-52024" >1642</a>, <a
+href="glossaries-extra-manual.html#dx1-55017" >1643</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">firstaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30098" >1644</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">firstplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8014" >1645</a>, <a
+href="glossaries-extra-manual.html#dx1-11009" >1646</a>, <a
+href="glossaries-extra-manual.html#dx1-11013" >1647</a>, <a
+href="glossaries-extra-manual.html#dx1-11017" >1648</a>, <a
+href="glossaries-extra-manual.html#dx1-11021" >1649</a>, <a
+href="glossaries-extra-manual.html#dx1-28010" >1650</a>, <a
+href="glossaries-extra-manual.html#dx1-28016" >1651</a>, <a
+href="glossaries-extra-manual.html#dx1-52026" >1652</a>, <a
+href="glossaries-extra-manual.html#dx1-52028" >1653</a>, <a
+href="glossaries-extra-manual.html#dx1-55018" >1654</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">group</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-38011" >1655</a>, <a
+href="glossaries-extra-manual.html#dx1-47008" >1656</a>, <a
+href="glossaries-extra-manual.html#dx1-47010" >1657</a>, <a
+href="glossaries-extra-manual.html#dx1-47012" >1658</a>, <a
+href="glossaries-extra-manual.html#dx1-47014" >1659</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">location</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14023" >1660</a>, <a
+href="glossaries-extra-manual.html#dx1-41015" >1661</a>, <a
+href="glossaries-extra-manual.html#dx1-47032" >1662</a>, <a
+href="glossaries-extra-manual.html#dx1-47035" >1663</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">loclist</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-41014" >1664</a>, <a
+href="glossaries-extra-manual.html#dx1-47033" >1665</a>, <a
+href="glossaries-extra-manual.html#dx1-47037" >1666</a>, <a
+href="glossaries-extra-manual.html#dx1-47039" >1667</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">long</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-11026" >1668</a>, <a
+href="glossaries-extra-manual.html#dx1-11027" >1669</a>, <a
+href="glossaries-extra-manual.html#dx1-21024" >1670</a>, <a
+href="glossaries-extra-manual.html#dx1-25012" >1671</a>, <a
+href="glossaries-extra-manual.html#dx1-30045" >1672</a>, <a
+href="glossaries-extra-manual.html#dx1-34028" >1673</a>, <a
+href="glossaries-extra-manual.html#dx1-52054" >1674</a>, <a
+href="glossaries-extra-manual.html#dx1-52056" >1675</a>, <a
+href="glossaries-extra-manual.html#dx1-5044" >1676</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">longplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-11010" >1677</a>, <a
+href="glossaries-extra-manual.html#dx1-11025" >1678</a>, <a
+href="glossaries-extra-manual.html#dx1-21025" >1679</a>, <a
+href="glossaries-extra-manual.html#dx1-28030" >1680</a>, <a
+href="glossaries-extra-manual.html#dx1-52058" >1681</a>, <a
+href="glossaries-extra-manual.html#dx1-52060" >1682</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">name</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5007" >1683</a>, <a
+href="glossaries-extra-manual.html#dx1-5008" >1684</a>, <a
+href="glossaries-extra-manual.html#dx1-5010" >1685</a>, <a
+href="glossaries-extra-manual.html#dx1-7034" >1686</a>, <a
+href="glossaries-extra-manual.html#dx1-11023" >1687</a>, <a
+href="glossaries-extra-manual.html#dx1-12002" >1688</a>, <a
+href="glossaries-extra-manual.html#dx1-18006" >1689</a>, <a
+href="glossaries-extra-manual.html#dx1-18010" >1690</a>, <a
+href="glossaries-extra-manual.html#dx1-26004" >1691</a>, <a
+href="glossaries-extra-manual.html#dx1-26035" >1692</a>, <a
+href="glossaries-extra-manual.html#dx1-26061" >1693</a>, <a
+href="glossaries-extra-manual.html#dx1-26087" >1694</a>, <a
+href="glossaries-extra-manual.html#dx1-27005" >1695</a>, <a
+href="glossaries-extra-manual.html#dx1-27022" >1696</a>, <a
+href="glossaries-extra-manual.html#dx1-27026" >1697</a>, <a
+href="glossaries-extra-manual.html#dx1-27042" >1698</a>, <a
+href="glossaries-extra-manual.html#dx1-27056" >1699</a>, <a
+href="glossaries-extra-manual.html#dx1-27060" >1700</a>, <a
+href="glossaries-extra-manual.html#dx1-27081" >1701</a>, <a
+href="glossaries-extra-manual.html#dx1-27094" >1702</a>, <a
+href="glossaries-extra-manual.html#dx1-27098" >1703</a>, <a
+href="glossaries-extra-manual.html#dx1-27115" >1704</a>, <a
+href="glossaries-extra-manual.html#dx1-27123" >1705</a>, <a
+href="glossaries-extra-manual.html#dx1-27125" >1706</a>, <a
+href="glossaries-extra-manual.html#dx1-27143" >1707</a>, <a
+href="glossaries-extra-manual.html#dx1-27151" >1708</a>, <a
+href="glossaries-extra-manual.html#dx1-27153" >1709</a>, <a
+href="glossaries-extra-manual.html#dx1-27180" >1710</a>, <a
+href="glossaries-extra-manual.html#dx1-27199" >1711</a>, <a
+href="glossaries-extra-manual.html#dx1-27203" >1712</a>, <a
+href="glossaries-extra-manual.html#dx1-27210" >1713</a>, <a
+href="glossaries-extra-manual.html#dx1-27216" >1714</a>, <a
+href="glossaries-extra-manual.html#dx1-27222" >1715</a>, <a
+href="glossaries-extra-manual.html#dx1-27227" >1716</a>, <a
+href="glossaries-extra-manual.html#dx1-27235" >1717</a>, <a
+href="glossaries-extra-manual.html#dx1-27239" >1718</a>, <a
+href="glossaries-extra-manual.html#dx1-27242" >1719</a>, <a
+href="glossaries-extra-manual.html#dx1-27247" >1720</a>, <a
+href="glossaries-extra-manual.html#dx1-27250" >1721</a>, <a
+href="glossaries-extra-manual.html#dx1-28007" >1722</a>, <a
+href="glossaries-extra-manual.html#dx1-29039" >1723</a>, <a
+href="glossaries-extra-manual.html#dx1-30089" >1724</a>, <a
+href="glossaries-extra-manual.html#dx1-34014" >1725</a>, <a
+href="glossaries-extra-manual.html#dx1-34027" >1726</a>, <a
+href="glossaries-extra-manual.html#dx1-35010" >1727</a>, <a
+href="glossaries-extra-manual.html#dx1-47009" >1728</a>, <a
+href="glossaries-extra-manual.html#dx1-48015" >1729</a>, <a
+href="glossaries-extra-manual.html#dx1-52006" >1730</a>, <a
+href="glossaries-extra-manual.html#dx1-53008" >1731</a>, <a
+href="glossaries-extra-manual.html#dx1-53016" >1732</a>, <a
+href="glossaries-extra-manual.html#dx1-53017" >1733</a>, <a
+href="glossaries-extra-manual.html#dx1-53018" >1734</a>, <a
+href="glossaries-extra-manual.html#dx1-53020" >1735</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nameshortaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30094" >1736</a>, <a
+href="glossaries-extra-manual.html#dx1-30097" >1737</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">parent</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20084" >1738</a>, <a
+href="glossaries-extra-manual.html#dx1-34025" >1739</a>, <a
+href="glossaries-extra-manual.html#dx1-46013" >1740</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">plural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8017" >1741</a>, <a
+href="glossaries-extra-manual.html#dx1-11002" >1742</a>, <a
+href="glossaries-extra-manual.html#dx1-11004" >1743</a>, <a
+href="glossaries-extra-manual.html#dx1-11007" >1744</a>, <a
+href="glossaries-extra-manual.html#dx1-11008" >1745</a>, <a
+href="glossaries-extra-manual.html#dx1-11016" >1746</a>, <a
+href="glossaries-extra-manual.html#dx1-11018" >1747</a>, <a
+href="glossaries-extra-manual.html#dx1-11019" >1748</a>, <a
+href="glossaries-extra-manual.html#dx1-11020" >1749</a>, <a
+href="glossaries-extra-manual.html#dx1-28012" >1750</a>, <a
+href="glossaries-extra-manual.html#dx1-46012" >1751</a>, <a
+href="glossaries-extra-manual.html#dx1-52018" >1752</a>, <a
+href="glossaries-extra-manual.html#dx1-52020" >1753</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">prefix</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5023" >1754</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">see</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4054" >1755</a>, <a
+href="glossaries-extra-manual.html#dx1-4057" >1756</a>, <a
+href="glossaries-extra-manual.html#dx1-4064" >1757</a>, <a
+href="glossaries-extra-manual.html#dx1-4069" >1758</a>, <a
+href="glossaries-extra-manual.html#dx1-4080" >1759</a>, <a
+href="glossaries-extra-manual.html#dx1-4082" >1760</a>, <a
+href="glossaries-extra-manual.html#dx1-4084" >1761</a>, <a
+href="glossaries-extra-manual.html#dx1-5006" >1762</a>, <a
+href="glossaries-extra-manual.html#dx1-5030" >1763</a>, <a
+href="glossaries-extra-manual.html#dx1-5031" >1764</a>, <a
+href="glossaries-extra-manual.html#dx1-7001" >1765</a>, <a
+href="glossaries-extra-manual.html#dx1-7002" >1766</a>, <a
+href="glossaries-extra-manual.html#dx1-7003" >1767</a>, <a
+href="glossaries-extra-manual.html#dx1-7005" >1768</a>, <a
+href="glossaries-extra-manual.html#dx1-7012" >1769</a>, <a
+href="glossaries-extra-manual.html#dx1-7015" >1770</a>, <a
+href="glossaries-extra-manual.html#dx1-7017" >1771</a>, <a
+href="glossaries-extra-manual.html#dx1-7019" >1772</a>, <a
+href="glossaries-extra-manual.html#dx1-7022" >1773</a>, <a
+href="glossaries-extra-manual.html#dx1-7024" >1774</a>, <a
+href="glossaries-extra-manual.html#dx1-7051" >1775</a>, <a
+href="glossaries-extra-manual.html#dx1-7055" >1776</a>, <a
+href="glossaries-extra-manual.html#dx1-7056" >1777</a>, <a
+href="glossaries-extra-manual.html#dx1-7063" >1778</a>, <a
+href="glossaries-extra-manual.html#dx1-38008" >1779</a>, <a
+href="glossaries-extra-manual.html#dx1-47017" >1780</a>, <a
+href="glossaries-extra-manual.html#dx1-49003" >1781</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">seealso</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4055" >1782</a>, <a
+href="glossaries-extra-manual.html#dx1-4058" >1783</a>, <a
+href="glossaries-extra-manual.html#dx1-4065" >1784</a>, <a
+href="glossaries-extra-manual.html#dx1-5029" >1785</a>, <a
+href="glossaries-extra-manual.html#dx1-5033" >1786</a>, <a
+href="glossaries-extra-manual.html#dx1-7054" >1787</a>, <a
+href="glossaries-extra-manual.html#dx1-7057" >1788</a>, <a
+href="glossaries-extra-manual.html#dx1-7060" >1789</a>, <a
+href="glossaries-extra-manual.html#dx1-7062" >1790</a>, <a
+href="glossaries-extra-manual.html#dx1-7066" >1791</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">short</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7041" >1792</a>, <a
+href="glossaries-extra-manual.html#dx1-8011" >1793</a>, <a
+href="glossaries-extra-manual.html#dx1-8018" >1794</a>, <a
+href="glossaries-extra-manual.html#dx1-8021" >1795</a>, <a
+href="glossaries-extra-manual.html#dx1-11031" >1796</a>, <a
+href="glossaries-extra-manual.html#dx1-11033" >1797</a>, <a
+href="glossaries-extra-manual.html#dx1-11039" >1798</a>, <a
+href="glossaries-extra-manual.html#dx1-21022" >1799</a>, <a
+href="glossaries-extra-manual.html#dx1-25011" >1800</a>, <a
+href="glossaries-extra-manual.html#dx1-25018" >1801</a>, <a
+href="glossaries-extra-manual.html#dx1-30044" >1802</a>, <a
+href="glossaries-extra-manual.html#dx1-30077" >1803</a>, <a
+href="glossaries-extra-manual.html#dx1-30085" >1804</a>, <a
+href="glossaries-extra-manual.html#dx1-52046" >1805</a>, <a
+href="glossaries-extra-manual.html#dx1-52048" >1806</a>, <a
+href="glossaries-extra-manual.html#dx1-5045" >1807</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">shortaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30084" >1808</a>, <a
+href="glossaries-extra-manual.html#dx1-30086" >1809</a>, <a
+href="glossaries-extra-manual.html#dx1-30090" >1810</a>, <a
+href="glossaries-extra-manual.html#dx1-30091" >1811</a>, <a
+href="glossaries-extra-manual.html#dx1-30102" >1812</a>, <a
+href="glossaries-extra-manual.html#dx1-30105" >1813</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">shortplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-11011" >1814</a>, <a
+href="glossaries-extra-manual.html#dx1-11028" >1815</a>, <a
+href="glossaries-extra-manual.html#dx1-11032" >1816</a>, <a
+href="glossaries-extra-manual.html#dx1-11038" >1817</a>, <a
+href="glossaries-extra-manual.html#dx1-21006" >1818</a>, <a
+href="glossaries-extra-manual.html#dx1-21023" >1819</a>, <a
+href="glossaries-extra-manual.html#dx1-25042" >1820</a>, <a
+href="glossaries-extra-manual.html#dx1-28026" >1821</a>, <a
+href="glossaries-extra-manual.html#dx1-28042" >1822</a>, <a
+href="glossaries-extra-manual.html#dx1-30063" >1823</a>, <a
+href="glossaries-extra-manual.html#dx1-30069" >1824</a>, <a
+href="glossaries-extra-manual.html#dx1-30073" >1825</a>, <a
+href="glossaries-extra-manual.html#dx1-30078" >1826</a>, <a
+href="glossaries-extra-manual.html#dx1-52050" >1827</a>, <a
+href="glossaries-extra-manual.html#dx1-52052" >1828</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">shortpluralaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30101" >1829</a>, <a
+href="glossaries-extra-manual.html#dx1-30103" >1830</a>, <a
+href="glossaries-extra-manual.html#dx1-30107" >1831</a>, <a
+href="glossaries-extra-manual.html#dx1-30112" >1832</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">sort</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4173" >1833</a>, <a
+href="glossaries-extra-manual.html#dx1-4206" >1834</a>, <a
+href="glossaries-extra-manual.html#dx1-12016" >1835</a>, <a
+href="glossaries-extra-manual.html#dx1-12039" >1836</a>, <a
+href="glossaries-extra-manual.html#dx1-26060" >1837</a>, <a
+href="glossaries-extra-manual.html#dx1-26086" >1838</a>, <a
+href="glossaries-extra-manual.html#dx1-27004" >1839</a>, <a
+href="glossaries-extra-manual.html#dx1-27057" >1840</a>, <a
+href="glossaries-extra-manual.html#dx1-27084" >1841</a>, <a
+href="glossaries-extra-manual.html#dx1-27095" >1842</a>, <a
+href="glossaries-extra-manual.html#dx1-28008" >1843</a>, <a
+href="glossaries-extra-manual.html#dx1-28035" >1844</a>, <a
+href="glossaries-extra-manual.html#dx1-30060" >1845</a>, <a
+href="glossaries-extra-manual.html#dx1-30065" >1846</a>, <a
+href="glossaries-extra-manual.html#dx1-34006" >1847</a>, <a
+href="glossaries-extra-manual.html#dx1-34018" >1848</a>, <a
+href="glossaries-extra-manual.html#dx1-34023" >1849</a>, <a
+href="glossaries-extra-manual.html#dx1-34029" >1850</a>, <a
+href="glossaries-extra-manual.html#dx1-36015" >1851</a>, <a
+href="glossaries-extra-manual.html#dx1-48002" >1852</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbol</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46032" >1853</a>, <a
+href="glossaries-extra-manual.html#dx1-52030" >1854</a>, <a
+href="glossaries-extra-manual.html#dx1-52032" >1855</a>, <a
+href="glossaries-extra-manual.html#dx1-5047" >1856</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbolplural</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-52034" >1857</a>, <a
+href="glossaries-extra-manual.html#dx1-52036" >1858</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">text</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5009" >1859</a>, <a
+href="glossaries-extra-manual.html#dx1-7033" >1860</a>, <a
+href="glossaries-extra-manual.html#dx1-8016" >1861</a>, <a
+href="glossaries-extra-manual.html#dx1-11005" >1862</a>, <a
+href="glossaries-extra-manual.html#dx1-11022" >1863</a>, <a
+href="glossaries-extra-manual.html#dx1-11024" >1864</a>, <a
+href="glossaries-extra-manual.html#dx1-12003" >1865</a>, <a
+href="glossaries-extra-manual.html#dx1-25010" >1866</a>, <a
+href="glossaries-extra-manual.html#dx1-25016" >1867</a>, <a
+href="glossaries-extra-manual.html#dx1-28011" >1868</a>, <a
+href="glossaries-extra-manual.html#dx1-29034" >1869</a>, <a
+href="glossaries-extra-manual.html#dx1-46011" >1870</a>, <a
+href="glossaries-extra-manual.html#dx1-52014" >1871</a>, <a
+href="glossaries-extra-manual.html#dx1-52016" >1872</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">textaccess</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30095" >1873</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">type</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13046" >1874</a>, <a
+href="glossaries-extra-manual.html#dx1-30006" >1875</a>, <a
+href="glossaries-extra-manual.html#dx1-42010" >1876</a>, <a
+href="glossaries-extra-manual.html#dx1-48006" >1877</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">user1</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25080" >1878</a>, <a
+href="glossaries-extra-manual.html#dx1-25085" >1879</a>, <a
+href="glossaries-extra-manual.html#dx1-30046" >1880</a> <br /></span>
+<span class="index-item">number list&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4027" >1881</a>, <a
+href="glossaries-extra-manual.html#dx1-4029" >1882</a>, <a
+href="glossaries-extra-manual.html#dx1-4030" >1883</a>, <a
+href="glossaries-extra-manual.html#dx1-4032" >1884</a>, <a
+href="glossaries-extra-manual.html#dx1-4126" >1885</a>, <a
+href="glossaries-extra-manual.html#dx1-4136" >1886</a>, <a
+href="glossaries-extra-manual.html#dx1-4140" >1887</a>, <a
+href="glossaries-extra-manual.html#dx1-4150" >1888</a>, <a
+href="glossaries-extra-manual.html#dx1-4151" >1889</a>, <a
+href="glossaries-extra-manual.html#dx1-7023" >1890</a>, <a
+href="glossaries-extra-manual.html#dx1-7047" >1891</a>, <a
+href="glossaries-extra-manual.html#dx1-7050" >1892</a>, <a
+href="glossaries-extra-manual.html#dx1-7052" >1893</a>, <a
+href="glossaries-extra-manual.html#dx1-7053" >1894</a>, <a
+href="glossaries-extra-manual.html#dx1-8072" >1895</a>, <a
+href="glossaries-extra-manual.html#dx1-19001" >1896</a>, <a
+href="glossaries-extra-manual.html#dx1-19004" >1897</a>, <a
+href="glossaries-extra-manual.html#dx1-19005" >1898</a>, <a
+href="glossaries-extra-manual.html#dx1-19006" >1899</a>, <a
+href="glossaries-extra-manual.html#dx1-19008" >1900</a>, <a
+href="glossaries-extra-manual.html#dx1-19009" >1901</a>, <a
+href="glossaries-extra-manual.html#dx1-19011" >1902</a>, <a
+href="glossaries-extra-manual.html#dx1-20016" >1903</a>, <a
+href="glossaries-extra-manual.html#dx1-20028" >1904</a>, <a
+href="glossaries-extra-manual.html#dx1-20047" >1905</a>, <a
+href="glossaries-extra-manual.html#dx1-20091" >1906</a>, <a
+href="glossaries-extra-manual.html#dx1-20093" >1907</a>, <a
+href="glossaries-extra-manual.html#dx1-20096" >1908</a>, <a
+href="glossaries-extra-manual.html#dx1-20098" >1909</a>, <a
+href="glossaries-extra-manual.html#dx1-47006" >1910</a>, <a
+href="glossaries-extra-manual.html#dx1-47034" >1911</a>, <a
+href="glossaries-extra-manual.html#dx1-53015" >1912</a>, <a
+href="glossaries-extra-manual.html#dx1-55025" >1913</a>, <a
+href="glossaries-extra-manual.html#dx1-55034" ><span
+class="cmbx-10">1914</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">P</span>
+<span class="index-item">package options:<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">abbreviations</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4188" >1915</a>, <a
+href="glossaries-extra-manual.html#dx1-4197" >1916</a>, <a
+href="glossaries-extra-manual.html#dx1-4198" >1917</a>, <a
+href="glossaries-extra-manual.html#dx1-4250" >1918</a>, <a
+href="glossaries-extra-manual.html#dx1-54002" >1919</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">accsupp</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4033" >1920</a>, <a
+href="glossaries-extra-manual.html#dx1-4039" >1921</a>, <a
+href="glossaries-extra-manual.html#dx1-30082" >1922</a>, <a
+href="glossaries-extra-manual.html#dx1-48019" >1923</a>, <a
+href="glossaries-extra-manual.html#dx1-52002" >1924</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">acronym</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4199" >1925</a>, <a
+href="glossaries-extra-manual.html#dx1-4216" >1926</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">acronymlists</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4203" >1927</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">acronyms</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4215" >1928</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">automake</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5060" >1929</a>, <a
+href="glossaries-extra-manual.html#dx1-54021" >1930</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">autoseeindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4063" >1931</a>, <a
+href="glossaries-extra-manual.html#dx1-4070" >1932</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">false</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4056" >1933</a>, <a
+href="glossaries-extra-manual.html#dx1-4067" >1934</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">counter</span><br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">chapter</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4091" >1935</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">equation</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4094" >1936</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">section</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4092" >1937</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">wrglossary</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4127" >1938</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">debug</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4002" >1939</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">all</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4005" >1940</a>, <a
+href="glossaries-extra-manual.html#dx1-4013" >1941</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">showtargets</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4003" >1942</a>, <a
+href="glossaries-extra-manual.html#dx1-4014" >1943</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">showwrgloss</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4004" >1944</a>, <a
+href="glossaries-extra-manual.html#dx1-4006" >1945</a>, <a
+href="glossaries-extra-manual.html#dx1-4015" >1946</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4007" >1947</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">docdef</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4153" >1948</a>, <a
+href="glossaries-extra-manual.html#dx1-4251" >1949</a>, <a
+href="glossaries-extra-manual.html#dx1-4252" >1950</a>, <a
+href="glossaries-extra-manual.html#dx1-5056" >1951</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">restricted</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4166" >1952</a>, <a
+href="glossaries-extra-manual.html#dx1-4176" >1953</a>, <a
+href="glossaries-extra-manual.html#dx1-4177" >1954</a>, <a
+href="glossaries-extra-manual.html#dx1-4185" >1955</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4184" >1956</a>, <a
+href="glossaries-extra-manual.html#dx1-4186" >1957</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">docdefs</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-35003" >1958</a>, <a
+href="glossaries-extra-manual.html#dx1-35006" >1959</a>, <a
+href="glossaries-extra-manual.html#dx1-47022" >1960</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4165" >1961</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">entrycounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-45002" >1962</a>, <a
+href="glossaries-extra-manual.html#dx1-48007" >1963</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">equations</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4108" >1964</a>, <a
+href="glossaries-extra-manual.html#dx1-6036" >1965</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4095" >1966</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">floats</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4115" >1967</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">hyperfirst</span><br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">false</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-30030" >1968</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">index</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4221" >1969</a>, <a
+href="glossaries-extra-manual.html#dx1-5049" >1970</a>, <a
+href="glossaries-extra-manual.html#dx1-30011" >1971</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">indexcounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4090" >1972</a>, <a
+href="glossaries-extra-manual.html#dx1-4121" >1973</a>, <a
+href="glossaries-extra-manual.html#dx1-4137" >1974</a>, <a
+href="glossaries-extra-manual.html#dx1-39025" >1975</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">indexcrossrefs</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4053" >1976</a>, <a
+href="glossaries-extra-manual.html#dx1-4059" >1977</a>, <a
+href="glossaries-extra-manual.html#dx1-4068" >1978</a>, <a
+href="glossaries-extra-manual.html#dx1-7011" >1979</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">false</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4062" >1980</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">indexonlyfirst</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6004" >1981</a>, <a
+href="glossaries-extra-manual.html#dx1-6006" >1982</a>, <a
+href="glossaries-extra-manual.html#dx1-30038" >1983</a>, <a
+href="glossaries-extra-manual.html#dx1-34040" >1984</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">makeindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-41016" >1985</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nogroupskip</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-16008" >1986</a>, <a
+href="glossaries-extra-manual.html#dx1-20014" >1987</a>, <a
+href="glossaries-extra-manual.html#dx1-20031" >1988</a>, <a
+href="glossaries-extra-manual.html#dx1-20033" >1989</a>, <a
+href="glossaries-extra-manual.html#dx1-20041" >1990</a>, <a
+href="glossaries-extra-manual.html#dx1-20043" >1991</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nomain</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3032" >1992</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nomissingglstext</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4187" >1993</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nonumberlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7048" >1994</a>, <a
+href="glossaries-extra-manual.html#dx1-15046" >1995</a>, <a
+href="glossaries-extra-manual.html#dx1-19003" >1996</a>, <a
+href="glossaries-extra-manual.html#dx1-19007" >1997</a>, <a
+href="glossaries-extra-manual.html#dx1-55036" >1998</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nopostdot</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4022" >1999</a>, <a
+href="glossaries-extra-manual.html#dx1-4024" >2000</a>, <a
+href="glossaries-extra-manual.html#dx1-18026" >2001</a>, <a
+href="glossaries-extra-manual.html#dx1-20009" >2002</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">false</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3004" >2003</a>, <a
+href="glossaries-extra-manual.html#dx1-4017" >2004</a>, <a
+href="glossaries-extra-manual.html#dx1-18020" >2005</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3003" >2006</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">noredefwarn</span><br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">false</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3009" >2007</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3006" >2008</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">notree</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20066" >2009</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">numbers</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4210" >2010</a>, <a
+href="glossaries-extra-manual.html#dx1-4240" >2011</a>, <a
+href="glossaries-extra-manual.html#dx1-30017" >2012</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">postdot</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3005" >2013</a>, <a
+href="glossaries-extra-manual.html#dx1-4016" >2014</a>, <a
+href="glossaries-extra-manual.html#dx1-4025" >2015</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">postpunc</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4018" >2016</a>, <a
+href="glossaries-extra-manual.html#dx1-4023" >2017</a>, <a
+href="glossaries-extra-manual.html#dx1-4028" >2018</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">comma</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4019" >2019</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">dot</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4020" >2020</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">none</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4021" >2021</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">record</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4061" >2022</a>, <a
+href="glossaries-extra-manual.html#dx1-4071" >2023</a>, <a
+href="glossaries-extra-manual.html#dx1-10004" >2024</a>, <a
+href="glossaries-extra-manual.html#dx1-14009" >2025</a>, <a
+href="glossaries-extra-manual.html#dx1-36010" >2026</a>, <a
+href="glossaries-extra-manual.html#dx1-36021" >2027</a>, <a
+href="glossaries-extra-manual.html#dx1-39002" >2028</a>, <a
+href="glossaries-extra-manual.html#dx1-39009" >2029</a>, <a
+href="glossaries-extra-manual.html#dx1-46070" >2030</a>, <a
+href="glossaries-extra-manual.html#dx1-47011" >2031</a>, <a
+href="glossaries-extra-manual.html#dx1-47015" >2032</a>, <a
+href="glossaries-extra-manual.html#dx1-47044" >2033</a>, <a
+href="glossaries-extra-manual.html#dx1-54008" >2034</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">alsoindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4009" >2035</a>, <a
+href="glossaries-extra-manual.html#dx1-4106" >2036</a>, <a
+href="glossaries-extra-manual.html#dx1-5054" >2037</a>, <a
+href="glossaries-extra-manual.html#dx1-36013" >2038</a>, <a
+href="glossaries-extra-manual.html#dx1-39005" >2039</a>, <a
+href="glossaries-extra-manual.html#dx1-47045" >2040</a>, <a
+href="glossaries-extra-manual.html#dx1-49008" >2041</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nameref</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-41001" >2042</a>, <a
+href="glossaries-extra-manual.html#dx1-41010" >2043</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">off</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5055" >2044</a>, <a
+href="glossaries-extra-manual.html#dx1-49007" >2045</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">only</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4066" >2046</a>, <a
+href="glossaries-extra-manual.html#dx1-4073" >2047</a>, <a
+href="glossaries-extra-manual.html#dx1-4079" >2048</a>, <a
+href="glossaries-extra-manual.html#dx1-4085" >2049</a>, <a
+href="glossaries-extra-manual.html#dx1-4088" >2050</a>, <a
+href="glossaries-extra-manual.html#dx1-4105" >2051</a>, <a
+href="glossaries-extra-manual.html#dx1-5053" >2052</a>, <a
+href="glossaries-extra-manual.html#dx1-39001" >2053</a>, <a
+href="glossaries-extra-manual.html#dx1-47021" >2054</a>, <a
+href="glossaries-extra-manual.html#dx1-49011" >2055</a>, <a
+href="glossaries-extra-manual.html#dx1-49016" >2056</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">section</span><br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">chapter</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14040" >2057</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">seeautonumberlist</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7049" >2058</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">seenoindex</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7016" >2059</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">ignore</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7018" >2060</a>, <a
+href="glossaries-extra-manual.html#dx1-47019" >2061</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">warn</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47020" >2062</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">shortcuts</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4225" >2063</a>, <a
+href="glossaries-extra-manual.html#dx1-4248" >2064</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">abbr</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4231" >2065</a>, <a
+href="glossaries-extra-manual.html#dx1-24002" >2066</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">abbreviation</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-24001" >2067</a>, <a
+href="glossaries-extra-manual.html#dx1-24005" >2068</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">abbreviations</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4230" >2069</a>, <a
+href="glossaries-extra-manual.html#dx1-4244" >2070</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">ac</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4228" >2071</a>, <a
+href="glossaries-extra-manual.html#dx1-4229" >2072</a>, <a
+href="glossaries-extra-manual.html#dx1-4243" >2073</a>, <a
+href="glossaries-extra-manual.html#dx1-24003" >2074</a>, <a
+href="glossaries-extra-manual.html#dx1-24006" >2075</a>, <a
+href="glossaries-extra-manual.html#dx1-32011" >2076</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">acro</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4227" >2077</a>, <a
+href="glossaries-extra-manual.html#dx1-32014" >2078</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">acronyms</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4226" >2079</a>, <a
+href="glossaries-extra-manual.html#dx1-32013" >2080</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">all</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4241" >2081</a>, <a
+href="glossaries-extra-manual.html#dx1-32012" >2082</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">false</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4247" >2083</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">none</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4246" >2084</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">other</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4232" >2085</a>, <a
+href="glossaries-extra-manual.html#dx1-4245" >2086</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4242" >2087</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">sort</span><br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">none</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4086" >2088</a>, <a
+href="glossaries-extra-manual.html#dx1-48001" >2089</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">stylemods</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4042" >2090</a>, <a
+href="glossaries-extra-manual.html#dx1-14004" >2091</a>, <a
+href="glossaries-extra-manual.html#dx1-17002" >2092</a>, <a
+href="glossaries-extra-manual.html#dx1-20003" >2093</a>, <a
+href="glossaries-extra-manual.html#dx1-20005" >2094</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">all</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4045" >2095</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">default</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4044" >2096</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">subentrycounter</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-45003" >2097</a>, <a
+href="glossaries-extra-manual.html#dx1-48008" >2098</a> <br /></span>
+
+
+
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">symbols</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4204" >2099</a>, <a
+href="glossaries-extra-manual.html#dx1-4237" >2100</a>, <a
+href="glossaries-extra-manual.html#dx1-30014" >2101</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">toc</span><br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">false</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3002" >2102</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3001" >2103</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">translate</span><br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">babel</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3011" >2104</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">true</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3013" >2105</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">undefaction</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4046" >2106</a>, <a
+href="glossaries-extra-manual.html#dx1-5014" >2107</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">error</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4047" >2108</a>, <a
+href="glossaries-extra-manual.html#dx1-4074" >2109</a>, <a
+href="glossaries-extra-manual.html#dx1-10002" >2110</a> <br /></span>
+<span class="index-subsubitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">warn</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4048" >2111</a>, <a
+href="glossaries-extra-manual.html#dx1-4052" >2112</a>, <a
+href="glossaries-extra-manual.html#dx1-4076" >2113</a>, <a
+href="glossaries-extra-manual.html#dx1-4174" >2114</a>, <a
+href="glossaries-extra-manual.html#dx1-10003" >2115</a>, <a
+href="glossaries-extra-manual.html#dx1-10005" >2116</a>, <a
+href="glossaries-extra-manual.html#dx1-36022" >2117</a>, <a
+href="glossaries-extra-manual.html#dx1-46006" >2118</a>, <a
+href="glossaries-extra-manual.html#dx1-46017" >2119</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">xindy</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7068" >2120</a>, <a
+href="glossaries-extra-manual.html#dx1-34004" >2121</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">page </span>(counter)&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4093" >2122</a>, <a
+href="glossaries-extra-manual.html#dx1-4133" >2123</a>, <a
+href="glossaries-extra-manual.html#dx1-4146" >2124</a>, <a
+href="glossaries-extra-manual.html#dx1-32031" >2125</a>, <a
+href="glossaries-extra-manual.html#dx1-32043" >2126</a>, <a
+href="glossaries-extra-manual.html#dx1-41020" >2127</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">polyglossia </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46069" >2128</a>, <a
+href="glossaries-extra-manual.html#dx1-54005" >2129</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\pretoglossarypreamble</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-45011" ><span
+class="cmti-10">2130</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printabbreviations</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4189" ><span
+class="cmti-10">2131</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">\printglossary </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">label</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5025" >2132</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">nogroupskip</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20015" >2133</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">prefix</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5022" >2134</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">target</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5020" >2135</a>, <a
+href="glossaries-extra-manual.html#dx1-45009" >2136</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">targetnameprefix</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5021" >2137</a> <br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">title</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-54006" >2138</a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">\printnoidxglossary </span>options<br /></span>
+<span class="index-subitem">&#x00A0;&#x00A0;&#x00A0;&#x00A0;<span
+class="cmss-10">sort</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47023" >2139</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtabbreviations</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4191" ><span
+class="cmti-10">2140</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtacronyms</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4218" ><span
+class="cmti-10">2141</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossaries</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47024" ><span
+class="cmti-10">2142</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47001" ><span
+class="cmti-10">2143</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossary*</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47005" ><span
+class="cmti-10">2144</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossaryentryprocesshook</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47027" ><span
+class="cmti-10">2145</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossaryhandler</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47030" ><span
+class="cmti-10">2146</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossarypredoglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47029" ><span
+class="cmti-10">2147</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossaryskipentry</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47028" ><span
+class="cmti-10">2148</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossaryunit</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47042" ><span
+class="cmti-10">2149</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtglossaryunitsetup</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-47043" ><span
+class="cmti-10">2150</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtindex</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4223" ><span
+class="cmti-10">2151</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtnumbers</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4213" ><span
+class="cmti-10">2152</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\printunsrtsymbols</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4208" ><span
+class="cmti-10">2153</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\provideignoredglossary</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-5017" ><span
+class="cmti-10">2154</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">R</span>
+<span class="index-item"><span
+class="cmss-10">relsizes </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-25048" >2155</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\RestoreAcronyms</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-13045" ><span
+class="cmti-10">2156</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rGLS</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44013" ><span
+class="cmti-10">2157</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rGls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44011" ><span
+class="cmti-10">2158</span></a> <br /></span>
+
+
+
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rgls</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44009" ><span
+class="cmti-10">2159</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rGLSformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44029" ><span
+class="cmti-10">2160</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rGlsformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44027" ><span
+class="cmti-10">2161</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rglsformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44025" ><span
+class="cmti-10">2162</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rGLSpl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44014" ><span
+class="cmti-10">2163</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rGlspl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44012" ><span
+class="cmti-10">2164</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rglspl</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44010" ><span
+class="cmti-10">2165</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rGLSplformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44030" ><span
+class="cmti-10">2166</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rGlsplformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44028" ><span
+class="cmti-10">2167</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\rglsplformat</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-44026" ><span
+class="cmti-10">2168</span></a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">S</span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\setabbreviationstyle</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-23001" ><span
+class="cmti-10">2169</span></a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">slantsc </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-29021" >2170</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">soul </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6024" >2171</a>, <a
+href="glossaries-extra-manual.html#dx1-10012" >2172</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">style </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-14005" >2173</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">subentrycounter </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-48021" >2174</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">T</span>
+<span class="index-item"><span
+class="cmtt-10">texindy</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-34007" >2175</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">textcase </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-7" >2176</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">tracklang </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3" >2177</a>, <a
+href="glossaries-extra-manual.html#dx1-38003" >2178</a>, <a
+href="glossaries-extra-manual.html#dx1-42030" >2179</a>, <a
+href="glossaries-extra-manual.html#dx1-42031" >2180</a>, <a
+href="glossaries-extra-manual.html#dx1-42032" >2181</a>, <a
+href="glossaries-extra-manual.html#dx1-42033" >2182</a>, <a
+href="glossaries-extra-manual.html#dx1-42035" >2183</a>, <a
+href="glossaries-extra-manual.html#dx1-46065" >2184</a>, <a
+href="glossaries-extra-manual.html#dx1-46067" >2185</a>, <a
+href="glossaries-extra-manual.html#dx1-54009" >2186</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">translator </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3012" >2187</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">U</span>
+<span class="index-item"><span
+class="cmss-10">upgreek </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-42029" >2188</a>, <a
+href="glossaries-extra-manual.html#dx1-42098" >2189</a>, <a
+href="glossaries-extra-manual.html#dx1-42104" >2190</a>, <a
+href="glossaries-extra-manual.html#dx1-42109" >2191</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">W</span>
+<span class="index-item"><span
+class="cmtt-10">wrglossary </span>(counter)&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-4128" >2192</a>, <a
+href="glossaries-extra-manual.html#dx1-4138" >2193</a>, <a
+href="glossaries-extra-manual.html#dx1-4139" >2194</a>, <a
+href="glossaries-extra-manual.html#dx1-4143" >2195</a>, <a
+href="glossaries-extra-manual.html#dx1-4149" >2196</a> <br /></span>
+</p><p class="theindex"> <span
+class="cmbx-10">X</span>
+<span class="index-item"><span
+class="cmss-10">xfor </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-8" >2197</a>, <a
+href="glossaries-extra-manual.html#dx1-46059" >2198</a>, <a
+href="glossaries-extra-manual.html#dx1-46061" >2199</a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\xglssetwidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20070" ><span
+class="cmti-10">2200</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\xglsupdatewidest</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-20074" ><span
+class="cmti-10">2201</span></a> <br /></span>
+<span class="index-item"><span class="obeylines-h"><span class="verb"><span
+class="cmtt-10">\xGlsXtrSetField</span></span></span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-46024" ><span
+class="cmti-10">2202</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">xindy</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-3023" >2203</a>, <a
+href="glossaries-extra-manual.html#dx1-4012" >2204</a>, <a
+href="glossaries-extra-manual.html#dx1-4098" >2205</a>, <a
+href="glossaries-extra-manual.html#dx1-4101" >2206</a>, <a
+href="glossaries-extra-manual.html#dx1-4125" >2207</a>, <a
+href="glossaries-extra-manual.html#dx1-4142" >2208</a>, <a
+href="glossaries-extra-manual.html#dx1-4144" >2209</a>, <a
+href="glossaries-extra-manual.html#dx1-4172" >2210</a>, <a
+href="glossaries-extra-manual.html#dx1-4181" >2211</a>, <a
+href="glossaries-extra-manual.html#dx1-34005" >2212</a>, <a
+href="glossaries-extra-manual.html#dx1-36012" >2213</a>, <a
+href="glossaries-extra-manual.html#dx1-39007" >2214</a>, <a
+href="glossaries-extra-manual.html#dx1-41006" >2215</a>, <a
+href="glossaries-extra-manual.html#dx1-55002" >2216</a>, <a
+href="glossaries-extra-manual.html#dx1-55027" >2217</a>, <a
+href="glossaries-extra-manual.html#dx1-55031" >2218</a>, <a
+href="glossaries-extra-manual.html#dx1-55037" ><span
+class="cmbx-10">2219</span></a> <br /></span>
+<span class="index-item"><span
+class="cmtt-10">xindy</span>&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6047" >2220</a> <br /></span>
+<span class="index-item"><span
+class="cmss-10">xkeyval </span>package&#x00A0;&#x00A0;<a
+href="glossaries-extra-manual.html#dx1-6" >2221</a> <br /></span>
+</p></div>
+
+
+
+ <a
+ id="dx1-56001"></a><div class="footnotes"><!--l. 311--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x1-bk" id="fn1x1"><sup class="textsuperscript">1.1</sup></a></span><span
+class="cmr-8">4.21 was originally intended as the last release of </span><span
+class="cmss-8">glossaries </span><span
+class="cmr-8">to incorporate new features, but</span>
+<span
+class="cmr-8">a few new minor features slipped in with some bug fixes in v4.21.</span></p>
+<!--l. 1353--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x2-bk" id="fn1x2"><sup class="textsuperscript">2.1</sup></a></span><span
+class="cmr-8">The </span><span
+class="cmss-8">descriptionplural</span><a
+ id="dx1-5043"></a> <span
+class="cmr-8">key is a throwback to the base package&#8217;s original acronym mechanism</span>
+<span
+class="cmr-8">before the introduction of the </span><span
+class="cmss-8">long</span><a
+ id="dx1-5044"></a> <span
+class="cmr-8">and </span><span
+class="cmss-8">short</span><a
+ id="dx1-5045"></a> <span
+class="cmr-8">keys, where the long form was stored in the </span><span
+class="cmss-8">description</span><a
+ id="dx1-5046"></a>
+<span
+class="cmr-8">field and the short form was stored in the </span><span
+class="cmss-8">symbol</span><a
+ id="dx1-5047"></a> <span
+class="cmr-8">field.</span></p>
+<!--l. 5176--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x3-bk" id="fn1x3"><sup class="textsuperscript">3.1</sup></a></span><span
+class="cmr-8">For compatibility with earlier versions, </span><span
+class="cmtt-8">\glsabbrvscfont </span><span
+class="cmr-8">is defined to </span><span
+class="cmtt-8">\glsxtrscfont</span><span
+class="cmr-8">, which</span>
+<span
+class="cmr-8">is defined to use </span><span
+class="cmtt-8">\textsc</span><span
+class="cmr-8">. Direct use of </span><span
+class="cmtt-8">\glsxtrscfont </span><span
+class="cmr-8">is now deprecated. Likewise for similar</span>
+<span
+class="cmr-8">commands.</span></p>
+<!--l. 8622--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x9-bk" id="fn1x9"><sup class="textsuperscript">9.1</sup></a></span><span
+class="cmr-8">Version 1.11 only allowed one use of </span><span
+class="cmtt-8">\GlsXtrLoadResources </span><span
+class="cmr-8">per document.</span></p>
+<!--l. 8642--><p class="indent" > <span class="footnote-mark"><a
+href="#fn2x9-bk" id="fn2x9"><sup class="textsuperscript">9.2</sup></a></span><span
+class="cmr-8">v1.08 assumed </span>&#x27E8;<span
+class="cmti-8">filename</span>&#x27E9;<span
+class="cmtt-8">.tex </span><span
+class="cmr-8">but that&#8217;s potentially dangerous if, for example, </span>&#x27E8;<span
+class="cmti-8">filename</span>&#x27E9;
+<span
+class="cmr-8">happens to be the same as </span><span
+class="cmtt-8">\jobname</span><span
+class="cmr-8">. The </span><span
+class="cmtt-8">.glstex </span><span
+class="cmr-8">extension was enforced by version</span>
+<span
+class="cmr-8">1.11.</span></p>
+<!--l. 10683--><p class="indent" > <span class="footnote-mark"><a
+href="#fn1x10-bk" id="fn1x10"><sup class="textsuperscript">10.1</sup></a></span><span
+class="cmr-8">Pre version 1.28 used </span><span
+class="cmtt-8">\csedef</span><span
+class="cmr-8">.</span></p> </div>
+
+</body></html>
+
+
+
+
diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.pdf b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.pdf
new file mode 100644
index 0000000000..3af0f7a83e
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.tex b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.tex
new file mode 100644
index 0000000000..674b704722
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/glossaries-extra-manual.tex
@@ -0,0 +1,12125 @@
+\documentclass[report,inlinetitle,widecs]{nlctdoc}
+
+\makeatletter
+\@ifpackageloaded{tex4ht}
+{
+ \DeclareUnicodeCharacter{00FE}{\HCode{&\#x00FE;}}
+ \DeclareUnicodeCharacter{00D0}{\HCode{&\#x00D0;}}
+ \DeclareUnicodeCharacter{01F7}{\HCode{&\#x01F7;}}
+ \DeclareUnicodeCharacter{A77D}{\HCode{&\#xA77D;}}
+ \DeclareUnicodeCharacter{017F}{\HCode{&\#x017F;}}
+ \DeclareUnicodeCharacter{018F}{\HCode{&\#x018F;}}
+}
+{
+ \usepackage{fontspec}
+ \setmainfont{FreeSerif}
+}
+\makeatother
+
+\usepackage{alltt}
+\usepackage{hologo}
+\usepackage[colorlinks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={glossaries-extra.sty: an extension to the glossaries
+package},
+ pdfkeywords={LaTeX,package,glossary,abbreviations}]{hyperref}
+\usepackage[nogroupskip,nonumberlist]{glossaries-extra}
+
+\makeglossaries
+
+\GlsXtrEnableEntryUnitCounting{general}{0}{page}
+
+\renewcommand*{\glsxtrifcounttrigger}[3]{#3}
+
+\renewcommand*{\glslinkcheckfirsthyperhook}{%
+ \ifnum\glsentrycurrcount\glslabel>0
+ \setkeys{glslink}{hyper=false}%
+ \fi
+}
+
+\newcommand*{\XeLaTeX}{\hologo{XeLaTeX}}
+\newcommand*{\LuaLaTeX}{\hologo{LuaLaTeX}}
+\newcommand*{\pdfLaTeX}{\hologo{pdfLaTeX}}
+
+\IndexPrologue{\chapter*{\indexname}
+ \addcontentsline{toc}{chapter}{\indexname}%
+ \markboth{\indexname}{\indexname}}
+
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}}
+
+\glssetcategoryattribute{general}{indexname}{htextbf}
+\glssetcategoryattribute{general}{dualindex}{main}
+
+\newglossaryentry{xindy}{
+ name={\appfmt{xindy}},
+ sort={xindy},
+ description={An flexible indexing application with multilingual
+ support written in Perl.}
+}
+
+\newglossaryentry{makeindex}{%
+ name={\appfmt{makeindex}},%
+ sort={makeindex},%
+ description={An indexing application.},
+}
+
+\newglossaryentry{makeglossaries}{%
+name={\appfmt{makeglossaries}},%
+sort={makeglossaries},%
+description={A custom designed Perl script interface
+provided with the \styfmt{glossaries} package
+to run \gls{xindy} or \gls{makeindex} according to
+the document settings.}}
+
+\newglossaryentry{makeglossaries-lite.lua}{%
+name={\appfmt{makeglossaries-lite}\index{makeglossaries-lite=\appfmt{makeglossaries-lite}|htextbf}},%
+sort={makeglossaries-lite},%
+text={\appfmt{makeglossaries-lite}\iapp{makeglossaries-lite}},%
+description={A custom designed Lua script interface
+to \gls{xindy} and \gls{makeindex} provided with the
+\styfmt{glossaries}
+package. This is a cut-down alternative to the Perl
+\appfmt{makeglossaries} script. If you have Perl installed, use the
+Perl script instead. This script is distributed in the source code
+on CTAN with the file name
+\texttt{makeglossaries-lite.lua} but TeX Live on Unix-like systems
+creates a symbolic link
+called \texttt{makeglossaries-lite} (without the \texttt{.lua}
+extension) to the actual \texttt{makeglossaries-lite.lua} script, and
+\TeX\ distributions on Windows convert the script to an executable
+\texttt{makeglossaries-lite.exe}.}
+}
+
+\newglossaryentry{bib2gls}{%
+name={\appfmt{bib2gls}},%
+sort={bib2gls},%
+description={A command line Java application that selects
+entries from a .bib file and converts them to glossary
+definitions (like \appfmt{bibtex} but also performs hierarchical
+sorting and collation, thus omitting the need for \gls{xindy} or
+\gls{makeindex}). Further details at:
+\url{http://www.dickimaw-books.com/software/bib2gls/}.}%
+}
+
+\newglossaryentry{numberlist}{%
+name={number list},%
+description={A list of \glspl{entrylocation} (also
+called a location list). The number list can be suppressed using the
+\pkgopt{nonumberlist} package option.}
+}
+
+\newglossaryentry{entrylocation}{%
+name={entry location},%
+description={The location of the entry in the document. This
+defaults to the page number on which the entry appears. An entry may
+have multiple locations.}
+}
+
+\newglossaryentry{locationlist}{%
+name={location list},%
+description={A list of \glspl{entrylocation}.
+See \gls{numberlist}.}%
+}
+
+\newglossaryentry{linktext}{%
+name={link-text},
+description={The text produced by commands such as \ics{gls}. It may
+or may not have a hyperlink to the glossary.}
+}
+
+\let\glsd\glsuseri
+\let\glsation\glsuserii
+
+\newglossaryentry{firstuseflag}{%
+name={first use flag},
+description={A conditional that determines whether or not the entry
+has been used according to the rules of \gls{firstuse}.}%
+}
+
+\newglossaryentry{firstusetext}{%
+name={first use text},
+description={The text that is displayed on \gls{firstuse}, which is
+governed by the \gloskey{first} and \gloskey{firstplural} keys of
+\ics{newglossaryentry}. (May be overridden by
+\ics{glsdisp}.)}%
+}
+
+\newglossaryentry{firstuse}{%
+ name={first use},
+ user1={first used},
+ see={firstuseflag,firstusetext},
+ description={The first time a glossary entry is used (from the start
+ of the document or after a reset) with one of the
+ following commands: \ics{gls}, \ics{Gls}, \ics{GLS}, \ics{glspl},
+ \ics{Glspl}, \ics{GLSpl} or \ics{glsdisp}.}%
+}
+
+\setcounter{IndexColumns}{2}
+
+\newrobustcmd*{\eq}{\protect=}% hide from makeindex
+
+\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}}
+\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}}
+\newcommand*{\optfmt}[1]{\textsf{#1}}
+
+\newcommand*{\glostyle}[1]{\textsf{#1}\index{glossary styles:>#1={\protect\sffamily#1}|main}}
+
+\newcommand*{\acrstyle}[1]{\textsf{#1}\index{acronym
+styles (glossaries):>#1={\protect\ttfamily#1}|main}}
+
+\newcommand*{\abbrstylenolink}[1]{%
+ \textsf{#1}\index{abbreviation styles:>#1={\protect\sffamily#1}|main}}
+
+\newcommand*{\abbrstyle}[1]{%
+ \hyperlink{abbrstyle.#1}{\textsf{#1}}%
+ \index{abbreviation styles:>#1={\protect\sffamily#1}|main}%
+}
+
+\makeatletter
+\newcommand{\htarget}[2]{\Hy@raisedlink{\hypertarget{#1}{}}#2}
+\makeatother
+
+\newcommand*{\abbrstyledef}[1]{%
+ \htarget{abbrstyle.#1}{\textsf{#1}}%
+ \index{abbreviation styles:>#1={\protect\sffamily#1}|main}%
+}
+
+\newcommand*{\depabbrstyle}[1]{\textsf{#1}\index{abbreviation styles (deprecated):>#1={\protect\sffamily#1}|main}}
+
+\newcommand*{\category}[1]{\textsf{#1}\index{categories:>#1={\protect\sffamily#1}|main}}
+
+\newcommand*{\catattrnolink}[1]{%
+ \textsf{#1}\index{category attributes:>#1={\protect\sffamily#1}|main}}
+
+\newcommand*{\catattr}[1]{%
+ \hyperlink{catattr.#1}{\textsf{#1}}%
+ \index{category attributes:>#1={\protect\sffamily#1}|main}%
+}
+
+\newcommand*{\catattrdef}[1]{%
+ \htarget{catattr.#1}{\textsf{#1}}%
+ \index{category attributes:>#1={\protect\sffamily#1}|main}%
+}
+
+\newcommand*{\postlinkcat}{%
+ \cs{glsxtrpostlink}\meta{category}%
+ \index{glsxtrpostlinkcategory=\cs{glsxtrpostlink}\meta{category}|hyperpage}%
+}
+
+\renewcommand*{\pkgopt}[2][]{%
+ \hyperlink{styopt.#2}{\pkgoptfmt{#2}}%
+ \ifstrempty{#1}{}{\pkgoptfmt{=#1}}%
+ \ipkgopt[#1]{#2}%
+}
+
+\newcommand*{\pkgoptdef}[1]{%
+ \htarget{styopt.#1}{\pkgoptfmt{#1}}%
+ \ipkgopt{#1}%
+}
+
+\setlength\marginparwidth{70pt}
+
+\begin{document}
+\DeleteShortVerb{\|}
+\MakeShortVerb{"}
+
+ \title{glossaries-extra.sty v1.41:
+ an extension to the glossaries package}
+ \author{Nicola L.C. Talbot\\[10pt]
+Dickimaw Books\\
+\url{http://www.dickimaw-books.com/}}
+
+ \date{2019-04-09}
+ \maketitle
+
+\begin{abstract}
+The \styfmt{glossaries-extra} package is an extension to the
+\styfmt{glossaries} package, providing additional features.
+Some of the features provided by this package are only available
+with \styfmt{glossaries} version 4.19 (or above).
+This document assumes familiarity with the \styfmt{glossaries} package.
+
+The file \texttt{example-glossaries-xr.tex} contains dummy
+entries with cross-references that may be used for creating
+minimal working examples for testing the \styfmt{glossaries-extra}
+package. (The base \styfmt{glossaries} package provides additional files,
+but this one needs \styfmt{glossaries-extra}.) There are equivalent
+\texttt{.bib} files for use with \gls{bib2gls}.
+
+\end{abstract}
+
+\begin{important}
+Since \styfmt{glossaries-extra} internally loads the \styfmt{glossaries}
+package, you also need to have \styfmt{glossaries} installed and
+all the packages that \styfmt{glossaries} depends on (including, but
+not limited to, \sty{tracklang}, \sty{mfirstuc}, \sty{etoolbox},
+\sty{xkeyval} (at least version dated 2006/11/18), \sty{textcase},
+\sty{xfor}, \sty{datatool-base} and \sty{amsgen}. These
+packages are all available in the current \TeX\ Live and Mik\TeX\
+distributions. If any of them are missing, please update your
+\TeX\ distribution using your update manager.
+(For help on this see, for example,
+\href{http://tex.stackexchange.com/questions/55437/how-do-i-update-my-tex-distribution}{How do I update my \TeX\ distribution?}
+or
+\href{http://tex.stackexchange.com/questions/14925/updating-tex-on-linux}{Updating
+\TeX\ on Linux}.)
+\end{important}
+
+Additional resources:
+\begin{itemize}
+\item The \styfmt{glossaries-extra} documented code
+\href{http://mirrors.ctan.org/macros/latex/contrib/glossaries-extra/glossaries-extra-code.pdf}{glossaries-extra-code.pdf}.
+
+\item The
+\href{http://www.dickimaw-books.com/gallery/#glossaries-extra}{\styfmt{glossaries-extra} gallery}.
+
+\item \styfmt{glossaries-extra} and \gls{bib2gls}: An Introductory
+Guide. (\href{http://mirrors.ctan.org/support/bib2gls/bib2gls-begin.pdf}{\texttt{bib2gls-begin.pdf}}).
+
+\item
+\href{https://www.dickimaw-books.com/latex/buildglossaries/}{Incorporating
+makeglossaries or makeglossaries-lite or bib2gls into the document
+build}.
+
+\item The
+\href{http://www.dickimaw-books.com/software/bib2gls}{\appfmt{bib2gls}}
+application.
+
+\item The base \href{https://ctan.org/pkg/glossaries}{\styfmt{glossaries}} package.
+\end{itemize}
+
+\tableofcontents
+
+\chapter{Introduction}
+\label{sec:intro}
+
+The \styfmt{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 \styfmt{glossaries-extra} package is an attempt to provide
+a~compromise for this
+conflict. Version 4.22 of the \styfmt{glossaries} package is
+the last version to incorporate new features.\footnote{4.21 was
+originally intended as the last release of \styfmt{glossaries} to
+incorporate new features, but a few new minor features slipped in with
+some bug fixes in v4.21.} Future versions of
+\styfmt{glossaries} will just be bug fixes. New features will
+instead be added to \styfmt{glossaries-extra}.
+This means that the base \styfmt{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.
+
+\section{Package Defaults}
+\label{sec:defaults}
+
+I'm not happy with some of the default settings assumed by the
+\styfmt{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 \styfmt{glossaries} as it would break backward
+compatibility, but since \styfmt{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:
+\begin{itemize}
+\item \pkgopt[true]{toc} (add the glossaries to the table of
+contents). Use \pkgopt[false]{toc} to switch this back off.
+
+\item \pkgopt[true]{nopostdot} (suppress the terminating full stop
+after the description in the glossary). Use
+\pkgopt[false]{nopostdot} or just \pkgopt{postdot} to restore the
+terminating full stop (period).
+
+\item \pkgopt[true]{noredefwarn} (suppress the warnings that occur when
+the \env{theglossary} environment and \cs{printglossary} are redefined while
+\styfmt{glossaries} is loading). To restore the warnings, use
+\pkgopt[false]{noredefwarn}. Note that this won't have any effect if
+the \styfmt{glossaries} package has already been loaded before you use
+the \styfmt{glossaries-extra} package.
+
+\item If \sty{babel} has been loaded, the \pkgopt[babel]{translate}
+option is switched on. To revert to using the \sty{translator}
+interface, use \pkgopt[true]{translate}. There is no change to the
+default if \sty{babel} hasn't been loaded.
+
+\end{itemize}
+
+The examples below illustrate the difference in explicit
+package options between \styfmt{glossaries} and
+\styfmt{glossaries-extra}. There may be other differences
+resulting from modifications to commands provided by
+\styfmt{glossaries} (see \sectionref{sec:modifications}).
+
+\begin{enumerate}
+\item
+\begin{verbatim}
+\documentclass{article}
+\usepackage{glossaries-extra}
+\end{verbatim}
+This is like:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[toc,nopostdot]{glossaries}
+\usepackage{glossaries-extra}
+\end{verbatim}
+
+\item
+\begin{verbatim}
+\documentclass[british]{article}
+\usepackage{babel}
+\usepackage{glossaries-extra}
+\end{verbatim}
+This is like:
+\begin{verbatim}
+\documentclass[british]{article}
+\usepackage{babel}
+\usepackage[toc,nopostdot,translate=babel]{glossaries}
+\usepackage{glossaries-extra}
+\end{verbatim}
+
+\item
+\begin{verbatim}
+\documentclass{memoir}
+\usepackage{glossaries-extra}
+\end{verbatim}
+This is like:
+\begin{verbatim}
+\documentclass{memoir}
+\usepackage[toc,nopostdot,noredefwarn]{glossaries}
+\usepackage{glossaries-extra}
+\end{verbatim}
+\emph{However}
+\begin{verbatim}
+\documentclass{memoir}
+\usepackage{glossaries}
+\usepackage{glossaries-extra}
+\end{verbatim}
+This is like:
+\begin{verbatim}
+\documentclass{memoir}
+\usepackage[toc,nopostdot]{glossaries}
+\usepackage{glossaries-extra}
+\end{verbatim}
+Since by the time \styfmt{glossaries-extra} has been loaded,
+\styfmt{glossaries} has already redefined \cls{memoir}'s
+glossary-related commands.
+\end{enumerate}
+
+Another noticeable change is that by default \cs{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 \gls{makeindex}\slash\gls{xindy}
+on just the non-empty glossary (or glossaries) and use
+the iterative
+\ics{printglossaries} command instead of \ics{printglossary}. For example,
+consider the following:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[acronym]{glossaries}
+
+\makeglossaries
+
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+\begin{document}
+
+\gls{laser}
+
+\printglossaries
+
+\end{document}
+\end{verbatim}
+The above document will only display the list of
+acronyms at the place where \ics{printglossaries} occurs. However it
+will also attempt to input the \texttt{.gls} file associated with
+the \texttt{main} glossary.
+
+If you use \gls{makeglossaries}, you'll get the warning message:
+\begin{verbatim}
+Warning: File 'test.glo' is empty.
+Have you used any entries defined in glossary 'main'?
+Remember to use package option 'nomain' if you
+don't want to use the main glossary.
+\end{verbatim}
+(where the original file is called \texttt{test.tex})
+but if you simply call \gls{makeindex} directly to generate the
+\texttt{.acr} file (without attempting to create the \texttt{.gls}
+file) then the transcript file will always contain the message:
+\begin{verbatim}
+No file test.gls.
+\end{verbatim}
+This doesn't occur with \gls{makeglossaries} as it will create
+the \texttt{.gls} file containing the single command \cs{null}.
+
+If you simply change from \styfmt{glossaries} to
+\styfmt{glossaries-extra} in this document, you'll find a change in the
+resulting PDF if you don't use \gls{makeglossaries} and you only
+generate the \texttt{.acr} file with \gls{makeindex}.
+
+The transcript file will still contain the message
+about the missing \texttt{.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 \pkgopt{nomain} package option:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[nomain,acronym,postdot]{glossaries-extra}
+
+\makeglossaries
+
+\setabbreviationstyle[acronym]{long-short}
+
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+\begin{document}
+
+\gls{laser}
+
+\printglossaries
+
+\end{document}
+\end{verbatim}
+(Note the need to set the acronym style using
+\cs{setabbreviationstyle} before \cs{newacronym}.
+See \sectionref{sec:abbreviations} for further details.)
+
+\section{New or Modified Package Options}
+\label{sec:pkgopts}
+
+If you haven't already loaded \styfmt{glossaries}, you can use any of
+the package options provided by \styfmt{glossaries} when you load
+\styfmt{glossaries-extra} and they will automatically be passed to
+\styfmt{glossaries} (which \styfmt{glossaries-extra} will load). If
+\styfmt{glossaries} has already been loaded, then those options will be
+passed to \ics{setupglossaries}, but remember that not all of the
+\styfmt{glossaries} package options may be used in that command.
+
+\begin{important}
+This section only lists options that are either unrecognised by
+the \styfmt{glossaries} package or are a modified version of options
+of the same name provided by \styfmt{glossaries}. See the
+\styfmt{glossaries} user manual for details about the unmodified
+options.
+\end{important}
+
+The new and modified options provided by \styfmt{glossaries-extra}
+are described below:
+
+\begin{description}
+
+\item[{\pkgoptdef{debug}}] The \styfmt{glossaries} package
+has a \pkgoptfmt{debug} option that allows the values
+\pkgoptfmt{false}, \pkgoptfmt{true} and \pkgoptfmt{showtargets}.
+The \pkgopt[showtargets]{debug} option was introduced to
+\styfmt{glossaries} v4.32, so if you want to use this option
+with \styfmt{glossaries-extra} you must make sure that
+your version of \styfmt{glossaries} supports it.
+
+The \styfmt{glossaries-extra} package extends this option
+to provide the additional values \pkgopt[showwrgloss]{debug}
+and \pkgopt[all]{debug}.
+
+The \pkgopt[showwrgloss]{debug} option implements
+\pkgopt[true]{debug} and uses
+\begin{definition}[\DescribeMacro\glsxtrwrglossmark]
+\cs{glsxtrwrglossmark}
+\end{definition}
+to show a mark \ensuremath{\cdot} just before the write operation
+performed by the indexing commands. If you use
+\pkgopt[alsoindex]{record} there will be a mark for the
+write operation to the \texttt{.aux} file for \gls{bib2gls}
+and a mark for the write operation to the associated glossary
+file for \gls{makeindex} or \gls{xindy}.
+
+The \pkgopt[all]{debug} option implements both \pkgopt[showtargets]{debug}
+and \pkgopt[showwrgloss]{debug}.
+
+\item[{\pkgoptdef{postdot}}] (New to version 1.12.)
+This option is just a shortcut for \pkgopt[false]{nopostdot}.
+
+\item[{\pkgoptdef{postpunc}}] (New to version 1.21.)
+This option sets the post-description punctuation to the given
+value. For example: \pkgoptfmt{postpunc={;}} does
+\begin{verbatim}
+\renewcommand{\glspostdescription}{;}
+\end{verbatim}
+The value may also be one of the following keywords:
+\begin{description}
+\item[\texttt{comma}:] \pkgopt[comma]{postpunc} is
+equivalent to
+\begin{verbatim}
+\renewcommand{\glspostdescription}{,}
+\end{verbatim}
+
+\item[\texttt{dot}:] \pkgopt[dot]{postpunc} is
+equivalent to
+\begin{verbatim}
+\renewcommand{\glspostdescription}{.\spacefactor\sfcode`\. }
+\end{verbatim}
+
+\item[\texttt{none}:] \pkgopt[none]{postpunc} is
+equivalent to
+\begin{verbatim}
+\renewcommand{\glspostdescription}{}
+\end{verbatim}
+\end{description}
+The default definition is
+\begin{verbatim}
+\newcommand*{\glspostdescription}{%
+ \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi
+}
+\end{verbatim}
+where the conditional is determined by the \pkgopt{nopostdot}
+package option. The \pkgopt{postpunc} option removes the conditional
+from the definition of \cs{glspostdescription}. The package options
+\pkgopt{nopostdot} and \pkgopt{postdot} will restore the original definition of
+\cs{glspostdescription}.
+
+The \sty{glossaries-extra-stylemods} package adjusts
+the predefined styles that had a hard-coded \cs{space}
+before the \gls{numberlist} so that they use \cs{glsxtrprelocation}
+instead (which is defined to \cs{space}). You can therefore
+redefine this command in combination with \pkgopt{postpunc}
+to alter the separator before the \gls{numberlist}.
+For example, to have a comma followed by \cs{hfil}:
+\begin{verbatim}
+\usepackage[postpunc=comma,stylemods]{glossaries-extra}
+\renewcommand{\glsxtrprelocation}{\hfil}
+\end{verbatim}
+Be careful with doing this as it will look odd if the \gls{numberlist} is
+missing. (With \gls{bib2gls} you can instead redefine
+\cs{glsxtrprelocation} to do nothing and set the
+location prefixes with \texttt{loc-prefix} which will only
+apply if the entry has a \gls{numberlist}.)
+
+\item[{\pkgoptdef{accsupp}}] Load the \sty{glossaries-accsupp}
+package (if not already loaded).
+
+If you want to define styles that can interface with the
+accessibility support provided by \sty{glossaries-accsupp} use
+the \cs{glsaccess\meta{xxx}} type of commands instead of
+\cs{glsentry\meta{xxx}} (for example, \ics{glsaccesstext} instead of
+\ics{glsentrytext}). If \sty{glossaries-accsupp} hasn't been loaded
+those commands are equivalent (for example, \cs{glsaccesstext}
+just does \cs{glsentrytext}) but if it has been loaded, then the
+\cs{glsaccess\meta{xxx}} commands will add the accessibility
+information. (See \sectionref{sec:accsupp} for further details.)
+
+Note that the \pkgopt{accsupp} option can only be used as
+a~package option (and can't be set with \ics{glossariesextrasetup}) since the \sty{glossaries-accsupp}
+package must be loaded before \styfmt{glossaries-extra} if it's
+required.
+
+\item[{\pkgoptdef{stylemods}}] This is a
+\meta{key}=\meta{value} option used to load the
+\sty{glossaries-extra-stylemods} package. The value may be a
+comma-separated list of options to pass to that package. (Remember
+to group \meta{value} if it contains any commas.) The value may be
+omitted if no options need to be passed. See \sectionref{sec:glosstylemods}
+for further details. There are two special keyword values:
+\pkgopt[default]{stylemods} (equivalent to omitting the value)
+and \pkgopt[all]{stylemods}, which loads all the
+predefined styles.
+
+\item[{\pkgoptdef{undefaction}}] This is a \meta{key}=\meta{value}
+option, which has two allowed values: \pkgoptfmt{warn} and
+\pkgoptfmt{error}. This indicates what to do if an undefined
+glossary entry is referenced. The default behaviour is
+\pkgopt[error]{undefaction}, which produces an error message (the
+default for \styfmt{glossaries}). You can switch this to a warning
+message (and ?? appearing in the text) with
+\pkgopt[warn]{undefaction}.
+
+\begin{important}
+Undefined entries can't be picked up by any commands that iterate
+over a glossary list. This includes \ics{forglsentries} and
+\ics{glsaddall}.
+\end{important}
+
+Note that \ics{ifglsused} will display ?? in the document text with
+\pkgopt[warn]{undefaction} if the entry hasn't been defined, as the
+underlying boolean variable doesn't exist and so is neither true nor
+false. (There will also be a warning in the transcript.) See
+\sectionref{sec:glsunset} for further details.
+
+\item[{\pkgoptdef{indexcrossrefs}}] This is a boolean option.
+If \pkgoptfmt{true}, this will automatically index any
+cross-referenced entries that haven't been marked as used at
+the end of the document. Note that this necessarily adds to
+the overall document build time, especially if you have defined
+a large number of entries, so this defaults to \pkgoptfmt{false},
+but it will be automatically switched on if you use the \gloskey{see}
+or \gloskey{seealso} keys in any entries (unless
+\pkgopt[false]{autoseeindex}). To force it off, even if you use the
+\gloskey{see} or \gloskey{seealso} key, you
+need to explicitly set \pkgopt{indexcrossrefs} to \pkgoptfmt{false}.
+
+Note that \gls{bib2gls} can automatically find dependent
+entries when it parses the \texttt{.bib} source file.
+The \pkgopt{record} option automatically implements
+\pkgopt[false]{indexcrossrefs}.
+
+\item[{\pkgoptdef{autoseeindex}}]\label{opt:autoseeindex} (New to
+v1.16.) This is a boolean option. If true (default), this makes
+the \gloskey{see} and \gloskey{seealso} keys automatically index the
+cross-reference when an entry is defined. If false, the value
+of those keys will still be stored in their corresponding fields
+(and can be accessed using commands like \cs{glsxtrusesee} and
+\cs{glsxtruseseealso}) but cross-reference won't be automatically
+indexed.
+
+Note that the \pkgopt[only]{record} option automatically implements
+\pkgopt[false]{autoseeindex}.
+
+For example, if an entry is defined as
+\begin{verbatim}
+\newglossaryentry{foo}{name={foo},description={},see={bar,baz}}
+\end{verbatim}
+then with \texttt{autoseeindex=true}, this is equivalent to
+\begin{verbatim}
+\newglossaryentry{foo}{name={foo},description={}}
+\glssee{foo}{bar,baz}
+\glossariesextrasetup{indexcrossrefs=true}
+\GlsXtrSetField{foo}{see}{bar,baz}
+\end{verbatim}
+but with \texttt{autoseeindex=false}, this is equivalent to
+\begin{verbatim}
+\newglossaryentry{foo}{name={foo},description={}}
+\GlsXtrSetField{foo}{see}{bar,baz}
+\end{verbatim}
+Note that \pkgopt{indexcrossrefs} isn't automatically implemented
+by the presence of the \gloskey{see} key when \pkgopt{autoseeindex}
+is false.
+
+It's therefore possible to remove the cross-references from the
+location lists and set their position within the glossary style.
+
+Another method of preventing the automatic indexing is to
+define the entries before the external indexing files have been
+opened with \cs{makeglossaries}. Since the appropriate file isn't
+open, the information can't be written to it. This will need
+the package option \pkgoptfmt{seenoindex=ignore} (provided by
+\styfmt{glossaries}) to prevent an error occurring.
+
+\item[{\pkgoptdef{record}}]\label{opt:record}(New to v1.08.) This is
+a \meta{key}=\meta{value} option provided for the benefit of
+\gls{bib2gls} (see \sectionref{sec:bib2gls}).
+
+The option may only be set in the preamble and can't be used after
+\cs{GlsXtrLoadResources}. If the value is missing
+\pkgopt[only]{record} is assumed. Permitted values:
+\begin{description}
+\item[\pkgoptfmt{off}] This is the default setting. The indexing
+is performed as normal using either \cs{makeglossaries}
+or \cs{makenoidxglossaries}. This setting implements \pkgopt[error]{undefaction}.
+
+\item[\pkgoptfmt{only}] The indexing is performed by
+\gls{bib2gls} (see \sectionref{sec:bib2gls}). Neither
+\cs{makeglossaries} nor \cs{makenoidxglossaries} is permitted.
+This setting implements \pkgopt[warn]{undefaction} and automatically
+loads the supplementary \sty{glossaries-extra-bib2gls} package.
+(There should be no need to explicitly load \sty{glossaries-extra-bib2gls}.)
+
+The glossaries should be displayed using \cs{printunsrtglossary}
+(or \cs{printunsrtglossaries}).
+
+The document build process is (assuming the file is called
+\texttt{myDoc.tex}):
+\begin{verbatim}
+pdflatex myDoc
+bib2gls myDoc
+pdflatex myDoc
+\end{verbatim}
+
+Note that \pkgopt[only]{record} will prevent the \gloskey{see} from
+automatically implementing \cs{glssee}. (\gls{bib2gls} deals with the
+\gloskey{see} field.) You may explicitly use \cs{glssee} in the
+document, but \gls{bib2gls} will ignore the cross-reference if the
+\gloskey{see} field was already set for that entry.
+
+The \pkgopt[only]{record} option will automatically set
+the \styfmt{glossaries} package's \pkgopt[none]{sort} option
+if available. (That option value was only introduced to
+\styfmt{glossaries} v4.30.)
+
+\item[\pkgoptfmt{nameref}] (New to v1.37 and requires \gls{bib2gls}
+v1.8+.) This option is like \pkgopt[only]{record} but additionally
+records the current label information given by \cs{@currentlabel}
+and \cs{@currentHref}, and provides a more reliable way of saving
+the \cs{theH}\meta{counter} for the given location. This option
+requires \sty{hyperref} otherwise it will fall back on the usual
+location records. Remember that \cs{@currentHref} is always globally
+updated whenever \cs{refstepcounter} is used, but \cs{@currentlabel}
+isn't. This can cause some undesired side-effects with some settings. Remember also that the \pkgopt{indexcounter} option
+increments the associated counter every time an entry is indexed,
+which affects this option. See \sectionref{sec:recordnameref} for
+further details.
+
+This option is best used with \pkgopt[chapter]{counter} or
+\pkgopt[section]{counter} if you want the title included in the
+location list. If the indexing counter is the default
+\ctr{page}, only the location number is shown. Similarly for
+\pkgopt[equation]{counter} (or \pkgopt[true]{equations}).
+
+\item[\pkgoptfmt{alsoindex}] This is a hybrid setting
+that uses \gls{bib2gls} to fetch entry information from
+\texttt{.bib} files, but uses \gls{makeindex} or \gls{xindy}
+to create the glossary files. This option should be used
+with \cs{makeglossaries} but not with its optional argument.
+This option should not be used with \cs{makenoidxglossaries}.
+You may need to change the transcript file used by \gls{bib2gls}
+to avoid a clash with the transcript file used by
+\gls{makeindex} or \gls{xindy}. (This can be done with
+\gls{bib2gls}['s] \verb|--log-file| or \verb|-t| option.)
+
+The glossaries should be displayed using \cs{printglossary}
+(or \cs{printglossaries}). This option is expected to be used with
+\gls{bib2gls}'s \texttt{sort=none} setting and so
+\sty{glossaries-extra-bib2gls} is not automatically loaded.
+
+The document build process is (assuming the file is called
+\texttt{myDoc.tex}):
+\begin{verbatim}
+pdflatex myDoc
+bib2gls myDoc
+pdflatex myDoc
+makeglossaries myDoc
+pdflatex myDoc
+\end{verbatim}
+\end{description}
+
+With the recording on (\pkgopt[only]{record} or
+\pkgopt[alsoindex]{record}), any of the commands that would typically
+index the entry (such as \cs{gls}, \cs{glstext} or \cs{glsadd})
+will add a \cs{glsxtr@record} entry to the \texttt{.aux} file.
+\gls{bib2gls} can then read these lines to find
+out which entries have been used. (Remember that commands like
+\cs{glsentryname} don't index, so any use of these commands won't
+add a corresponding \cs{glsxtr@record} entry to the \texttt{.aux}
+file.) See \sectionref{sec:bib2gls} for further details.
+
+\item[{\pkgoptdef{equations}}] (New to v1.37.) This option will
+cause the default location counter to automatically switch
+to \ctr{equation} when inside a numbered equation environment, such
+as \env{equation} or \env{align}. The counter can be explicitly
+overridden with \gloskey[glslink]{counter} in the optional
+arguments of commands like \cs{glslink} or \cs{gls} as usual.
+
+\item[{\pkgoptdef{floats}}] (New to v1.37.) This option will
+cause the default location counter to automatically switch
+to the corresponding counter when inside a floating environment,
+such as \env{figure} or \env{table}. The counter can be explicitly
+overridden with \gloskey[glslink]{counter} in the optional
+arguments of commands like \cs{glslink} or \cs{gls} as usual.
+Remember that within floats it's the \cs{caption} command that actually uses
+\cs{refstepcounter}, so indexing before the caption will result in
+the wrong reference. The commands for use in captions and sections,
+such as \cs{glsfmttext} and \cs{glsfmtshort}, don't index. (See
+\sectionref{sec:headtitle}). You may
+want to consider using \cs{glsadd} after the caption (not before). For example:
+\begin{verbatim}
+\begin{figure}[htbp]
+ \centering
+ \includegraphics{example-image}
+ \caption{Sample \glsfmttext{foobar} figure}
+ \glsadd{foobar}
+\end{figure}
+\end{verbatim}
+
+\item[{\pkgoptdef{indexcounter}}] (New to v1.29.) This option (which
+doesn't take a value) is primarily intended for use with
+\gls{bib2gls} (v1.4+) and \sty{hyperref}. It can be used with
+\gls{makeindex} or \gls{xindy} but it will interfere with the
+\gls{numberlist} collation, so you won't have ranges and you'll have
+duplicate page numbers present (but each page number will link to
+the relevant part of the page where the indexing occurred). This
+option automatically implements \pkgopt[wrglossary]{counter}.
+
+\begin{important}
+This option works by incrementing \ctr{wrglossary} and
+adding \ics{label}. This can cause a problem if the indexing
+occurs in an \env{equation} environment as \sty{amsmath}
+forbids multiple occurrences of \cs{label} (resulting in the
+\qt{Multiple \cs{label}'s} error). It's best to change the counter
+to \ctr{page} or \ctr{equation} when in maths mode with this option.
+For example:
+\begin{verbatim}
+\renewcommand{\glslinkpresetkeys}{%
+ \ifmmode \setkeys{glslink}{counter=equation}\fi}
+\renewcommand{\glsaddpresetkeys}{%
+ \ifmmode \setkeys{glossadd}{counter=equation}\fi}
+\end{verbatim}
+\end{important}
+
+By default (with \sty{hyperref}), the page numbers in
+\glspl{numberlist} link back to the top of the relevant page
+(provided the format uses \cs{glshypernumber}). The
+\pkgopt{indexcounter} option is designed to link back to the place
+within the page where the indexing occurred. It does this by
+creating a new counter (called \ctr{wrglossary}) that's incremented
+with \cs{refstepcounter} every time an entry is indexed (but not via
+cross-referencing commands, such as \cs{glssee}). A \cs{label} is
+placed immediately after the increment command allowing the
+back-referenced to be obtained with \cs{pageref}. The location, as
+seen by the indexing application, is the value of the
+\ctr{wrglossary} counter but this value is substituted with the page
+reference when \gls{numberlist} is typeset. Since the counter is
+used by all entries and is incremented every time any indexing
+occurs, neither \gls{makeindex} nor \gls{xindy} can correctly
+collate the lists. For example, if the first term to be referenced
+is indexed three times on page~5 without any intervening terms then
+the actual locations obtained from \ctr{wrglossary} will be 1, 2 and
+3, which \gls{xindy} and \gls{makeindex} will try to form into the
+range 1--3, but they should actually all simply appear as page~5,
+whereas it can actually end up with 5--5. Conversely, a range may
+not be formed where it would naturally occur if just the \ctr{page}
+counter was used.
+
+Since \gls{bib2gls} is designed specifically to work with
+\styfmt{glossaries-extra}, \gls{bib2gls} (v1.4+) will check for
+\ctr{wrglossary} locations. If the default
+\texttt{--merge-wrglossary-records} is on, then any records for the
+same page for a given entry will be merged. In the above example
+with three references on page~5, only a single record for page~5 for
+that entry will be added to the \gls{numberlist} and it will link
+back to the first instance on that page. Whereas if you use the
+\texttt{--no-merge-wrglossary-records} switch, the \gls{numberlist}
+will contain three instance of page~5, with each linking to the
+corresponding place on that page. In both cases, consecutive pages
+can form ranges, but it may look strange in the second case.
+
+See the \gls{bib2gls} documentation for the
+\texttt{save-index-counter} resource option for more details.
+
+\item[{\pkgoptdef{docdef}}] This option governs the use of
+\cs{newglossaryentry}. It was originally a boolean option,
+but as from version 1.06, it can now take one of the following values (if
+the value is omitted, \pkgoptfmt{true} is assumed):
+\begin{itemize}
+\item[{\pkgopt[false]{docdef}}] \ics{newglossaryentry} is not
+permitted in the \env{document} environment (default).
+
+\item[{\pkgopt[true]{docdef}}] \cs{newglossaryentry} behaves as it
+does in the base \styfmt{glossaries} package. That is, where
+its use is permitted in the \env{document} environment, it
+uses the \texttt{.glsdefs} temporary file to store the entry
+definitions so that on the next \LaTeX\ run the entries are
+defined at the beginning of the \env{document} environment.
+This allows the entry information to be referenced in the glossary,
+even if the glossary occurs before \cs{newglossaryentry}.
+(For example, when the glossary is displayed in the front matter.)
+This method of saving the definitions for the next \LaTeX\ run
+has drawbacks that are detailed in the \styfmt{glossaries} user
+manual.
+
+Remember that if \cs{newglossaryentry} wouldn't be allowed
+in the \env{document} environment with the
+base \styfmt{glossaries} package, then it still won't
+be allowed with \pkgopt[true]{docdefs}.
+If your glossaries occur at the end of the document, consider using
+\pkgopt[restricted]{docdef} instead.
+
+\item[{\pkgopt[restricted]{docdef}}] (new to version 1.06)
+\ics{newglossaryentry} is permitted in the \env{document}
+environment without using the \texttt{.glsdefs} file. This means
+that all entries must be defined before the glossary is displayed,
+but it avoids the complications associated with saving the
+entry details in a temporary file. You will still need to take
+care about any changes made to characters that are required
+by the \meta{key}=\meta{value} mechanism (that is, the comma and
+equal sign) and any \gls{makeindex} or \gls{xindy} character that
+occurs in the \gloskey{sort} key or label. If any of those
+characters are made active in the document, then it can cause
+problems with the entry definition. This option will allow
+\cs{newglossaryentry} to be used in the document with
+\cs{makenoidxglossaries}, but note that \cs{longnewglossaryentry}
+remains a preamble-only command.
+
+With this option, if an entry appears in the glossary before
+it has been defined, an error will occur (or a warning if
+the \pkgopt[warn]{undefaction} option is used.) If you edit your
+document and either remove an entry or change its label, you may
+need to delete the document's temporary files (such as the
+\texttt{.aux} and \texttt{.gls} files).
+
+\item[{\pkgopt[atom]{docdef}}] (new to version 1.34)
+This option behaves like \pkgopt[restricted]{docdef} but creates the
+\texttt{.glsdefs} file for
+\href{https://atom.io/packages/autocomplete-glossaries}{atom's
+autocomplete support}. This file isn't input by
+\styfmt{glossaries-extra} and so associated problems with the use of
+this file are avoided, but it allows the autocomplete support to
+find the labels in the file. As with \pkgopt[restricted]{docdef},
+entries may be defined in the preamble or anywhere in the document,
+but they may only be referenced after they have been defined.
+Entries must be defined before the associated glossary is displayed.
+
+\end{itemize}
+
+The \styfmt{glossaries} package allows
+\cs{newglossaryentry} within the \env{document} environment (when
+used with \gls{makeindex} or \gls{xindy}) but the user manual warns
+against this usage. By default the \styfmt{glossaries-extra} package
+\emph{prohibits} this, only allowing definitions within the
+preamble. If you are really determined to define entries in the
+\env{document} environment, despite all the associated drawbacks,
+you can restore this with \pkgopt[true]{docdef}. Note that this
+doesn't change the prohibitions that the \styfmt{glossaries}
+package has in certain circumstances (for example, when using
+\qt{option~1}). See the \styfmt{glossaries} user manual for further
+details. A better option if document definitions are required
+is \pkgopt[restricted]{docdef}. Only use \pkgopt[true]{docdef}
+if document definitions are necessary and one or more of the
+glossaries occurs in the front matter.
+
+\begin{sloppypar}
+This option affects commands that internally use
+\cs{newglossaryentry}, such as \cs{newabbreviation}, but not
+the \qt{on-the-fly} commands described in \sectionref{sec:onthefly}.
+\end{sloppypar}
+
+\item[{\pkgoptdef{nomissingglstext}}] This is a boolean option.
+If true, this will suppress the warning written to the transcript
+and the warning text that will appear in the
+document if the external glossary files haven't been generated due
+to an incomplete document build. However, it's probably simpler
+just to fix whatever has caused the failure to build the external
+file or files.
+
+\item[{\pkgoptdef{abbreviations}}] This option has no value and can't
+be cancelled. If used,
+it will automatically create a new glossary with the label
+\texttt{abbreviations} and redefines \cs{glsxtrabbrvtype} to this
+label. In addition, it defines a shortcut command
+\begin{definition}[\DescribeMacro\printabbreviations]
+\cs{printabbreviations}\oarg{options}
+\end{definition}
+which is equivalent to
+\begin{alltt}
+\cs{printglossary}[type=\cs{glsxtrabbrvtype},\meta{options}]
+\end{alltt}
+If \sty{glossaries-extra-bib2gls} is also loaded then this option
+will additionally provide:
+\begin{definition}[\DescribeMacro\printunsrtabbreviations]
+\cs{printunsrtabbreviations}\oarg{options}
+\end{definition}
+which uses \ics{printunsrtglossary}.
+
+The title of the new glossary is given by
+\begin{definition}[\DescribeMacro\abbreviationsname]
+\cs{abbreviationsname}
+\end{definition}
+If this command is already defined, it's left unchanged. Otherwise
+it's defined to \qt{Abbreviations} if \sty{babel} hasn't been loaded
+or \cs{acronymname} if \sty{babel} has been loaded. However, if
+you're using \sty{babel} it's likely you will need to change this.
+(See \sectionref{sec:lang} for further details.)
+
+\begin{important}
+If you don't use the \pkgopt{abbreviations} package option,
+the \cs{abbreviationsname} command won't be defined (unless it's
+defined by an included language file).
+\end{important}
+
+If the \pkgopt{abbreviations} option is used and the
+\pkgopt{acronym} option provided by the \styfmt{glossaries}
+package hasn't been used, then \ics{acronymtype}
+will be set to \ics{glsxtrabbrvtype} so that acronyms defined with
+\ics{newacronym} can be added to the list of abbreviations. If you
+want acronyms in the \texttt{main} glossary and other abbreviations in the
+\texttt{abbreviations} glossary then you will need to redefine
+\cs{acronymtype} to \texttt{main}:
+\begin{verbatim}
+\renewcommand*{\acronymtype}{main}
+\end{verbatim}
+
+Note that there are no analogous options to the \styfmt{glossaries}
+package's \pkgopt{acronymlists} option (or associated commands)
+as the abbreviation mechanism is handled differently with
+\styfmt{glossaries-extra}.
+
+\item[{\pkgoptdef{symbols}}] This is passed to \styfmt{glossaries} but
+will additionally define
+\begin{definition}[\DescribeMacro\glsxtrnewsymbol]
+\cs{glsxtrnewsymbol}\oarg{options}\marg{label}\marg{symbol}
+\end{definition}
+which is equivalent to
+\begin{alltt}
+\cs{newglossaryentry}\marg{label}\{name=\marg{symbol},
+ sort=\marg{label},type=symbols,category=symbol,\meta{options}\}
+\end{alltt}
+Note that the \gloskey{sort} key is set to the \meta{label}
+not the \meta{symbol} as the symbol will likely contain commands.
+
+If \sty{glossaries-extra-bib2gls} is also loaded then this option
+will additionally provide:
+\begin{definition}[\DescribeMacro\printunsrtsymbols]
+\cs{printunsrtsymbols}\oarg{options}
+\end{definition}
+which uses \ics{printunsrtglossary}.
+
+\item[{\pkgoptdef{numbers}}] This is passed to \styfmt{glossaries} but
+will additionally define
+\begin{definition}[\DescribeMacro\glsxtrnewnumber]
+\cs{glsxtrnewnumber}\oarg{options}\marg{number}
+\end{definition}
+which is equivalent to
+\begin{alltt}
+\cs{newglossaryentry}\marg{label}\{name=\marg{number},
+ sort=\marg{label},type=numbers,category=number,\meta{options}\}
+\end{alltt}
+
+If \sty{glossaries-extra-bib2gls} is also loaded then this option
+will additionally provide:
+\begin{definition}[\DescribeMacro\printunsrtnumbers]
+\cs{printunsrtnumbers}\oarg{options}
+\end{definition}
+which uses \ics{printunsrtglossary}.
+
+\item[{\pkgoptdef{acronyms} (or \pkgoptdef{acronym})}] This is
+passed to \styfmt{glossaries} but if
+\sty{glossaries-extra-bib2gls} is also loaded then this option
+will additionally provide:
+\begin{definition}[\DescribeMacro\printunsrtacronyms]
+\cs{printunsrtacronyms}\oarg{options}
+\end{definition}
+which uses \ics{printunsrtglossary}.
+
+\begin{important}
+This option defines a new glossary with the label \texttt{acronym}
+not \texttt{acronyms}. You may find it easier to reference it
+with the command \ics{acronymtype}.
+\end{important}
+
+\item[{\pkgoptdef{index}}] This is
+passed to \styfmt{glossaries} but if
+\sty{glossaries-extra-bib2gls} is also loaded then this option
+will additionally provide:
+\begin{definition}[\DescribeMacro\printunsrtindex]
+\cs{printunsrtindex}\oarg{options}
+\end{definition}
+which uses \ics{printunsrtglossary}.
+
+\item[{\pkgoptdef{shortcuts}}] Unlike the \styfmt{glossaries} package
+option of the same name, this option isn't boolean but has multiple
+values:
+\begin{itemize}
+\item \pkgopt[acronyms]{shortcuts} (or \pkgopt[acro]{shortcuts}):
+set the shortcuts provided by the \styfmt{glossaries} package for
+acronyms (such as \cs{ac}). Note that the short and long forms don't
+use \cs{glsxtrshort} and \cs{glsxtrlong} but use the original
+\cs{acrshort} and \cs{acrlong}, which don't recognise multiple
+abbreviation styles. The better option with \styfmt{glossaries-extra}
+is \pkgopt[ac]{shortcuts}.
+
+\item \pkgopt[ac]{shortcuts}:
+set the shortcuts provided by the \styfmt{glossaries} package for
+acronyms (such as \cs{ac}) but uses the \styfmt{glossaries-extra}
+interface (such as \cs{glsxtrshort} rather than \cs{acrshort}).
+In this case \cs{ac} is defined as \cs{cgls} rather than
+\cs{gls}.
+
+\item \pkgopt[abbreviations]{shortcuts} (or
+\pkgopt[abbr]{shortcuts}):
+set the abbreviation shortcuts provided by \styfmt{glossaries-extra}. (See
+\sectionref{sec:abbrshortcuts}.) These settings don't switch on the
+acronym shortcuts provided by the \styfmt{glossaries} package.
+
+\item \pkgopt[other]{shortcuts}: set the \qt{other}
+shortcut commands, but not the shortcut commands for abbreviations
+or the acronym shortcuts provided by \styfmt{glossaries}.
+The \qt{other} shortcuts are:
+\begin{itemize}
+\item \ics{newentry} equivalent to \ics{newglossaryentry}
+\item \ics{newsym} equivalent to \ics{glsxtrnewsymbol} (see the
+\pkgopt{symbols} option).
+\item \ics{newnum} equivalent to \ics{glsxtrnewnumber} (see the
+\pkgopt{numbers} option).
+\end{itemize}
+
+\item \pkgopt[all]{shortcuts} (or \pkgopt[true]{shortcuts}):
+implements \pkgopt[ac]{shortcuts}, \pkgopt[abbreviations]{shortcuts}
+and \pkgopt[other]{shortcuts}.
+
+\item \pkgopt[none]{shortcuts} (or \pkgopt[false]{shortcuts}):
+don't define any of the shortcut commands (default).
+\end{itemize}
+
+Note that multiple invocations of the \pkgopt{shortcuts} option
+\emph{within the same option list} will override each other.
+\end{description}
+
+After the \styfmt{glossaries-extra} package has been loaded, you can
+set available options using
+\begin{definition}[\DescribeMacro\glossariesextrasetup]
+\cs{glossariesextrasetup}\marg{options}
+\end{definition}
+The \pkgopt{abbreviations} and \pkgopt{docdef} options may only be
+used in the preamble. Additionally, \pkgopt{docdef} can't be used
+after \ics{makenoidxglossaries}.
+
+\chapter{Modifications to Existing Commands and Styles}
+\label{sec:modifications}
+
+The \styfmt{glossaries} package provides \ics{nopostdesc}
+which may be used in the \gloskey{description} to suppress
+the post-description hook. The \styfmt{glossaries-extra} package
+provides another command
+\begin{definition}[\DescribeMacro\glsxtrnopostpunc]
+\cs{glsxtrnopostpunc}
+\end{definition}
+which has a similar function but only suppresses the
+post-description punctuation. It doesn't suppress the use of
+\cs{glsxtrpostdescription} which allows the use of
+category-dependent post-description hooks. (Note that the
+punctuation, which is in the original base hook \cs{glspostdescription},
+comes after the extended post-description hook
+\cs{glsxtrpostdescription} not before.) The post-description hook
+can counter-act the effect of \cs{glsxtrnopostpunc} using
+\begin{definition}[\DescribeMacro\glsxtrrestorepostpunc]
+\cs{glsxtrrestorepostpunc}
+\end{definition}
+These commands have no effect outside of the glossary (except with
+standalone entries that use \cs{glsxtractivatenopost} and
+\cs{glspostdescription}, see \sectionref{sec:glossentry}).
+
+The \styfmt{glossaries} package provides
+\begin{definition}[\DescribeMacro\glsseeitemformat]
+\cs{glsseeitemformat}\marg{label}
+\end{definition}
+to format items in a cross-reference list (identified with the
+\gloskey{see} key or \cs{glssee}). This was originally defined to
+use \cs{glsentryname}\marg{label} since it makes more sense for the
+cross-reference to match the way the term appears in the glossary.
+Unfortunately this caused a problem when the \gloskey{name} field
+was sanitized, which used to be the default setting, so
+\styfmt{glossaries} v3.0 changed the default definition of this
+command to use \cs{glsentrytext} instead. Since the \gloskey{name}
+and \gloskey{text} field are quite often the same, this change
+usually doesn't have a noticeable effect. However, now that the
+\gloskey{name} field is no longer sanitized (following the redesign
+of \styfmt{glossaries} v4.0) it makes more sense to restore this
+command to its original behaviour, but to take account of
+abbreviations \styfmt{glossaries-extra} redefines this as:
+\begin{verbatim}
+\renewcommand*{\glsseeitemformat}[1]{%
+ \ifglshasshort{\glslabel}{\glsaccesstext{#1}}{\glsaccessname{#1}}%
+}
+\end{verbatim}
+If you want to restore the \styfmt{glossaries} v3.0+ definition just do:
+\begin{verbatim}
+\renewcommand*{\glsseeitemformat}[1]{\glsentrytext{#1}}
+\end{verbatim}
+The \sty{glossaries-extra} package provides \ics{glsxtrhiername}
+and its case-changing variants that may be used within
+the definition of \cs{glsseeitemformat} if required. These
+display the hierarchy for sub-entries rather than just the name,
+which may be more helpful in cross-references. See
+\sectionref{sec:see} for further details.
+
+The commands used by \styfmt{glossaries} to automatically produce an
+error if an entry is undefined (such as \ics{glsdoifexists}) are
+changed to take the \pkgopt{undefaction} option into account.
+
+The \ics{newignoredglossary}\marg{type} command now (as from v1.11) has a starred
+version that doesn't automatically switch off the hyperlinks.
+This starred version may be used with the \catattr{targeturl}
+attribute to create a link to an external URL. (See
+\sectionref{sec:categories} for further details.)
+As from v1.12 both the starred and unstarred version check
+that the glossary doesn't already exist. (The \styfmt{glossaries}
+package omits this check.)
+
+You can now provide an ignored glossary with:
+\begin{definition}[\DescribeMacro\provideignoredglossary]
+\cs{provideignoredglossary}\marg{type}
+\end{definition}
+which will only define the glossary if it doesn't already exist.
+This also has a starred version that doesn't automatically switch
+off hyperlinks.
+
+The individual glossary displaying commands \ics{printglossary},
+\ics{printnoidxglossary} and \cs{printunsrtglossary} have two extra
+keys:
+
+\begin{itemize}
+\item \gloskey[printglossary]{target}. This is a boolean key which can
+be used to switch off the automatic hypertarget for each entry.
+Unlike \cs{glsdisablehyper} this doesn't switch off hyperlinks, so
+any cross-references within the glossary won't be affected. This is
+a way of avoiding duplicate target warnings if a glossary needs to
+be displayed multiple times.
+\item
+\gloskey[printglossary]{targetnameprefix}\texttt{=}\marg{prefix}. Another way
+of avoiding duplicate target names is to set a prefix
+used for the names. Unlike changing \cs{glolinkprefix} this doesn't affect
+any hyperlinks (such as those created with \cs{gls}).
+\item
+\gloskey[printglossary]{prefix}\texttt{=}\marg{prefix}. If you do
+actually want to locally change \cs{glolinkprefix}, you can use
+the \gloskey{prefix} key instead. You need to use the matching
+\gloskey[glslink]{prefix} key in commands like \cs{gls}.
+
+\item
+\gloskey[printglossary]{label}\texttt{=}\marg{label}. Labels
+the glossary with \texttt{\cs{label}\marg{label}} and also
+defines \cs{@currentlabelname} to the glossary's TOC title
+(to provide text for \cs{nameref}). You can also set the
+label before the glossary using:
+\begin{definition}[\DescribeMacro\glsxtrsetglossarylabel]
+\cs{glsxtrsetglossarylabel}\marg{label}
+\end{definition}
+but take care of duplicate labels if it's not scoped.
+\end{itemize}
+
+The \cs{newglossaryentry} command has three new keys:
+\begin{itemize}
+\item \gloskey{category}, which sets the category label for the given
+entry. By default this is \texttt{general}. See
+\sectionref{sec:categories} for further information about
+categories.
+\item \gloskey{alias}, which allows an entry to be alias to another
+entry. See \sectionref{sec:alias} for further details.
+\item \gloskey{seealso}, which performs much like \gloskey{see}, but
+allows for separate \qt{see} and \qt{see also} treatment.
+See \sectionref{sec:see} for further details.
+\end{itemize}
+The test file \texttt{example-glossaries-xr.tex} contains
+dummy entries with a mixture of \gloskey{see}, \gloskey{alias}
+and \gloskey{seealso} keys for use with minimal working examples.
+There are also \texttt{example-glossaries-*.bib} files that
+correspond to each \texttt{example-glossaries-*.tex} file
+for testing \gls{bib2gls}.
+
+The \cs{longnewglossaryentry} command now has a starred version
+(as from v1.12) that doesn't automatically insert
+\begin{verbatim}
+\leavevmode\unskip\nopostdesc
+\end{verbatim}
+at the end of the description field.
+\begin{definition}[\DescribeMacro\longnewglossaryentry]
+\cs{longnewglossaryentry}*\marg{label}\marg{options}\marg{description}
+\end{definition}
+The \gloskey{descriptionplural} key is left unset unless explicitly
+set in \meta{options}.
+
+The unstarred version no longer hard-codes the above code (which
+removes trailing space and suppresses the post-description hook) but instead
+uses:
+\begin{definition}[\DescribeMacro\glsxtrpostlongdescription]
+\cs{glsxtrpostlongdescription}
+\end{definition}
+This can be redefined to allow the post-description hook to work
+but retain the \cs{unskip} part if required.
+For example:
+\begin{verbatim}
+\renewcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip}
+\end{verbatim}
+This will discarded unwanted trailing space at the end of the description
+but won't suppress the post-description hook.
+
+The unstarred version also alters the base \sty{glossaries} package's
+treatment of the \gloskey{descriptionplural} key. Since a
+plural description doesn't make much sense for multi-paragraph
+descriptions, the default behaviour with
+\sty{glossaries-extra}'s
+\cs{longnewglossaryentry} is to simply leave the plural description
+unset unless explicitly set using the \gloskey{descriptionplural}
+key. The \styfmt{glossaries.sty} version of this command sets the description's
+plural form to the same as the singular.\footnote{The
+\gloskey{descriptionplural} key is a
+throwback to the base package's original acronym mechanism before the introduction of
+the \gloskey{long} and \gloskey{short} keys, where the long form was
+stored in the \gloskey{description} field and the short form was stored in the
+\gloskey{symbol} field.}
+
+Note that this modified unstarred version doesn't append
+\cs{glsxtrpostlongdescription} to the description's plural form.
+
+The \ics{newterm} command (defined through the \pkgopt{index} package
+option) is modified so that the category defaults to \category{index}.
+The \ics{newacronym} command is modified to use the new abbreviation
+interface provided by \styfmt{glossaries-extra}.
+(See \sectionref{sec:abbreviations}.)
+
+The \cs{makeglossaries} command now has an optional argument.
+\begin{definition}[\DescribeMacro\makeglossaries]
+\cs{makeglossaries}\oarg{list}
+\end{definition}
+If \meta{list} is empty, \cs{makeglossaries} behaves as per
+its original definition in the \styfmt{glossaries} package,
+otherwise \meta{list} can be a comma-separated list of glossaries
+that need processing with an external indexing application.
+
+This command is not permitted with the \pkgopt[only]{record}
+package option. Without the optional argument, it's permitted
+with \pkgopt[alsoindex]{record}. With the optional argument,
+it's only permitted with the default \pkgopt[off]{record}.
+
+It should then be possible to use \cs{printglossary} for those
+glossaries listed in \meta{list} and \cs{printnoidxglossary}
+for the other glossaries. (See the accompanying file
+\texttt{sample-mixedsort.tex} for an example.)
+
+\begin{important}
+If you use the optional argument \meta{list}, you can't define
+entries in the document (even with the \pkgopt{docdef} option).
+\end{important}
+
+You will need at least version 2.20 of \gls{makeglossaries} or at
+least version 1.3 of the Lua alternative \gls{makeglossaries-lite.lua} (both distributed
+with \styfmt{glossaries} v4.27) to allow for this use of
+\cs{makeglossaries}\oarg{list}. Alternatively, use the
+\pkgopt{automake} option.
+
+\section{Entry Indexing}
+\label{sec:wrglossary}
+
+As from version 1.31, there is a new command like \cs{glsadd}
+where the mandatory argument is a comma-separated list
+of labels:
+\begin{definition}[\DescribeMacro\glsaddeach]
+\cs{glsaddeach}\oarg{options}\marg{list}
+\end{definition}
+This simply iterates over \meta{list} and does
+\cs{glsadd}\oarg{options}\marg{label} for each entry in the list.
+
+As from version 1.37, you can make commands like \cs{gls} or
+\cs{glslink} automatically use \cs{glsadd} with specific options
+when a given format is used (identified with
+\texttt{format=\marg{format}} in the optional argument of the
+corresponding \cs{gls}, \cs{glslink} etc).
+\begin{definition}[\DescribeMacro\GlsXtrAutoAddOnFormat]
+\cs{GlsXtrAutoAddOnFormat}\oarg{label}\marg{format list}\marg{glsadd options}
+\end{definition}
+The optional argument \meta{label} defaults to \cs{glslabel} and
+indicates the label to use in \cs{glsadd} and so needs to be
+expandable. The \meta{format list} is a comma-separated list
+of format values that will trigger the automated adding. The
+\meta{glsadd options} are the options to pass to \cs{glsadd} with
+\texttt{format=\marg{format}} prepended to the list.
+
+For example, with:
+\begin{verbatim}
+\GlsXtrAutoAddOnFormat{hyperbf}{counter=chapter}
+\end{verbatim}
+then \verb|\gls[format=hyperbf]{sample}| will be equivalent to
+\begin{verbatim}
+\glsadd[format=hyperbf,counter=chapter]{sample}\gls[format=hyperbf]{sample}
+\end{verbatim}
+Note that the explicit range markers will prevent a match
+unless you include them in \meta{format list} (in which case, be
+sure to add both the start and end formats).
+
+Here's another example:
+\begin{verbatim}
+\GlsXtrAutoAddOnFormat[dual.\glslabel]{hyperbf}{}
+\end{verbatim}
+In this case \verb|\gls[format=hyperbf]{sample}| will now be
+equivalent to:
+\begin{verbatim}
+\glsadd[format=hyperbf]{dual.sample}\gls[format=hyperbf]{sample}
+\end{verbatim}
+
+\begin{important}
+\cs{GlsXtrAutoAddOnFormat} is not applied to \cs{glsadd}
+as it could cause an infinite loop.
+\end{important}
+The \styfmt{glossaries-extra} package provides extra keys for
+commands like \cs{gls} and \cs{glstext}:
+\begin{description}
+\item[{\gloskey[glslink]{noindex}}] This is a boolean key. If true,
+this suppresses the indexing. (That is, it prevents \cs{gls} or
+whatever from adding a line to the external glossary file.)
+This is more useful than the \pkgopt{indexonlyfirst} package option
+provided by \styfmt{glossaries}, as the \gls{firstuse} might not be the most
+pertinent use. (If you want to apply \pkgopt{indexonlyfirst}
+to selected entries, rather than all of them, you can use
+the \catattr{indexonlyfirst} attribute, see
+\sectionref{sec:categories} for further details.)
+Note that the \gloskey[glslink]{noindex} key isn't available
+for \ics{glsadd} (and \ics{glsaddall}) since the whole purpose
+of that command is to index an entry.
+
+\item[{\gloskey[glslink]{wrgloss}}] (New to v1.14.)
+This is may only take the
+values \optfmt{before} or \optfmt{after}. By default, commands
+that both index and display link text (such as \cs{gls},
+\cs{glstext} and \cs{glslink}), perform the indexing before
+the link text as the indexing creates a whatsit that can cause
+problems if it occurs after the link text. However, it may
+be that in some cases (such as long phrases) you may actually
+want the indexing performed after the link text. In this
+case you can use \texttt{wrgloss=after} for specific
+instances. Note that this option doesn't
+have an effect if the indexing has been suppressed through
+other settings (such as \gloskey[glslink]{noindex}).
+
+The default value is set up using
+\begin{definition}[\DescribeMacro\glsxtrinitwrgloss]
+\cs{glsxtrinitwrgloss}
+\end{definition}
+which is defined as:
+\begin{verbatim}
+\newcommand*{\glsxtrinitwrgloss}{%
+ \glsifattribute{\glslabel}{wrgloss}{after}%
+ {%
+ \glsxtrinitwrglossbeforefalse
+ }%
+ {%
+ \glsxtrinitwrglossbeforetrue
+ }%
+}
+\end{verbatim}
+This sets the conditional
+\begin{definition}[\DescribeMacro\ifglsxtrinitwrglossbefore]
+\cs{ifglsxtrinitwrgloss}
+\end{definition}
+which is used to determine where to perform the indexing.
+
+This means you can set the \catattr{wrgloss}
+attribute to \optfmt{after} to automatically use this as
+the default for entries with that category attribute. (Note that
+adding \gloskey[glslink]{wrgloss} to the default options
+in \ics{GlsXtrSetDefaultGlsOpts} will override
+\cs{glsxtrinitwrgloss}.)
+
+\item[{\gloskey[glslink]{hyperoutside}}] (New to v1.21.) This is a
+boolean key. The default is \texttt{hyperoutside=true}, which puts
+the hyperlink outside \cs{glstextformat}, so that commands like
+\cs{gls} will effectively do
+\begin{alltt}
+\cs{hyperlink}\marg{target}\{\cs{glstextformat}\marg{link text}\}
+\end{alltt}
+This is the same behaviour as with the base \styfmt{glossaries}
+package. With \texttt{hyperoutside=false}, \cs{hyperlink} is placed
+inside the argument of \cs{glstextformat}:
+\begin{alltt}
+\cs{glstextformat}\{\cs{hyperlink}\marg{target}\marg{link text}\}
+\end{alltt}
+You can use the \catattr{hyperoutside} category attribute to set
+the default for a given category. This can be combined
+with the use of the \catattr{textformat} attribute to counteract
+any interference caused by \cs{hyperlink}.
+For example:
+\begin{verbatim}
+\glssetcategoryattribute{mathrelation}{hyperoutside}{false}
+\end{verbatim}
+will set \texttt{hyperoutside=false} for all entries that are
+assigned to the category \texttt{mathrelation} and
+\begin{verbatim}
+\glssetcategoryattribute{mathrelation}{textformat}{mathrel}
+\end{verbatim}
+will use \cs{mathrel} instead of \cs{glstextformat} resulting in:
+\begin{alltt}
+\cs{mathrel}\{\cs{hyperlink}\marg{target}\marg{link text}\}
+\end{alltt}
+for entries with the \gloskey{category} key set to
+\texttt{mathrelation}.
+
+\item[{\gloskey[glslink]{textformat}}] This key must have a
+control sequence name as its value. The command formed from
+this name must exist and must take one argument. (Use
+\texttt{relax} for default behaviour.) If set, this overrides
+the \catattr{textformat} attribute and \cs{glstextformat}.
+See the \sty{soul} example in \sectionref{sec:glsunset}.
+
+\item[{\gloskey[glslink]{prefix}}] Locally redefines
+\ics{glolinkprefix} to the given value. It should match the prefix
+for the desired glossary.
+
+\item[{\gloskey[glslink]{thevalue}}] Explicitly set the location to
+this value (see below).
+
+\item[{\gloskey[glslink]{theHvalue}}] Set the corresponding
+hyperlink location (see below).
+
+\end{description}
+
+There is a new hook that's used each time indexing information is
+written to the external glossary files:
+\begin{definition}[\DescribeMacro\glsxtrdowrglossaryhook]
+\cs{glsxtrdowrglossaryhook}\marg{label}
+\end{definition}
+where \meta{label} is the entry's label. This does nothing by
+default but may be redefined. (See, for example, the
+accompanying sample file \texttt{sample-indexhook.tex},
+which uses this hook to determine which entries haven't been
+indexed.)
+
+There's also a new hook (from v1.26) that's used immediately
+before the options are set by the \cs{gls}-like and
+\cs{glstext}-like commands:
+\begin{definition}[\DescribeMacro\glslinkpresetkeys]
+\cs{glslinkpresetkeys}
+\end{definition}
+(The base package provides \ics{glslinkpostsetkeys} that's
+used immediately after the options are set.)
+
+As from version 1.30 there are also similar hooks for \cs{glsadd}:
+\begin{definition}[\DescribeMacro\glsaddpresetkeys]
+\cs{glsaddpresetkeys}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glsaddpostsetkeys]
+\cs{glsaddpostsetkeys}
+\end{definition}
+For example, to default to using the \ctr{equation} counter in maths
+mode:
+\begin{verbatim}
+\renewcommand{\glslinkpresetkeys}{%
+ \ifmmode \setkeys{glslink}{counter=equation}\fi}
+\renewcommand{\glsaddpresetkeys}{%
+ \ifmmode \setkeys{glossadd}{counter=equation}\fi}
+\end{verbatim}
+In this case, the counter can be overridden with an explicit use of
+\gloskey{counter} in the optional argument of \cs{gls} or
+\cs{glsadd}. (As from version 1.37, a simpler method is to just use
+the \pkgopt{equations} package option.)
+
+Alternatively, to enforce this (overriding the option
+argument):
+\begin{verbatim}
+\renewcommand{\glslinkpostsetkeys}{%
+ \ifmmode \setkeys{glslink}{counter=equation}\fi}
+\renewcommand{\glsaddpostsetkeys}{%
+ \ifmmode \setkeys{glossadd}{counter=equation}\fi}
+\end{verbatim}
+
+As from version 1.14, there are two new keys for \cs{glsadd}:
+\gloskey[glsadd]{thevalue} and \gloskey[glsadd]{theHvalue}.
+These keys are designed for manually adding explicit locations
+rather than obtaining the value from the associated counter.
+As from version 1.19, these two keys are also available for commands
+like \cs{gls} and \cs{glslink}. The \gloskey[glsadd]{thevalue} keys is
+intended primarily for adding locations in supplementary material
+that can't be obtained from a counter.
+
+The principle key \gloskey[glslink]{thevalue} is for the location value. The
+other key \gloskey[glslink]{theHvalue} can be used to
+extract a prefix value for the first argument of commands like
+\ics{glsnoidxdisplayloc}. Its value must be in the format
+\meta{prefix}\meta{location}. In general, there's little need for
+this key as the prefix is typically associated with a counter that can be
+used to form hypertargets.
+
+\begin{important}
+If you use \gloskey[glsadd]{thevalue}, you must make sure that you
+use an indexing application that will accept the given value.
+\end{important}
+
+For example, \app{makeindex} will only accept locations in the form
+[\meta{num}\meta{sep}]*\meta{num} where \meta{num} is an arabic
+number (0, 1, \ldots), roman numeral (i, ii, \ldots\ or I, II,
+\ldots) or a character from a, \ldots, z or A, \ldots, Z, and
+[\meta{num}\meta{sep}]* indicates zero or more instances of a number
+followed by the recognised separator character (set with
+\cs{glsSetCompositor}). This means that \app{makeindex} won't
+accept, for example,
+\begin{verbatim}
+\glsadd[thevalue={Supplementary Material}]{sample}
+\end{verbatim}
+This location value will be accepted by \gls{bib2gls}, since it will
+allow any location and will only try forming ranges if the location
+matches any of its numerical patterns.
+In the case of \app{xindy}, you'll need to add a rule that can match
+the value. If you're using \sty{hyperref}, you may need to use the
+\gloskey[glslink]{format} key to prevent a hyperlink if one can't
+naturally be formed from the prefix, counter and location value.
+
+For example, suppose the file \texttt{suppl.tex} contains:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\renewcommand{\thepage}{S.\arabic{page}}
+
+\begin{document}
+First page.
+\newpage
+\gls{sample}.
+\end{document}
+\end{verbatim}
+This has an entry on page S.2. Suppose another document wants to
+include this location in the glossary. Then this can be done by
+setting \gloskey[glsadd]{thevalue} to \texttt{S.2}. For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\begin{document}
+Some \gls{sample} text.
+
+\printglossaries
+\glsadd[thevalue={S.2}]{sample}
+\end{document}
+\end{verbatim}
+This location value will be accepted by \app{makeindex} as it's in
+the form \meta{num}\meta{sep}\meta{num}.
+
+If you want hyperlinks, things are more complicated. First
+you need to set the \catattr{externallocation} attribute to the location of
+the PDF file. For example:
+\begin{verbatim}
+\glssetcategoryattribute{supplemental}{externallocation}{suppl.pdf}
+
+\newglossaryentry{sample}{category=supplemental,
+ name={sample},description={an example}}
+\end{verbatim}
+Next you need to add \texttt{glsxtrsupphypernumber} as the format:
+\begin{verbatim}
+\glsadd[thevalue={S.2},format=glsxtrsupphypernumber]{sample}
+\end{verbatim}
+Both documents will need to use the \sty{hyperref} package.
+Remember that the counter used for the location also needs to match.
+If \cs{theH}\meta{counter} is defined in the other document
+and doesn't match in the referencing document, then you need
+to use \gloskey[glsadd]{theHvalue} to set the appropriate value.
+See the accompanying sample files \texttt{sample-suppl-hyp.tex}
+and \texttt{sample-suppl-main-hyp.tex} for an example that uses
+\sty{hyperref}.
+
+\begin{important}
+The hyperlink for the supplementary location may or \emph{may not}
+take you to the relevant place in the external PDF file
+\emph{depending on your PDF viewer}. Some may not support external
+links, and some may take you to the first page or last visited page.
+\end{important}
+
+For example, if both \texttt{sample-suppl-hyp.pdf}
+and \texttt{sample-suppl-main-hyp.pdf} are in the same directory,
+then viewing \texttt{sample-suppl-main-hyp.pdf} in Evince will
+take you to the correct location in the linked document (when you
+click on the S.2 external link), but Okular will take you to the top
+of the first page of the linked document.
+
+This method can only be used where there is one external source
+for the designated category (identified by the
+\catattr{externallocation} attribute). For multiple sources, you need to use
+\gls{bib2gls} version 1.7+, which is the better method in general as it can
+automatically fetch the relevant locations from the \texttt{.aux}
+files of the designated external documents without the need to
+explicitly use \cs{glsadd}.
+
+\section{Cross-References (\qt{see} and \qt{see also})}
+\label{sec:see}
+
+The value of the \gloskey{see} key is now saved
+as a field. This isn't the case with \styfmt{glossaries}, where
+the \gloskey{see} value is simply used to directly
+write a line to the corresponding glossary file and is then
+discarded. This is why the \gloskey{see} key can't be
+used before \ics{makeglossaries} (since the file hasn't been opened
+yet). It's also the reason why the \gloskey{see} key doesn't have
+any effect when used in entries that are defined in the
+\env{document} environment. Since the value isn't saved,
+it's not available when the \texttt{.glsdefs} file is created at the
+end of the document and so isn't available at the start of the
+\env{document} environment on the next run.
+
+This modification allows \styfmt{glossaries-extra} to provide
+\begin{definition}[\DescribeMacro\glsxtraddallcrossrefs]
+\cs{glsxtraddallcrossrefs}
+\end{definition}
+which is used at the end of the document to automatically add
+any unused cross-references unless the package option
+\pkgopt{indexcrossrefs} was set to false.
+
+As a by-product of this enhancement, the \gloskey{see} key will now
+work for entries defined in the \env{document} environment, but it's still
+best to define entries in the preamble, and the \gloskey{see} key
+still can't perform any indexing before the file has been opened by
+\cs{makeglossaries}. Note that \styfmt{glossaries} v4.24 introduced
+the \pkgopt{seenoindex} package option, which can be used to
+suppress the error when the \gloskey{see} key is used before
+\cs{makeglossaries}, so \pkgopt[ignore]{seenoindex} will allow the
+\gloskey{see} value to be stored even though it may not be possible
+to index it at that point.
+
+As from version 1.06, you can display the cross-referenced
+information for a given entry using
+\begin{definition}[\DescribeMacro\glsxtrusesee]
+\cs{glsxtrusesee}\marg{label}
+\end{definition}
+This internally uses
+\begin{definition}[\DescribeMacro\glsxtruseseeformat]
+\cs{glsxtruseseeformat}\marg{tag}\marg{xr list}
+\end{definition}
+where \meta{tag} and \meta{xr list} are obtained from the value of
+the entry's \gloskey{see} field (if non-empty).
+By default, this just does \cs{glsseeformat}\oarg{tag}\marg{xr
+list}\verb|{}|, which is how the cross-reference is displayed in the
+\gls{numberlist}. Note that \cs{glsxtrusesee} does nothing if the
+\gloskey{see} field hasn't been set for the entry given by
+\meta{label}.
+
+As with the base \sty{glossaries} package, \cs{glsseeformat}
+is defined to do \texttt{\cs{emph}\marg{tag} \cs{glsseelist}\marg{xr
+list}}. The third argument is always ignored and is present for
+\app{makeindex}, which always requires a final argument to
+encapsulate the associated location. The command
+\begin{definition}
+\ics{glsseelist}\marg{xr list}
+\end{definition}
+used to iterate over the list of cross-reference labels is also
+unchanged from the base \sty{glossaries} package, with each item in
+the list formatted according to:
+\begin{definition}
+\ics{glsseeitem}\marg{label}
+\end{definition}
+This is defined by the \sty{glossaries} package to:
+\begin{alltt}
+\cs{glshyperlink}[\cs{glsseeitemformat}\marg{label}]\marg{label}
+\end{alltt}
+So the actual formatting for each cross-referenced entry is
+performed by \ics{glsseeitemformat}, which is redefined by
+\sty{glossaries-extra}, as described in
+\sectionref{sec:modifications}. This now displays the value
+of the \gloskey{text} field for abbreviations and the value
+of the \gloskey{name} field otherwise. There's no indication
+of the entry hierarchy, which could confuse the reader. Therefore,
+as from \sty{glossaries-extra} v1.37, there are some new commands
+that include the hierarchical information. You may prefer to
+redefine \cs{glsseeitemformat} to use one of this if you have
+sub-entries. For example:
+\begin{verbatim}
+\renewcommand*{\glsseeitemformat}[1]{\glsxtrhiername{#1}}
+\end{verbatim}
+
+The command:
+\begin{definition}[\DescribeMacro\glsxtrhiername]
+\cs{glsxtrhiername}\marg{label}
+\end{definition}
+performs a recursive action:
+\begin{enumerate}
+\item If the entry given by \meta{label} has a parent, then
+\cs{glsxtrhiername}\marg{parent label} is done followed by
+\cs{glsxtrhiernamesep} then:
+\item If the entry given by \meta{label} is an abbreviation
+(that is, it has the \gloskey{short} field set) then
+the short form is displayed (using \cs{glsaccessshort})
+otherwise the name is displayed (using \cs{glsaccessname}).
+\end{enumerate}
+The first step above is skipped if the entry doesn't have a parent.
+Each level is separated by:
+\begin{definition}[\DescribeMacro\glsxtrhiernamesep]
+\cs{glsxtrhiernamesep}
+\end{definition}
+which defaults to \qt{\glsxtrhiernamesep}. This can be redefined as
+appropriate.
+
+There are some case-changing variants:
+\begin{definition}[\DescribeMacro\Glsxtrhiername]
+\cs{Glsxtrhiername}\marg{label}
+\end{definition}
+The top-level has the first letter changed to upper case
+(either \cs{Glsaccessshort} or \cs{Glsaccessname}). There's
+no case-change for sub-entries.
+
+\begin{definition}[\DescribeMacro\GlsXtrhiername]
+\cs{GlsXtrhiername}\marg{label}
+\end{definition}
+All levels have the first letter changed to upper case
+(either \cs{Glsaccessshort} or \cs{Glsaccessname}).
+
+\begin{definition}[\DescribeMacro\GLSxtrhiername]
+\cs{GLSxtrhiername}\marg{label}
+\end{definition}
+The top-level is converted to upper case
+(either \cs{GLSaccessshort} or \cs{GLSaccessname}). There's
+no case-change for sub-entries.
+
+\begin{definition}[\DescribeMacro\GLSXTRhiername]
+\cs{GLSXTRhiername}\marg{label}
+\end{definition}
+All levels are converted to upper case
+(either \cs{GLSaccessshort} or \cs{GLSaccessname}).
+
+Suppose you want to suppress the \gls*{numberlist}
+using \pkgopt{nonumberlist}. This will automatically prevent the
+cross-references from being displayed. The
+\pkgopt{seeautonumberlist} package option will automatically
+enable the \gls*{numberlist} for entries that have the \gloskey{see}
+key set, but this will also show the rest of the \gls*{numberlist}.
+
+Another approach in this situation is to use the post description
+hook with \cs{glsxtrusesee} to append the cross-reference after
+the description. For example:
+\begin{verbatim}
+\renewcommand*{\glsxtrpostdescgeneral}{%
+ \ifglshasfield{see}{\glscurrententrylabel}
+ {, \glsxtrusesee{\glscurrententrylabel}}%
+ {}%
+}
+\end{verbatim}
+Now the cross-references can appear even though the \gls{numberlist}
+has been suppressed.
+
+As from v1.16, there's a separate \gloskey{seealso} key. Unlike
+\gloskey{see}, this doesn't have an optional part for the textual
+tag. The syntax \texttt{seealso=\marg{xr-labels}} works in much the same way as using
+\texttt{see=[\cs{seealsoname}]\marg{xr-labels}} but the information
+is stored in a separate field. If you need a different tag, use the
+\gloskey{see} key instead (or redefine \cs{seealsoname} or
+\cs{glsxtruseseealsoformat}, described below).
+
+You can display the formatted list of
+cross-references stored in the \gloskey{seealso} key using:
+\begin{definition}[\DescribeMacro\glsxtruseseealso]
+\cs{glsxtruseseealso}\marg{label}
+\end{definition}
+This works in much the same way as \cs{glsxtrusesee}
+but it internally uses
+\begin{definition}[\DescribeMacro\glsxtruseseeformat]
+\cs{glsxtruseseealsoformat}\marg{xr list}
+\end{definition}
+For example:
+\begin{verbatim}
+\renewcommand*{\glsxtrpostdescgeneral}{%
+ \ifglshasfield{see}{\glscurrententrylabel}
+ {, \glsxtrusesee{\glscurrententrylabel}}%
+ {}%
+ \ifglshasfield{seealso}{\glscurrententrylabel}
+ { (\glsxtruseseealso{\glscurrententrylabel})}%
+ {}%
+}
+\end{verbatim}
+
+The actual unformatted comma-separated list \meta{xr-list}
+stored in the \gloskey{seealso} field can be accessed with:
+\begin{definition}[\DescribeMacro\glsxtrseealsolabels]
+\cs{glsxtrseealsolabels}\marg{label}
+\end{definition}
+This will just expand to the \meta{xr-labels} provided in the value
+of the \gloskey{seealso} key. There's no corresponding command to
+access the \gloskey{see} field. If you really need to access it, you
+can use commands like \cs{glsxtrfielduse}, but remember that it
+may start with \oarg{tag}, so it can't be automatically treated
+as a simple comma-separated list.
+
+As mentioned above, the base \styfmt{glossaries} package provides \ics{glsseelist},
+which requires a comma-separated list of labels as the argument.
+The argument isn't fully expanded, so it's not suitable to use, for
+example, \cs{glsxtrseealsolabels}\marg{label} as the argument.
+For convenience, \styfmt{glossaries-extra} provides
+\begin{definition}[\DescribeMacro\glsxtrseelist]
+\cs{glsxtrseelist}\marg{xr list}
+\end{definition}
+which fully expands its argument and passes it to \cs{glsseelist}.
+
+The \gloskey{seealso} key implements the automatic indexing using
+\begin{definition}[\DescribeMacro\glsxtrindexseealso]
+\cs{glsxtrindexseealso}\marg{label}\marg{xr list}
+\end{definition}
+which just does
+\begin{alltt}
+\cs{glssee}[\cs{seealsoname}]\marg{label}\marg{xr list}
+\end{alltt}
+unless the \pkgopt{xindy} option is used with \sty{glossaries}
+v4.30+, in which case a distinct \texttt{seealso} cross-reference
+class is used instead.
+
+\section{Entry Display Style Modifications}
+\label{sec:entryfmtmods}
+
+Recall from the \styfmt{glossaries} package that commands such as \cs{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 \qt{\gls{linktext}} 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 \cs{gls}) and the entry format.
+
+The default entry format (\ics{glsentryfmt}) used in the
+\gls{linktext} by commands like \ics{gls}, \ics{glsxtrfull},
+\ics{glsxtrshort} and \ics{glsxtrlong} (but not commands like
+\ics{glslink}, \ics{glsfirst} and \cs{glstext}) is changed by \styfmt{glossaries-extra} to test for
+regular entries, which are determined as follows:
+
+\begin{itemize}
+\item If an entry is assigned to a category that has the
+\catattr{regular} attribute set (see \sectionref{sec:categories}), the entry is considered a~regular
+entry, even if it has a~value for the \gloskey{short} key.
+In this case \cs{glsentryfmt} uses \ics{glsgenentryfmt}
+(provided by \styfmt{glossaries}), which uses the \gloskey{first}
+(or \gloskey{firstplural}) value on \gls{firstuse} and the
+\gloskey{text} (or \gloskey{plural}) value on subsequent use.
+
+\item An entry that doesn't have a~value for the \gloskey{short}
+key is assumed to be a~regular entry, even if the
+\catattr{regular} attribute isn't set to \qt{true} (since it can't
+be an abbreviation without the short form).
+In this case \cs{glsentryfmt} uses \ics{glsgenentryfmt}.
+
+\item If an entry does has a~value for the \gloskey{short} key
+and hasn't been marked as a~regular entry through the
+\catattr{regular} attribute, it's not considered a regular entry.
+In this case \cs{glsentryfmt} uses \ics{glsxtrgenabbrvfmt}
+(defined by \styfmt{glossaries-extra}) which is governed
+by the abbreviation style (see \sectionref{sec:abbrstyle}).
+
+\end{itemize}
+
+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.
+
+As from version 1.04, \ics{glsentryfmt} now puts \ics{glsgenentry}
+in the argument of the new command
+\begin{definition}[\DescribeMacro\glsxtrregularfont]
+\cs{glsxtrregularfont}\marg{text}
+\end{definition}
+This just does its argument \meta{text} by default. This means that
+if you want regular entries in a different font but don't want
+that font to apply to abbreviations, then you can redefine
+\cs{glsxtrregularfont}. This is more precise than changing
+\ics{glstextformat} which is applied to all linking commands
+for all entries, unless overridden by the \catattr{textformat}
+attribute.
+
+For example:
+\begin{verbatim}
+\renewcommand*{\glsxtrregularfont}[1]{\textsf{#1}}
+\end{verbatim}
+You can access the label through \cs{glslabel}. For example,
+you can query the category:
+\begin{verbatim}
+\renewcommand*{\glsxtrregularfont}[1]{%
+ \glsifcategory{\glslabel}{general}{\textsf{#1}}{#1}}
+\end{verbatim}
+or query the category attribute, for example, provide a custom
+attribute called \texttt{font}:
+\begin{verbatim}
+\glssetcategoryattribute{general}{font}{sf}
+
+\renewcommand*{\glsxtrregularfont}[1]{%
+ \glsifattribute{\glslabel}{font}{sf}{\textsf{#1}}{#1}}
+\end{verbatim}
+As from version 1.21, it's simpler to just do, for example:
+\begin{verbatim}
+\glssetcategoryattribute{general}{textformat}{textsf}
+\end{verbatim}
+without redefining \cs{glsxtrregularfont}.
+
+As from version 1.30, there is also a command for abbreviations
+that encapsulates \cs{glsxtrgenabbrvfmt}:
+\begin{definition}[\DescribeMacro\glsxtrabbreviationfont]
+\cs{glsxtrabbreviationfont}\marg{text}
+\end{definition}
+This also just does its argument by default. Font changes
+made by abbreviation styles are within \meta{text}.
+
+The \cs{glspostlinkhook} provided by the \styfmt{glossaries} package to
+insert information after the \gls{linktext} produced by commands like \cs{gls} and \cs{glstext} is
+redefined to
+\begin{definition}[\DescribeMacro\glsxtrpostlinkhook]
+\cs{glsxtrpostlinkhook}
+\end{definition}
+This command will discard a following full stop (period) if the
+\catattr{discardperiod} attribute is set to \qt{true} for the
+current entry's category. It will also do
+\begin{definition}[\DescribeMacro\glsxtrpostlink]
+\cs{glsxtrpostlink}
+\end{definition}
+if a full stop hasn't be discarded and
+\begin{definition}[\DescribeMacro\glsxtrpostlinkendsentence]
+\cs{glsxtrpostlinkendsentence}
+\end{definition}
+if a full stop has been discarded.
+
+It may be that you want to check some other setting (rather
+than a category attribute) to determine whether or not to discard
+a following full stop. In which case you can redefine:
+\begin{definition}[\DescribeMacro\glsxtrifcustomdiscardperiod]
+\cs{glsxtrifcustomdiscardperiod}\marg{true}\marg{false}
+\end{definition}
+You can access the field's label using \cs{glslabel}.
+This command should do \meta{true} if the post-link hook
+should check if a period follows and \meta{false} otherwise.
+The default definition is simply:
+\begin{verbatim}
+\newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2}
+\end{verbatim}
+which means that no additional checks are performed.
+(Only the recognised category attributes will be checked.)
+
+\begin{important}
+Avoid the use of \cs{gls}-like and \cs{glstext}-like commands
+within the post-link hook as they will cause interference.
+Consider using commands like \cs{glsentrytext}, \cs{glsaccesstext}
+or \cs{glsxtrp} (\sectionref{sec:nested}) instead.
+\end{important}
+
+By default \cs{glsxtrpostlink} just does \postlinkcat\ if it exists, where
+\meta{category} is the category label for the current entry.
+(For example, for the \category{general} category,
+\cs{glsxtrpostlinkgeneral} if it has been defined.)
+
+You can define the post-link hook command using \cs{newcommand}, for
+example:
+\begin{verbatim}
+\newcommand*{\glsxtrpostlinkgeneral}{%
+ \glsxtrpostlinkAddDescOnFirstUse
+}
+\end{verbatim}
+or, as from v1.31, you can use
+\begin{definition}[\DescribeMacro\glsdefpostlink]
+\cs{glsdefpostlink}\marg{category}\marg{definition}
+\end{definition}
+This is simply a shortcut for:
+\begin{alltt}
+\cs{csdef}\{glsxtrpostlink\meta{category}\}\marg{definition}
+\end{alltt}
+Note that it doesn't check if the command has already been defined.
+
+\begin{sloppypar}
+The sentence-ending hook is slightly more complicated.
+If the command \postlinkcat\ 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 \postlinkcat\ 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.
+\end{sloppypar}
+
+There are some convenient commands you might want to use
+when customizing the post-\gls{linktext} category hooks:
+\begin{definition}[\DescribeMacro\glsxtrpostlinkAddDescOnFirstUse]
+\cs{glsxtrpostlinkAddDescOnFirstUse}
+\end{definition}
+This will add the description in parentheses on \gls{firstuse}.
+
+For example, suppose you want to append the description in
+parentheses on \gls{firstuse} for entries in the \category{symbol}
+category:
+\begin{verbatim}
+\newcommand*{\glsxtrpostlinksymbol}{%
+ \glsxtrpostlinkAddDescOnFirstUse
+}
+\end{verbatim}
+
+\begin{definition}[\DescribeMacro\glsxtrpostlinkAddSymbolOnFirstUse]
+\cs{glsxtrpostlinkAddSymbolOnFirstUse}
+\end{definition}
+This will append the symbol (if defined) in parentheses on
+\gls{firstuse}. (Does nothing if the symbol hasn't been set.)
+
+\begin{definition}[\DescribeMacro\glsxtrpostlinkAddSymbolDescOnFirstUse]
+\cs{glsxtrpostlinkAddSymbolDescOnFirstUse}
+\end{definition}
+(New to v1.31.) On \gls{firstuse},
+this will append \cs{space}(\meta{symbol}, \meta{description}) if
+the symbol is defined otherwise it just appends
+\cs{space}(\meta{description}).
+
+If you want to provide your own custom format be aware that you
+can't use \ics{ifglsused} within the post-\gls{linktext} hook as by this point
+the \gls{firstuseflag} will have been unset. Instead you can use
+\begin{definition}[\DescribeMacro\glsxtrifwasfirstuse]
+\cs{glsxtrifwasfirstuse}\marg{true}\marg{false}
+\end{definition}
+This will do \meta{true} if the last used entry was the
+\gls{firstuse}
+for that entry, otherwise it will do \meta{false}. (Requires at
+least \styfmt{glossaries} v4.19 to work properly.) This command is
+locally set by commands like \cs{gls}, so don't rely on it outside
+of the post-\gls{linktext} hook.
+
+\begin{important}
+Note that commands like \ics{glsfirst} and \ics{glsxtrfull} fake
+\gls{firstuse} for the benefit of the post-\gls{linktext} hooks by setting
+\cs{glsxtrifwasfirstuse} to \cs{@firstoftwo}.
+(Although, depending on the styles in use, they may not exactly match
+the text produced by \ics{gls}-like commands on \gls{firstuse}.)
+However, the \abbrstyle{short-postfootnote} style alters \cs{glsxtrfull}
+so that it fakes non-\gls{firstuse} otherwise the inline full format
+would include the footnote, which is inappropriate.
+\end{important}
+
+For example, if you want to place the description in a footnote
+after the \gls{linktext} on \gls{firstuse} for the \category{general} category:
+\begin{verbatim}
+\newcommand*{\glsxtrpostlinkgeneral}{%
+ \glsxtrifwasfirstuse{\footnote{\glsentrydesc{\glslabel}}}{}%
+}
+\end{verbatim}
+
+The \abbrstyle{short-postfootnote} abbreviation style uses the
+post-\gls{linktext} hook to
+place the footnote after trailing punctuation characters.
+
+You can set the default options used by \ics{glslink}, \ics{gls}
+etc with:
+\begin{definition}[\DescribeMacro\GlsXtrSetDefaultGlsOpts]
+\cs{GlsXtrSetDefaultGlsOpts}\marg{options}
+\end{definition}
+For example, if you mostly don't want to index entries then
+you can do:
+\begin{verbatim}
+\GlsXtrSetDefaultGlsOpts{noindex}
+\end{verbatim}
+and then use, for example, \verb|\gls[noindex=false]{sample}|
+when you actually want the location added to the \gls{numberlist}.
+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 \cs{glslink} and \cs{gls}.
+
+Note that if you don't want \emph{any} indexing, just omit
+\cs{makeglossaries} and \cs{printglossaries} (or analogous
+commands). If you want to adjust the default for
+\gloskey[glslink]{wrgloss}, it's better to do this by redefining
+\ics{glsxtrinitwrgloss} instead.
+
+\begin{important}
+\cs{GlsXtrSetDefaultGlsOpts} doesn't affect \cs{glsadd}.
+\end{important}
+
+If you want to change the default value of \gloskey[glsadd]{format},
+you can instead use:
+\begin{definition}[\GlsXtrSetDefaultNumberFormat]
+\cs{GlsXtrSetDefaultNumberFormat}\marg{format}
+\end{definition}
+This has the advantage of also working for \cs{glsadd}.
+For example, if you want all locations in the back matter to appear
+in italic (unless explicitly overridden):
+\begin{verbatim}
+\backmatter
+\GlsXtrSetDefaultNumberFormat{hyperit}
+\end{verbatim}
+
+Commands like \ics{gls} have star (\texttt{*}) and plus
+(\texttt{+}) modifiers as a short cut for \texttt{hyper=false}
+and \texttt{hyper=true}. The \styfmt{glossaries-extra} package
+provides a way to add a third modifier, if required, using
+\begin{definition}[\DescribeMacro\GlsXtrSetAltModifier]
+\cs{GlsXtrSetAltModifier}\marg{char}\marg{options}
+\end{definition}
+where \meta{char} is the character used as the modifier and
+\meta{options} is the default set of options (which may be
+overridden). Note that \meta{char} must be a single character
+(not a UTF-8 character, unless you are using \XeLaTeX\ or
+\LuaLaTeX).
+
+\begin{important}
+When choosing the character \meta{char} take care of any
+changes in category code.
+\end{important}
+
+Example:
+\begin{verbatim}
+\GlsXtrSetAltModifier{!}{noindex}
+\end{verbatim}
+This means that \verb|\gls!{sample}| will be equivalent to
+\verb|\gls[noindex]{sample}|. It's not possible to mix modifiers.
+For example, if you want to do
+\begin{verbatim}
+\gls[noindex,hyper=false]{sample}
+\end{verbatim}
+you can use \verb|\gls*[noindex]{sample}| or
+\verb|\gls![hyper=false]{sample}| but you can't combine the
+\texttt{*} and \texttt{!} modifiers.
+
+\Glspl{locationlist} displayed with \cs{printnoidxglossary}
+internally use
+\begin{definition}[\DescribeMacro\glsnoidxdisplayloc]
+\cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{location}
+\end{definition}
+This command is provided by \styfmt{glossaries}, but is modified by
+\styfmt{glossaries-extra} to check for the start and end range
+formation identifiers \verb|(| and \verb|)| which are discarded to
+obtain the actual control sequence name that forms the location
+formatting command.
+
+If the range identifiers aren't present, this just uses
+\begin{definition}[\DescribeMacro\glsxtrdisplaysingleloc]
+\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location}
+\end{definition}
+otherwise it uses
+\begin{definition}[\DescribeMacro\glsxtrdisplaystartloc]
+\cs{glsxtrdisplaystartloc}\marg{format}\marg{location}
+\end{definition}
+for the start of a range (where the identifier has been stripped
+from \meta{format}) or
+\begin{definition}[\DescribeMacro\glsxtrdisplayendloc]
+\cs{glsxtrdisplayendloc}\marg{format}\marg{location}
+\end{definition}
+for the end of a range (where the identifier has been stripped
+from \meta{format}).
+
+By default the start range command saves the format in
+\begin{definition}[\DescribeMacro\glsxtrlocrangefmt]
+\cs{glsxtrlocrangefmt}
+\end{definition}
+and does
+\begin{display}
+\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location}
+\end{display}
+(If the format is empty, it will be replaced with
+\texttt{glsnumberformat}.)
+
+The end command checks that the format matches the start of the
+range, does
+\begin{definition}[\DescribeMacro\glsxtrdisplayendlochook]
+\cs{glsxtrdisplayendlochook}\marg{format}\marg{location}
+\end{definition}
+(which does nothing by default), followed by
+\begin{display}
+\cs{glsxtrdisplaysingleloc}\marg{format}\marg{location}
+\end{display}
+and then sets \cs{glsxtrlocrangefmt} to empty.
+
+This means that the list
+\begin{verbatim}
+\glsnoidxdisplayloc{}{page}{(textbf}{1},
+\glsnoidxdisplayloc{}{page}{textbf}{1},
+\glsnoidxdisplayloc{}{page}{)textbf}{1}.
+\end{verbatim}
+doesn't display any differently from
+\begin{verbatim}
+\glsnoidxdisplayloc{}{page}{textbf}{1},
+\glsnoidxdisplayloc{}{page}{textbf}{1},
+\glsnoidxdisplayloc{}{page}{textbf}{1}.
+\end{verbatim}
+but it does make it easier to define your own custom list handler
+that can accommodate the ranges.
+
+
+\section{Entry Counting Modifications}
+\label{sec:entrycountmods}
+
+If you are using \gls{bib2gls} you may find it more convenient
+to use the record count commands described in
+\sectionref{sec:bib2gls} instead.
+
+The \ics{glsenableentrycount} command is modified to allow
+for the \catattr{entrycount} attribute. This means that
+you not only need to enable entry counting with
+\cs{glsenableentrycount}, but you also need
+to set the appropriate attribute (see \sectionref{sec:categories}).
+
+For example, instead of just doing:
+\begin{verbatim}
+\glsenableentrycount
+\end{verbatim}
+you now need to do:
+\begin{verbatim}
+\glsenableentrycount
+\glssetcategoryattribute{abbreviation}{entrycount}{1}
+\end{verbatim}
+This will enable the entry counting for entries in the
+\category{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 \sectionref{sec:entrycount}.
+
+\section{First Use Flag}
+\label{sec:glsunset}
+
+The \styfmt{glossaries} package provides
+\begin{definition}
+\ics{ifglsused}\marg{label}\marg{true}\marg{false}
+\end{definition}
+to determine whether or not an entry has been used. This requires
+the entry to have been defined. If the entry is undefined, then the
+underlying boolean variable doesn't exist and so is neither true
+nor false. This command will produce an error with the default
+\pkgopt[error]{undefaction} mode and a warning with
+\pkgopt[warn]{undefaction} and, where appropriate, displays ?? in
+the document text to denote an undefined reference. With both modes,
+neither \meta{true} nor \meta{false} will be performed if
+\meta{label} doesn't exist.
+
+The \pkgopt{record} option automatically implements
+\pkgopt[warn]{undefaction} since no entries will be defined until
+they have been selected by \gls{bib2gls}. In this case, you
+may prefer to use:
+\begin{definition}[\DescribeMacro\GlsXtrIfUnusedOrUndefined]
+\cs{GlsXtrIfUnusedOrUndefined}\marg{label}\marg{true}\marg{false}
+\end{definition}
+(new to v1.34) which does \meta{true} if the entry given by
+\meta{label} is undefined or if the entry is marked as unused.
+Remember that neither \cs{ifglsused} nor
+\cs{GlsXtrIfUnusedOrUndefined} should be used in the post-link
+hook as the \gls{firstuseflag} will have already been unset
+before the hook is performed. (Instead, \ics{glsxtrifwasfirstuse}
+should be used, see \sectionref{sec:entryfmtmods}.)
+
+There are two new commands provided with version 1.31+:
+\begin{definition}[\DescribeMacro\glslocalreseteach]
+\cs{glslocalreseteach}\marg{list}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslocalunseteach]
+\cs{glslocalunseteach}\marg{list}
+\end{definition}
+These behave like \cs{glslocalreset} and \cs{glslocalunset}
+but the argument is a comma-separated list of labels.
+
+The internal command used by \cs{glsunset} is modified first to
+allow for the changing in entry counting, described above, but
+also to allow for buffering pending unsets when commands like
+\cs{gls} are used in a context where changing a boolean variable
+can cause things to go wrong. One example of this is using
+\cs{gls} in one of the commands provided with the \isty{soul}
+package. For example:
+\begin{verbatim}
+\ul{Some text about \gls{html}.}
+\end{verbatim}
+This causes the confusing error:
+\begin{verbatim}
+Glossary entry `{html}' has not been defined.
+\end{verbatim}
+The simplest workaround is to put \verb|\gls{html}| inside the
+argument of \cs{mbox}. For example:
+\begin{verbatim}
+\ul{Some text about \mbox{\gls{html}}.}
+\end{verbatim}
+This can work provided it's not the first use of this entry.
+It if is, then unsetting the first use flag causes a problem
+and results in the error:
+\begin{verbatim}
+! Package soul Error: Reconstruction failed.
+\end{verbatim}
+The \styfmt{glossaries-extra} package provides a way of temporarily
+switching off \cs{glsunset} so that it just makes a note of the
+entry's label but doesn't actually perform the change:
+\begin{definition}[\DescribeMacro\GlsXtrStartUnsetBuffering]
+\cs{GlsXtrStartUnsetBuffering}
+\end{definition}
+The unstarred version doesn't check for duplicates, so the internal
+list may end up with multiple occurrences of the same label. The
+starred version only adds a label to the internal list if it's not
+already in it. Note that this buffering only applies to the
+global \cs{glsunset} and does not affect the local
+\cs{glslocalunset}.
+
+Later you can restore \cs{glsunset} and unset all buffered
+labels using:
+\begin{definition}[\DescribeMacro\GlsXtrStopUnsetBuffering]
+\cs{GlsXtrStopUnsetBuffering}
+\end{definition}
+The starred form \cs{GlsXtrStopUnsetBuffering*} uses
+\cs{glslocalunset} instead. For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[T1]{fontenc}
+\usepackage{soul}
+\usepackage{glossaries-extra}
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+
+\begin{document}
+\GlsXtrStartUnsetBuffering
+\ul{Some text about \mbox{\gls{html}}.}
+\GlsXtrStopUnsetBuffering
+
+Next use: \gls{html}.
+\end{document}
+\end{verbatim}
+Before you stop the unset buffering, you can iterate over the
+current buffer using
+\begin{definition}[\DescribeMacro\GlsXtrForUnsetBufferedList]
+\cs{GlsXtrForUnsetBufferedList}\marg{cs}
+\end{definition}
+where \meta{cs} is a control sequence that takes a single argument
+(which is the entry label). This is best used with the starred
+version \cs{GlsXtrStartUnsetBuffering*} to avoid duplicates.
+
+\begin{important}
+Note that since the change in the first use flag now doesn't
+occur until \cs{GlsXtrStopUnsetBuffering}, multiple references
+of the same term within the buffering zone will always be
+treated as first use (if the term wasn't used before the
+buffering started).
+\end{important}
+
+There can still be a problem here as content within \cs{mbox}
+can't break across a line so you may end up with an overfull
+line or excessive white space within the paragraph.
+
+An alternative is to use \cs{protect}:
+\begin{verbatim}
+\GlsXtrStartUnsetBuffering
+\ul{Some text about \protect\gls{html}.}
+\GlsXtrStopUnsetBuffering
+\end{verbatim}
+but the formatting (underlining in this example) won't be applied.
+Another possibility is:
+\begin{verbatim}
+\usepackage[T1]{fontenc}
+\usepackage{soul}
+\usepackage{glossaries-extra}
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+
+\newrobustcmd{\gul}[1]{%
+ {%
+ \def\glsxtrabbreviationfont##1{\GlsXtrExpandedFmt{\ul}{##1}}%
+ \def\glsxtrregularfont##1{\GlsXtrExpandedFmt{\ul}{##1}}%
+ #1%
+ }%
+}
+
+\begin{document}
+\ul{Some text about }\gls[textformat=gul]{html}.
+
+Next use: \gls{html}.
+\end{document}
+\end{verbatim}
+This moves \cs{gls} outside of \cs{ul} and uses
+\gloskey[glslink]{textformat} to locally change the formatting
+command used by \cs{gls} (which is normally given by
+\cs{glstextformat} or the \catattr{textformat} attribute)
+to a custom command \cs{gul}, which locally changes the regular font
+and the default abbreviation font to use \cs{ul}. It then uses
+\begin{definition}[\DescribeMacro\GlsXtrExpandedFmt]
+\cs{GlsXtrExpandedFmt}\marg{cs}\marg{text}
+\end{definition}
+which (protected) fully expands \meta{text} before applying
+\meta{cs}, which must be a control sequence that takes a single
+argument. This allows \cs{ul} to move much further inside
+and increases its chances of working. It can still break if
+\meta{text} expands to something that \cs{ul} can't deal with.
+For example, if an abbreviation style is used that contains
+complex formatting or if the field value contains problematic
+content.
+
+\section{Plurals}
+
+Some languages, such as English, have a general rule that plurals
+are formed from the singular with a suffix appended. This isn't
+an absolute rule. There are plenty of exceptions (for example,
+geese, children, churches, elves, fairies, sheep). The
+\sty{glossaries} package allows the \gloskey{plural} key to be
+optional when defining entries. In some cases a plural may not make
+any sense (for example, the term is a symbol) and in some cases
+the plural may be identical to the singular.
+
+To make life easier for languages where the majority of plurals can
+simply be formed by appending a suffix to the singular, the
+\sty{glossaries} package lets the \gloskey{plural} field default
+to the value of the \gloskey{text} field with \ics{glspluralsuffix}
+appended. This command is defined to be just the letter \qt{s}.
+This means that the majority of terms don't need to have the
+\gloskey{plural} supplied as well, and you only need to use it for the
+exceptions.
+
+For languages that don't have this general rule, the \gloskey{plural}
+field will always need to be supplied, where needed.
+
+There are other plural fields, such as \gloskey{firstplural},
+\gloskey{longplural} and \gloskey{shortplural}. Again, if you are using
+a language that doesn't have a simple suffix rule, you'll have to
+supply the plural forms if you need them (and if a plural makes
+sense in the context).
+
+If these fields are omitted, the \sty{glossaries} package follows
+these rules:
+\begin{itemize}
+\item If \gloskey{firstplural} is missing, then \cs{glspluralsuffix}
+is appended to the \gloskey{first} field, if that field has been
+supplied. If the \gloskey{first} field hasn't been supplied but the
+\gloskey{plural} field has been supplied, then the \gloskey{firstplural}
+field defaults to the \gloskey{plural} field. If the \gloskey{plural}
+field hasn't been supplied, then both the \gloskey{plural} and
+\gloskey{firstplural} fields default to the \gloskey{text} field (or
+\gloskey{name}, if no \gloskey{text} field) with \cs{glspluralsuffix}
+appended.
+
+\item If the \gloskey{longplural} field is missing, then
+\cs{glspluralsuffix} is appended to the \gloskey{long} field, if the
+\gloskey{long} field has been supplied.
+
+\item If the \gloskey{shortplural} field is missing then, \emph{with
+the base \sty{glossaries} acronym mechanism}, \ics{acrpluralsuffix}
+is appended to the \gloskey{short} field.
+
+\end{itemize}
+
+This \emph{last case is changed} with \styfmt{glossaries-extra}.
+With this extension package, the \gloskey{shortplural} field
+defaults to the \gloskey{short} field with \ics{abbrvpluralsuffix}
+appended unless overridden by category attributes. This
+suffix command is set by the abbreviation styles. This means that
+every time an abbreviation style is implemented,
+\cs{abbrvpluralsuffix} is redefined. In most cases its redefined to
+use
+\begin{definition}[\DescribeMacro\glsxtrabbrvpluralsuffix]
+\cs{glsxtrabbrvpluralsuffix}
+\end{definition}
+which defaults to just \cs{glspluralsuffix}. Some of the
+abbreviation styles have their own command for the plural suffix,
+such as \cs{glsxtrscsuffix},
+so if you want to completely strip all the plural suffixes used for
+abbreviations then you need to redefine \cs{glsxtrabbrvpluralsuffix}
+\emph{not} \cs{abbrvpluralsuffix}, which changes with the style. Redefining
+\cs{acrpluralsuffix} will have no affect, since it's not used by the
+new abbreviation mechanism.
+
+If you require a mixture (for example, in a multilingual document),
+there are two attributes that affect the short plural suffix
+formation. The first is \catattr{aposplural} which uses the suffix
+\begin{verbatim}
+'\abbrvpluralsuffix
+\end{verbatim}
+That is, an apostrophe followed by \cs{abbrvpluralsuffix} is
+appended. The second attribute is \catattr{noshortplural} which
+suppresses the suffix and simply sets \gloskey{shortplural} to the
+same as \gloskey{short}.
+
+\section{Nested Links}
+\label{sec:nested}
+
+Complications arise when you use \ics{gls} in the
+value of the \gloskey{name} field (or \gloskey{text}
+or \gloskey{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
+\styfmt{glossaries} package:
+\begin{verbatim}
+\newacronym{ssi}{SSI}{Server Side Includes}
+\newacronym{html}{HTML}{Hypertext Markup Language}
+\newacronym{shtml}{S\gls{html}}{\gls{ssi} enabled \gls{html}}
+\end{verbatim}
+
+The main problems are:
+\begin{enumerate}
+\item\label{itm:nestedfirstucprob} The first letter upper casing commands, such as \ics{Gls},
+won't work for the \texttt{shtml} entry on \gls{firstuse} if the
+long form is displayed before the short form (which is the
+default abbreviation style). This will attempt to do
+\begin{verbatim}
+\gls{\uppercase ssi} enabled \gls{html}
+\end{verbatim}
+which just doesn't work. Grouping the \verb|\gls{ssi}| doesn't
+work either as this will effectively try to do
+\begin{verbatim}
+\uppercase{\gls{ssi}} enabled \gls{html}
+\end{verbatim}
+This will upper case the label \texttt{ssi} so the entry won't be
+recognised. This problem will also occur if you use the all capitals
+version, such as \ics{GLS}.
+
+\item\label{itm:nonexpandprob} The long and abbreviated forms accessed through
+\ics{glsentrylong} and \ics{glsentryshort} are no longer expandable
+and so can't be used be used in contexts that require this,
+such as PDF bookmarks.
+
+\item\label{itm:nestedsortprob} The nested commands may end up in the \gloskey{sort} key,
+which will confuse the indexing.
+
+\item\label{itm:inconsistentfirstuseprob} The \texttt{shtml} entry produces inconsistent results
+depending on whether the \texttt{ssi} or \texttt{html} entries have
+been used. Suppose both \texttt{ssi} and \texttt{html} are used
+before \texttt{shtml}. For example:
+\begin{verbatim}
+This section discusses \gls{ssi}, \gls{html} and \gls{shtml}.
+\end{verbatim}
+This produces:
+\begin{quote}
+This section discusses server side includes (SSI), hypertext markup
+language (HTML) and SSI enabled HTML (SHTML).
+\end{quote}
+So the \gls{firstuse} of the \texttt{shtml} entry produces
+\qt{SSI enabled HTML (SHTML)}.
+
+Now let's suppose the \texttt{html} entry is used before the
+\texttt{shtml} but the \texttt{ssi} entry is used after the
+\texttt{shtml} entry, for example:
+\begin{verbatim}
+The sample files are either \gls{html} or \gls{shtml}, but let's
+first discuss \gls{ssi}.
+\end{verbatim}
+This produces:
+\begin{quote}
+The sample files are either hypertext markup language (HTML) or
+server
+side includes (SSI) enabled HTML (SHTML), but let's first discuss
+SSI.
+\end{quote}
+So the \gls{firstuse} of the \texttt{shtml} entry now produces
+\qt{server side includes (SSI) enabled HTML (SHTML)}, which looks
+a bit strange.
+
+Now let's suppose the \texttt{shtml} entry is used before (or
+without) the other two entries:
+\begin{verbatim}
+This article is an introduction to \gls{shtml}.
+\end{verbatim}
+This produces:
+\begin{quote}
+This article is an introduction to server side includes (SSI)
+enabled hypertext markup language (HTML) (SHTML).
+\end{quote}
+So the \gls{firstuse} of the \texttt{shtml} entry now produces
+\qt{server side includes (SSI) enabled hypertext markup language (HTML)
+(SHTML)}, which is even more strange.
+
+This is all aggravated by setting the style using the
+\styfmt{glossaries} package's
+\cs{setacronymstyle}. For example:
+\begin{verbatim}
+\setacronymstyle{long-short}
+\end{verbatim}
+as this references the label through the use of \cs{glslabel}
+when displaying the long and short forms, but this value
+changes with each use of \cs{gls}, so instead of displaying
+\qt{(SHTML)} at the end of the \gls{firstuse}, it now displays
+\qt{(HTML)}, since \cs{glslabel} has been changed to \texttt{html}
+by \verb|\gls{html}|.
+
+Another oddity occurs if you reset the \texttt{html} entry between
+uses of the \texttt{shtml} entry. For example:
+\begin{verbatim}
+\gls{shtml} ... \glsreset{html}\gls{shtml}
+\end{verbatim}
+The next use of \texttt{shtml} produces \qt{Shypertext markup
+language (HTML)}, which is downright weird.
+
+Even without this, the short form has nested formatting commands,
+which amount to \verb|\acronymfont{S\acronymfont{HTML}}|. This
+may not be a problem for some styles, but if you use one of the
+\qt{sm} styles (that use \ics{textsmaller}), this will produce
+an odd result.
+
+\item\label{itm:indexingprob} Each time the \texttt{shtml} entry is used, the
+\texttt{html} entry will also be indexed and marked as used,
+and on \gls{firstuse} this will happen to both the \texttt{ssi}
+and \texttt{html} entries. This kind of duplication in the location
+list isn't usually particularly helpful to the reader.
+
+\item\label{itm:nestedhyplinkprob} If \sty{hyperref} is in use, you'll get nested hyperlinks
+and there's no consistent way of dealing with this across the
+available PDF viewers. If on the \gls{firstuse} case, the user
+clicks on the \qt{HTML} part of the \qt{SSI enabled HTML (SHTML)}
+link, they may be directed to the HTML entry in the glossary or
+they may be directed to the SHTML entry in the glossary.
+
+\end{enumerate}
+
+For these reasons it's better to use the simple expandable commands like
+\ics{glsentrytext} or \ics{glsentryshort} in the definition
+of other entries (although that doesn't fix the first problem).
+Alternatively use something like:
+\begin{verbatim}
+\newacronym
+ [description={\acrshort{ssi} enabled \acrshort{html}}]
+ {shtml}{SHTML}{SSI enabled HTML}
+\end{verbatim}
+with \styfmt{glossaries} or:
+\begin{verbatim}
+\newabbreviation
+ [description={\glsxtrshort{ssi} enabled \glsxtrshort{html}}]
+ {shtml}{SHTML}{SSI enabled HTML}
+\end{verbatim}
+with \styfmt{glossaries-extra}. This fixes all the above
+listed problems (as long as you don't use \ics{glsdesc}).
+Note that replacing \cs{gls} with \cs{acrshort} in the original
+example may fix the \gls{firstuse} issue, but it doesn't
+fix any of the other problems listed above.
+
+If it's simply that you want to use the abbreviation font, you can
+use \cs{glsabbrvfont}:
+\begin{verbatim}
+\setabbreviationstyle{long-short-sc}
+
+\newabbreviation{ssi}{ssi}{server-side includes}
+\newabbreviation{html}{html}{hypertext markup language}
+\newabbreviation{shtml}{shtml}{\glsabbrvfont{ssi} enabled
+\glsabbrvfont{html}}
+\end{verbatim}
+This will pick up the font style setting of the outer entry (shtml,
+in the above case). This isn't a problem in the above example as all
+the abbreviations use the same style.
+
+However if you're really determined to use
+\ics{gls} in a field that may be included within
+some \gls{linktext}, \styfmt{glossaries-extra} patches internals
+used by the linking commands so that if \cs{gls} (or plural or
+case changing variants) occurs in the \gls{linktext} it will
+behave as though you used
+\texttt{\ics{glstext}[hyper=false,noindex]}
+instead. Grouping is also added so that, for example, when
+\verb|\gls{shtml}| is used for the first time the long form
+\begin{verbatim}
+\gls{ssi} enabled \gls{html}
+\end{verbatim}
+is treated as
+\begin{verbatim}
+{\glstext[hyper=false,noindex]{ssi}} enabled
+{\glstext[hyper=false,noindex]{html}}
+\end{verbatim}
+This overcomes problems~\ref{itm:inconsistentfirstuseprob},
+\ref{itm:indexingprob} and \ref{itm:nestedhyplinkprob} listed
+above, but still doesn't fix problems~\ref{itm:nestedfirstucprob}
+and \ref{itm:nonexpandprob}.
+Problem~\ref{itm:nestedsortprob} usually won't be an issue as most abbreviation
+styles set the \gloskey{sort} key to the short form, so using these
+commands in the long form but not the short form will only affect
+entries with a style that sorts according to the long form (such as
+\abbrstyle{long-noshort-desc}).
+
+Additionally, any instance of the long form commands, such
+as \ics{glsxtrlong} or \ics{acrlong} will be temporarily
+redefined to just use
+\begin{alltt}
+\{\ics{glsentrylong}\marg{label}\meta{insert}\}
+\end{alltt}
+(or case-changing versions). Similarly the short form commands,
+such as \ics{glsxtrshort} or \ics{acrshort} will use
+\ics{glsentryshort} in the argument of either \cs{glsabbrvfont}
+(for \cs{glsxtrshort}) or \cs{acronymfont} (for \cs{acrshort}).
+So if the \texttt{shtml} entry had instead been defined as:
+\begin{verbatim}
+\newacronym{shtml}{SHTML}{\acrshort{ssi} enabled \acrshort{html}}
+\end{verbatim}
+then (using the \abbrstyle{long-short} style) the \gls{firstuse}
+will be like
+\begin{verbatim}
+{\acronymfont{\glsentryshort{ssi}}} enabled
+{\acronymfont{\glsentryshort{html}}} (SHTML)
+\end{verbatim}
+whereas if the entry is defined as:
+\begin{verbatim}
+\newabbreviation{shtml}{SHTML}{\glsxtrshort{ssi} enabled
+\glsxtrshort{html}}
+\end{verbatim}
+then the \gls{firstuse} will be like:
+\begin{verbatim}
+{\glsabbrvfont{\glsentryshort{ssi}}} enabled
+{\glsabbrvfont{\glsentryshort{html}}} (SHTML)
+\end{verbatim}
+Note that the first optional argument of
+\cs{acrshort} or \cs{glsxtrshort} is ignored in this context.
+(The final optional argument will be inserted, if present.)
+The abbreviation style that governs \ics{glsabbrvfont} will be
+set for \ics{glsxtrshort}. Note that \cs{acrshort} doesn't
+set the abbreviation style.
+
+Alternatively you can use:
+\begin{definition}[\DescribeMacro\glsxtrp]
+\cs{glsxtrp}\marg{field}\marg{label}
+\end{definition}
+where \meta{field} is the field label and corresponds to a
+command in the form \cs{gls}\meta{field} (e.g.\ \cs{glstext}) or
+in the form \cs{glsxtr}\meta{field} (e.g.\ \cs{glsxtrshort}).
+
+There's a shortcut command for the most common fields:
+\begin{definition}[\DescribeMacro\glsps]
+\cs{glsps}\marg{label}
+\end{definition}
+which is equivalent to \verb|\glsxtrp{short}|\marg{label}, and
+\begin{definition}[\DescribeMacro\glspt]
+\cs{glspt}\marg{label}
+\end{definition}
+which is equivalent to \verb|\glsxtrp{text}|\marg{label}.
+
+The \cs{glsxtrp} command behaves much like the
+\cs{glsfmt}\meta{field} commands described in
+\sectionref{sec:headtitle} but the post-link hook is also
+suppressed and extra grouping is added. It automatically sets
+\gloskey[glslink]{hyper} to \texttt{false} and
+\gloskey[glslink]{noindex} to \texttt{true}. If you want to change
+this, you can use
+\begin{definition}[\DescribeMacro\glsxtrsetpopts]
+\cs{glsxtrsetpopts}\marg{options}
+\end{definition}
+For example:
+\begin{verbatim}
+\glsxtrsetpopts{hyper=false}
+\end{verbatim}
+will just switch off the hyperlinks but not the indexing.
+Be careful using this command or you can end up back to the
+original problem of nested links.
+
+The hyper link is re-enabled within glossaries. This is
+done through the command:
+\begin{definition}[\DescribeMacro\glossxtrsetpopts]
+\cs{glossxtrsetpopts}
+\end{definition}
+which by default just does
+\begin{verbatim}
+\glsxtrsetpopts{noindex}
+\end{verbatim}
+You can redefine this if you want to adjust the setting when
+\cs{glsxtrp} is used in the glossary. For example:
+\begin{verbatim}
+\renewcommand{\glossxtrsetpopts}{\glsxtrsetpopts{noindex=false}}
+\end{verbatim}
+
+For example,
+\begin{verbatim}
+\glsxtrp{short}{ssi}
+\end{verbatim}
+is equivalent to
+\begin{verbatim}
+{\let\glspostlinkhook\relax
+ \glsxtrshort[hyper=false,noindex]{ssi}[]%
+}
+\end{verbatim}
+in the main body of the document or
+\begin{verbatim}
+{\let\glspostlinkhook\relax
+ \glsxtrshort[noindex]{ssi}[]%
+}
+\end{verbatim}
+inside the glossary. (Note the post-link hook is locally disabled.)
+
+If \verb|\glsxtrp{short}{ssi}| occurs in a sectioning mark,
+it's equivalent to
+\begin{verbatim}
+{\glsxtrheadshort{ssi}}
+\end{verbatim}
+(which recognises the \catattr{headuc} attribute.)
+
+If \sty{hyperref} has been loaded, then the bookmark will
+use \cs{glsentry}\meta{field}
+(\verb|\glsentryshort{ssi}| in the above example).
+
+There are similar commands
+\begin{definition}[\DescribeMacro\Glsxtrp]
+\cs{Glsxtrp}\marg{field}\marg{label}
+\end{definition}
+for first letter upper case and
+\begin{definition}[\DescribeMacro\GLSxtrp]
+\cs{GLSxtrp}\marg{field}\marg{label}
+\end{definition}
+for all upper case.
+
+\begin{important}
+If you use any of the case-changing commands, such as \ics{Gls}
+or \ics{Glstext}, (either all caps or first letter upper casing)
+don't use any of the linking commands, such as \ics{gls} or
+\ics{glstext}, in the definition of entries for any of the
+fields that may be used by those case-changing commands.
+\end{important}
+
+You can, with care, protect against issue~\ref{itm:nestedfirstucprob} by
+inserting an empty group at the start if the long form starts with a
+command that breaks the first letter uppercasing commands like
+\cs{Gls}, but you still won't be able to use the all caps commands,
+such as \cs{GLS}.
+
+If you \emph{really need} nested commands, the safest method is
+\begin{verbatim}
+\newabbreviation{shtml}{shtml}{{}\glsxtrp{short}{ssi} enabled
+\glsxtrp{short}{html}}
+\end{verbatim}
+but be aware that it may have some unexpected results occasionally.
+
+Example document:
+\begin{verbatim}
+\documentclass{report}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage{slantsc}
+\usepackage[colorlinks]{hyperref}
+\usepackage[nopostdot=false]{glossaries-extra}
+
+\makeglossaries
+
+\setabbreviationstyle{long-short-sc}
+
+\newabbreviation{ssi}{ssi}{server-side includes}
+\newabbreviation{html}{html}{hypertext markup language}
+\newabbreviation{shtml}{shtml}{{}\glsps{ssi} enabled {}\glsps{html}}
+
+\pagestyle{headings}
+
+\glssetcategoryattribute{abbreviation}{headuc}{true}
+\glssetcategoryattribute{abbreviation}{glossdesc}{title}
+
+\begin{document}
+
+\tableofcontents
+
+\chapter{\glsfmtfull{shtml}}
+
+First use: \gls{shtml}, \gls{ssi} and \gls{html}.
+
+Next use: \gls{shtml}, \gls{ssi} and \gls{html}.
+
+\newpage
+Next page.
+
+\printglossaries
+\end{document}
+\end{verbatim}
+
+\section{Acronym Style Modifications}
+\label{sec:acronymmods}
+
+The \styfmt{glossaries-extra} package provides a new way of dealing
+with abbreviations and redefines \ics{newacronym} to
+use \cs{newabbreviation} (see \sectionref{sec:abbreviations}).
+The simplest way to update a document that uses
+\cs{newacronym} from \styfmt{glossaries} to
+\styfmt{glossaries-extra} is do just add
+\begin{verbatim}
+\setabbreviationstyle[acronym]{long-short}
+\end{verbatim}
+before you define any entries.
+For example, the following document using just \styfmt{glossaries}
+\begin{verbatim}
+\documentclass{article}
+\usepackage[acronym,nopostdot,toc]{glossaries}
+\makeglossaries
+\setacronymstyle{long-short}
+\newacronym{html}{HTML}{hypertext markup language}
+\begin{document}
+\gls{html}
+\printglossaries
+\end{document}
+\end{verbatim}
+can be easily adapted to use \styfmt{glossaries-extra}:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[acronym]{glossaries-extra}
+\makeglossaries
+\setabbreviationstyle[acronym]{long-short}
+\newacronym{html}{HTML}{hypertext markup language}
+\begin{document}
+\gls{html}
+\printglossaries
+\end{document}
+\end{verbatim}
+Table~\ref{tab:acrabbrvstyles} lists the nearest equivalent
+\styfmt{glossaries-extra} abbreviation styles for
+the predefined acronym styles provided by \styfmt{glossaries}, but
+note that the new styles use different formatting commands. See
+\sectionref{sec:predefabbrvstyles} for further details.
+
+\begin{table}[htbp]
+\caption[Old Acronym Styles Verses New Abbreviation Styles]{Old Acronym Styles
+\cs{setacronymstyle}\marg{old-style-name} Verses New Abbreviation
+Styles \cs{setabbreviationstyle}\oarg{category}\marg{new-style-name}}
+\label{tab:acrabbrvstyles}
+\centering
+\begin{tabular}{@{}p{\dimexpr0.3\textwidth-2\tabcolsep}p{0.7\textwidth}@{}}
+\bfseries Old Style Name &
+\bfseries New Style Name\\
+\acrstyle{long-sc-short} & \abbrstyle{long-short-sc}\\
+\acrstyle{long-sm-short} & \abbrstyle{long-short-sm}\\
+\acrstyle{long-sp-short} & \abbrstyle{long-short} \newline with
+\ttfamily\cs{renewcommand}\{\cs{glsxtrfullsep}\}[1]\{\cs{glsacspace}\{\#1\}\}\\
+\acrstyle{short-long} & \abbrstyle{short-long}\\
+\acrstyle{sc-short-long} & \abbrstyle{short-sc-long}\\
+\acrstyle{sm-short-long} & \abbrstyle{short-sm-long}\\
+\acrstyle{long-short-desc} & \abbrstyle{long-short-desc}\\
+\acrstyle{long-sc-short-desc} & \abbrstyle{long-short-sc-desc}\\
+\acrstyle{long-sm-short-desc} & \abbrstyle{long-short-sm-desc}\\
+\acrstyle{long-sp-short-desc} & \abbrstyle{long-short-desc} \newline with
+\ttfamily\cs{renewcommand}\{\cs{glsxtrfullsep}\}[1]\{\cs{glsacspace}\{\#1\}\}\\
+\acrstyle{short-long-desc} & \abbrstyle{short-long-desc}\\
+\acrstyle{sc-short-long-desc} & \abbrstyle{short-sc-long-desc}\\
+\acrstyle{sm-short-long-desc} & \abbrstyle{short-sm-long-desc}\\
+\acrstyle{dua} & \abbrstyle{long-noshort}\\
+\acrstyle{dua-desc} & \abbrstyle{long-noshort-desc}\\
+\acrstyle{footnote} & \abbrstyle{short-footnote}\\
+\acrstyle{footnote-sc} & \abbrstyle{short-sc-footnote}\\
+\acrstyle{footnote-sm} & \abbrstyle{short-sm-footnote}\\
+\acrstyle{footnote-desc} & \abbrstyle{short-footnote-desc}\\
+\acrstyle{footnote-sc-desc} & \abbrstyle{short-sc-footnote-desc}\\
+\acrstyle{footnote-sm-desc} & \abbrstyle{short-sm-footnote-desc}
+\end{tabular}
+\end{table}
+
+The reason for introducing the new style of abbreviation commands
+provided by \styfmt{glossaries-extra} is because the original
+acronym commands provided by \styfmt{glossaries} are too restrictive
+to work with the internal modifications made by
+\styfmt{glossaries-extra}. However, if you really want to restore
+the generic acronym function provided
+by \styfmt{glossaries} you can use
+\begin{definition}[\DescribeMacro\RestoreAcronyms]
+\cs{RestoreAcronyms}
+\end{definition}
+(before any use of \cs{newacronym}).
+
+\cs{RestoreAcronyms} should not be used in combination with the newer
+\styfmt{glossaries-extra} abbreviations. Don't combine old and
+new style entries with the same \gloskey{type}. The
+original \styfmt{glossaries} acronym mechanism doesn't work well
+with the newer \styfmt{glossaries-extra} commands.
+
+\begin{important}
+If you use \cs{RestoreAcronyms}, don't use any of the commands
+provided by \styfmt{glossaries-extra} intended for abbreviations
+(such as \ics{glsxtrshort} or \ics{glsfmtshort}) with entries
+defined via \ics{newacronym} as it will cause unexpected
+results.
+\end{important}
+
+In general, there's rarely any need for \cs{RestoreAcronyms}. If you
+have a document that uses \ics{newacronymstyle}, then it's best to
+either stick with just \styfmt{glossaries} for that document or
+define an equivalent abbreviation style with
+\ics{newabbreviationstyle}. (See \sectionref{sec:newabbrvstyle} for
+further details.)
+
+\begin{definition}[\DescribeMacro\glsacspace]
+\cs{glsacspace}\marg{label}
+\end{definition}
+The space command \cs{glsacspace} used by the
+\acrstyle{long-sp-short} acronym style provided by \styfmt{glossaries}
+is modified so that it uses
+\begin{definition}[\DescribeMacro\glsacspacemax]
+\cs{glsacspacemax}
+\end{definition}
+instead of the hard-coded 3em. This is a command not a length
+and so can be changed using \cs{renewcommand}.
+
+Any of the new abbreviation styles that use \ics{glsxtrfullsep}
+(such as \abbrstyle{long-short}) can easily be changed to use
+\cs{glsacspace} with
+\begin{verbatim}
+\renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}}
+\end{verbatim}
+
+The \gls{firstuse} acronym font command
+\begin{definition}[\firstacronymfont]
+\cs{firstacronymfont}\marg{text}
+\end{definition}
+is redefined to use the \gls{firstuse} abbreviation font command
+\ics{glsfirstabbrvfont}. This will be reset if you use
+\cs{RestoreAcronyms}.
+
+The subsequent use acronym font command
+\begin{definition}[\acronymfont]
+\cs{acronymfont}\marg{text}
+\end{definition}
+is redefined to use the subsequent use abbreviation font command
+\ics{glsabbrvfont}. This will be reset if you use
+\cs{RestoreAcronyms}.
+
+\section{\styfmt{glossary-bookindex} package}
+\label{sec:bookindex}
+
+As from v1.21, \styfmt{glossaries-extra} has a new supplementary
+package \sty{glossary-bookindex} which provides the glossary style
+\glostyle{bookindex}. This is very similar to the
+\glostyle{mcolindexgroup} style but is designed for indexes, so by
+default only the name and location list are displayed. You can
+either load this package explicitly and then set the style:
+\begin{verbatim}
+\usepackage{glossaries-extra}
+\usepackage{glossary-bookindex}
+\setglossarystyle{bookindex}
+\end{verbatim}
+or use both the \pkgopt{stylemods} and \sty{style} options:
+\begin{verbatim}
+\usepackage[stylemods=bookindex,style=bookindex]{glossaries-extra}
+\end{verbatim}
+The \glostyle{bookindex} style only supports a maximum
+hierarchical level of 2 (top-level, level~1 and level~2). It's
+primarily designed for use with \gls{bib2gls}. It may be used with
+other indexing options, but some features may not be present and
+UTF-8 characters may cause a problem with non-Unicode engines in
+letter group headings or PDF bookmarks. (\gls{bib2gls} uses numeric
+identifies by default to avoid these problems. If numbers show up in
+the group headings instead of the appropriate characters, check that
+you have used the \pkgopt{record} package option.)
+
+The number of columns is given by
+\begin{definition}[\DescribeMacro\glsxtrbookindexcols]
+\cs{glsxtrbookindexcols}
+\end{definition}
+which defaults to 2.
+
+This style uses the \env{multicols} environment. If
+the command
+\begin{definition}[\DescribeMacro\glsxtrbookindexcolspread]
+\cs{glsxtrbookindexcolspread}
+\end{definition}
+isn't empty then it's supplied as the optional argument
+following \verb|\begin{multicols}|\marg{n}. You can switch from
+\env{multicols} to \env{multicols*} by redefining
+\begin{definition}[\DescribeMacro\glsxtrbookindexmulticolsenv]
+\cs{glsxtrbookindexmulticolsenv}
+\end{definition}
+For example
+\begin{verbatim}
+\renewcommand{\glsxtrbookindexmulticolsenv}{multicols*}
+\end{verbatim}
+
+Each top-level entry is displayed using
+\begin{definition}[\DescribeMacro\glsxtrbookindexname]
+\cs{glsxtrbookindexname}\marg{label}
+\end{definition}
+where the entry is identified by \meta{label}. This just
+does \cs{glossentryname}\marg{label} by default.
+For example, if you want the symbol to be included:
+\begin{verbatim}
+\renewcommand*{\glsxtrbookindexname}[1]{%
+ \glossentryname{#1}%
+ \ifglshassymbol{#1}{\space (\glossentrysymbol{#1})}{}%
+}
+\end{verbatim}
+or if you want the description (if set):
+\begin{verbatim}
+\renewcommand*{\glsxtrbookindexname}[1]{%
+ \glossentryname{#1}%
+ \ifglshasdesc{#1}{\space \glossentrydesc{#1}\glspostdescription}{}%
+}
+\end{verbatim}
+(which picks up the post-description hook).
+
+Alternatively you can use the \cs{glsxtrpostname\meta{category}}
+hook to append information after the name according to the entry's
+category.
+
+Sub-entries are displayed using
+\begin{definition}[\DescribeMacro\glsxtrbookindexsubname]
+\cs{glsxtrbookindexsubname}\marg{label}
+\end{definition}
+which just defaults to \cs{glsxtrbookindexname}\marg{label}.
+
+The separator used before the location list for top-level
+entries is given by
+\begin{definition}[\DescribeMacro\glsxtrbookindexprelocation]
+\cs{glsxtrbookindexprelocation}\marg{label}
+\end{definition}
+where \meta{label} is the entry's label. This checks if
+the \texttt{location} field has been set. If it has, it
+does
+\begin{verbatim}
+,\glsxtrprelocation
+\end{verbatim}
+otherwise it just does \cs{glsxtrprelocation} (which defaults
+to \cs{space}). If you're not using
+\gls{bib2gls}, the \gloskey{location} field won't be set.
+
+The separator used before the
+location list for sub-entries is given by
+\begin{definition}[\DescribeMacro\glsxtrbookindexsubprelocation]
+\cs{glsxtrbookindexsubprelocation}\marg{label}
+\end{definition}
+which defaults to \cs{glsxtrbookindexprelocation}\marg{label}.
+
+The actual location list is encapsulated with:
+\begin{definition}[\DescribeMacro\glsxtrbookindexlocation]
+\cs{glsxtrbookindexlocation}\marg{label}\marg{location list}
+\end{definition}
+for top-level entries and
+\begin{definition}[\DescribeMacro\glsxtrbookindexsublocation]
+\cs{glsxtrbookindexsublocation}\marg{label}\marg{location list}
+\end{definition}
+for sub-entries. These both just do \meta{location list} by default.
+
+The separator used between a top-level parent and child entry is
+given by
+\begin{definition}[\DescribeMacro\glsxtrbookindexparentchildsep]
+\cs{glsxtrbookindexparentchildsep}
+\end{definition}
+This defaults to \cs{nopagebreak}.
+
+The separator used between a sub-level parent and child entry is
+given by
+\begin{definition}[\DescribeMacro\glsxtrbookindexparentsubchildsep]
+\cs{glsxtrbookindexparentsubchildsep}
+\end{definition}
+This defaults to \cs{glsxtrbookindexparentchildsep}.
+
+The separator between top-level entries is given by
+\begin{definition}[\DescribeMacro\glsxtrbookindexbetween]
+\cs{glsxtrbookindexbetween}\marg{label1}\marg{label2}
+\end{definition}
+This comes after the entry given by \meta{label1}, if the entry
+has no children, or after the last descendent otherwise,
+so it always comes immediately before the entry given
+by \meta{label2} unless the entry occurs at the start of
+a group. This does nothing by default.
+
+The separator between two level~1 entries is given by
+\begin{definition}[\DescribeMacro\glsxtrbookindexsubbetween]
+\cs{glsxtrbookindexsubbetween}\marg{label1}\marg{label2}
+\end{definition}
+
+The separator between two level~2 entries is given by
+\begin{definition}[\DescribeMacro\glsxtrbookindexsubsubbetween]
+\cs{glsxtrbookindexsubsubbetween}\marg{label1}\marg{label2}
+\end{definition}
+At the end of each letter group, the following hooks
+are done in order:
+\begin{definition}[\DescribeMacro\glsxtrbookindexsubsubatendgroup]
+\cs{glsxtrbookindexsubsubatendgroup}\marg{sub-sub-label}
+\end{definition}
+\begin{definition}[\DescribeMacro\glsxtrbookindexsubatendgroup]
+\cs{glsxtrbookindexsubatendgroup}\marg{sub-label}
+\end{definition}
+\begin{definition}[\DescribeMacro\glsxtrbookindexatendgroup]
+\cs{glsxtrbookindexatendgroup}\marg{label}
+\end{definition}
+where \meta{sub-sub-label} is the label of the last
+level~2 entry, \meta{sub-label} is the label of the last
+level~1 entry and \meta{label} is the label of the last
+level~0 entry.
+
+For example, the resource option \texttt{seealso=omit}
+instructs \gls{bib2gls} to omit the \texttt{seealso} cross-reference
+from the location list. (The \texttt{see} cross-reference
+will still be added unless you also have \texttt{see=omit}.)
+The \texttt{seealso} cross-reference can instead be appended after
+the child entries using:
+\begin{verbatim}
+\renewcommand{\glsxtrbookindexatendgroup}[1]{%
+ \glsxtrifhasfield{seealso}{#1}{\glstreesubitem\glsxtruseseealso{#1}}{}%
+}
+\renewcommand{\glsxtrbookindexbetween}[2]{%
+ \glsxtrbookindexatendgroup{#1}%
+}%
+
+\renewcommand{\glsxtrbookindexsubatendgroup}[1]{%
+ \glsxtrifhasfield{seealso}{#1}{\glstreesubsubitem\glsxtruseseealso{#1}}{}%
+}
+
+\renewcommand{\glsxtrbookindexsubbetween}[2]{%
+ \glsxtrbookindexsubatendgroup{#1}%
+}
+
+\renewcommand{\glsxtrbookindexsubsubatendgroup}[1]{%
+ \glsxtrifhasfield{seealso}{#1}%
+ {\glstreeitem\hspace*{40pt}\glsxtruseseealso{#1}}{}%
+}
+
+\renewcommand{\glsxtrbookindexsubsubbetween}[2]{%
+ \glsxtrbookindexsubsubatendgroup{#1}%
+}
+\end{verbatim}
+This uses \cs{glstreesubitem} and \cs{glstreesubsubitem}
+to indent the cross-reference according to the next level down,
+so the cross-reference for a top-level entry is aligned with
+the sub-entries, and a level~1 entry has its cross-reference
+aligned with sub-sub-entries. In the event that a level~2
+entry has a cross-reference, this is indented a bit further
+(but it won't be aligned with any deeper level as the
+\glostyle{bookindex} style only supports a maximum of two
+sub-levels).
+
+The \glostyle{bookindex} style uses group headings. (If you
+use \gls{bib2gls} remember to invoke it with the \verb|--group|
+or \verb|-g| switch.) The heading will use
+\begin{definition}[\DescribeMacro\glsxtrbookindexbookmark]
+\cs{glsxtrbookindexbookmark}\marg{group title}\marg{name}
+\end{definition}
+If \cs{pdfbookmark} has been defined, this will
+use that command to bookmark the group title. If
+\pkgopt[chapter]{section} is set (default if chapters are defined)
+then this uses level~1 otherwise it uses level~2. You can
+redefine this command if this isn't appropriate.
+If \cs{pdfbookmark} hasn't been defined, this command does nothin.
+
+The group heading is formatted according to
+\begin{definition}[\DescribeMacro\glsxtrbookindexformatheader]
+\cs{glsxtrbookindexformatheader}\marg{group title}
+\end{definition}
+which is defined as
+\begin{verbatim}
+\newcommand*{\glsxtrbookindexformatheader}[1]{%
+ \par{\centering\glstreegroupheaderfmt{#1}\par}%
+}
+\end{verbatim}
+where \cs{glstreegroupheaderfmt} is provided by the
+\sty{glossary-tree} package, which is automatically loaded.
+Note that the entry names aren't encapsulated with
+\cs{glstreenamefmt}.
+
+The \sty{glossary-bookindex} package provides some supplementary
+commands that aren't used by default, but may be used when
+adjusting the style. These commands should only be
+used within one of the \cs{print\ldots glossary} commands.
+(That is, they should only be used in glossary styles.)
+\begin{definition}[\DescribeMacro\glsxtrbookindexmarkentry]
+\cs{glsxtrbookindexmarkentry}\marg{label}
+\end{definition}
+This writes information to the \texttt{.aux} file that
+can be read on the next run to obtain the first and last entry on
+each page of the glossary.
+
+You can display the first entry
+associated with the current page using:
+\begin{definition}[\DescribeMacro\glsxtrbookindexfirstmark]
+\cs{glsxtrbookindexfirstmark}
+\end{definition}
+and the last entry associated with the current page
+using:
+\begin{definition}[\DescribeMacro\glsxtrbookindexlastmark]
+\cs{glsxtrbookindexlastmark}
+\end{definition}
+These do nothing if there are no entries marked on the current page
+(or if the document build isn't up to date).
+
+The entry is formatted using:
+\begin{definition}[\DescribeMacro\glsxtrbookindexfirstmarkfmt]
+\cs{glsxtrbookindexfirstmarkfmt}\marg{label}
+\end{definition}
+for the first instance and
+\begin{definition}[\DescribeMacro\glsxtrbookindexlastmarkfmt]
+\cs{glsxtrbookindexlastmarkfmt}\marg{label}
+\end{definition}
+for the last.
+
+These commands are designed for use in page headers or footers
+where the page number is stable. For example, \cs{glsxtrbookindexname}
+can be redefined to mark the current entry:
+\begin{verbatim}
+\renewcommand{\glsxtrbookindexname}[1]{%
+ \glsxtrbookindexmarkentry{#1}%
+ \glossentryname{#1}%
+}
+\end{verbatim}
+If you only want to mark the top-level entries, remember
+to redefine \cs{glsxtrbookindexsubname} as it defaults
+to \cs{glsxtrbookindexname}:
+\begin{verbatim}
+\renewcommand{\glsxtrbookindexsubname}[1]{%
+ \glossentryname{#1}%
+}
+\end{verbatim}
+
+Then if you're using \sty{fancyhdr} you can set the page style
+to show the first and last entry for the current page with:
+\begin{verbatim}
+ \pagestyle{fancy}%
+ \lhead{\thepage}%
+ \lfoot{\glsxtrbookindexfirstmark}%
+ \cfoot{}%
+ \rfoot{\glsxtrbookindexlastmark}%
+\end{verbatim}
+
+\section{\styfmt{glossary-longextra} package}
+\label{sec:longextra}
+
+As from version 1.37, the \styfmt{glossaries-extra} package comes
+with the supplementary package \sty{glossary-longextra} that
+provides additional styles, listed below, that use the
+\env{longtable} environment. If you know that your glossary won't
+span more than a page and you need to use it in a context that's
+incompatible with \env{longtable}, you can instead setup these styles
+to use \env{tabular} instead. In order to do this you must use
+\begin{definition}[\DescribeMacro\GlsLongExtraUseTabulartrue]
+\cs{GlsLongExtraUseTabulartrue}
+\end{definition}
+\emph{before the style is set}. For example:
+\begin{verbatim}
+\GlsLongExtraUseTabulartrue
+\setglossarystyle{long-name-desc}
+\end{verbatim}
+or
+\begin{verbatim}
+\GlsLongExtraUseTabulartrue
+\printunsrtglossary[style={long-name-desc}]
+\end{verbatim}
+If you use this setting, you can change the default vertical
+alignment with:
+\begin{definition}[\DescribeMacro\glslongextraTabularVAlign]
+\cs{glslongextraTabularVAlign}
+\end{definition}
+The default definition is \texttt{c}.
+
+The column titles are formatted according to:
+\begin{definition}[\DescribeMacro\glslongextraHeaderFmt]
+\cs{glslongextraHeaderFmt}\marg{text}
+\end{definition}
+which simply does \cs{textbf}\marg{text} by default.
+
+The name column has the title given by \ics{entryname} and
+the column alignment is given by:
+\begin{definition}[\DescribeMacro\glslongextraNameAlign]
+\cs{glslongextraNameAlign}
+\end{definition}
+which expands to \texttt{l} (left) by default.
+
+The symbol column (where applicable) has the title given by
+\ics{symbolname} and the column alignment is given by:
+\begin{definition}[\DescribeMacro\glslongextraSymbolAlign]
+\cs{glslongextraSymbolAlign}
+\end{definition}
+which expands to \texttt{c} (centred) by default.
+
+The location list column (where applicable) has the title given by
+\ics{pagelistname} and the column alignment is given by:
+\begin{definition}[\DescribeMacro\glslongextraLocationAlign]
+\cs{glslongextraLocationAlign}
+\end{definition}
+which expands to
+\begin{verbatim}
+>{\raggedright}p{\glspagelistwidth}
+\end{verbatim}
+by default. (Ragged-right paragraph, \ics{glspagelistwidth} is
+defined in \sty{glossary-long}, which is automatically loaded.)
+
+The description column has the title given by \ics{descriptionname}
+and the column alignment is given by:
+\begin{definition}[\DescribeMacro\glslongextraDescAlign]
+\cs{glslongextraDescAlign}
+\end{definition}
+which expands to
+\begin{verbatim}
+>{\raggedright}p{\glsdescwidth}
+\end{verbatim}
+by default. (Ragged-right paragraph, \ics{glsdescwidth} is
+defined in \sty{glossary-long}, which is automatically loaded.)
+
+Unlike the long styles provided by the base \styfmt{glossaries}
+package, these new styles try to determine the value of
+\cs{glsdescwidth} at the start of the glossary according to the
+number of columns provided by the style. The calculations are
+performed by the following commands:
+\begin{definition}[\DescribeMacro\glslongextraSetDescWidth]
+\cs{glslongextraSetDescWidth}
+\end{definition}
+This is used by the styles that have a name and description
+column. The value of \cs{glsdescwidth} is computed as:
+\[
+ \cs{glsdescwidth} = \cs{linewidth} - 4\cs{tabcolsep} - W
+\]
+where $W$ is a guess at the width of the name column. This is first
+set to the width of the name column header:
+\begin{alltt}
+\cs{settowidth}\marg{width}\{\cs{glslongextraHeaderFmt}\cs{entryname}\}
+\end{alltt}
+If any names in that column are larger than this, then you need
+to specify the widest name using:
+\begin{definition}[\DescribeMacro\glslongextraSetWidest]
+\cs{glslongextraSetWidest}\marg{widest name}
+\end{definition}
+or
+\begin{definition}[\DescribeMacro\glslongextraUpdateWidest]
+\cs{glslongextraUpdateWidest}\marg{text}
+\end{definition}
+These work like the analogous commands \cs{glssetwidest} and
+\cs{glsupdatewidest} provided with the \glostyle{alttree} style, but
+in this case there's no hierarchy. The default widest name
+is obtained from the \glostyle{alttree} top-level name if set,
+otherwise it's empty, so you can use \gls{bib2gls}['s]
+\texttt{set-widest} option. If you have the entry counter enabled,
+you will need to include this with the name for the extra material to
+be taken into account.
+
+The name isn't shown for child entries by default, but if
+you change this and you want to use \gls{bib2gls}['s]
+\texttt{set-widest} option (for \gls{bib2gls} v1.8+) then you need to
+redefine:
+\begin{definition}[\DescribeMacro\glslongextraUpdateWidestChild]
+\cs{glslongextraUpdateWidestChild}\marg{level}\marg{text}
+\end{definition}
+This does nothing by default, but if you are including the child
+names then you need to redefine this command:
+\begin{verbatim}
+\renewcommand{\glslongextraUpdateWidestChild}[2]{%
+ \glslongextraUpdateWidest{#2}%
+}
+\end{verbatim}
+
+If you prefer to set an explicit width for the description
+column then you need to redefine \cs{glslongextraSetDescWidth}. For
+example:
+\begin{verbatim}
+\renewcommand{\glslongextraSetDescWidth}{%
+ \setlength{\glsdescwidth}{0.6\linewidth}%
+}
+\end{verbatim}
+
+The styles that have a name, symbol and description,
+\cs{glsdescwidth} is set with:
+\begin{definition}[\DescribeMacro\glslongextraSymSetDescWidth]
+\cs{glslongextraSymSetDescWidth}
+\end{definition}
+This first uses \cs{glslongextraSetDescWidth} and then subtracts
+2\cs{tabcolsep} and the width of the symbol column header from
+\cs{glsdescwidth}. This assumes that the symbol column header
+is larger than any of the symbols. If this isn't appropriate
+then you can redefine this command. For example:
+\begin{verbatim}
+\renewcommand{\glslongextraSymSetDescWidth}{%
+ \glslongextraSetDescWidth
+ \addtolength{\glsdescwidth}{-3cm}%
+}
+\end{verbatim}
+or
+\begin{verbatim}
+\renewcommand{\glslongextraSymSetDescWidth}{%
+ \setlength{\glsdescwidth}{.5\linewidth}%
+}
+\end{verbatim}
+
+For the styles that have a name, description and location column,
+\cs{glsdescwidth} is set using:
+\begin{definition}[\DescribeMacro\glslongextraLocSetDescWidth]
+\cs{glslongextraLocSetDescWidth}
+\end{definition}
+This uses \cs{glslongextraSetDescWidth} and then subtracts
+2\cs{tabcolsep} and \cs{glspagelistwidth} from \cs{glsdescwidth}.
+You can redefine this command to set both \cs{glsdescwidth} and
+\cs{glspagelistwidth} if appropriate.
+
+For the styles that have a name, description, symbol and location
+column, \cs{glsdescwidth} is set using:
+\begin{definition}[\DescribeMacro\glslongextraSymLocSetDescWidth]
+\cs{glslongextraSymLocSetDescWidth}
+\end{definition}
+This uses \cs{glslongextraSymSetDescWidth} and then subtracts
+2\cs{tabcolsep} and \cs{glspagelistwidth} from
+\cs{glsdescwidth}. Again, you can redefine this command
+to explicitly set both lengths.
+
+In all cases, the top-level name is formatted according to:
+\begin{definition}[\DescribeMacro\glslongextraNameFmt]
+\cs{glslongextraNameFmt}\marg{label}
+\end{definition}
+This does
+\begin{alltt}
+\cs{glsentryitem}\marg{label}\cs{glstarget}\marg{label}\{\cs{glossentryname}\marg{label}\}
+\end{alltt}
+which includes the entry counter (if enabled), the target and the post-name link.
+
+The top-level description is formatted according to:
+\begin{definition}[\DescribeMacro\glslongextraDescFmt]
+\cs{glslongextraDescFmt}\marg{label}
+\end{definition}
+This does \cs{glossentrydesc}\marg{label} followed by the
+post-description hook.
+
+The styles that have a symbol column format the symbol using:
+\begin{definition}[\DescribeMacro\glslongextraSymbolFmt]
+\cs{glslongextraSymbolFmt}\marg{label}
+\end{definition}
+This just does \cs{glossentrysymbol}\marg{label}.
+
+The styles that have a location list column format the list using:
+\begin{definition}[\DescribeMacro\glslongextraLocationFmt]
+\cs{glslongextraLocationFmt}\marg{label}\marg{locations}
+\end{definition}
+This just does \meta{locations} and ignores the label.
+
+The child entries have their name formatted according to:
+\begin{definition}[\DescribeMacro\glslongextraSubNameFmt]
+\cs{glslongextraSubNameFmt}\marg{level}\marg{label}
+\end{definition}
+where \meta{level} is the hierarchical level. This defaults to:
+\begin{alltt}
+\cs{glssubentryitem}\marg{label}\cs{glstarget}\marg{label}\{\cs{strut}\}
+\end{alltt}
+This includes the sub-entry counter (if enabled) and the target
+but doesn't show the name. The child description is formatted according to:
+\begin{definition}[\DescribeMacro\glslongextraSubDescFmt]
+\cs{glslongextraSubDescFmt}\marg{level}\marg{label}
+\end{definition}
+which defaults to just \cs{glslongextraDescFmt}\marg{label}
+
+The child symbol is formatted (where appropriate) according to:
+\begin{definition}[\DescribeMacro\glslongextraSubSymbolFmt]
+\cs{glslongextraSubSymbolFmt}\marg{level}\marg{label}
+\end{definition}
+This just does \cs{glslongextraSymbolFmt}\marg{label} by default.
+
+The styles that have a location list column format the list for
+child entries using:
+\begin{definition}[\DescribeMacro\glslongextraLocationFmt]
+\cs{glslongextraSubLocationFmt}\meta{level}\marg{label}\marg{locations}
+\end{definition}
+This just does \meta{locations} and ignores the level and label.
+
+The letter group headings are formatted according to:
+\begin{definition}[\DescribeMacro\glslongextraGroupHeading]
+\cs{glslongextraGroupHeading}\marg{n}\marg{label}
+\end{definition}
+which does nothing by default. The first argument \meta{n} is the
+number of columns in the table. The second argument \meta{label}
+is the group label (not the title, although they may happen
+to be the same).
+
+This can be redefined to show the group heading. For example:
+\begin{verbatim}
+\renewcommand*{\glslongextraGroupHeading}[2]{%
+ \glsxtrgetgrouptitle{#2}{\thisgrptitle}%
+ \glslongextraHeaderFmt{\thisgrptitle}%
+ \tabularnewline
+ \noalign{\vskip\normalbaselineskip}%
+}
+\end{verbatim}
+This ignores the first argument and just puts the group
+title in the first column formatted according to
+\cs{glslongextraHeaderFmt} (to match the column header).
+
+Remember that you can also adjust the styles through category
+attributes. The name column's title is given by
+\cs{entryname}, the description column's title is given by
+\cs{descriptionname} and (where present) the symbol column's
+title is given by \cs{symbolname}, as for the other long styles
+that have headers.
+
+\begin{description}
+\item{\glostyle{long-name-desc}} This is like the
+\glostyle{longragged-booktabs} style but doesn't show the location
+list (regardless of the \pkgopt{nonumberlist} option). The name is
+shown in the first column and the description in the second.
+
+The symbol is not displayed. The header
+row is produced with:
+\begin{definition}[\DescribeMacro\glslongextraNameDescHeader]
+\cs{glslongextraNameDescHeader}
+\end{definition}
+This essentially uses the same code as for \glostyle{longragged-booktabs}
+but makes it easier to adjust the header without having to define a
+new style. This is defined as:
+\begin{verbatim}
+\glslongextraNameDescTabularHeader\endhead
+\glslongextraNameDescTabularFooter\endfoot
+\end{verbatim}
+where:
+\begin{definition}[\DescribeMacro\glslongextraNameDescTabularHeader]
+\cs{glslongextraNameDescTabularHeader}
+\end{definition}
+sets up the header and
+\begin{definition}[\DescribeMacro\glslongextraNameDescTabularFooter]
+\cs{glslongextraNameDescTabularFooter}
+\end{definition}
+sets up the footer. If you have setup the \env{tabular} version
+of this style then the above two commands are used at the
+start and end of the \env{tabular} environment (and
+\cs{glslongextraNameDescHeader} isn't used).
+
+For example, to simply remove the header and footer (for the default
+\env{longtable} version of the style):
+\begin{verbatim}
+\renewcommand{\glslongextraNameDescHeader}{}
+\end{verbatim}
+Or to change the name alignment to centred:
+\begin{verbatim}
+\renewcommand{\glslongextraNameAlign}{c}
+\end{verbatim}
+
+\item{\glostyle{long-name-desc-loc}} This is like the
+\glostyle{long-name-desc} style but has a third column for the
+location list. The \env{longtable} header is given by:
+\begin{definition}[\DescribeMacro\glslongextraNameDescLocationHeader]
+\cs{glslongextraNameDescLocationHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraNameDescLocationTabularHeader]
+\cs{glslongextraNameDescLocationTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraNameDescLocationTabularFooter]
+\cs{glslongextraNameDescLocationTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-desc-name}} This is like the
+\glostyle{long-name-desc} style but swaps the columns. Note that
+if the entry counter is displayed it will appear at the start
+of the second column by default. The \env{longtable} header is formatted according
+to:
+\begin{definition}[\DescribeMacro\glslongextraDescNameHeader]
+\cs{glslongextraDescNameHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraDescNameTabularHeader]
+\cs{glslongextraDescNameTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraDescNameTabularFooter]
+\cs{glslongextraDescNameTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-loc-desc-name}} This has three columns
+containing the location list, description and name. The
+\env{longtable} header
+is formatted according to:
+\begin{definition}[\DescribeMacro\glslongextraLocationDescNameHeader]
+\cs{glslongextraLocationDescNameHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraLocationDescNameTabularHeader]
+\cs{glslongextraLocationDescNameTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraLocationDescNameTabularFooter]
+\cs{glslongextraLocationDescNameTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-name-desc-sym}} This is has three columns, with
+the name in the first, the description in the second and the symbol
+in the third.
+
+The \env{longtable} header row is produced with:
+\begin{definition}[\DescribeMacro\glslongextraNameDescSymHeader]
+\cs{glslongextraNameDescSymHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraNameDescSymTabularHeader]
+\cs{glslongextraNameDescSymTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraNameDescSymTabularFooter]
+\cs{glslongextraNameDescSymTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-name-desc-sym-loc}} This is has four columns, with
+the name in the first, the description in the second, the symbol
+in the third and the location list in the fourth.
+
+The \env{longtable} header row is produced with:
+\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationHeader]
+\cs{glslongextraNameDescSymLocationHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationTabularHeader]
+\cs{glslongextraNameDescSymLocationTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraNameDescSymLocationTabularFooter]
+\cs{glslongextraNameDescSymLocationTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-name-sym-desc}} This is like the
+\glostyle{long-name-desc-sym} but the second and third column are
+swapped. The \env{longtable} header row is given by:
+\begin{definition}[\DescribeMacro\glslongextraNameSymDescHeader]
+\cs{glslongextraNameSymDescHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraNameSymDescTabularHeader]
+\cs{glslongextraNameSymDescTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraNameSymDescTabularFooter]
+\cs{glslongextraNameSymDescTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-name-sym-desc-loc}} This is like the
+\glostyle{long-name-desc-sym-loc} but the second and third column are
+swapped. The \env{longtable} header row is given by:
+\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationHeader]
+\cs{glslongextraNameSymDescLocationHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationTabularHeader]
+\cs{glslongextraNameSymDescLocationTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraNameSymDescLocationTabularFooter]
+\cs{glslongextraNameSymDescLocationTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-sym-desc-name}} This has the symbol in the
+first column, the description in the second and the name in the
+third. The \env{longtable} header row is given by:
+\begin{definition}[\DescribeMacro\glslongextraSymDescNameHeader]
+\cs{glslongextraSymDescNameHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraSymDescNameTabularHeader]
+\cs{glslongextraSymDescNameTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraSymDescNameTabularFooter]
+\cs{glslongextraSymDescNameTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-loc-sym-desc-name}} This has the location list
+in the first column, symbol in the
+second column, the description in the third and the name in the
+fourth. The \env{longtable} header row is given by:
+\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameHeader]
+\cs{glslongextraLocationSymDescNameHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameTabularHeader]
+\cs{glslongextraLocationSymDescNameTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraLocationSymDescNameTabularFooter]
+\cs{glslongextraLocationSymDescNameTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-desc-sym-name}} This has the description in the
+first column, the symbol in the second and the name in the
+third. The \env{longtable} header row is given by:
+\begin{definition}[\DescribeMacro\glslongextraDescSymNameHeader]
+\cs{glslongextraDescSymNameHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraDescSymNameTabularHeader]
+\cs{glslongextraDescSymNameTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraDescSymNameTabularFooter]
+\cs{glslongextraDescSymNameTabularFooter}
+\end{definition}
+
+\item{\glostyle{long-loc-desc-sym-name}} This has the location list
+in the first column, the description in the
+second column, the symbol in the third and the name in the
+fourth. The \env{longtable} header row is given by:
+\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameHeader]
+\cs{glslongextraLocationDescSymNameHeader}
+\end{definition}
+which similarly defined in terms of the commands used for the
+\env{tabular} version:
+\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameTabularHeader]
+\cs{glslongextraLocationDescSymNameTabularHeader}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\glslongextraLocationDescSymNameTabularFooter]
+\cs{glslongextraLocationDescSymNameTabularFooter}
+\end{definition}
+
+\end{description}
+
+\section{\styfmt{glossary-topic} package}
+\label{sec:topic}
+
+As from version 1.40, the \styfmt{glossaries-extra} package comes
+with the supplementary package \sty{glossary-topic} that
+provides glossary styles designed for hierarchical glossaries
+where the top-level entries are topic titles. This package
+automatically loads the \sty{multicols} package. If the
+\sty{glossary-tree} package is also loaded then commands like
+\cs{glssetwidest} can be used on these styles in much the same way
+as for the \glostyle{alttree} style. If a widest value isn't set
+then these styles behave more like the \glostyle{tree} style.
+\begin{description}
+\item[\glostyle{topic}] This style is similar to the \glostyle{tree}
+style but the indentation doesn't start until the second
+sub-item level. The top-level entries have the name displayed
+in a larger font with the description following in a new paragraph.
+This style doesn't support the \pkgopt{nogroupskip} setting.
+
+\item[\glostyle{topicmcols}] This style is like the \glostyle{topic}
+style but the sub-entries are placed inside a \env{multicols}
+environment. The environment name is supplied in the value of
+the command:
+\begin{definition}[\DescribeMacro\glstopicColsEnv]
+\cs{glstopicColsEnv}
+\end{definition}
+You can change this to the starred form. For example:
+\begin{verbatim}
+\renewcommand{\glstopicColsEnv}{multicols*}
+\end{verbatim}
+The number of columns is given by the command:
+\begin{definition}[\DescribeMacro\glstopicCols]
+\cs{glstopicCols}
+\end{definition}
+The default value is 2.
+\end{description}
+Both styles use the following commands.
+\begin{definition}[\DescribeMacro\glstopicParIndent]
+\cs{glstopicParIndent}
+\end{definition}
+This command is a length that's used for the paragraph indentation
+in any multi-paragraph description for top-level entries, but not
+for the first paragraph (at the start of the description) which
+isn't indented.
+
+\begin{definition}[\DescribeMacro\glstopicSubIndent]
+\cs{glstopicSubIndent}
+\end{definition}
+This command is a length that's used to calculate the hanging
+indentation for sub-entries. The level~1 sub-entries don't indent
+the name. Level~$n$ sub-entries have the name indented by
+$(n-1)\times$\cs{glstopicSubIndent}. The hanging indent depends
+on whether or not a widest name has been set for the level.
+
+\begin{definition}[\DescribeMacro\glstopicInit]
+\cs{glstopicInit}
+\end{definition}
+Hook used at the start of the glossary. Does nothing by default.
+
+Although the styles don't support letter groups by default, if you
+have many topics (top-level entries) and you feel that it would help
+the reader to divide them up into headed letter groups, you can
+redefine:
+\begin{definition}[\DescribeMacro\glstopicGroupHeading]
+\cs{glstopicGroupHeading}\marg{group label}
+\end{definition}
+This does nothing by default. If you want to redefine it, you can
+fetch the title corresponding to the group label with
+\cs{glsxtrgetgrouptitle}. For example:
+\begin{verbatim}
+\renewcommand*{\glstopicGroupHeading}[1]{%
+ \glsxtrgetgrouptitle{#1}{\thisgrptitle}%
+ \section*{\thisgrptitle}%
+}
+\end{verbatim}
+Remember that if you use \gls{bib2gls}, you will need the
+\verb|--group| (or \verb|-g|) switch to support this.
+
+\begin{definition}[\DescribeMacro\glstopicItem]
+\cs{glstopicItem}\marg{label}\marg{location list}
+\end{definition}
+Used to format the name, symbol, description and location list
+for the top-level entries. This starts with a paragraph break
+followed by:
+\begin{definition}[\DescribeMacro\glstopicPreSkip]
+\cs{glstopicPreSkip}
+\end{definition}
+which defaults to \cs{medskip}. There is then a hook:
+\begin{definition}[\DescribeMacro\glstopicMarker]
+\cs{glstopicMarker}\marg{label}
+\end{definition}
+which does nothing by default, but may be redefined. For example,
+to add a line to the table of contents.
+The name and symbol are set in the
+form of a title using:
+\begin{definition}[\DescribeMacro\glstopicTitle]
+\cs{glstopicTitle}\marg{label}
+\end{definition}
+This uses \cs{Glossentryname} which converts the first letter to
+upper case. If there's a symbol, this is added in parentheses.
+Both name and symbol (if present) are encapsulated by
+\begin{definition}[\DescribeMacro\glstopicTitleFont]
+\cs{glstopicTitleFont}\marg{text}
+\end{definition}
+This uses a bold, large font by default.
+
+If the entry has the description key set (tested with
+\cs{ifglshasdesc}) then a paragraph break is inserted followed by:
+\begin{definition}[\DescribeMacro\glstopicMidSkip]
+\cs{glstopicMidSkip}
+\end{definition}
+which defaults to \cs{smallskip}. This is followed by the
+description which is formatted according to:
+\begin{definition}[\DescribeMacro\glstopicDesc]
+\cs{glstopicDesc}\marg{label}
+\end{definition}
+This just does \cs{Glossentrydesc}\marg{label} followed
+by the post-description hook.
+
+A paragraph break followed by:
+\begin{definition}[\DescribeMacro\glstopicPostSkip]
+\cs{glstopicPostSkip}
+\end{definition}
+comes next regardless of whether or not the description was
+displayed. This defaults to \cs{smallskip}. This is then followed
+by:
+\begin{definition}[\DescribeMacro\glstopicLoc]
+\cs{glstopicLoc}\marg{label}\marg{location list}
+\end{definition}
+which may be used to display the location list, but does nothing by
+default.
+
+The sub-entries first set up the paragraph and hanging indentations
+using:
+\begin{definition}[\DescribeMacro\glstopicAssignSubIndent]
+\cs{glstopicAssignSubIndent}\marg{level}
+\end{definition}
+This uses:
+\begin{definition}[\DescribeMacro\glstopicAssignWidest]
+\cs{glstopicAssignWidest}\marg{level}
+\end{definition}
+to determine if a widest name has been set for the given level.
+
+The sub-entry has its information displayed using:
+\begin{definition}[\DescribeMacro\glstopicSubItem]
+\cs{glstopicSubItem}\marg{level}\marg{label}\marg{location}
+\end{definition}
+This encapsulates the name with:
+\begin{definition}[\DescribeMacro\glstopicSubNameFont]
+\cs{glstopicSubNameFont}\marg{text}
+\end{definition}
+By default this just uses \cs{textbf}. This is followed by:
+\begin{definition}[\DescribeMacro\glstopicSubItemSep]
+\cs{glstopicSubItemSep}
+\end{definition}
+which defaults to \cs{quad}. The name and separator are
+passed in the \meta{text} argument of:
+\begin{definition}[\DescribeMacro\glstopicSubItemBox]
+\cs{glstopicSubItemBox}\marg{level}\marg{text}
+\end{definition}
+If a widest name was set for the given level, this will
+put \meta{text} inside a box of that width otherwise it just does
+\meta{text}.
+
+This is followed by the symbol in parentheses if set. Then, if the
+description is set, the description and post-description hook are
+displayed followed by:
+\begin{definition}[\DescribeMacro\glstopicSubPreLocSep]
+\cs{glstopicSubPreLocSep}
+\end{definition}
+(This command isn't used if the description isn't set.)
+
+Finally the location list is displayed using:
+\begin{definition}[\DescribeMacro\glstopicSubLoc]
+\cs{glstopicSubLoc}\marg{label}\marg{location}
+\end{definition}
+which just does \meta{location} by default.
+
+\section{Glossary Style Modifications}
+\label{sec:glosstylemods}
+
+The \sty{glossaries-extra-stylemods} package (more conveniently
+loaded through the \styfmt{glossaries-extra}
+\pkgopt{stylemods} option) modifies some of the predefined
+styles that are provided with the \styfmt{glossaries} package.
+These modifications are described in more detail in
+\sectionref{sec:stylemods}.
+
+The \sty{glossaries} package tries to determine the group
+title from its label by first checking if
+\cs{}\meta{label}\texttt{groupname} exists. If it doesn't exist,
+then the title is assumed to be the same as the label.
+For example, when typesetting the \qt{A} letter group,
+\sty{glossaries} first checks if \cs{Agroupname} exists.
+This could potentially cause conflict with another package
+that may have some other meaning for \cs{Agroupname}, so
+\sty{glossaries-extra} first checks for the existence
+of the internal command \cs{glsxtr@grouptitle@}\meta{label}
+which shouldn't clash with another package. You can set the
+group title using
+\begin{definition}[\DescribeMacro\glsxtrsetgrouptitle]
+\cs{glsxtrsetgrouptitle}\marg{label}\marg{title}
+\end{definition}
+For example:
+\begin{verbatim}
+\glsxtrsetgrouptitle{A}{A (a)}
+\end{verbatim}
+This uses a global assignment. If you need to scope the change
+you can use
+\begin{definition}[\DescribeMacro\glsxtrlocalsetgrouptitle]
+\cs{glsxtrlocalsetgrouptitle}\marg{label}\marg{title}
+\end{definition}
+
+\subsection{Style Hooks}
+\label{sec:stylehooks}
+
+The commands \ics{glossentryname} and \ics{glossentrydesc} are
+modified to take into account the \catattr{glossname},
+\catattr{glossdesc} and \catattr{glossdescfont} attributes (see \sectionref{sec:categories}).
+This means you can make simple case-changing modifications to
+the name and description without defining a new glossary style.
+
+If you want to adapt a style to use another field instead
+of \gloskey{name}, you can use
+\begin{definition}[\DescribeMacro\glossentrynameother]
+\cs{glossentrynameother}\marg{label}\marg{field}
+\end{definition}
+This behaves just like \cs{glossentryname} (that is, it obeys
+\catattr{glossname}, \catattr{glossnamefont} or \cs{glsnamefont} and uses the post-name
+hook) but it uses the given \meta{field} instead of \gloskey{name}.
+The \meta{field} argument must be the internal field name
+(for example \texttt{desc} rather than \texttt{description}).
+See the key to field mappings table in the \styfmt{glossaries}
+user manual.
+
+There is a hook after \ics{glossentryname} and
+\ics{Glossentryname}:
+\begin{definition}[\DescribeMacro\glsxtrpostnamehook]
+\cs{glsxtrpostnamehook}\marg{label}
+\end{definition}
+By default this checks the \catattr{indexname} attribute.
+If the attribute exists for the category to which the label belongs,
+then the name is automatically indexed using
+\begin{definition}
+\ics{glsxtrdoautoindexname}\marg{label}\texttt{\{indexname\}}
+\end{definition}
+See \sectionref{sec:autoindex} for further details.
+
+\begin{sloppypar}
+As from version 1.04, the post-name hook \cs{glsxtrpostnamehook}
+will also use \cs{glsxtrpostname}\meta{category} if it exists.
+You can use \ics{glscurrententrylabel} to obtain the entry label
+with the definition of this command. For example, suppose you are
+using a glossary style the doesn't display the symbol, you can
+insert the symbol after the name for a particular category, say,
+the \qt{symbol} category:
+\end{sloppypar}
+\begin{verbatim}
+\newcommand*{\glsxtrpostnamesymbol}{\space
+ (\glsentrysymbol{\glscurrententrylabel})}
+\end{verbatim}
+For convenience, as from v1.31, you can use
+\begin{definition}[\DescribeMacro\glsdefpostname]
+\cs{glsdefpostname}\marg{category}\marg{definition}
+\end{definition}
+This is simply a shortcut for:
+\begin{alltt}
+\cs{csdef}\{glsxtrpostname\meta{category}\}\marg{definition}
+\end{alltt}
+Note that it doesn't check if the command has already been defined.
+
+As from version 1.25, the post-name hook also does
+\begin{definition}[\DescribeMacro\glsextrapostnamehook]
+\cs{glsextrapostnamehook}\marg{label}
+\end{definition}
+(before \cs{glsxtrpostname}\meta{category})
+to allow for additional non-category related code. This does nothing
+by default.
+
+The post-description code used within the glossary is modified so
+that it also does
+\begin{definition}[\DescribeMacro\glsxtrpostdescription]
+\cs{glsxtrpostdescription}
+\end{definition}
+This occurs before the original \cs{glspostdescription}, so if the
+\pkgopt[false]{nopostdot} option is used, it will be inserted before
+the terminating full stop.
+
+This new command will do \cs{glsxtrpostdesc\meta{category}}
+if it exists, where \meta{category} is the category label associated
+with the current entry. For example \cs{glsxtrpostdescgeneral}
+for entries with the category set to \category{general}
+or \cs{glsxtrpostdescacronym} for entries with the category set to
+\category{acronym}.
+For convenience, as from v1.31, you can use
+\begin{definition}[\DescribeMacro\glsdefpostdesc]
+\cs{glsdefpostdesc}\marg{category}\marg{definition}
+\end{definition}
+This is simply a shortcut for:
+\begin{alltt}
+\cs{csdef}\{glsxtrpostdesc\meta{category}\}\marg{definition}
+\end{alltt}
+Note that it doesn't check if the command has already been defined.
+
+Since both \cs{glossentry} and \cs{subglossentry} set
+\begin{definition}[\DescribeMacro\glscurrententrylabel]
+\cs{glscurrententrylabel}
+\end{definition}
+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
+\category{general} category, then you could do:
+\begin{verbatim}
+\renewcommand{\glsxtrpostdescgeneral}{\space
+ (plural: \glsentryplural{\glscurrententrylabel})}
+\end{verbatim}
+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.)
+
+\begin{important}
+This feature can't be used for glossary styles that ignore
+\cs{glspostdescription} or if you redefine
+\cs{glspostdescription} without including \cs{glsxtrpostdescription}.
+(For example, if you redefine \cs{glspostdescription} to do
+nothing instead of using the \pkgopt{nopostdot} option to suppress
+the terminating full stop.) See \sectionref{sec:stylemods} to patch
+the predefined styles provided by \styfmt{glossaries} that are missing
+\cs{glspostdescription}.
+\end{important}
+
+\subsection{Number List}
+\label{sec:glosstylenumlist}
+
+The \gls{numberlist} is now placed inside the argument of
+\begin{definition}[\DescribeMacro\GlsXtrFormatLocationList]
+\cs{GlsXtrFormatLocationList}\marg{number list}
+\end{definition}
+This is internally used by \cs{glossaryentrynumbers}. The
+\pkgopt{nonumberlist} option redefines \cs{glossaryentrynumbers} so that it
+doesn't display the \gls{numberlist}, but it still saves the
+\gls{numberlist} in case it's required.
+
+\begin{important}
+If you want to suppress the \gls{numberlist} always use the
+\pkgopt{nonumberlist} option instead of redefining
+\cs{glossaryentrynumbers} to do nothing.
+\end{important}
+
+If you want to, for example, change the font for the entire
+\gls{numberlist} then redefine \cs{GlsXtrFormatLocationList} as
+appropriate. Don't modify \cs{glossaryentrynumbers}.
+
+Sometimes users like to insert \qt{page} or \qt{pages} in front of
+the \gls{numberlist}. This is quite fiddly to do with the base
+\styfmt{glossaries} package, but \styfmt{glossaries-extra}
+provides a way of doing this. First you need to enable this
+option and specify the text to display using:
+\begin{definition}[\DescribeMacro\GlsXtrEnablePreLocationTag]
+\cs{GlsXtrEnablePreLocationTag}\marg{page}\marg{pages}
+\end{definition}
+where \meta{page} is the text to display if the \gls{numberlist} only
+contains a single location and \meta{pages} is the text to display
+otherwise. For example:
+\begin{verbatim}
+\GlsXtrEnablePreLocationTag{Page: }{Pages: }
+\end{verbatim}
+An extra run is required when using this command.
+
+\begin{important}
+Use \texttt{glsignore} not \texttt{@gobble} as the format if you
+want to suppress the page number (and only index the entry once).
+\end{important}
+
+See the accompanying sample file \texttt{sample-pages.tex}.
+
+Note that \gls{bib2gls} can be instructed to insert
+a prefix at the start of non-empty location lists, which
+can be used as an alternative to \cs{GlsXtrEnablePreLocationTag}.
+
+\subsection{The \styfmt{glossaries-extra-stylemods} Package}
+\label{sec:stylemods}
+
+As from v1.02, \styfmt{glossaries-extra} now includes the package
+\sty{glossaries-extra-stylemods} that will redefine the predefined
+styles to include the post-description hook (for those that are
+missing it). You will need to make sure the styles have already
+been defined before loading \styfmt{glossaries-extra}. For example:
+\begin{verbatim}
+\usepackage{glossaries-extra}
+\usepackage{glossary-longragged}
+\usepackage{glossaries-extra-stylemods}
+\end{verbatim}
+Alternatively you can load
+\texttt{glossary-}\meta{name}\texttt{.sty} at the same time by
+passing \meta{name} as a package option to
+\sty{glossaries-extra-stylemods}. For example:
+\begin{verbatim}
+\usepackage{glossaries-extra}
+\usepackage[longragged]{glossaries-extra-stylemods}
+\end{verbatim}
+Another option is to use the \pkgopt{stylemods} key when you
+load \styfmt{glossaries-extra}. You can omit a value if you only want to use
+the predefined styles that are automatically loaded by
+\styfmt{glossaries} (for example, the \glostyle{long3col} style):
+\begin{verbatim}
+\usepackage[style=long3col,stylemods]{glossaries-extra}
+\end{verbatim}
+Or the value of \pkgopt{stylemods} may be a comma-separated list
+of the style package identifiers. For example:
+\begin{verbatim}
+\usepackage[style=mcoltree,stylemods=mcols]{glossaries-extra}
+\end{verbatim}
+Remember to group the value if it contains any commas:
+\begin{verbatim}
+\usepackage[stylemods={mcols,longbooktabs}]{glossaries-extra}
+\end{verbatim}
+
+Note that the \glostyle{inline} style is dealt with slightly
+differently. The original definition provided by the
+\sty{glossary-inline} package uses \cs{glspostdescription} at the
+end of the glossary (not after each entry description) within the
+definition of \cs{glspostinline}. The style modification changes
+this so that \cs{glspostinline} just does a full stop followed by
+space factor adjustment, and the description
+\cs{glsinlinedescformat} and sub-entry description formats
+\cs{glsinlinesubdescformat} are redefined to include
+\cs{glsxtrpostdescription} (not \cs{glspostdescription}). This means
+that the modified \glostyle{inline} style isn't affected by the
+\pkgopt{nopostdot} option, but the post-description category hook
+can still be used.
+
+The \env{tabular}-like styles, such as \glostyle{long} are
+adjusted so that the \ics{ifglsnogroupskip} conditional (set with
+\pkgopt{nogroupskip}) is moved outside of the definition of
+\cs{glsgroupskip} to avoid problems that cause an \qt{Incomplete
+\cs{iftrue}} error with \cs{printunsrtglossary} and
+\cs{printnoidxglossary}. This means that if you want to change this
+conditional using \cs{setupglossaries} or using the
+\gloskey[printglossary]{nogroupskip} option in \cs{printglossary},
+\cs{printnoidxglossary} or \cs{printunsrtglossary}, you must also
+reset the glossary style.
+
+As from version 1.21, the hard-coded \cs{space} before the
+\gls{numberlist} in many of the predefined styles is replaced
+with
+\begin{definition}[\DescribeMacro\glsxtrprelocation]
+\cs{glsxtrprelocation}
+\end{definition}
+This just defaults to \cs{space} but may be redefined as required.
+For example:
+\begin{verbatim}
+\renewcommand{\glsxtrprelocation}{\dotfill}
+\end{verbatim}
+
+The \glostyle{list} styles use
+\begin{definition}[\DescribeMacro\glslistprelocation]
+\cs{glslistprelocation}
+\end{definition}
+(which defaults to \cs{glsxtrprelocation}) for top-level items and
+\begin{definition}[\DescribeMacro\glslistchildprelocation]
+\cs{glslistchildprelocation}
+\end{definition}
+(which defaults to \cs{glslistprelocation}) for child items.
+
+As from v1.31, the description (including the post-description hook)
+is governed by:
+\begin{definition}[\DescribeMacro\glslistdesc]
+\cs{glslistdesc}\marg{label}
+\end{definition}
+for the \glostyle{list} and \glostyle{altlist} styles (but not the
+\glostyle{listdotted} variations).
+
+For just the \glostyle{list} style and its letter group variations
+(not the \glostyle{altlist} or \glostyle{listdotted} variations) the
+\gls{numberlist} for child entries is followed by
+\begin{definition}[\DescribeMacro\glslistchildpostlocation]
+\cs{glslistchildpostlocation}
+\end{definition}
+which defaults to a full stop.
+
+The default value of \ics{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
+\cs{hsize} isn't set until the start of the document.
+
+The separator between groups (if not \pkgopt{nogroupskip}) is now
+given by:
+\begin{definition}[\DescribeMacro\glslistgroupskip]
+\cs{glslistgroupskip}
+\end{definition}
+This defaults to \cs{indexspace} with penalties to deter page
+breaks.
+This command isn't used if \pkgopt{nogroupskip} is set.
+
+The \sty{glossary-tree} package introduced two new commands in
+\sty{glossaries} version 4.22, \ics{glstreegroupheaderfmt}
+and \ics{glstreenavigationfmt}, which are used to format
+the letter group headings and the navigation elements for the
+appropriate styles. These two new commands are defined in terms of
+\ics{glstreenamefmt} since that was the command originally used
+for the group headings and navigation. This now allows these
+different elements to be defined independently, but the most common
+redefinition is for \cs{glstreenamefmt} to remove the bold in the
+name. If the bold is still required for the group heading and navigation
+elements, then both other commands also need redefining. To simplify
+matters, if \cs{glstreenamefmt} has been defined, as from v1.31
+\sty{glossaries-extra-stylemods} defines:
+\begin{definition}[\DescribeMacro\glstreedefaultnamefmt]
+\cs{glstreedefaultnamefmt}\marg{text}
+\end{definition}
+which simply does \cs{textbf}\marg{text} and redefines
+\cs{glstreenamefmt}, \cs{glstreegroupheaderfmt} and
+\cs{glstreenavigationfmt} all in terms of
+\cs{glstreedefaultnamefmt}. This means that if you want to change
+all three to use a particular style you only need to redefine
+\cs{glstreedefaultnamefmt}, but if you only want to redefine
+\cs{glstreenamefmt} without affecting the other two commands, then
+you now can.
+
+The separator between groups (if not \pkgopt{nogroupskip}) is now
+given by:
+\begin{definition}[\DescribeMacro\glstreegroupskip]
+\cs{glstreegroupskip}
+\end{definition}
+This defaults to \cs{indexspace} with penalties to deter page
+breaks.
+This command isn't used if \pkgopt{nogroupskip} is set (except for
+the styles that display the group titles).
+
+The styles that display the group titles now use:
+\begin{definition}[\DescribeMacro\glstreePreHeader]
+\cs{glstreePreHeader}\marg{label}\marg{title}
+\end{definition}
+where \meta{label} is the group label and \meta{title} is the group
+title. This does nothing by default
+and is inserted before the group title. You can redefine it to add
+the group title to the PDF bookmarks. For example, if the
+glossary title uses \cs{chapter} then:
+\begin{verbatim}
+\renewcommand{\glstreePreHeader}[2]{%
+ \pdfbookmark[1]{#2}{\currentglossary.#1}%
+}
+\end{verbatim}
+will insert section-level bookmarks. The use of \cs{currentglossary}
+helps to provide unique bookmark labels in the event of multiple
+glossaries.
+
+The \glostyle{index}-like and \glostyle{tree}-like styles
+insert the pre-\gls{numberlist} space with
+\begin{definition}[\DescribeMacro\glstreeprelocation]
+\cs{glstreeprelocation}
+\end{definition}
+(which defaults to \cs{glsxtrprelocation}) for top-level items and
+\begin{definition}[\DescribeMacro\glstreechildprelocation]
+\cs{glstreechildprelocation}
+\end{definition}
+(which defaults to \cs{glstreeprelocation}) for child items.
+
+As from version 1.31, the \styfmt{glossaries-extra-stylemods}
+package also provides:
+\begin{definition}[\DescribeMacro\glstreenonamedesc]
+\cs{glstreenonamedesc}\marg{label}
+\end{definition}
+which is used by the \glostyle{treenoname} styles to display the
+pre-description separator, the description and the post-description
+hook. Similarly for the symbol:
+\begin{definition}[\DescribeMacro\glstreenonamesymbol]
+\cs{glstreenonamesymbol}\marg{label}
+\end{definition}
+The above are just used for top-level entries. Child entries don't
+have the name or symbol displayed for the \glostyle{treenoname}
+styles, so there's only a command for the child description:
+\begin{definition}[\DescribeMacro\glstreenonamechilddesc]
+\cs{glstreenonamechilddesc}\marg{label}
+\end{definition}
+
+For the \glostyle{tree} styles (but not the \glostyle{treenoname} or
+\glostyle{alttree} styles), the description is displayed using:
+\begin{definition}[\DescribeMacro\glstreedesc]
+\cs{glstreedesc}\marg{label}
+\end{definition}
+and the symbol with:
+\begin{definition}[\DescribeMacro\glstreesymbol]
+\cs{glstreesymbol}\marg{label}
+\end{definition}
+Again the above two commands are just for top-level entries. The
+child entries use:
+\begin{definition}[\DescribeMacro\glstreechilddesc]
+\cs{glstreechilddesc}\marg{label}
+\end{definition}
+for the description and
+\begin{definition}[\DescribeMacro\glstreechildsymbol]
+\cs{glstreechildsymbol}\marg{label}
+\end{definition}
+for the symbol.
+
+As from version 1.41, there are now wrapper commands for
+\cs{glstreedesc} and \cs{glstreechilddesc} that check for
+the description and symbol to determine whether or not to insert a
+space (\cs{glstreeprelocation} or \cs{glstreechildprelocation})
+before the page list. These are:
+\begin{definition}[\DescribeMacro\glstreeDescLoc]
+\cs{glstreeDescLoc}\marg{label}\marg{location}
+\end{definition}
+for top-level entries and
+\begin{definition}[\DescribeMacro\glstreeChildDescLoc]
+\cs{glstreeChildDescLoc}\marg{label}\marg{location}
+\end{definition}
+for sub-entries. This prevents a spurious space for terms that don't
+have a symbol or description but do have a location list (for
+example, aliases).
+
+As from version 1.05, the \styfmt{glossaries-extra-stylemods}
+package provides some additional commands for use with the
+\glostyle{alttree} style to make it easier to modify.
+These commands are only defined if the
+\sty{glossary-tree} package has already been loaded, which is
+typically the case unless the \pkgopt{notree} option has been used
+when loading \styfmt{glossaries}.
+
+\begin{definition}[\DescribeMacro\gglssetwidest]
+\cs{gglssetwidest}\oarg{level}\marg{name}
+\end{definition}
+(New to version 1.21.)
+This is like \cs{glssetwidest} (provided by \sty{glossary-tree})
+but performs a global assignment.
+
+\begin{definition}[\DescribeMacro\eglssetwidest]
+\cs{eglssetwidest}\oarg{level}\marg{name}
+\end{definition}
+This is like \cs{glssetwidest}
+but performs a protected expansion on \meta{name}. This has
+a localised effect. For a global setting, use
+\begin{definition}[\DescribeMacro\xglssetwidest]
+\cs{xglssetwidest}\oarg{level}\marg{name}
+\end{definition}
+The following only set the value if \meta{name} is wider than the
+current value (new to version 1.23). Local update:
+\begin{definition}[\DescribeMacro\glsupdatewidest]
+\cs{glsupdatewidest}\oarg{level}\marg{name}
+\end{definition}
+Global update:
+\begin{definition}[\DescribeMacro\gglsupdatewidest]
+\cs{gglsupdatewidest}\oarg{level}\marg{name}
+\end{definition}
+Locale update (expands \meta{name}):
+\begin{definition}[\DescribeMacro\eglsupdatewidest]
+\cs{eglsupdatewidest}\oarg{level}\marg{name}
+\end{definition}
+Global update (expands \meta{name}):
+\begin{definition}[\DescribeMacro\xglsupdatewidest]
+\cs{xglsupdatewidest}\oarg{level}\marg{name}
+\end{definition}
+
+
+The widest entry value can later be retrieved using
+\begin{definition}[\DescribeMacro\glsgetwidestname]
+\cs{glsgetwidestname}
+\end{definition}
+for the top-level entries and
+\begin{definition}[\DescribeMacro\glsgetwidestsubname]
+\cs{glsgetwidestsubname}\marg{level}
+\end{definition}
+for sub-entries, where \meta{level} is the level number.
+
+Note that if you are using \gls{bib2gls}, you can use the
+resource option \texttt{set-widest} which will try to determine the
+widest name of all the selected entries. This isn't guaranteed
+to work as it may depend on fonts or commands that \gls{bib2gls}
+can't replicate, but it should be suitable for names that just
+consist of text, and can be more efficient than iterating over all
+the defined entries using \TeX.
+
+The command \cs{glsfindwidesttoplevelname} provided by
+\sty{glossary-tree} has a CamelCase synonym:
+\begin{definition}[\DescribeMacro\glsFindWidestTopLevelName]
+\cs{glsFindWidestTopLevelName}\oarg{glossary list}
+\end{definition}
+Similar commands are also provided:
+\begin{definition}[\DescribeMacro\glsFindWidestUsedTopLevelName]
+\cs{glsFindWidestUsedTopLevelName}\oarg{glossary list}
+\end{definition}
+This has an additional check that the entry has been used.
+Naturally this is only useful if the glossaries that use
+the \glostyle{alttree} style occur at the end of the document.
+This command should be placed just before the start of the glossary.
+(Alternatively, place it at the end of the document and save
+the value in the auxiliary file for the next run.)
+
+\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyName]
+\cs{glsFindWidestUsedAnyName}\oarg{glossary list}
+\end{definition}
+This is like the previous command but if doesn't check the
+\gloskey{parent} key. This is useful if all levels should have the
+same width for the name.
+
+\begin{definition}[\DescribeMacro\glsFindWidestAnyName]
+\cs{glsFindWidestAnyName}\oarg{glossary list}
+\end{definition}
+This is like the previous command but doesn't check if the entry
+has been used.
+
+\begin{definition}[\DescribeMacro\glsFindWidestUsedLevelTwo]
+\cs{glsFindWidestUsedLevelTwo}\oarg{glossary list}
+\end{definition}
+This is like \cs{glsFindWidestUsedTopLevelName} but also sets
+the first two sub-levels as well. Any entry that has a
+great-grandparent is ignored.
+
+\begin{definition}[\DescribeMacro\glsFindWidestLevelTwo]
+\cs{glsFindWidestLevelTwo}\oarg{glossary list}
+\end{definition}
+This is like the previous command but doesn't check if the entry has
+been used.
+
+\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameSymbol]
+\cs{glsFindWidestUsedAnyNameSymbol}\oarg{glossary
+list}\marg{register}
+\end{definition}
+This is like \cs{glsFindWidestUsedAnyName} but also measures the
+symbol. The length of the widest symbol is stored in
+\meta{register}.
+
+\begin{definition}[\DescribeMacro\glsFindWidestAnyNameSymbol]
+\cs{glsFindWidestAnyNameSymbol}\oarg{glossary list}\marg{register}
+\end{definition}
+This is like the previous command but it doesn't check if the entry
+has been used.
+
+\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameSymbolLocation]
+\cs{glsFindWidestUsedAnyNameSymbolLocation}\oarg{glossary
+list}\marg{symbol register}\marg{location register}
+\end{definition}
+This is like \cs{glsFindWidestUsedAnyNameSymbol} but also
+measures the \gls{numberlist}. This requires
+\ics{glsentrynumberlist} (see the \styfmt{glossaries} user manual).
+The length of the widest symbol is stored in \meta{symbol register}
+and the length of the widest \gls*{numberlist} is stored in
+\meta{location register}.
+
+\begin{definition}[\DescribeMacro\glsFindWidestAnyNameSymbolLocation]
+\cs{glsFindWidestAnyNameSymbolLocation}\oarg{glossary
+list}\marg{symbol register}\marg{location register}
+\end{definition}
+This is like the previous command but it doesn't check if the entry
+has been used.
+
+\begin{definition}[\DescribeMacro\glsFindWidestUsedAnyNameLocation]
+\cs{glsFindWidestUsedAnyNameLocation}\oarg{glossary
+list}\marg{register}
+\end{definition}
+This is like \cs{glsFindWidestUsedAnyNameSymbolLocation} but doesn't
+measure the symbol. The length of the widest \gls{numberlist}
+is stored in \meta{register}.
+
+\begin{definition}[\DescribeMacro\glsFindWidestAnyNameLocation]
+\cs{glsFindWidestAnyNameLocation}\oarg{glossary
+list}\marg{register}
+\end{definition}
+This is like the previous command but doesn't check if the entry has
+been used.
+
+The layout of the symbol, description and \gls{numberlist}
+is governed by
+\begin{definition}[\DescribeMacro\glsxtralttreeSymbolDescLocation]
+\cs{glsxtralttreeSymbolDescLocation}\marg{label}\marg{number list}
+\end{definition}
+for top-level entries and
+\begin{definition}[\DescribeMacro\glsxtralttreeSubSymbolDescLocation]
+\cs{glsxtralttreeSubSymbolDescLocation}\marg{label}\marg{number list}
+\end{definition}
+for sub-entries.
+
+There is now a user level command that performs the initialisation
+for the \glostyle{alttree} style:
+\begin{definition}[\DescribeMacro\glsxtralttreeInit]
+\cs{glsxtralttreeInit}
+\end{definition}
+
+The paragraph indent for subsequent paragraphs in multi-paragraph
+descriptions is provided by the length
+\begin{definition}[\DescribeMacro\glsxtrAltTreeIndent]
+\cs{glsxtrAltTreeIndent}
+\end{definition}
+
+For additional commands that are available with the
+\glostyle{alttree} style, see the documented code
+(\texttt{glossaries-extra-code.pdf}). For examples, see
+the accompanying sample files \texttt{sample-alttree.tex},
+\texttt{sample-alttree-sym.tex} and
+\texttt{sample-alttree-marginpar.tex}.
+
+\chapter{Abbreviations}
+\label{sec:abbreviations}
+
+The new abbreviation system provided by \styfmt{glossaries-extra}
+is more flexible than the acronym handling provided by the
+base \styfmt{glossaries} package. The \styfmt{glossaries-extra}
+package modifies the underlying formatting used by
+\cs{gls} (and its variants) so that terms that are recognised as
+abbreviations can have their formatting dealt with by the style. You
+therefore need to select an abbreviation style that ensures that
+\cs{gls} (and its variants) displays the desired output.
+
+\begin{important}
+Don't use commands like \cs{glstext} or \cs{glsfirst} with
+abbreviations as they aren't flexible enough to handle some
+abbreviation styles and unexpected results may occur. Use commands
+like \cs{glsfmtshort} or \cs{glsfmtlong} in section headings or
+captions instead of \cs{gls}. If you don't want the full form to
+show on first use of \cs{gls} use one of the \qt{nolong} or
+\qt{noshort} styles.
+\end{important}
+
+Abbreviations include acronyms (words formed from initial letters,
+such as \qt{laser}),
+initialisms (initial letters of a phrase, such as \qt{html}, that
+aren't pronounced as words) and contractions (where
+parts of words are omitted, often replaced by an apostrophe, such as
+\qt{don't}).
+The \qt{acronym} code provided by the \styfmt{glossaries} package is
+misnamed as it's more often than not used for initialisms instead.
+Acronyms tend not to be \emph{expanded} on \gls{firstuse} (although they may
+need to be \emph{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 \styfmt{glossaries-extra} package corrects this misnomer, and
+provides better abbreviation handling, with
+\begin{definition}[\DescribeMacro\newabbreviation]
+\cs{newabbreviation}\oarg{options}\marg{label}\marg{short}\marg{long}
+\end{definition}
+
+This sets the \gloskey{category} key to \texttt{abbreviation} by
+default, but that value may be overridden in \meta{options}.
+The category may have attributes that modify the way abbreviations
+are defined. For example, the \catattr{insertdots} attribute will
+automatically insert full stops (periods) into \meta{short} or the
+\catattr{noshortplural} attribute will set the default value
+of the \gloskey{shortplural} key to just \meta{short} (without
+appending the plural suffix). See \sectionref{sec:categories} for
+further details.
+
+See \sectionref{sec:nested} regarding the pitfalls of using
+commands like \ics{gls} or \ics{glsxtrshort} within
+\meta{short} or \meta{long}.
+
+\begin{important}
+Make sure that you set the category attributes before defining new
+abbreviations or they may not be correctly applied.
+\end{important}
+
+The \ics{newacronym} command provided by the \styfmt{glossaries}
+package is redefined by \styfmt{glossaries-extra} to use
+\cs{newabbreviation} with the \gloskey{category} set to
+\texttt{acronym} (see also \sectionref{sec:acronymmods}) so
+\begin{definition}[\DescribeMacro\newacronym]
+\cs{newacronym}\oarg{options}\marg{label}\marg{short}\marg{long}
+\end{definition}
+is now equivalent to
+\begin{display}\raggedright\ttfamily
+\cs{newabbreviation}[type=\cs{acronymtype},category=acronym,\meta{options}]\marg{label}\marg{short}\marg{long}
+\end{display}
+
+\begin{sloppypar}
+The \cs{newabbreviation} command is superficially similar to the
+\styfmt{glossaries} package's \cs{newacronym} but you can apply
+different styles to different categories. The default style is
+\abbrstyle{short-nolong} for entries in the \category{acronym} category and
+\abbrstyle{short-long} for entries in the \category{abbreviation}
+category. (These aren't the same as the acronym styles provided by
+the \styfmt{glossaries} package, although they may produce similar
+results.)
+\end{sloppypar}
+
+The way the abbreviations are displayed by commands like \cs{gls}
+varies according to the abbreviation style. The styles are set
+according to the entry's category so, unlike the base
+\styfmt{glossaries} package, you can have different abbreviation
+styles within the same glossary.
+
+There are two types of full forms. The display full form, which is
+used on \gls{firstuse} by commands like \ics{gls} and the inline full
+form, which is used by commands like \ics{glsxtrfull}.
+For some of the abbreviation styles, such as \abbrstyle{long-short}, the display and inline forms
+are the same. In the case of styles such as \abbrstyle{short-nolong} or
+\abbrstyle{short-footnote}, the display and inline full forms are different.
+
+These formatting commands aren't stored in the \gloskey{short},
+\gloskey{shortplural}, \gloskey{long} or \gloskey{longplural}
+fields, which means they won't be used within commands like
+\cs{glsentryshort} (but they are used within commands like
+\cs{glsxtrshort} and \cs{glsfmtshort}).
+Note that \ics{glsxtrlong} and the case-changing variants don't use
+\cs{glsfirstlongfont}.
+
+You can apply the formatting command used for the short form
+to some arbitrary text using
+\begin{definition}[\DescribeMacro\glsuseabbrvfont]
+\cs{glsuseabbrvfont}\marg{text}\marg{category}
+\end{definition}
+where \meta{category} is the category label that identifies
+the abbreviation style. Similarly for the formatting command
+use by the long form:
+\begin{definition}[\DescribeMacro\glsuselongfont]
+\cs{glsuselongfont}\marg{text}\marg{category}
+\end{definition}
+
+\section{Tagging Initials}
+\label{sec:tagging}
+
+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
+\begin{definition}[\DescribeMacro\GlsXtrEnableInitialTagging]
+\cs{GlsXtrEnableInitialTagging}\marg{categories}\marg{cs}
+\end{definition}
+before you define your abbreviations.
+
+This command (robustly) defines \meta{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 \catattr{tagging} attribute set to \qt{true}. For those
+cases it will use
+\begin{definition}[\DescribeMacro\glsxtrtagfont]
+\cs{glsxtrtagfont}\marg{text}
+\end{definition}
+This command defaults to \ics{underline}\marg{text}
+but may be redefined as required.
+
+The control sequence \meta{cs} can't already be defined when
+used with the unstarred version of
+\cs{GlsXtrEnableInitialTagging} for safety reasons.
+The starred version will overwrite any previous definition
+of \meta{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 \cs{GlsXtrEnableInitialTagging} is a
+comma-separated list of category names. The \catattr{tagging}
+attribute will automatically be set for those categories.
+You can later set this attribute for other categories (see
+\sectionref{sec:categories}) but this must be done before the
+glossary is displayed.
+
+The accompanying sample file \texttt{sample-mixtures.tex}
+uses initial tagging for both the \category{acronym} and
+\category{abbreviation} categories:
+\begin{verbatim}
+\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag}
+\end{verbatim}
+This defines the command \cs{itag} which can be used in the
+definitions. For example:
+\begin{verbatim}
+\newacronym
+ [description={a system for detecting the location and
+ speed of ships, aircraft, etc, through the use of radio
+ waves}% description of this term
+ ]
+ {radar}% identifying label
+ {radar}% short form (i.e. the word)
+ {\itag{ra}dio \itag{d}etection \itag{a}nd \itag{r}anging}
+
+\newabbreviation{xml}{XML}
+ {e\itag{x}tensible \itag{m}arkup \itag{l}anguage}
+\end{verbatim}
+The underlining of the tagged letters only occurs in the
+glossary and then only for entries with the \catattr{tagging}
+attribute set.
+
+\section{Abbreviation Styles}
+\label{sec:abbrstyle}
+
+The abbreviation style must be set before abbreviations are defined
+using:
+\begin{definition}[\DescribeMacro\setabbreviationstyle]
+\cs{setabbreviationstyle}\oarg{category}\marg{style-name}
+\end{definition}
+where \meta{style-name} is the name of the style and \meta{category}
+is the category label (\texttt{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 \texttt{abbreviation} category.
+Some styles may automatically modify one or more of the attributes
+associated with the given category. For example, the
+\abbrstyle{long-noshort} and \abbrstyle{short-nolong} styles set the
+\catattr{regular} attribute to \texttt{true}.
+
+\begin{important}
+If you want to apply different styles to groups of abbreviations,
+assign a different category to each group and set the style for the
+given category.
+\end{important}
+
+Note that \ics{setacronymstyle} is disabled by
+\styfmt{glossaries-extra}. Use
+\begin{alltt}
+\cs{setabbreviationstyle}[acronym]\marg{style-name}
+\end{alltt}
+instead. The original acronym interface can be restored with
+\ics{RestoreAcronyms} (see \sectionref{sec:acronymmods}). However the
+original acronym interface is incompatible with all the commands
+described here.
+
+Abbreviations can be used with the standard \styfmt{glossaries}
+commands, such as \ics{gls}, but don't use the acronym commands
+like \ics{acrshort} (which use \ics{acronymfont}). The short form can be
+produced with:
+\begin{definition}[\DescribeMacro\glsxtrshort]
+\cs{glsxtrshort}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(Use this instead of \ics{acrshort}.)
+
+The long form can be produced with
+\begin{definition}[\DescribeMacro\glsxtrlong]
+\cs{glsxtrlong}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(Use this instead of \ics{acrlong}.)
+
+The \emph{inline} full form can be produced with
+\begin{definition}[\DescribeMacro\glsxtrfull]
+\cs{glsxtrfull}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(This this instead of \ics{acrfull}.)
+
+\begin{important}
+In general, it's best not to use commands like \ics{glsfirst}
+for abbreviations, especially if you use the \meta{insert}
+optional argument. Use either \cs{gls} (possibly with a reset)
+or \cs{glsxtrfull}.
+\end{important}
+
+As mentioned earlier, the inline full form may not necessarily match the format used on
+\gls{firstuse} with \cs{gls}. For example, the
+\abbrstyle{short-nolong} style
+only displays the short form on \gls{firstuse}, but the full
+form will display the long form followed by the short form in
+parentheses.
+
+\begin{important}
+If you want to use an abbreviation in a chapter or section
+title, use the commands described in \sectionref{sec:headtitle}
+instead.
+\end{important}
+
+The arguments \meta{options}, \meta{label} and \meta{insert} are the
+same as for commands such as \cs{glstext}. There are also analogous
+case-changing commands:
+
+First letter upper case short form:
+\begin{definition}[\DescribeMacro\Glsxtrshort]
+\cs{Glsxtrshort}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+First letter upper case long form:
+\begin{definition}[\DescribeMacro\Glsxtrlong]
+\cs{Glsxtrlong}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+First letter upper case inline full form:
+\begin{definition}[\DescribeMacro\Glsxtrfull]
+\cs{Glsxtrfull}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+All upper case short form:
+\begin{definition}[\DescribeMacro\Glsxtrshort]
+\cs{GLSxtrshort}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+All upper case long form:
+\begin{definition}[\DescribeMacro\Glsxtrlong]
+\cs{GLSxtrlong}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+All upper case inline full form:
+\begin{definition}[\DescribeMacro\GLSxtrfull]
+\cs{GLSxtrfull}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+Plural forms are also available.
+
+Short form plurals:
+\begin{definition}[\DescribeMacro\glsxtrshortpl]
+\cs{glsxtrshortpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\Glsxtrshortpl]
+\cs{Glsxtrshortpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\GLSxtrshortpl]
+\cs{GLSxtrshortpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+Long form plurals:
+\begin{definition}[\DescribeMacro\glsxtrlongpl]
+\cs{glsxtrlongpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\Glsxtrlongpl]
+\cs{Glsxtrlongpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\GLSxtrlongpl]
+\cs{GLSxtrlongpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+Full form plurals:
+\begin{definition}[\DescribeMacro\glsxtrfullpl]
+\cs{glsxtrfullpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\Glsxtrfullpl]
+\cs{Glsxtrfullpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\GLSxtrfullpl]
+\cs{GLSxtrfullpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+
+\begin{important}
+Be careful about using \cs{glsentryfull}, \cs{Glsentryfull},
+\cs{glsentryfullpl} and \cs{Glsentryfullpl}. These commands will use
+the currently applied style rather than the style in use when the
+entry was defined. If you have mixed styles, you'll need to use
+\ics{glsxtrfull} instead. Similarly for \cs{glsentryshort} etc.
+\end{important}
+
+\section{Shortcut Commands}
+\label{sec:abbrshortcuts}
+
+The abbreviation shortcut commands can be enabled using
+the package option \pkgopt[abbreviation]{shortcuts}
+(or \pkgopt[abbr]{shortcuts}) or \pkgopt[ac]{shortcuts}.
+(You can use both settings at the same time.)
+The provided shortcut commands listed in
+\tableref{tab:abbrshortcuts}.
+
+\begin{table}[htbp]
+\caption{Abbreviation Shortcut Commands}
+\label{tab:abbrshortcuts}
+\centering
+\begin{tabular}{lll}
+\bfseries Shortcut &
+\bfseries Shortcut &
+\bfseries Equivalent Command\\
+\bfseries (\pkgopt[abbreviation]{shortcuts}) &
+\bfseries (\pkgopt[ac]{shortcuts})\\
+\ics{ab} & \ics{ac} & \ics{cgls}\\
+\ics{abp} & \ics{acp} & \ics{cglspl}\\
+\ics{as} & \ics{acs} & \ics{glsxtrshort}\\
+\ics{asp} & \ics{acsp} & \ics{glsxtrshortpl}\\
+\ics{al} & \ics{acl} & \ics{glsxtrlong}\\
+\ics{alp} & \ics{aclp} & \ics{glsxtrlongpl}\\
+\ics{af} & \ics{acf} & \ics{glsxtrfull}\\
+\ics{afp} & \ics{acfp} & \ics{glsxtrfullpl}\\
+\ics{Ab} & \ics{Ac} & \ics{cgls}\\
+\ics{Abp} & \ics{Acp} & \ics{cglspl}\\
+\ics{As} & \ics{Acs} & \ics{Glsxtrshort}\\
+\ics{Asp} & \ics{Acsp} & \ics{Glsxtrshortpl}\\
+\ics{Al} & \ics{Acl} & \ics{Glsxtrlong}\\
+\ics{Alp} & \ics{Aclp} & \ics{Glsxtrlongpl}\\
+\ics{Af} & \ics{Acf} & \ics{Glsxtrfull}\\
+\ics{Afp} & \ics{Acfp} & \ics{Glsxtrfullpl}\\
+\ics{AB} & \ics{AC} & \ics{cGLS}\\
+\ics{ABP} & \ics{ACP} & \ics{cGLSpl}\\
+\ics{AS} & \ics{ACS} & \ics{GLSxtrshort}\\
+\ics{ASP} & \ics{ACSP} & \ics{GLSxtrshortpl}\\
+\ics{AL} & \ics{ACL} & \ics{GLSxtrlong}\\
+\ics{ALP} & \ics{ACLP} & \ics{GLSxtrlongpl}\\
+\ics{AF} & \ics{ACF} & \ics{GLSxtrfull}\\
+\ics{AFP} & \ics{ACFP} & \ics{GLSxtrfullpl}\\
+\ics{newabbr} & \ics{newabbr} & \ics{newabbreviation}
+\end{tabular}
+\end{table}
+
+\section{Predefined Abbreviation Styles}
+\label{sec:predefabbrvstyles}
+
+There are two types of abbreviation styles: those that treat the
+abbreviation as a regular entry (so that \ics{gls} uses
+\ics{glsgenentryfmt}) and those that don't treat the abbreviation as
+a regular entry (so that \ics{gls} uses \ics{glsxtrgenabbrvfmt}).
+
+The regular entry abbreviation styles set the \catattr{regular}
+attribute to \qt{true} for the category assigned to each
+abbreviation with that style. This means that on \gls{firstuse},
+\ics{gls} uses the value of the \gloskey{first} field and on
+subsequent use \ics{gls} uses the value of the \gloskey{text} field
+(and analogously for the plural and case-changing versions). The
+\gloskey{short} and \gloskey{long} fields are set as appropriate
+and may be accessed through commands like \ics{glsxtrshort}.
+
+The other abbreviation styles don't modify the \catattr{regular}
+attribute. The \gloskey{first} and \gloskey{text} fields (and their
+plural forms) are set and can be accessed through commands like
+\cs{glsfirst}, but they aren't used by commands like \ics{gls},
+which instead use the short form (stored in the \gloskey{short} key)
+and the display full format (through commands like
+\ics{glsxtrfullformat} that are defined by the style).
+
+In both cases, the \gls{firstuse} of \ics{gls} may not match the
+text produced by \ics{glsfirst} (and likewise for the plural
+and case-changing versions).
+
+The sample file \texttt{sample-abbr-styles.tex} demonstrates all
+predefined styles described here.
+
+\begin{important}
+For the \qt{sc} styles that use \ics{textsc}, be careful about your choice
+of fonts as some only have limited support. For
+example, you may not be able to combine bold and small-caps. I
+recommend that you at least use the \sty{fontenc} package with the
+\pkgoptfmt{T1} option or something similar.
+\end{important}
+
+The parenthetical styles, such as \abbrstyle{long-short},
+use
+\begin{definition}[\DescribeMacro\glsxtrparen]
+\cs{glsxtrparen}\marg{text}
+\end{definition}
+to set the parenthetical material. This just puts parentheses around
+the text: (\meta{text}).
+
+The basic abbreviation styles, such as \abbrstyle{long-short}
+and \abbrstyle{short-long} use
+\begin{definition}[\DescribeMacro\glsabbrvdefaultfont]
+\cs{glsabbrvdefaultfont}\marg{text}
+\end{definition}
+for the short form. This just does \meta{text} by default.
+(That is, no font change is applied.) On first use,
+\begin{definition}[\DescribeMacro\glsfirstabbrvdefaultfont]
+\cs{glsfirstabbrvdefaultfont}\marg{text}
+\end{definition}
+is used instead. By default, this just does
+\cs{glsabbrvdefaultfont}. The long form is formatted according to
+\begin{definition}[\DescribeMacro\glslongdefaultfont]
+\cs{glslongdefaultfont}\marg{text}
+\end{definition}
+which again just does \meta{text} (no font change). On first use,
+\begin{definition}[\DescribeMacro\glsfirstlongdefaultfont]
+\cs{glsfirstlongdefaultfont}\marg{text}
+\end{definition}
+is used instead. This just does \cs{glslongdefaultfont}.
+The plural suffix used for the short form is given by
+\begin{definition}[\DescribeMacro\glsxtrabbrvpluralsuffix]
+\cs{glsxtrabbrvpluralsuffix}
+\end{definition}
+which defaults to \ics{glspluralsuffix}.
+
+The small-cap styles, such as \abbrstyle{long-short-sc}
+and \abbrstyle{short-sc-long}, use
+\begin{definition}[\DescribeMacro\glsabbrvscfont]
+\cs{glsabbrvscfont}\marg{text}
+\end{definition}
+which uses \cs{textsc}.\footnote{For compatibility with earlier
+versions, \cs{glsabbrvscfont} is defined to \cs{glsxtrscfont},
+which is defined to use \cs{textsc}. Direct use of
+\cs{glsxtrscfont} is now deprecated. Likewise for similar commands.}
+On first use
+\begin{definition}[\DescribeMacro\glsabbrvdefaultfont]
+\cs{glsfirstabbrvscfont}\marg{text}
+\end{definition}
+is used instead. This uses \cs{glsabbrvscfont} by default.
+So redefine, \cs{glsabbrvscfont} to change first and subsequent uses or
+\cs{glsfirstabbrvscfont} to change just the first use.
+
+The long form for the small-cap styles uses \cs{glslongdefaultfont}
+or \cs{glsfirstlongdefaultfont}, as with the basic style.
+The suffix is given by
+\begin{definition}[\DescribeMacro\glsxtrscsuffix]
+\cs{glsxtrscsuffix}
+\end{definition}
+This is defined as
+\begin{verbatim}
+\newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}}
+\end{verbatim}
+The \ics{glstextup} command is provided by \styfmt{glossaries}
+and is used to switch off the small caps font for the suffix.
+If you override the default short plural using the
+\gloskey{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 \catattr{aposplural} and
+\catattr{noshortplural} attributes. See
+\sectionref{sec:categories} for further details.)
+
+The small styles, such as \abbrstyle{long-short-sm}
+and \abbrstyle{short-sm-long}, use
+\begin{definition}[\DescribeMacro\glsabbrvsmfont]
+\cs{glsabbrvsmfont}\marg{text}
+\end{definition}
+which uses \cs{textsmaller}. (This requires the \sty{relsizes}
+package, which isn't loaded by \styfmt{glossaries-extra}, so must be
+loaded explicitly.)
+On first use
+\begin{definition}[\DescribeMacro\glsfirstabbrvsmfont]
+\cs{glsfirstabbrvsmfont}\marg{text}
+\end{definition}
+is used instead. This uses \cs{glsabbrvsmfont} by default.
+
+The long form for the smaller styles uses \cs{glslongdefaultfont}
+or \cs{glsfirstlongdefaultfont}, as with the basic style.
+The suffix is given by
+\begin{definition}[\DescribeMacro\glsxtrsmsuffix]
+\cs{glsxtrsmsuffix}
+\end{definition}
+which defaults to just \cs{glsxtrabbrvpluralsuffix}.
+
+The \qt{short-em} (emphasize short) styles, such as
+\abbrstyle{long-short-em} or \abbrstyle{short-em-long}, use
+\begin{definition}[\DescribeMacro\glsabbrvemfont]
+\cs{glsabbrvemfont}\marg{text}
+\end{definition}
+On first use
+\begin{definition}[\DescribeMacro\glsfirstabbrvemfont]
+\cs{glsfirstabbrvemfont}\marg{text}
+\end{definition}
+is used instead. This uses \cs{glsabbrvemfont} by default.
+The suffix is given by
+\begin{definition}[\DescribeMacro\glsxtremsuffix]
+\cs{glsxtremsuffix}
+\end{definition}
+which defaults to just \cs{glsxtrabbrvpluralsuffix}.
+The long form is as for the basic style unless the style
+is a \qt{long-em} style.
+
+The \qt{long-em} (emphasize long) styles, such as
+\abbrstyle{long-em-short-em} or \abbrstyle{short-em-long-em}, use
+\begin{definition}[\DescribeMacro\glsfirstlongemfont]
+\cs{glsfirstlongemfont}\marg{long-form}
+\end{definition}
+instead of \cs{glsfirstlongdefaultfont}\marg{long-form} and
+\begin{definition}[\DescribeMacro\glslongemfont]
+\cs{glslongemfont}\marg{long-form}
+\end{definition}
+instead of \cs{glslongdefaultfont}\marg{long-form}. The first form
+\cs{glsfirstlongemfont} is initialised to use \cs{glslongemfont}.
+
+The user styles have similar commands:
+\begin{definition}[\DescribeMacro\glsabbrvuserfont]
+\cs{glsabbrvuserfont}\marg{text}
+\end{definition}
+for the short form,
+\begin{definition}[\DescribeMacro\glsfirstabbrvuserfont]
+\cs{glsfirstabbrvuserfont}\marg{text}
+\end{definition}
+for the first use short form,
+\begin{definition}[\DescribeMacro\glslonguserfont]
+\cs{glslonguserfont}\marg{text}
+\end{definition}
+for the long form,
+\begin{definition}[\DescribeMacro\glsfirstlonguserfont]
+\cs{glsfirstlonguserfont}\marg{text}
+\end{definition}
+for the first use long form, and
+\begin{definition}[\DescribeMacro\glsxtrusersuffix]
+\cs{glsxtrusersuffix}
+\end{definition}
+for the short plural suffix.
+
+Similarly for the hyphen styles:
+\begin{definition}[\DescribeMacro\glsabbrvhyphenfont]
+\cs{glsabbrvhyphenfont}\marg{text}
+\end{definition}
+for the short form,
+\begin{definition}[\DescribeMacro\glsfirstabbrvhyphenfont]
+\cs{glsfirstabbrvhyphenfont}\marg{text}
+\end{definition}
+for the first use short form,
+\begin{definition}[\DescribeMacro\glslonghyphenfont]
+\cs{glslonghyphenfont}\marg{text}
+\end{definition}
+for the long form,
+\begin{definition}[\DescribeMacro\glsfirstlonghyphenfont]
+\cs{glsfirstlonghyphenfont}\marg{text}
+\end{definition}
+for the first use long form, and
+\begin{definition}[\DescribeMacro\glsxtrhyphensuffix]
+\cs{glsxtrhyphensuffix}
+\end{definition}
+for the short plural suffix.
+
+Similarly for the \qt{only} styles, such as
+\abbrstyle{long-only-short-only}:
+\begin{definition}[\DescribeMacro\glsabbrvonlyfont]
+\cs{glsabbrvonlyfont}\marg{text}
+\end{definition}
+for the short form,
+\begin{definition}[\DescribeMacro\glsfirstabbrvonlyfont]
+\cs{glsfirstabbrvonlyfont}\marg{text}
+\end{definition}
+for the first use short form,
+\begin{definition}[\DescribeMacro\glslongonlyfont]
+\cs{glslongonlyfont}\marg{text}
+\end{definition}
+for the long form,
+\begin{definition}[\DescribeMacro\glsfirstlongonlyfont]
+\cs{glsfirstlongonlyfont}\marg{text}
+\end{definition}
+for the first use long form, and
+\begin{definition}[\DescribeMacro\glsxtronlysuffix]
+\cs{glsxtronlysuffix}
+\end{definition}
+for the short plural suffix.
+
+Note that by default inserted material (provided in the final
+optional argument of commands like \cs{gls}), is placed outside the
+font command in the predefined styles. To move it inside, use:
+\begin{definition}[\DescribeMacro\glsxtrinsertinsidetrue]
+\cs{glsxtrinsertinsidetrue}
+\end{definition}
+This applies to all the predefined styles. For example:
+\begin{verbatim}
+\setabbreviationstyle{long-short}
+\renewcommand*{\glsfirstlongdefaultfont}[1]{\emph{#1}}
+\glsxtrinsertinsidetrue
+\end{verbatim}
+This will make the long form and the inserted text emphasized,
+whereas the default (without \cs{glsxtrinsertinsidetrue}) would
+place the inserted text outside of the emphasized font.
+
+Note that for some styles, such as the \abbrstyle{short-long}, the
+inserted text would be placed inside the font command for the short
+form (rather than the long form in the above example).
+
+Remember that \cs{textsc} renders \emph{lowercase} letters as small
+capitals. Uppercase letters are rendered as normal uppercase
+letters, so if you specify the short form in uppercase, you won't
+get small capitals unless you redefine \cs{glsabbrvscfont} to
+convert its argument to lowercase. For example:
+\begin{verbatim}
+\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeLowercase{#1}}}
+\end{verbatim}
+
+If you want to
+easily switch between the \qt{sc} and \qt{sm} styles, you may find
+it easier to redefine this command to convert case:
+\begin{verbatim}
+\renewcommand*{\glsabbrvscfont}[1]{\textsc{\MakeTextLowercase{#1}}}
+\renewcommand*{\glsabbrvsmfont}[1]{\textsmaller{\MakeTextUppercase{#1}}}
+\end{verbatim}
+
+Some of the styles use
+\begin{definition}[\DescribeMacro\glsxtrfullsep]
+\cs{glsxtrfullsep}\marg{label}
+\end{definition}
+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:
+\begin{verbatim}
+\renewcommand*{\glsxtrfullsep}[1]{~}
+\end{verbatim}
+or
+\begin{verbatim}
+\renewcommand*{\glsxtrfullsep}[1]{\glsacspace{#1}}
+\end{verbatim}
+
+The new naming scheme for abbreviation styles is as follows:
+\begin{itemize}
+\item
+\meta{field1}[\texttt{-}\meta{modifier1}]\texttt{-}[post]\meta{field2}[\texttt{-}\meta{modifier2}][\texttt{-user}]
+
+This is for the parenthetical styles. The \texttt{-}\meta{modifier} parts may
+be omitted. These styles display \meta{field1} followed by
+\meta{field2} in parentheses. If \meta{field1} or \meta{field2} starts
+with \qt{no} then that element is omitted from the display style (no
+parenthetical part) but is included in the inline style.
+
+If the \texttt{-}\meta{modifier} part is present, then the field has
+a font changing command applied to it. The special modifier
+\texttt{-only} indicates that field is only present according to
+whether or not the entry has been used.
+
+If \texttt{post} is present then \meta{field2} is
+placed after the \gls{linktext} using the post-link hook.
+
+If the \texttt{-user} part is present, then the \gloskey{user1}
+value, if provided, is inserted into the parenthetical material .
+(The field used for the inserted material may be changed.)
+
+Examples:
+ \begin{itemize}
+ \item\abbrstyle{long-noshort-sc}: \meta{field1} is the long
+form, the short form is set in smallcaps but omitted in the display
+style.
+ \item\abbrstyle{long-em-short-em}: both the long form and the
+short form are emphasized. The short form is in parentheses.
+ \item\abbrstyle{long-short-em}: the
+short form is emphasized but not the long form. The short form is in parentheses.
+ \item\abbrstyle{long-short-user}: if the \gloskey{user1} key has
+been set, this produces the style \meta{long} (\meta{short},
+\meta{user1}) otherwise it just produces \meta{long} (\meta{short}).
+
+ \item\abbrstyle{long-hyphen-postshort-hyphen}: the short
+form and the inserted material (provided by the final optional
+argument of commands like \cs{gls}) is moved to the post-link hook.
+The long form is formatted according to \cs{glslonghyphenfont}
+(or \cs{glsfirstlonghyphenfont} on first use).
+The short form is formatted according to \cs{glsabbrvhyphenfont}
+(or \cs{glsfirstabbrvhyphenfont} on first use).
+ \end{itemize}
+
+\item \meta{style}\texttt{-noreg}
+
+Some styles set the \catattr{regular} attribute. In some cases,
+there's a version of the style that doesn't set this attribute.
+For example, \abbrstyle{long-em-noshort-em} sets the
+\catattr{regular} attribute. The
+\abbrstyle{long-em-noshort-em-noreg} style is a minor variation
+that style that doesn't set the attribute.
+
+There are a few \qt{noshort} styles, such as
+\abbrstyle{long-hyphen-noshort-noreg}, that have
+\qt{-noreg} version without a regular version. This is because the
+style won't work properly with the \catattr{regular} set, but the
+naming scheme is maintained for consistency with the other
+\qt{noshort} styles.
+
+\item
+\meta{field1}[\texttt{-}\meta{modifier1}]\texttt{-}[\texttt{post}]\texttt{footnote}
+
+The display style uses \meta{field1} followed by a footnote with the
+other field in it. If \texttt{post} is present then the footnote is
+placed after the \gls{linktext} using the post-link hook.
+The inline style does \meta{field1} followed by the other field in
+parentheses.
+
+If \texttt{-}\meta{modifier1} is present, \meta{field1} has a
+font-changing command applied to it.
+
+Examples:
+\begin{itemize}
+\item \abbrstyle{short-footnote}: short form in the text with the
+long form in the footnote.
+\item \abbrstyle{short-sc-postfootnote}: short form in smallcaps
+with the long form in the footnote outside of the \gls{linktext}.
+\end{itemize}
+
+\begin{important}
+Take care with the footnote styles. Remember that there are some
+situations where \ics{footnote} doesn't work.
+\end{important}
+
+\item \meta{style}\texttt{-desc}
+
+Like \meta{style} but the \gloskey{description} key must be provided
+when defining abbreviations with this style.
+
+Examples:
+\begin{itemize}
+
+\item \abbrstyle{short-long-desc}: like \abbrstyle{short-long} but
+requires a description.
+\item \abbrstyle{short-em-footnote-desc}: like
+\abbrstyle{short-em-footnote} but requires a description.
+\end{itemize}
+\end{itemize}
+
+Not all combinations that fit the above syntax are provided.
+Pre-version 1.04 styles that didn't fit this naming scheme are either
+provided with a synonym (where the former name wasn't ambiguous) or
+provided with a deprecated synonym (where the former name was
+confusing).
+The deprecated style names generate a warning using:
+\begin{definition}[\DescribeMacro\GlsXtrWarnDeprecatedAbbrStyle]
+\cs{GlsXtrWarnDeprecatedAbbrStyle}\marg{old-name}\marg{new-name}
+\end{definition}
+where \meta{old-name} is the deprecated name and \meta{new-name} is
+the preferred name. You can suppress these warnings by redefining
+this command to do nothing.
+
+\subsection{Predefined Abbreviation Styles that Set the Regular
+Attribute}
+\label{sec:predefregabbrvstyles}
+
+The following abbreviation styles set the \catattr{regular}
+attribute to \qt{true} for all categories that have abbreviations
+defined with any of these styles.
+
+\begin{description}
+\item[\abbrstyledef{short-nolong}]
+This only displays the short form on \gls{firstuse}. The \gloskey{name}
+is set to the short form through the command
+\begin{definition}[\DescribeMacro\glsxtrshortnolongname]
+\cs{glsxtrshortnolongname}
+\end{definition}
+(Similarly for the other
+\texttt{short}\meta{modifier}\texttt{-nolong}\meta{modifier} styles,
+unless indicated otherwise.)
+This command is expanded as the entry is defined, so any
+redefinition must be done before \cs{newabbreviation} (or
+\cs{newacronym}) for it to take effect. Make sure to \cs{protect}
+any formatting commands (or anything else that shouldn't be expanded).
+
+The \gloskey{description} is set to the
+long form. The inline full form displays
+\meta{short} (\meta{long}). The long form on its own can be
+displayed through commands like \ics{glsxtrlong}.
+
+\item[\abbrstyledef{short}] A synonym for \abbrstyle{short-nolong}.
+
+\item[\abbrstyledef{nolong-short}] Like \abbrstyle{short-nolong}
+but the inline full form displays
+\meta{long} (\meta{short}).
+
+\item[\abbrstyledef{short-sc-nolong}]
+Like \abbrstyle{short-nolong} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvscfont} (which defaults to \cs{textsc}).
+
+\item[\abbrstyledef{short-sc}] A synonym for \abbrstyle{short-sc-nolong}
+
+\item[\abbrstyledef{nolong-short-sc}] Like \abbrstyle{short-sc-nolong}
+but the inline full form displays
+\meta{long} (\meta{short}). The name is still obtained from
+\cs{glsxtrshortnolongname} (similarly for the other styles in the
+form \texttt{nolong}\meta{modifier}\texttt{-short}\meta{modifier}
+unless indicated otherwise).
+
+\item[\abbrstyledef{short-sm-nolong}]
+Like \abbrstyle{short-nolong} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont} (which defaults to \cs{textsmaller}).
+
+\item[\abbrstyledef{short-sm}] A synonym for \abbrstyle{short-sm-nolong}.
+
+\item[\abbrstyledef{nolong-short-sm}] Like \abbrstyle{short-sm-nolong}
+but the inline full form displays
+\meta{long} (\meta{short}).
+
+\item[\abbrstyledef{short-em-nolong}]
+Like \abbrstyle{short-nolong} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}.
+
+\item[\abbrstyledef{short-em}] A synonym for \abbrstyle{short-em-nolong}
+
+\item[\abbrstyledef{nolong-short-em}] Like \abbrstyle{short-em-nolong}
+but the inline full form displays
+\meta{long} (\meta{short}).
+
+\item[\abbrstyledef{short-nolong-desc}]
+Like the \abbrstyle{short-nolong} style, but the \gloskey{name} is set to
+the full form obtained by expanding
+\begin{definition}[\DescribeMacro\glsxtrshortdescname]
+\cs{glsxtrshortdescname}
+\end{definition}
+(Similarly for the other
+\texttt{short}\meta{modifier}\texttt{-nolong}\meta{modifier}\texttt{-desc}
+styles, unless indicated otherwise.) This command is expanded when the entry is defined, so
+\cs{protect} fragile and formatting commands and only redefine this
+command before \cs{newabbreviation} (or \cs{newacronym}).
+
+The \gloskey{description} must be supplied by the
+user. You may prefer to use the \abbrstyle{short-nolong} style with the
+post-description hook set to display the long form and override
+the \gloskey{description} key. (See the sample file
+\texttt{sample-acronym-desc.tex}.)
+
+\item[\abbrstyledef{short-desc}] A synonym for
+\abbrstyle{short-nolong-desc}.
+
+\item[\abbrstyledef{short-sc-nolong-desc}]
+Like \abbrstyle{short-nolong} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvscfont} (which defaults to \cs{textsc}).
+
+\item[\abbrstyledef{short-sc-desc}] A synonym for
+\abbrstyle{short-sc-nolong-desc}.
+
+\item[\abbrstyledef{short-sm-nolong-desc}]
+Like \abbrstyle{short-nolong-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont} (which defaults to \cs{textsmaller}).
+
+\item[\abbrstyledef{short-sm-desc}] A synonym for
+\abbrstyle{short-sm-nolong-desc}.
+
+\item[\abbrstyledef{short-em-nolong-desc}]
+Like \abbrstyle{short-nolong-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}.
+
+\item[\abbrstyledef{short-em-desc}] A synonym for
+\abbrstyle{short-em-nolong-desc}.
+
+\item[\abbrstyledef{long-noshort-desc}]
+This style only displays the long form, regardless of first or
+subsequent use of commands \ics{gls}. The short form may be
+accessed through commands like \ics{glsxtrshort}. The inline full
+form displays \meta{long} (\meta{short}).
+
+The \gloskey{sort} key are set to the long form.
+The \gloskey{name} key is also set to the long form, but this is
+done by expanding
+\begin{definition}[\DescribeMacro\glsxtrlongnoshortdescname]
+\cs{glsxtrlongnoshortdescname}
+\end{definition}
+(Similarly for the other
+\texttt{long}\meta{modifier}\texttt{-noshort}\meta{modifier}\texttt{-desc}
+styles, unless indicated otherwise.) This command should only be redefined before abbreviations
+are defined, and any fragile or formatting commands within it need protecting.
+
+The \gloskey{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 \meta{long}
+(\meta{short}).
+
+\item[\abbrstyledef{long-desc}] A synonym for
+\abbrstyle{long-noshort-desc}.
+
+\item[\abbrstyledef{long-noshort-sc-desc}]
+Like the \abbrstyle{long-noshort-desc} style but the short form (accessed
+through commands like \ics{glsxtrshort}) use \ics{glsabbrvscfont}.
+(This style was originally called \depabbrstyle{long-desc-sc}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{long-noshort-sm-desc}]
+Like \abbrstyle{long-noshort-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont}.
+(This style was originally called \depabbrstyle{long-desc-sm}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{long-noshort-em-desc}]
+Like \abbrstyle{long-noshort-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}. The long form isn't emphasized.
+(This style was originally called \depabbrstyle{long-desc-em}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{long-em-noshort-em-desc}]
+New to version 1.04, like \abbrstyle{long-noshort-desc} but redefines
+\cs{glsabbrvfont} to use \ics{glsabbrvemfont}. The long form uses
+\ics{glsfirstlongemfont} and \ics{glslongemfont}.
+
+\item[\abbrstyledef{long-noshort}]
+This style doesn't really make sense if you don't use the short
+form anywhere in the document, but is provided for completeness.
+This is like the \abbrstyle{long-noshort-desc} style, but
+the \gloskey{sort} key is set to the short form. The \gloskey{name}
+key is also set to the short form, but this is done by expanding
+\begin{definition}[\DescribeMacro\glsxtrlongnoshortname]
+\cs{glsxtrlongnoshortname}
+\end{definition}
+(Similarly for other
+\texttt{long}\meta{modifier}\texttt{-noshort}\meta{modifier} styles,
+unless indicated otherwise.)
+This command should only be redefined before abbreviations are
+defined, and fragile or formatting commands should be protected.
+
+The \gloskey{description} is set to the long form.
+
+\item[\abbrstyledef{long}] A synonym for \abbrstyle{long-noshort}
+
+\item[\abbrstyledef{long-noshort-sc}]
+Like the \abbrstyle{long-noshort} style but the short form (accessed
+through commands like \ics{glsxtrshort}) use \ics{glsabbrvscfont}.
+(This style was originally called \depabbrstyle{long-sc}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{long-noshort-sm}]
+Like \abbrstyle{long-noshort} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont}.
+(This style was originally called \depabbrstyle{long-sm}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{long-noshort-em}]
+This style is like \abbrstyle{long-noshort} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}. The long form isn't emphasized.
+(This style was originally called \depabbrstyle{long-em}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{long-em-noshort-em}]
+New to version 1.04, this style is like \abbrstyle{long-noshort} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}, \cs{glsfirstlongfont} to use
+\cs{glsfirstlongemfont} and \cs{glslongfont} to use
+\cs{glslongemfont}. The short form isn't used by commands like
+\ics{gls}, but can be obtained using \ics{glsxtrshort}.
+The related style \abbrstyledef{long-em-noshort-em-noreg}
+doesn't set the \catattr{regular} attribute.
+
+\end{description}
+
+\subsection{Predefined Abbreviation Styles that Don't Set the Regular
+Attribute}
+\label{sec:predefnonregabbrvstyles}
+
+The following abbreviation styles will set the
+\catattr{regular} attribute to \qt{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.
+
+\begin{description}
+\item[\abbrstyledef{long-short}]
+On \gls{firstuse}, this style uses the format \meta{long} (\meta{short}).
+The inline and display full forms are the same. The
+ \gloskey{sort} key is set to the short form. The \gloskey{name} is
+also set to the short form through
+\begin{definition}[\DescribeMacro\glsxtrlongshortname]
+\cs{glsxtrlongshortname}
+\end{definition}
+(Similarly for other
+\texttt{long}\meta{modifier}\texttt{-short}\meta{modifier} styles,
+unless indicated otherwise.)
+Any redefinition of this command must come before the abbreviations
+are defined as it expands on definition. Make sure you protect
+any commands that shouldn't be expanded. The long form can be
+referenced with \cs{the}\cs{glslongtok} and the short form
+can be referenced with \cs{the}\cs{glsshorttok}.
+
+The \gloskey{description} is set to the long form. The long and short
+forms are separated by \cs{glsxtrfullsep}. If you want to insert
+material within the parentheses (such as a~translation), try the
+\abbrstyle{long-short-user} style.
+
+\item[\abbrstyledef{long-short-sc}]
+Like \abbrstyle{long-short} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvscfont}.
+
+\item[\abbrstyledef{long-short-sm}]
+Like \abbrstyle{long-short} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont}.
+
+\item[\abbrstyledef{long-short-em}]
+Like \abbrstyle{long-short} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}.
+
+\item[\abbrstyledef{long-em-short-em}]
+New to version 1.04, this style is like \abbrstyle{long-short-em} but redefines \cs{glsfirstlongfont} to
+use \ics{glsfirstlongemfont}.
+
+\item[\abbrstyledef{long-only-short-only}]
+New to version 1.17, this style only shows the long form
+on first use and only shows the short form on subsequent use.
+The inline full form \cs{glsxtrfull} shows the long form
+followed by the short form in parentheses. The \gloskey{name}
+field is obtained from
+\begin{definition}[\DescribeMacro\glsxtronlyname]
+\cs{glsxtronlyname}
+\end{definition}
+Any redefinition of this command must come before the abbreviations
+are defined as it expands on definition. Make sure you protect
+any commands that shouldn't be expanded. The long form can be
+referenced with \cs{the}\cs{glslongtok} and the short form
+can be referenced with \cs{the}\cs{glsshorttok}.
+
+\item[\abbrstyledef{long-only-short-only-desc}]
+New to version 1.17, this style is like
+\abbrstyle{long-only-short-only} but the user must supply the
+description. The \gloskey{name}
+field is obtained from
+\begin{definition}[\DescribeMacro\glsxtronlydescname]
+\cs{glsxtronlydescname}
+\end{definition}
+Any redefinition of this command must come before the abbreviations
+are defined as it expands on definition. Make sure you protect
+any commands that shouldn't be expanded. The long form can be
+referenced with \cs{the}\cs{glslongtok} and the short form
+can be referenced with \cs{the}\cs{glsshorttok}.
+
+\item[\abbrstyledef{long-em-noshort-em-noreg}]
+New to version 1.17, this style is like
+\abbrstyle{long-em-noshort-em} but
+doesn't set the \catattr{regular} attribute.
+
+\item[\abbrstyledef{long-short-user}]
+This style was introduced in version 1.04. It's like the
+\abbrstyle{long-short} style but additional information can be
+inserted into the parenthetical material. This checks the value
+of the field given by
+\begin{definition}[\DescribeMacro\glsxtruserfield]
+\cs{glsxtruserfield}
+\end{definition}
+(which defaults to \texttt{useri}) using \ics{ifglshasfield}
+(provided by \styfmt{glossaries}). If the field hasn't been set,
+the style behaves like the \abbrstyle{long-short} style and
+produces \meta{long} (\meta{short}) but if the field has been set,
+the contents of that field are inserted within the parentheses in
+the form \meta{long} (\meta{short}, \meta{field-value}).
+The format is governed by
+\begin{definition}[\DescribeMacro\glsxtruserparen]
+\cs{glsxtruserparen}\marg{text}\marg{label}
+\end{definition}
+where \meta{text} is the short form (for the
+\abbrstyle{long-short-user} style) or the long form (for the
+\abbrstyle{short-long-user} style). This command first inserts
+a space using \cs{glsxtrfullsep} and then the parenthetical content
+(using \ics{glsxtrparen}).
+The \gloskey{description} is set to
+\begin{definition}[\DescribeMacro\glsuserdescription]
+\cs{glsuserdescription}\marg{long}\marg{label}
+\end{definition}
+The default definition ignores the \meta{label} and encapsulates
+\meta{long} with \cs{glslonguserfont}.
+
+The \gloskey{name} is obtained by expanding
+\cs{glsxtrlongshortname} (see above).
+The \meta{text} argument includes the font formatting command,
+\cs{glsfirstabbrvfont}\marg{short} in the case of the
+\abbrstyle{long-short-user} style and
+\cs{glsfirstlongfont}\marg{long} in the
+case of the \abbrstyle{short-long-user} style.
+
+For example:
+\begin{verbatim}
+\setabbreviationstyle[acronym]{long-short-user}
+
+\newacronym{tug}{TUG}{\TeX\ User Group}
+
+\newacronym
+ [user1={German Speaking \TeX\ User Group}]
+ {dante}{DANTE}{Deutschsprachige Anwendervereinigung \TeX\ e.V}
+
+\end{verbatim}
+On first use, \verb|\gls{tug}| will appear as:
+\begin{quote}
+\TeX\ User Group (TUG)
+\end{quote}
+whereas \verb|\gls{dante}| will appear as:
+\begin{quote}
+Deutschsprachige Anwendervereinigung \TeX\ e.V (DANTE, German Speaking \TeX\ User Group)
+\end{quote}
+
+The short form is formatted according to
+\begin{definition}[\DescribeMacro\glsabbrvuserfont]
+\cs{glsabbrvuserfont}\marg{text}
+\end{definition}
+and the plural suffix is given by
+\begin{definition}[\DescribeMacro\glsxtrusersuffix]
+\cs{glsxtrusersuffix}
+\end{definition}
+
+These may be redefined as appropriate. For example,
+if you want a~smallcaps style, you can just set these commands
+to those used by the \abbrstyle{long-short-sc} style:
+\begin{verbatim}
+\renewcommand{\glsabbruserfont}[1]{\glsabbrvscfont{#1}}
+\renewcommand{\glsxtrusersuffix}{\glsxtrscsuffix}
+\end{verbatim}
+
+\item[\abbrstyledef{long-noshort-noreg}]
+This style is like \abbrstyle{long-noshort} but it doesn't
+set the \catattr{regular} attribute.
+
+\item[\abbrstyledef{long-noshort-desc-noreg}]
+This style is like \abbrstyle{long-noshort-desc} but it doesn't
+set the \catattr{regular} attribute.
+
+\item[\abbrstyledef{long-short-desc}]
+On \gls{firstuse}, this style uses the format \meta{long} (\meta{short}).
+The inline and display full forms are the same. The \gloskey{name}
+is set to the full form. The \gloskey{sort} key is set to
+\meta{long} (\meta{short}). Before version 1.04, this was
+incorrectly set to the short form. If you want to revert back to
+this you can redefine
+\begin{definition}[\DescribeMacro\glsxtrlongshortdescsort]
+\cs{glsxtrlongshortdescsort}
+\end{definition}
+For example:
+\begin{verbatim}
+\renewcommand*{\glsxtrlongshortdescsort}{\the\glsshorttok}
+\end{verbatim}
+The \gloskey{description} must be supplied by the user.
+The long and short forms are separated by \cs{glsxtrfullsep}. The \gloskey{name}
+field is obtained from
+\begin{definition}[\DescribeMacro\glsxtrlongshortdescname]
+\cs{glsxtrlongshortdescname}
+\end{definition}
+(Similarly for other
+\texttt{long}\meta{modifier}\texttt{-short}\meta{modifier}\texttt{-desc}
+styles, unless indicated otherwise.)
+Any redefinition of this command must come before the abbreviations
+are defined as it expands on definition. Make sure you protect
+any commands that shouldn't be expanded. The long form can be
+referenced with \cs{the}\cs{glslongtok} and the short form
+can be referenced with \cs{the}\cs{glsshorttok}.
+
+\item[\abbrstyledef{long-short-sc-desc}]
+Like \abbrstyle{long-short-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvscfont}.
+
+\item[\abbrstyledef{long-short-sm-desc}]
+Like \abbrstyle{long-short-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont}.
+
+\item[\abbrstyledef{long-short-em-desc}]
+Like \abbrstyle{long-short-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}.
+
+\item[\abbrstyledef{long-em-short-em-desc}]
+New to version 1.04, this style is like \abbrstyle{long-short-em-desc} but redefines \cs{glsfirstlongfont} to
+use \ics{glsfirstlongemfont}.
+
+\item[\abbrstyledef{long-em-noshort-em-desc-noreg}]
+New to version 1.17, this style is like
+\abbrstyle{long-em-noshort-em-desc} but
+doesn't set the \catattr{regular} attribute.
+
+
+\item[\abbrstyledef{long-short-user-desc}]
+New to version 1.04, this style is like a~cross between the
+\abbrstyle{long-short-desc} style and the
+\abbrstyle{long-short-user} style. The display and inline forms are
+as for \abbrstyle{long-short-user} and the \gloskey{name} key is
+obtained from
+\begin{definition}[\DescribeMacro\glsxtrlongshortuserdescname]
+\cs{glsxtrlongshortuserdescname}
+\end{definition}
+Again, this should only be redefined before \cs{newabbreviation} (or
+\cs{newacronym}), and fragile and formatting commands need protecting.
+
+The \gloskey{description} key must be
+supplied in the optional argument of \cs{newabbreviation}
+(or \cs{newacronym}). The \gloskey{sort} key is set to \meta{long}
+(\meta{short}) as per the \abbrstyle{long-short-desc} style.
+
+\item[\abbrstyledef{short-nolong-noreg}]
+This is like \abbrstyle{short-nolong} but doesn't set the
+\catattr{regular} attribute.
+
+\item[\abbrstyledef{nolong-short-noreg}]
+This is like \abbrstyle{nolong-short} but doesn't set the
+\catattr{regular} attribute.
+
+\item[\abbrstyledef{short-long}]
+On \gls{firstuse}, this style uses the format \meta{short} (\meta{long}).
+The inline and display full forms are the same. The \gloskey{name}
+and \gloskey{sort} keys are set to the short form. The
+\gloskey{description} is set to the long form.
+The short and long forms are separated by \cs{glsxtrfullsep}.
+If you want to insert
+material within the parentheses (such as a~translation), try the
+\abbrstyle{short-long-user} style.
+
+The \gloskey{name} field is obtained from
+\begin{definition}[\DescribeMacro\glsxtrshortlongname]
+\cs{glsxtrshortlongname}
+\end{definition}
+(Similarly for other
+\texttt{short}\meta{modifier}\texttt{-long}\meta{modifier} styles,
+unless indicated otherwise.)
+Any redefinition of this command must come before the abbreviations
+are defined as it expands on definition. Make sure you protect
+any commands that shouldn't be expanded. The long form can be
+referenced with \cs{the}\cs{glslongtok} and the short form
+can be referenced with \cs{the}\cs{glsshorttok}.
+
+
+\item[\abbrstyledef{short-sc-long}]
+Like \abbrstyle{short-long} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvscfont}.
+
+\item[\abbrstyledef{short-sm-long}]
+Like \abbrstyle{short-long} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont}.
+
+\item[\abbrstyledef{short-em-long}]
+Like \abbrstyle{short-long} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}.
+
+\item[\abbrstyledef{short-em-long-em}]
+New to version 1.04, this style is like \abbrstyle{short-em-long} but redefines \cs{glsfirstlongfont} to
+use \ics{glsfirstlongemfont}.
+
+\item[\abbrstyledef{short-long-user}]
+New to version 1.04. This style is like the
+\abbrstyle{long-short-user} style but with the long and short forms
+switched. The parenthetical material is governed by the same command
+\ics{glsxtruserparen}, but the first argument supplied to it is
+the long form instead of the short form. The \gloskey{name} field is
+obtained by expanding
+\begin{definition}[\DescribeMacro\glsxtrshortlongname]
+\cs{glsxtrshortlongname}
+\end{definition}
+Again, this should only be redefined before \cs{newabbreviation} (or
+\cs{newacronym}) and commands that should be expanded need to be
+protected. The \gloskey{description} is set to
+\cs{glsuserdescription}\marg{long}\marg{label}.
+
+\item[\abbrstyledef{short-nolong-desc-noreg}]
+This style is like \abbrstyle{short-nolong-desc} but it doesn't
+set the \catattr{regular} attribute.
+
+\item[\abbrstyledef{short-long-desc}]
+On \gls{firstuse}, this style uses the format \meta{short} (\meta{long}).
+The inline and display full forms are the same. The \gloskey{name}
+is set to the full form. The
+\gloskey{description} must be supplied by the user.
+The short and long forms are separated by \cs{glsxtrfullsep}. The \gloskey{name}
+field is obtained from
+\begin{definition}[\DescribeMacro\glsxtrshortlongdescname]
+\cs{glsxtrshortlongdescname}
+\end{definition}
+(Similarly for other
+\texttt{short}\meta{modifier}\texttt{-long}\meta{modifier}\texttt{-desc}
+styles, unless indicated otherwise.)
+Any redefinition of this command must come before the abbreviations
+are defined as it expands on definition. Make sure you protect
+any commands that shouldn't be expanded. The long form can be
+referenced with \cs{the}\cs{glslongtok} and the short form
+can be referenced with \cs{the}\cs{glsshorttok}.
+
+\item[\abbrstyledef{short-sc-long-desc}]
+Like \abbrstyle{short-long-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvscfont}.
+
+\item[\abbrstyledef{short-sm-long-desc}]
+Like \abbrstyle{short-long-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont}.
+
+\item[\abbrstyledef{short-em-long-desc}]
+Like \abbrstyle{short-long-desc} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}.
+
+\item[\abbrstyledef{short-em-long-em-desc}]
+New to version 1.04, this style is like \abbrstyle{short-em-long-desc} but redefines \cs{glsfirstlongfont} to
+use \ics{glsfirstlongemfont}.
+
+\item[\abbrstyledef{short-long-user-desc}]
+New to version 1.04, this style is like a~cross between the
+\abbrstyle{short-long-desc} style and the
+\abbrstyle{short-long-user} style. The display and inline forms are
+as for \abbrstyle{short-long-user}, but the \gloskey{name} key is
+obtained from
+\begin{definition}[\DescribeMacro\glsxtrshortlonguserdescname]
+\cs{glsxtrshortlonguserdescname}
+\end{definition}
+Again, this should only be redefined before \cs{newabbreviation} (or
+\cs{newacronym}), and fragile and formatting commands need protecting.
+
+The \gloskey{description} key must be
+supplied in the optional argument of \cs{newabbreviation}
+(or \cs{newacronym}).
+
+\item[\abbrstyledef{short-footnote}]
+On \gls{firstuse}, this style displays the short form with the long form
+as a footnote. This style automatically sets the
+\catattr{nohyperfirst} attribute to \qt{true} for the supplied
+category, so the \gls{firstuse} won't be hyperlinked (but the footnote
+marker may be, if the \sty{hyperref} package is used).
+
+The inline full form uses the \meta{short}
+(\meta{long}) style. The \gloskey{name} is set to the short form.
+The \gloskey{description} is set to the long form. The
+\gloskey{name} key is obtained by expanding
+\begin{definition}[\DescribeMacro\glsxtrfootnotename]
+\cs{glsxtrfootnotename}
+\end{definition}
+(Similarly for other
+\texttt{short\meta{modifier}-\meta{modifier}footnote} styles, unless
+indicated otherwise.) Again, this command should only be redefined
+before \cs{newabbreviation} (or \cs{newacronym}), and fragile or
+formatting commands should be protected from expansion.
+
+As from version 1.05, all the footnote styles use:
+\begin{definition}[\DescribeMacro\glsfirstlongfootnotefont]
+\cs{glsfirstlongfootnotefont}\marg{text}
+\end{definition}
+to format the long form on \gls{firstuse} or for the full form and
+\begin{definition}[\DescribeMacro\glslongfootnotefont]
+\cs{glslongfootnotefont}\marg{text}
+\end{definition}
+to format the long form elsewhere (for example, when used with
+\cs{glsxtrlong}).
+
+As from version 1.07, all the footnote styles use:
+\begin{definition}[\DescribeMacro\glsxtrabbrvfootnote]
+\cs{glsxtrabbrvfootnote}\marg{label}\marg{long}
+\end{definition}
+By default, this just does \ics{footnote}\marg{long} (the first
+argument is ignored). For example, to make the footnote text
+link to the relevant place in the glossary:
+\begin{verbatim}
+\renewcommand{\glsxtrabbrvfootnote}[2]{%
+ \footnote{\glshyperlink[#2]{#1}}%
+}
+\end{verbatim}
+or to include the short form with a hyperlink:
+\begin{verbatim}
+\renewcommand{\glsxtrabbrvfootnote}[2]{%
+ \footnote{\glshyperlink[\glsfmtshort{#1}]{#1}: #2}%
+}
+\end{verbatim}
+Note that I haven't used commands like \cs{glsxtrshort} to
+avoid interference (see \sectionref{sec:entryfmtmods}
+and \sectionref{sec:nested}).
+
+\item[\abbrstyledef{footnote}] A synonym for
+\abbrstyle{short-footnote}.
+
+\item[\abbrstyledef{short-sc-footnote}]
+Like \abbrstyle{short-footnote} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvscfont}.
+(This style was originally called \depabbrstyle{footnote-sc}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{short-sc-footnote}]
+Like \abbrstyle{short-footnote} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont}.
+(This style was originally called \depabbrstyle{footnote-sm}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{short-em-footnote}]
+Like \abbrstyle{short-footnote} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}.
+(This style was originally called \depabbrstyle{footnote-em}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{short-postfootnote}]
+This is similar to the \abbrstyle{short-footnote} style but doesn't modify
+the category attribute. Instead it changes \postlinkcat\ to
+insert the footnote after the
+\gls{linktext} on \gls{firstuse}. This will also defer the footnote until after any
+following punctuation character that's recognised by
+\ics{glsxtrifnextpunc}.
+
+The inline full form uses the \meta{short}
+(\meta{long}) style. The \gloskey{name} is set to the short form.
+The \gloskey{description} is set to the long form.
+Note that this style will change \cs{glsxtrfull} (and its variants)
+so that it fakes non-\gls{firstuse}. (Otherwise the footnote would
+appear after the inline form.)
+
+\item[\abbrstyledef{postfootnote}] A synonym for
+\abbrstyle{short-postfootnote}.
+
+\item[\abbrstyledef{short-sc-postfootnote}]
+Like \abbrstyle{short-postfootnote} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvscfont}.
+(This style was originally called \depabbrstyle{postfootnote-sc}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{short-sm-postfootnote}]
+Like \abbrstyle{short-postfootnote} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvsmfont}.
+(This style was originally called \depabbrstyle{postfootnote-sm}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{short-em-postfootnote}]
+Like \abbrstyle{short-postfootnote} but redefines \cs{glsabbrvfont} to
+use \ics{glsabbrvemfont}.
+(This style was originally called \depabbrstyle{postfootnote-em}. Renamed in version
+1.04, but original name retained as a deprecated synonym for
+backward-compatibility.)
+
+\item[\abbrstyledef{short-postlong-user}]
+This style was introduced in version 1.12. It's like the
+\abbrstyle{short-long-user} style but defers the parenthetical
+material to after the link-text. This means that you don't have such
+a long hyperlink (which can cause problems for the DVI \LaTeX\ format)
+and it also means that the user supplied material can include a
+hyperlink to another location. The \gloskey{name} key is obtained
+from \cs{glsxtrshortlongname}.
+
+\item[\abbrstyledef{short-postlong-user-desc}]
+This style was introduced in version 1.12. It's like the above
+\abbrstyle{short-postlong-user} style but the \gloskey{description}
+must be specified. The \gloskey{name} is obtained from
+\cs{glsxtrshortlonguserdescname}.
+
+\item[\abbrstyledef{long-postshort-user}]
+This style was introduced in version 1.12. It's like the above
+\abbrstyle{short-postlong-user} style but the long form is shown
+first and the short form is in the parenthetical material (as for
+\abbrstyle{long-short-user}) style.
+
+\item[\abbrstyledef{long-postshort-user-desc}]
+This style was introduced in version 1.12. It's like the above
+\abbrstyle{long-postshort-user} style but the \gloskey{description}
+must be specified. The \gloskey{name} is obtained from
+\cs{glsxtrlongshortuserdescname}.
+
+\item[\abbrstyledef{long-hyphen-short-hyphen}]
+This style (new to v1.17) is designed to work with the \catattr{markwords}
+category attribute. The full form is formatted using
+\begin{definition}[\DescribeMacro\glsxtrlonghyphenshort]
+\cs{glsxtrlonghyphenshort}\marg{label}\marg{long}\marg{short}\marg{insert}
+\end{definition}
+where \meta{insert} is the inserted material
+provided in the final optional argument of commands like
+\cs{insert}. If \meta{insert} start with a hyphen, then this
+locally redefines \ics{glsxtrwordsep} to a hyphen, which means that
+if the \catattr{markwords} attribute is set then the long form
+will become hyphenated. (If this attribute isn't set, there's
+no alteration to the way the long form is displayed.)
+The \gloskey{name} key is obtained from \cs{glsxtrlongshortname}.
+
+Unlike the other \meta{long} (\meta{short}) type of styles,
+such as \abbrstyle{long-short}, this style
+also repeats the insertion in the parenthetical part, so that the
+first use form is:
+\begin{quote}
+\cs{glsfirstlonghyphenfont}\marg{long}\meta{insert}
+(\cs{glsfirstabbrvhyphenfont}\marg{short}\meta{insert})
+\end{quote}
+The space before the parenthetical material is actually given by
+\cs{glsxtrfullsep}\marg{label} which defaults to a space.
+The \meta{insert} may be moved into the formatting commands
+according to the conditional \cs{ifglsxtrinsertinside}.
+
+For example, if \texttt{ip} is defined using:
+\begin{verbatim}
+\glssetcategoryattribute{english}{markwords}{true}
+\setabbreviationstyle[english]{long-hyphen-short-hyphen}
+\newabbreviation[category=english]{ip}{IP}{Internet Protocol}
+\end{verbatim}
+then
+\begin{verbatim}
+\gls{ip}[-Adressen]
+\end{verbatim}
+will do
+\begin{quote}
+Internet-Protocol-Adressen (IP-Adressen)
+\end{quote}
+on first use, whereas
+\begin{verbatim}
+\gls{ip}[ Address]
+\end{verbatim}
+will do
+\begin{quote}
+Internet Protocol Address (IP Address)
+\end{quote}
+on first use.
+
+\begin{important}
+Note that the hyphenation isn't applied when using commands like
+\cs{glsxtrlong}. This means that
+\begin{verbatim}
+\glsxtrlong{ip}[-Adressen]
+\end{verbatim}
+will do
+\begin{quote}
+Internet Protocol-Adressen
+\end{quote}
+\end{important}
+
+If the \catattr{markwords} attribute hadn't been set, then the
+first use of
+\begin{verbatim}
+\gls{ip}[-Adressen]
+\end{verbatim}
+would do
+\begin{quote}
+Internet Protocol-Adressen (IP-Adressen)
+\end{quote}
+instead.
+
+\begin{important}
+If the inserted material \meta{insert} is likely to contain commands like
+\cs{gls}, then use \abbrstyle{long-hyphen-postshort-hyphen}
+instead to avoid nested links.
+\end{important}
+
+If you want the short version in small-caps, you can
+just redefine \cs{glsabbrvhyphenfont} and \cs{glsxtrhyphensuffix}
+to use the small-caps versions. For example:
+\begin{verbatim}
+\renewcommand{\glsabbrvhyphenfont}{\glsabbrvscfont}
+\renewcommand{\glsxtrhyphensuffix}{\glsxtrscsuffix}
+\end{verbatim}
+Similarly for other font-changing variations.
+
+\item[\abbrstyledef{long-hyphen-noshort-desc-noreg}]
+New to version 1.17, this style is like
+\abbrstyle{long-hyphen-short-hyphen-desc} except that the
+parenthetical part is omitted and the long form is displayed
+on subsequent use. The short form can be accessed
+with \cs{glsxtrshort} but just uses the default abbreviation font.
+There's no regular version of this style as the regular form
+doesn't have the flexibility to deal with the hyphen switch.
+The \gloskey{name} is obtained from \cs{glsxtrlongnoshortdescname}.
+
+\item[\abbrstyledef{long-hyphen-noshort-noreg}]
+New to version 1.17, this style is like
+\abbrstyle{long-hyphen-noshort-desc-noreg} but the
+name is set to the short form and the description is set to the long
+form.
+
+\item[\abbrstyledef{long-hyphen-short-hyphen-desc}]
+
+New to version 1.17.
+This is similar to \abbrstyle{long-hyphen-short-hyphen} but the user
+supplies the description. The \gloskey{name} is obtained from
+\cs{glsxtrlongshortdescname}.
+
+\item[\abbrstyledef{long-hyphen-postshort-hyphen}]
+
+New to version 1.17.
+This is similar to \abbrstyle{long-hyphen-short-hyphen} but the
+inserted and parenthetical material are moved to the post-link hook.
+On first use, \cs{gls}\marg{label}\oarg{insert} will do
+\begin{display}
+\cs{glsxtrlonghyphen}\marg{long}\marg{label}\marg{insert}\cs{glsxtrposthyphenshort}\marg{label}\meta{insert}
+\end{display}
+where
+\begin{definition}[\DescribeMacro\glsxtrposthyphenshort]
+\cs{glsxtrposthyphenshort}\marg{label}\meta{insert}
+\end{definition}
+is in the post-link hook. This uses the format:
+\begin{display}
+\meta{insert} (\cs{glsfirstabbrvhyphenfont}\marg{short}\meta{isnert})
+\end{display}
+
+\begin{important}
+The singular short form is always used here, even with \cs{glspl}.
+(Unlike \abbrstyle{long-hyphen-long-hyphen}.)
+\end{important}
+
+The part in the link-text on first use:
+\begin{definition}[\DescribeMacro\glsxtrlonghyphen]
+\cs{glsxtrlonghyphen}\marg{long}\marg{label}\marg{insert}
+\end{definition}
+checks if \meta{insert} starts with a hyphen. If it does, then
+\cs{glsxtrwordsep} is locally redefined to a hyphen. This command
+only uses \meta{insert} to test if it starts with a hyphen.
+The actual insertion code isn't typeset until the post-link
+hook and it's also localised, which means that you can use
+commands like \cs{gls} in \meta{insert} for this style without
+causing nested hyperlinks, but only for commands like \cs{gls}.
+
+\begin{important}
+Don't use \cs{gls} in the \meta{insert} part for commands
+like \cs{glsxtrfull}, \cs{glsxtrshort} or \cs{glsxtrlong}.
+\end{important}
+
+The inline full display format used by commands like \cs{glsxtrfull}
+behaves differently to the first use of \cs{gls} with this style.
+It's better to use \cs{glsreset}\marg{label}\cs{gls}\marg{label}
+if you want to ensure the full format.
+
+\item[\abbrstyledef{long-hyphen-postshort-hyphen-desc}]
+
+New to version 1.17.
+This is similar to \abbrstyle{long-hyphen-postshort-hyphen} but the
+user supplies the description. The \gloskey{name} is obtained from
+\cs{glsxtrlongshortdescname}.
+
+
+\item[\abbrstyledef{short-hyphen-long-hyphen}]
+This style (new to v1.17) is like
+\abbrstyle{long-hyphen-short-hyphen}, except that the short form
+is displayed first followed by the long form in parentheses. The full form is formatted using
+\begin{definition}[\DescribeMacro\glsxtrshorthyphenlong]
+\cs{glsxtrshorthyphenlong}\marg{label}\marg{short}\marg{long}\marg{insert}
+\end{definition}
+which behaves in an analogous way to \cs{glsxtrlonghyphenshort}.
+The \gloskey{name} is obtained from \cs{glsxtrshortlongname}.
+
+\item[\abbrstyledef{short-hyphen-long-hyphen-desc}]
+
+New to version 1.17.
+This is similar to \abbrstyle{short-hyphen-long-hyphen} but the
+user supplies the description.
+The \gloskey{name} is obtained from \cs{glsxtrshortlongdescname}.
+
+\item[\abbrstyledef{short-hyphen-postlong-hyphen}]
+This style (new to v1.17) is like
+\abbrstyle{long-hyphen-postshort-hyphen}, but the
+short form is displayed first followed by the long form in
+parentheses.
+On first use, \cs{gls}\marg{label}\oarg{insert} will do
+\begin{display}
+\cs{glsxtrshorthyphen}\marg{short}\marg{label}\marg{insert}\cs{glsxtrposthyphenlong}\marg{label}\meta{insert}
+\end{display}
+where
+\begin{definition}[\DescribeMacro\glsxtrposthyphenlong]
+\cs{glsxtrposthyphenlong}\marg{label}\meta{insert}
+\end{definition}
+is in the post-link hook. These commands behave in an analogous
+manner to those used with \abbrstyle{long-hyphen-postshort-hyphen}.
+The \gloskey{name} is obtained from \cs{glsxtrshortlongname}.
+
+\begin{important}
+Don't use \cs{gls} in the \meta{insert} part for commands
+like \cs{glsxtrfull}, \cs{glsxtrshort} or \cs{glsxtrlong}.
+\end{important}
+
+The inline full display format used by commands like \cs{glsxtrfull}
+behaves differently to the first use of \cs{gls} with this style.
+It's better to use \cs{glsreset}\marg{label}\cs{gls}\marg{label}
+if you want to ensure the full format.
+
+\item[\abbrstyledef{short-hyphen-postlong-hyphen-desc}]
+
+New to version 1.17.
+This is similar to \abbrstyle{short-hyphen-postlong-hyphen} but the
+user supplies the description. The \gloskey{name} is obtained from
+\cs{glsxtrshortlongdescname}.
+
+\end{description}
+
+\section{Defining New Abbreviation Styles}
+\label{sec:newabbrvstyle}
+
+New abbreviation styles may be defined using:
+\begin{definition}[\DescribeMacro\newabbreviationstyle]
+\cs{newabbreviationstyle}\marg{name}\marg{setup}\marg{fmts}
+\end{definition}
+\begin{sloppypar}\noindent
+where \meta{name} is the name of the new style (as used in the
+mandatory argument of \ics{setabbreviationstyle}). This is similar
+but not identical to the \styfmt{glossaries} package's
+\ics{newacronymstyle} command.
+\end{sloppypar}
+
+\begin{important}
+You can't use styles defined by
+\cs{newacronymstyle} with \styfmt{glossaries-extra} unless you have
+reverted \ics{newacronym} back to its generic definition from \styfmt{glossaries}
+(using \ics{RestoreAcronyms}). The acronym styles from the
+\styfmt{glossaries} package can't be used with abbreviations defined
+with \cs{newabbreviation}.
+\end{important}
+
+The \meta{setup} argument deals with the way the entry is defined
+and may set attributes for the given abbreviation
+category. This argument should redefine
+\begin{definition}[\DescribeMacro\CustomAbbreviationFields]
+\cs{CustomAbbreviationFields}
+\end{definition}
+to set the entry fields including the \gloskey{name} (defaults to
+the short form if omitted),
+\gloskey{sort}, \gloskey{first}, \gloskey{firstplural}. Other fields
+may also be set, such as \gloskey{text}, \gloskey{plural} and
+\gloskey{description}.
+
+\begin{important}
+\cs{CustomAbbreviationFields} is expanded by \cs{newabbreviation}
+so take care to protect commands that shouldn't be expanded.
+\end{important}
+
+For example, the \abbrstyle{long-short} style has the following in
+\meta{setup}:
+\begin{verbatim}
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\protect\glsabbrvfont{\the\glsshorttok}},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+\end{verbatim}
+Note that the \gloskey{first} and \gloskey{firstplural} are
+set even though they're not used by \cs{gls}.
+
+The basic styles, such as \abbrstyle{long-short}, use commands like
+\cs{glsabbrvfont} (which are redefined whenever the style formatting
+is set) within \cs{CustomAbbreviationFields}. Other styles, such as
+\abbrstyle{long-em-short-em} directly use their own custom commands,
+such as \cs{glsabbrvemfont}. With these styles, commands like
+\cs{glsabbrvfont} still need to be defined as appropriate in the
+\meta{fmts} argument even if they're not used within
+\cs{CustomAbbreviationFields}.
+
+The \meta{setup} argument may also redefine
+\begin{definition}[\DescribeMacro\GlsXtrPostNewAbbreviation]
+\cs{GlsXtrPostNewAbbreviation}
+\end{definition}
+which can be used to assign attributes. (This will automatically
+be initialised to do nothing.)
+
+For example, the \abbrstyle{short-footnote} includes the following in
+\meta{setup}:
+\begin{verbatim}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+\end{verbatim}
+This sets the \catattr{nohyperfirst} attribute to \qt{true}.
+It also unsets the \catattr{regular} attribute if it has
+previously been set. Note that the \catattr{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 \styfmt{glossaries}):
+\begin{definition}[\DescribeMacro\glsshorttok]
+\cs{glsshorttok}
+\end{definition}
+
+Short plural value (defined by \styfmt{glossaries-extra}):
+\begin{definition}[\DescribeMacro\glsshortpltok]
+\cs{glsshortpltok}
+\end{definition}
+(This may be the default value or, if provided, the value provided by the user
+through the \gloskey{shortplural} key in the optional argument
+of \ics{newabbreviation}.)
+
+Long value (defined by \styfmt{glossaries}):
+\begin{definition}[\DescribeMacro\glslongtok]
+\cs{glslongtok}
+\end{definition}
+
+Long plural value (defined by \styfmt{glossaries-extra}):
+\begin{definition}[\DescribeMacro\glslongpltok]
+\cs{glslongpltok}
+\end{definition}
+(This may be the default value or, if provided, the value provided by the user
+through the \gloskey{longplural} key in the optional argument
+of \ics{newabbreviation}.)
+
+The short or long values may be modified by attributes (such as
+\catattr{markwords}). The above registers reflect the modification.
+If you want to access the original (unmodified) short or long form
+(as provided in the final two arguments of \cs{newabbreviation}),
+then use the commands:
+\begin{definition}[\DescribeMacro\glsxtrorgshort]
+\cs{glsxtrorgshort}
+\end{definition}
+for the short form and
+\begin{definition}[\DescribeMacro\glsxtrorglong]
+\cs{glsxtrorglong}
+\end{definition}
+for the long form. (These may be useful for the \gloskey{sort} key
+to avoid any formatting that may be added by the attribute setting.)
+
+There are two other registers available that are defined by
+\styfmt{glossaries}:
+
+\begin{definition}[\DescribeMacro\glslabeltok]
+\cs{glslabeltok}
+\end{definition}
+which contains the entry's label and
+\begin{definition}[\DescribeMacro\glskeylisttok]
+\cs{glskeylisttok}
+\end{definition}
+which contains the values provided in the optional argument
+of \ics{newabbreviation}.
+
+Remember put \cs{the} in front of the register command as in the
+examples above. The category label can be access through
+the command (not a register):
+\begin{definition}[\DescribeMacro\glscategorylabel]
+\cs{glscategorylabel}
+\end{definition}
+This may be used inside the definition of
+\cs{GlsXtrPostNewAbbreviation}.
+
+If you want to base a style on an existing style, you can use
+\begin{definition}[\DescribeMacro\GlsXtrUseAbbrStyleSetup]
+\cs{GlsXtrUseAbbrStyleSetup}\marg{name}
+\end{definition}
+where \meta{name} is the name of the existing style.
+For example, the \abbrstyle{long-noshort-sc-desc} style simply does
+\begin{verbatim}
+\GlsXtrUseAbbrStyleSetup{long-noshort-desc}
+\end{verbatim}
+within \meta{setup}.
+
+The \meta{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 \gloskey{shortplural} key):
+\begin{definition}[\DescribeMacro\abbrvpluralsuffix]
+\cs{abbrvpluralsuffix}
+\end{definition}
+(Note that this isn't used for the plural long form, which
+just uses the regular \cs{glspluralsuffix}.)
+
+The font used for the short form on \gls{firstuse} or in the full forms:
+\begin{definition}[\DescribeMacro\glsfirstabbrvfont]
+\cs{glsfirstabbrvfont}\marg{text}
+\end{definition}
+
+The font used for the short form on subsequent use or through
+commands like \ics{glsxtrshort}:
+\begin{definition}[\DescribeMacro\glsabbrvfont]
+\cs{glsabbrvfont}\marg{text}
+\end{definition}
+
+The font used for the long form on \gls{firstuse} or in the full forms:
+\begin{definition}[\DescribeMacro\glsfirstlongfont]
+\cs{glsfirstlongfont}\marg{text}
+\end{definition}
+
+The font used for the long form in commands like \cs{glsxtrlong}
+use:
+\begin{definition}[\DescribeMacro\glslongfont]
+\cs{glslongfont}\marg{text}
+\end{definition}
+
+Display full form singular no case-change (used by \ics{gls} on
+\gls{firstuse} for abbreviations without the \catattr{regular} attribute
+set):
+\begin{definition}[\DescribeMacro\glsxtrfullformat]
+\cs{glsxtrfullformat}\marg{label}\marg{insert}
+\end{definition}
+
+Display full form singular first letter converted to upper case
+(used by \ics{Gls} on \gls{firstuse} for abbreviations without the
+\catattr{regular} attribute set):
+\begin{definition}[\DescribeMacro\Glsxtrfullformat]
+\cs{Glsxtrfullformat}\marg{label}\marg{insert}
+\end{definition}
+
+Display full form plural no case-change
+(used by \ics{glspl} on \gls{firstuse} for abbreviations without the
+\catattr{regular} attribute set):
+\begin{definition}[\DescribeMacro\glsxtrfullplformat]
+\cs{glsxtrfullplformat}\marg{label}\marg{insert}
+\end{definition}
+
+Display full form plural first letter converted to upper case
+(used by \ics{Glspl} on \gls{firstuse} for abbreviations without the
+\catattr{regular} attribute set):
+\begin{definition}[\DescribeMacro\Glsxtrfullplformat]
+\cs{Glsxtrfullplformat}\marg{label}\marg{insert}
+\end{definition}
+
+In addition \meta{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
+\ics{glsentryfull}, \ics{glsxtrfull} and \ics{GLSxtrfull}):
+\begin{definition}[\DescribeMacro\glsxtrinlinefullformat]
+\cs{glsxtrinlinefullformat}\marg{label}\marg{insert}
+\end{definition}
+
+Inline singular first letter converted to upper case (used by
+\ics{Glsentryfull} and \ics{Glsxtrfull}):
+\begin{definition}[\DescribeMacro\Glsxtrinlinefullformat]
+\cs{Glsxtrinlinefullformat}\marg{label}\marg{insert}
+\end{definition}
+
+Inline plural no case-change (used by
+\ics{glsentryfullpl}, \ics{glsxtrfullpl} and \ics{GLSxtrfullpl}):
+\begin{definition}[\DescribeMacro\glsxtrinlinefullplformat]
+\cs{glsxtrinlinefullplformat}\marg{label}\marg{insert}
+\end{definition}
+
+Inline plural first letter converted to upper case (used by
+\ics{Glsentryfullpl} and \ics{Glsxtrfullpl}):
+\begin{definition}[\DescribeMacro\Glsxtrinlinefullplformat]
+\cs{Glsxtrinlinefullplformat}\marg{label}\marg{insert}
+\end{definition}
+
+(New to version 1.17.)
+You can also modify the way the subsequent use is formatted by
+redefining the following four commands, but these won't be used for
+abbreviations with the \catattr{regular} attribute set. If the style
+doesn't redefine these commands, the default values are used.
+
+Singular with no case-change:
+\begin{definition}[\DescribeMacro\glsxtrsubsequentfmt]
+\cs{glsxtrsubsequentfmt}\marg{label}\marg{insert}
+\end{definition}
+
+Singular with first letter upper case:
+\begin{definition}[\DescribeMacro\Glsxtrsubsequentfmt]
+\cs{Glsxtrsubsequentfmt}\marg{label}\marg{insert}
+\end{definition}
+
+Plural with no case-change:
+\begin{definition}[\DescribeMacro\glsxtrsubsequentplfmt]
+\cs{glsxtrsubsequentplfmt}\marg{label}\marg{insert}
+\end{definition}
+
+Plural with first letter upper case:
+\begin{definition}[\DescribeMacro\Glsxtrsubsequentplfmt]
+\cs{Glsxtrsubsequentplfmt}\marg{label}\marg{insert}
+\end{definition}
+
+If you want to provide support for \sty{glossaries-accsupp}
+use the following \cs{glsaccess\meta{xxx}} commands
+(\sectionref{sec:accsupp}) within the definitions of
+\cs{glsxtrfullformat} etc instead of the analogous
+\cs{glsentry}\meta{xxx} commands. (If you don't use
+\sty{glossaries-accsupp}, they will just do the corresponding
+\cs{glsentry}\meta{xxx} command.)
+
+For example, the \abbrstyle{short-long} style has the following in
+\meta{fmts}:
+\begin{verbatim}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+\end{verbatim}
+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
+\begin{definition}[\DescribeMacro\GlsXtrUseAbbrStyleFmts]
+\cs{GlsXtrUseAbbrStyleFmts}\marg{name}
+\end{definition}
+within \meta{fmts}, where \meta{name} is the name of the existing
+style. For example, the \abbrstyle{long-short-desc} style has the
+following in \meta{fmts}:
+\begin{verbatim}
+ \GlsXtrUseAbbrStyleFmts{long-short}%
+\end{verbatim}
+
+Here's an example of an abbreviation style that's based on
+\abbrstyle{long-short} that displays the short form within
+\cs{textsf}:
+\begin{verbatim}
+\newabbreviationstyle
+{custom-sf}% label
+{% setup
+ \GlsXtrUseAbbrStyleSetup{short-long}%
+}%
+{% fmts
+ \GlsXtrUseAbbrStyleFmts{short-long}%
+ \renewcommand*{\glsabbrvfont}[1]{\textsf{##1}}%
+}
+\end{verbatim}
+Note that this wouldn't work if it was instead based on one of the
+modified versions such as \abbrstyle{short-sc-long} as they
+explicitly use their own formatting commands, such as
+\cs{glsabbrvemfont}. The base styles, such as \abbrstyle{short-long},
+use the more generic \cs{glsabbrvfont} etc which makes them easier
+to adapt than the modified styles.
+
+For further details, see the \qt{Abbreviations} section in the documented code
+(\texttt{glossaries-extra-code.pdf}).
+
+\chapter{Entries in Sectioning Titles, Headers, Captions and Contents}
+\label{sec:headtitle}
+
+The \styfmt{glossaries} user manual cautions against using commands
+like \cs{gls} in chapter or section titles. The principle problems
+are:
+\begin{itemize}
+\item if you have a table of contents, the \gls{firstuseflag}
+will be unset in the contents rather than later in the document;
+\item if you have the location lists displayed in the glossary,
+unwanted locations will be added to it corresponding to the table of
+contents (if present) and every page that contains the entry in the
+page header (if the page style in use adds the chapter or section
+title to the header);
+\item if the page style in use adds the chapter or section title to
+the header and attempts to convert it to upper case, the entry label
+(in the argument of \cs{gls} etc) will be converted to upper case
+and the entry won't be recognised;
+\item if you use \sty{hyperref}, commands like \cs{gls} can't be
+expanded to a simple string and only the label will appear in the
+PDF bookmark (with a warning from \sty{hyperref});
+\item if you use \sty{hyperref}, you will end up with nested hyperlinks
+in the table of contents.
+\end{itemize}
+Similar problems can also occur with captions (except for the page
+header and bookmark issues).
+
+To get around all these problems, the \styfmt{glossaries} user manual
+recommends using the expandable non-hyperlink commands, such as
+\ics{glsentrytext} (for regular entries) or \ics{glsentryshort}
+(for abbreviations). This is the simplest solution, but doesn't
+allow for special formatting that's applied to the entry through
+commands like \cs{glstext} or \cs{glsxtrshort}. This means that if,
+for example, you are using one of the abbreviation styles that uses
+\ics{textsc} then the short form displayed with \cs{glsentryshort} won't use small
+caps. If you only have one abbreviation style in use, you can
+explicitly enclose \cs{glsentryshort}\marg{label} in the argument of
+\cs{glsabbrvfont}, like this:
+\begin{verbatim}
+\chapter{A Chapter about \glsabbrvfont{\glsentryshort{html}}}
+\end{verbatim}
+Or, if you are using \sty{hyperref}:
+\begin{verbatim}
+\chapter{A Chapter about
+\texorpdfstring{\glsabbrvfont{\glsentryshort{html}}}{\glsentryshort{html}}}
+\end{verbatim}
+
+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 \cs{gls} and \cs{glsxtrshort} redefine
+\cs{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 \cs{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 \ics{MakeUppercase}.
+
+The \styfmt{glossaries-extra} package tries to resolve this by
+modifying \ics{markright} and \ics{markboth} and \cs{@starttoc}. If you don't like this
+change, you can restore their former definitions using
+\begin{definition}[\DescribeMacro\glsxtrRevertMarks]
+\cs{glsxtrRevertMarks}
+\end{definition}
+If you only want to restore \cs{@starttoc} you can use:
+\begin{definition}[\DescribeMacro\glsxtrRevertTocMarks]
+\cs{glsxtrRevertTocMarks}
+\end{definition}
+If you restore the header or table of contents commands, you'll have to use the \styfmt{glossaries} manual's
+recommendations of either simply using \cs{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:
+\begin{verbatim}
+\chapter[A Chapter about \glsentryshort{html}]{A Chapter about \gls{html}}
+\end{verbatim}
+Alternatively, you need to find a way to insert \cs{glsxtrmarkhook} and
+\cs{@glsxtrinmark} at the start of the header or table of contents
+either scoped or afterwards cancelled with \cs{@glsxtrnotinmark} and
+\cs{glsxtrrestoremarkhook}.
+
+If you don't revert the mark commands back with
+\cs{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 \ics{texorpdfstring} if
+\sty{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
+\cs{glsxtrshort} (or equivalent) with the options
+\gloskey[glslink]{noindex} and \gloskey[glslink]{hyper\eq 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 \catattr{headuc} attribute to \qt{true}
+for the appropriate category.
+
+\begin{important}
+If you use one of the \ics{textsc} styles, be aware that the default
+fonts don't provide bold small-caps or italic small-caps. This
+means that if the chapter or section title style uses bold, this
+may override the small-caps setting, in which case the abbreviation
+will just appear as lower case bold. If the heading style uses
+italic, the abbreviation may appear in upright small-caps,
+\emph{even if you have set the \catattr{headuc} attribute} since
+the all-capitals form still uses \cs{glsabbrvfont}.
+You may want to consider using the \sty{slantsc} package in this
+case.
+\end{important}
+
+Display the short form:
+\begin{definition}[\DescribeMacro\glsfmtshort]
+\cs{glsfmtshort}\marg{label}
+\end{definition}
+
+Display the plural short form:
+\begin{definition}[\DescribeMacro\glsfmtshortpl]
+\cs{glsfmtshortpl}\marg{label}
+\end{definition}
+
+First letter upper case singular short form:
+\begin{definition}[\DescribeMacro\Glsfmtshort]
+\cs{Glsfmtshort}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+First letter upper case plural short form:
+\begin{definition}[\DescribeMacro\Glsfmtshortpl]
+\cs{Glsfmtshortpl}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+Display the long form:
+\begin{definition}[\DescribeMacro\glsfmtlong]
+\cs{glsfmtlong}\marg{label}
+\end{definition}
+
+Display the plural long form:
+\begin{definition}[\DescribeMacro\glsfmtlongpl]
+\cs{glsfmtlongpl}\marg{label}
+\end{definition}
+
+First letter upper case singular long form:
+\begin{definition}[\DescribeMacro\Glsfmtlong]
+\cs{Glsfmtlong}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+First letter upper case plural long form:
+\begin{definition}[\DescribeMacro\Glsfmtlongpl]
+\cs{Glsfmtlongpl}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+There are similar commands for the full form, but note that these
+use the \emph{inline} full form, which may be different from the
+full form used by \cs{gls}.
+
+Display the full form:
+\begin{definition}[\DescribeMacro\glsfmtfull]
+\cs{glsfmtfull}\marg{label}
+\end{definition}
+
+Display the plural full form:
+\begin{definition}[\DescribeMacro\glsfmtfullpl]
+\cs{glsfmtfullpl}\marg{label}
+\end{definition}
+
+First letter upper case singular full form:
+\begin{definition}[\DescribeMacro\Glsfmtfull]
+\cs{Glsfmtfull}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+First letter upper case plural full form:
+\begin{definition}[\DescribeMacro\Glsfmtfullpl]
+\cs{Glsfmtfullpl}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+There are also equivalent commands for the value of the
+\gloskey{text} field:
+\begin{definition}[\DescribeMacro\glsfmttext]
+\cs{glsfmttext}\marg{label}
+\end{definition}
+
+First letter converted to upper case:
+\begin{definition}[\DescribeMacro\Glsfmttext]
+\cs{Glsfmttext}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+The plural equivalents:
+\begin{definition}[\DescribeMacro\glsfmtplural]
+\cs{glsfmtplural}\marg{label}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\Glsfmtplural]
+\cs{Glsfmtplural}\marg{label}
+\end{definition}
+
+Likewise for the value of the
+\gloskey{name} field:
+\begin{definition}[\DescribeMacro\glsfmtname]
+\cs{glsfmtname}\marg{label}
+\end{definition}
+
+First letter converted to upper case:
+\begin{definition}[\DescribeMacro\Glsfmtname]
+\cs{Glsfmtname}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+Similarly for the value of the
+\gloskey{first} field:
+\begin{definition}[\DescribeMacro\glsfmtfirst]
+\cs{glsfmtfirst}\marg{label}
+\end{definition}
+
+First letter converted to upper case:
+\begin{definition}[\DescribeMacro\Glsfmtfirst]
+\cs{Glsfmtfirst}\marg{label}
+\end{definition}
+(No case-change applied to PDF bookmarks.)
+
+The plural equivalents:
+\begin{definition}[\DescribeMacro\glsfmtfirstpl]
+\cs{glsfmtfirstpl}\marg{label}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\Glsfmtfirstpl]
+\cs{Glsfmtfirstpl}\marg{label}
+\end{definition}
+
+\chapter{Categories}
+\label{sec:categories}
+
+Each entry defined by \ics{newglossaryentry} (or commands that
+internally use it such as \ics{newabbreviation})
+is assigned a category
+through the \gloskey{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 \sty{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. Note that an entry's category
+is independent of the glossary type. Be careful not to confuse
+\gloskey{category} with \gloskey{type}.
+
+The default category assumed by
+\cs{newglossaryentry} is labelled \category{general}. Abbreviations
+defined with \cs{newabbreviation} have the category set to
+\category{abbreviation} by default. Abbreviations defined with
+\cs{newacronym} have the category set to \category{acronym} by
+default.
+
+Additionally, if you have enabled \ics{newterm} with the
+\pkgopt{index} package option that command
+will set the category to \category{index} by default. If you have
+enabled \ics{glsxtrnewsymbol} with the \pkgopt{symbols} package
+option, that command will set the category to \category{symbol}. If you have
+enabled \ics{glsxtrnewnumber} with the \pkgopt{numbers} package
+option, that command will set the category to \category{number}.
+
+You can obtain the category label for a given entry using
+\begin{definition}[\DescribeMacro\glscategory]
+\cs{glscategory}\marg{label}
+\end{definition}
+This is equivalent to commands like \cs{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
+\begin{definition}[\DescribeMacro\glsifcategory]
+\cs{glsifcategory}\marg{entry-label}\marg{category-label}\marg{true
+part}\marg{false part}
+\end{definition}
+This is equivalent to
+\begin{alltt}
+\ics{ifglsfieldeq}\marg{entry-label}\{category\}\marg{category-label}\marg{true
+part}\marg{false part}
+\end{alltt}
+so any restrictions that apply to \cs{ifglsfieldeq} also apply to
+\cs{glsifcategory}.
+
+Each category may have a set of attributes. For example, the
+\category{general} and \category{acronym} categories have the
+attribute \catattr{regular} set to \qt{true} to indicate that all
+entries with either of those categories are regular entries (as
+opposed to abbreviations). This attribute is accessed by
+\cs{glsentryfmt} to determine whether to use \cs{glsgenentryfmt} or
+\cs{glsxtrgenabbrvfmt}.
+
+Other attributes recognised by \styfmt{glossaries-extra} are:
+
+\begin{description}
+
+\item[\catattrdef{nohyperfirst}] When using commands like \ics{gls}
+this will automatically suppress the hyperlink on \gls{firstuse} for entries with a
+category that has this attribute set to \qt{true}.
+(This settings can be overridden by explicitly setting
+the \gloskey[glslink]{hyper} key on or off in the optional argument of
+commands like \cs{gls}.) As from version 1.07, \cs{glsfirst},
+\cs{Glsfirst}, \cs{GLSfirst} and their plural versions (which should ideally
+behave in a similar way to the \gls{firstuse} of \cs{gls} or
+\cs{glspl}) now honour
+this attribute (but not the package-wide \pkgopt[false]{hyperfirst}
+option, which matches the behaviour of \sty{glossaries}). If you
+want commands like \cs{glsfirst} to ignore the
+\catattr{nohyperfirst} attribute then just redefine
+\begin{definition}[\DescribeMacro\glsxtrchecknohyperfirst]
+\cs{glsxtrchecknohyperfirst}\marg{label}
+\end{definition}
+to do nothing.
+
+\item[\catattrdef{nohyper}] When using commands like \ics{gls}
+this will automatically suppress the hyperlink for entries with a
+category that has this attribute set to \qt{true}.
+(This settings can be overridden by explicitly setting
+the \gloskey[glslink]{hyper} key on or off in the optional argument of
+commands like \cs{gls}.)
+
+\item[\catattrdef{indexonlyfirst}] This is similar to the
+\pkgopt{indexonlyfirst} package option but only for entries
+that have a category with this attribute set to \qt{true}.
+
+\item[\catattrdef{wrgloss}] When using commands like \ics{gls},
+if this attribute is set to \qt{after}, it will automatically
+implement \gloskey[glslink]{wrgloss}\optfmt{=after}. (New to v1.14.)
+
+\item[\catattrdef{discardperiod}] If set to \qt{true}, the
+post-\gls{linktext} hook will
+discard a~full stop (period) that follows \emph{non-plural} commands like \cs{gls} or
+\cs{glstext}. (Provided for entries such as abbreviations that end
+with a full stop.) This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.) This attribute
+doesn't apply to the accessibility fields.
+
+Note that this can cause a problem if you access a field that
+doesn't end with a full stop. For example:
+\begin{verbatim}
+\newabbreviation
+ [user1={German Speaking \TeX\ User Group}]
+ {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\
+e.V.}
+\end{verbatim}
+Here the \gloskey{short} and \gloskey{long} fields end with a full stop, but the
+\gloskey{user1} field doesn't. The simplest solution in this
+situation is to put the sentence terminator in the final optional
+argument. For example:
+\begin{verbatim}
+\glsuseri{dante}[.]
+\end{verbatim}
+This will bring the punctuation character inside the \gls{linktext}
+and it won't be discarded.
+
+\item[\catattrdef{pluraldiscardperiod}] If this attribute is set to
+\qt{true} \emph{and} the \catattr{discardperiod} attribute is set to
+\qt{true}, this will behave as above for the plural commands like
+\cs{glspl} or \cs{glsplural}. This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+\item[\catattrdef{retainfirstuseperiod}] If this attribute is set
+to \qt{true} then the full stop won't be discarded for
+\gls{firstuse} instances, even if \catattr{discardperiod} or
+\catattr{pluraldiscardperiod} are set. This is useful for
+\meta{short} (\meta{long}) abbreviation styles where only the short
+form has a trailing full stop. This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.) This attribute doesn't apply to the
+accessibility fields.
+
+\item[\catattrdef{markwords}] If this attribute is set to \qt{true}
+any entry defined using \ics{newabbreviation} will automatically
+have spaces in the long form replaced with
+\begin{definition}[\DescribeMacro\glsxtrwordsep]
+\cs{glsxtrwordsep}
+\end{definition}
+and each word is encapsulated with
+\begin{definition}[\DescribeMacro\glsxtrword]
+\cs{glsxtrword}\marg{word}
+\end{definition}
+For example:
+\begin{verbatim}
+\glssetcategoryattribute{abbreviation}{markwords}{true}
+\newabbreviation{ip}{IP}{Internet Protocol}
+\end{verbatim}
+is essentially the same as
+\begin{verbatim}
+\newabbreviation{ip}{IP}
+{\glsxtrword{Internet}\glsxtrwordsep\glsxtrword{Protocol}}
+\end{verbatim}
+The \qt{hyphen} styles, such as
+\abbrstyle{long-hyphen-short-hyphen}, take advantage of this
+markup. If the inserted material (provided in the final argument
+of commands like \ics{gls}) starts with a hyphen then
+\cs{glsxtrwordsep} is locally redefined to a hyphen. (The default
+value is a space). Note that this only applies to commands
+like \cs{gls} and not like \cs{glsxtrlong}. You can provide your own
+localised switch, if required. For example:
+\begin{verbatim}
+\newcommand{\hyplong}[2][]{%
+ {\def\glsxtrwordsep{-}\glsxtrlong[#1]{#2}}}
+\end{verbatim}
+
+This setting will also adjust the long plural. This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+\begin{important}
+This setting may result in the
+\cs{glsxtrword} and \cs{glsxtrwordsep} markup ending up in the
+\gloskey{sort} field, depending on the style in use.
+\end{important}
+
+\item[\catattrdef{markshortwords}] This is similar to
+\catattr{markwords} but applies to the short form. (Only useful for
+abbreviations that contain spaces.) This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+This setting will only adjust the short plural if the
+\gloskey{shortplural} key isn't used. This setting will
+take precedence over \catattr{insertdots}.
+
+\begin{important}
+This setting may result in the
+\cs{glsxtrword} and \cs{glsxtrwordsep} markup ending up in the
+\gloskey{sort} field, depending on the style in use.
+\end{important}
+
+\item[\catattrdef{insertdots}] If this attribute is set to \qt{true}
+any entry defined using \ics{newabbreviation} will automatically
+have full stops (periods) inserted after each letter. The entry will
+be defined with those dots present as though they had been present
+in the \meta{short} argument of \cs{newabbreviation} (rather than
+inserting them every time the entry is used). The short plural
+form defaults to the new dotted version of the original \meta{short}
+form with the plural suffix appended. \emph{This setting is incompatible
+with \catattr{markshortwords}.} This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+\begin{important}
+If you explicitly override
+the short plural using the \gloskey{shortplural} key, you must
+explicitly insert the dots yourself (since there's no way for the
+code to determine if the plural has a suffix that shouldn't be
+followed by a dot).
+\end{important}
+
+This attribute is best used with the \catattr{discardperiod}
+attribute set to \qt{true}.
+
+\item[\catattrdef{aposplural}] If this attribute is set to \qt{true},
+\ics{newabbreviation} will insert an apostrophe (') before
+the plural suffix for the \emph{short} plural form (unless explicitly
+overridden with the \gloskey{shortplural} key). The long plural form
+is unaffected by this setting. This setting overrides
+\catattr{noshortplural}. This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.) Check with your supervisor, publisher or
+editor if you want to use this attribute as this
+usage is controversial.
+
+
+\item[\catattrdef{noshortplural}] If this attribute is set to
+\qt{true}, \ics{newabbreviation} won't append the plural suffix for
+the short plural form. This means the \gloskey{short} and
+\gloskey{shortplural} values will be the same unless explicitly
+overridden. \emph{This setting is incompatible with \catattr{aposplural}.} This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+\item[\catattrdef{accessinsertdots}] If this attribute is set to
+\qt{true} and the \sty{glossaries-accsupp} package has been loaded
+(with the \pkgopt{accsupp} option), then this behaves like
+\catattr{insertdots} but for the \gloskey{shortaccess} field instead
+of the \gloskey{short} field. This can be used to assist the
+screen reader for initialisms that should be read out letter by
+letter rather than as a word. For example:
+\begin{verbatim}
+\glssetcategoryattribute{initialism}{accessinsertdots}{true}
+
+\newabbreviation[category=initialism]{pi}{PI}{Private Investigator}
+\end{verbatim}
+This setting will be overridden by an explicit use of
+the \gloskey{shortaccess} key in the optional argument
+of \cs{newabbreviation} (or \cs{newacronym}). This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+\item[\catattrdef{nameshortaccess}] If this attribute is set to
+\qt{true}, the \gloskey{access} field (used for the \gloskey{name}
+field's accessibility support) is set to the \gloskey{shortaccess}
+value. This attribute has no effect if there's no accessibility
+support or if the \gloskey{shortaccess} field hasn't been assigned
+or if the \gloskey{access} field is used explicitly. This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+\item[\catattrdef{textshortaccess}] Like \gloskey{nameshortaccess}
+but applies to the \gloskey{textaccess} field (for use with
+regular abbreviations).
+
+\item[\catattrdef{firstshortaccess}] Like \gloskey{nameshortaccess}
+but applies to the \gloskey{firstaccess} field (for use with
+regular abbreviations).
+
+\item[\catattrdef{accessaposplural}] This boolean attribute overrides
+\catattr{aposplural} for the \gloskey{shortpluralaccess} key.
+Has no effect if there's no accessibility support or if
+the \gloskey{shortaccess} key hasn't been set or if the
+\gloskey{shortpluralaccess} key is explicitly set. If
+the \catattr{aposplural} is set and this attribute isn't set
+and the \gloskey{shortaccess} key is set, then the
+\catattr{aposplural} setting governs the default
+\gloskey{shortpluralaccess} setting. If you want
+\catattr{aposplural} but don't want it applied to the accessibility
+support, set the \catattr{accessaposplural} attribute to \qt{false}. This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+\item[\catattrdef{accessnoshortplural}] This boolean attribute overrides
+\catattr{noshortplural} for the \gloskey{shortpluralaccess} key.
+The same conditions apply as for \catattr{accessaposplural}. This attribute is only applicable to entries
+defined using \cs{newabbreviation} (or \cs{newacronym} if it's using
+\cs{newabbreviation}.)
+
+\item[\catattrdef{headuc}] If this attribute is set to \qt{true},
+commands like \ics{glsfmtshort} will use the upper case version
+in the page headers.
+
+\item[\catattrdef{tagging}] If this attribute is set to \qt{true},
+the tagging command defined by \ics{GlsXtrEnableInitialTagging}
+will be activated to use \ics{glsxtrtagfont} in the glossary
+(see \sectionref{sec:tagging}).
+
+\item[\catattrdef{entrycount}] Unlike the above attributes,
+this attribute isn't boolean but instead must be an integer
+value and is used in combination with \ics{glsenableentrycount}
+(see \sectionref{sec:entrycountmods}). Leave blank or undefined
+for categories that shouldn't have this facility enabled. The
+value of this attribute is used by \ics{glsxtrifcounttrigger}
+to determine how commands such as \ics{cgls} should behave.
+
+With \styfmt{glossaries}, commands like \cs{cgls} use \cs{cglsformat}
+only if the previous usage count for that entry was equal to~1.
+With \styfmt{glossaries-extra} the test is now for entries that
+have the \catattr{entrycount} attribute set and
+where the previous usage count for that entry is less than or
+equal to the value of that attribute.
+
+\item[\catattrdef{linkcount}] This attribute is set to
+\texttt{true} by \ics{GlsXtrEnableLinkCounting} (see
+\sectionref{sec:linkcount}).
+
+\item[\catattrdef{linkcountmaster}] This attribute is set to
+the name of the master counter by \ics{GlsXtrEnableLinkCounting}
+if the optional argument is provided (see
+\sectionref{sec:linkcount}).
+
+\item[\catattrdef{glossdesc}] The \ics{glossentrydesc} command
+(used in the predefined glossary styles) is modified by
+\styfmt{glossaries-extra} to check for this attribute.
+The attribute may have one of the following values:
+\begin{itemize}
+\item \texttt{firstuc}: the first letter of the description will be
+converted to upper case (using \ics{Glsentrydesc}).
+
+\item \texttt{title}: the description will be used in the argument of the
+title casing command \ics{capitalisewords} (provided by
+\sty{mfirstuc}). If you want to use a different command
+you can redefine:
+\begin{definition}[\DescribeMacro\glsxtrfieldtitlecasecs]
+\cs{glsxtrfieldtitlecasecs}\marg{phrase cs}
+\end{definition}
+For example:
+\begin{verbatim}
+\newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisefmtwords*{#1}}
+\end{verbatim}
+(Note that the argument to \cs{glsxtrfieldtitlecasecs}
+will be a control sequence whose replacement text is the
+entry's description, which is why \cs{xcapitalisefmtwords}
+is needed instead of \cs{capitalisefmtwords}.)
+
+\end{itemize}
+Any other values of this attribute are ignored. Remember
+that there are design limitations for both the first letter
+uppercasing and the title casing commands. See the \sty{mfirstuc}
+user manual for further details.
+
+\item[\catattrdef{glossdescfont}] (New to version 1.04)
+In addition to the above, the modified \ics{glossentrydesc}
+command also checks this attribute. If set, it should be the name of
+a control sequence (without the leading backslash) that takes one
+argument. This control sequence will be applied to the description
+text. For example:
+\begin{verbatim}
+\glssetcategoryattribute{general}{glossdescfont}{emph}
+\end{verbatim}
+
+
+\item[\catattrdef{glossname}] As \catattr{glossdesc} but applies
+to \ics{glossentryname}. Additionally, if this attribute is
+set to \qt{uc} the name is converted to all capitals.
+
+\item[\catattrdef{indexname}] If set, the \cs{glsxtrpostnamehook} hook
+used at the end of \ics{glossentryname}
+will index the entry using \ics{index}. See
+\sectionref{sec:autoindex} for further details.
+
+\item[\catattrdef{glossnamefont}] (New to version 1.04)
+In addition to the above, the modified \ics{glossentryname}
+command also checks this attribute. If set, it should be the name of
+a control sequence (without the leading backslash) that takes one
+argument. This control sequence will be applied to the name
+text. For example:
+\begin{verbatim}
+\glssetcategoryattribute{general}{glossnamefont}{emph}
+\end{verbatim}
+Note that this overrides \cs{glsnamefont} which will only
+be used if this attribute hasn't been set.
+
+Remember that glossary styles may additionally apply a font change,
+such as the list styles which put the name in the optional argument
+of \cs{item}.
+
+\item[\catattrdef{textformat}] (New to version 1.21.)
+Commands like \cs{gls} and \cs{glstext} have the link text
+encapsulated in the argument of \cs{glstextformat} by default. If
+this attribute is set, the control sequence given by the attribute
+value will be used instead. As with the above, the attribute value
+should be the name (without the leading backslash) of a command that
+takes a single argument (the link text). Remember that the
+abbreviation styles may apply an additional font change.
+
+\item[\catattrdef{hyperoutside}] (New to v1.21.) The attribute value
+may be \texttt{false}, \texttt{true} or unset. If unset,
+\texttt{true} is assumed. This indicates the default setting
+of the \gloskey[glslink]{hyperoutside} key, described in
+\sectionref{sec:wrglossary}.
+
+\item[\catattrdef{dualindex}] If set, whenever a glossary entry
+has information written to the external glossary file
+through commands like \ics{gls} and \ics{glsadd}, a~corresponding
+line will be written to the indexing file using \ics{index}. See
+\sectionref{sec:autoindex} for further details.
+
+\item[\catattrdef{targeturl}] If set, the hyperlink generated by
+commands like \cs{gls} will be set to the URL provided by this
+attributes value. For example:
+\begin{verbatim}
+\glssetcategoryattribute{general}{targeturl}{master-doc.pdf}
+\end{verbatim}
+(See also the accompanying sample file
+\texttt{sample-external.tex}.) If the URL contains awkward
+characters (such as \verb|%| or \verb|~|) remember that the base
+\styfmt{glossaries} package provides commands like
+\ics{glspercentchar} and \cs{glstildechar} that expand to literal
+characters.
+
+If you want to a named anchor within the target URL (notionally
+adding \texttt{\#}\meta{name} to the URL), then you also
+need to set \catattr{targetname} to the anchor \meta{name}. You may
+use \cs{glslabel} within \meta{name} which is set by commands
+like \cs{gls} to the entry's label.
+
+All the predefined glossary styles start each entry
+listing with \cs{glstarget} which sets the anchor to
+\verb|\glolinkprefix\glslabel|, so if you want entries to link
+to glossaries in the URL given by \catattr{targeturl}, you
+can just do:
+\begin{verbatim}
+\glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel}
+\end{verbatim}
+(If the target document changed \cs{glolinkprefix} then you will
+need to adjust the above as appropriate.)
+
+If the anchor is in the form \meta{name1}\texttt{.}\meta{name2}
+then use \catattr{targetname} for the \meta{name2} part and
+\catattr{targetcategory} for the \meta{name1} part.
+
+For example:
+\begin{verbatim}
+\glssetcategoryattribute{general}{targeturl}{master-doc.pdf}
+\glssetcategoryattribute{general}{targetcategory}{page}
+\glssetcategoryattribute{general}{targetname}{7}
+\end{verbatim}
+will cause all link text for \texttt{general} entries to
+link to \texttt{master-doc.pdf\#page.7} (page 7 of that PDF).
+
+If you want a mixture in your document of entries that link to
+an internal glossary and entries that link to an external URL
+then you can use the starred form of \ics{newignoredglossary}
+for the external list. For example:
+\begin{verbatim}
+\newignoredglossary*{external}
+
+\glssetcategoryattribute{external}{targeturl}{master-doc.pdf}
+\glssetcategoryattribute{general}{targetname}{\glolinkprefix\glslabel}
+
+\newglossaryentry{sample}{name={sample},description={local example}}
+
+\newglossaryentry{sample2}{name={sample2},
+ type=external,
+ category=external,
+ description={external example}}
+\end{verbatim}
+
+\item[\catattrdef{externallocation}] The value should be the
+file name of the target document when manually indexing an
+external location (see \sectionref{sec:wrglossary}). In general,
+it's better to use \gls{bib2gls} v1.7+ which can handle multiple
+external sources and doesn't require this attribute.
+
+\end{description}
+
+An attribute can be set using:
+\begin{definition}[\DescribeMacro\glssetcategoryattribute]
+\cs{glssetcategoryattribute}\marg{category-label}\marg{attribute-label}\marg{value}
+\end{definition}
+where \meta{category-label} is the category label,
+\meta{attribute-label} is the attribute label and \meta{value} is
+the new value for the attribute.
+
+There is a shortcut version to set the \catattr{regular} attribute
+to \qt{true}:
+\begin{definition}[\DescribeMacro\glssetregularcategory]
+\cs{glssetregularcategory}\marg{category-label}
+\end{definition}
+
+If you need to lookup the category label for a particular entry, you
+can use the shortcut command:
+\begin{definition}[\DescribeMacro\glssetattribute]
+\cs{glssetattribute}\marg{entry-label}\marg{attribute-label}\marg{value}
+\end{definition}
+This uses \cs{glssetcategoryattribute} with \cs{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:
+\begin{definition}[\DescribeMacro\glsgetcategoryattribute]
+\cs{glsgetcategoryattribute}\marg{category-label}\marg{attribute-label}
+\end{definition}
+Again there is a shortcut if you need to lookup the category label
+for a given entry:
+\begin{definition}[\DescribeMacro\glsgetattribute]
+\cs{glsgetattribute}\marg{entry-label}\marg{attribute-label}
+\end{definition}
+
+You can test if an attribute has been assigned to a given
+category using:
+\begin{definition}[\DescribeMacro\glshascategoryattribute]
+\cs{glshascategoryattribute}\marg{category-label}\marg{attribute-label}\marg{true
+code}\marg{false code}
+\end{definition}
+This uses \sty{etoolbox}'s
+\cs{ifcsvoid} and does \meta{true code} if the attribute has been
+set and isn't blank and isn't \cs{relax}. The shortcut if you need
+to lookup the category label from an entry is:
+\begin{definition}[\DescribeMacro\glshasattribute]
+\cs{glshasattribute}\marg{entry-label}\marg{attribute-label}\marg{true
+code}\marg{false code}
+\end{definition}
+
+You can test the value of an attribute for a particular category
+using:
+\begin{definition}[\DescribeMacro\glsifcategoryattribute]
+\cs{glsifcategoryattribute}\marg{category-label}\marg{attribute-label}\marg{value} \marg{true-part}\marg{false-part}
+\end{definition}
+This tests if the attribute (given by \meta{attribute-label}) for
+the category (given by \meta{category-label}) is set and equal to
+\meta{value}. If true, \meta{true-part} is done. If the attribute
+isn't set or is set but isn't equal to \meta{value}, \meta{false
+part} is done.
+
+For example:
+\begin{verbatim}
+\glsifcategoryattribute{general}{nohyper}{true}{NO HYPER}{HYPER}
+\end{verbatim}
+This does \qt{NO HYPER} if the \category{general} category has the
+\catattr{nohyper} attribute set to \texttt{true} otherwise if
+does \qt{HYPER}.
+
+With boolean-style attributes like \catattr{nohyper}, make sure you
+always test for \texttt{true} not \texttt{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:
+\begin{definition}[\DescribeMacro\glsifattribute]
+\cs{glsifattribute}\marg{entry-label}\marg{attribute-label}\marg{value}\marg{true-part} \marg{false-part}
+\end{definition}
+
+There's also a shortcut to determine if a particular category has
+the \catattr{regular} attribute set to \qt{true}:
+\begin{definition}[\DescribeMacro\glsifregularcategory]
+\cs{glsifregularcategory}\marg{category-label}\marg{true-part}\marg{false-part}
+\end{definition}
+Alternatively, if you need to lookup the category for a particular
+entry:
+\begin{definition}[\DescribeMacro\glsifregular]
+\cs{glsifregular}\marg{entry-label}\marg{true-part}\marg{false-part}
+\end{definition}
+Note that if the \catattr{regular} attribute hasn't be set, the
+above do \meta{false-part}. There are also reverse commands that
+test if the \catattr{regular} attribute has been set to \qt{false}:
+\begin{definition}[\DescribeMacro\glsifnotregularcategory]
+\cs{glsifnotregularcategory}\marg{category-label}\marg{true-part}\marg{false-part}
+\end{definition}
+or for a particular entry:
+\begin{definition}[\DescribeMacro\glsifnotregular]
+\cs{glsifnotregular}\marg{entry-label}\marg{true-part}\marg{false-part}
+\end{definition}
+Again, if the \catattr{regular} attribute hasn't been set, the above
+do \meta{false-part}, so these reverse commands aren't logically
+opposite in the strict sense.
+
+You can iterate through all entries with a given category using:
+\begin{definition}
+\cs{glsforeachincategory}\oarg{glossary-labels}\marg{category-label} \marg{glossary-cs}\marg{label-cs}\marg{body}
+\end{definition}
+This iterates through all entries in the glossaries identified by
+the comma-separated list \meta{glossary-labels} that have the
+category given by \meta{category-label} and performs \meta{body} for
+each match. Within \meta{body}, you can use \meta{glossary-cs} and
+\meta{label-cs}
+(which much be control sequences) to access the current glossary and
+entry label. If \meta{glossary-labels} is omitted, all glossaries
+are assumed.
+
+Similarly, you can iterate through all entries that have a category
+with a given attribute using:
+\begin{definition}[\DescribeMacro\glsforeachwithattribute]
+\cs{glsforeachwithattribute}\oarg{glossary-labels}\marg{attribute-label} \marg{attribute-value}\marg{glossary-cs}\marg{label-cs}\marg{body}
+\end{definition}
+This will do \meta{body} for each entry that has a category with the
+attribute \meta{attribute-label} set to \meta{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
+\ics{glsfielddef}. Alternatively, you can use
+\begin{definition}[\DescribeMacro\glsxtrsetcategory]
+\cs{glsxtrsetcategory}\marg{entry-labels}\marg{category-label}
+\end{definition}
+This will change the category to \meta{category-label} for each
+entry listed in the comma-separated list \meta{entry-labels}. This
+command uses \ics{glsfieldxdef} so it will expand
+\meta{category-label} and make the change global.
+
+You can also change the category for all entries with a glossary or
+glossaries using:
+\begin{definition}[\DescribeMacro\glsxtrsetcategoryforall]
+\cs{glsxtrsetcategoryforall}\marg{glossary-labels}\marg{category-label}
+\end{definition}
+where \meta{glossary-labels} is a comma-separated list of glossary
+labels.
+
+\chapter{Counting References}
+\label{sec:countref}
+
+There are three basic ways of counting entry references:
+\begin{enumerate}
+\item Counting the total number of times \cs{glsunset} is used
+(\cs{glsreset} resets the count and is best avoided).
+This is provided by the base \styfmt{glossaries} package and is
+intended for documents where the term should be displayed
+differently if it's only been used a certain number of times.
+The information has to be written to the \texttt{.aux} file
+so that it's available on the next \LaTeX\ run.
+
+This method is extended by \styfmt{glossaries-extra} and is
+described in \sectionref{sec:entrycount}.
+
+\item Counting the total number of records. This method is
+only available with \gls{bib2gls} and is intended
+for documents where the term should be displayed differently
+if it's only been recorded (indexed) a certain number of times.
+See \sectionref{sec:recordcount} for further details.
+
+\item Counting the number of times the \cs{gls}-like or
+\cs{glstext}-like commands are used. (That is, those commands
+that internally use \cs{@gls@link}.) Unlike the other two methods,
+this just provides a running total rather than the total from the
+previous \LaTeX\ run. This method is intended to make it more
+convenient to work with hooks like \cs{glslinkcheckfirsthyperhook},
+\cs{glslinkpostsetkeys} or \cs{glslinkpresetkeys}.
+See \sectionref{sec:linkcount} for further details.
+\end{enumerate}
+
+\section{Entry Counting (First Use Flag)}
+\label{sec:entrycount}
+
+As mentioned in \sectionref{sec:entrycountmods},
+\styfmt{glossaries-extra} modifies the \ics{glsenableentrycount} command to allow
+for the \catattr{entrycount} attribute. This means that
+you not only need to enable entry counting with
+\ics{glsenableentrycount}, but you also need
+to set the appropriate attribute (see \sectionref{sec:categories}).
+
+\begin{important}
+Remember that entry counting only counts the number of times an
+entry is used by commands that change the \gls{firstuseflag}. (That
+is, all those commands that mark the entry as having been used.)
+There are many commands that don't modify this flag and they won't
+contribute to the entry use count.
+\end{important}
+
+With \styfmt{glossaries-extra}, you may use \ics{cgls} instead of
+\ics{gls} even if you haven't enabled entry counting. You will only
+get a warning if you use \cs{glsenableentrycount} without setting
+the \catattr{entrycount} attribute. (With \styfmt{glossaries},
+commands like \ics{cgls} will generate a warning if
+\cs{glsenableentrycount} hasn't been used.) The abbreviation
+shortcut \ics{ab} uses \cs{cgls} (see
+\sectionref{sec:abbrshortcuts}). The acronym shortcut
+\ics{ac} uses \cs{cgls} if it's been defined with
+\pkgopt[ac]{shortcuts} (or \pkgopt[all]{shortcuts})
+but uses \cs{gls} if it's been defined with
+\pkgopt[acronyms]{shortcuts} (or \pkgopt[acro]{shortcuts}).
+
+All upper case versions (not provided by \styfmt{glossaries}) are
+also available:
+\begin{definition}[\DescribeMacro\cGLS]
+\cs{cGLS}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\cGLSpl]
+\cs{cGLSpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+These are analogous to \cs{cgls} and \cs{cglspl} but they
+use
+\begin{definition}[\DescribeMacro\cGLSformat]
+\cs{cGLSformat}\marg{label}\marg{insert}
+\end{definition}
+and
+\begin{definition}[\DescribeMacro\cGLSplformat]
+\cs{cGLSplformat}\marg{label}\marg{insert}
+\end{definition}
+which convert the analogous \cs{cglsformat} and
+\cs{cglsplformat} to upper case.
+
+Just using \styfmt{glossaries}:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries}
+
+\makeglossaries
+
+\glsenableentrycount
+
+\newacronym{html}{HTML}{hypertext markup language}
+\newacronym{xml}{XML}{extensible markup language}
+
+\begin{document}
+
+Used once: \cgls{html}.
+
+Used twice: \cgls{xml} and \cgls{xml}.
+
+\printglossaries
+
+\end{document}
+\end{verbatim}
+
+If you switch to \styfmt{glossaries-extra} you must set the
+\catattr{entrycount} attribute:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\glsenableentrycount
+
+\glssetcategoryattribute{abbreviation}{entrycount}{1}
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+\newabbreviation{xml}{XML}{extensible markup language}
+
+\begin{document}
+
+Used once: \cgls{html}.
+
+Used twice: \cgls{xml} and \cgls{xml}.
+
+\printglossaries
+
+\end{document}
+\end{verbatim}
+
+When activated with \cs{glsenableentrycount}, commands such as
+\ics{cgls} now use
+\begin{definition}[\DescribeMacro\glsxtrifcounttrigger]
+\cs{glsxtrifcounttrigger}\marg{label}\marg{trigger code}\marg{normal
+code}
+\end{definition}
+to determine if the entry trips the entry count trigger.
+The \meta{trigger code} uses commands like \cs{cglsformat} and
+unsets the \gls{firstuseflag}. The \meta{normal code} is the code that
+would ordinarily be performed by whatever the equivalent
+command is (for example, \cs{cgls} will use \cs{cglsformat} in
+\meta{trigger code} but the usual \cs{gls} behaviour in \meta{normal
+code}).
+
+The default definition is:
+\begin{verbatim}
+\newcommand*{\glsxtrifcounttrigger}[3]{%
+ \glshasattribute{#1}{entrycount}%
+ {%
+ \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax
+ #3%
+ \else
+ #2%
+ \fi
+ }%
+ {#3}%
+}
+\end{verbatim}
+This means that if an entry is assigned to a category that has
+the \catattr{entrycount} attribute then the \meta{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:
+\begin{verbatim}
+\glssetcategoryattribute{abbreviation}{entrycount}{4}
+\end{verbatim}
+
+There is a convenient command provided to enable entry counting,
+set the \catattr{entrycount} attribute and redefine \ics{gls},
+etc to use \ics{cgls} etc:
+\begin{definition}[\DescribeMacro\GlsXtrEnableEntryCounting]
+\cs{GlsXtrEnableEntryCounting}\marg{categories}\marg{value}
+\end{definition}
+The first argument \meta{categories} is a comma-separated list
+of categories. For each category, the \catattr{entrycount}
+attribute is set to \meta{value}. In addition, this does:
+\begin{verbatim}
+\renewcommand*{\gls}{\cgls}%
+\renewcommand*{\Gls}{\cGls}%
+\renewcommand*{\glspl}{\cglspl}%
+\renewcommand*{\Glspl}{\cGlspl}%
+\renewcommand*{\GLS}{\cGLS}%
+\renewcommand*{\GLSpl}{\cGLSpl}%
+\end{verbatim}
+This makes it easier to enable entry-counting on existing
+documents.
+
+If you use \cs{GlsXtrEnableEntryCounting} more than once, subsequent uses will
+just set the \catattr{entrycount} attribute for each listed
+category.
+
+The above example document can then become:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\GlsXtrEnableEntryCounting{abbreviation}{1}
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+\newabbreviation{xml}{XML}{extensible markup language}
+
+\begin{document}
+
+Used once: \gls{html}.
+
+Used twice: \gls{xml} and \gls{xml}.
+
+\printglossaries
+
+\end{document}
+\end{verbatim}
+
+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
+\begin{definition}[\DescribeMacro\GlsXtrEnableEntryUnitCounting]
+\cs{GlsXtrEnableEntryUnitCounting}\marg{categories}\marg{value}\marg{counter-name}
+\end{definition}
+where \meta{categories} is a comma-separated list of categories
+to which this feature should be applied, \meta{value} is the
+trigger value and \meta{counter-name} is the name of the counter
+used by the sectional unit.
+
+\begin{important}
+Due to the asynchronous nature of \TeX's output routine,
+discrepancies will occur in page spanning paragraphs if you
+use the \ctr{page} counter.
+\end{important}
+
+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 \cs{the}\meta{counter-name} needs to be expandable.
+Since \sty{hyperref} also has a similar requirement and provides
+\cs{theH}\meta{counter-name} as an expandable alternative,
+\styfmt{glossaries-extra} will use \cs{theH}\meta{counter-name}
+if it exists otherwise it will use \cs{the}\meta{counter-name}.
+
+The per-unit counting function uses two attributes: \catattr{entrycount}
+(as before) and \catattr{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:
+\begin{definition}[\DescribeMacro\glsentrycurrcount]
+\cs{glsentrycurrcount}\marg{label}
+\end{definition}
+and the final value from the previous run:
+\begin{definition}[\DescribeMacro\glsentryprevcount]
+\cs{glsentryprevcount}\marg{label}
+\end{definition}
+In the case of the per-unit counting, this is the final value
+\emph{for the current unit}. In both commands \meta{label}
+is the entry's label.
+
+The per-unit counting mechanism additionally provides:
+\begin{definition}[\DescribeMacro\glsentryprevtotalcount]
+\cs{glsentryprevtotalcount}\marg{label}
+\end{definition}
+which gives the sum of all the per-unit totals from the previous run
+for the entry given by \meta{label}, and
+\begin{definition}[\DescribeMacro\glsentryprevmaxcount]
+\cs{glsentryprevmaxcount}\marg{label}
+\end{definition}
+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:
+\begin{verbatim}
+\documentclass{report}
+\usepackage{glossaries-extra}
+
+\GlsXtrEnableEntryUnitCounting{abbreviation}{2}{chapter}
+
+\makeglossaries
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+\newabbreviation{css}{CSS}{cascading style sheet}
+
+\newglossaryentry{sample}{name={sample},description={sample}}
+
+\begin{document}
+\chapter{Sample}
+
+Used once: \gls{html}.
+
+Used three times: \gls{css} and \gls{css} and \gls{css}.
+
+Used once: \gls{sample}.
+
+\chapter{Another Sample}
+
+Used once: \gls{css}.
+
+Used twice: \gls{html} and \gls{html}.
+
+\printglossaries
+\end{document}
+\end{verbatim}
+In this document, the \texttt{css} entry is used three times in the
+first chapter. This is more than the trigger value of 2, so
+\verb|\gls{css}| is expanded on \gls{firstuse} with the short
+form used on subsequent use, and the \texttt{css} entries in
+that chapter are added to the glossary. In the second chapter,
+the \texttt{css} entry is only used once, which trips the
+suppression trigger, so in that chapter, the long form
+is used and \verb|\gls{css}| doesn't get a line added to
+the glossary file.
+
+The \texttt{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 \texttt{sample} entry has only been used once, but it doesn't
+trip the indexing suppression because it's in the \category{general}
+category, which hasn't been listed in
+\cs{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 \ics{gls} by modifying the
+hook
+\begin{definition}[\DescribeMacro\glslinkcheckfirsthyperhook]
+\cs{glslinkcheckfirsthyperhook}
+\end{definition}
+which is used at the end of the macro the determines whether
+or not to suppress the hyperlink.
+
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\GlsXtrEnableEntryUnitCounting{general}{0}{page}
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\renewcommand*{\glslinkcheckfirsthyperhook}{%
+ \ifnum\glsentrycurrcount\glslabel>0
+ \setkeys{glslink}{hyper=false}%
+ \fi
+}
+
+\begin{document}
+
+A \gls{sample} entry.
+Next use: \gls{sample}.
+
+\newpage
+
+Next page: \gls{sample}.
+Again: \gls{sample}.
+
+\printglossaries
+
+\end{document}
+\end{verbatim}
+This only produces a hyperlink for the first instance of
+\verb|\gls{sample}| on each page.
+
+The earlier warning about using the \ctr{page} counter still
+applies. If the first instance of \cs{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.
+
+\section{Link Counting}
+\label{sec:linkcount}
+
+As from version 1.26, an alternative method of entry counting
+is to count the number of times the \cs{gls}-like or
+\cs{glstext}-like commands are used. (The \qt{link} in this method's
+name refers to the use of the internal command \cs{@gls@link}
+not to \cs{hyperlink} although \cs{@gls@link} may use
+\cs{hyperlink} when displaying the \gls{linktext}.)
+
+To enable link counting use the preamble-only command:
+\begin{definition}[\DescribeMacro\GlsXtrEnableLinkCounting]
+\cs{GlsXtrEnableLinkCounting}\oarg{master counter}\marg{categories}
+\end{definition}
+where \meta{categories} is a list of category labels. The optional
+argument \meta{master counter} may be used to identify a master
+counter (which must be defined). If present, the associated
+link counter will be reset when the master counter is incremented.
+This command automatically sets the \catattr{linkcount} attribute
+for the given categories. If the optional argument is
+present, it also sets the \catattr{linkcountmaster} attribute.
+
+When enabled, commands like \cs{gls} and \cs{glstext}
+increment the associated counter using
+\begin{definition}[\DescribeMacro\glsxtrinclinkcounter]
+\cs{glsxtrinclinkcounter}\marg{counter name}
+\end{definition}
+This just does
+\texttt{\cs{stepcounter}\marg{counter name}} by default but if you
+need \cs{refstepcounter} instead, just redefine this command:
+\begin{verbatim}
+\renewcommand*{\glsxtrinclinkcounter}[1]{\refstepcounter{#1}}
+\end{verbatim}
+
+You can access the internal count register using
+\begin{definition}[\DescribeMacro\GlsXtrLinkCounterValue]
+\cs{GlsXtrLinkCounterValue}\marg{label}
+\end{definition}
+where \meta{label} is the entry's label. This will expand
+to 0 if the counter hasn't been defined.
+
+It's also possible to access the display value
+(\cs{the}\meta{counter}) using
+\begin{definition}[\DescribeMacro\GlsXtrTheLinkCounter]
+\cs{GlsXtrTheLinkCounter}\marg{counter}
+\end{definition}
+(This will expand to 0 if the counter hasn't been defined.)
+
+\begin{important}
+In order to conserve resources, the counter is only defined
+when it first needs to be incremented so terms that have
+been defined but haven't been used in the document
+won't have the associated count register allocated.
+\end{important}
+
+You can test if the counter has been defined using:
+\begin{definition}[\DescribeMacro\GlsXtrIfLinkCounterDef]
+\cs{GlsXtrIfLinkCounterDef}\marg{label}\marg{true}\marg{false}
+\end{definition}
+where \meta{label} is the entry's label.
+
+The counter name can be obtained using
+\begin{definition}[\DescribeMacro\GlsXtrLinkCounterName]
+\cs{GlsXtrLinkCounterName}\marg{label}
+\end{definition}
+This simply expands to the counter name associated with the
+entry given by \meta{label} without any check for
+existence. For example, to change the display command
+(\cs{the}\meta{counter}) using \sty{etoolbox}:
+\begin{verbatim}
+\csdef{the\GlsXtrLinkCounterName{duck}}{\Roman{\GlsXtrLinkCounterName{duck}}}
+\end{verbatim}
+This is useful if you just want to change the display for
+specific entries but isn't convenient if you want to change the
+display for all entries. Instead, it's simpler to redefine
+\cs{GlsXtrTheLinkCounter}. For example:
+\begin{verbatim}
+\renewcommand*{\GlsXtrTheLinkCounter}[1]{%
+ \GlsXtrIfLinkCounterDef{#1}%
+ {\Roman{\GlsXtrLinkCounterName{#1}}}%
+ {0}%
+}
+\end{verbatim}
+In both cases, the redefinition should be implemented
+after \cs{GlsXtrEnableLinkCounting}.
+
+Here's an example document that uses link counting to disable
+the hyperlink after the first reference. This redefines
+\ics{glslinkpresetkeys} (which is used by both \cs{gls}
+and \cs{glstext}) instead of
+\cs{glslinkcheckfirsthyperhook} (which is used by \cs{gls}
+but not by \cs{glstext}).
+
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\renewcommand*{\glslinkpresetkeys}{%
+ \ifnum\GlsXtrLinkCounterValue{\glslabel}>1
+ \setkeys{glslink}{hyper=false}%
+ \fi
+}
+
+\GlsXtrEnableLinkCounting{general}
+
+\newglossaryentry{sample1}{name={sample1},description={an example}}
+\newglossaryentry{sample2}{name={sample2},description={another example}}
+
+\newabbreviation{ex}{ex}{example}
+
+\begin{document}
+
+\section{Sample Section}
+
+\Gls{sample1}, \gls{sample2} and \gls{ex}.
+\Glstext{sample1} and \gls{ex} again.
+
+\section{Another Sample Section}
+
+\Gls{sample1}, \gls{sample2} and \gls{ex}.
+
+\printglossaries
+
+\end{document}
+\end{verbatim}
+The use of \ics{glslinkpresetkeys}
+means that the options can override this. For example
+\begin{verbatim}
+\gls[hyper=true]{sample1}
+\end{verbatim}
+will override the \texttt{hyper=false} setting in
+\ics{glslinkpresetkeys}. If \ics{glslinkpostsetkeys} is used
+instead, the \texttt{hyper=false} setting will override
+the setting provided in the optional argument.
+
+The \category{abbreviation} category doesn't have the
+\catattr{linkcount} attribute set (since it's not
+listed in the argument of \cs{GlsXtrEnableLinkCounting}). This means that
+\cs{GlsXtrLinkCounterValue}
+always expands to 0 for the abbreviation (\texttt{ex}), so the
+inequality test
+\begin{verbatim}
+\ifnum\GlsXtrLinkCounterValue{\glslabel}>1
+\end{verbatim}
+will always be false. This means that the abbreviation won't
+have \texttt{hyper=false} applied. If the test is changed to
+\begin{verbatim}
+\ifnum\GlsXtrLinkCounterValue{\glslabel}=1
+\else
+ \setkeys{glslink}{hyper=false}%
+\fi
+\end{verbatim}
+Then the abbreviation will always have \texttt{hyper=false}
+applied.
+
+To reset the counter every section use the optional argument to set
+the master counter:
+\begin{verbatim}
+\GlsXtrEnableLinkCounting[section]{general}
+\end{verbatim}
+
+\chapter{Auto-Indexing}
+\label{sec:autoindex}
+
+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: \catattr{indexname}
+and \catattr{dualindex}.
+
+\begin{important}
+The auto-indexing is designed for \gls{makeindex} syntax. If you've
+used the \pkgopt{xindy} package option, the automatic escaping of
+\gls{xindy} special characters in the \gloskey{sort} field may
+result in an incorrect sort value for the \cs{index} command used by
+the auto-indexing. Note also that \app{texindy} has a fixed set of
+special characters (corresponding to \gls{makeindex}['s] defaults)
+that can't be customized. You may want to consider using \gls{bib2gls} and
+its dual entries as an alternative approach.
+\end{important}
+
+\begin{sloppypar}
+The \ics{glsxtrpostnamehook} macro, used
+at the end of \ics{glossentryname} and \ics{Glossentryname},
+checks the \catattr{indexname} attribute for the category
+associated with that entry.
+Since \cs{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 \gloskey{name} key.
+\end{sloppypar}
+
+The internal macro used by the \styfmt{glossaries} package to
+write the information to the external glossary file is
+modified to check for the \catattr{dualindex} attribute.
+
+In both cases, the indexing is done through
+\begin{definition}[\DescribeMacro\glsxtrdoautoindexname]
+\cs{glsxtrdoautoindexname}\marg{label}\marg{attribute-label}
+\end{definition}
+This uses the standard \ics{index} command with the sort value
+taken from the entry's \gloskey{sort} key and the actual value
+set to \cs{glsentryname}\marg{label}. As from v1.16, there are
+user-level commands available to change the sort and actual
+value used by the automated index.
+
+The actual value is given by
+\begin{definition}[\DescribeMacro\glsxtrautoindexentry]
+\cs{glsxtrautoindexentry}\marg{label}
+\end{definition}
+where \meta{label} is the entry's label. The default definition
+is:
+\begin{verbatim}
+\newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}}
+\end{verbatim}
+Note the use of \cs{string} to prevent \cs{glsentryname} from
+being expanded as it's written to the index file.
+
+The sort value is assigned using:
+\begin{definition}[\DescribeMacro\glsxtrautoindexassignsort]
+\cs{glsxtrautoindexassignsort}\marg{cs}\marg{label}
+\end{definition}
+where \meta{label} is the entry label and \meta{cs} is the command
+which needs to be set to the sort value. The default definition is:
+\begin{verbatim}
+\newcommand*{\glsxtrautoindexassignsort}[2]{%
+ \glsletentryfield{#1}{#2}{sort}%
+}
+\end{verbatim}
+After this macro is called, \meta{cs} is then processed to escape
+any of \app{makeindex}'s special characters. Note that this
+escaping is only performed on the sort not on the actual value.
+The escaping of the sort value is performed by
+\begin{definition}[\DescribeMacro\glsxtrautoindexesc]
+\cs{glsxtrautoindexesc}
+\end{definition}
+You can redefine this to do nothing if you want to omit the
+escaping. You may want to consider providing another field to obtain
+the appropriate sort value if the one provided in the \gloskey{sort}
+field isn't suitable (because it may already have had special
+characters escaped or it may be a numeric value in the case of
+sort by use or definition).
+
+The command used to perform the actual indexing is:
+\begin{definition}[\DescribeMacro\glsxtrautoindex]
+\cs{glsxtrautoindex}\marg{text}
+\end{definition}
+This just does \cs{index}\marg{text} by default.
+
+\begin{important}
+The entry's \gloskey{parent} field isn't referenced in this
+automated indexing.
+\end{important}
+
+For example, to index the value of the \gloskey{first} key,
+instead of the \gloskey{name} key:
+\begin{verbatim}
+\renewcommand*{\glsxtrautoindexentry}[1]{\string\glsentryfirst{#1}}
+\end{verbatim}
+and if the sort value also needs to be set to the \gloskey{long}
+field, if present, otherwise the \gloskey{sort} field:
+\begin{verbatim}
+\renewcommand*{\glsxtrautoindexassignsort}[2]{%
+ \ifglshaslong{#2}%
+ {\glsletentryfield{#1}{#2}{long}}%
+ {\glsletentryfield{#1}{#2}{sort}}%
+}
+\end{verbatim}
+
+If the value of the attribute given by \meta{attribute-label}
+is \qt{true}, no encap
+will be added, otherwise the encap will be the
+attribute value. For example:
+\begin{verbatim}
+\glssetcategoryattribute{general}{indexname}{textbf}
+\end{verbatim}
+will set the encap to \texttt{textbf} which will display the
+relevant page number in bold whereas
+\begin{verbatim}
+\glssetcategoryattribute{general}{dualindex}{true}
+\end{verbatim}
+won't apply any formatting to the page number in the index.
+
+\begin{important}
+The location used in the index will always be the page number
+not the counter used in the glossary. (Unless some other loaded
+package has modified the definition of \cs{index} to use
+some thing else.)
+\end{important}
+
+By default the \gloskey[glslink]{format} key won't be used with
+the \catattr{dualindex} attribute. You can allow the
+\gloskey[glslink]{format} key to override the attribute value
+by using the preamble-only command:
+\begin{definition}[\DescribeMacro\GlsXtrEnableIndexFormatOverride]
+\cs{GlsXtrEnableIndexFormatOverride}
+\end{definition}
+If you use this command and \sty{hyperref} has been loaded,
+then the \env{theindex} environment will be modified to redefine
+\ics{glshypernumber} to allow formats that use that command.
+
+\begin{important}
+The \catattr{dualindex} attribute will still be used on
+subsequent use even if the \catattr{indexonlyfirst} attribute
+(or \pkgopt{indexonlyfirst} package option) is set. However,
+the \catattr{dualindex} attribute will honour the
+\gloskey[glslink]{noindex} key.
+\end{important}
+
+The \cs{glsxtrdoautoindexname} command will attempt to escape any of
+\ics{makeindex}'s special characters, but there may be special cases
+where it fails, so take care. This assumes the default \gls{makeindex} actual,
+level, quote and encap values (unless any of the commands
+\ics{actualchar}, \ics{levelchar}, \ics{quotechar} or
+\ics{encapchar} have been defined before \styfmt{glossaries-extra}
+is loaded).
+
+If this isn't the case, you can use the following preamble-only
+commands to set the correct characters.
+\begin{important}
+Be very careful of possible shifting category codes!
+\end{important}
+
+\begin{definition}[\DescribeMacro\GlsXtrSetActualChar]
+\cs{GlsXtrSetActualChar}\marg{char}
+\end{definition}
+Set the actual character to \meta{char}.
+
+\begin{definition}[\DescribeMacro\GlsXtrSetLevelChar]
+\cs{GlsXtrSetLevelChar}\marg{char}
+\end{definition}
+Set the level character to \meta{char}.
+
+\begin{definition}[\DescribeMacro\GlsXtrSetEscChar]
+\cs{GlsXtrSetEscChar}\marg{char}
+\end{definition}
+Set the escape (quote) character to \meta{char}.
+
+\begin{definition}[\DescribeMacro\GlsXtrSetEncapChar]
+\cs{GlsXtrSetEncapChar}\marg{char}
+\end{definition}
+Set the encap character to \meta{char}.
+
+\chapter{On-the-Fly Document Definitions}
+\label{sec:onthefly}
+
+\begin{important}
+The commands described here may superficially look like
+\meta{word}\cs{index}\marg{word}, but they behave rather
+differently. If you want to use \cs{index} then just use
+\cs{index}.
+\end{important}
+
+The \styfmt{glossaries} package advises against defining entries
+in the \env{document} environment. As mentioned in
+\sectionref{sec:pkgopts} above, this ability is disabled by
+default with \styfmt{glossaries-extra} but can be enabled using
+the \pkgopt{docdefs} package options.
+
+Although this can be problematic, the \styfmt{glossaries-extra}
+package provides a way of defining and using entries within
+the \env{document} environment without the tricks used with the
+\pkgopt{docdefs} option. \emph{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:
+\begin{definition}[\DescribeMacro\GlsXtrEnableOnTheFly]
+\cs{GlsXtrEnableOnTheFly}
+\end{definition}
+When used, this defines the commands described below.
+
+\begin{important}
+The commands \cs{glsxtr}, \cs{glsxtrpl}, \cs{Glsxtr}
+and \cs{Glsxtrpl} can't be used after the glossaries have been
+displayed (through \ics{printglossary} etc). It's best not to mix
+these commands with the standard glossary commands, such
+as \cs{gls} or there may be unexpected results.
+\end{important}
+
+\begin{definition}[\DescribeMacro\glsxtr]
+\cs{glsxtr}\oarg{gls-options}\oarg{dfn-options}\marg{label}
+\end{definition}
+If an entry with the label \meta{label} has already been defined,
+this just does \cs{gls}\oarg{gls-options}\marg{label}. If
+\meta{label} hasn't been defined, this will define the entry
+using:
+\begin{alltt}
+\cs{newglossaryentry}\marg{label}\{name=\marg{label},
+ category=\cs{glsxtrcat},
+ description=\{\cs{nopostdesc}\},
+ \meta{dfn-options}\}
+\end{alltt}
+
+\begin{important}
+The \meta{label} must contain any non-expandable commands, such as
+formatting commands or problematic characters.
+If the term requires any of these, they must be omitted from the
+\meta{label} and placed in the \gloskey{name} key must be provided
+in the optional argument \meta{dfn-options}.
+\end{important}
+
+The second optional argument \meta{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
+\begin{definition}[\DescribeMacro\GlsXtrWarning]
+\cs{GlsXtrWarning}\marg{dfn-options}\marg{label}
+\end{definition}
+
+For example, this warning will be generated on the second instance
+of \cs{glsxtr} below:
+\begin{verbatim}
+\glsxtr[][plural=geese]{goose}
+% ... later
+\glsxtr[][plural=geese]{goose}
+\end{verbatim}
+
+If you are considering doing something like:
+\begin{verbatim}
+\newcommand*{\goose}{\glsxtr[][plural=geese]{goose}}
+\renewcommand*{\GlsXtrWarning}[2]{}
+% ... later
+\goose\ some more text here
+\end{verbatim}
+then don't bother. It's simpler and less problematic to just
+define the entries in the preamble with \ics{newglossaryentry}
+and then use \cs{gls} in the document.
+
+There are plural and case-changing alternatives to \cs{glsxtr}:
+\begin{definition}[\DescribeMacro\glsxtrpl]
+\cs{glsxtrpl}\oarg{gls-options}\oarg{dfn-options}\marg{label}
+\end{definition}
+This is like \cs{glsxtr} but uses \cs{glspl} instead of \cs{gls}.
+
+\begin{definition}[\DescribeMacro\Glsxtr]
+\cs{Glsxtr}\oarg{gls-options}\oarg{dfn-options}\marg{label}
+\end{definition}
+This is like \cs{glsxtr} but uses \cs{Gls} instead of \cs{gls}.
+
+\begin{definition}[\DescribeMacro\Glsxtrpl]
+\cs{Glsxtrpl}\oarg{gls-options}\oarg{dfn-options}\marg{label}
+\end{definition}
+This is like \cs{glsxtr} but uses \cs{Glspl} instead of \cs{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
+\XeLaTeX\ or \LuaLaTeX\ instead of \LaTeX\ (or \pdfLaTeX).
+If you really desperately want to use UTF-8 entry labels without
+switching to \XeLaTeX\ or \LuaLaTeX\ then there is a starred
+version of \cs{GlsXtrEnableOnTheFly} that allows you to
+use UTF-8 characters in \meta{label}, but it's experimental and
+may not work in some cases.
+
+\begin{important}
+If you use the starred version of \cs{GlsXtrEnableOnTheFly}
+don't use any commands in the \meta{label}, even if they expand
+to just text.
+\end{important}
+
+\chapter{\appfmt{bib2gls}: Managing Reference Databases}
+\label{sec:bib2gls}
+
+There is a new command line application called
+\gls{bib2gls}, which works in much the same way as
+a combination of \appfmt{bibtex} and
+\appfmt{makeindex}\slash\appfmt{xindy}.
+Instead of storing all your entry definitions in a \texttt{.tex} and
+loading them using \cs{input} or \cs{loadglsentries}, the entries
+can instead be stored in a \texttt{.bib} file and \gls{bib2gls} can
+selectively write the appropriate commands to a \texttt{.glstex}
+file which is loaded using \cs{glsxtrresourcefile} (or
+\cs{GlsXtrLoadResources}).
+
+This means that you can use a reference managing system, such as
+JabRef, to maintain the database and it reduces the \TeX\ overhead
+by only defining the entries that are actually required in the
+document. If you currently have a \texttt{.tex} file that contains
+hundreds of definitions, but you only use a dozen or so in your
+document, then the build time is needlessly slowed by the unrequired
+definitions that occur when the file is input. (You can convert an
+existing \texttt{.tex} file containing glossary definitions to a
+\texttt{.bib} file using \app{convertgls2bib}, supplied with
+\gls{bib2gls}.)
+
+There are some new commands and options added to
+\styfmt{glossaries-extra} to help assist the integration of
+\gls{bib2gls} into the document build process.
+
+This chapter just provides a general overview of \gls{bib2gls}.
+The full details and some sample documents are provided
+in the \gls{bib2gls} \href{http://mirrors.ctan.org/support/bib2gls/bib2gls.pdf}{manual}.
+
+An example of the contents of \texttt{.bib} file that stores
+glossary entries that can be extracted with \gls{bib2gls}:
+\begin{verbatim}
+@entry{bird,
+ name={bird},
+ description = {feathered animal},
+ see={[see also]{duck,goose}}
+}
+
+@entry{duck,
+ name={duck},
+ description = {a waterbird with short legs}
+}
+
+@entry{goose,
+ name="goose",
+ plural="geese",
+ description={a waterbird with a long neck}
+}
+\end{verbatim}
+
+The follow provides some abbreviations:
+\begin{verbatim}
+@string{ssi={server-side includes}}
+@string{html={hypertext markup language}}
+
+@abbreviation{shtml,
+ short="shtml",
+ long= ssi # " enabled " # html,
+ description={a combination of \gls{html} and \gls{ssi}}
+}
+
+@abbreviation{html,
+ short ="html",
+ long = html,
+ description={a markup language for creating web pages}
+}
+
+@abbreviation{ssi,
+ short="ssi",
+ long = ssi,
+ description={a simple interpreted server-side scripting language}
+}
+\end{verbatim}
+
+Here are some symbols:
+\begin{verbatim}
+preamble{"\providecommand{\mtx}[1]{\boldsymbol{#1}}"}
+
+@symbol{M,
+ name={$\mtx{M}$},
+ text={\mtx{M}},
+ description={a matrix}
+}
+
+@symbol{v,
+ name={$\vec{v}$},
+ text={\vec{v}},
+ description={a vector}
+}
+
+@symbol{S,
+ name={$\mathcal{S}$},
+ text={\mathcal{S}},
+ description={a set}
+}
+\end{verbatim}
+
+To ensure that \gls{bib2gls} can find out which entries have been
+used in the document, you need the \pkgopt{record} package option:
+\begin{verbatim}
+\usepackage[record]{glossaries-extra}
+\end{verbatim}
+If this option's value is omitted (as above), the normal indexing
+will be switched off, since \gls{bib2gls} can also sort the entries and
+collate the locations.
+
+If you still want to use an indexing application (for example, you
+need a custom \gls{xindy} rule), then just use
+\pkgopt[alsoindex]{record} and continue to use \cs{makeglossaries}
+and \cs{printglossary} (or \cs{printglossaries}), but you also need
+to instruct \gls{bib2gls} to omit sorting to save time and
+to prevent the \gloskey{sort} key from being set.
+
+The \texttt{.glstex} file created by \gls{bib2gls} is loaded using:
+\begin{definition}[\DescribeMacro\glsxtrresourcefile]
+\cs{glsxtrresourcefile}\oarg{options}\marg{filename}
+\end{definition}
+(Don't include the file extension in \meta{filename}.)
+There's a shortcut version (recommended over the above) that sets \meta{filename} to use \cs{jobname}:
+\begin{definition}[\DescribeMacro\GlsXtrLoadResources]
+\cs{GlsXtrLoadResources}\oarg{options}
+\end{definition}
+On the first use, this command is a shortcut for
+\begin{alltt}
+\cs{glsxtrresourcefile}\oarg{options}\{\cs{jobname}\}
+\end{alltt}
+On subsequent use,\footnote{Version 1.11 only allowed one use
+of \cs{GlsXtrLoadResources} per document.}\ this command is a shortcut for
+\begin{alltt}
+\cs{glsxtrresourcefile}\oarg{options}\{\cs{jobname}-\meta{n}\}
+\end{alltt}
+where \meta{n} is the current value of
+\begin{definition}
+\cs{glsxtrresourcecount}
+\end{definition}
+which is incremented at the end of \cs{GlsXtrLoadResources}.
+Any advisory notes regarding \cs{glsxtrresourcefile} also
+apply to \cs{GlsXtrLoadResources}.
+
+The \cs{glsxtrresourcefile} command writes the line
+\begin{alltt}
+\cs{glsxtr@resource}\marg{options}\marg{filename}
+\end{alltt}
+to the \texttt{.aux} file and will input
+\meta{filename}\texttt{.glstex} if it exists.\footnote{v1.08 assumed
+\meta{filename}\texttt{.tex} but that's potentially dangerous if,
+for example, \meta{filename} happens to be the same as \cs{jobname}.
+The \texttt{.glstex} extension was enforced by version 1.11.}
+
+Since the \texttt{.glstex} file won't exist on the first \LaTeX\ run, the
+\pkgopt{record} package option additionally switches on
+\pkgopt[warn]{undefaction}. Any use of commands like \cs{gls} or
+\cs{glstext} will produce ?? in the document, since the entries are
+undefined at this point. Once \gls{bib2gls} has created the
+\texttt{.glstex} file the references should be resolved.
+This may cause a shift in the locations if the actual text produced
+once the entry is defined is significantly larger than the
+placeholder ?? (as this can alter the page breaking).
+
+Note that as from v1.12, \cs{glsxtrresourcefile} temporarily
+switches the category code of \texttt{@} to 11 (letter) while it
+reads the file to allow for any internal commands stored in the
+location field.
+
+\section{Selection}
+
+The default behaviour is for \gls{bib2gls} to select all entries
+that have a record in the \texttt{.aux} file, and any dependent
+entries (including parent and cross-references). The
+\texttt{glsignore} format (for example,
+\verb|\gls[format=glsignore]{duck}|) is recognised by \gls{bib2gls}
+as a special ignored record. This means that it will match
+the selection criteria but the record won't be added to
+the location list. This means that you won't get spurious
+commas in the location list (as can happen with the other indexing
+methods), so you can do, for example,
+\begin{verbatim}
+\GlsXtrSetDefaultNumberFormat{glsignore}
+\end{verbatim}
+at the start of the front matter and
+\begin{verbatim}
+\GlsXtrSetDefaultNumberFormat{glsnumberformat}
+\end{verbatim}
+at the start of the main matter to prevent any records in the
+front matter from occurring in the location lists.
+
+\begin{important}
+Note that commands like \cs{glsaddall} and \cs{glsaddallunused} don't work with \gls{bib2gls} as the command
+has to iterate over the internal lists of defined entry labels, which will be empty on the first
+run and on subsequent runs will only contain those entries that have
+been selected by \gls{bib2gls}.
+\end{important}
+
+If you want to add all
+entries to the glossary, you need to tell \gls{bib2gls} this in the
+options list. For example:
+\begin{verbatim}
+\GlsXtrLoadResources[src={terms},selection={all}]
+\end{verbatim}
+This will add all entries, regardless of whether or not they
+have any records in the \texttt{.aux} file. Those that don't
+have any records will have an empty location list.
+See the \gls{bib2gls} user manual for more details of this option.
+
+\section{Sorting and Displaying the Glossary}
+
+There are many sorting options provided by \gls{bib2gls}.
+The default is to sort according to the system locale.
+If the document has a language setting, you can use
+\texttt{sort=doc} to instruct \gls{bib2gls} to sort according to
+that. (The language tag obtained from \sty{tracklang}'s
+interface is written to the \texttt{.aux} file.) For a multilingual
+document you need to explicitly set the locale using a well-formed
+language tag. For example:
+\begin{verbatim}
+\GlsXtrLoadResources[
+ src=terms, % data in terms.bib
+ sort=de-DE-1996 % sort according to this locale
+]
+\end{verbatim}
+The locale-sensitive sort methods usually ignore most
+punctuation so for lists of symbols you may find it more
+appropriate to use one of the letter-base sort methods
+that sort according to the Unicode value of each character.
+Alternatively you can provide a custom rule.
+See the \gls{bib2gls} manual for full details of all the available
+sort methods.
+
+Since the \texttt{.glstex} file only defines those references
+required
+within the document (selected according to the \texttt{selection}
+option) and the definitions have been written in the
+order corresponding to \gls{bib2gls}['s] sorted list, the glossaries can
+simply be displayed using \cs{printunsrtglossary} (or
+\cs{printunsrtglossaries}), described in \sectionref{sec:printunsrt}.
+
+Suppose the \texttt{.bib} examples shown above have been stored in
+the files \texttt{terms.bib}, \texttt{abbrvs.bib} and
+\texttt{symbols.bib} which may either be in the current directory or
+on \TeX's path. Then the document might look like:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[record]{glossaries-extra}
+
+\setabbreviationstyle{long-short-desc}
+
+\GlsXtrLoadResources[src={terms,abbrvs,symbols}]
+
+\begin{document}
+\gls{bird}
+
+\gls{shtml}
+
+\gls{M}
+
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+The document build process (assuming the document is called
+\texttt{mydoc}) is:
+\begin{verbatim}
+pdflatex mydoc
+bib2gls mydoc
+pdflatex mydoc
+\end{verbatim}
+This creates a single glossary containing the entries:
+\texttt{bird}, \texttt{duck}, \texttt{goose},
+\texttt{html}, \texttt{M}, \texttt{shtml} and \texttt{ssi} (in that
+order). The \texttt{bird}, \texttt{shtml} and \texttt{M} entries
+were added because \gls{bib2gls} detected (from the \texttt{.aux}
+file) that they had been used in the document. The other entries
+were added because \gls{bib2gls} detected (from the \texttt{.bib}
+files) that they are referenced by the used entries. In the case of
+\texttt{duck} and \texttt{goose}, they are in the \gloskey{see}
+field for \texttt{bird}. In the case of \texttt{ssi} and
+\texttt{html}, they are referenced in the \gloskey{description}
+field of \texttt{shtml}. These cross-referenced entries won't have a
+location list when the glossary is first displayed, but depending on
+how they are referenced, they may pick up a location list on the
+next document build.
+
+The entries can be separated into different glossaries with
+different sort methods:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[record,abbreviations,symbols]{glossaries-extra}
+
+\setabbreviationstyle{long-short-desc}
+
+\GlsXtrLoadResources[src={terms},sort={en-GB},type=main]
+
+\GlsXtrLoadResources
+ [src={abbrvs},sort={letter-nocase},type=abbreviations]
+
+\GlsXtrLoadResources
+ [src={symbols},sort={use},type={symbols}]
+
+\begin{document}
+\gls{bird}
+
+\gls{shtml}
+
+\gls{M}
+
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+
+Or you can have multiple instance of \cs{GlsXtrLoadResources}
+with the same \texttt{type}, which will produce a glossary
+with ordered sub-blocks. For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[record,style=indexgroup]{glossaries-extra}
+
+\setabbreviationstyle{long-short-desc}
+
+\GlsXtrLoadResources
+ [src={abbrvs},sort={letter-nocase},type=main,
+ group={Abbreviations}]
+
+\GlsXtrLoadResources
+ [src={symbols},sort={use},type=main,
+ group={Symbols}]
+
+\GlsXtrLoadResources[src={terms},sort={en-GB},type=main]
+
+\begin{document}
+\gls{bird}
+
+\gls{shtml}
+
+\gls{M}
+
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+This will result in a glossary where the first group has
+the title \qt{Abbreviations}, the second group has the
+title \qt{Symbols} and then follow the usual letter groups.
+Note that for this example to work, you must run \gls{bib2gls}
+with the \verb|--group| (or \verb|-g|) switch. For example,
+if the document is called \texttt{myDoc.tex}:
+\begin{verbatim}
+pdflatex myDoc
+bib2gls -g myDoc
+pdflatex myDoc
+\end{verbatim}
+The value of the \gloskey{group} field must always be a label. You
+can set the corresponding title with \cs{glsxtrsetgrouptitle}
+(see \sectionref{sec:glosstylemods}). If no title is set then the
+label is used as the group title.
+
+You can provide your own custom sort rule. For example,
+if you are using \XeLaTeX\ or \LuaLaTeX:
+\begin{alltt}
+\cs{GlsXtrLoadResources}[
+ src=terms, % entries in terms.bib
+ sort=custom, % custom sort rule
+ sort-rule=\{% required with sort=custom
+ < \ae;\AE\ < a;\'a;\aa;\"a,\"A;\'A;\AA;\"A < b,B
+ < c;\'c,C;\'C < d,D < e;\'e,E;\'E < f,F < g,G
+ < h,H < i;\'i,I;\'I < j,J < l;\l,L;\L < m,M < n,N
+ < o;\"o;\o,O;\"O;\O\ < p,P < q,Q < r,R < s;\'s,S;\'S
+ < t,T < u;\'u,U;\'U < v,V < w,W < x,X < y,Y <
+ z;\.z,Z;\.Z
+ \}
+]
+\end{alltt}
+Remember that if you are using \sty{inputenc} then extended
+characters, such as \'e or \o, are active and will expand when
+written to the \texttt{.aux} file. So with PDF\LaTeX\ the
+above would have to be changed to protect against expansion.
+Some of the options, including \texttt{sort-rule},
+allow Unicode characters to be indicated in the format
+\cs{u}\meta{hex} (or \cs{u}~\meta{hex}) \textbf{in the \texttt{.aux} file}. \gls{bib2gls}
+will recognise this as the character
+given by the hexadecimal value \meta{hex}. The \cs{u} also needs
+protection from expansion, so with a non-Unicode aware
+engine, the character \ae\ needs to be written as
+\texttt{\cs{string}\cs{u}E6} and so on. This is quite cumbersome,
+but you can use the shortcut \texttt{\ics{glshex} E6} instead, so
+the above needs to be written as:
+\begin{alltt}
+\cs{GlsXtrLoadResources}[
+ src=terms, % entries in terms.bib
+ sort=custom, % custom sort rule
+ sort-rule=\{% required with sort=custom
+ < \cs{glshex} E6;\cs{glshex} C6
+ < a;\cs{glshex} E1;\cs{glshex} E5,\cs{glshex} E4,A;\cs{glshex} C1;\cs{glshex} C5;\cs{glshex} C4
+ < b,B < c;\cs{glshex} 0107,C;\cs{glshex} 0106 < d,D
+ < e;\cs{glshex} E9,E;\cs{glshex} C9 < f,F < g,G
+ < h,H < i;\cs{glshex} ED,I;\cs{glshex} CD < j,J
+ < l;\cs{glshex} 0142,L;\cs{glshex} 0141 < m,M < n,N
+ < o;\cs{glshex} F6;\cs{glshex} F8,O;\cs{glshex} D6;\cs{glshex} D8
+ < p,P < q,Q < r,R < s;\cs{glshex} 013F,S;\cs{glshex} 015A
+ < t,T < u;\cs{glshex} FA,U;\cs{glshex} DA < v,V < w,W < x,X < y,Y
+ < z;\cs{glshex} 017C,Z;\cs{glshex} 017B
+ \}]
+\end{alltt}
+
+\section{The \styfmt{glossaries-extra-bib2gls} package}
+\label{sec:bib2glssty}
+
+The package option \pkgopt[only]{record} (or simply \pkgopt{record})
+automatically loads the supplementary package
+\sty{glossaries-extra-bib2gls}, which provides some commands
+that are specific to \gls{bib2gls}. The package isn't
+loaded by \pkgopt[alsoindex]{record} as that option is intended
+for sorting with \gls{makeindex} or \gls{xindy} and it is expected
+that the sorting will be switched off (with the resource option
+\texttt{sort=none}).
+
+If \sty{glossaries-extra-bib2gls} is loaded via the
+\pkgopt{record} package option then the check for associated
+language resource files (see \sectionref{sec:lang}) will also
+search for the existence of
+\texttt{glossariesxtr-}\meta{script}\texttt{.ldf} for each
+document dialect (where \meta{script} is the four letter
+script identifier, such as \texttt{Latn}).
+
+This package provides some shortcut commands that use
+\ics{printunsrtglossary} if the relevant package option has defined
+the associated glossary: \ics{printunsrtabbreviations},
+\ics{printunsrtacronyms}, \ics{printunsrtsymbols},
+\ics{printunsrtnumbers} and \ics{printunsrtindex}.
+
+\begin{definition}[\DescribeMacro\glsxtrprovidecommand]
+\cs{glsxtrprovidecommand}\marg{cs}\oarg{n}\oarg{default}\marg{definition}
+\end{definition}
+This command is intended for use in \texttt{@preamble}.
+It's simply defined to \cs{providecommand} in
+\sty{glossaries-extra-bib2gls} but \gls{bib2gls}['s] interpreter
+treats it as \cs{renewcommand}. This means that you can
+override \gls{bib2gls}['s] internal definition of a command
+without overriding the command definition in the document
+(if it's already defined before the resource file is input).
+For example
+\begin{verbatim}
+@preamble{"\glsxtrprovidecommand{\int}{integral}"}
+\end{verbatim}
+This will force \gls{bib2gls} to treat \cs{int} as the word
+\qt{integral} to assist sorting but if this preamble code is written
+to the \texttt{.glstex} file (as it is by default) then it won't
+override the current definition (provided by the kernel or redefined
+by a package).
+
+The helper commands in the resource files are defined using
+\cs{providecommand}. For many of them, if you want to provide an
+alternative definition then you need to define the command before
+the resource file is loaded. There are a few that may be redefined
+afterwards but if you use \cs{renewcommand} then you will get an
+error on the first \LaTeX\ run when the \texttt{.glstex} file
+doesn't exist. In this case, you may prefer to use:
+\begin{definition}[\DescribeMacro\glsrenewcommand]
+\cs{glsrenewcommand}\marg{cs}\oarg{n}\oarg{default}\marg{definition}
+\end{definition}
+This behaves like \cs{renewcommand} but only generates a warning
+rather than an error if the command isn't already defined so it
+won't interrupt the document build.
+
+\begin{definition}[\DescribeMacro\GlsXtrIndexCounterLink]
+\cs{GlsXtrIndexCounterLink}\marg{text}\marg{label}
+\end{definition}
+If the \ics{hyperref} command has been defined (that is,
+\sty{hyperref} has been loaded before \styfmt{glossaries-extra})
+then this command checks for the existence of the
+\texttt{indexcounter} field. If this field is set for the entry
+given by \meta{label}, this command does
+\cs{hyperref}\texttt{[wrglossary.\meta{value}]\marg{text}}, where
+\meta{value} is the value of the \texttt{indexcounter} field. If the
+field isn't set or if \cs{hyperref} hasn't been defined, this just
+does \meta{text}. This command is provided for use with the
+\pkgopt{indexcounter} package option combined with \gls{bib2gls}['s]
+\texttt{save-index-counter} resource option. See the \gls{bib2gls}
+manual for further details (at least version 1.4).
+
+If you use the \texttt{set-widest} resource option, \gls{bib2gls}
+v1.8+ will now use:
+\begin{definition}[\DescribeMacro\glsxtrSetWidest]
+\cs{glsxtrSetWidest}\marg{type}\marg{level}\marg{text}
+\end{definition}
+(if it has been defined) to set the widest name for the given
+glossary type and level. This allows for both the \glostyle{alttree}
+style and the styles provided by \sty{glossary-longextra}, which
+need to know the widest name.
+
+If \gls{bib2gls} can't determine the widest name (typically because
+the name field consists of commands that aren't recognised by the
+interpreter) then \gls{bib2gls} v1.8+ will now use:
+\begin{definition}[\DescribeMacro\glsxtrSetWidestFallback]
+\cs{glsxtrSetWidestFallback}\marg{max depth}\marg{list}
+\end{definition}
+(if defined). Currently the maximum hierarchical depth \meta{max
+depth} may only be 0 or 2. This command requires commands provided
+by the \sty{glossaries-extra-stylemods} package with the
+\glostyle{alttree} style enabled. In this case, it may be simpler
+to just use \ics{glssetwidest}.
+
+\subsection{Supplemental Locations}
+\label{sec:supplocations}
+
+\begin{definition}[\DescribeMacro\glsxtrdisplaysupploc]
+\cs{glsxtrdisplaysupploc}\marg{prefix}\marg{counter}\marg{format}\marg{src}\marg{location}
+\end{definition}
+This is used by \gls{bib2gls} version 1.7+ for supplemental
+locations, instead of using \cs{glsxtrsupphypernumber} with the
+\catattr{externallocation} attribute. This command sets up the
+location counter and prefix (used in the formation of hyperlinks)
+and then uses
+\begin{definition}[\DescribeMacro\glsxtrmultisupplocation]
+\cs{glsxtrmultisupplocation}\marg{location}\marg{src}\marg{format}
+\end{definition}
+to format the actual location (with an external hyperlink, if
+supported).
+
+\subsection{Nameref Record}
+\label{sec:recordnameref}
+
+Normally locations are recorded in the \texttt{.aux} file
+in the form:
+\begin{definition}
+\cs{glsxtr@record}\marg{label}\marg{prefix}\marg{counter}\marg{format}\marg{location}
+\end{definition}
+The \pkgopt[nameref]{record} option, which requires at least
+\gls{bib2gls} v1.8, instead uses:
+\begin{definition}
+\cs{glsxtr@record@nameref}\marg{label}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{title}\marg{href}\marg{hcounter}
+\end{definition}
+where \meta{title} is obtained from \cs{@currentlabelname}
+and \meta{href} is obtained from \cs{@currentHref}. These
+commands require \sty{hyperref}. If they are undefined,
+\meta{title} and \meta{href} will be left empty and \gls{bib2gls}
+will treat it as a regular record.
+
+\begin{important}
+Be careful with this option as \meta{href} will globally change on every
+instance of \cs{refstepcounter} but \meta{title} won't necessarily
+change. It can therefore cause unexpected behaviour.
+\end{important}
+
+The final argument \meta{hcounter} is obtained from
+\cs{theH}\meta{counter} which provides the partial target name associated
+with the indexing counter. With the original
+\gls{makeindex}\slash \gls{xindy} approach, it's not possible to
+include this information in the location, so the base
+\sty{glossaries} package attempts to derive a prefix from which the
+\meta{hcounter} value can be reconstituted by appending the prefix.
+Unfortunately, not all definitions of \cs{theH}\meta{counter} are in
+the form \meta{prefix}\cs{the}\meta{counter} (most notably the
+\ctr{equation} counter with chapters) so this can fail.
+
+Since \gls{bib2gls} is customized specifically for use with
+\styfmt{glossaries-extra}, it's now possible to save
+\meta{hcounter}, so the \pkgopt[nameref]{record} option does this.
+By providing both \meta{href} and \meta{hcounter}, you can determine
+which target you would rather use. The default is to use
+\meta{hcounter}, which will take you to the place where the
+corresponding counter was incremented with \cs{refstepcounter}.
+However, you may choose to switch to using the \meta{href} target,
+which will take you to the nearest target before the indexing took
+place.
+
+With \gls{bib2gls} v1.8+, normal locations are displayed using:
+\begin{definition}
+\cs{glsnoidxdisplayloc}\marg{prefix}\marg{counter}\marg{format}\marg{location}
+\end{definition}
+This is provided by the base \sty{glossaries} package and is simply
+defined to do:
+\begin{definition}
+\cs{setentrycounter}\oarg{prefix}\marg{counter}\cs{csuse}\marg{format}\marg{location}
+\end{definition}
+Earlier versions of \gls{bib2gls} only used this in the
+\gloskey{loclist} field and explicitly used \cs{setentrycounter} in
+the \gloskey{location} field followed by
+\cs{}\meta{format}\marg{location}, which follows the code that's created
+with the default \pkgopt{makeindex} setting.
+The \cs{setentrycounter} command sets up the prefix needed for
+\cs{glshypernumber} to reform the target name from the given
+location.
+
+The locations identified by \cs{glsxtr@record@nameref} are written
+by \gls{bib2gls} to the location list using:
+\begin{definition}[\DescribeMacro\glsxtrdisplaylocnameref]
+\cs{glsxtrdisplaylocnameref}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{title}\marg{href}\marg{hcounter}\marg{file}
+\end{definition}
+With normal internal locations, \meta{file} will always be empty.
+With supplemental locations, \meta{file} will be the external file
+reference.
+
+The default definition is:
+\begin{verbatim}
+\newcommand*{\glsxtrdisplaylocnameref}[8]{%
+ \ifstrequal{#2}{equation}%
+ {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}%
+ {%
+ \ifstrempty{#5}%
+ {%
+ \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}%
+ }%
+ {%
+ \ifstrequal{#2}{page}%
+ {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}%
+ {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}%
+ }%
+ }%
+}
+\end{verbatim}
+which uses:
+\begin{definition}[\DescribeMacro\glsxtrnamereflink]
+\cs{glsxtrnamereflink}\marg{format}\marg{title}\marg{target}\marg{file}
+\end{definition}
+This ignores the \meta{prefix}, \meta{counter} and \marg{location}
+arguments and instead creates a hyperlink with the target name obtained from \meta{target} (and \meta{file}, if not empty).
+
+Since pages and equations typically don't have titles, the default
+definition of \cs{glsxtrdisplaylocnameref} checks the counter was
+used as the location. If it's \ctr{page} or if \meta{title} is empty, then just the location is
+used as the hyperlink text. If the counter \ctr{equation}, then the
+text is the location in parentheses. Otherwise the text is obtained
+from \meta{title}.
+
+If \meta{file} is empty an internal link is created with:
+\begin{definition}[\DescribeMacro\glsxtrfmtinternalnameref]
+\cs{glsxtrfmtinternalnameref}\marg{target}\marg{format}\marg{title}
+\end{definition}
+otherwise an external link is created with:
+\begin{definition}[\DescribeMacro\glsxtrfmtexternalnameref]
+\cs{glsxtrfmtexternalnameref}\marg{target}\marg{format}\marg{title}\marg{file}
+\end{definition}
+The \meta{file} argument is set by \gls{bib2gls} for supplemental
+locations.
+
+Here's alternative definition that uses the \meta{prefix} and
+\meta{counter} to reform the target name (as
+\cs{glsnoidxdisplayloc}) but uses the \meta{title} as the hyperlink text:
+\begin{verbatim}
+\renewcommand*{\glsxtrdisplaylocnameref}[7]{%
+ \glsxtrnamereflink{#3}{#5}{#6}{#7}%
+}
+\end{verbatim}
+which uses:
+\begin{definition}[\DescribeMacro\glsxtrnameloclink]
+\cs{glsxtrnameloclink}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{title}\marg{file}
+\end{definition}
+This uses the same commands as \cs{glsxtrnamereflink}
+to produce the hyperlinks.
+
+In both cases, the link is encapsulated with the text-block command
+whose name is given by \meta{format}, but \cs{glshypernumber} is
+first locally redefined to \cs{@firstofone} to prevent a conflict with the
+usual location hyperlink formation. This means that if the
+\meta{format} is \texttt{hyperbf} then it will simply behave like
+\texttt{textbf}.
+
+For compactness, \gls{bib2gls} merges normal records if the
+\meta{prefix}, \meta{counter} and \meta{location} all match. (An
+order of precedence can be provided for format conflicts.) With
+nameref records, you can use the \verb|--merge-nameref-on| switch
+provided by \gls{bib2gls} v1.8+ to determine how to merge nameref
+records. This switch must be followed by one of the following
+keywords: \texttt{hcounter} (merge on \meta{hcounter}, default)
+\texttt{href} (merge on \meta{href}), \texttt{title} (merge
+on \meta{title}) and \texttt{location} (merge on \meta{location}, as
+regular records). In all cases, the \meta{counter} must also match.
+
+\subsection{Helper Commands for Resource Options}
+\label{sec:resourcecommands}
+
+\begin{definition}[\DescribeMacro\glshex]
+\cs{glshex}
+\end{definition}
+This is just defined as \verb|\string\u|, which is required
+when you need to indicate a Unicode character in the form
+\cs{u}\meta{hex} in some of
+the resource options (as illustrated above).
+
+\begin{definition}[\DescribeMacro\glscapturedgroup]
+\cs{glscapturedgroup}
+\end{definition}
+This is just defined as \verb|\string\$| and is used for
+the captured group reference in a replacement part of a regular
+expression substitution (requires at least \gls{bib2gls} version 1.5). For example:
+\begin{verbatim}
+sort-replace={{([a-zA-Z])\string\.}{\glscapturedgroup1}}
+\end{verbatim}
+This only removes a full stop that follows any of the characters
+a,\ldots,z or A,\ldots,Z.
+
+If you use the \texttt{save-child-count} resource option,
+you can test if the \texttt{childcount} field is non-zero using:
+\begin{definition}[\DescribeMacro{\GlsXtrIfHasNonZeroChildCount}]
+\cs{GlsXtrIfHasNonZeroChildCount}\marg{label}\marg{true}\marg{false}
+\end{definition}
+This internally uses \cs{GlsXtrIfFieldNonZero} and will do
+\meta{false} if the field isn't set. Within \meta{true} and
+\meta{false} you can use \cs{glscurrentfieldvalue} to access the
+value. (It will be 0 in \meta{false} if the field isn't set.)
+
+
+A convenient shortcut for use in the \texttt{entry-type-aliases}
+setting:
+\begin{definition}[\DescribeMacro\GlsXtrBibTeXEntryAliases]
+\cs{GlsXtrBibTeXEntryAliases}
+\end{definition}
+This provides aliases for Bib\TeX's standard entry types to
+\gls{bib2gls}['s] \texttt{@bibtexentry} entry type (requires at
+least \gls{bib2gls} version 1.4).
+
+You may also want to provide storage keys for Bib\TeX's standard
+fields rather than having to alias them all. This can be done with:
+\begin{definition}[\DescribeMacro\GlsXtrProvideBibTeXFields]
+\cs{GlsXtrProvideBibTeXFields}
+\end{definition}
+Note that Bib\TeX's \texttt{type} field clashes with the \sty{glossaries}
+package's \gloskey{type} key, so this command provides the key
+\texttt{bibtextype} instead. You can alias it with
+\texttt{field-aliases={type=bibtextype}} in the resource options.
+Each storage key is provided with a convenient command to access the
+value in the form \cs{glsxtrbib}\meta{field}. For example,
+\cs{glsxtrbibaddress}. The \texttt{bibtextype} field can be accessed
+with \cs{glsxtrbibtype}. Each of these commands takes the entry
+label as the sole argument.
+
+The \sty{glossaries-extra-bib2gls} package also provides definitions
+of the missing mathematical Greek commands: \ics{Alpha},
+\ics{Beta}, \ics{Epsilon}, \ics{Zeta}, \ics{Eta}, \ics{Iota},
+\ics{Kappa}, \ics{Mu}, \ics{Nu}, \ics{Omicron}, \ics{Rho},
+\ics{Tau}, \ics{Chi}, \ics{Digamma}, \ics{omicron}.
+These are all defined with \cs{providecommand}, so they won't override
+any definitions provided by any package loaded before
+\sty{glossaries-extra}. Since \gls{bib2gls}['s] interpreter
+recognises these commands, using them instead of explicitly using
+the Latin characters with the same shape helps to keep the Greek
+symbols together when sorting.
+Similarly, if \sty{upgreek} has been loaded, the missing upright
+Greek commands are also provided.
+
+The remaining commands provide common rule blocks for use in
+the \texttt{sort-rule} resource option. If you want a rule for
+a specific locale, you can provide similar commands in a file called
+\texttt{glossariesxtr-}\meta{tag}\texttt{.ldf}, where \meta{tag}
+identifies the dialect, locale, region or root language. See the
+description of \cs{IfTrackedLanguageFileExists} in the
+\sty{tracklang} documentation for further details. If this file is
+on \TeX's path and the \sty{tracklang} package (automatically loaded
+by \styfmt{glossaries}) detects that the document has requested that
+language or locale, then the file will automatically be loaded.
+For example, if you want to provide a rule block for Welsh, then
+create a file called \texttt{glossariesxtr-welsh.ldf} that contains:
+\begin{verbatim}
+\ProvidesGlossariesExtraLang{welsh}[2018/02/23 v1.0]
+
+\@ifpackageloaded{glossaries-extra-bib2gls}
+{
+ \newcommand{\glsxtrWelshRules}{%
+ \glsxtrLatinA
+ \string<b,B
+ \string<c,C
+ \string<ch,CH
+ \string<d,D
+ \string<dd,DD
+ \string<\glsxtrLatinE
+ \string<f,F
+ \string<ff,FF
+ \string<g,G
+ \string<ng,NG
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J
+ \string<\glsxtrLatinL
+ \string<ll,LL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<ph,PH
+ \string<r,R
+ \string<rh,RH
+ \string<\glsxtrLatinS
+ \string<\glsxtrLatinT
+ \string<th,TH
+ \string<u,U
+ \string<w,W
+ \string<y,Y
+ }
+}
+{}% glossaries-extra-bib2gls.sty not loaded
+\end{verbatim}
+(The use of \cs{string} is in case the \texttt{<} character
+has been made active.) You can provide more than one rule-block
+per local, to allow for loanwords or foreign words. For example,
+you could provide \cs{glsxtrWelshIRules}, \cs{glsxtrWelshIIRules}
+etc.
+
+If the rules are for a particular script (independent of language
+or region) then they can be provided in a file given by
+\texttt{glossariesxtr-}\meta{script}\texttt{.ldf} instead. For
+example, the file \texttt{glossariesxtr-Cyrl.ldf} could contain:
+\begin{verbatim}
+\ProvidesGlossariesExtraLang{Cyrl}[2018/02/23 v1.0]
+\newcommand*{\glsxtrGeneralCyrillicIRules}{%
+ % Cyrillic rules
+}
+\newcommand*{\glsxtrGeneralCyrillicIIRules}{%
+ % an alternative set of Cyrillic rules
+}
+\end{verbatim}
+(Remember that the required document language scripts need to be tracked
+through the \sty{tracklang} package, in order for these files to be
+automatically loaded. This essentially means ensuring you load the
+appropriate language package before \sty{tracklang} is loaded by
+the base \sty{glossaries} package or any other package that uses it.
+See the \sty{tracklang} documentation for further details.)
+
+Alternatively, if the rules are specific to a subject rather than
+a region or language, then you can provide a supplementary
+package. For example, if you have a package called, say,
+\styfmt{mapsymbols} that provides map symbols, then the file
+\texttt{mapsymbols.sty} might contain:
+\begin{verbatim}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{mapsymbols}
+% some package or font loading stuff here to provide
+% the appropriate symbols
+\newcommand{\Stadium}{...}
+\newcommand{\Battlefield}{...}
+\newcommand{\Harbour}{...}
+% etc
+
+% Provide a rule block:
+\newcommand{\MapSymbolOrder}{%
+ \glshex 2694 % crossed-swords 0x2694
+ \string< \glshex 2693 % anchor 0x2693
+ \string< \glshex 26BD % football 0x26BD
+}
+\end{verbatim}
+and the supplementary file \texttt{mapsymbols.bib} can provide
+the appropriate definitions for \gls{bib2gls}:
+\begin{verbatim}
+@preamble{"\glsxtrprovidecommand{\Harbour}{\char"2693}
+\glsxtrprovidecommand{\Battlefield}{\char"2694}
+\glsxtrprovidecommand{\Stadium}{\char"26BD}"}
+\end{verbatim}
+Now both the preamble and rule block can be used in the resource
+set:
+\begin{verbatim}
+\usepackage{mapsymbols}% my custom package
+\usepackage[record]{glossaries-extra}
+
+\GlsXtrLoadResources[
+ src={mapsymbols,% <--- my custom mapsymbols.bib
+ entries% data in entries.bib
+ },
+ sort={custom},
+ sort-rule={\glsxtrcontrolrules % control codes
+ ;\glsxtrspacerules % space characters
+ ;\glsxtrnonprintablerules % non-printable characters
+ ;\glsxtrcombiningdiacriticrules % combining diacritics
+ ,\glsxtrhyphenrules % hyphens
+ <\glsxtrgeneralpuncrules % general punctuation
+ <\glsxtrdigitrules % 0, ..., 9
+ <\glsxtrfractionrules % fraction symbols
+ <\MapSymbolOrder % <--- custom map symbols
+ <\glsxtrMathItalicGreekIrules % math-greek symbols
+ <\glsxtrGeneralLatinIrules % Latin letters
+ }
+]
+\end{verbatim}
+
+The following commands are provided by
+\sty{glossaries-extra-bib2gls}. They should be separated by
+the rule separator characters \texttt{;}~(semi-colon) or \texttt{,}~(comma)
+or \verb|&|~(ampersand) or \texttt{<}~(less than). See Java's
+\href{http://docs.oracle.com/javase/8/docs/api/java/text/RuleBasedCollator.html}{Rule\-Based\-Collator}
+documentation for details of the rule syntax.
+
+For example, the following will place the mathematical Greek
+symbols (\ics{alpha}, \ics{Alpha}, \ics{beta}, \ics{Beta} etc)
+in a block before Latin characters:
+\begin{verbatim}
+sort-rule={\glsxtrcontrolrules
+ ;\glsxtrspacerules
+ ;\glsxtrnonprintablerules
+ ;\glsxtrcombiningdiacriticrules
+ ,\glsxtrhyphenrules
+ <\glsxtrgeneralpuncrules
+ <\glsxtrdigitrules
+ <\glsxtrfractionrules
+ <\glsxtrMathItalicGreekIrules
+ <\glsxtrGeneralLatinIVrules
+ <\glsxtrLatinAA
+ <\glsxtrLatinOslash
+}
+\end{verbatim}
+
+\begin{definition}[\DescribeMacro\glsxtrcontrolrules]
+\cs{glsxtrcontrolrules}
+\end{definition}
+These are control characters that are usually placed at the start of
+a rule in the ignored section. They typically won't occur in
+any sort values, but if they do they should normally be ignored.
+
+\begin{definition}[\DescribeMacro\glsxtrspacerules]
+\cs{glsxtrspacerules}
+\end{definition}
+These are space characters. They typically come after the control
+characters with the two blocks separated by a \texttt{;}~(semi-colon).
+
+\begin{definition}[\DescribeMacro\glsxtrnonprintablerules]
+\cs{glsxtrnonprintablerules}
+\end{definition}
+These are non-printable characters (BOM, tabs, line feed and
+carriage return). They typically come after the spaces separated by
+a \texttt{;}~(semi-colon). These characters aren't checked for by
+\gls{bib2gls} when it determines whether or not to use the
+interpreter, so a~TAB or newline character may end up in the sort
+value if it wasn't interpreted.
+
+\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticrules]
+\cs{glsxtrcombiningdiacriticrules}
+\end{definition}
+These are combining diacritic marks which typically follow
+the space and non-printable blocks (separated by a semi-colon). This command is
+defined in terms of sub-block commands:
+\begin{verbatim}
+\newcommand*{\glsxtrcombiningdiacriticrules}{%
+ \glsxtrcombiningdiacriticIrules\string;
+ \glsxtrcombiningdiacriticIIrules\string;
+ \glsxtrcombiningdiacriticIIIrules\string;
+ \glsxtrcombiningdiacriticIVrules
+}
+\end{verbatim}
+If you prefer, you can use the sub-blocks directly in your
+required ordered.
+
+\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticIrules]
+\cs{glsxtrcombiningdiacriticIrules}
+\end{definition}
+This contains the combining diacritics: acute, grave, breve,
+circumflex, caron, ring, vertical line above, diaeresis (umlaut),
+double acute, tilde, dot above, combining macron.
+
+\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticIIrules]
+\cs{glsxtrcombiningdiacriticIIrules}
+\end{definition}
+This contains the combining diacritics: short solidus overlay,
+cedilla, ogonek, dot below, low line, overline, hook above,
+double vertical line above, double grave accent, candrabindu,
+inverted breve, turned comma above, comma above, reversed comma
+above, comma above right, grave accent below, acute accent below.
+
+\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticIIIrules]
+\cs{glsxtrcombiningdiacriticIIIrules}
+\end{definition}
+This contains the combining diacritics: left tack below, right tack
+below, left angle above, horn, left half ring below, up tack below,
+down tack below, plus sign below, minus sign below, palatalized hook
+below, retroflex hook below, diaresis below, ring below, comma
+below, vertical line below, bridge below, inverted double arch
+below, caron below, circumflex accent below, breve below, inverted
+breve below, tilde below, macron below, double low line, tilde
+overlay, short stroke overlay, long stroke overlay, long solidus
+overlay, right half ring below, inverted bridge below, square below,
+seagull below, x above, vertical tilde, double overline, Greek
+perispomeni, Greek dialytika tonos, Greek ypogegrammeni, double
+tilde, double inverted breve, Cyrillic titlo, Cyrillic
+palatalization, Cyrillic dasia pneumata, Cyrillic psili pneumata.
+
+\begin{definition}[\DescribeMacro\glsxtrcombiningdiacriticIVrules]
+\cs{glsxtrcombiningdiacriticIVrules}
+\end{definition}
+This contains the combining diacritics:
+left harpoon above, right harpoon above, long vertical line overlay,
+short vertical line overlay, anticlockwise arrow above, clockwise
+arrow above, left arrow above, right arrow above, ring overlay,
+clockwise ring overlay, anticlockwise ring overlay, three dots
+above, four dots above, enclosing circle, enclosing square,
+enclosing diamond, enclosing circle backslash, left right arrow
+above.
+
+\begin{definition}[\DescribeMacro\glsxtrhyphenrules]
+\cs{glsxtrhyphenrules}
+\end{definition}
+This contains hyphens (including the minus sign 0x2212). This rule
+block typically comes after the diacritic rules separated by a
+comma.
+
+\begin{definition}[\DescribeMacro\glsxtrgeneralpuncrules]
+\cs{glsxtrgeneralpuncrules}
+\end{definition}
+This contains punctuation characters. This rule
+block typically comes after the hyphen rules separated by a
+less than (\texttt{<}). As with the combining diacritics, this
+command is defined in terms of sub-blocks which may be used directly
+instead if a different order is required:
+\begin{verbatim}
+\newcommand*{\glsxtrgeneralpuncrules}{%
+ \glsxtrgeneralpuncIrules
+ \string<\glsxtrcurrencyrules
+ \string<\glsxtrgeneralpuncIIrules
+}
+\end{verbatim}
+
+\begin{definition}[\DescribeMacro\glsxtrgeneralpuncIrules]
+\cs{glsxtrgeneralpuncIrules}
+\end{definition}
+This is the first punctuation sub-block containing:
+underscore, macron, comma, semi-colon, colon, exclamation mark,
+inverted exclamation mark, question mark, inverted question mark,
+solidus, full stop, acute accent, grave accent, circumflex accent,
+diaersis, tilde, middle dot, cedilla, straight apostrophe, straight
+double quote, left guillemet, right guillemet, left parenthesis,
+right parenthesis, left square bracket, right square bracket, left
+curly bracket, right curly bracket, section sign, pilcrow sign,
+copyright sign, registered sign, at sign.
+
+\begin{definition}[\DescribeMacro\glsxtrcurrencyrules]
+\cs{glsxtrcurrencyrules}
+\end{definition}
+This sub-block contains some currency symbols:
+currency sign, Thai currency symbol baht, cent sign, colon sign,
+cruzeiro sign, dollar sign, dong sign, euro sign, French franc sign,
+lira sign, mill sign, naira sign, peseta sign, pound sign, rupee
+sign, new sheqel sign, won sign, yen sign.
+
+\begin{definition}[\DescribeMacro\glsxtrgeneralpuncIIrules]
+\cs{glsxtrgeneralpuncIIrules}
+\end{definition}
+This sub-block contains some other punctuation symbols:
+asterisk, backslash, ampersand, hash sign, percent sign, plus sign,
+plus-minus sign, division sign, multiplication sign, less-than sign,
+equals sign, greater-than sign, not sign, vertical bar (pipe),
+broken bar, degree sign, micron sign.
+
+\begin{definition}[\DescribeMacro\glsxtrdigitrules]
+\cs{glsxtrdigitrules}
+\end{definition}
+This rule block contains the Basic Latin digits (0, \ldots, 9)
+and the subscript and superscript digits (\textsubscript{0}
+\textsuperscript{0} etc) made equivalent to the
+corresponding Basic Latin digit. The digit block typically
+comes after the punctuation rules separated by a less than
+(\texttt{<}).
+
+\begin{definition}[\DescribeMacro\glsxtrBasicDigitrules]
+\cs{glsxtrBasicDigitrules}
+\end{definition}
+This rule block contains just the Basic Latin digits (0, \ldots, 9).
+
+\begin{definition}[\DescribeMacro\glsxtrSubScriptDigitrules]
+\cs{glsxtrSubScriptDigitrules}
+\end{definition}
+This rule block contains just the subscript digits
+(\textsubscript{0} \ldots\ \textsubscript{9}).
+
+\begin{definition}[\DescribeMacro\glsxtrSuperScriptDigitrules]
+\cs{glsxtrSuperScriptDigitrules}
+\end{definition}
+This rule block contains just the superscript digits
+(\textsuperscript{0} \ldots\ \textsuperscript{9}).
+
+\begin{definition}[\DescribeMacro\glsxtrfractionrules]
+\cs{glsxtrfractionrules}
+\end{definition}
+This rule block contains vulgar fraction characters. The digit block
+typically comes after the digit rules separated by a less than
+(\texttt{<}).
+
+There are a number of Latin rule blocks. Some of these included
+extended characters or ligatures (such as \ss\ or \oe) but they don't
+include accented characters. If you require a Latin rule block
+that includes accented characters, digraphs, trigraphs or
+other extended characters, then it's best to provide
+similar commands in a \texttt{glossariesxtr-}\meta{tag}\texttt{.ldf}
+file for the particular language or region.
+
+\begin{definition}[\DescribeMacro\glsxtrGeneralLatinIrules]
+\cs{glsxtrGeneralLatinIrules}
+\end{definition}
+This is just the basic (non-extended) Latin alphabet with the superscript
+and subscript Latin letters (\textsuperscript{a} \textsubscript{a}
+etc) treated as the equivalent basic Latin letter. (If you don't
+want the subscripts and superscripts included you can redefine
+\cs{glsxtrLatinA} etc to omit them.)
+
+\begin{definition}[\DescribeMacro\glsxtrGeneralLatinIIrules]
+\cs{glsxtrGeneralLatinIIrules}
+\end{definition}
+This is like \cs{glsxtrGeneralLatinIrules} but it includes eth
+(Ð) between `D' and `E' and eszett (\ss) treated as `ss'.
+
+\begin{definition}[\DescribeMacro\glsxtrGeneralLatinIIIrules]
+\cs{glsxtrGeneralLatinIIIrules}
+\end{definition}
+This is like \cs{glsxtrGeneralLatinIrules} but it includes eth
+(Ð) between `D' and `E' and eszett (\ss) treated as `sz'.
+
+\begin{definition}[\DescribeMacro\glsxtrGeneralLatinIVrules]
+\cs{glsxtrGeneralLatinIVrules}
+\end{definition}
+This is like \cs{glsxtrGeneralLatinIrules} but it includes eth
+(Ð) between `D' and `E', ae-ligature (\ae) is treated as `ae',
+oe-ligature (\oe) is treated as `oe', eszett (\ss) treated as `ss'
+and thorn (þ) is treated as `th'.
+
+\begin{definition}[\DescribeMacro\glsxtrGeneralLatinVrules]
+\cs{glsxtrGeneralLatinVrules}
+\end{definition}
+This is like \cs{glsxtrGeneralLatinIrules} but it includes eth
+(Ð) between `D' and `E', eszett (\ss) treated as `ss'
+and thorn (þ) treated as `th'.
+
+\begin{definition}[\DescribeMacro\glsxtrGeneralLatinVIrules]
+\cs{glsxtrGeneralLatinVIrules}
+\end{definition}
+This is like \cs{glsxtrGeneralLatinIrules} but it includes eth
+(Ð) between `D' and `E', eszett (\ss) treated as `sz'
+and thorn (þ) treated as `th'.
+
+\begin{definition}[\DescribeMacro\glsxtrGeneralLatinVIIrules]
+\cs{glsxtrGeneralLatinVIIrules}
+\end{definition}
+This is like \cs{glsxtrGeneralLatinIrules} but it includes
+ae-ligature (\ae) between `A' and `B', eth (Ð) between `D' and
+`E', insular G (Ᵹ) instead of `G', oe-ligature between `O' and `P',
+long~s (ſ) equivalent to `s', thorn (þ) between `T' and `U' and wynn (Ƿ)
+instead of W.
+
+\begin{definition}[\DescribeMacro\glsxtrGeneralLatinVIIIrules]
+\cs{glsxtrGeneralLatinVIIIrules}
+\end{definition}
+This is like \cs{glsxtrGeneralLatinIrules} but ae-ligature (\ae) is treated as `ae',
+oe-ligature (\oe) is treated as `oe', eszett (\ss) treated as `ss',
+thorn (þ) is treated as `th', \O\ is treated as `O' and
+`\L' is treated as `L'.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinA]
+\cs{glsxtrLatinA}
+\end{definition}
+A mini-rule that just covers `A' but includes the sub- and
+superscript A.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinE]
+\cs{glsxtrLatinE}
+\end{definition}
+A mini-rule that just covers `E' but includes the
+subscript E.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinH]
+\cs{glsxtrLatinH}
+\end{definition}
+A mini-rule that just covers `H' but includes the
+subscript H.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinK]
+\cs{glsxtrLatinK}
+\end{definition}
+A mini-rule that just covers `K' but includes the
+subscript K.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinI]
+\cs{glsxtrLatinI}
+\end{definition}
+A mini-rule that just covers `I' but includes the
+superscript I.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinL]
+\cs{glsxtrLatinL}
+\end{definition}
+A mini-rule that just covers `L' but includes the
+subscript L.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinM]
+\cs{glsxtrLatinM}
+\end{definition}
+A mini-rule that just covers `M' but includes the
+subscript M.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinN]
+\cs{glsxtrLatinN}
+\end{definition}
+A mini-rule that just covers `N' but includes the
+sub- and superscript N.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinO]
+\cs{glsxtrLatinO}
+\end{definition}
+A mini-rule that just covers `O' but includes the
+sub- and superscript O.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinP]
+\cs{glsxtrLatinP}
+\end{definition}
+A mini-rule that just covers `P' but includes the
+subscript P.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinS]
+\cs{glsxtrLatinS}
+\end{definition}
+A mini-rule that just covers `S' but includes the
+subscript S.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinT]
+\cs{glsxtrLatinT}
+\end{definition}
+A mini-rule that just covers `T' but includes the
+subscript T.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinX]
+\cs{glsxtrLatinX}
+\end{definition}
+A mini-rule that just covers `X' but includes the
+subscript X.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinEszettSs]
+\cs{glsxtrLatinEszettSs}
+\end{definition}
+A mini-rule that just covers eszett (\ss) and makes long~s (ſ) followed
+by short `s' equivalent to `\ss'. (This is used in the above blocks
+that treat `\ss' as `ss'.)
+
+\begin{definition}[\DescribeMacro\glsxtrLatinEszettSz]
+\cs{glsxtrLatinEszettSz}
+\end{definition}
+A mini-rule that just covers eszett (\ss) and makes long~s (ſ) followed
+by `z' equivalent to `\ss'. (This is used in the above blocks
+that treat `\ss' as `sz'.)
+
+\begin{definition}[\DescribeMacro\glsxtrLatinEth]
+\cs{glsxtrLatinEth}
+\end{definition}
+A mini-rule for eth (Ð) so you don't need to remember the
+Unicode values.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinThorn]
+\cs{glsxtrLatinThorn}
+\end{definition}
+A mini-rule for thorn (þ) so you don't need to remember the
+Unicode values.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinAELigature]
+\cs{glsxtrLatinAELigature}
+\end{definition}
+A mini-rule for ae-ligature (\ae) so you don't need to remember the
+Unicode values.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinOELigature]
+\cs{glsxtrLatinOELigature}
+\end{definition}
+A mini-rule for oe-ligature (\oe) so you don't need to remember the
+Unicode values.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinOslash]
+\cs{glsxtrLatinOslash}
+\end{definition}
+A mini-rule for `\O' so you don't need to remember the
+Unicode values.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinLslash]
+\cs{glsxtrLatinLslash}
+\end{definition}
+A mini-rule for `\L' so you don't need to remember the
+Unicode values.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinWynn]
+\cs{glsxtrLatinWynn}
+\end{definition}
+A mini-rule for wynn (Ƿ) so you don't need to remember the
+Unicode values.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinInsularG]
+\cs{glsxtrLatinInsularG}
+\end{definition}
+A mini-rule for insular G (Ᵹ) so you don't need to remember the
+Unicode values.
+
+\begin{definition}[\DescribeMacro\glsxtrLatinSchwa]
+\cs{glsxtrLatinSchwa}
+\end{definition}
+A mini-rule that just covers schwa (Ə) but includes the
+subscript schwa. (Not used in any of the provided Latin rule blocks
+described above.)
+
+\begin{definition}[\DescribeMacro\glsxtrLatinAA]
+\cs{glsxtrLatinAA}
+\end{definition}
+A mini-rule for `\AA' so you don't need to remember the
+Unicode values. (Not used in any of the provided Latin rule blocks
+described above.)
+
+\begin{definition}[\DescribeMacro\glsxtrMathGreekIrules]
+\cs{glsxtrMathGreekIrules}
+\end{definition}
+A rule block for mathematical Greek (\ics{alpha}, \ics{beta} etc)
+and upright Greek (\ics{upalpha}, etc, from the \sty{upgreek}
+package) characters that includes digamma (\ics{digamma} and
+\ics{Digamma}) between epsilon and zeta. The upright and italic
+versions are gathered together into the same letter group.
+
+\begin{definition}[\DescribeMacro\glsxtrMathGreekIIrules]
+\cs{glsxtrMathGreekIIrules}
+\end{definition}
+As \cs{glsxtrMathGreekIrules} but doesn't include digamma.
+
+\begin{definition}[\DescribeMacro\glsxtrMathUpGreekIrules]
+\cs{glsxtrMathUpGreekIrules}
+\end{definition}
+A rule block for upright Greek (\ics{upalpha}, etc, from
+the \sty{upgreek} package)
+characters that includes digamma (\ics{digamma} and \ics{Digamma})
+between epsilon and zeta.
+
+\begin{definition}[\DescribeMacro\glsxtrMathUpGreekIIrules]
+\cs{glsxtrMathUpGreekIIrules}
+\end{definition}
+A rule block for upright Greek (\ics{upalpha}, etc, from
+the \sty{upgreek} package) that doesn't include digamma.
+
+\begin{definition}[\DescribeMacro\glsxtrMathItalicGreekIrules]
+\cs{glsxtrMathItalicGreekIrules}
+\end{definition}
+A rule block for mathematical Greek (\ics{alpha}, \ics{Alpha}, etc)
+characters that includes digamma (\ics{diagamma} and \ics{Digamma})
+between epsilon and zeta. Note that even though the upper case
+\cs{Delta} etc are actually rendered upright by \LaTeX,
+\gls{bib2gls}['s] interpreter treats them as italic to help keep
+them close to the lower case versions.
+
+\begin{definition}[\DescribeMacro\glsxtrMathItalicGreekIIrules]
+\cs{glsxtrMathItalicGreekIIrules}
+\end{definition}
+A rule block for mathematical Greek (\ics{alpha}, \ics{Alpha}, etc)
+characters that doesn't include digamma.
+
+\begin{definition}[\DescribeMacro\glsxtrMathItalicUpperGreekIrules]
+\cs{glsxtrMathItalicUpperGreekIrules}
+\end{definition}
+A rule block for upper case mathematical Greek (\ics{Alpha},
+\ics{Beta}, etc) characters that includes digamma (\ics{Digamma})
+between epsilon and zeta.
+
+\begin{definition}[\DescribeMacro\glsxtrMathItalicUpperGreekIIrules]
+\cs{glsxtrMathItalicUpperGreekIIrules}
+\end{definition}
+A rule block for upper case mathematical Greek (\ics{Alpha},
+\ics{Beta}, etc) characters that doesn't include digamma.
+
+\begin{definition}[\DescribeMacro\glsxtrMathItalicLowerGreekIrules]
+\cs{glsxtrMathItalicLowerGreekIrules}
+\end{definition}
+A rule block for lower case mathematical Greek (\ics{alpha},
+\ics{beta}, etc) characters that includes digamma (\ics{digamma})
+between epsilon and zeta.
+
+\begin{definition}[\DescribeMacro\glsxtrMathItalicLowerGreekIIrules]
+\cs{glsxtrMathItalicLowerGreekIIrules}
+\end{definition}
+A rule block for lower case mathematical Greek (\ics{alpha},
+\ics{beta}, etc) characters that doesn't include digamma.
+
+Additionally, there are commands in the form \cs{glsxtrUpAlpha},
+\cs{glsxtrUpBeta} etc and \cs{glsxtrMathItalicAlpha},
+\cs{glsxtrMathItalicBeta} etc
+that just cover the upper and lower case forms of a special
+Greek character (\cs{Upalpha}, \cs{upalpha} etc and \cs{Alpha},
+\cs{alpha} etc) as well as the following:
+
+\begin{definition}[\DescribeMacro\glsxtrMathItalicPartial]
+\cs{glsxtrMathItalicPartial}
+\end{definition}
+The partial derivative symbol ($\partial$).
+
+\begin{definition}[\DescribeMacro\glsxtrMathItalicNabla]
+\cs{glsxtrMathItalicNabla}
+\end{definition}
+The nabla symbol ($\nabla$).
+
+
+\section{Supplementary Commands}
+
+These commands are provided by \styfmt{glossaries-extra}
+for use with \gls{bib2gls}.
+
+The information provided with \cs{GlsXtrLoadResources}
+is written to the \texttt{.aux} file using
+\begin{alltt}
+\cs{protected@write}\cs{@auxout}\{\cs{glsxtrresourceinit}\}\marg{information}
+\end{alltt}
+where \meta{information} is the information to pass to
+\gls{bib2gls}. The command in the second argument
+\begin{definition}[\DescribeMacro\glsxtrresourceinit]
+\cs{glsxtrresourceinit}
+\end{definition}
+may be used to temporarily redefine commands before the
+information is written to the file. This does nothing
+by default, but may be redefined to allow the use of
+short commands for convenience. For example, with:
+\begin{verbatim}
+\renewcommand{\glsxtrresourceinit}{\let\u\glshex}
+\end{verbatim}
+you can just use, for example, \verb|\u E6| instead of
+\verb|\string\uE6| in the custom rule. This redefinition of \cs{u}
+is scoped so its original definition is restored after the write operation.
+
+If you have multiple resource commands and you want a default set of
+options you can supply them in the definition of:
+\begin{definition}[\DescribeMacro\GlsXtrDefaultResourceOptions]
+\cs{GlsXtrDefaultResourceOptions}
+\end{definition}
+For example:
+\begin{verbatim}
+\renewcommand{\GlsXtrDefaultResourceOptions}{selection=all}
+\end{verbatim}
+This should be done before the resource commands.
+
+It's possible to specify label prefixes. For example, modifying
+the earlier example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[record,style=indexgroup]{glossaries-extra}
+
+\setabbreviationstyle{long-short-desc}
+
+\GlsXtrLoadResources
+ [src={abbrvs},sort={letter-nocase},type=main,
+ label-prefix={abr.},
+ group={Abbreviations}]
+
+\GlsXtrLoadResources
+ [src={symbols},sort={use},type=main,
+ label-prefix={sym.},
+ group={Symbols}]
+
+\GlsXtrLoadResources[src={terms},sort={en-GB},type=main
+ label-prefix={trm.}]
+
+\begin{document}
+\gls{trm.bird}
+
+\gls{abr.shtml}
+
+\gls{sym.M}
+
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+If you do something like this, you may find it more convenient
+to define custom commands that set the prefix. For example:
+\begin{verbatim}
+\newcommand*{\sym}[2][]{\gls[#1]{sym.#2}}
+\end{verbatim}
+The problem with this is that the custom command \cs{sym}
+doesn't allow for modifiers (such as \cs{gls*} or \cs{gls+}).
+Instead you can use:
+\begin{definition}[\DescribeMacro\glsxtrnewgls]
+\cs{glsxtrnewgls}\oarg{default options}\marg{prefix}\marg{cs}
+\end{definition}
+which defines the command \meta{cs} that behaves like
+\begin{alltt}
+\cs{gls}\meta{modifier}[\meta{default options},\meta{options}]\{\meta{prefix}\meta{label}\}\oarg{insert}
+\end{alltt}
+For example:
+\begin{verbatim}
+\glsxtrnewgls{sym.}{\sym}
+\end{verbatim}
+or (to default to no hyperlinks)
+\begin{verbatim}
+\glsxtrnewgls[hyper=false]{sym.}{\sym}
+\end{verbatim}
+now you can use \verb|\sym+{M}| to behave like \verb|\gls+{sym.M}|.
+
+If you also want the plural and first letter upper case
+versions you can use
+\begin{definition}[\DescribeMacro\glsxtrnewglslike]
+\cs{glsxtrnewglslike}\oarg{default
+options}\marg{prefix}\marg{\cs{gls}-like cs}\marg{\cs{glspl}-like cs}\marg{\cs{Gls}-like cs}\marg{\cs{Glspl}-like cs}
+\end{definition}
+For example:
+\begin{verbatim}
+\glsxtrnewglslike[hyper=false]{idx.}{\idx}{\idxpl}{\Idx}{\Idxpl}
+\end{verbatim}
+For the all caps versions:
+\begin{definition}[\DescribeMacro\glsxtrnewGLSlike]
+\cs{glsxtrnewGLSlike}\oarg{default
+options}\marg{prefix}\marg{\cs{GLS}-like cs}\marg{\cs{GLSpl}-like cs}
+\end{definition}
+For example:
+\begin{verbatim}
+\glsxtrnewGLSlike[hyper=false]{idx.}{\IDX}{\IDXpl}
+\end{verbatim}
+
+There's an analogous command for \cs{rgls}:
+\begin{definition}[\DescribeMacro\glsxtrnewrgls]
+\cs{glsxtrnewrgls}\oarg{default options}\marg{prefix}\marg{cs}
+\end{definition}
+and for \cs{rgls}, \cs{rglspl}, \cs{rGls}
+and \cs{rGlspl}:
+\begin{definition}[\DescribeMacro\glsxtrnewrglslike]
+\cs{glsxtrnewrglslike}\oarg{default
+options}\marg{prefix}\marg{\cs{rgls}-like cs}\marg{\cs{rglspl}-like
+cs}\marg{\cs{rGls}-like cs}\marg{\cs{rGlspl}-like cs}
+\end{definition}
+and for the all caps:
+\begin{definition}[\DescribeMacro\glsxtrnewrGLSlike]
+\cs{glsxtrnewrGLSlike}\oarg{default
+options}\marg{prefix}\marg{\cs{rGLS}-like cs}\marg{\cs{rGLSpl}-like cs}
+\end{definition}
+
+If you provide your own custom command with just
+\cs{newcommand} that has syntax that starts with
+\oarg{options}\marg{label}, then you can notify \gls{bib2gls} using:
+\begin{definition}[\DescribeMacro\glsxtridentifyglslike]
+\cs{glsxtridentifyglslike}\marg{prefix}\marg{command}
+\end{definition}
+This writes information to the \texttt{.aux} file so that
+\gls{bib2gls} can search for the given command when looking
+for dependencies.
+
+Another possibility is to set up known label prefixes, with each
+one identified by:
+\begin{definition}[\DescribeMacro\glsxtraddlabelprefix]
+\cs{glsxtraddlabelprefix}\marg{prefix}
+\end{definition}
+These should be listed in order of precedence. Since no entries
+are defined on the first \LaTeX\ run, the final prefix should
+be the fallback. You can prepend a prefix to the list using:
+\begin{definition}[\DescribeMacro\glsxtrprependlabelprefix]
+\cs{glsxtrprependlabelprefix}\marg{prefix}
+\end{definition}
+which gives it the highest order of precedence.
+
+The \meta{prefix} argument may be empty. You can clear the list
+with:
+\begin{definition}[\DescribeMacro\glsxtrclearlabelprefixes]
+\cs{glsxtrclearlabelprefixes}
+\end{definition}
+
+You can test if a prefix is already in the list with:
+\begin{definition}[\DescribeMacro\glsxtrifinlabelprefixlist]
+\cs{glsxtrifinlabelprefixlist}\marg{prefix}\marg{true}\marg{false}
+\end{definition}
+In general it's best to avoid adding multiple instances of the same
+prefix, so you can check with this command before adding a prefix to
+the list. However, it can be useful to repeat a prefix at
+the end of the list so that it can be used as a fallback for entries
+that haven't yet been defined.
+
+With the list of possible prefixes set up (including an empty
+prefix if necessary), you can use:
+\begin{definition}[\DescribeMacro\dgls]
+\cs{dgls}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+which behaves like
+\begin{alltt}
+\cs{gls}\oarg{options}\{\meta{prefix}\meta{label}\}\oarg{insert}
+\end{alltt}
+where \meta{prefix} is the first prefix in the list such that
+\meta{prefix}\meta{label} matches a defined entry (or the last entry
+in the prefix list if none match).
+
+There are also analogous commands for the plural and case-changing
+versions:
+\begin{definition}[\DescribeMacro\dglspl]
+\cs{dglspl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(uses \cs{glspl}),
+\begin{definition}[\DescribeMacro\dGls]
+\cs{dGls}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(uses \cs{Gls}),
+\begin{definition}[\DescribeMacro\dGlspl]
+\cs{dGlspl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(uses \cs{Glspl}),
+\begin{definition}[\DescribeMacro\dGLS]
+\cs{dGLS}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(uses \cs{GLS}),
+\begin{definition}[\DescribeMacro\dGLSpl]
+\cs{dGLSpl}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(uses \cs{GLSpl}),
+\begin{definition}[\DescribeMacro\dglslink]
+\cs{dglslink}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(uses \cs{glslink}),
+\begin{definition}[\DescribeMacro\dglsdisp]
+\cs{dglsdisp}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+(uses \cs{glsdisp}).
+
+These commands are essentially provided for a mixture of single and
+dual entries. Suppose the file \texttt{entries.bib} contains:
+\begin{verbatim}
+@index{duck}
+@dualindexabbreviation{svm,
+ short={SVM},
+ long={support vector machine}
+}
+@dualindexsymbol{pi,
+ symbol={\ensuremath{\pi}},
+ description={ratio of a circle's circumference to its
+ diameter}
+}
+\end{verbatim}
+and suppose the document code is:
+\begin{verbatim}
+\documentclass{article}
+\usepackage{hyperref}
+\usepackage[record,abbreviations,symbols]{glossaries-extra}
+
+\newcommand{\bibglsnewdualindexsymbolsecondary}[5]{%
+ \longnewglossaryentry*{#1}{name={#3},category={symbol},
+ type={symbols},symbol={#4},#2}{#5}%
+}
+
+\GlsXtrLoadResources[src=entries]
+
+\begin{document}
+First use: \gls{duck}, \gls{svm}, \gls{pi}.
+Next use: \gls{duck}, \gls{svm}, \gls{pi}.
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+This uses the default empty primary prefix and \texttt{dual.}\ for
+the dual prefix, so \verb|\gls{svm}| is referencing the primary
+entry, which is (essentially) an \texttt{@index} type not an
+abbreviation. It therefore doesn't follow the abbreviation style, and
+it also hyperlinks to the index not to the list of abbreviations.
+Similarly for \verb|\gls{pi}|, which references the primary
+\texttt{@index} entry rather than the symbol.
+
+What's really needed is:
+\begin{verbatim}
+\gls{duck}, \gls{dual.svm}, \gls{dual.pi}.
+\end{verbatim}
+or with
+\begin{verbatim}
+\GlsXtrLoadResources[src=entries,
+ label-prefix={idx.},
+ dual-prefix={}
+]
+\end{verbatim}
+then only the entries without a dual need a prefix:
+\begin{verbatim}
+\gls{idx.duck}, \gls{svm}, \gls{pi}.
+\end{verbatim}
+Using \cs{glsxtrnewglslike}, as earlier, this can be simplified to:
+\begin{verbatim}
+\idx{duck}, \gls{svm}, \gls{pi}.
+\end{verbatim}
+but this requires remembering which terms have duals.
+
+An alternative is to use \cs{dgls} instead:
+\begin{verbatim}
+\documentclass{article}
+\usepackage{hyperref}
+\usepackage[record,abbreviations,symbols]{glossaries-extra}
+
+\newcommand{\bibglsnewdualindexsymbolsecondary}[5]{%
+ \longnewglossaryentry*{#1}{name={#3},category={symbol},
+ type={symbols},symbol={#4},#2}{#5}%
+}
+
+\GlsXtrLoadResources[src=entries]
+
+\glsxtraddlabelprefix{dual.}
+\glsxtraddlabelprefix{}
+
+\begin{document}
+First use: \dgls{duck}, \dgls{svm}, \dgls{pi}.
+Next use: \dgls{duck}, \dgls{svm}, \dgls{pi}.
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+On the first \LaTeX\ call (when the \texttt{.glstex} file doesn't exist),
+neither \texttt{dual.svm} nor \texttt{svm} exists, so \cs{dgls}
+uses the last prefix (which is empty in this case). This means
+that on the first \LaTeX\ run, \verb|\dgls{svm}| behaves like
+\verb|\gls{svm}|, which adds a record for the primary
+\texttt{svm} entry. The default primary-dual dependency means
+that this will cause both the primary (\texttt{svm}) and dual
+(\texttt{dual.svm}) entry to be selected. The location will be
+added to the primary entry's location list, unless overridden
+by resource options, such as \texttt{combine-dual-locations}.
+
+Once \gls{bib2gls} has been run and the \texttt{.glstex} file
+exists, then \texttt{dual.svm} exists. So \verb|\dgls{svm}| will
+again first try \texttt{dual.svm} (as \texttt{dual.} is the
+first in the list of label prefixes). That now exists, so
+\verb|\dgls{svm}| now behaves like \verb|\gls{dual.svm}|, which
+follows the abbreviation style and hyperlinks to the list
+of abbreviations.
+
+Similarly for the index-symbol combination \texttt{dual.pi} and
+\texttt{pi}. In the case of \verb|\dgls{duck}|, the label
+\texttt{dual.duck} never exists, so that's never selected.
+The empty prefix is the only one that matches, so
+\verb|\dgls{duck}| always behaves like \verb|\gls{duck}|.
+
+If you haven't used \texttt{combine-dual-locations} an extra
+\gls{bib2gls}+\LaTeX\ run may be required to correct the location
+lists.
+
+If you change the label prefixes, remember to update the
+corresponding \cs{glsxtraddlabelprefix}\marg{prefix}.
+If no prefixes have been added to the list (or if the list is
+cleared), just an empty prefix is assumed.
+
+As from version 1.8, \gls{bib2gls} provides hooks that identify
+the label prefixes in the \texttt{.glstex} file:
+\begin{alltt}
+\ics{bibglstertiaryprefixlabel}\marg{prefix}
+\ics{bibglsdualprefixlabel}\marg{prefix}
+\ics{bibglsprimaryprefixlabel}\marg{prefix}
+\end{alltt}
+These do nothing by default, but they can be defined before
+the resource file is loaded to set up the prefix list. For
+example:
+\begin{verbatim}
+\newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}}
+\newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}}
+\GlsXtrLoadResources[src=entries]
+\end{verbatim}
+Remember that this will only have an effect once the
+\texttt{.glstex} file has been created. The prefix list will be empty
+on the first run (which is treated as a single empty prefix).
+If this isn't a suitable fallback, it may be necessary to add one
+after all the resource commands:
+\begin{verbatim}
+\newcommand{\bibglsprimaryprefixlabel}[1]{\glsxtraddlabelprefix{#1}}
+\newcommand{\bibglsdualprefixlabel}[1]{\glsxtrprependlabelprefix{#1}}
+\GlsXtrLoadResources[src=entries,label-prefix={idx.}]
+\glsxtraddlabelprefix{idx.}
+\end{verbatim}
+Although this rather defeats the purpose of using the hooks as you
+still have to keep track of the fallback prefix.
+
+\section{Record Counting}
+\label{sec:recordcount}
+
+As from version 1.1 of \gls{bib2gls}, you can save the total
+record count for each entry by invoking \gls{bib2gls}
+with the \texttt{-{}-record-count} or \texttt{-{}-record-count-unit}
+switches. These options will ensure that when each entry
+is written to the \texttt{.glstex} file \gls{bib2gls} will
+additionally set the following internal fields for that entry:
+\begin{itemize}
+\item \texttt{recordcount}: set to the total
+number of records found for the entry;
+\item \texttt{recordcount.\meta{counter}}: set to the total
+number of records found for the entry for the given counter.
+\end{itemize}
+If \texttt{-{}-record-count-unit} is used then additionally:
+\begin{itemize}
+\item \texttt{recordcount.\meta{counter}.\meta{location}}: set to the total
+number of records found for the entry for the given counter with the
+given location.
+\end{itemize}
+Only use the unit counting option if the locations don't contain any special
+characters. If you really need it with locations that may contain
+formatting commands, then you can try redefining:
+\begin{definition}[\DescribeMacro\glsxtrdetoklocation]
+\cs{glsxtrdetoklocation}\marg{location}
+\end{definition}
+so that it detokenizes \meta{location} but take care when
+using \cs{GlsXtrLocationRecordCount} with commands like
+\cs{thepage} as they can end up becoming detokenized
+too early.
+
+Note that the record count includes locations that \gls{bib2gls}
+discards, such as ignored records, duplicates and partial
+duplicates. It doesn't include cross-reference records. For
+example, if \verb|\gls{bird}| is used twice on page~1, once on
+page~2 and fours times on page~3, and
+\verb|\gls[counter=section]{bird}| is used once in section~3, then
+the total record count (stored in the \texttt{recordcount} field) is
+$2+1+4+1=8$, the total for the \texttt{page} counter (stored in the
+\texttt{recordcount.page} field) is $2+1+4=7$, and the total for the
+\texttt{section} counter (stored in the \texttt{recordcount.section}
+field) is 1.
+
+With the unit counting on as well, the field
+\texttt{recordcount.page.1} is set to 2, \texttt{recordcount.page.2}
+is set to 1, \texttt{recordcount.page.3} is set to 4 and
+\texttt{recordcount.section.3} is set to 1.
+
+You can access these fields using the following commands which
+will expand to the field value if set or to 0 if unset:
+\begin{definition}[\DescribeMacro\GlsXtrTotalRecordCount]
+\cs{GlsXtrTotalRecordCount}\marg{label}
+\end{definition}
+This expands to the total record count for the entry given by
+\meta{label}.
+\begin{verbatim}
+\GlsXtrTotalRecordCount{bird}
+\end{verbatim}
+expands to 8.
+
+\begin{definition}[\DescribeMacro\GlsXtrRecordCount]
+\cs{GlsXtrRecordCount}\marg{label}\marg{counter}
+\end{definition}
+This expands to the counter total for the entry given by
+\meta{label} where \meta{counter} is the counter name.
+For example:
+\begin{verbatim}
+\GlsXtrRecordCount{bird}{page}
+\end{verbatim}
+expands to 7 and
+\begin{verbatim}
+\GlsXtrRecordCount{bird}{section}
+\end{verbatim}
+expands to 1.
+
+\begin{definition}[\DescribeMacro\GlsXtrLocationRecordCount]
+\cs{GlsXtrLocationRecordCount}\marg{label}\marg{counter}\marg{location}
+\end{definition}
+This expands to the total for the given location. For example
+\begin{verbatim}
+\GlsXtrLocationRecordCount{bird}{page}{3}
+\end{verbatim}
+expands to 4. Be careful about using \cs{thepage} in the
+\meta{location} part. Remember that due to \TeX's asynchronous
+output routine, \cs{thepage} may not be correct.
+
+There are commands analogous to the entry counting commands like
+\cs{cgls} and \cs{cglsformat} that are triggered by the record count.
+These are listed below.
+
+\begin{definition}[\DescribeMacro\rgls]
+\cs{rgls}\meta{modifier}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rglspl]
+\cs{rglspl}\meta{modifier}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rGls]
+\cs{rGls}\meta{modifier}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rGlspl]
+\cs{rGlspl}\meta{modifier}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rGLS]
+\cs{rGLS}\meta{modifier}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rGLSpl]
+\cs{rGLSpl}\meta{modifier}\oarg{options}\marg{label}\oarg{insert}
+\end{definition}
+These commands check the \catattr{recordcount} attribute
+which, if set, should be a number. For example:
+\begin{verbatim}
+\glssetcategoryattribute{abbreviation}{recordcount}{1}
+\end{verbatim}
+For convenience, you can use
+\begin{definition}[\DescribeMacro\GlsXtrSetRecordCountAttribute]
+\cs{GlsXtrSetRecordCountAttribute}\marg{category list}\marg{n}
+\end{definition}
+to set the \catattr{recordcount} attribute to \meta{n}
+for all the categories listed in \meta{category list}.
+
+The \cs{rgls}-like commands use
+\begin{definition}[\DescribeMacro\glsxtrifrecordtrigger]
+\cs{glsxtrifrecordtrigger}\marg{label}\marg{trigger
+code}\marg{normal}
+\end{definition}
+to determine whether the \cs{rgls}-like command should behave like
+its \cs{gls} counterpart (\meta{normal}) or whether it should
+instead use \meta{trigger code}.
+
+This command checks if the \catattr{recordcount} attribute is set.
+If not is just does \meta{normal}, otherwise it tests
+if
+\begin{definition}[\DescribeMacro\glsxtrrecordtriggervalue]
+\cs{glsxtrrecordtriggervalue}\marg{label}
+\end{definition}
+is greater than the value given in the \catattr{recordcount}
+attribute for that entry's category. If true, this does
+\meta{normal} otherwise it does \meta{trigger code}.
+The default definition of the trigger value command is:
+\begin{verbatim}
+\newcommand*{\glsxtrrecordtriggervalue}[1]{%
+ \GlsXtrTotalRecordCount{#1}%
+}
+\end{verbatim}
+The \meta{trigger code} part writes a record with
+the \gloskey[glslink]{format} set to \texttt{glstriggerrecordformat} (which
+\gls{bib2gls} v1.1+ recognises as a special type of ignored location
+format) and does \meta{trigger format}. Then it
+unsets the \gls{firstuseflag}. Note that it doesn't
+implement the post-link hook. This ensures that the record
+count is correct on the next run.
+
+The \meta{trigger format} depends on the \cs{rgls}-like
+command used and will be one of the following:
+\begin{definition}[\DescribeMacro\rglsformat]
+\cs{rglsformat}\marg{label}\marg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rglsplformat]
+\cs{rglsplformat}\marg{label}\marg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rGlsformat]
+\cs{rGlsformat}\marg{label}\marg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rGlsplformat]
+\cs{rGlsplformat}\marg{label}\marg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rGLSformat]
+\cs{rGLSformat}\marg{label}\marg{insert}
+\end{definition}
+\begin{definition}[\DescribeMacro\rGLSplformat]
+\cs{rGLSplformat}\marg{label}\marg{insert}
+\end{definition}
+These all behave much like their \cs{cglsformat} counterparts. If
+the entry's \catattr{regular} attribute is set or if the entry
+doesn't have a long form, the first or first plural is used,
+otherwise the long or long plural form is used.
+
+You can use
+\begin{definition}[\DescribeMacro\glsxtrenablerecordcount]
+\cs{glsxtrenablerecordcount}
+\end{definition}
+to redefine \cs{gls}, \cs{glspl}, \cs{Gls}, \cs{Glspl},
+\cs{GLS}, \cs{GLSpl} to \cs{rgls}, \cs{rglspl}, \cs{rGls}, \cs{rGlspl},
+\cs{rGLS}, \cs{rGLSpl}, respectively, for convenience.
+
+If you don't want the entries that use \meta{trigger code}
+to appear in the glossary, you need to use the resource option
+\texttt{trigger-type} to assign them to another glossary.
+For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[record]{glossaries-extra}
+
+\newignoredglossary{ignored}
+
+\GlsXtrLoadResources[
+ src=example-glossaries-acronym,
+ trigger-type=ignored,
+ category=abbreviation
+]
+
+\glsxtrenablerecordcount
+\GlsXtrSetRecordCountAttribute{abbreviation}{1}
+
+\begin{document}
+\gls{lid}. \gls{stc}. \gls{lid}. \gls{aeu}.
+\gls{upa}. \gls{aeu}.
+
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+In the above, \texttt{stc} and \texttt{upa} both only have
+one record, so they are assigned to the \texttt{ignored}
+glossary instead of the \texttt{main} one.
+
+\chapter{Miscellaneous New Commands}
+\label{sec:miscnew}
+
+The \styfmt{glossaries} package provides \ics{glsrefentry} entry to
+cross-reference entries when used with the \pkgopt{entrycounter} or
+\pkgopt{subentrycounter} options. The \styfmt{glossaries-extra}
+package provides a supplementary command
+\begin{definition}[\DescribeMacro\glsxtrpageref]
+\cs{glsxtrpageref}\marg{label}
+\end{definition}
+that works in the same way except that it uses \ics{pageref}
+instead of \ics{ref}.
+
+You can copy an entry to another glossary using
+\begin{definition}[\DescribeMacro\glsxtrcopytoglossary]
+\cs{glsxtrcopytoglossary}\marg{entry-label}\marg{glossary-type}
+\end{definition}
+This appends \meta{entry-label} to the end of the internal
+list for the glossary given by \meta{glossary-type}.
+Be careful if you use the \sty{hyperref} package as this
+may cause duplicate hypertargets. You will need to change
+\cs{glolinkprefix} to another value or disable hyperlinks
+when you display the duplicate. Alternatively, use the new
+\gloskey[printglossary]{target} key to switch off the targets:
+\begin{verbatim}
+\printunsrtglossary[target=false]
+\end{verbatim}
+
+The \styfmt{glossaries} package allows you to set preamble code
+for a given glossary type using \cs{setglossarypreamble}. This
+overrides any previous setting. With \styfmt{glossaries-extra}
+(as from v1.12) you can instead append to the preamble
+using
+\begin{definition}[\DescribeMacro\apptoglossarypreamble]
+\cs{apptoglossarypreamble}\oarg{type}\marg{code}
+\end{definition}
+or prepend using
+\begin{definition}[\DescribeMacro\pretoglossarypreamble]
+\cs{pretoglossarypreamble}\oarg{type}\marg{code}
+\end{definition}
+
+\section{Entry Fields}
+\label{sec:fields}
+
+A field may now be used to store the name of a text-block command
+that takes a single argument. The field is given by
+\begin{definition}[\DescribeMacro\GlsXtrFmtField]
+\cs{GlsXtrFmtField}
+\end{definition}
+The default value is \texttt{\GlsXtrFmtField}. Note that the
+value must be the control sequence name \emph{without the initial
+backslash}.
+
+For example:
+\begin{verbatim}
+\newcommand*{\mtx}[1]{\boldsymbol{#1}}
+\newcommand*{\mtxinv}[1]{\mtx{#1}\sp{-1}}
+
+\newglossaryentry{matrix}{%
+ name={matrix},
+ symbol={\ensuremath{\mtx{M}}},
+ plural={matrices},
+ user1={mtx},
+ description={rectangular array of values}
+}
+
+\newglossaryentry{identitymatrix}{%
+ name={identity matrix},
+ symbol={\ensuremath{\mtx{I}}},
+ plural={identity matrices},
+ description={a diagonal matrix with all diagonal elements equal to
+1 and all other elements equal to 0}
+}
+
+\newglossaryentry{matrixinv}{%
+ name={matrix inverse},
+ symbol={\ensuremath{\mtxinv{M}}},
+ user1={mtxinv},
+ description={a square \gls{matrix} such that
+ $\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$}
+}
+\end{verbatim}
+
+There are two commands provided that allow you to apply the
+command to an argument:
+\begin{definition}[\DescribeMacro\glsxtrfmt]
+\cs{glsxtrfmt}\oarg{options}\marg{label}\marg{text}
+\end{definition}
+This effectively does
+\begin{alltt}
+\cs{glslink}[\meta{default-options},\meta{options}]\marg{label}\{\cs{glsxtrfmtdisplay}\marg{cs name}\marg{text}\{\}\}
+\end{alltt}
+where \meta{cs name} is the control
+sequence name supplied in the provided field, which must be defined
+to take a single required argument. Although it effectively
+acts like \cs{glslink} it misses out the post-link hook.
+
+The default \meta{default-options} are given by
+\begin{definition}[\DescribeMacro\GlsXtrFmtDefaultOptions]
+\cs{GlsXtrFmtDefaultOptions}
+\end{definition}
+This is defined as \texttt{\GlsXtrFmtDefaultOptions} but may
+be redefined as appropriate. Note that the replacement text of
+\cs{GlsXtrFmtDefaultOptions} is prepended to the optional
+argument of \cs{glslink}.
+
+As from version 1.23, there's also a starred version of
+this command that has a final optional argument:
+\begin{definition}[\DescribeMacro{\glsxtrfmt*}]
+\cs{glsxtrfmt*}\oarg{options}\marg{label}\marg{text}\oarg{insert}
+\end{definition}
+Both the starred and unstarred versions use:
+\begin{definition}[\DescribeMacro\glsxtrfmtdisplay]
+\cs{glsxtrfmtdisplay}\marg{cs name}\marg{text}\marg{insert}
+\end{definition}
+within the link text.
+In the case of the unstarred version \meta{insert} will be empty.
+It will also be empty if the final option argument is
+missing from the starred form. If the entry given by \meta{label}
+is undefined \cs{glsxtrfmt} and \cs{glsxtrfmt*} will issue
+an error (or warning if \pkgopt[warn]{undefaction}).
+There won't be a warning or error if the entry is defined by
+the given field is missing. In either case,
+(the entry is undefined or the field is missing) \meta{cs name}
+will be \texttt{@firstofone} otherwise it will be the
+field value. The default definition is:
+\begin{verbatim}
+\newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3}
+\end{verbatim}
+which puts \meta{text} inside the argument of the control sequence
+and \meta{insert} outside it (but it will still be inside the
+link text).
+
+\begin{important}
+Remember that nested links cause a problem so avoid using
+commands like \cs{gls} or \cs{glsxtrfmt} within \meta{text}.
+\end{important}
+
+For example:
+\begin{verbatim}
+\[
+ \glsxtrfmt{matrix}{A}
+ \glsxtrfmt{matrixinv}{A}
+ =
+ \glssymbol{identitymatrix}
+\]
+\end{verbatim}
+If the default options are set to \texttt{noindex} then
+\cs{glsxtrfmt} won't index, but will create a hyperlink (if
+\sty{hyperref} has been loaded). This can be changed so that
+it also suppresses the hyperlink:
+\begin{verbatim}
+\renewcommand{\GlsXtrFmtDefaultOptions}{hyper=false,noindex}
+\end{verbatim}
+
+Note that \cs{glsxtrfmt} won't work with PDF bookmarks. Instead
+you can use
+\begin{definition}[\DescribeMacro\glsxtrentryfmt]
+\cs{glsxtrentryfmt}\marg{label}\marg{text}
+\end{definition}
+This uses \cs{texorpdfstring} and will simply expand to \meta{text}
+within the PDF bookmarks, but in the document it will do
+\meta{cs}\marg{text} if a control sequence name has been provided
+or just \meta{text} otherwise.
+
+The \styfmt{glossaries} package provides \cs{glsaddstoragekey} to
+add new keys. This command will cause an error if the key has
+already been defined. The \styfmt{glossaries-extra} package provides
+a supplementary command that will only define the key if it doesn't
+already exist:
+\begin{definition}[\DescribeMacro\glsxtrprovidestoragekey]
+\cs{glsxtrprovidestoragekey}\marg{key}\marg{default}\marg{cs}
+\end{definition}
+If the key has already been defined, it will still provide the command given in
+the third argument \meta{cs} (if it hasn't already been defined). Unlike
+\cs{glsaddstoragekey}, \meta{cs} may be left empty if you're happy
+to just use \cs{glsfieldfetch} to fetch the value of this new key.
+
+You can test if a key has been provided with:
+\begin{definition}[\DescribeMacro\glsxtrifkeydefined]
+\cs{glsxtrifkeydefined}\marg{key}\marg{true}\marg{false}
+\end{definition}
+This tests if \meta{key} is available for use in the
+\meta{key}=\value{value} list in the second argument of
+\cs{newglossaryentry} (or the optional argument of
+commands like \cs{newabbreviation}). The corresponding
+field may not have been set for any of the entries if no
+default was provided.
+
+There are now commands provided to set individual fields. Note that
+these only change the specified field, not any related values. For
+example, changing the value of the \gloskey{text} field won't update
+the \gloskey{plural} field. There are also some fields that
+should really only be set when entries are defined (such
+as the \gloskey{parent} field). Unexpected results may occur
+if they are subsequently changed.
+
+\begin{definition}[\DescribeMacro\GlsXtrSetField]
+\cs{GlsXtrSetField}\marg{label}\marg{field}\marg{value}
+\end{definition}
+Sets the field given by \meta{field} to \meta{value} for the entry
+given by \meta{label}. No expansion is performed. It's not
+necessary for the field to have been defined as a key. You
+can access the value later with \cs{glsxtrusefield}. Note that
+\cs{glsxtrifkeydefined} only tests if a key has been defined for use
+with commands like \cs{newglossaryentry}. If a field without a
+corresponding key is assigned a value, the key remains undefined.
+This command is robust.
+
+\cs{GlsXtrSetField} uses
+\begin{definition}[\DescribeMacro\glsxtrsetfieldifexists]
+\cs{glsxtrsetfieldifexists}\marg{label}\marg{field}\marg{code}
+\end{definition}
+where \meta{label} is the entry label and \meta{code} is the
+assignment code.
+
+This command just uses \ics{glsdoifexists}\marg{label}\marg{code}
+(ignoring the \meta{field} argument), so by default it causes an
+error if the entry doesn't exist. This can be changed to a warning
+with \pkgopt[warn]{undefaction}. You can redefine
+\cs{glsxtrsetfieldifexists} to simply do \meta{code} if you want to
+skip the existence check. Alternatively you can instead use
+\begin{definition}[\DescribeMacro\glsxtrdeffield]
+\cs{glsxtrdeffield}\marg{label}\marg{field}\meta{arguments}\marg{replacement text}
+\end{definition}
+This simply uses \sty{etoolbox}'s \cs{csdef} without any checks.
+This command isn't robust. There is also a version that uses
+\cs{protected@csedef} instead:\footnote{Pre version 1.28 used
+\cs{csedef}.}
+\begin{definition}[\DescribeMacro\glsxtredeffield]
+\cs{glsxtredeffield}\marg{label}\marg{field}\meta{arguments}\marg{replacement text}
+\end{definition}
+
+\begin{definition}[\DescribeMacro\gGlsXtrSetField]
+\cs{gGlsXtrSetField}\marg{label}\marg{field}\marg{value}
+\end{definition}
+As \cs{GlsXtrSetField} but globally.
+
+\begin{definition}[\DescribeMacro\eGlsXtrSetField]
+\cs{eGlsXtrSetField}\marg{label}\marg{field}\marg{value}
+\end{definition}
+As \cs{GlsXtrSetField} but uses protected expansion.
+
+\begin{definition}[\DescribeMacro\xGlsXtrSetField]
+\cs{xGlsXtrSetField}\marg{label}\marg{field}\marg{value}
+\end{definition}
+As \cs{gGlsXtrSetField} but uses protected expansion.
+
+\begin{definition}[\DescribeMacro\GlsXtrLetField]
+\cs{GlsXtrLetField}\marg{label}\marg{field}\marg{cs}
+\end{definition}
+Sets the field given by \meta{field} to the replacement text of \meta{cs}
+for the entry given by \meta{label} (using \cs{let}).
+
+\begin{definition}[\DescribeMacro\csGlsXtrLetField]
+\cs{csGlsXtrLetField}\marg{label}\marg{field}\marg{cs name}
+\end{definition}
+As \cs{GlsXtrLetField} but the control sequence name is supplied
+instead.
+
+\begin{definition}[\DescribeMacro\GlsXtrLetFieldToField]
+\cs{GlsXtrLetFieldToField}\marg{label-1}\marg{field-1}\marg{label-2}\marg{field-2}
+\end{definition}
+Sets the field given by \meta{field-1} for the entry given by
+\meta{label-1} to the field given by \meta{field-2} for the entry
+given by \meta{label-2}. There's no check for the existence of
+\meta{label-2}, but
+\cs{glsxtrsetfieldifexists}\marg{label-1}\marg{field-1}\marg{code}
+is still used, as for \cs{GlsXtrSetField}.
+
+The \styfmt{glossaries} package provides \ics{ifglshasfield}
+to determine if a field has been set. The \styfmt{glossaries-extra}
+package provides a simpler version:
+\begin{definition}[\DescribeMacro\glsxtrifhasfield]
+\cs{glsxtrifhasfield}\marg{field}\marg{label}\marg{true}\marg{false}
+\end{definition}
+(New to v1.19.) Note that in this case the \meta{field} must be the
+\emph{internal} field label (for example, \texttt{useri} rather than
+\texttt{user1}).
+Unlike \cs{ifglshasfield}, this version doesn't complain if the
+entry (given by \meta{label}) or the field don't exist and
+will simply do \meta{false}. If the field does exist for the given
+entry and it's not empty, the \meta{true} part is done otherwise it
+does \meta{false}. Within \meta{true} you may use
+\begin{definition}[\DescribeMacro\glscurrentfieldvalue]
+\cs{glscurrentfieldvalue}
+\end{definition}
+to access the field value. This command includes grouping
+which scopes the \meta{true} and \meta{false} parts.
+The starred version
+\begin{definition}[\DescribeMacro{\glsxtrifhasfield*}]
+\cs{glsxtrifhasfield*}\marg{field}\marg{label}\marg{true}\marg{false}
+\end{definition}
+omits the implicit grouping.
+
+\begin{important}
+Be careful of keys that use \cs{relax} as the default value
+(such as the \gloskey{symbol}). Use \cs{ifglshassymbol} instead.
+\end{important}
+
+There is also a version that simply uses \cs{ifcsundef}. It
+doesn't save the field value, but can be used if you only
+need to check if the field is defined without accessing it:
+\begin{definition}[\DescribeMacro\GlsXtrIfFieldUndef]
+\cs{GlsXtrIfFieldUndef}\marg{field}\marg{label}\marg{true}\marg{false}
+\end{definition}
+
+\begin{important}
+There's a difference between an undefined field and an unset field.
+An undefined field hasn't been assigned any value (no
+associated internal control sequence has been defined). If a defined
+field has been defined to empty, then it's considered unset.
+\cs{GlsXtrIfFieldUndef} implement \meta{false} for a defined
+but empty field whereas \cs{glsxtrifhasfield} and \cs{ifglshasfield}
+will implement \meta{false} a defined but empty field.
+Remember that any keys that may be used in \cs{newglossaryentry}
+will have a default value if not provided. In many cases, the
+default value is empty, so only use \cs{GlsXtrIfFieldUndef}
+for fields that can only be defined through commands like
+\cs{GlsXtrSetField}.
+\end{important}
+
+You can test if a field value equals a string using
+\begin{definition}[\DescribeMacro{\GlsXtrIfFieldEqStr}]
+\cs{GlsXtrIfFieldEqStr}\marg{field}\marg{label}\marg{text}\marg{true}\marg{false}
+\end{definition}
+If the entry exists and has the given field set to the
+given text then this does \meta{true} otherwise it does
+\meta{false}. This uses \cs{glsxtrifhasfield}
+to test if the field exists and then compares the replacement
+text of \cs{glscurrentfieldvalue} with \meta{text} using
+\sty{etoolbox}'s \cs{ifdefstring}. Version 1.39 introduced
+a starred form of this command, which uses the starred form
+of \cs{glsxtrifhasfield}.
+
+As from version 1.31, there's a similar command:
+\begin{definition}[\DescribeMacro{\GlsXtrIfFieldEqXpStr}]
+\cs{GlsXtrIfFieldEqXpStr}\marg{field}\marg{label}\marg{text}\marg{true}\marg{false}
+\end{definition}
+This is like \cs{GlsXtrIfFieldEqStr} but first (protected) fully
+expands \meta{text} (but not the field value). If you want to
+compare the (protected) full expansion of both the field value and \meta{text}
+use:
+\begin{definition}[\DescribeMacro{\GlsXtrIfXpFieldEqXpStr}]
+\cs{GlsXtrIfXpFieldEqXpStr}\marg{field}\marg{label}\marg{text}\marg{true}\marg{false}
+\end{definition}
+Again, version 1.39 introduced a starred form of these commands,
+which use the starred form of \cs{glsxtrifhasfield}.
+
+As from v1.31, if a field represents a numeric (integer) value, you
+can use the following two numeric tests. If the field is set, it must
+expand to an integer. You may use \cs{glscurrentfieldvalue}
+within \meta{true} or \meta{false} to access the actual value. Both \meta{true}
+and \meta{false} are scoped. If the field is undefined or empty,
+the value is assumed to be 0, and \cs{glscurrentfieldvalue} is set
+accordingly. As from version 1.39, these numeric tests have
+starred versions. The unstarred versions add implicit grouping.
+The starred versions don't.
+
+To test if the value is non-zero:
+\begin{definition}[\DescribeMacro{\GlsXtrIfFieldNonZero}]
+\cs{GlsXtrIfFieldNonZero}\marg{field}\marg{label}\marg{true}\marg{false}
+\end{definition}
+Alternatively, you can test if the field expands to a specific
+number using:
+\begin{definition}[\DescribeMacro{\GlsXtrIfFieldEqNum}]
+\cs{GlsXtrIfFieldEqNum}\marg{field}\marg{label}\marg{n}\marg{true}\marg{false}
+\end{definition}
+This does \meta{true} if the field value equals \meta{n}
+(using \cs{ifnum} for the comparison) otherwise it does
+\meta{false}. For a more general numeric comparison you
+can use:
+\begin{definition}[\DescribeMacro{\GlsXtrIfFieldCmpNum}]
+\cs{GlsXtrIfFieldCmpNum}\marg{field}\marg{label}\marg{comparison}\marg{n}\marg{true}\marg{false}
+\end{definition}
+where \meta{comparison} is one of \texttt{=}, \texttt{<} or
+\texttt{>}.
+
+The \styfmt{glossaries} package provides \ics{glsfieldfetch} which
+can be used to fetch the value of the given field and store it in a
+control sequence. The \styfmt{glossaries-extra} package provides
+another way of accessing the field value:
+\begin{definition}[\DescribeMacro\glsxtrusefield]
+\cs{glsxtrusefield}\marg{entry-label}\marg{field-label}
+\end{definition}
+This works in the same way as commands like \cs{glsentrytext} but
+the field label is specified in the first argument. Note that the
+\meta{field-label} corresponds to the internal field tag, which
+isn't always the same as the key name. See Table~4.1 of the
+\sty{glossaries} manual. No error occurs if the entry or field
+haven't been defined. This command is not robust.
+
+There is also a version that converts the first letter to uppercase
+(analogous to \cs{Glsentrytext}):
+\begin{definition}[\DescribeMacro\Glsxtrusefield]
+\cs{Glsxtrusefield}\marg{entry-label}\marg{field-label}
+\end{definition}
+and, as from v1.37, a command that converts the entire value to upper case:
+\begin{definition}[\DescribeMacro\GLSxtrusefield]
+\cs{GLSxtrusefield}\marg{entry-label}\marg{field-label}
+\end{definition}
+
+If you want to use a field to store a list that can be used
+as an \sty{etoolbox} internal list, you can use the following
+command that adds an item to the field using \sty{etoolbox}'s
+\cs{listcsadd}:
+\begin{definition}[\DescribeMacro\glsxtrfieldlistadd]
+\cs{glsxtrfieldlistadd}\marg{label}\marg{field}\marg{item}
+\end{definition}
+where \meta{label} is the entry's label, \meta{field} is
+the entry's field and \meta{item} is the item to add. There
+are analogous commands that use \cs{listgadd}, \cs{listeadd}
+and \cs{listxadd}:
+\begin{definition}[\DescribeMacro\glsxtrfieldlistgadd]
+\cs{glsxtrfieldlistgadd}\marg{label}\marg{field}\marg{item}
+\end{definition}
+\begin{definition}[\DescribeMacro\glsxtrfieldlisteadd]
+\cs{glsxtrfieldlisteadd}\marg{label}\marg{field}\marg{item}
+\end{definition}
+\begin{definition}[\DescribeMacro\glsxtrfieldlistxadd]
+\cs{glsxtrfieldlistxadd}\marg{label}\marg{field}\marg{item}
+\end{definition}
+You can then iterate over the list using:
+\begin{definition}[\DescribeMacro\glsxtrfielddolistloop]
+\cs{glsxtrfielddolistloop}\marg{label}\marg{field}
+\end{definition}
+or
+\begin{definition}[\DescribeMacro\glsxtrfieldforlistloop]
+\cs{glsxtrfieldforlistloop}\marg{label}\marg{field}\marg{handler}
+\end{definition}
+that internally use \cs{dolistcsloop} and \cs{forlistloop},
+respectively.
+
+There are also commands that use \cs{ifinlistcs}:
+\begin{definition}[\DescribeMacro\glsxtrfieldifinlist]
+\cs{glsxtrfieldifinlist}\marg{label}\marg{field}\marg{item}\marg{true}\marg{false}
+\end{definition}
+and \cs{xifinlistcs}
+\begin{definition}[\DescribeMacro\glsxtrfieldxifinlist]
+\cs{glsxtrfieldxifinlist}\marg{label}\marg{field}\marg{item}\marg{true}\marg{false}
+\end{definition}
+
+See the \sty{etoolbox}'s user manual for further
+details of these commands, in particular the limitations
+of \cs{ifinlist}.
+
+If the field has a comma-separated list value instead, you
+can iterate over it using:
+\begin{definition}[\DescribeMacro\glsxtrforcsvfield]
+\cs{glsxtrforcsvfield}\marg{label}\marg{field}\marg{handler}
+\end{definition}
+where again \meta{handler} is a control sequence that takes
+a single argument. Unlike the \sty{etoolbox} loops, this
+doesn't ignore empty elements nor does it discard leading / trailing
+spaces. Internally it uses \cs{@for} (modified by \sty{xfor}
+which is automatically loaded by \sty{glossaries}). The
+\sty{xfor} package modifies the behaviour of \cs{@for} to allow
+the loop to be broken prematurely using \cs{@endfortrue}.
+The \cs{glsxtrforcsvfield} command locally defines
+a user level command:
+\begin{definition}[\DescribeMacro\glsxtrendfor]
+\cs{glsxtrendfor}
+\end{definition}
+which is just a synonym for \cs{@endfortrue}.
+
+The loop is performed within the true part of \cs{glsxtrifhasfield}
+so scoping is automatically applied.
+
+As from version 1.32, if the field given by
+\begin{definition}[\DescribeMacro\GlsXtrForeignTextField]
+\cs{GlsXtrForeignTextField}
+\end{definition}
+(which defaults to \texttt{userii}) contains a locale tag, then
+\begin{definition}[\DescribeMacro\GlsXtrForeignText]
+\cs{GlsXtrForeignText}\marg{entry label}\marg{text}
+\end{definition}
+can be used to encapsulate \meta{text} in
+\cs{foreignlanguage}\marg{dialect}\marg{text} where \meta{dialect}
+is obtained from the locale tag through \sty{tracklang}'s
+\ics{GetTrackedDialectFromLanguageTag} command. You need at least
+\sty{tracklang} v1.3.6 for this to work properly. The \meta{dialect}
+must be one that's tracked (which typically means that \sty{babel}
+or \sty{polyglossia} has been loaded with the appropriate setting
+for that language). If \cs{foreignlanguage} hasn't been defined,
+this just does \meta{text}.
+For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage[main=british,brazilian,ngerman]{babel}
+\usepackage{glossaries-extra}
+
+\setabbreviationstyle{long-short-user}
+\newabbreviation
+ [user1={Associa\c{c}\~ao Brasileria de Normas T\'ecnicas},
+ user2= {pt-BR}
+ ]
+ {abnt}{ABNT}{Brazilian National Standards Organization}
+
+\newabbreviation
+ [user1={Deutsches Institut f\"ur Normung e.V.},
+ user2={de-DE-1996}]
+ {din}{DIN}{German Institute for Standardization}
+
+\renewcommand*{\glsxtruserparen}[2]{%
+ \glsxtrfullsep{#2}%
+ \glsxtrparen
+ {#1%
+ \ifglshasfield{\glsxtruserfield}{#2}%
+ {, \emph{\GlsXtrForeignText{#2}{\glscurrentfieldvalue}}}%
+ {}%
+ }%
+}
+
+\begin{document}
+\gls{abnt}, \gls{din}.
+\end{document}
+\end{verbatim}
+
+
+When using the \pkgopt{record} option, in addition to recording the
+usual location, you can also record the current value
+of another counter at the same time using the preamble-only command:
+\begin{definition}[\DescribeMacro\GlsXtrRecordCounter]
+\cs{GlsXtrRecordCounter}\marg{counter name}
+\end{definition}
+For example:
+\begin{verbatim}
+\usepackage[record]{glossaries-extra}
+\GlsXtrRecordCounter{section}
+\end{verbatim}
+Each time an entry is referenced with commands like \cs{gls}
+or \cs{glstext}, the \texttt{.aux} file will not only contain
+the \cs{glsxtr@record} command but also
+\begin{alltt}
+\cs{glsxtr@counterrecord}\marg{label}\{section\}\marg{n}
+\end{alltt}
+where \meta{n} is the current expansion of \cs{thesection}
+and \meta{label} is the entry's label. On the next run, when the
+\texttt{.aux} file is run, this command will do
+\begin{alltt}
+\cs{glsxtrfieldlistgadd}\marg{label}\{record.\meta{counter}\}\marg{n}
+\end{alltt}
+In the above example, if \verb|\gls{bird}| is used in section~1.2
+this would be
+\begin{verbatim}
+\glsxtrfieldlistgadd{bird}{record.section}{1.2}
+\end{verbatim}
+Note that there's no key corresponding to this new
+\texttt{record.section} field, but its value can be
+accessed with \cs{glsxtrfielduse} or the list can be
+iterated over with \cs{glsxtrfielddolistloop} etc.
+
+\section{Display All Entries Without Sorting or Indexing}
+\label{sec:printunsrt}
+
+\begin{definition}[\DescribeMacro\printunsrtglossary]
+\cs{printunsrtglossary}\oarg{options}
+\end{definition}
+This behaves like \cs{printnoidxglossary} but never sorts the
+entries and always lists all the defined entries for the given
+glossary (and doesn't require \cs{makenoidxglossaries}).
+If you want to use one of the \env{tabular}-like
+styles with \cs{printunsrtglossary}, make sure you load
+\sty{glossaries-extra-stylemods} which modifies
+the definition of \cs{glsgroupskip} to avoid the
+\qt{Incomplete \cs{iftrue}} error that may otherwise occur.
+
+There's also a starred form
+\begin{definition}[\DescribeMacro{\printunsrtglossary*}]
+\cs{printunsrtglossary}*\oarg{options}\marg{code}
+\end{definition}
+which is equivalent to
+\begin{alltt}
+\cs{begingroup}
+ \meta{code}\cs{printunsrtglossary}\oarg{options}\%
+\cs{endgroup}
+\end{alltt}
+Note that unlike \cs{glossarypreamble}, the supplied \meta{code} is
+done before the glossary header.
+
+This means you now have the option to simply list all entries on the
+first \LaTeX\ run without the need for a post-processor, however
+there will be no \gls{numberlist} in this case, as that has to be
+set by a post-processor such as \gls{bib2gls} (see
+\sectionref{sec:bib2gls}).
+
+\begin{important}
+No attempt is made to gather hierarchical elements.
+If child entries aren't defined immediately after their parent
+entry, they won't be together in the glossary when using
+\cs{printunsrtglossary}.
+\end{important}
+
+There's a difference in behaviour depending on whether or not the
+\gloskey{group} key is defined. If not defined (default), the
+group label will be formed from the first letter of the
+\gloskey{name} field. The corresponding group title will be obtained
+as discussed in \sectionref{sec:glosstylemods}. This can lead to an
+odd effect if you are using a style that separates letter groups
+when the ordering isn't alphabetical.
+
+If the \gloskey{group} key is defined (which it is with the
+\pkgopt{record} option) then the group label will be obtained from
+the value of that field. If the field is empty, \emph{no grouping is
+performed}, even if the style supports it. (That is, there won't be
+a header or a vertical separation.) If the \gloskey{group} field is
+non-empty, then the corresponding title is obtained as described
+earlier.
+
+If you want to use a different field, you can redefine
+\begin{definition}[\DescribeMacro\glsxtrgroupfield]
+\cs{glsxtrgroupfield}
+\end{definition}
+to the relevant internal field label, but the \gloskey{group}
+\emph{key} must still be defined (through the \pkgopt{record} option
+or with commands like \cs{glsaddstoragekey}) to ensure that
+\cs{printunsrtglossary} uses \cs{glsxtrgroupfield}. (This method is
+used by \gls{bib2gls} for secondary entries, which have the group
+label stored in the \texttt{secondarygroup} internal field.)
+
+If you have any entries with the \gloskey{see} key set, you will
+need the \sty{glossaries} package option \pkgopt[ignore]{seenoindex}
+or \pkgopt[warn]{seenoindex} to prevent an error occurring from the
+automated \cs{glssee} normally triggered by this key. The
+\pkgopt[only]{record} package option will automatically deal with
+this.
+
+For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\newglossaryentry{zebra}{name={zebra},description={stripy animal}}
+\newglossaryentry{ant}{name={ant},description={an insect}}
+
+\begin{document}
+\gls{ant} and \gls{zebra}
+
+\printunsrtglossaries
+\end{document}
+\end{verbatim}
+In the above, zebra will be listed before ant as it was defined
+first.
+
+If you allow document definitions with the \pkgopt{docdefs} option,
+the document will require a second \LaTeX\ run if the entries are
+defined after \cs{printunsrtglossary}.
+
+The optional argument is as for \cs{printnoidxglossary} (except for
+the \gloskey[printnoidxglossary]{sort} key, which isn't available).
+
+All glossaries may be displayed in the order of their definition
+using:
+\begin{definition}[\DescribeMacro\printunsrtglossaries]
+\cs{printunsrtglossaries}
+\end{definition}
+which is analogous to \cs{printnoidxglossaries}. This just
+iterates over all defined glossaries (that aren't on the ignored
+list) and does \cs{printunsrtglossary}[type=\meta{type}].
+
+To avoid complications caused by \env{tabular}-like glossary
+styles, \cs{printunsrtglossary} iterates over all entries
+in the selected glossary and appends the appropriate code
+to an internal command. Once the construction of this
+command is complete, then it's performed to display the
+glossary. This puts the loop outside the style code.
+For convenience, there's a hook used within the loop:
+\begin{definition}[\DescribeMacro\printunsrtglossaryentryprocesshook]
+\cs{printunsrtglossaryentryprocesshook}\marg{label}
+\end{definition}
+This hook should not display any content, but may be used
+to perform calculations. For example, to calculate widths.
+Within this hook you can use:
+\begin{definition}[\DescribeMacro\printunsrtglossaryskipentry]
+\cs{printunsrtglossaryskipentry}
+\end{definition}
+to skip the current entry. This will prevent the entry from
+being added to the internal command.
+
+There's another hook immediately before the internal command
+containing the glossary code is performed:
+\begin{definition}[\DescribeMacro\printunsrtglossarypredoglossary]
+\cs{printunsrtglossarypredoglossary}
+\end{definition}
+
+The internal command uses
+\begin{definition}[\DescribeMacro\printunsrtglossaryhandler]
+\cs{printunsrtglossaryhandler}\marg{label}
+\end{definition}
+to display each item in the list, where \meta{label} is the current label.
+
+By default the handler just does
+\begin{definition}[\DescribeMacro\glsxtrunsrtdo]
+\cs{glsxtrunsrtdo}\marg{label}
+\end{definition}
+which determines whether to use \cs{glossentry} or
+\cs{subglossentry} and checks the \gloskey{location} and
+\gloskey{loclist} fields for the \gls{numberlist}. If you want to
+use a different field to be used instead of \gloskey{location}
+then redefine:
+\begin{definition}[\DescribeMacro\GlsXtrLocationField]
+\cs{GlsXtrLocationField}
+\end{definition}
+to the internal name of the desired field. For example:
+\begin{verbatim}
+\renewcommand{\GlsXtrLocationField}{primarylocation}
+\end{verbatim}
+\begin{important}
+Note that if the given location field is undefined or unset,
+the handler will fallback on the \gloskey{loclist} field.
+\end{important}
+You can instruct \gls{bib2gls} to omit setting the \gloskey{loclist}
+field with the resource option \texttt{--save-loclist=false}
+to prevent it from being used as a fallback.
+
+You can redefine the handler if required. For example,
+you may want to filter entries according to the category
+label. You can test if a label is contained in a comma-separated
+list of labels using:
+\begin{definition}[\DescribeMacro\glsxtriflabelinlist]
+\cs{glsxtriflabelinlist}\marg{label}\marg{label list}\marg{true}\marg{false}
+\end{definition}
+The \meta{label} and \meta{label list} will be fully expanded.
+
+\begin{important}
+If you redefine the handler to exclude entries, you may end
+up with an empty glossary. This could cause a problem for
+the list-based styles.
+\end{important}
+
+For example, if the preamble includes:
+\begin{verbatim}
+\usepackage[record,style=index]{glossaries-extra}
+\GlsXtrRecordCounter{section}
+\end{verbatim}
+then you can print the glossary but first redefine the handler
+to only select entries that include the current section number
+in the \texttt{record.section} field:
+\begin{verbatim}
+\renewcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+ {\glsxtrunsrtdo{#1}}%
+ {}%
+}
+\end{verbatim}
+
+Alternatively you can use the starred form of
+\cs{printunsrtglossary} which will localise the change:
+
+\begin{verbatim}
+\printunsrtglossary*{%
+ \renewcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+ {\glsxtrunsrtdo{#1}}%
+ {}%
+ }%
+}
+\end{verbatim}
+
+If you are using the \sty{hyperref} package and want to
+display the same glossary more than once, you can also
+add a temporary redefinition of \cs{glolinkprefix} to
+avoid duplicate hypertarget names. For example:
+
+\begin{verbatim}
+\printunsrtglossary*{%
+ \renewcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+ {\glsxtrunsrtdo{#1}}%
+ {}%
+ }%
+ \ifcsundef{theHsection}%
+ {%
+ \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}%
+ }%
+ {%
+ \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}%
+ }%
+}
+\end{verbatim}
+Note that this will cause a problem if your descriptions
+contain commands like \cs{gls} that need to link an entry that
+doesn't appear in the summary. In this case, it's a better approach
+to use:
+\begin{verbatim}
+\printunsrtglossary*{%
+ \renewcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+ {\glsxtrunsrtdo{#1}}%
+ {}%
+ }%
+ \ifcsundef{theHsection}%
+ {%
+ \setkeys{printgloss}{targetnameprefix={record.\csuse{thesection}.}}%
+ }%
+ {%
+ \setkeys{printgloss}{targetnameprefix={record.\csuse{theHsection}.}}%
+ }%
+}
+\end{verbatim}
+
+If it's a short summary at the start of a section, you might
+also want to suppress the glossary header and add some vertical
+space afterwards:
+\begin{verbatim}
+\printunsrtglossary*{%
+ \renewcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrfieldxifinlist{#1}{record.section}{\thesection}
+ {\glsxtrunsrtdo{#1}}%
+ {}%
+ }%
+ \ifcsundef{theHsection}%
+ {%
+ \renewcommand*{\glolinkprefix}{record.\csuse{thesection}.}%
+ }%
+ {%
+ \renewcommand*{\glolinkprefix}{record.\csuse{theHsection}.}%
+ }%
+ \renewcommand*{\glossarysection}[2][]{}%
+ \appto\glossarypostamble{\glspar\medskip\glspar}%
+}
+\end{verbatim}
+
+There's a shortcut command that essentially does this:
+\begin{definition}[\DescribeMacro\printunsrtglossaryunit]
+\cs{printunsrtglossaryunit}\oarg{options}\marg{counter name}
+\end{definition}
+The above example can simply be replaced with:
+\begin{verbatim}
+\printunsrtglossaryunit{section}
+\end{verbatim}
+
+This shortcut command is actually defined to use \cs{printunsrtglossary*} with
+\begin{definition}[\DescribeMacro\printunsrtglossaryunitsetup]
+\cs{printunsrtglossaryunitsetup}\marg{counter name}
+\end{definition}
+so if you want to just make some minor modifications you can
+do
+\begin{verbatim}
+\printunsrtglossary*{\printunsrtglossaryunitsetup{section}%
+ \renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}%
+}
+\end{verbatim}
+which will start the list with a subsection header with the
+title \qt{Summary} (overriding the glossary's title).
+
+Note that this shortcut command is only available with the
+\pkgopt{record} (or \pkgopt[alsoindex]{record}) package option.
+
+This temporary change in the hypertarget prefix means you
+need to explicitly use \cs{hyperlink} to create a link to it
+as commands like \cs{gls} will try to link to the target
+created with the default definition of \cs{gloslinkprefix}.
+This isn't a problem if you want a primary glossary of all terms
+produced using just \cs{printunsrtglossary} (in the front or back
+matter) which can be the target for all glossary references
+and then just use \cs{printunsrtglossaryunit} for a quick
+summary at the start of a section etc.
+
+\section{Standalone Entry Items}
+\label{sec:glossentry}
+
+It may be that you don't want a list but would rather display
+entry details throughout the document. You can simply
+do \cs{glsentryname} followed by \cs{glsentrydesc}.
+(Remember that if you don't want a sorted list, use
+\pkgopt[none]{sort} to skip the construction of the
+\gloskey{sort} field.)
+For example, in the preamble provide a custom command:
+\begin{verbatim}
+\newcommand{\displayterm}[1]{%
+ \par\medskip\par\noindent
+ Definition: \glsentryname{#1}.\par
+ \glsentrydesc{#1}
+ \par\medskip
+}
+\end{verbatim}
+define your entries
+\begin{verbatim}
+\newglossaryentry{function}{name={function},
+ description={a relation or expression involving variables}
+}
+\end{verbatim}
+and then later in the text:
+\begin{verbatim}
+\displayterm{function}
+\end{verbatim}
+
+However, if may be that you want to use \sty{hyperref} and
+have commands like \cs{gls} link back to the place where
+the term is described. Instead of using \cs{glsentryname}
+use
+\begin{definition}[\DescribeMacro\glsxtrglossentry]
+\cs{glsxtrglossentry}\marg{label}
+\end{definition}
+where \meta{label} is the entry's label.
+
+This is designed to behave much like the way the name is displayed
+in the glossary. It performs the following:
+\begin{itemize}
+\item Defines \cs{glscurrententrylabel} to the entry's label.
+This is usually done at the start of the glossary style commands
+\cs{glossentry} and \cs{subglossentry} and may be used by hooks,
+such as the post-name hooks. Here the definition is localised
+so that it's only available for use in \cs{glossentryname}.
+
+\item Defines \cs{currentglossary} to the entry's glossary type.
+This is usually done at the start of commands like
+\cs{printglossary} and may be used by style hooks.
+Here the definition is localised so that it's only available for use
+in \cs{glsentryitem} and \cs{glssubentryitem}. The value is obtained
+by fully expanding:
+\begin{definition}[\DescribeMacro\GlsXtrStandaloneGlossaryType]
+\cs{GlsXtrStandaloneGlossaryType}
+\end{definition}
+which defaults to the value of the \gloskey{type} field for the
+current entry.
+
+\item Increments and display the entry counters
+ if the \pkgopt{entrycounter} or \pkgopt{subentrycounter}
+ package options are set. If the entry doesn't have a parent, then
+ this does
+ \begin{itemize}
+ \item \cs{glsentryitem}\marg{label}
+ \end{itemize}
+ otherwise it does (as from v1.31)
+ \begin{itemize}
+ \item \ics{GlsXtrStandaloneSubEntryItem}\marg{label}
+which defaults to \cs{glssubentryitem}\marg{label} if the entry
+has a parent but not a grandparent.
+ \end{itemize}
+ This reflects the behaviour of the predefined hierarchical styles.
+A bug in pre-version~1.31 used \cs{glsentryitem} for all child levels,
+which doesn't match the hierarchical glossary styles. If you want to
+restore this behaviour, just do:
+\begin{verbatim}
+\renewcommand*{\GlsXtrStandaloneSubEntryItem}[1]{\glssubentryitem{#1}}
+\end{verbatim}
+
+\item Sets the hyper-target if supported (using \cs{glstarget})
+and displays the entry name using:
+\begin{definition}[\DescribeMacro\GlsXtrStandaloneEntryName]
+\cs{GlsXtrStandaloneEntryName}\marg{label}
+\end{definition}
+ which uses
+ \cs{glstarget}\marg{label}\{\cs{glossentryname}\marg{label}\}
+ by default.
+ Remember that \cs{glossentryname} uses \cs{glsnamefont} or picks up
+ the style from category attributes such as
+ \catattr{glossnamefont}.
+\end{itemize}
+If you have used \ics{nopostdesc} or \ics{glsxtrnopostpunc}
+in any of your description fields, you can use
+\begin{definition}[\DescribeMacro\glsxtractivatenopost]
+\cs{glsxtractivatenopost}
+\end{definition}
+to make these commands behave as they normally do within a glossary.
+This needs to be placed before
+\begin{alltt}
+\cs{glossentrydesc}\marg{label}\cs{glspostdescription}
+\end{alltt}
+and scoped. Note that \cs{glsnonextpages} and \cs{glsnextpages} have no
+effect outside of the glossary and are not intended for use in a
+standalone context.
+
+It's also possible to select a different field (rather than
+using \gloskey{name}):
+\begin{definition}[\DescribeMacro\glsxtrglossentryother]
+\cs{glsxtrglossentryother}\marg{header}\marg{label}\marg{field}
+\end{definition}
+The \meta{field} must be given using its internal field label
+which may not be the same as the key used to set the field.
+See the key to field mappings table in the \styfmt{glossaries}
+user manual. The \meta{header} argument is the code
+to pass to the third argument of \cs{glsxtrtitleorpdforheading}.
+It may be left empty in which case the default is determined as follows:
+\begin{itemize}
+\item If \cs{glsxtrhead\meta{field}} is defined, then \meta{header}
+is \cs{glsxtrhead\meta{field}}\marg{label}.
+\item Otherwise \meta{header} is simply the field value.
+\end{itemize}
+The \cs{glsxtrglossentryother} command internally uses
+\begin{definition}[\DescribeMacro\GlsXtrStandaloneEntryOther]
+\cs{GlsXtrStandaloneEntryOther}\marg{label}\marg{field}
+\end{definition}
+instead of \cs{GlsXtrStandaloneEntryName}, which uses
+\cs{glossentrynameother}\marg{label}\marg{field} instead of
+\cs{glossentryname}\marg{label}.
+
+If you have loaded the
+\sty{glossaries-accsupp} package (through the \pkgopt{accsupp}
+option) then accessibility support will be provided if
+there's a corresponding command
+\begin{alltt}
+\cs{gls\meta{field}accessdisplay}\marg{text}\marg{label}
+\end{alltt}
+(for example, \cs{glssymbolaccessdisplay}).
+
+This means that my custom command can be changed to:
+\begin{verbatim}
+\newcommand{\displayterm}[1]{%
+ \par\medskip\par\noindent
+ Definition: \glsxtrglossentry{#1}.\par
+ \glsentrydesc{#1}
+ \par\medskip
+}
+\end{verbatim}
+If I want numbered definitions, then I can use the
+package options \sty{entrycounter} or \sty{subentrycounter}
+and remove the colon:
+\begin{verbatim}
+\newcommand{\displayterm}[1]{%
+ \par\medskip\par\noindent
+ Definition \glsxtrglossentry{#1}.\par
+ \glsentrydesc{#1}
+ \par\medskip
+}
+\end{verbatim}
+The counter label uses a dot after the number by default
+but this can be changed to a colon:
+\begin{verbatim}
+\renewcommand*{\glsentrycounterlabel}{\theglossaryentry:\space}
+\end{verbatim}
+It's now possible to not only use \cs{gls} to link back to the
+definition but also use \cs{glsrefentry} to reference
+the counter and \cs{glsxtrpageref} to reference the page number.
+
+If I want the description to behave more like it does
+in a glossary in need to make the following modification:
+\begin{verbatim}
+\newcommand{\displayterm}[1]{%
+ \par\medskip\par\noindent
+ Definition \glsxtrglossentry{#1}.\par
+ \begingroup
+ \glsxtractivatenopost
+ \glossentrydesc{#1}\glspostdescription
+ \endgroup
+ \par\medskip
+}
+\end{verbatim}
+(Note the grouping to localise \cs{glsxtractivatenopost}.)
+
+You can also use \cs{glsxtrglossentry} within section headings.
+For example:
+\begin{verbatim}
+\section{\glsxtrglossentry{function}}
+\end{verbatim}
+This will use \cs{glsentryname} in PDF bookmarks (if
+\cs{texorpdfstring} is defined) and will use \cs{glsxtrheadname} in
+page headers and table of contents. (If you're using a page style or
+table of contents that doesn't use \cs{markright} or \cs{markbook}
+or \cs{@starttoc} then you need to insert \cs{glsxtrmarkhook} and
+\cs{@glsxtrinmark} at the start of the header or table of contents
+either scoped or afterwards cancelled with \cs{@glsxtrnotinmark} and
+\cs{glsxtrrestoremarkhook}.)
+
+\section{Entry Aliases}
+\label{sec:alias}
+
+An entry can be made an alias of another entry using the
+\gloskey{alias} key. The value should be the label of the other
+term. There's no check for the other's existence when the aliased
+entry is defined. This is to allow the possibility of defining the
+other entry after the aliased entry. (For example, when used with
+\gls{bib2gls}.)
+
+If an entry \meta{entry-1} is made an alias of \meta{entry-2} then:
+\begin{itemize}
+\item If the \gloskey{see} field wasn't provided when \meta{entry-1}
+was defined, the \gloskey{alias} key will automatically trigger
+\begin{alltt}
+\cs{glssee}\marg{entry-1}\marg{entry-2}
+\end{alltt}
+\item If the \sty{hyperref} package has been loaded then
+\cs{gls}\marg{entry-1} will link to \meta{entry-2}'s target. (Unless
+the \catattr{targeturl} attribute has been set for \meta{entry-1}'s
+category.)
+\item With \pkgopt[off]{record} or \pkgopt[alsoindex]{record}, the \gloskey[glslink]{noindex} setting will automatically be triggered
+when referencing \meta{entry-1} with commands like \cs{gls} or
+\cs{glstext}. This prevents \meta{entry-1} from have a
+\gls{locationlist} (aside from the cross-reference added with
+\cs{glssee}) unless it's been explicitly indexed with \cs{glsadd} or
+if the indexing has been explicitly set using
+\texttt{noindex=false}.
+
+Note that with \pkgopt[only]{record}, the \gls{locationlist}
+for aliased entries is controlled with \gls{bib2gls}['s] settings.
+\end{itemize}
+
+The index suppression trigger is performed by
+\begin{definition}[\DescribeMacro\glsxtrsetaliasnoindex]
+\cs{glsxtrsetaliasnoindex}
+\end{definition}
+This is performed after the default options provided by
+\ics{GlsXtrSetDefaultGlsOpts} have been set.
+With \pkgopt[only]{record}, \cs{glsxtrsetaliasnoindex} will
+default to do nothing.
+
+Within the definition of \cs{glsxtrsetaliasnoindex} you can use
+\begin{definition}[\DescribeMacro\glsxtrindexaliased]
+\cs{glsxtrindexaliased}
+\end{definition}
+to index \meta{entry-2}.
+
+The index suppression command can be redefined to index the main
+term instead. For example:
+\begin{verbatim}
+\renewcommand{\glsxtrsetaliasnoindex}{%
+ \glsxtrindexaliased
+ \setkeys{glslink}{noindex}%
+}
+\end{verbatim}
+
+The value of the \gloskey{alias} field can be accessed using
+\begin{definition}[\DescribeMacro\glsxtralias]
+\cs{glsxtralias}\marg{label}
+\end{definition}
+
+\chapter{Supplemental Packages}
+\label{sec:supplemental}
+
+The \styfmt{glossaries} bundle provides additional support packages
+\sty{glossaries-prefix} (for prefixing) and \sty{glossaries-accsupp}
+(for accessibility support). These packages aren't automatically
+loaded.
+
+\section{Prefixes or Determiners}
+\label{sec:prefix}
+
+If prefixing is required, you can simply load
+\sty{glossaries-prefix} after \styfmt{glossaries-extra}. For example:
+\begin{verbatim}
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+\usepackage{glossaries-prefix}
+
+\makeglossaries
+
+\newabbreviation
+ [prefix={an\space},
+ prefixfirst={a~}]
+ {svm}{SVM}{support vector machine}
+
+\begin{document}
+
+First use: \pgls{svm}.
+Next use: \pgls{svm}.
+
+\printglossaries
+
+\end{document}
+\end{verbatim}
+
+\section{Accessibility Support}
+\label{sec:accsupp}
+
+The \sty{glossaries-accsupp} package needs to be loaded before
+\styfmt{glossaries-extra} or through the \pkgopt{accsupp} package
+option:
+\begin{verbatim}
+\usepackage[accsupp]{glossaries-extra}
+\end{verbatim}
+If you don't load \sty{glossaries-accsupp} or you load
+\sty{glossaries-accsupp} after \styfmt{glossaries-extra}
+the new \cs{glsaccess}\meta{xxx} commands described below will
+simply be equivalent to the corresponding \cs{glsentry}\meta{xxx}
+commands.
+
+The following \cs{glsaccess}\meta{xxx} commands add accessibility information wrapped around
+the corresponding \cs{glsentry}\meta{xxx} commands. There is
+no check for existence of the entry nor do any of these commands
+add formatting, hyperlinks or indexing information.
+
+\begin{definition}[\DescribeMacro\glsaccessname]
+\cs{glsaccessname}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{name} field for the entry
+identified by \meta{label}.
+
+If the \sty{glossaries-accsupp} package isn't loaded, this is
+simply defined as:
+\begin{verbatim}
+\newcommand*{\glsaccessname}[1]{\glsentryname{#1}}
+\end{verbatim}
+otherwise it's defined as:
+\begin{verbatim}
+\newcommand*{\glsaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \glsentryname{#1}%
+ }%
+ {#1}%
+}
+\end{verbatim}
+(\ics{glsnameaccessdisplay} is defined by the
+\sty{glossaries-accsupp} package.) The first letter upper case
+version is:
+\begin{definition}[\DescribeMacro\Glsaccessname]
+\cs{Glsaccessname}\marg{label}
+\end{definition}
+Without the \sty{glossaries-accsupp} package this is just defined
+as:
+\begin{verbatim}
+\newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}}
+\end{verbatim}
+With the \sty{glossaries-accsupp} package this is defined as:
+\begin{verbatim}
+\newcommand*{\Glsaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \Glsentryname{#1}%
+ }%
+ {#1}%
+}
+\end{verbatim}
+
+The following commands are all defined in an analogous manner.
+\begin{definition}[\DescribeMacro\glsaccesstext]
+\cs{glsaccesstext}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{text} field.
+
+\begin{definition}[\DescribeMacro\Glsaccesstext]
+\cs{Glsaccesstext}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{text} field with the first
+letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccessplural]
+\cs{glsaccessplural}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{plural} field.
+
+\begin{definition}[\DescribeMacro\Glsaccessplural]
+\cs{Glsaccessplural}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{plural} field
+with the first letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccessfirst]
+\cs{glsaccessfirst}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{first} field.
+
+\begin{definition}[\DescribeMacro\Glsaccessfirst]
+\cs{Glsaccessfirst}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{first} field
+with the first letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccessfirstplural]
+\cs{glsaccessfirstplural}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{firstplural} field.
+
+\begin{definition}[\DescribeMacro\Glsaccessfirstplural]
+\cs{Glsaccessfirstplural}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{firstplural} field
+with the first letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccesssymbol]
+\cs{glsaccesssymbol}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{symbol} field.
+
+\begin{definition}[\DescribeMacro\Glsaccesssymbol]
+\cs{Glsaccesssymbol}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{symbol} field
+with the first letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccesssymbolplural]
+\cs{glsaccesssymbolplural}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{symbolplural} field.
+
+\begin{definition}[\DescribeMacro\Glsaccesssymbolplural]
+\cs{Glsaccesssymbolplural}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{symbolplural} field
+with the first letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccessdesc]
+\cs{glsaccessdesc}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{description} field.
+
+\begin{definition}[\DescribeMacro\Glsaccessdesc]
+\cs{Glsaccessdesc}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{description} field
+with the first letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccessdescplural]
+\cs{glsaccessdescplural}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{descriptionplural} field.
+
+\begin{definition}[\DescribeMacro\Glsaccessdescplural]
+\cs{Glsaccessdescplural}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{descriptionplural} field
+with the first letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccessshort]
+\cs{glsaccessshort}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{short} field.
+
+\begin{definition}[\DescribeMacro\Glsaccessshort]
+\cs{Glsaccessshort}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{short} field with the first
+letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccessshortpl]
+\cs{glsaccessshortpl}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{shortplural} field.
+
+\begin{definition}[\DescribeMacro\Glsaccessshortpl]
+\cs{Glsaccessshortpl}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{shortplural} field with the first
+letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccesslong]
+\cs{glsaccesslong}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{long} field.
+
+\begin{definition}[\DescribeMacro\Glsaccesslong]
+\cs{Glsaccesslong}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{long} field with the first
+letter converted to upper case.
+
+\begin{definition}[\DescribeMacro\glsaccesslongpl]
+\cs{glsaccesslongpl}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{longplural} field.
+
+\begin{definition}[\DescribeMacro\Glsaccesslongpl]
+\cs{Glsaccesslongpl}\marg{label}
+\end{definition}
+This displays the value of the \gloskey{longplural} field with the first
+letter converted to upper case.
+
+\chapter{Sample Files}
+\label{sec:samples}
+
+The following sample files are provided with this package:
+\begin{description}
+\item[sample.tex] Simple sample file that uses one of the dummy
+files provided by the \styfmt{glossaries} package for testing.
+
+\item[sample-abbr-styles.tex] Demonstrates all predefined
+abbreviation styles.
+
+\item[sample-mixture.tex] General entries, acronyms and initialisms
+all treated differently.
+
+\item[sample-name-font] Categories and attributes are used to
+customize the way different entries appear.
+
+\item[sample-abbrv.tex] General abbreviations.
+
+\item[sample-acronym.tex] Acronyms aren't initialisms and don't
+expand on \gls{firstuse}.
+
+\item[sample-acronym-desc.tex] Acronyms that have a separate long
+form and description.
+
+\item[sample-crossref.tex] Unused entries that have been
+cross-referenced automatically are added at the end of the document.
+
+\item[sample-indexhook.tex] Use the index hook to track
+which entries have been indexed (and therefore find out
+which ones haven't been indexed).
+
+\item[sample-footnote.tex] Footnote abbreviation style that moves
+the footnote marker outside of the hyperlink generated by \cs{gls}
+and moves it after certain punctuation characters for neatness.
+
+\item[sample-undef.tex] Warn on undefined entries instead of
+generating an error.
+
+\item[sample-mixed-abbrv-styles.tex] Different abbreviation styles
+for different entries.
+
+\item[sample-initialisms.tex] Automatically insert dots into
+initialisms.
+
+\item[sample-postdot.tex] Another initialisms example.
+
+\item[sample-postlink.tex] Automatically inserting text after
+the \gls{linktext} produced by commands like \cs{gls} (outside
+of hyperlink, if present).
+
+\item[sample-header.tex] Using entries in section/chapter headings.
+
+\item[sample-autoindex.tex] Using the \catattr{dualindex} and
+\catattr{indexname} attributes to automatically add glossary
+entries to the index (in addition to the glossary \gls{locationlist}).
+
+\item[sample-autoindex-hyp.tex] As previous but uses \sty{hyperref}.
+
+\item[sample-nested.tex] Using \ics{gls} within the
+value of the \gloskey{name} key.
+
+\item[sample-entrycount.tex] Enable entry-use counting (only index
+if used more than $n$ times, see \sectionref{sec:entrycount}).
+
+\item[sample-unitentrycount.tex] Enable use of per-unit entry-use counting
+(\sectionref{sec:entrycount}).
+
+\item[sample-onelink.tex] Using the per-unit entry counting
+(\sectionref{sec:entrycount})
+to only have one hyperlink per entry per page.
+
+\item[sample-linkcount.tex] Using link counting
+(\sectionref{sec:linkcount})
+to only have one hyperlink per entry.
+
+\item[sample-pages.tex] Insert \qt{page} or \qt{pages} before the
+location list.
+
+\item[sample-altmodifier.tex] Set the default options for
+commands like \cs{gls} and add an alternative modifier.
+
+\item[sample-mixedsort.tex] Uses the optional argument
+of \cs{makeglossaries} to allow a mixture of \cs{printglossary}
+and \cs{printnoidxglossary}.
+
+\item[sample-external.tex] Uses the \catattr{targeturl} attribute
+to allow for entries that should link to an external URL
+rather than to an internal glossary.
+
+\item[sample-fmt.tex] Provides text-block commands associated
+with entries in order to use \cs{glsxtrfmt}.
+
+\item[sample-alias.tex] Uses the \gloskey{alias} key.
+(See \sectionref{sec:alias}.)
+
+\item[sample-alttree.tex] Uses the \sty{glossaries-extra-stylemods}
+package with the \glostyle{alttree} style (see \sectionref{sec:stylemods}).
+
+\item[sample-alttree-sym.tex] Another \glostyle{alttree} example
+that measures the symbol widths.
+
+\item[sample-alttree-marginpar.tex] Another \glostyle{alttree} example
+that puts the \gls{numberlist} in the margin.
+
+\item[sample-onthefly.tex] Using on-the-fly commands. Terms with
+accents must have the \gloskey{name} key explicitly set.
+
+\item[sample-onthefly-xetex.tex] Using on-the-fly commands
+with \XeLaTeX. Terms with UTF-8 characters don't need to
+have the \gloskey{name} key explicitly set. Terms that contain
+commands must have the \gloskey{name} key explicitly set
+with the commands removed from the label.
+
+\item[sample-onthefly-utf8.tex] Tries to emulate the previous
+sample file for use with \LaTeX\ through the starred version
+of \ics{GlsXtrEnableOnTheFly}. This is a bit iffy and may not
+always work. Terms that contain commands must have the
+\gloskey{name} key explicitly set with the commands removed from
+the label.
+
+\item[sample-accsupp.tex] Integrate \sty{glossaries-accsupp}.
+
+\item[sample-prefix.tex] Integrate \sty{glossaries-prefix}.
+
+\item[sample-suppl-main.tex] Uses \gloskey[glsadd]{thevalue} to
+reference a location in the supplementary file
+\texttt{sample-suppl.tex}.
+
+\item[sample-suppl-main-hyp.tex] A more complicated version to the
+above that uses the \sty{hyperref} package to reference a location
+in the supplementary file \texttt{sample-suppl-hyp.tex}.
+
+\end{description}
+
+\chapter{Multi-Lingual Support}
+\label{sec:lang}
+
+There's only one command provided by \styfmt{glossaries-extra}
+that you're likely to want to change in your document and that's
+\ics{abbreviationsname} (\sectionref{sec:pkgopts}) if you use
+the \pkgopt{abbreviations} package option to automatically
+create the glossary labelled \texttt{abbreviations}. If this
+command doesn't already exist, it will be defined to
+\qt{Abbreviations} if \sty{babel} hasn't been loaded, otherwise
+it will be defined as \cs{acronymname} (provided by
+\styfmt{glossaries}).
+
+You can redefine it in the usual way. For example:
+\begin{verbatim}
+\renewcommand*{\abbreviationsname}{List of Abbreviations}
+\end{verbatim}
+Or using \sty{babel} or \sty{polyglossia} captions hook:
+\begin{verbatim}
+\appto\captionsenglish{%
+ \renewcommand*{\abbreviationsname}{List of Abbreviations}%
+}
+\end{verbatim}
+
+Alternatively you can use the \gloskey[printglossary]{title}
+key when you print the list of abbreviations. For example:
+\begin{verbatim}
+\printabbreviations[title={List of Abbreviations}]
+\end{verbatim}
+or
+\begin{verbatim}
+\printglossary[type=abbreviations,title={List of Abbreviations}]
+\end{verbatim}
+
+The other fixed text commands are the diagnostic messages, which
+shouldn't appear in the final draft of your document.
+
+The \styfmt{glossaries-extra} package has the facility to load
+language modules (whose filename is in the form
+\texttt{glossariesxtr-}\meta{language}\texttt{.ldf}) if they exist,
+but won't warn if they don't. If \sty{glossaries-extra-bib2gls} is
+loaded via the \pkgopt{record} package option then the check for
+language resource files will additionally search for an associated
+language script file given by
+\texttt{glossariesxtr-}\meta{script}\texttt{.ldf} where
+\meta{script} is the four letter script identifier, such as
+\texttt{Latn}, associated with the given dialect. There's no warning if the
+associated file isn't found. The script file is loaded after the
+dialect file.
+
+If you want to write your own language module, you just need to
+create a file called
+\texttt{glossariesxtr-}\meta{lang}\texttt{.ldf}, where \meta{lang}
+identifies the language or dialect (see the \sty{tracklang}
+package). For example, \texttt{glossariesxtr-french.ldf}.
+
+The simplest code for this file is:
+\begin{verbatim}
+\ProvidesGlossariesExtraLang{french}[2015/12/09 v1.0]
+
+\newcommand*{\glossariesxtrcaptionsfrench}{%
+ \def\abbreviationsname{Abr\'eviations}%
+}
+\glossariesxtrcaptionsfrench
+
+\ifcsdef{captions\CurrentTrackedDialect}
+{%
+ \csappto{captions\CurrentTrackedDialect}%
+ {%
+ \glossariesxtrcaptionsfrench
+ }%
+}%
+{%
+ \ifcsdef{captions\CurrentTrackedLanguage}
+ {%
+ \csappto{captions\CurrentTrackedLanguage}%
+ {%
+ \glossariesxtrcaptionsfrench
+ }%
+ }%
+ {}%
+}
+\end{verbatim}
+
+You can adapt this for other languages by replacing
+all instances of the language identifier \texttt{french} and
+the translated text \verb|Abr\'eviations| as appropriate.
+You can also use the \texttt{.ldf} file to provide rule
+blocks for a particular language for use with \gls{bib2gls}['s] custom
+sort rule. See \sectionref{sec:bib2glssty} for further details.
+
+This \texttt{.ldf} file then needs to be put somewhere on \TeX's
+path so that it can be found by \styfmt{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:
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningHead]
+\cs{GlsXtrNoGlsWarningHead}\marg{label}\marg{file}
+\end{definition}
+This produces the following text in English:
+\begin{quote}
+\GlsXtrNoGlsWarningHead{\meta{label}}{\meta{file}}
+\end{quote}
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningEmptyStart]
+\cs{GlsXtrNoGlsWarningEmptyStart}
+\end{definition}
+This produces the following text in English:
+\begin{quote}
+\GlsXtrNoGlsWarningEmptyStart
+\end{quote}
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningEmptyMain]
+\cs{GlsXtrNoGlsWarningEmptyMain}
+\end{definition}
+This produces the following text in English:
+\begin{quote}
+\GlsXtrNoGlsWarningEmptyMain
+\end{quote}
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningEmptyNotMain]
+\cs{GlsXtrNoGlsWarningEmptyNotMain}\marg{label}
+\end{definition}
+This produces the following text in English:
+\begin{quote}
+\GlsXtrNoGlsWarningEmptyNotMain{\meta{label}}
+\end{quote}
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningCheckFile]
+\cs{GlsXtrNoGlsWarningCheckFile}\marg{file}
+\end{definition}
+This produces the following text in English:
+\begin{quote}
+\GlsXtrNoGlsWarningCheckFile{\meta{file}}
+\end{quote}
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningMisMatch]
+\cs{GlsXtrNoGlsWarningMisMatch}
+\end{definition}
+This produces the following text in English:
+\begin{quote}
+\GlsXtrNoGlsWarningMisMatch
+\end{quote}
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningNoOut]
+\cs{GlsXtrNoGlsWarningNoOut}\marg{file}
+\end{definition}
+This produces the following text in English:
+\begin{quote}
+\GlsXtrNoGlsWarningNoOut{\meta{file}}
+\end{quote}
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningTail]
+\cs{GlsXtrNoGlsWarningTail}
+\end{definition}
+This produces the following text in English:
+\begin{quote}
+\GlsXtrNoGlsWarningTail
+\end{quote}
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningBuildInfo]
+\cs{GlsXtrNoGlsWarningBuildInfo}
+\end{definition}
+This is advice on how to generate the glossary files.
+See the documented code (\texttt{glossaries-extra-code.pdf})
+for further details.
+
+\begin{definition}[\DescribeMacro\GlsXtrNoGlsWarningAutoMake]
+\cs{GlsXtrNoGlsWarningAutoMake}\marg{label}
+\end{definition}
+This is the message produced when the \pkgopt{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.
+
+\printglossaries
+\PrintIndex
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx
new file mode 100644
index 0000000000..3d37899d9b
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.dtx
@@ -0,0 +1,33306 @@
+%\iffalse
+% glossaries-extra.dtx generated using makedtx version 1.2 (c) Nicola Talbot
+% Command line args:
+% -src "glossaries-extra.sty\Z=>glossaries-extra.sty"
+% -src "glossaries-extra-bib2gls.sty\Z=>glossaries-extra-bib2gls.sty"
+% -src "glossaries-extra-stylemods.sty\Z=>glossaries-extra-stylemods.sty"
+% -src "glossary-bookindex.sty\Z=>glossary-bookindex.sty"
+% -src "glossary-longextra.sty\Z=>glossary-longextra.sty"
+% -src "glossary-topic.sty\Z=>glossary-topic.sty"
+% -src "(example-glossaries-.+\.tex)\Z=>\1"
+% -src "(example-glossaries-.+\.bib)\Z=>\1"
+% -author "Nicola Talbot"
+% -doc "glossaries-extra-codedoc.tex"
+% -macrocode ".*\.tex"
+% -macrocode ".*\.bib"
+% -section "chapter"
+% -setambles ".*\.bib=>\nopreamble\nopostamble"
+% -comment ".*\.tex"
+% -comment ".*\.bib"
+% -codetitle "Main Package Code (\\styfmt{glossaries-extra.sty})"
+% glossaries-extra
+% Created on 2019/4/9 21:59
+%\fi
+%\iffalse
+%<*package>
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%</package>
+%\fi
+% \iffalse
+% Doc-Source file to use with LaTeX2e
+% Copyright (C) 2019 Nicola Talbot, all rights reserved.
+% \fi
+% \iffalse
+%<*driver>
+\documentclass[report,widecs]{nlctdoc}
+
+\iffalse
+glossaries-extra-codedoc.tex is a stub file used by makedtx to create
+glossaries-extra.dtx
+\fi
+
+\usepackage{alltt}
+\usepackage{pifont}
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks,
+ bookmarks,
+ hyperindex=false,
+ pdfauthor={Nicola L.C. Talbot},
+ pdftitle={glossaries-extra.sty: an extension to the glossaries
+package},
+ pdfkeywords={LaTeX,package,glossary,abbreviations}]{hyperref}
+\usepackage[nonumberlist,nopostdot=false]{glossaries-extra}
+
+\RecordChanges
+
+\makeglossaries
+
+\renewcommand*{\main}[1]{\hyperpage{#1}}
+\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}}
+\newcommand*{\itermdef}[1]{\index{#1|htextbf}}
+
+\newglossaryentry{xindy}{
+ name={\appfmt{xindy}\index{xindy|htextbf}},
+ sort={xindy},
+ text={\protect\app{xindy}},
+ description={An flexible indexing application with multilingual
+ support written in Perl}
+}
+
+\newglossaryentry{makeindex}{%
+ name={\appfmt{makeindex}\index{makeindex|htextbf}},%
+ sort={makeindex},%
+ text={\protect\app{makeindex}},%
+ description={An indexing application},
+}
+
+\newglossaryentry{bib2gls}{%
+name={\appfmt{bib2gls}\index{bib2gls=\appfmt{bib2gls}|htextbf}},%
+sort={bib2gls},%
+text={\appfmt{bib2gls}\iapp{bib2gls}},%
+description={A command line Java application that selects
+entries from a .bib file and converts them to glossary
+definitions (like \appfmt{bibtex} but also performs hierarchical
+sorting and collation, thus omitting the need for \gls{xindy} or
+\gls{makeindex}). Further details at:
+\url{http://www.dickimaw-books.com/software/bib2gls/}.}%
+}
+
+\let\glsd\glsuseri
+\let\glsation\glsuserii
+
+\newglossaryentry{firstuse}{%
+ name={First use\ifirstuse},
+ sort={first use},%
+ text={first use},%
+ user1={first used},
+ description={The first time a glossary entry is used (from the start
+ of the document or after a reset) with one of the
+ following commands: \ics{gls}, \ics{Gls}, \ics{GLS}, \ics{glspl},
+ \ics{Glspl}, \ics{GLSpl} or \ics{glsdisp}.
+ \glsadd{firstuseflag}\glsadd{firstusetext}%
+ \glsseeformat{firstuseflag,firstusetext}{}\nopostdesc}%
+}
+
+\newglossaryentry{firstuseflag}{%
+name={First use flag\ifirstuseflag},
+sort={first use flag},%
+text={first use flag},%
+description={A conditional that determines whether or not the entry
+has been used according to the rules of \gls{firstuse}}%
+}
+
+\newglossaryentry{firstusetext}{%
+name={First use text\ifirstusetext},
+sort={first use text},%
+text={first use text},%
+description={The text that is displayed on \gls{firstuse}, which is
+governed by the \gloskey{first} and \gloskey{firstplural} keys of
+\ics{newglossaryentry}. (May be overridden by
+\ics{glsdisp}.)\nopostdesc}%
+}
+
+\doxitem{Option}{option}{package options}
+\doxitem{Counter}{counter}{glossary counters}
+\doxitem{AbbrvStyle}{abbrvstyle}{abbreviation styles}
+\doxitem{Style}{style}{glossary styles}
+
+\setcounter{IndexColumns}{2}
+
+\CheckSum{25503}
+
+\newcommand*{\ifirstuse}{\iterm{first use}}
+\newcommand*{\firstuse}{\gls{firstuse}}
+\newcommand*{\firstuseflag}{\gls{firstuseflag}}
+\newcommand*{\firstusetext}{\gls{firstusetext}}
+
+\newcommand*{\ifirstuseflag}{\iterm{first use>flag}}
+\newcommand*{\ifirstusetext}{\iterm{first use>text}}
+
+\newcommand*{\istkey}[1]{\appfmt{#1}\index{makeindex=\appfmt{makeindex}>#1=\texttt{#1}|hyperpage}}
+\newcommand*{\locfmt}[1]{\texttt{#1}\SpecialMainIndex{#1}}
+\newcommand*{\mkidxspch}{\index{makeindex=\appfmt{makeindex}>special characters|hyperpage}}
+
+\newcommand*{\igloskey}[2][newglossaryentry]{\icsopt{#1}{#2}}
+\newcommand*{\gloskey}[2][newglossaryentry]{\csopt{#1}{#2}}
+
+\newcommand*{\stylefmt}[1]{\textsf{#1}}
+
+\newcommand*{\glostyle}[1]{\stylefmt{#1}%
+ \index{glossary styles:>#1=\protect\stylefmt{#1}|main}}
+
+\newcommand*{\acrstyle}[1]{\stylefmt{#1}%
+ \index{acronym styles (glossaries):>#1=\protect\stylefmt{#1}|main}}
+
+\newcommand*{\abbrstyle}[1]{\stylefmt{#1}%
+ \index{abbreviation styles:>#1=\protect\stylefmt{#1}|main}}
+
+\newcommand*{\category}[1]{\textsf{#1}\index{entry categories:>#1={\protect\sffamily#1}|main}}
+
+\newcommand*{\catattr}[1]{\textsf{#1}\index{category attributes:>#1={\protect\sffamily#1}|main}}
+
+\GlossaryPrologue{%
+ \chapter*{{Change History}}%
+ \markboth{{Change History}}{{Change History}}%
+ \phantomsection
+ \addcontentsline{toc}{chapter}{Change History}%
+ \raggedright
+}
+
+\title{glossaries-extra.sty v1.41:
+ documented code}
+\author{Nicola L.C. Talbot\\[10pt]
+Dickimaw Books\\
+\url{http://www.dickimaw-books.com/}}
+
+\date{2019-04-09}
+
+\begin{document}
+\DocInput{glossaries-extra.dtx}
+\end{document}
+%</driver>
+%\fi
+%\MakeShortVerb{"}
+%\DeleteShortVerb{\|}
+%
+% \maketitle
+%
+%\begin{abstract}
+%This is the documented code for the \sty{glossaries-extra} package.
+%See glossaries-extra-manual.pdf for the user manual.
+%
+%\begin{important}
+%This package is experimental and not stable. It's provided for
+%testing purposes only. Future versions may not be compatible with
+%this version. Once it has stabilised I'll add it to CTAN, at which
+%point compatibility with the first stable version will be
+%maintained.
+%\end{important}
+%\end{abstract}
+%
+%\tableofcontents
+%
+%\StopEventually{%
+% \printglossaries
+% \PrintChanges
+% \PrintIndex
+%}
+%
+%
+%
+%\chapter{Main Package Code (\styfmt{glossaries-extra.sty})}
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-extra.sty>
+% \end{macrocode}
+%\fi
+%\changes{0.1}{2015-11-22}{Initial experimental release}
+%\section{Package Initialisation and Options}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-extra}[2019/04/09 v1.41 (NLCT)]
+% \end{macrocode}
+% Requires \sty{xkeyval} to define package options.
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+% \end{macrocode}
+% Requires \sty{etoolbox} package.
+% \begin{macrocode}
+\RequirePackage{etoolbox}
+% \end{macrocode}
+% Has \styfmt{glossaries} already been loaded?
+% \begin{macrocode}
+\@ifpackageloaded{glossaries}
+{%
+% \end{macrocode}
+% Already loaded so pass any options to \cs{setupglossaries}.
+% This means that the options that can only be set when
+% \styfmt{glossaries} is loaded can't be used.
+% \begin{macrocode}
+ \newcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}%
+ \let\@glsxtr@declareoption\@gls@declareoption
+}
+{%
+% \end{macrocode}
+% Not already loaded, so pass options to \styfmt{glossaries}.
+% \begin{macrocode}
+ \newcommand{\glsxtr@dooption}[1]{%
+ \PassOptionsToPackage{#1}{glossaries}%
+ }%
+% \end{macrocode}
+% Set the defaults.
+% \begin{macrocode}
+ \PassOptionsToPackage{toc}{glossaries}
+ \PassOptionsToPackage{nopostdot}{glossaries}
+ \PassOptionsToPackage{noredefwarn}{glossaries}
+ \@ifpackageloaded{polyglossia}%
+ {}%
+ {%
+ \@ifpackageloaded{babel}%
+ {\PassOptionsToPackage{translate=babel}{glossaries}}%
+ {}%
+ }%
+ \newcommand*{\@glsxtr@declareoption}[2]{%
+ \DeclareOptionX{#1}{#2}%
+ \DeclareOption{#1}{#2}%
+ }
+}
+% \end{macrocode}
+% Declare package options.
+%\begin{macro}{\glsxtrundefaction}
+% Determines what to do if an entry hasn't been defined.
+% The two arguments are the error or warning message and the help
+% message if an error should be produced.
+% \begin{macrocode}
+\newcommand*{\glsxtrundefaction}[2]{%
+ \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtr@warnonexistsordo}
+% If user wants \pkgopt[warn]{undefaction}, then \styfmt{glossaries}
+% v4.19 is required.
+% \begin{macrocode}
+\newcommand*{\glsxtr@warnonexistsordo}[1]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrundeftag}
+% Text to display when an entry doesn't exist.
+% \begin{macrocode}
+\newcommand*{\glsxtrundeftag}{??}
+\newcommand*{\@glsxtrundeftag}{}
+% \end{macrocode}
+% This text is switched on at the start of the document to prevent
+% unwanted text inserted into the preamble if any tests are made
+% before the start of the document.
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@warn@undefaction}
+%This is how \cs{glsxtrundefaction} should behave if
+%\pkgopt[warn]{undefaction} is set.
+%\changes{1.08}{2016-12-13}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@warn@undefaction}[2]{%
+ \@glsxtrundeftag\GlossariesExtraWarning{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@err@undefaction}
+%This is how \cs{glsxtrundefaction} should behave if
+%\pkgopt[error]{undefaction} is set.
+%\changes{1.08}{2016-12-13}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@err@undefaction}[2]{%
+ \@glsxtrundeftag\PackageError{glossaries-extra}{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@warn@onexistsordo}
+%This is how \cs{glsxtr@warnonexistsordo} should behave if
+%\pkgopt[warn]{undefaction} is set.
+%\changes{1.08}{2016-12-13}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@warn@onexistsordo}[1]{%
+ \GlossariesExtraWarning{\string#1\space hasn't been defined, so
+ some errors won't be converted to warnings.
+ (This most likely means your version of
+ glossaries.sty is below version 4.19.)}%
+}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\@glsxtr@redef@forglsentries}
+%\changes{1.11}{2017-01-19}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@redef@forglsentries}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@do@redef@forglsentries}
+%\changes{1.11}{2017-01-19}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@do@redef@forglsentries}{%
+ \renewcommand*{\forglsentries}[3][\glsdefaulttype]{%
+ \edef\@@glo@list{\csname glolist@##1\endcsname}%
+ \ifdefstring{\@@glo@list}{,}%
+ {%
+ \GlossariesExtraWarning{No entries defined in glossary `##1'}%
+ }%
+ {%
+ \@for##2:=\@@glo@list\do
+ {%
+ \ifdefempty{##2}{}{##3}%
+ }%
+ }%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{undefaction}
+% \begin{macrocode}
+\define@choicekey{glossaries-extra.sty}{undefaction}%
+ [\glsxtr@undefaction@val\glsxtr@undefaction@nr]%
+ {warn,error}%
+ {%
+ \ifcase\glsxtr@undefaction@nr\relax
+ \let\glsxtrundefaction\@glsxtr@warn@undefaction
+ \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo
+ \let\@glsxtr@redef@forglsentries\@glsxtr@do@redef@forglsentries
+ \or
+ \let\glsxtrundefaction\@glsxtr@err@undefaction
+ \let\glsxtr@warnonexistsordo\@gobble
+ \let\@glsxtr@redef@forglsentries\relax
+ \fi
+ }
+% \end{macrocode}
+%\end{option}
+%
+%To assist bib2gls, v1.08 introduces the \pkgopt{record} option, which will write
+%information to the aux file whenever an entry needs to be indexed.
+%
+%\begin{macro}{\@glsxtr@record}
+%\changes{1.08}{2016-12-13}{new}
+%\changes{1.14}{2017-04-18}{added third arg}
+%Does nothing by default.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@record}[3]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@recordsee}
+%\changes{1.14}{2017-04-18}{new}
+%Does nothing by default.
+% \begin{macrocode}
+\newcommand*{\glsxtr@recordsee}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@defaultnumberformat}
+%\changes{1.19}{2017-09-09}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@defaultnumberformat}{glsnumberformat}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetDefaultNumberFormat}
+%\changes{1.19}{2017-09-09}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetDefaultNumberFormat}[1]{%
+ \renewcommand*{\@glsxtr@defaultnumberformat}{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%The \pkgopt{record} option is somewhat problematic. On the first
+%\LaTeX\ run the entries aren't defined. This isn't as
+%straight-forward as commands like \cs{cite} since attributes
+%associated with the entry's category may switch off the indexing
+%or the entry's glossary type might require a particular counter.
+%This kind of information can't be determined until the entry has
+%been defined. So there are two different commands here. One that's
+%used if the entry hasn't been defined, which tries to use sensible
+%defaults, and one which is used when the entry has been defined.
+%
+%\begin{macro}{\@glsxtr@do@record@wrglossary}
+%\changes{1.21}{2017-11-03}{new}
+%The \pkgopt[only]{record} option sets \cs{@@do@wrglossary} to this
+%command, which means it's done within \cs{glsadd} and
+%\cs{@gls@link}, and so is only done if the entry exists.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@do@record@wrglossary}[1]{%
+ \begingroup
+ \ifKV@glslink@noindex
+ \else
+ \edef\@gls@label{\glsdetoklabel{#1}}%
+ \let\glslabel\@gls@label
+ \glswriteentry{#1}%
+ {%
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue
+ \else
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \fi
+ \glsxtr@saveentrycounter
+ \let\@@do@@wrglossary\@glsxtr@dorecord
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \let\@@do@@wrglossary\@glsxtr@dorecordnodefer
+ }%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \glsxtr@@do@wrglossary{#1}%
+ \else
+ \@@glsxtrwrglossmark
+% \end{macrocode}
+%Increment associated counter.
+% \begin{macrocode}
+ \glsxtr@inc@wrglossaryctr{#1}%
+ \@@do@@wrglossary
+ \fi
+ }%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@do@alsoindex@wrglossary}
+%\changes{1.21}{2017-11-03}{new}
+%The \pkgopt[alsoindex]{record} option needs to both record and
+%index.
+% \begin{macrocode}
+\newcommand*{\glsxtr@do@alsoindex@wrglossary}[1]{%
+ \glsxtr@@do@wrglossary{#1}%
+ \@glsxtr@do@record@wrglossary{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtr@record}
+%\changes{1.08}{2016-12-13}{new}
+%The \pkgopt[only]{record} option sets \cs{@glsxtr@record} to this.
+%This performs the recording if the entry \emph{doesn't exist} and is done
+%at the start of \cs{@gls@field@link} and commands like \cs{@gls@}
+%(before the existence test). This means that it disregards the
+%\gloskey[glslink]{wrgloss} key.
+%
+%The first argument is the option list (as passed in the first optional
+%argument to commands like \cs{gls}). This allows the \gloskey[glslink]{noindex}
+%setting to be picked up. The second argument is the entry's label.
+% The third argument is the key family
+%(\texttt{glslink} in most cases, \texttt{glossadd} for \cs{glsadd}).
+% \begin{macrocode}
+\newcommand*{\@@glsxtr@record}[3]{%
+ \ifglsentryexists{#2}{}%
+ {%
+ \@@glsxtrwrglossmark
+ \begingroup
+% \end{macrocode}
+%Save the label in case it's needed.
+% \begin{macrocode}
+ \edef\@gls@label{\glsdetoklabel{#2}}%
+ \let\glslabel\@gls@label
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \let\@glsxtr@org@theHvalue\@glsxtr@theHvalue
+% \end{macrocode}
+%Entry hasn't been defined, so we'll have to assume it's
+%\cs{glscounter} by default.
+% \begin{macrocode}
+ \let\@gls@counter\glscounter
+% \end{macrocode}
+%Unless the \pkgopt{equations} option is on and this is inside a
+%numbered maths environment.
+% \begin{macrocode}
+ \if@glsxtr@equations
+ \@glsxtr@use@equation@counter
+ \fi
+% \end{macrocode}
+%Check for default options (which may switch off indexing).
+%\changes{1.21}{2017-11-03}{added check for default options}
+% \begin{macrocode}
+ \@gls@setdefault@glslink@opts
+% \end{macrocode}
+%Implement any pre-key settings.
+%\changes{1.30}{2018-04-25}{added check for pre-key hook}
+% \begin{macrocode}
+ \csuse{@glsxtr@#3@prekeys}%
+% \end{macrocode}
+%Assign keys.
+% \begin{macrocode}
+ \setkeys{#3}{#1}%
+% \end{macrocode}
+%Implement any post-key settings. Is the auto-add on?
+%\changes{1.37}{2018-11-30}{added check for auto-add}
+% \begin{macrocode}
+ \glsxtr@do@autoadd{#3}%
+% \end{macrocode}
+% Check post-key hook.
+%\changes{1.30}{2018-04-25}{added check for post-key hook}
+% \begin{macrocode}
+ \csuse{@glsxtr@#3@postkeys}%
+% \end{macrocode}
+%Increment associated counter.
+% \begin{macrocode}
+ \glsxtr@inc@wrglossaryctr{#2}%
+% \end{macrocode}
+%Check if \gloskey[glslink]{noindex} option has been used.
+% \begin{macrocode}
+ \ifKV@glslink@noindex
+ \else
+ \glswriteentry{#2}%
+ {%
+% \end{macrocode}
+%Check if \gloskey[glsadd]{thevalue} has been set.
+% \begin{macrocode}
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+% \end{macrocode}
+%Key \gloskey[glsadd]{thevalue} hasn't been set, but check if
+%\gloskey[glsadd]{theHvalue} has been set. (Not particularly likely,
+%but allow for it.)
+% \begin{macrocode}
+ \ifx\@glsxtr@org@theHvalue\@glsxtr@theHvalue
+ \else
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \fi
+% \end{macrocode}
+%Save the entry counter.
+% \begin{macrocode}
+ \glsxtr@saveentrycounter
+% \end{macrocode}
+%Temporarily redefine \cs{@@do@@wrglossary} for use with
+%\cs{glsxtr@@do@wrglossary}.
+% \begin{macrocode}
+ \let\@@do@@wrglossary\@glsxtr@dorecord
+ }%
+ {%
+% \end{macrocode}
+%\gloskey[glsadd]{thevalue} has been set, so there's no need to
+%defer writing the location value. (If it's dependent on the page
+%counter, the \gloskey[glslink]{counter} key should be set instead.)
+% \begin{macrocode}
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \let\theHglsentrycounter\@glsxtr@theHvalue
+ \let\@@do@@wrglossary\@glsxtr@dorecordnodefer
+ }%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \glsxtr@@do@wrglossary{#2}%
+ \else
+% \end{macrocode}
+%No need to escape special characters.
+% \begin{macrocode}
+ \@@do@@wrglossary
+ \fi
+ }%
+ \fi
+ \endgroup
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@glslink@prekeys}
+%\changes{1.30}{2018-04-25}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtr@glslink@prekeys}{\glslinkpresetkeys}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@glslink@postkeys}
+%\changes{1.30}{2018-04-25}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtr@glslink@postkeys}{\glslinkpostsetkeys}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@glossadd@prekeys}
+%\changes{1.30}{2018-04-25}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtr@glossadd@prekeys}{\glsaddpresetkeys}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@glossadd@postkeys}
+%\changes{1.30}{2018-04-25}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtr@glossadd@postkeys}{\glsaddpostsetkeys}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@dorecord}
+%\changes{1.08}{2016-12-13}{new}
+%\changes{1.15}{2017-05-10}{corrected premature expansion of \cs{@glslocref}}
+%If \pkgopt[alsoindex]{record} is used, then \cs{@glslocref} may
+%have been escaped, but this isn't appropriate here.
+%\changes{1.19}{2017-09-09}{Use \cs{@glsrecordlocref} instead of \cs{@glslocref}}
+% \begin{macrocode}
+\newcommand*\@glsxtr@dorecord{%
+ \global\let\@glsrecordlocref\theglsentrycounter
+ \let\@glsxtr@orgprefix\@glo@counterprefix
+ \ifx\theglsentrycounter\theHglsentrycounter
+ \def\@glo@counterprefix{}%
+ \else
+% \end{macrocode}
+%\changes{1.39}{2019-03-22}{added protection for fragile commands}
+% Protect against non-expandable commands occurring in the location.
+% \begin{macrocode}
+ \protected@edef\@glsxtr@theentrycounter{\theglsentrycounter}%
+ \protected@edef\@glsxtr@theHentrycounter{\theHglsentrycounter}%
+ \@onelevel@sanitize\@glsxtr@theentrycounter
+ \@onelevel@sanitize\@glsxtr@theHentrycounter
+ \protected@edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ {\@glsxtr@theentrycounter}{\@glsxtr@theHentrycounter}%
+ }%
+ \@do@gls@getcounterprefix
+ \fi
+% \end{macrocode}
+%\changes{1.30}{2018-04-25}{don't suppress expansion of \cs{@glsrecordlocref}}
+%\changes{1.29}{2018-04-09}{don't suppress expansion of
+%\cs{@glsrecordlocref} if counter isn't page}
+%Don't protect the \cs{@glsrecordlocref} from premature expansion.
+%If the counter isn't \counter{page} then it needs expanding. If the
+%location includes \cs{thepage} then \cs{protected@write} will
+%automatically deal with it.
+%\changes{1.37}{2018-11-30}{added check for record=nameref}
+% \begin{macrocode}
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \@glsxtr@do@nameref@record
+ {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
+ {\@glsrecordlocref}%
+ \else
+ \protected@write\@auxout{}{\string\glsxtr@record
+ {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
+ {\@glsrecordlocref}}%
+ \fi
+ \@glsxtr@counterrecordhook
+ \let\@glo@counterprefix\@glsxtr@orgprefix
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@dorecordnodefer}
+%\changes{1.16}{2017-06-15}{new}
+%As above, but don't defer expansion of location. This uses
+%\cs{theglsentrycounter} directly for the location
+%rather than \cs{@glslocref} since there's no need to guard against
+%premature expansion of the page counter.
+%\changes{1.19}{2017-09-09}{Use \cs{theglsentrycounter} for the location
+%rather than \cs{@glslocref}}
+% \begin{macrocode}
+\newcommand*\@glsxtr@dorecordnodefer{%
+ \ifx\theglsentrycounter\theHglsentrycounter
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \@glsxtr@do@nameref@record
+ {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}%
+ {\theglsentrycounter}%
+ \else
+ \protected@write\@auxout{}{\string\glsxtr@record
+ {\@gls@label}{}{\@gls@counter}{\@glsnumberformat}%
+ {\theglsentrycounter}}%
+ \fi
+ \else
+ \edef\@do@gls@getcounterprefix{\noexpand\@gls@getcounterprefix
+ {\theglsentrycounter}{\theHglsentrycounter}%
+ }%
+ \@do@gls@getcounterprefix
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \@glsxtr@do@nameref@record
+ {\@gls@label}{\@glo@counterprefix}{\@gls@counter}%
+ {\@glsnumberformat}{\theglsentrycounter}%
+ \else
+ \protected@write\@auxout{}{\string\glsxtr@record
+ {\@gls@label}{\@glo@counterprefix}{\@gls@counter}{\@glsnumberformat}%
+ {\theglsentrycounter}}%
+ \fi
+ \fi
+ \@glsxtr@counterrecordhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@ifnum@mmode}
+%\changes{1.37}{2018-11-30}{new}
+%Check if in a numbered maths environment.
+%The \sty{amsmath} package is automatically loaded by
+%\sty{datatool-base}, which is required by \sty{glossaries}, so \cs{ifst@rred}
+%and \cs{if@display} should both be defined.
+% \begin{macrocode}
+\newcommand{\@glsxtr@ifnum@mmode}[2]{%
+ \ifmmode
+ \ifst@rred
+ #2%
+ \else
+% \end{macrocode}
+% Non-\sty{amsmath} environments and regular inline math mode isn't
+% flagged as starred by \sty{amsmath}, but we can't use \cs{mathchoice}
+% in this case as it's not the current style that's relevant.
+% Instead we can use \sty{amsmath}'s \cs{if@display}. This may not
+% work for environments that aren't provided by \sty{amsmath}.
+% \begin{macrocode}
+ \if@display #1\else #2\fi
+ \fi
+ \else
+ #2%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@do@nameref@record}
+%\changes{1.37}{2018-11-30}{new}
+%With \pkgopt[nameref]{record}, the current label information is included
+%in the record, but this may not have been defined, so \cs{csuse} will
+%prevent an undefined control sequence error and just leave the last
+%two arguments blank if there's no information. In the event that a record is in
+%\sty{amsmath}'s \env{align} environment \cs{@currentHref} will be out.
+%There may be other instances where \cs{@currentHref} is out, so
+%this also saves \cs{theHglsentrycounter}, which is
+%useful if it can't be obtained by prefixing
+%\cs{theglsentrycounter}.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@do@nameref@record}[5]{%
+ \gls@ifnotmeasuring
+ {%
+ \protected@write\@auxout{}{\string\glsxtr@record@nameref
+ {#1}{#2}{#3}{#4}{#5}%
+ {\csuse{@currentlabelname}}{\csuse{@currentHref}}%
+ {\theHglsentrycounter}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtr@recordcounter}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\@@glsxtr@recordcounter}{%
+ \@glsxtr@noop@recordcounter
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@noop@recordcounter}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@noop@recordcounter}[1]{%
+ \PackageError{glossaries-extra}{\string\GlsXtrRecordCounter\space
+ requires record=only or record=alsoindex package option}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@op@recordcounter}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@op@recordcounter}[1]{%
+ \eappto\@glsxtr@counterrecordhook{\noexpand\@glsxtr@docounterrecord{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@recordsee}
+%\changes{1.14}{2017-04-18}{new}
+%Deal with \cs{glssee} in record mode. (This doesn't increment the
+%associated counter.)
+% \begin{macrocode}
+\newcommand*{\@glsxtr@recordsee}[2]{%
+ \@@glsxtrwrglossmark
+ \def\@gls@xref{#2}%
+ \@onelevel@sanitize\@gls@xref
+ \protected@write\@auxout{}{\string\glsxtr@recordsee{#1}{\@gls@xref}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossaryunit}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\printunsrtglossaryunit}{%
+ \print@noop@unsrtglossaryunit
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@setup@record}
+%\changes{1.08}{2016-12-13}{new}
+%Initialise.
+% \begin{macrocode}
+\newcommand*{\glsxtr@setup@record}{\let\@@do@wrglossary\glsxtr@@do@wrglossary}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@indexonly@saveentrycounter}
+%\changes{1.08}{2016-12-13}{new}
+% Only store the entry counter information if the
+%indexing is on.
+% \begin{macrocode}
+\newcommand*{\glsxtr@indexonly@saveentrycounter}{%
+ \ifKV@glslink@noindex
+ \else
+ \glsxtr@saveentrycounter
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@addloclistfield}
+%\changes{1.08}{2016-12-13}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@addloclistfield}{%
+ \key@ifundefined{glossentry}{loclist}%
+ {%
+ \define@key{glossentry}{loclist}{\def\@glo@loclist{##1}}%
+ \appto\@gls@keymap{,{loclist}{loclist}}%
+ \appto\@newglossaryentryprehook{\def\@glo@loclist{}}%
+ \appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{loclist}{\@glo@loclist}%
+ }%
+ \glssetnoexpandfield{loclist}%
+ }%
+ {}%
+% \end{macrocode}
+%\changes{1.11}{2017-01-19}{added location key}
+%The loclist field is just a comma-separated list. The location
+%field is the formatted list.
+% \begin{macrocode}
+ \key@ifundefined{glossentry}{location}%
+ {%
+ \define@key{glossentry}{location}{\def\@glo@location{##1}}%
+ \appto\@gls@keymap{,{location}{location}}%
+ \appto\@newglossaryentryprehook{\def\@glo@location{}}%
+ \appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{location}{\@glo@location}%
+ }%
+ \glssetnoexpandfield{location}%
+ }%
+ {}%
+% \end{macrocode}
+%\changes{1.11}{2017-01-19}{added group key}
+%Add a key to store the group heading.
+% \begin{macrocode}
+ \key@ifundefined{glossentry}{group}%
+ {%
+ \define@key{glossentry}{group}{\def\@glo@group{##1}}%
+ \appto\@gls@keymap{,{group}{group}}%
+ \appto\@newglossaryentryprehook{\def\@glo@group{}}%
+ \appto\@newglossaryentryposthook{%
+ \gls@assign@field{}{\@glo@label}{group}{\@glo@group}%
+ }%
+ \glssetnoexpandfield{group}%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@record@setting}
+%\changes{1.19}{2017-09-09}{new}
+%Keep track of the \pkgopt{record} package option.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@record@setting}{off}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@record@setting@alsoindex}
+%\changes{1.19}{2017-09-09}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@record@setting@alsoindex}{alsoindex}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@record@setting@only}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@record@setting@only}{only}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@record@setting@nameref}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@record@setting@nameref}{nameref}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@if@record@only}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@if@record@only}[2]{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only
+ #1%
+ \else
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ #1%
+ \else
+ #2%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@record@setting@off}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@record@setting@off}{off}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@record@only@setup}
+%\changes{1.37}{2018-11-30}{new}
+%Initialisation code for record=only and record=nameref
+% \begin{macrocode}
+\newcommand*{\@glsxtr@record@only@setup}{%
+ \def\glsxtr@setup@record{%
+ \@glsxtr@autoseeindexfalse
+ \let\@do@seeglossary\@glsxtr@recordsee
+ \let\@glsxtr@record\@@glsxtr@record
+ \let\@@do@wrglossary\@glsxtr@do@record@wrglossary
+ \let\@gls@saveentrycounter\relax
+ \let\glsxtrundefaction\@glsxtr@warn@undefaction
+ \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo
+ \glsxtr@addloclistfield
+ \renewcommand*{\@glsxtr@autoindexcrossrefs}{}%
+ \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter
+ \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}%
+% \end{macrocode}
+%Switch off the index suppression for aliased entries.
+%(bib2gls will deal with them.)
+% \begin{macrocode}
+ \def\glsxtrsetaliasnoindex{}%
+% \end{macrocode}
+% \cs{@gls@setupsort@none} was only introduced to
+% \sty{glossaries} v4.30, so it may not be available. If it's
+% defined, use it to remove the unnecessary overhead of escaping and
+% sanitizing the sort value.
+%\changes{1.16}{2017-06-15}{added check for \cs{@gls@setupsort@none}}
+% \begin{macrocode}
+ \ifdef\@gls@setupsort@none{\@gls@setupsort@none}{}%
+% \end{macrocode}
+% Warn about using \cs{printglossary}:
+% \begin{macrocode}
+ \def\glsxtrNoGlossaryWarning{\@glsxtr@record@noglossarywarning}%
+% \end{macrocode}
+%Load \sty{glossaries-extra-bib2gls}:
+% \begin{macrocode}
+ \RequirePackage{glossaries-extra-bib2gls}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{record}
+%Now define the \pkgopt{record} package option.
+%\changes{1.08}{2016-12-13}{added \pkgopt{record} package option}
+% \begin{macrocode}
+\define@choicekey{glossaries-extra.sty}{record}
+ [\@glsxtr@record@setting\glsxtr@record@nr]%
+ {off,only,alsoindex,nameref}%
+ [only]%
+ {%
+ \ifcase\glsxtr@record@nr\relax
+% \end{macrocode}
+%Don't record.
+% \begin{macrocode}
+ \def\glsxtr@setup@record{%
+ \renewcommand*{\@do@seeglossary}{\@glsxtr@doseeglossary}%
+ \renewcommand*{\@glsxtr@record}[3]{}%
+ \let\@@do@wrglossary\glsxtr@@do@wrglossary
+ \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter
+ \let\glsxtrundefaction\@glsxtr@err@undefaction
+ \let\glsxtr@warnonexistsordo\@gobble
+ \let\@@glsxtr@recordcounter\@glsxtr@noop@recordcounter
+ \def\printunsrtglossaryunit{\print@noop@unsrtglossaryunit}%
+ \undef\glsxtrsetaliasnoindex
+ }%
+ \or
+% \end{macrocode}
+%Only record (don't index).
+% \begin{macrocode}
+ \@glsxtr@record@only@setup
+ \or
+% \end{macrocode}
+%Record and index. This option doesn't load
+%\sty{glossaries-extra-bib2gls} as the sorting is performed by
+%\app{xindy} or \app{makeindex}.
+% \begin{macrocode}
+ \def\glsxtr@setup@record{%
+ \renewcommand*{\@do@seeglossary}{\@glsxtr@dosee@alsoindex@glossary}%
+ \let\@glsxtr@record\@@glsxtr@record
+ \let\@@do@wrglossary\glsxtr@do@alsoindex@wrglossary
+ \let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter
+ \let\glsxtrundefaction\@glsxtr@warn@undefaction
+ \let\glsxtr@warnonexistsordo\@glsxtr@warn@onexistsordo
+ \glsxtr@addloclistfield
+ \let\@@glsxtr@recordcounter\@glsxtr@op@recordcounter
+ \def\printunsrtglossaryunit{\print@op@unsrtglossaryunit}%
+ \undef\glsxtrsetaliasnoindex
+ }%
+ \or
+% \end{macrocode}
+%Only record (don't index) but also include nameref information.
+% \begin{macrocode}
+ \@glsxtr@record@only@setup
+ \ifundef\hyperlink
+ {\GlossariesExtraWarning{You have requested record=nameref but
+ the document doesn't support hyperlinks}}%
+ {}%
+ \fi
+ }
+% \end{macrocode}
+%\end{option}
+%
+%\changes{1.06}{2016-06-18}{docdef option changed to choice}
+%Version 1.06 changes the \pkgopt{docdef} option to a choice rather
+%than boolean setting. The available values are: false, true or
+%restricted. The restricted option permits document definitions as
+%long as they occur before the first glossary is displayed.
+%
+%\begin{macro}{\@glsxtr@docdefval}
+%\changes{1.06}{2016-06-18}{new}
+%The \pkgopt{docdef} value is stored as an integer: 0 (false), 1
+%(true) and 2 (restricted).
+%\changes{1.28}{2018-03-06}{changed from count register to macro}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@docdefval}{0}
+% \end{macrocode}
+%\end{macro}
+%
+%Need to provide conditional commands that are backward compatible:
+%\begin{macro}{\if@glsxtrdocdef}
+% \begin{macrocode}
+\newcommand*{\if@glsxtrdocdef}{\ifnum\@glsxtr@docdefval>0 }
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrdocdeftrue}
+% \begin{macrocode}
+\newcommand*{\@glsxtrdocdeftrue}{\def\@glsxtr@docdefval{1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrdocdeffalse}
+% \begin{macrocode}
+\newcommand*{\@glsxtrdocdeffalse}{\def\@glsxtr@docdefval{0}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{docdef}
+% By default don't allow entries to be defined in the document to
+% encourage the user to define them in the preamble, but if the user
+% is really determined to define them in the document allow them to
+% request this.
+%\changes{1.34}{2018-07-29}{added package option docdef=atom}
+% \begin{macrocode}
+\define@choicekey{glossaries-extra.sty}{docdef}
+ [\@glsxtr@docdefsetting\@glsxtr@docdefval]%
+ {false,true,restricted,atom}[true]%
+{%
+ \ifnum\@glsxtr@docdefval>1\relax
+ \renewcommand*{\@glsdoifexistsorwarn}{\glsdoifexists}%
+ \else
+ \renewcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn}%
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+%\begin{macro}{\if@glsxtrdocdefrestricted}
+%\changes{1.06}{2016-06-18}{new}
+%\changes{1.34}{2018-07-29}{changed to allow for atom as well}
+% \begin{macrocode}
+\newcommand*{\if@glsxtrdocdefrestricted}{\ifnum\@glsxtr@docdefval>1 }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsdoifexistsorwarn}
+%\changes{1.06}{2016-06-18}{new}
+%Need an error to notify user if an undefined entry is being referenced in the
+%glossary for the \pkgopt[restricted]{docdef} option. This is used
+%by \cs{glossentryname} (but not by \cs{glossentrydesc} etc as one error
+%per entry is sufficient).
+% \begin{macrocode}
+\newcommand*{\@glsdoifexistsorwarn}{\glsdoifexistsorwarn}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{indexcrossrefs}
+% Automatically index cross references at the end of the document
+% \begin{macrocode}
+\define@boolkey{glossaries-extra.sty}[@glsxtr]{indexcrossrefs}[true]{%
+ \if@glsxtrindexcrossrefs
+ \else
+ \renewcommand*{\@glsxtr@autoindexcrossrefs}{}%
+ \fi
+}
+% \end{macrocode}
+%\end{option}
+% Switch off since this can increase the build time.
+% \begin{macrocode}
+\@glsxtrindexcrossrefsfalse
+% \end{macrocode}
+% But allow \gloskey{see} key to switch it on automatically.
+%\begin{macro}{\@glsxtr@autoindexcrossrefs}
+%\changes{1.0}{2016-01-24}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@autoindexcrossrefs}{\@glsxtrindexcrossrefstrue}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{autoseeindex}
+%Provide a boolean option to allow the user to prevent the
+%automatic indexing of the cross-referencing keys \gloskey{see},
+%\gloskey{seealso} and \gloskey{alias}.
+%\changes{1.16}{2017-06-15}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries-extra.sty}[@glsxtr@]{autoseeindex}[true]{%
+}
+\@glsxtr@autoseeindextrue
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{equations}
+%Provide a boolean option to automatically switch to the
+%\ctr{equation} counter when in a numbered maths environment.
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries-extra.sty}[@glsxtr@]{equations}[true]{%
+}
+\@glsxtr@equationsfalse
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\glsxtr@float}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\let\glsxtr@float\@float
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@dblfloat}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\let\glsxtr@dblfloat\@dblfloat
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{floats}
+%Provide a boolean option to automatically switch to the
+%the corresponding counter when in a float.
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\define@boolkey{glossaries-extra.sty}[@glsxtr@]{floats}[true]{%
+ \if@glsxtr@floats
+ \renewcommand*{\@float}[1]{\renewcommand{\glscounter}{##1}\glsxtr@float{##1}}%
+ \renewcommand*{\@dblfloat}[1]{\renewcommand{\glscounter}{##1}\glsxtr@dblfloat{##1}}%
+ \else
+ \let\@float\glsxtr@float
+ \let\@dblfloat\glsxtr@dblfloat
+ \fi
+}
+\@glsxtr@floatsfalse
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\GlossariesExtraWarning}
+%Allow users to suppress warnings.
+% \begin{macrocode}
+\newcommand*{\GlossariesExtraWarning}[1]{\PackageWarning{glossaries-extra}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlossariesExtraWarningNoLine}
+%Allow users to suppress warnings.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\GlossariesExtraWarningNoLine}[1]{%
+ \PackageWarningNoLine{glossaries-extra}{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+\@glsxtr@declareoption{nowarn}{%
+ \let\GlossariesExtraWarning\@gobble
+ \let\GlossariesExtraWarningNoLine\@gobble
+ \glsxtr@dooption{nowarn}%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\@glsxtr@defpostpunc}
+%Redefines \cs{glspostdescription}. The \pkgopt{postdot} and
+%\pkgopt{nopostdot} options will have to redefine this.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@defpostpunc}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{postdot}
+%Shortcut for \pkgopt[false]{nopostdot}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\@glsxtr@declareoption{postdot}{%
+ \glsxtr@dooption{nopostdot=false}%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{%
+ \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+
+%\begin{option}{nopostdot}
+%Needs to redefine \cs{@glsxtr@defpostpunc}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\define@choicekey{glossaries-extra.sty}{nopostdot}{true,false}[true]{%
+ \glsxtr@dooption{nopostdot=#1}%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{%
+ \ifglsnopostdot\else.\spacefactor\sfcode`\. \fi}%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{option}{postpunc}
+%Set the post-description punctuation. This also sets
+%the \cs{ifglsnopostdot} conditional, which now indicates if
+%the post-description punctuation has been suppressed.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\define@key{glossaries-extra.sty}{postpunc}{%
+ \glsxtr@dooption{nopostdot=false}%
+ \ifstrequal{#1}{dot}%
+ {%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{.\spacefactor\sfcode`\. }%
+ }%
+ }%
+ {%
+ \ifstrequal{#1}{comma}%
+ {%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{,}%
+ }%
+ }%
+ {%
+ \ifstrequal{#1}{none}%
+ {%
+ \glsxtr@dooption{nopostdot=true}%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{}%
+ }%
+ }%
+ {%
+ \renewcommand*{\@glsxtr@defpostpunc}{%
+ \renewcommand*{\glspostdescription}{#1}%
+ }%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\glsxtrabbrvtype}
+% Glossary type for abbreviations.
+% \begin{macrocode}
+\newcommand*{\glsxtrabbrvtype}{\glsdefaulttype}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@abbreviationsdef}
+% Set by \pkgopt{abbreviations} option.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@abbreviationsdef}{}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\@glsxtr@doabbreviationsdef}
+%\changes{0.5.3}{2015-12-09}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@doabbreviationsdef}{%
+ \@ifpackageloaded{babel}%
+ {\providecommand{\abbreviationsname}{\acronymname}}%
+ {\providecommand{\abbreviationsname}{Abbreviations}}%
+ \newglossary[glg-abr]{abbreviations}{gls-abr}{glo-abr}{\abbreviationsname}%
+ \renewcommand*{\glsxtrabbrvtype}{abbreviations}%
+ \newcommand*{\printabbreviations}[1][]{%
+ \printglossary[type=\glsxtrabbrvtype,##1]%
+ }%
+ \disable@keys{glossaries-extra.sty}{abbreviations}%
+% \end{macrocode}
+% If the \pkgopt{acronym} option hasn't been used, change
+% \ics{acronymtype} to \ics{glsxtrabbrvtype}.
+%\changes{0.4}{2015-12-03}{added redefinition of \cs{acronymtype}}
+% \begin{macrocode}
+ \ifglsacronym
+ \else
+ \renewcommand*{\acronymtype}{\glsxtrabbrvtype}%
+ \fi
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{abbreviations}
+% If \pkgopt{abbreviations}, create a new glossary type for abbreviations.
+% \begin{macrocode}
+\@glsxtr@declareoption{abbreviations}{%
+ \let\@glsxtr@abbreviationsdef\@glsxtr@doabbreviationsdef
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\GlsXtrDefineAbbreviationShortcuts}
+% Enable shortcut commands for the abbreviations. Unlike the analogous
+% command provided by \styfmt{glossaries}, this uses \cs{newcommand}
+% instead of \cs{let} as a safety feature (except for \cs{newabbr}
+% which is also provided with \cs{GlsXtrDefineAcShortcuts}).
+% \begin{macrocode}
+\newcommand*{\GlsXtrDefineAbbreviationShortcuts}{%
+ \newcommand*{\ab}{\cgls}%
+ \newcommand*{\abp}{\cglspl}%
+ \newcommand*{\as}{\glsxtrshort}%
+ \newcommand*{\asp}{\glsxtrshortpl}%
+ \newcommand*{\al}{\glsxtrlong}%
+ \newcommand*{\alp}{\glsxtrlongpl}%
+ \newcommand*{\af}{\glsxtrfull}%
+ \newcommand*{\afp}{\glsxtrfullpl}%
+ \newcommand*{\Ab}{\cGls}%
+ \newcommand*{\Abp}{\cGlspl}%
+ \newcommand*{\As}{\Glsxtrshort}%
+ \newcommand*{\Asp}{\Glsxtrshortpl}%
+ \newcommand*{\Al}{\Glsxtrlong}%
+ \newcommand*{\Alp}{\Glsxtrlongpl}%
+ \newcommand*{\Af}{\Glsxtrfull}%
+ \newcommand*{\Afp}{\Glsxtrfullpl}%
+ \newcommand*{\AB}{\cGLS}%
+ \newcommand*{\ABP}{\cGLSpl}%
+ \newcommand*{\AS}{\GLSxtrshort}%
+ \newcommand*{\ASP}{\GLSxtrshortpl}%
+ \newcommand*{\AL}{\GLSxtrlong}%
+ \newcommand*{\ALP}{\GLSxtrlongpl}%
+ \newcommand*{\AF}{\GLSxtrfull}%
+ \newcommand*{\AFP}{\GLSxtrfullpl}%
+% \end{macrocode}
+%\changes{1.23}{2017-11-12}{changed \cs{newabbr} definition to use \cs{providecommand}}
+% \begin{macrocode}
+ \providecommand*{\newabbr}{\newabbreviation}%
+% \end{macrocode}
+% Disable this command after it's been used.
+% \begin{macrocode}
+ \let\GlsXtrDefineAbbreviationShortcuts\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrDefineAcShortcuts}
+% Enable shortcut commands for the abbreviations, but uses the
+% analogous commands provided by \styfmt{glossaries}.
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrDefineAcShortcuts}{%
+ \newcommand*{\ac}{\cgls}%
+ \newcommand*{\acp}{\cglspl}%
+ \newcommand*{\acs}{\glsxtrshort}%
+ \newcommand*{\acsp}{\glsxtrshortpl}%
+ \newcommand*{\acl}{\glsxtrlong}%
+ \newcommand*{\aclp}{\glsxtrlongpl}%
+ \newcommand*{\acf}{\glsxtrfull}%
+ \newcommand*{\acfp}{\glsxtrfullpl}%
+ \newcommand*{\Ac}{\cGls}%
+ \newcommand*{\Acp}{\cGlspl}%
+ \newcommand*{\Acs}{\Glsxtrshort}%
+ \newcommand*{\Acsp}{\Glsxtrshortpl}%
+ \newcommand*{\Acl}{\Glsxtrlong}%
+ \newcommand*{\Aclp}{\Glsxtrlongpl}%
+ \newcommand*{\Acf}{\Glsxtrfull}%
+ \newcommand*{\Acfp}{\Glsxtrfullpl}%
+ \newcommand*{\AC}{\cGLS}%
+ \newcommand*{\ACP}{\cGLSpl}%
+ \newcommand*{\ACS}{\GLSxtrshort}%
+ \newcommand*{\ACSP}{\GLSxtrshortpl}%
+ \newcommand*{\ACL}{\GLSxtrlong}%
+ \newcommand*{\ACLP}{\GLSxtrlongpl}%
+ \newcommand*{\ACF}{\GLSxtrfull}%
+ \newcommand*{\ACFP}{\GLSxtrfullpl}%
+% \end{macrocode}
+%\changes{1.23}{2017-11-12}{changed \cs{newabbr} definition to use \cs{providecommand}}
+% \begin{macrocode}
+ \providecommand*{\newabbr}{\newabbreviation}%
+% \end{macrocode}
+% Disable this command after it's been used.
+% \begin{macrocode}
+ \let\GlsXtrDefineAcShortcuts\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrDefineOtherShortcuts}
+% Similarly provide shortcut versions for the commands provided by
+% the \pkgopt{symbols} and \pkgopt{numbers} options.
+% \begin{macrocode}
+\newcommand*{\GlsXtrDefineOtherShortcuts}{%
+ \newcommand*{\newentry}{\newglossaryentry}%
+ \ifdef\printsymbols
+ {%
+ \newcommand*{\newsym}{\glsxtrnewsymbol}%
+ }{}%
+ \ifdef\printnumbers
+ {%
+ \newcommand*{\newnum}{\glsxtrnewnumber}%
+ }{}%
+ \let\GlsXtrDefineOtherShortcuts\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Always use the long forms, not the shortcuts, where portability is
+% an issue. (For example, when defining entries in a file that may
+% be input by multiple documents.)
+%
+%\begin{macro}{\@glsxtr@setupshortcuts}
+% Command used to set the shortcuts option.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@setupshortcuts}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@shortcutsval}
+% Store the value of the shortcuts option. (Needed by bib2gls.)
+%\changes{1.11}{2017-01-19}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@shortcutsval}{\ifglsacrshortcuts acro\else none\fi}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{shortcuts}
+%Provide \pkgopt{shortcuts} option. Unlike the \styfmt{glossaries}
+%version, this is a choice rather than a boolean key but it also provides
+%\pkgopt[true]{shortcuts} and \pkgopt[false]{shortcuts}, which are
+%equivalent to \pkgopt[all]{shortcuts} and
+%\pkgopt[none]{shortcuts}. Multiple use of this option in the
+%\emph{same} option list will override each other.
+%New to v1.17: \pkgopt[ac]{shortcuts} which implements
+%\cs{GlsXtrDefineAcShortcuts} (not included in
+%\pkgopt[all]{shortcuts} as it conflicts with other shortcuts).
+% \begin{macrocode}
+\define@choicekey{glossaries-extra.sty}{shortcuts}%
+ [\@glsxtr@shortcutsval\@glsxtr@shortcutsnr]%
+ {acronyms,acro,abbreviations,abbr,other,all,true,ac,none,false}[true]{%
+ \ifcase\@glsxtr@shortcutsnr\relax % acronyms
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \DefineAcronymSynonyms
+ }%
+ \or % acro
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \DefineAcronymSynonyms
+ }%
+ \or % abbreviations
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \GlsXtrDefineAbbreviationShortcuts
+ }%
+ \or % abbr
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \GlsXtrDefineAbbreviationShortcuts
+ }%
+ \or % other
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \GlsXtrDefineOtherShortcuts
+ }%
+ \or % all
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{changed true setting to use shortcuts=ac
+%instead of shortcuts=acronym}
+% \begin{macrocode}
+ \GlsXtrDefineAcShortcuts
+ \GlsXtrDefineAbbreviationShortcuts
+ \GlsXtrDefineOtherShortcuts
+ }%
+ \or % true
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{changed true setting to use shortcuts=ac
+%instead of shortcuts=acronym}
+% \begin{macrocode}
+ \GlsXtrDefineAcShortcuts
+ \GlsXtrDefineAbbreviationShortcuts
+ \GlsXtrDefineOtherShortcuts
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{corrected shortcuts=ac}
+% \begin{macrocode}
+ \or % ac
+ \renewcommand*{\@glsxtr@setupshortcuts}{%
+ \glsacrshortcutstrue
+ \GlsXtrDefineAcShortcuts
+ }%
+% \end{macrocode}
+%Leave none and false as last option.
+% \begin{macrocode}
+ \else % none, false
+ \renewcommand*{\@glsxtr@setupshortcuts}{}%
+ \fi
+ }
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@glsxtr@doaccsupp}
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@doaccsupp}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{accsupp}
+% If \pkgopt{accsupp}, load \sty{glossaries-accsupp} package.
+% \begin{macrocode}
+\@glsxtr@declareoption{accsupp}{%
+ \renewcommand*{\@glsxtr@doaccsupp}{\RequirePackage{glossaries-accsupp}}}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\glsxtrNoGlossaryWarning}
+%\changes{0.3}{2015-12-02}{new}
+%\changes{1.34}{2018-07-29}{added package warning}
+% Warning text displayed in document if the external glossary file
+% given by the argument is missing.
+% \begin{macrocode}
+\newcommand{\glsxtrNoGlossaryWarning}[1]{%
+ \GlossariesExtraWarning{Glossary `#1' is missing}%
+ \@glsxtr@defaultnoglossarywarning{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{nomissingglstext}
+% If true, suppress the text and warning produced if the external glossary file
+% is missing.
+% \begin{macrocode}
+\define@choicekey{glossaries-extra.sty}{nomissingglstext}
+ [\@glsxtr@nomissingglstextval\@glsxtr@nomissingglstextnr]%
+ {true,false}[true]{%
+ \ifcase\@glsxtr@nomissingglstextnr\relax % true
+ \renewcommand{\glsxtrNoGlossaryWarning}[1]{\null}%
+ \else % false
+ \renewcommand{\glsxtrNoGlossaryWarning}[1]{%
+ \@glsxtr@defaultnoglossarywarning{#1}%
+ }%
+ \fi
+ }
+% \end{macrocode}
+%\end{option}
+%
+% Provide option to load \sty{glossaries-extra-stylemods}
+% (Deferred to the end.)
+%\begin{macro}{\@glsxtr@redefstyles}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@redefstyles}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{stylemods}
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.18}{2017-08-10}{changed default value to \qt{default}}
+% \begin{macrocode}
+\define@key{glossaries-extra.sty}{stylemods}[default]{%
+ \ifstrequal{#1}{default}%
+ {%
+ \renewcommand*{\@glsxtr@redefstyles}{%
+ \RequirePackage{glossaries-extra-stylemods}}%
+ }%
+ {%
+ \ifstrequal{#1}{all}%
+ {%
+ \renewcommand*{\@glsxtr@redefstyles}{%
+ \PassOptionsToPackage{all}{glossaries-extra-stylemods}%
+ \RequirePackage{glossaries-extra-stylemods}%
+ }%
+ }%
+ {%
+ \renewcommand*{\@glsxtr@redefstyles}{}%
+ \@for\@glsxtr@tmp:=#1\do{%
+ \IfFileExists{glossary-\@glsxtr@tmp.sty}%
+ {%
+ \eappto\@glsxtr@redefstyles{%
+ \noexpand\RequirePackage{glossary-\@glsxtr@tmp}}%
+ }%
+ {%
+ \PackageError{glossaries-extra}%
+ {Glossaries style package `glossary-\@glsxtr@tmp.sty'
+ doesn't exist (did you mean to use the `style' key?)}%
+ {The list of values (#1) in the `stylemods' key should
+ match the glossary-xxx.sty files provided with
+ glossaries.sty}%
+ }%
+ }%
+ \appto\@glsxtr@redefstyles{\RequirePackage{glossaries-extra-stylemods}}%
+ }
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@glsxtr@do@style}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@do@style}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{style}
+%\changes{1.04}{2016-05-02}{new}
+% Since the \pkgopt{stylemods} option can automatically load extra
+% style packages, deal with the \pkgopt{style} option after those
+% packages have been loaded.
+% \begin{macrocode}
+\define@key{glossaries-extra.sty}{style}{%
+% \end{macrocode}
+%Defer actual style change:
+% \begin{macrocode}
+ \renewcommand*{\@glsxtr@do@style}{%
+% \end{macrocode}
+% Set this as the default style:
+% \begin{macrocode}
+ \setkeys{glossaries.sty}{style={#1}}%
+% \end{macrocode}
+% Set this style:
+% \begin{macrocode}
+ \setglossarystyle{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\glsxtr@inc@wrglossaryctr}
+%\changes{1.29}{2018-04-09}{new}
+%Increments the associated counter if enabled. Does nothing by
+%default. The optional argument is the entry label in case it's
+%required, but the \ctr{wrglossary} counter is globally used by all
+%entries.
+% \begin{macrocode}
+\newcommand*{\glsxtr@inc@wrglossaryctr}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrInternalLocationHyperlink}
+%\changes{1.29}{2018-04-09}{new}
+%\begin{definition}
+%\cs{glsxtrinternallocationhyperlink}\marg{counter}\marg{prefix}\marg{location}
+%\end{definition}
+%The first two arguments are always control sequences.
+% \begin{macrocode}
+\newcommand*{\GlsXtrInternalLocationHyperlink}[3]{%
+ \glsxtrhyperlink{#1#2#3}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@wrglossary@locationhyperlink}
+%\changes{1.29}{2018-04-09}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@wrglossary@locationhyperlink}[3]{%
+ \pageref{wrglossary.#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{indexcounter}
+%\changes{1.29}{2018-04-09}{new}
+%Define the \ctr{wrglossary} counter that's incremented every time
+%an entry is indexed, except for cross-references. This is designed
+%for use with \app{bib2gls} v1.4+. It can work with the other indexing
+%methods but it will interfere with the number list collation.
+%This option automatically implements \pkgopt[wrglossary]{counter}.
+%
+%Since \styfmt{glossaries} automatically loads \sty{amsmath}, there
+%may be a problem if the indexing occurs in the \env{equation}
+%environment, because only one \cs{label} is allowed in each
+%instance of that environment. It's best to change the counter when
+%in maths mode.
+% \begin{macrocode}
+\@glsxtr@declareoption{indexcounter}{%
+ \glsxtr@dooption{counter=wrglossary}%
+ \ifundef\c@wrglossary
+ {%
+ \newcounter{wrglossary}%
+ \renewcommand{\thewrglossary}{\arabic{wrglossary}}%
+ }%
+ {}%
+ \renewcommand*{\glsxtr@inc@wrglossaryctr}[1]{%
+% \end{macrocode}
+%Only increment if the current counter is \ctr{wrglossary}.
+%\changes{1.30}{2018-04-25}{added check for \ctrfmt{wrglossary} counter}
+% \begin{macrocode}
+ \ifdefstring\@gls@counter{wrglossary}%
+ {%
+ \refstepcounter{wrglossary}%
+ \label{wrglossary.\thewrglossary}%
+ }%
+ {}%
+ }%
+ \renewcommand*{\GlsXtrInternalLocationHyperlink}[3]{%
+ \ifdefstring\glsentrycounter{wrglossary}%
+ {%
+ \@glsxtr@wrglossary@locationhyperlink{##1}{##2}{##3}%
+ }%
+ {\glsxtrhyperlink{##1##2##3}{##3}}%
+ }%
+}
+% \end{macrocode}
+%\end{option}
+%
+%\begin{macro}{\@glsxtrwrglossmark}
+%\changes{1.21}{2017-11-03}{new}
+%Marks the place where indexing occurs.
+%Does nothing by default.
+% \begin{macrocode}
+\newcommand*{\@glsxtrwrglossmark}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtrwrglossmark}
+%\changes{1.21}{2017-11-03}{new}
+%Since \cs{glsadd} can be used in the preamble, this action needs to
+%be disabled until the start of the document.
+% \begin{macrocode}
+\newcommand*{\@@glsxtrwrglossmark}{}
+\AtBeginDocument{\renewcommand*{\@@glsxtrwrglossmark}{\@glsxtrwrglossmark}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrwrglossmark}
+%\changes{1.21}{2017-11-03}{new}
+%Does nothing by default.
+% \begin{macrocode}
+\newcommand*{\glsxtrwrglossmark}{\ensuremath{\cdot}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{debug}
+%\changes{1.21}{2017-11-03}{new}
+% Provide extra debug options.
+% \begin{macrocode}
+\define@choicekey{glossaries-extra.sty}{debug}
+ [\@glsxtr@debugval\@glsxtr@debugnr]%
+ {true,false,showtargets,showwrgloss,all}[true]{%
+ \ifcase\@glsxtr@debugnr\relax % true
+ \glsxtr@dooption{debug=true}%
+ \renewcommand*{\@glsxtrwrglossmark}{}%
+ \or % false
+ \glsxtr@dooption{debug=false}%
+ \renewcommand*{\@glsxtrwrglossmark}{}%
+ \or % showtargets
+ \glsxtr@dooption{debug=showtargets}%
+ \or % showwrgloss
+ \glsxtr@dooption{debug=true}%
+ \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}%
+ \or % all
+ \glsxtr@dooption{debug=showtargets}%
+ \renewcommand*{\@glsxtrwrglossmark}{\glsxtrwrglossmark}%
+ \fi
+ }
+% \end{macrocode}
+%\end{option}
+%
+% Pass all other options to \styfmt{glossaries}.
+% \begin{macrocode}
+\DeclareOptionX*{%
+ \expandafter\glsxtr@dooption\expandafter{\CurrentOption}}
+% \end{macrocode}
+% Process options.
+% \begin{macrocode}
+\ProcessOptionsX
+% \end{macrocode}
+% Load \styfmt{glossaries} if not already loaded.
+% \begin{macrocode}
+\RequirePackage{glossaries}
+% \end{macrocode}
+% Load the \sty{glossaries-accsupp} package if required.
+% \begin{macrocode}
+\@glsxtr@doaccsupp
+% \end{macrocode}
+% Redefine \cs{glspostdescription} if required.
+% \begin{macrocode}
+\@glsxtr@defpostpunc
+% \end{macrocode}
+%
+%\begin{macro}{\glsshowtarget}
+%This command was introduced to \sty{glossaries} v4.32 so it may not
+%be defined. Therefore it's defined here using \cs{def}.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\def\glsshowtarget#1{%
+ \glsxtrtitleorpdforheading
+ {%
+ \ifmmode
+ \texttt{\small [#1]}%
+ \else
+ \ifinner
+ \texttt{\small [#1]}%
+ \else
+ \marginpar{\texttt{\small #1}}%
+ \fi
+ \fi
+ }%
+ {[#1]}%
+ {\texttt{\small [#1]}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@org@doseeglossary}
+%Save original definition of \cs{@do@seeglossary}
+% \begin{macrocode}
+\let\@glsxtr@org@doseeglossary\@do@seeglossary
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@doseeglossary}
+%\changes{1.21}{2017-11-03}{new}
+%This doesn't increment the associated counter.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@doseeglossary}[2]{%
+ \glsdoifexists{#1}%
+ {%
+ \@@glsxtrwrglossmark
+ \@glsxtr@org@doseeglossary{#1}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@dosee@alsoindex@glossary}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@dosee@alsoindex@glossary}[2]{%
+ \@glsxtr@recordsee{#1}{#2}%
+ \@glsxtr@doseeglossary{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@org@gloautosee}
+%\changes{1.14}{2017-04-18}{new}
+%Save and restore original definition of \cs{@glo@autosee}.
+%(That command may not be defined as it was only introduced
+%to \sty{glossaries} v4.30, in which case the synonym
+%won't be defined either.)
+% \begin{macrocode}
+\let\@glsxtr@org@gloautosee\@glo@autosee
+% \end{macrocode}
+%\end{macro}
+%Check if user tried \pkgopt[false]{autoseeindex} when it can't be
+%supported.
+% \begin{macrocode}
+\if@glsxtr@autoseeindex
+\else
+ \ifdef\@glsxtr@org@gloautosee
+ {}%
+ {\PackageError{glossaries-extra}{`autoseeindex=false' package
+ option requires at least v4.30 of glossaries.sty}%
+ {You need to update the glossaries.sty package}%
+ }
+\fi
+% \end{macrocode}
+%
+%\begin{macro}{\@glo@autosee}
+%\changes{1.16}{2017-06-15}{added redefinition}
+%If \cs{@glo@autosee} has been defined (\sty{glossaries} v4.30
+%onwards), redefine it to test the \pkgopt{autoseeindex} option.
+% \begin{macrocode}
+\ifdef\@glo@autosee
+{%
+ \renewcommand*{\@glo@autosee}{%
+ \if@glsxtr@autoseeindex\@glsxtr@org@gloautosee\fi}%
+}%
+{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@checkseeallowed}
+%\changes{1.16}{2017-06-15}{added redefinition}
+%Don't prohibit the use of the \gloskey{see} key before the indexing
+%files have been opened if the automatic see indexing has been
+%disabled, since it's no longer an issue.
+% \begin{macrocode}
+\renewcommand*{\gls@checkseeallowed}{%
+ \if@glsxtr@autoseeindex\@gls@see@noindex\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+% Define abbreviations glossaries if required.
+% \begin{macrocode}
+\@glsxtr@abbreviationsdef
+\let\@glsxtr@abbreviationsdef\relax
+% \end{macrocode}
+% Setup shortcuts if required.
+% \begin{macrocode}
+\@glsxtr@setupshortcuts
+% \end{macrocode}
+%Redefine \cs{@glsxtr@redef@forglsentries} if required.
+% \begin{macrocode}
+\@glsxtr@redef@forglsentries
+% \end{macrocode}
+%
+%\begin{macro}{\glossariesextrasetup}
+%Allow user to set options after the package has been loaded.
+% First modify \cs{glsxtr@dooption} so that it now uses
+% \cs{setupglossaries}:
+% \begin{macrocode}
+\renewcommand{\glsxtr@dooption}[1]{\setupglossaries{#1}}%
+% \end{macrocode}
+% Now define the user command:
+% \begin{macrocode}
+\newcommand*{\glossariesextrasetup}[1]{%
+ \let\glsxtr@setup@record\relax
+ \let\@glsxtr@setupshortcuts\relax
+ \let\@glsxtr@redef@forglsentries\relax
+ \setkeys{glossaries-extra.sty}{#1}%
+ \@glsxtr@abbreviationsdef
+ \let\@glsxtr@abbreviationsdef\relax
+ \@glsxtr@setupshortcuts
+ \glsxtr@setup@record
+ \@glsxtr@redef@forglsentries
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@org@@do@wrglossary}
+%\changes{1.21}{2017-11-03}{new}
+%Save original definition of \cs{@@do@wrglossary}.
+% \begin{macrocode}
+\let\glsxtr@org@@do@wrglossary\@@do@wrglossary
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@@do@wrglossary}
+%\changes{1.08}{2016-12-13}{new}
+%The new version adds code that can show a marker for debugging and
+%increments the associated counter if enabled.
+% \begin{macrocode}
+\newcommand*{\glsxtr@@do@wrglossary}[1]{%
+ \@@glsxtrwrglossmark
+ \glsxtr@inc@wrglossaryctr{#1}%
+ \glsxtr@org@@do@wrglossary{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@saveentrycounter}
+%\changes{1.08}{2016-12-13}{new}
+%Save original definition of \cs{@gls@saveentrycounter}.
+% \begin{macrocode}
+\let\glsxtr@saveentrycounter\@gls@saveentrycounter
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@saveentrycounter}
+%\changes{1.08}{2016-12-13}{new}
+%Change \cs{@gls@saveentrycounter} so that it only stores the entry
+%counter information if the indexing is on.
+% \begin{macrocode}
+\let\@gls@saveentrycounter\glsxtr@indexonly@saveentrycounter
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@getcounterprefix}
+%\changes{1.37}{2018-11-30}{new}
+%This command is provided by the base \sty{glossaries} package, but
+%is redefined here.
+%The standard indexing methods don't directly store the hypertarget
+%but instead need to split it into the counter, prefix and location
+%parts, which can be reconstituted in the location list.
+%Unfortunately, not all targets are in this form, so the links fail.
+%With \pkgopt[nameref]{record}, the complete target name can be
+%saved, so this modification adjusts the warning.
+% \begin{macrocode}
+\renewcommand*\@gls@getcounterprefix[2]{%
+ \protected@edef\@gls@thisloc{#1}\protected@edef\@gls@thisHloc{#2}%
+ \ifx\@gls@thisloc\@gls@thisHloc
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@gls@get@counterprefix##1.#1##2\end@getprefix{%
+ \def\@glo@tmp{##2}%
+ \ifx\@glo@tmp\@empty
+ \def\@glo@counterprefix{}%
+ \else
+ \def\@glo@counterprefix{##1}%
+ \fi
+ }%
+ \@gls@get@counterprefix#2.#1\end@getprefix
+% \end{macrocode}
+% Warn if no prefix can be formed, unless \pkgopt[nameref]{record}.
+% \begin{macrocode}
+ \ifx\@glo@counterprefix\@empty
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \else
+ \GlossariesExtraWarning{Hyper target `#2' can't be formed by
+ prefixing^^Jlocation `#1'. You need to modify the
+ definition of \string\theH\@gls@counter^^Jotherwise you
+ will get the warning: "`name{\@gls@counter.#1}' has been^^J
+ referenced but does not exist"%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@only
+ . You may want to consider using record=nameref instead%
+ \fi}%
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide script dialect hook (does nothing unless
+%redefined by \sty{glossaries-extra-bib2gls}).
+%\begin{macro}{\@glsxtrdialecthook}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtrdialecthook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%Set up record option if required.
+% \begin{macrocode}
+\glsxtr@setup@record
+% \end{macrocode}
+%
+% Disable preamble-only options and switch on the undefined tag at
+% the start of the document.
+%\changes{1.06}{2016-06-18}{disabled docdef key at the start of the
+%document}
+% \begin{macrocode}
+\AtBeginDocument{%
+ \disable@keys{glossaries-extra.sty}{abbreviations,docdef,record}%
+ \def\@glsxtrundeftag{\glsxtrundeftag}%
+}
+% \end{macrocode}
+%
+%\section{Extra Utilities}
+%
+%\begin{macro}{\GlsXtrIfUnusedOrUndefined}
+%\changes{1.34}{2018-07-29}{new}
+%\begin{definition}
+%\cs{GlsXtrIfUnusedOrUndefined}\marg{label}\marg{true}\marg{false}
+%\end{definition}
+% Does \meta{true} if the entry given by \meta{label} is either
+% undefined or hasn't been used (or has had the first use flag reset).
+% \begin{macrocode}
+\newcommand*{\GlsXtrIfUnusedOrUndefined}[3]{%
+ \ifglsentryexists{#1}%
+ {\ifbool{glo@\glsdetoklabel{#1}@flag}{#3}{#2}}%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifemptyglossary}
+%\begin{definition}
+%\cs{glsxtrifemptyglossary}\marg{type}\marg{true}\marg{false}
+%\end{definition}
+% Provide command to determine if any entries have been added to the
+% glossary (where the glossary label is provided in the first
+% argument). The entries are stored in the comma-separated list
+% \cs{glolist@\meta{type}}. If this hasn't been defined, the glosary
+% doesn't exist. If it has been defined and is simply a comma, the
+% glossary exists and is empty. (It's initialised to a comma.)
+%\changes{0.4}{2015-12-03}{new}
+% \begin{macrocode}
+\newcommand{\glsxtrifemptyglossary}[3]{%
+ \ifcsdef{glolist@#1}%
+ {%
+ \ifcsstring{glolist@#1}{,}{#2}{#3}%
+ }%
+ {%
+ \glsxtrundefaction{Glossary type `#1' doesn't exist}{}%
+ #2%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifkeydefined}
+%\changes{1.12}{2017-02-03}{new}
+%Tests if the key given in the first argument has been defined.
+% \begin{macrocode}
+\newcommand*{\glsxtrifkeydefined}[3]{%
+ \key@ifundefined{glossentry}{#1}{#3}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrprovidestoragekey}
+%\changes{1.12}{2017-02-03}{new}
+%Like \cs{glsaddstoragekey} but does nothing if the key has already
+%been defined.
+% \begin{macrocode}
+\newcommand*{\glsxtrprovidestoragekey}{%
+ \@ifstar\@sglsxtr@provide@storagekey\@glsxtr@provide@storagekey
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@provide@storagekey}
+%\changes{1.12}{2017-02-03}{new}
+%Unstarred version.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@provide@storagekey}[3]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+% \end{macrocode}
+%Allow the user to omit the user level command if they only
+%intended fetching the value with \cs{glsxtrusefield}
+% \begin{macrocode}
+ \ifblank{#3}
+ {}%
+ {%
+ \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+%Provide the no-link command if not already defined.
+% \begin{macrocode}
+ \ifblank{#3}
+ {}%
+ {%
+ \providecommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@glsxtr@provide@storagekey}
+%\changes{1.12}{2017-02-03}{new}
+%Starred version.
+% \begin{macrocode}
+\newcommand*{\s@glsxtr@provide@storagekey}[1]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname gls@assign@#1@field\endcsname}[2]{%
+ \@@gls@expand@field{##1}{#1}{##2}%
+ }%
+ }%
+ {}%
+ \@glsxtr@provide@addstoragekey{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%The name of a text-block control sequence can be stored in a
+%field (given by \cs{GlsXtrFmtField}). This command can then be used
+%with \cs{glsxtrfmt}\oarg{options}\marg{label}\marg{text} which
+%effectively does
+%\cs{glslink}\oarg{options}\marg{label}\{\meta{cs}\marg{text}\}
+%If the field hasn't been set for that entry just \meta{text} is
+%done.
+%
+%\begin{macro}{\GlsXtrFmtField}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\GlsXtrFmtField}{useri}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrFmtDefaultOptions}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\GlsXtrFmtDefaultOptions}{noindex}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfmt}
+%\changes{1.12}{2017-02-03}{new}
+%The post-link hook isn't done. This now has a starred form
+%that checks for a final optional argument.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrfmt}{\@ifstar\s@glsxtrfmt\@glsxtrfmt}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrfmt}
+%\changes{1.23}{2017-11-12}{new}
+%Unstarred form.
+% \begin{macrocode}
+\newcommand*{\@glsxtrfmt}[3][]{\@@glsxtrfmt{#1}{#2}{#3}{}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\s@glsxtrfmt}
+%\changes{1.23}{2017-11-12}{new}
+%Starred form.
+% \begin{macrocode}
+\newcommand*{\s@glsxtrfmt}[3][]{%
+ \new@ifnextchar[{\s@@glsxtrfmt{#1}{#2}{#3}}%
+ {\@@glsxtrfmt{#1}{#2}{#3}{}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\s@@glsxtrfmt}
+%\changes{1.23}{2017-11-12}{new}
+%Pick up final optional argument.
+% \begin{macrocode}
+\def\s@@glsxtrfmt#1#2#3[#4]{\@@glsxtrfmt{#1}{#2}{#3}{#4}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@@glsxtrfmt}
+%\changes{1.23}{2017-11-12}{new}
+%Actual inner working.
+% \begin{macrocode}
+\newcommand*{\@@glsxtrfmt}[4]{%
+% \end{macrocode}
+%Since there's no post-link hook to worry about, grouping can be
+%added to provide some protection against nesting (but in general
+%nested link text should be avoided).
+%\changes{1.23}{2017-11-12}{added grouping}
+% \begin{macrocode}
+ \begingroup
+ \def\glslabel{#2}%
+ \glsdoifexistsordo{#2}%
+ {%
+ \ifglshasfield{\GlsXtrFmtField}{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+ \expandafter\@gls@link\expandafter[\GlsXtrFmtDefaultOptions,#1]{#2}%
+ {\glsxtrfmtdisplay{\glscurrentfieldvalue}{#3}{#4}}%
+ }%
+ {\glsxtrfmtdisplay{@firstofone}{#3}{#4}}%
+ }%
+ {%
+% \end{macrocode}
+%Has the default \verb|noindex| been counteracted? If so, this
+%needs \cs{glsadd} in case \app{bib2gls} needs to pick up the record.
+%\changes{1.23}{2017-11-12}{added check for indexing}
+% \begin{macrocode}
+ \begingroup
+ \@gls@setdefault@glslink@opts
+ \setkeys{glslink}{\GlsXtrFmtDefaultOptions,#1}%
+ \ifKV@glslink@noindex\else\glsadd{#2}\fi
+ \endgroup
+ \glsxtrfmtdisplay{@firstofone}{#3}{#4}%
+ }%
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfmtdisplay}
+%\changes{1.23}{2017-11-12}{new}
+%The command used internally by \cs{glsxtrfmt} to do the actual
+%formatting. The first argument is the control sequence name,
+%the second is the control sequence's argument, the third
+%is the inserted material (if starred form used).
+% \begin{macrocode}
+\newcommand{\glsxtrfmtdisplay}[3]{\csuse{#1}{#2}#3}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrentryfmt}
+%\changes{1.12}{2017-02-03}{new}
+%No link or indexing.
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsxtrentryfmt}[2]{%
+ \texorpdfstring{\@glsxtrentryfmt{#1}{#2}}{#2}%
+ }
+}
+{
+ \newcommand*{\glsxtrentryfmt}{\@glsxtrentryfmt}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrentryfmt}
+%\changes{1.12}{2017-02-03}{new}
+%\changes{1.23}{2017-11-12}{fixed missing label argument}
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrentryfmt}[2]{%
+ \glsdoifexistsordo{#1}%
+ {%
+ \ifglshasfield{\GlsXtrFmtField}{#1}%
+ {%
+ \csuse{\glscurrentfieldvalue}{#2}%
+ }%
+ {#2}%
+ }%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfieldlistadd}
+%\changes{1.12}{2017-02-03}{new}
+%If a field stores an etoolbox internal list (e.g.
+%\gloskey{loclist}) then this macro provides a convenient
+%way of adding to the list via etoolbox's \cs{listcsadd}.
+%The first argument is the entry's label, the second is the field
+%label and the third is the element to add to the list.
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldlistadd}[3]{%
+ \listcsadd{glo@\glsdetoklabel{#1}@#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfieldlistgadd}
+%\changes{1.12}{2017-02-03}{new}
+%Similarly but uses \cs{listcsgadd}.
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldlistgadd}[3]{%
+ \listcsgadd{glo@\glsdetoklabel{#1}@#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfieldlisteadd}
+%\changes{1.12}{2017-02-03}{new}
+%Similarly but uses \cs{listcseadd}.
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldlisteadd}[3]{%
+ \listcseadd{glo@\glsdetoklabel{#1}@#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfieldlistxadd}
+%Similarly but uses \cs{listcsxadd}.
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldlistxadd}[3]{%
+ \listcsxadd{glo@\glsdetoklabel{#1}@#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Now provide commands to iterate over these lists.
+%\begin{macro}{\glsxtrfielddolistloop}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrfielddolistloop}[2]{%
+ \dolistcsloop{glo@\glsdetoklabel{#1}@#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfieldforlistloop}
+%\changes{1.12}{2017-02-03}{new}
+%\changes{1.29}{2018-04-09}{corrected argument order in \cs{forlistcsloop}}
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldforlistloop}[3]{%
+ \forlistcsloop{#3}{glo@\glsdetoklabel{#1}@#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%List element tests:
+%\begin{macro}{\glsxtrfieldifinlist}
+%\changes{1.12}{2017-02-03}{new}
+%First argument label, second argument field, third argument item,
+%fourth true part and fifth false part.
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldifinlist}[5]{%
+ \ifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfieldxifinlist}
+%\changes{1.12}{2017-02-03}{new}
+%Expands item.
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldxifinlist}[5]{%
+ \xifinlistcs{#3}{glo@\glsdetoklabel{#1}@#2}{#4}{#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrforcsvfield}
+%\changes{1.24}{2017-11-14}{new}
+%\begin{definition}
+%\cs{glsxtrforcsvfield}\marg{label}\marg{field}\marg{cs handler}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtrforcsvfield}[3]{%
+ \@glsxtrifhasfield{#2}{#1}%
+ {%
+ \let\glsxtrendfor\@endfortrue
+ \@for\@glsxtr@label:=\glscurrentfieldvalue\do
+ {\expandafter#3\expandafter{\@glsxtr@label}}}%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifhasfield}
+%\changes{1.19}{2017-09-09}{new}
+%A simpler alternative to \cs{ifglshasfield} that doesn't complain
+%if the entry or the field doesn't exist. (No mapping is used.)
+%Grouping is added to the unstarred version allow for nested use.
+% \begin{macrocode}
+\newrobustcmd{\glsxtrifhasfield}{%
+ \@ifstar{\s@glsxtrifhasfield}{\@glsxtrifhasfield}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrifhasfield}
+%\changes{1.19}{2017-09-09}{new}
+%Unstarred version adds grouping.
+% \begin{macrocode}
+\newcommand{\@glsxtrifhasfield}[4]{%
+ {\s@glsxtrifhasfield{#1}{#2}{#3}{#4}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@glsxtrifhasfield}
+%\changes{1.19}{2017-09-09}{new}
+%\changes{1.21}{2017-11-03}{switched from \cs{ifdef} to \cs{ifundef}}
+% Starred version omits grouping.
+% \begin{macrocode}
+\newcommand{\s@glsxtrifhasfield}[4]{%
+ \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}%
+ \ifundef\glscurrentfieldvalue
+ {#4}%
+ {%
+ \ifdefempty\glscurrentfieldvalue{#4}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfFieldNonZero}
+%\changes{1.31}{2018-05-09}{new}
+%Designed for numeric fields.
+%\changes{1.39}{2019-03-22}{added starred version}
+% \begin{macrocode}
+\newcommand{\GlsXtrIfFieldNonZero}{%
+ \@ifstar\s@GlsXtrIfFieldNonZero\@GlsXtrIfFieldNonZero
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrIfFieldNonZero}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand{\@GlsXtrIfFieldNonZero}[4]{%
+ \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{0}{#4}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfFieldEqNum}
+%\changes{1.31}{2018-05-09}{new}
+%\begin{definition}
+%\cs{GlsXtrIfFieldEqNum}\marg{field}\marg{label}\marg{value}\marg{true}\marg{false}
+%\end{definition}
+%Designed for numeric fields.
+%\changes{1.39}{2019-03-22}{added starred version}
+% \begin{macrocode}
+\newcommand{\GlsXtrIfFieldEqNum}{%
+ \@ifstar\s@GlsXtrIfFieldEqNum\@GlsXtrIfFieldEqNum
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrIfFieldEqNum}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand{\@GlsXtrIfFieldEqNum}[5]{%
+ \@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@GlsXtrIfFieldEqNum}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand{\s@GlsXtrIfFieldEqNum}[5]{%
+ \s@GlsXtrIfFieldCmpNum{#1}{#2}{=}{#3}{#4}{#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfFieldCmpNum}
+%\changes{1.31}{2018-05-09}{new}
+%\begin{definition}
+%\cs{GlsXtrIfFieldCmpNum}\marg{field}\marg{label}\marg{comparison}\marg{value}\marg{true}\marg{false}
+%\end{definition}
+%Designed for numeric fields.
+%\changes{1.39}{2019-03-22}{added starred version}
+% \begin{macrocode}
+\newcommand{\GlsXtrIfFieldCmpNum}{%
+ \@ifstar\s@GlsXtrIfFieldCmpNum\@GlsXtrIfFieldCmpNum
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrIfFieldCmpNum}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand{\@GlsXtrIfFieldCmpNum}[6]{%
+ {%
+ \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}%
+ \ifundef\glscurrentfieldvalue
+ {\def\glscurrentfieldvalue{0}}%
+ {%
+ \ifdefempty\glscurrentfieldvalue
+ {\def\glscurrentfieldvalue{0}}%
+ {}%
+ }%
+ \ifnum\glscurrentfieldvalue#3#4\relax #5\else #6\fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@GlsXtrIfFieldCmpNum}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand{\s@GlsXtrIfFieldCmpNum}[6]{%
+ \letcs{\glscurrentfieldvalue}{glo@\glsdetoklabel{#2}@#1}%
+ \ifundef\glscurrentfieldvalue
+ {\def\glscurrentfieldvalue{0}}%
+ {%
+ \ifdefempty\glscurrentfieldvalue
+ {\def\glscurrentfieldvalue{0}}%
+ {}%
+ }%
+ \ifnum\glscurrentfieldvalue#3#4\relax #5\else #6\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfFieldUndef}
+%\changes{1.23}{2017-11-12}{new}
+%\begin{definition}
+%\cs{GlsXtrIfFieldUndef}\marg{field}\marg{label}\marg{true}\marg{false}
+%\end{definition}
+%Just uses \cs{ifcsundef}.
+% \begin{macrocode}
+\newcommand{\GlsXtrIfFieldUndef}[2]{%
+ \ifcsundef{glo@\glsdetoklabel{#2}@#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrusefield}
+%\changes{1.12}{2017-02-03}{new}
+%Provide a user-level alternative to \cs{@gls@entry@field}.
+%The first argument is the entry label. The second argument is the
+%field label.
+% \begin{macrocode}
+\newcommand*{\glsxtrusefield}[2]{%
+ \@gls@entry@field{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrusefield}
+%\changes{1.12}{2017-02-03}{new}
+%\changes{1.37}{2018-11-30}{fixed internal command and added check for
+%\cs{texorpdfstring}}
+%Provide a user-level alternative to \cs{@Gls@entry@field}.
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsxtrusefield}[2]{%
+ \texorpdfstring
+ {\@Gls@entry@field{#1}{#2}}
+ {\@gls@entry@field{#1}{#2}}%
+ }
+}
+{
+ \newcommand*{\Glsxtrusefield}[2]{%
+ \@Gls@entry@field{#1}{#2}%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrusefield}
+%\changes{1.37}{2018-11-30}{new}
+%As above but convert to all caps.
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\GLSxtrusefield}[2]{%
+ \texorpdfstring
+ {\glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}}%
+ {\@gls@entry@field{#1}{#2}}%
+ }
+}
+{
+ \newcommand*{\GLSxtrusefield}[2]{%
+ \glsdoifexists{#1}{\mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}}%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrentryparentname}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrentryparentname}[1]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@parent}%
+ {\csuse{glo@\csuse{glo@\glsdetoklabel{#1}@parent}@name}}%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdeffield}
+%\changes{1.12}{2017-02-03}{new}
+%Just use \cs{csdef} to provide a field value for the given entry.
+% \begin{macrocode}
+\newcommand*{\glsxtrdeffield}[2]{\csdef{glo@\glsdetoklabel{#1}@#2}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtredeffield}
+%\changes{1.12}{2017-02-03}{new}
+%Just use \cs{csedef} to provide a field value for the given entry.
+%\changes{1.28}{2018-03-06}{changed \cs{csedef} to
+%\cs{protected@csedef}}
+% \begin{macrocode}
+\newcommand*{\glsxtredeffield}[2]{\protected@csedef{glo@\glsdetoklabel{#1}@#2}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsetfieldifexists}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrsetfieldifexists}[3]{\glsdoifexists{#1}{#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetField}
+%\changes{1.12}{2017-02-03}{new}
+%Allow the user to set a field. First argument entry label, second
+%argument field label, third argument value.
+% \begin{macrocode}
+\newrobustcmd*{\GlsXtrSetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\csdef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrLetField}
+%\changes{1.12}{2017-02-03}{new}
+%Uses \cs{cslet} instead. Third argument should be a macro.
+% \begin{macrocode}
+\newrobustcmd*{\GlstrLetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\cslet{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\csGlsXtrLetField}
+%\changes{1.12}{2017-02-03}{new}
+%Uses \cs{csletcs} instead. Third argument should be a control
+%sequence name.
+% \begin{macrocode}
+\newrobustcmd*{\csGlsXtrLetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\csletcs{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrLetFieldToField}
+%\changes{1.12}{2017-02-03}{new}
+%Sets the field for one entry to the field for another entry.
+%Third argument should be the other entry
+%and the fourth argument that other field label.
+% \begin{macrocode}
+\newrobustcmd*{\GlsXtrLetFieldToField}[4]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\csletcs{glo@\glsdetoklabel{#1}@#2}{glo@\glsdetoklabel{#3}@#4}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gGlsXtrSetField}
+%\changes{1.12}{2017-02-03}{new}
+%Allow the user to set a field. First argument entry label, second
+%argument field label, third argument value.
+% \begin{macrocode}
+\newrobustcmd*{\gGlsXtrSetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\csgdef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\xGlsXtrSetField}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\xGlsXtrSetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\protected@csxdef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\eGlsXtrSetField}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\eGlsXtrSetField}[3]{%
+ \glsxtrsetfieldifexists{#1}{#2}%
+ {\protected@csedef{glo@\glsdetoklabel{#1}@#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfFieldEqStr}
+%\changes{1.21}{2017-11-03}{new}
+%\changes{1.39}{2019-03-22}{added starred form}
+%Starred version uses starred version of \cs{glsxtrifhasfield}
+%(that is, no grouping).
+% \begin{macrocode}
+\newcommand*{\GlsXtrIfFieldEqStr}{%
+ \@ifstar\s@GlsXtrIfFieldEqStr\@GlsXtrIfFieldEqStr
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrIfFieldEqStr}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@GlsXtrIfFieldEqStr}[5]{%
+ \@glsxtrifhasfield{#1}{#2}%
+ {%
+ \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}%
+ }%
+ {#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@GlsXtrIfFieldEqStr}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newrobustcmd*{\s@GlsXtrIfFieldEqStr}[5]{%
+ \s@glsxtrifhasfield{#1}{#2}%
+ {%
+ \ifdefstring{\glscurrentfieldvalue}{#3}{#4}{#5}%
+ }%
+ {#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfFieldEqXpStr}
+%\changes{1.31}{2018-05-09}{new}
+%Like the above but first expands the string.
+%Starred version uses starred version of \cs{glsxtrifhasfield}
+%(that is, no grouping).
+%\changes{1.39}{2019-03-22}{added starred form}
+% \begin{macrocode}
+\newcommand*{\GlsXtrIfFieldEqXpStr}{%
+ \@ifstar\s@GlsXtrIfFieldEqXpStr\@GlsXtrIfFieldEqXpStr
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrIfFieldEqXpStr}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@GlsXtrIfFieldEqXpStr}[5]{%
+ \@glsxtrifhasfield{#1}{#2}%
+ {%
+ \protected@edef\@gls@tmp{#3}%
+ \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}%
+ }%
+ {#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@GlsXtrIfFieldEqXpStr}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newrobustcmd*{\s@GlsXtrIfFieldEqXpStr}[5]{%
+ \s@glsxtrifhasfield{#1}{#2}%
+ {%
+ \protected@edef\@gls@tmp{#3}%
+ \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}%
+ }%
+ {#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfXpFieldEqXpStr}
+%\changes{1.31}{2018-05-09}{new}
+%Like the above but also expands the field value.
+%Starred version uses starred version of \cs{glsxtrifhasfield}
+%(that is, no grouping).
+%\changes{1.39}{2019-03-22}{added starred form}
+% \begin{macrocode}
+\newcommand*{\GlsXtrIfXpFieldEqXpStr}{%
+ \@ifstar\s@GlsXtrIfXpFieldEqXpStr\@GlsXtrIfXpFieldEqXpStr
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrIfXpFieldEqXpStr}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@GlsXtrIfXpFieldEqXpStr}[5]{%
+ \@glsxtrifhasfield{#1}{#2}%
+ {%
+ \protected@edef\@gls@tmp{\glscurrentfieldvalue}%
+ \let\glscurrentfieldvalue\@gls@tmp
+ \protected@edef\@gls@tmp{#3}%
+ \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}%
+ }%
+ {#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@GlsXtrIfXpFieldEqXpStr}
+%\changes{1.39}{2019-03-22}{new}
+% \begin{macrocode}
+\newrobustcmd*{\s@GlsXtrIfXpFieldEqXpStr}[5]{%
+ \s@glsxtrifhasfield{#1}{#2}%
+ {%
+ \protected@edef\@gls@tmp{\glscurrentfieldvalue}%
+ \let\glscurrentfieldvalue\@gls@tmp
+ \protected@edef\@gls@tmp{#3}%
+ \ifdefequal{\glscurrentfieldvalue}{\@gls@tmp}{#4}{#5}%
+ }%
+ {#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrForeignText}
+%\changes{1.32}{2018-05-24}{new}
+%\begin{definition}
+%\cs{GlsXtrForeignText}\marg{entry label}\marg{text}
+%\end{definition}
+%If a field is used to store a language tag (such as \texttt{en-GB}
+%or \texttt{de-CH-1996}) then this command uses \sty{tracklang}'s
+%interface to encapsulate \meta{text}. The field identifying the
+%locale is given by \cs{GlsXtrForeignTextField}.
+% \begin{macrocode}
+\ifdef\foreignlanguage
+{
+ \ifdef\GetTrackedDialectFromLanguageTag
+ {
+ \newcommand{\GlsXtrForeignText}[2]{%
+% \end{macrocode}
+%In case this is used inside the argument of \cs{glsxtrifhasfield},
+%save and restore \cs{glscurrentfieldvalue}.
+% \begin{macrocode}
+ \let\@glsxtr@org@currentfieldvalue\glscurrentfieldvalue
+ \glsxtrifhasfield{\GlsXtrForeignTextField}{#1}%
+ {%
+ \expandafter\GetTrackedDialectFromLanguageTag\expandafter
+ {\glscurrentfieldvalue}{\@glsxtr@dialect}%
+ \let\@glsxtr@locale\glscurrentfieldvalue
+ \let\glscurrentfieldvalue\@glsxtr@org@currentfieldvalue
+ \ifdefempty\@glsxtr@dialect
+ {%
+% \end{macrocode}
+% An exact match hasn't been found. A partial match can only be
+% obtained with at least \sty{tracklang} v1.3.6.
+% \begin{macrocode}
+ \ifundef\TrackedDialectClosestSubMatch
+ {%
+ \GlossariesExtraWarning{Can't obtain dialect label
+ (tracklang v1.3.6+ required)}%
+ }%
+ {\let\@glsxtr@dialect\TrackedDialectClosestSubMatch}%
+ }%
+ {}%
+ \ifdefempty\@glsxtr@dialect
+ {%
+% \end{macrocode}
+% No tracked dialect found for the root language.
+% \begin{macrocode}
+ }%
+ {%
+% \end{macrocode}
+% Check if there's a caption hook for the given dialect label.
+% \begin{macrocode}
+ \ifcsundef{captions\@glsxtr@dialect}{}%
+ {%
+% \end{macrocode}
+% Dialect label not recognised. Check if there's a known mapping.
+% \begin{macrocode}
+ \IfTrackedDialectHasMapping{\@glsxtr@dialect}%
+ {%
+ \edef\@glsxtr@dialect{%
+ \GetTrackedDialectToMapping{\@glsxtr@dialect}}%
+% \end{macrocode}
+% Does a caption hook exist for this?
+% \begin{macrocode}
+ \ifcsundef{captions\@glsxtr@dialect}{}%
+ {%
+% \end{macrocode}
+% No mapping. Try root language label instead.
+% \begin{macrocode}
+ \ifcsundef{captions\@tracklang@lang}{}%
+ {%
+ \let\@glsxtr@dialect\@tracklang@lang
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% No mapping. Try root language label instead.
+% \begin{macrocode}
+ \ifcsundef{captions\@tracklang@lang}{}%
+ {%
+ \let\@glsxtr@dialect\@tracklang@lang
+ }%
+ }%
+ }%
+ }%
+ \ifdefempty\@glsxtr@dialect
+ {%
+ \GlsXtrUnknownDialectWarning{\@glsxtr@locale}{\@tracklang@lang}%
+ #2%
+ }%
+ {\foreignlanguage{\@glsxtr@dialect}{#2}}%
+ }%
+ {#2}% key not set
+ }
+ }
+ {
+ \newcommand{\GlsXtrForeignText}[2]{%
+ \GlossariesExtraWarning{Can't encapsulate foreign text:
+ tracklang v1.3.6+ required}%
+ #2%
+ }
+ }
+}
+{
+% \end{macrocode}
+%\cs{foreignlanguage} isn't defined so just do \meta{text}.
+% \begin{macrocode}
+ \newcommand{\GlsXtrForeignText}[2]{#2}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrForeignTextField}
+%\changes{1.32}{2018-05-24}{new}
+%This is the \gloskey{user2} field by default but may be redefined
+%as required.
+% \begin{macrocode}
+\newcommand*{\GlsXtrForeignTextField}{userii}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrUnknownDialectWarning}
+%\changes{1.32}{2018-05-24}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrUnknownDialectWarning}[2]{%
+ \GlossariesExtraWarning{Can't determine valid dialect label
+ for locale `#1' (root language: #2)}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpageref}
+%\changes{1.11}{2017-01-19}{new}
+% Like \cs{glsrefentry} but references the page number instead (if
+% entry counting is on). The base \sty{glossaries} package only
+% introduced \cs{GlsEntryCounterLabelPrefix} in version 4.38, so it
+% may not be defined.
+% \begin{macrocode}
+\ifdef\GlsEntryCounterLabelPrefix
+{%
+ \newcommand*{\glsxtrpageref}[1]{%
+ \ifglsentrycounter
+ \pageref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \ifglssubentrycounter
+ \pageref{\GlsEntryCounterLabelPrefix\glsdetoklabel{#1}}%
+ \else
+ \gls{#1}%
+ \fi
+ \fi
+ }
+}%
+{%
+ \newcommand*{\glsxtrpageref}[1]{%
+ \ifglsentrycounter
+ \pageref{glsentry-\glsdetoklabel{#1}}%
+ \else
+ \ifglssubentrycounter
+ \pageref{glsentry-\glsdetoklabel{#1}}%
+ \else
+ \gls{#1}%
+ \fi
+ \fi
+ }
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\apptoglossarypreamble}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\apptoglossarypreamble}[2][\glsdefaulttype]{%
+ \ifcsdef{glolist@#1}%
+ {%
+ \ifcsundef{@glossarypreamble@#1}%
+ {\csdef{@glossarypreamble@#1}{}}%
+ {}%
+ \csappto{@glossarypreamble@#1}{#2}%
+ }%
+ {%
+ \GlossariesExtraWarning{Glossary `#1' is not defined}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\pretoglossarypreamble}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\preglossarypreamble}[2][\glsdefaulttype]{%
+ \ifcsdef{glolist@#1}%
+ {%
+ \ifcsundef{@glossarypreamble@#1}%
+ {\csdef{@glossarypreamble@#1}{}}%
+ {}%
+ \cspreto{@glossarypreamble@#1}{#2}%
+ }%
+ {%
+ \GlossariesExtraWarning{Glossary `#1' is not defined}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Modifications to Commands Provided by \styfmt{glossaries}}
+% Some of the commands provided by \styfmt{glossaries} are modified
+% to take into account new options or to change default behaviour.
+%
+%\begin{macro}{\ifglsused}
+%\begin{definition}
+%\cs{ifglsused}\marg{label}\marg{true part}\marg{false part}
+%\end{definition}
+%\changes{1.33}{2018-07-26}{added redefinition}
+%In the event that undefined entries should trigger a warning rather
+%than an error, \cs{ifglsused} needs to be modified to check for
+%existence. If the boolean variable is undefined, then its state is
+%indeterminate and is neither true nor false, so neither \meta{true
+%part} nor \meta{false} part will be performed if \meta{label} is
+%undefined.
+% \begin{macrocode}
+\renewcommand*{\ifglsused}[3]{%
+ \glsdoifexists{#1}{\ifbool{glo@\glsdetoklabel{#1}@flag}{#2}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide a starred version of \cs{longnewglossaryentry} that doesn't
+%automatically insert \verb|\leavevmode\unskip\nopostdesc| at the
+%end of the description. The unstarred version is modified to use
+%\cs{glsxtrpostlongdescription} instead.
+%
+%\begin{macro}{\longnewglossaryentry}
+%\changes{1.12}{2017-02-03}{added starred version}
+% \begin{macrocode}
+\renewcommand*{\longnewglossaryentry}{%
+ \@ifstar\@glsxtr@s@longnewglossaryentry\@glsxtr@longnewglossaryentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@s@longnewglossaryentry}
+%\changes{1.12}{2017-02-03}{new}
+%Starred version.
+% \begin{macrocode}
+\newcommand{\@glsxtr@s@longnewglossaryentry}[3]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \bgroup
+ \let\@org@newglossaryentryprehook\@newglossaryentryprehook
+ \long\def\@newglossaryentryprehook{%
+ \long\def\@glo@desc{#3}%
+ \@org@newglossaryentryprehook
+ }%
+ \renewcommand*{\gls@assign@desc}[1]{%
+ \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}%
+ \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}%
+ }
+ \gls@defglossaryentry{#1}{#2}%
+ \egroup
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@longnewglossaryentry}
+%\changes{1.12}{2017-02-03}{new}
+%Unstarred version.
+% \begin{macrocode}
+\newcommand{\@glsxtr@longnewglossaryentry}[3]{%
+ \glsdoifnoexists{#1}%
+ {%
+ \bgroup
+ \let\@org@newglossaryentryprehook\@newglossaryentryprehook
+ \long\def\@newglossaryentryprehook{%
+ \long\def\@glo@desc{#3\glsxtrpostlongdescription}%
+ \@org@newglossaryentryprehook
+ }%
+ \renewcommand*{\gls@assign@desc}[1]{%
+ \global\cslet{glo@\glsdetoklabel{#1}@desc}{\@glo@desc}%
+% \end{macrocode}
+%The following is different from the base \sty{glossaries.sty}:
+% \begin{macrocode}
+ \global\cslet{glo@\glsdetoklabel{#1}@descplural}{\@glo@descplural}%
+ }
+ \gls@defglossaryentry{#1}{#2}%
+ \egroup
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostlongdescription}
+%\changes{1.12}{2017-02-03}{new}
+%Hook at the end of the description when using the unstarred
+%\cs{longnewglossaryentry}.
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlongdescription}{\leavevmode\unskip\nopostdesc}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide a starred version of \cs{newignoredglossary} that doesn't
+%add the glossary to the nohyperlist list.
+%
+%\begin{macro}{\newignoredglossary}
+%\changes{1.11}{2017-01-19}{added starred version}
+%Redefine to check for star.
+% \begin{macrocode}
+\renewcommand{\newignoredglossary}{%
+ \@ifstar\glsxtr@s@newignoredglossary\glsxtr@org@newignoredglossary
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@org@newignoredglossary}
+%The original definition is patched to check for existence.
+%\changes{1.11}{2017-01-19}{new}
+%\changes{1.12}{2017-02-03}{Added check for existence}
+% \begin{macrocode}
+\newcommand*{\glsxtr@org@newignoredglossary}[1]{%
+ \ifcsdef{glolist@#1}
+ {%
+ \glsxtrundefaction{Glossary type `#1' already exists}{}%
+ }%
+ {%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \eappto\@gls@nohyperlist{,#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@s@newignoredglossary}
+%Starred form.
+%\changes{1.11}{2017-01-19}{new}
+%\changes{1.12}{2017-02-03}{Added check for existence}
+% \begin{macrocode}
+\newcommand*{\glsxtr@s@newignoredglossary}[1]{%
+ \ifcsdef{glolist@#1}
+ {%
+ \glsxtrundefaction{Glossary type `#1' already exists}{}%
+ }%
+ {%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssettoctitle}
+%\changes{1.12}{2017-02-03}{added patch}
+%Ignored glossaries don't have an associated title, so modify
+%\cs{glssettoctitle} to check for it to prevent an undefined
+%command written to the toc file.
+% \begin{macrocode}
+\glsifusetranslator
+{%
+ \renewcommand*{\glssettoctitle}[1]{%
+ \ifcsdef{gls@tr@set@#1@toctitle}%
+ {%
+ \csuse{gls@tr@set@#1@toctitle}%
+ }%
+ {%
+ \ifcsdef{@glotype@#1@title}%
+ {\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}%
+ {\def\glossarytoctitle{\glossarytitle}}%
+ }%
+ }%
+}
+{
+ \renewcommand*{\glssettoctitle}[1]{%
+ \ifcsdef{@glotype@#1@title}%
+ {\def\glossarytoctitle{\csname @glotype@#1@title\endcsname}}%
+ {\def\glossarytoctitle{\glossarytitle}}%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\provideignoredglossary}
+%\changes{1.12}{2017-02-03}{new}
+%As above but won't do anything if the glossary already exists.
+% \begin{macrocode}
+\newcommand{\provideignoredglossary}{%
+ \@ifstar\glsxtr@s@provideignoredglossary\glsxtr@provideignoredglossary
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@provideignoredglossary}
+%\changes{1.12}{2017-02-03}{new}
+%Unstarred version.
+% \begin{macrocode}
+\newcommand*{\glsxtr@provideignoredglossary}[1]{%
+ \ifcsdef{glolist@#1}
+ {}%
+ {%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ \ifdefempty\@gls@nohyperlist
+ {%
+ \renewcommand*{\@gls@nohyperlist}{#1}%
+ }%
+ {%
+ \eappto\@gls@nohyperlist{,#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@s@provideignoredglossary}
+%Starred form.
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@s@provideignoredglossary}[1]{%
+ \ifcsdef{glolist@#1}
+ {}%
+ {%
+ \ifdefempty\@ignored@glossaries
+ {%
+ \edef\@ignored@glossaries{#1}%
+ }%
+ {%
+ \eappto\@ignored@glossaries{,#1}%
+ }%
+ \csgdef{glolist@#1}{,}%
+ \ifcsundef{gls@#1@entryfmt}%
+ {%
+ \defglsentryfmt[#1]{\glsentryfmt}%
+ }%
+ {}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrcopytoglossary}
+%Adds an entry label to another glossary list. First argument is
+%entry label. Second argument is glossary label.
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrcopytoglossary}[2]{%
+ \glsdoifexists{#1}%
+ {%
+ \ifcsdef{glolist@#2}
+ {%
+ \cseappto{glolist@#2}{#1,}%
+ }%
+ {%
+ \glsxtrundefaction{Glossary type `#2' doesn't exist}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Existence Checks}
+%\begin{macro}{\glsdoifexists}
+% Modify \cs{glsdoifexists} to take account of the
+% \pkgopt{undefaction} setting.
+% \begin{macrocode}
+\renewcommand{\glsdoifexists}[2]{%
+ \ifglsentryexists{#1}{#2}%
+ {%
+% \end{macrocode}
+% Define \cs{glslabel} in case it's needed after this command (for
+% example in the post-link hook).
+%\changes{1.08}{2016-12-13}{now defines \cs{glslabel}}
+% \begin{macrocode}
+ \edef\glslabel{\glsdetoklabel{#1}}%
+ \glsxtrundefaction{Glossary entry `\glslabel'
+ has not been defined}{You need to define a glossary entry before
+ you can reference it.}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdoifnoexists}
+% Modify \cs{glsdoifnoexists} to take account of the
+% \pkgopt{undefaction} setting.
+% \begin{macrocode}
+\renewcommand{\glsdoifnoexists}[2]{%
+ \ifglsentryexists{#1}{%
+ \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
+ has already been defined}{}}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdoifexistsordo}
+% Modify \cs{glsdoifexistsordo} to take account of the
+% \pkgopt{undefaction} setting. This command was introduced in
+% \styfmt{glossaries} version 4.19, so check if it has been defined first.
+% \begin{macrocode}
+\ifdef\glsdoifexistsordo
+{%
+ \renewcommand{\glsdoifexistsordo}[3]{%
+ \ifglsentryexists{#1}{#2}%
+ {%
+ \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry
+ before you can use it.}%
+ #3%
+ }%
+ }%
+}
+{%
+ \glsxtr@warnonexistsordo\glsdoifexistsordo
+ \newcommand{\glsdoifexistsordo}[3]{%
+ \ifglsentryexists{#1}{#2}%
+ {%
+ \glsxtrundefaction{Glossary entry `\glsdetoklabel{#1}'
+ has not been defined}{You need to define a glossary entry
+ before you can use it.}%
+ #3%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\doifglossarynoexistsordo}
+% Similarly for \cs{doifglossarynoexistsordo}.
+% \begin{macrocode}
+\ifdef\doifglossarynoexistsordo
+{%
+ \renewcommand{\doifglossarynoexistsordo}[3]{%
+ \ifglossaryexists{#1}%
+ {%
+ \glsxtrundefaction{Glossary type `#1' already exists}{}%
+ #3%
+ }%
+ {#2}%
+ }%
+}
+{%
+ \glsxtr@warnonexistsordo\doifglossarynoexistsordo
+ \newcommand{\doifglossarynoexistsordo}[3]{%
+ \ifglossaryexists{#1}%
+ {%
+ \glsxtrundefaction{Glossary type `#1' already exists}{}%
+ #3%
+ }%
+ {#2}%
+ }%
+}
+
+% \end{macrocode}
+%\end{macro}
+%
+%There are now three types of cross-references: the \gloskey{see} key (as
+%original), the \gloskey{alias} key (from \styfmt{glossaries-extra} v1.12)
+% and the \gloskey{seealso} key (from \styfmt{glossaries-extra} v1.16).
+% The original \gloskey{see} key needs to have a corresponding field
+% (which it doesn't with the base \sty{glossaries} package).
+%
+%\begin{macro}{\@newglossaryentryposthook}
+% Hook into end of \cs{newglossaryentry} to add \qt{see} value as a
+% field.
+%\changes{0.5.4}{2015-12-15}{added empty see value if not set and added
+% `see' to field key map}
+% \begin{macrocode}
+\appto\@newglossaryentryposthook{%
+ \ifdefvoid\@glo@see
+ {\csxdef{glo@\@glo@label @see}{}}%
+ {%
+ \csxdef{glo@\@glo@label @see}{\@glo@see}%
+ \if@glsxtr@autoseeindex
+ \@glsxtr@autoindexcrossrefs
+ \fi
+ }%
+}
+\appto\@gls@keymap{,{see}{see}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrusesee}
+%\changes{1.06}{2016-06-18}{new}
+%Apply \cs{glsseeformat} to the \gloskey{see} key if not empty.
+% \begin{macrocode}
+\newcommand*{\glsxtrusesee}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}%
+ \ifdefempty\@glo@see
+ {}%
+ {%
+ \expandafter\glsxtr@usesee\@glo@see\@end@glsxtr@usesee
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@usesee}
+%\changes{1.06}{2016-06-18}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@usesee}[1][\seename]{%
+ \@glsxtr@usesee[#1]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@usesee}
+%\changes{1.06}{2016-06-18}{new}
+% \begin{macrocode}
+\def\@glsxtr@usesee[#1]#2\@end@glsxtr@usesee{%
+ \glsxtruseseeformat{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruseseeformat}
+%\changes{1.06}{2016-06-18}{new}
+%The format used by \cs{glsxtrusesee}. The first argument is the tag
+%(such as \cs{seename}). The second argument is the comma-separated
+%list of cross-referenced labels.
+% \begin{macrocode}
+\newcommand*{\glsxtruseseeformat}[2]{%
+ \glsseeformat[#1]{#2}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsseeitemformat}
+%\changes{1.21}{2017-11-03}{new}
+%\changes{1.22}{2017-11-08}{switched check from regular to short}
+%\changes{1.37}{2018-11-30}{removed reference to \cs{glslabel}}
+%\styfmt{glossaries} originally defined \cs{glsseeitemformat}
+%to use \cs{glsentryname} but in v3.0 this was switched to
+%use \cs{glsentrytext} due to problems occurring with the
+%\gloskey{name} field being sanitized. Since this is no longer a
+%problem, \styfmt{glossaries-extra} restores the original
+%definition as it makes more sense to use the \gloskey{name}
+%in the cross-reference list. This still uses \cs{glsaccesstext}
+%for abbreviations.
+% \begin{macrocode}
+\renewcommand*{\glsseeitemformat}[1]{%
+ \ifglshasshort{#1}{\glsaccesstext{#1}}{\glsaccessname{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrhiername}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glsxtrhiername}\marg{label}
+%\end{definition}
+%Displays the hierarchical name for the given entry. The
+%cross-reference format \cs{glsseeitemformat} may be redefined to
+%use this command to show the hierarchy, if required.
+% \begin{macrocode}
+\newcommand*{\glsxtrhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {\glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
+ {}%
+ \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrhiername}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{Glsxtrhiername}\marg{label}
+%\end{definition}
+%As above but displays the top-level name with an initial capital.
+% \begin{macrocode}
+\newcommand*{\Glsxtrhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {%
+ \Glsxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep
+ \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}%
+ }%
+ {\ifglshasshort{#1}{\Glsaccessshort{#1}}{\Glsaccessname{#1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrhiername}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{GlsXtrhiername}\marg{label}
+%\end{definition}
+%As above but converts the first letter of each name to a capital.
+% \begin{macrocode}
+\newcommand*{\GlsXtrhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {\GlsXtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
+ {}%
+ \ifglshasshort{#1}{\Glsaccessshort{#1}}{\Glsaccessname{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrhiername}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{GLSxtrhiername}\marg{label}
+%\end{definition}
+%As above but displays the top-level name in all-caps.
+% \begin{macrocode}
+\newcommand*{\GLSxtrhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {%
+ \GLSxtrhiername{\glscurrentfieldvalue}\glsxtrhiernamesep
+ \ifglshasshort{#1}{\glsaccessshort{#1}}{\glsaccessname{#1}}%
+ }%
+ {\ifglshasshort{#1}{\GLSaccessshort{#1}}{\GLSaccessname{#1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSXTRhiername}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{GLSXTRhiername}\marg{label}
+%\end{definition}
+%As above but displays all names in all-caps.
+% \begin{macrocode}
+\newcommand*{\GLSXTRhiername}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \glsxtrifhasfield{parent}{#1}%
+ {\GLSXTRhiername{\glscurrentfieldvalue}\glsxtrhiernamesep}%
+ {}
+ \ifglshasshort{#1}{\GLSaccessshort{#1}}{\GLSaccessname{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrhiernamesep}
+%\changes{1.37}{2018-11-30}{new}
+%Separator used in \cs{glsxtrhiername} and variants.
+% \begin{macrocode}
+\newcommand*{\glsxtrhiernamesep}{\,{\small$\triangleright$}\,}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruseseealso}
+%\changes{1.16}{2017-06-15}{new}
+%Apply \cs{glsseeformat} to the \gloskey{seealso} key if not empty.
+%There's no optional tag to worry about here.
+% \begin{macrocode}
+\newcommand*{\glsxtruseseealso}[1]{%
+ \glsdoifexists{#1}%
+ {%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}%
+ \ifdefempty\@glo@see
+ {}%
+ {%
+ \expandafter\glsxtruseseealsoformat\expandafter{\@glo@see}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruseseealsoformat}
+%\changes{1.16}{2017-06-15}{new}
+%The format used by \cs{glsxtruseseealso}. The argument is the comma-separated
+%list of cross-referenced labels.
+% \begin{macrocode}
+\newcommand*{\glsxtruseseealsoformat}[1]{%
+ \glsseeformat[\seealsoname]{#1}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrseelist}
+%\changes{1.16}{2017-06-15}{new}
+%Fully expands argument before passing to \cs{glsseelist}.
+%(The argument to \cs{glsseelist} must be a comma-separated list of
+%entry labels.)
+% \begin{macrocode}
+\newrobustcmd{\glsxtrseelist}[1]{%
+ \edef\@glo@tmp{\noexpand\glsseelist{#1}}\@glo@tmp
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\seealsoname}
+%\changes{1.16}{2017-06-15}{new}
+%In case this command hasn't been defined. (Should be provided by
+%language packages.)
+% \begin{macrocode}
+\providecommand{\seealsoname}{see also}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrindexseealso}
+%\changes{1.16}{2017-06-15}{new}
+%If \cs{@xdycrossrefhook} is defined, provide a
+%\texttt{seealso} crossref class. Otherwise this just does
+%\cs{glssee} with \cs{seealsoname} as the tag. The hook is only
+%defined if both \pkgopt{xindy} and \sty{glossaries} v4.30+ are
+%being used.
+% \begin{macrocode}
+\ifdef\@xdycrossrefhook
+{
+% \end{macrocode}
+%Add the cross-reference class definition to the hook.
+% \begin{macrocode}
+ \appto\@xdycrossrefhook{%
+ \write\glswrite{(define-crossref-class \string"seealso\string"
+ :unverified )}%
+ \write\glswrite{(markup-crossref-list
+ :class \string"seealso\string"^^J\space\space\space
+ :open \string"\string\glsxtruseseealsoformat\glsopenbrace\string"
+ :close \string"\glsclosebrace\string")}%
+ }
+% \end{macrocode}
+%Append to class list.
+% \begin{macrocode}
+ \appto\@xdylocationclassorder{\space\string"seealso\string"}
+% \end{macrocode}
+%This essentially works like \cs{@do@seeglossary} but uses the
+%\texttt{seealso} class.
+%\changes{1.21}{2017-11-03}{added check that the entry exists}
+%This doesn't increment the associated counter.
+% \begin{macrocode}
+ \newrobustcmd*{\glsxtrindexseealso}[2]{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \@glsxtr@recordsee{#1}{#2}%
+ \fi
+ \glsdoifexists{#1}%
+ {%
+ \@@glsxtrwrglossmark
+ \def\@gls@xref{#2}%
+ \@onelevel@sanitize\@gls@xref
+ \@gls@checkmkidxchars\@gls@xref
+ \gls@glossary{\csname glo@#1@type\endcsname}{%
+ (indexentry
+ :tkey (\csname glo@#1@index\endcsname)
+ :xref (\string"\@gls@xref\string")
+ :attr \string"seealso\string"
+ )
+ }%
+ }%
+ }
+}
+{
+% \end{macrocode}
+% \pkgopt{xindy} not in use or \sty{glossaries} version too old to support this.
+% \begin{macrocode}
+ \newrobustcmd*{\glsxtrindexseealso}{\glssee[\seealsoname]}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%The \gloskey{alias} key should be set to the label of the synonymous entry.
+%The \gloskey{seealso} key essentially behaves like
+%\texttt{see=[\cs{seealsoname}]\marg{xr-list}}. Neither of these new keys
+%has the optional tag part allowed with \gloskey{see}.
+%
+% If \cs{gls@set@xr@key} has been defined (\sty{glossaries} v4.30),
+% use that, otherwise just use \cs{glsaddstoragekey}.
+%
+% \begin{macrocode}
+\ifdef\gls@set@xr@key
+{
+% \end{macrocode}
+% We have at least \sty{glossaries} v4.30. This means the new keys
+% can be governed by the same settings as the see key.
+% \begin{macrocode}
+ \define@key{glossentry}{alias}{%
+ \gls@set@xr@key{alias}{\@glo@alias}{#1}%
+ }
+ \define@key{glossentry}{seealso}{%
+ \gls@set@xr@key{seealso}{\@glo@seealso}{#1}%
+ }
+% \end{macrocode}
+% Add to the key mappings.
+% \begin{macrocode}
+ \appto\@gls@keymap{,{alias}{alias},{seealso}{seealso}}
+% \end{macrocode}
+% Set the default value.
+% \begin{macrocode}
+ \appto\@newglossaryentryprehook{\def\@glo@alias{}\def\@glo@seealso{}}%
+% \end{macrocode}
+% Assign the field values.
+% \begin{macrocode}
+ \appto\@newglossaryentryposthook{%
+ \ifdefvoid\@glo@seealso
+ {\csxdef{glo@\@glo@label @seealso}{}}%
+ {%
+ \csxdef{glo@\@glo@label @seealso}{\@glo@seealso}%
+ \if@glsxtr@autoseeindex
+ \@glsxtr@autoindexcrossrefs
+ \fi
+ }%
+% \end{macrocode}
+% The \gloskey{alias} field doesn't trigger the automatic
+% cross-reference indexing performed at the end of the document.
+% \begin{macrocode}
+ \ifdefvoid\@glo@alias
+ {\csxdef{glo@\@glo@label @alias}{}}%
+ {%
+ \csxdef{glo@\@glo@label @alias}{\@glo@alias}%
+ }%
+ }
+% \end{macrocode}
+% Provide user-level commands to access the values.
+%\begin{macro}{\glsxtralias}
+% \begin{macrocode}
+ \newcommand*{\glsxtralias}[1]{\@gls@entry@field{#1}{alias}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrseealsolabels}
+% \begin{macrocode}
+ \newcommand*{\glsxtrseealsolabels}[1]{\@gls@entry@field{#1}{seealso}}
+% \end{macrocode}
+%\end{macro}
+%Add to the \cs{@glo@autosee} hook.
+% \begin{macrocode}
+ \appto\@glo@autoseehook{%
+ \ifdefvoid\@glo@alias
+ {%
+ \ifdefvoid\@glo@seealso
+ {}%
+ {%
+ \edef\@do@glssee{\noexpand\glsxtrindexseealso
+ {\@glo@label}{\@glo@seealso}}%
+ \@do@glssee
+ }%
+ }%
+ {%
+% \end{macrocode}
+%Add cross-reference if see key hasn't been used.
+% \begin{macrocode}
+ \ifdefvoid\@glo@see
+ {%
+ \edef\@do@glssee{\noexpand\glssee{\@glo@label}{\@glo@alias}}%
+ \@do@glssee
+ }%
+ {}%
+ }%
+ }%
+}
+{
+% \end{macrocode}
+% We have an older version of \sty{glossaries}, so just use
+% \cs{glsaddstoragekey}.
+%\begin{macro}{\glsxtralias}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+ \glsaddstoragekey*{alias}{}{\glsxtralias}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrseealsolabels}
+%\changes{1.16}{2017-06-15}{new}
+% \begin{macrocode}
+ \glsaddstoragekey*{seealso}{}{\glsxtrseealsolabels}
+% \end{macrocode}
+%\end{macro}
+%
+%If \cs{gls@set@xr@key} isn't defined, then \cs{@glo@autosee} won't
+%be either, so use the post entry definition hook.
+%
+%\begin{macro}{\@newglossaryentryposthook}
+%\changes{1.12}{2017-02-03}{added check for alias key}
+%Append to the hook to check for the \gloskey{alias} and
+%\gloskey{seealso} keys.
+% \begin{macrocode}
+ \appto\@newglossaryentryposthook{%
+ \ifcsvoid{glo@\@glo@label @alias}%
+ {%
+ \ifcsvoid{glo@\@glo@label @seealso}%
+ {}%
+ {%
+ \edef\@do@glssee{\noexpand\glsxtrindexseealso
+ {\@glo@label}{\csuse{glo@\@glo@label @seealso}}}%
+ \@do@glssee
+ }%
+ }%
+ {%
+% \end{macrocode}
+%Add cross-reference if see key hasn't been used.
+% \begin{macrocode}
+ \ifdefvoid\@glo@see
+ {%
+ \edef\@do@glssee{\noexpand\glssee
+ {\@glo@label}{\csuse{glo@\@glo@label @alias}}}%
+ \@do@glssee
+ }%
+ {}%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+}
+% \end{macrocode}
+%
+%
+% Add all unused cross-references at the end of the document.
+% \begin{macrocode}
+\AtEndDocument{\if@glsxtrindexcrossrefs\glsxtraddallcrossrefs\fi}
+% \end{macrocode}
+%
+%\begin{macro}{\glsxtraddallcrossrefs}
+% Iterate through all used entries and if they have a
+% cross-reference, make sure the cross-reference has been added.
+% \begin{macrocode}
+\newcommand*{\glsxtraddallcrossrefs}{%
+ \forallglossaries{\@glo@type}%
+ {%
+ \forglsentries[\@glo@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {\expandafter\@glsxtr@addunusedxrefs\expandafter{\@glo@label}}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@addunusedxrefs}
+% If the given entry has a \gloskey{see} or \gloskey{seealso} field add all unused
+% cross-references. (The \gloskey{alias} field isn't checked.)
+%\changes{1.16}{2017-06-15}{added check for \gloskey{seealso} field}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@addunusedxrefs}[1]{%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@see}%
+ \ifdefvoid\@glo@see
+ {}%
+ {%
+ \expandafter\glsxtr@addunused\@glo@see\@end@glsxtr@addunused
+ }%
+ \letcs{\@glo@see}{glo@\glsdetoklabel{#1}@seealso}%
+ \ifdefvoid\@glo@see
+ {}%
+ {%
+ \expandafter\glsxtr@addunused\@glo@see\@end@glsxtr@addunused
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@addunused}
+% Adds all the entries if they haven't been used.
+% \begin{macrocode}
+\newcommand*{\glsxtr@addunused}[1][]{%
+ \@glsxtr@addunused
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@addunused}
+% Adds all the entries if they haven't been used.
+% \begin{macrocode}
+\def\@glsxtr@addunused#1\@end@glsxtr@addunused{%
+ \@for\@glsxtr@label:=#1\do
+ {%
+ \ifglsused{\@glsxtr@label}{}%
+ {%
+ \glsadd[format=glsxtrunusedformat]{\@glsxtr@label}%
+ \glsunset{\@glsxtr@label}%
+ \expandafter\@glsxtr@addunusedxrefs\expandafter{\@glsxtr@label}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrunusedformat}
+% \begin{macrocode}
+\newcommand*{\glsxtrunusedformat}[1]{\unskip}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Document Definitions}
+%
+%\begin{macro}{\gls@begindocdefs}
+%This command was only introduced to \styfmt{glossaries} v4.37, so
+%it may not be defined. If it has been defined, redefine it to check
+%\cs{@glsxtr@docdefval} so that it only inputs the \texttt{.glsdefs}
+%file if \pkgopt[true]{docdef}.
+% \begin{macrocode}
+\ifdef\gls@begindocdefs
+{%
+ \renewcommand*{\gls@begindocdefs}{%
+ \ifnum\@glsxtr@docdefval=1\relax
+ \@gls@enablesavenonumberlist
+ \edef\@gls@restoreat{%
+ \noexpand\catcode`\noexpand\@=\number\catcode`\@\relax}%
+ \makeatletter
+ \InputIfFileExists{\jobname.glsdefs}{}{}%
+ \@gls@restoreat
+ \undef\@gls@restoreat
+ \gls@defdocnewglossaryentry
+ \else
+ \ifnum\@glsxtr@docdefval=3\relax
+% \end{macrocode}
+%\changes{1.34}{2018-07-29}{added support for docdef=atom}
+%The \pkgopt[atom]{docdef} package option has been set. Create the
+%.glsdefs file for the autocomplete support but don't read it.
+% \begin{macrocode}
+ \@gls@enablesavenonumberlist
+ \let\gls@checkseeallowed\relax
+ \let\newglossaryentry\new@atom@glossaryentry
+ \global\newwrite\@gls@deffile
+ \immediate\openout\@gls@deffile=\jobname.glsdefs
+% \end{macrocode}
+%Write all currently defined entries.
+% \begin{macrocode}
+ \forallglsentries{\@glsentry}{\@gls@writedef{\@glsentry}}%
+ \fi
+ \fi
+ }
+}
+{%
+ \ifnum\@glsxtr@docdefval=3\relax
+ \PackageError{glossaries-extra}{Package option
+ `docdef=\@glsxtr@docdefsetting' requires at least version 4.37
+ of the base glossaries.sty package}{}
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\new@atom@glossaryentry}
+% \begin{macrocode}
+\newrobustcmd{\new@atom@glossaryentry}[2]{%
+ \gls@defglossaryentry{#1}{#2}%
+ \@gls@writedef{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\makenoidxglossaries}
+%Modify \cs{makenoidxglossaries} so that it automatically
+%sets \pkgopt[false]{docdef} (unless the restricted setting is on)
+%and disables the \pkgopt{docdef} key.
+%This command isn't allowed with the \pkgopt{record} option.
+% \begin{macrocode}
+\let\glsxtr@orgmakenoidxglossaries\makenoidxglossaries
+\renewcommand{\makenoidxglossaries}{%
+ \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
+ {%
+ \glsxtr@orgmakenoidxglossaries
+% \end{macrocode}
+%Add marker to \cs{@do@seeglossary} but don't increment associated
+%counter.
+% \begin{macrocode}
+ \renewcommand{\@do@seeglossary}[2]{%
+ \@@glsxtrwrglossmark
+ \edef\@gls@label{\glsdetoklabel{##1}}%
+ \protected@write\@auxout{}{%
+ \string\@gls@reference
+ {\csname glo@\@gls@label @type\endcsname}%
+ {\@gls@label}%
+ {%
+ \string\glsseeformat##2{}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+%Check for \pkgopt[restricted]{docdefs}:
+% \begin{macrocode}
+ \if@glsxtrdocdefrestricted
+% \end{macrocode}
+%If restricted document definitions allowed, adjust
+%\cs{@gls@reference} so that it doesn't test for existence.
+% \begin{macrocode}
+ \renewcommand*{\@gls@reference}[3]{%
+ \ifcsundef{@glsref@##1}{\csgdef{@glsref@##1}{}}{}%
+ \ifinlistcs{##2}{@glsref@##1}%
+ {}%
+ {\listcsgadd{@glsref@##1}{##2}}%
+ \ifcsundef{glo@\glsdetoklabel{##2}@loclist}%
+ {\csgdef{glo@\glsdetoklabel{##2}@loclist}{}}%
+ {}%
+ \listcsgadd{glo@\glsdetoklabel{##2}@loclist}{##3}%
+ }%
+ \else
+% \end{macrocode}
+%Disable document definitions.
+% \begin{macrocode}
+ \@glsxtrdocdeffalse
+ \fi
+ \disable@keys{glossaries-extra.sty}{docdef}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{\string\makenoidxglossaries\space
+ not permitted\MessageBreak
+ with record=\@glsxtr@record@setting\space package option}%
+ {You may only use \string\makenoidxglossaries\ space with the
+ record=off option}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gls@defdocnewglossaryentry}
+% Modify \cs{gls@defdocnewglossaryentry} so that it checks
+% the \pkgopt{docdef} value.
+% \begin{macrocode}
+\renewcommand*{\gls@defdocnewglossaryentry}{%
+ \ifcase\@glsxtr@docdefval
+% \end{macrocode}
+% \pkgopt[false]{docdef}:
+% \begin{macrocode}
+ \renewcommand*{\newglossaryentry}[2]{%
+ \PackageError{glossaries-extra}{Glossary entries must
+ be \MessageBreak defined in the preamble with \MessageBreak
+ package option `docdef=false'\MessageBreak(consider using
+ `docdef=restricted')}{Move your glossary definitions to
+ the preamble. You can also put them in a \MessageBreak separate file
+ and load them with \string\loadglsentries.}%
+ }%
+ \or
+% \end{macrocode}
+% (\pkgopt[true]{docdef} case.)
+% Since the \gloskey{see} value is now saved in a field, it
+% can be used by entries that have been defined in the document.
+% \begin{macrocode}
+ \let\gls@checkseeallowed\relax
+ \let\newglossaryentry\new@glossaryentry
+ \else
+% \end{macrocode}
+%Restricted mode just needs to allow the \gloskey{see} value.
+% \begin{macrocode}
+ \let\gls@checkseeallowed\relax
+ \fi
+}%
+% \end{macrocode}
+%\end{macro}
+%
+% Permit a special form of document definition, but only allow
+% it if the glossaries come at the end of the document. These
+% commands behave a little like a combination of \cs{newterm}
+% and \cs{gls}. This must be explicitly enabled with
+% the following.
+%
+%\begin{macro}{\GlsXtrEnableOnTheFly}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrEnableOnTheFly}{%
+ \@ifstar\@sGlsXtrEnableOnTheFly\@GlsXtrEnableOnTheFly
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@sGlsXtrEnableOnTheFly}
+%\changes{0.5.4}{2015-12-15}{new}
+% The starred version attempts to allow UTF8 characters in the
+% label, but this may break! (Formatting commands mustn't be used in the
+% label, but the label may be a command whose replacement text is the
+% actual label. This doesn't take into account a command that's
+% defined in terms of another command that may eventually expand to
+% the label text.)
+% \begin{macrocode}
+\newcommand*{\@sGlsXtrEnableOnTheFly}{%
+ \renewcommand*{\glsdetoklabel}[1]{%
+ \expandafter\@glsxtr@ifcsstart\string##1 \@glsxtr@end@
+ {%
+ \expandafter\detokenize\expandafter{##1}%
+ }%
+ {\detokenize{##1}}%
+ }%
+ \@GlsXtrEnableOnTheFly
+}
+\def\@glsxtr@ifcsstart#1#2\@glsxtr@end@#3#4{%
+ \expandafter\if\glsbackslash#1%
+ #3%
+ \else
+ #4%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrstarflywarn}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrstarflywarn}{%
+ \GlossariesExtraWarning{Experimental starred version of
+ \string\GlsXtrEnableOnTheFly\space in use (please ensure you have
+ read the warnings in the glossaries-extra user manual)}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrEnableOnTheFly}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@GlsXtrEnableOnTheFly}{%
+% \end{macrocode}
+%\end{macro}
+% Don't redefine \cs{glsdetoklabel} if LuaTeX or XeTeX is being
+% used, since it's mainly to allow accented characters in the
+% label.
+%
+% These definitions are all assigned the category given by:
+%\begin{macro}{\glsxtrcat}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\glsxtrcat}{general}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\glsxtr}[1][]{%
+ \def\glsxtr@keylist{##1}%
+ \@glsxtr
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\@glsxtr}[2][]{%
+ \ifglsentryexists{##2}%
+ {%
+ \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}%
+ }%
+ {%
+ \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat,
+ description={\nopostdesc},##1}%
+ }%
+ \expandafter\gls\expandafter[\glsxtr@keylist]{##2}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtr}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsxtr}[1][]{%
+ \def\glsxtr@keylist{##1}%
+ \@Glsxtr
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\@Glsxtr}[2][]{%
+ \ifglsentryexists{##2}%
+ {%
+ \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}%
+ }%
+ {%
+ \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat,
+ description={\nopostdesc},##1}%
+ }%
+ \expandafter\Gls\expandafter[\glsxtr@keylist]{##2}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpl}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\glsxtrpl}[1][]{%
+ \def\glsxtr@keylist{##1}%
+ \@glsxtrpl
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrpl}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\@glsxtrpl}[2][]{%
+ \ifglsentryexists{##2}%
+ {%
+ \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}%
+ }%
+ {%
+ \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat,
+ description={\nopostdesc},##1}%
+ }%
+ \expandafter\glspl\expandafter[\glsxtr@keylist]{##2}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrpl}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsxtrpl}[1][]{%
+ \def\glsxtr@keylist{##1}%
+ \@Glsxtrpl
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtrpl}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\@Glsxtrpl}[2][]{%
+ \ifglsentryexists{##2}
+ {%
+ \ifblank{##1}{}{\GlsXtrWarning{##1}{##2}}%
+ }%
+ {%
+ \gls@defglossaryentry{##2}{name={##2},category=\glsxtrcat,
+ description={\nopostdesc},##1}%
+ }%
+ \expandafter\Glspl\expandafter[\glsxtr@keylist]{##2}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrWarning}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+ \newcommand*{\GlsXtrWarning}[2]{%
+ \def\@glsxtr@optlist{##1}%
+ \@onelevel@sanitize\@glsxtr@optlist
+ \GlossariesExtraWarning{The options `\@glsxtr@optlist' have
+ been ignored for entry `##2' as it has already been defined}%
+ }
+% \end{macrocode}
+%\end{macro}
+% Disable commands after the glossary:
+% \begin{macrocode}
+ \renewcommand\@printglossary[2]{%
+ \def\@glsxtr@printglossopts{##1}%
+ \@glsxtr@orgprintglossary{##1}{##2}%
+ \def\@glsxtr{\@glsxtr@disabledflycommand\glsxtr}%
+ \def\@glsxtrpl{\@glsxtr@disabledflycommand\glsxtrpl}%
+ \def\@Glsxtr{\@glsxtr@disabledflycommand\Glsxtr}%
+ \def\@Glsxtrpl{\@glsxtr@disabledflycommand\Glsxtrpl}%
+ }
+% \end{macrocode}
+%
+%\begin{macro}{\@glsxtr@disabledflycommand}
+% \begin{macrocode}
+ \newcommand*{\@glsxtr@disabledflycommand}[1]{%
+ \PackageError{glossaries-extra}%
+ {\string##1\space can't be used after any of the \MessageBreak
+ glossaries have been displayed}%
+ {The on-the-fly commands enabled by
+ \string\GlsXtrEnableOnTheFly\space may only be used \MessageBreak
+ before the glossaries. If you want to use any entries \MessageBreak
+ after any of the glossaries, you must use the standard \MessageBreak
+ method of first defining the entry and then using the \MessageBreak
+ entry with commands like \string\gls}%
+ \@@glsxtr@disabledflycommand
+ }%
+ \newcommand*{\@@glsxtr@disabledflycommand}[2][]{##2}
+% \end{macrocode}
+%\end{macro}
+%
+% End of \cs{GlsXtrEnableOnTheFly}. Disable since it can only
+% be used once.
+% \begin{macrocode}
+ \let\GlsXtrEnableOnTheFly\relax
+}
+\@onlypreamble\GlsXtrEnableOnTheFly
+% \end{macrocode}
+%
+%\subsection{Existing Glossary Style Modifications}
+%
+% Modify \cs{setglossarystyle} to keep track of the current style.
+% This allows the \cs{glossaries-extra-stylemods} package to reset the
+% current style after the required modifications have been made.
+%\begin{macro}{\@glsxtr@current@style}
+%\changes{1.02}{2016-04-25}{new}
+% Initialise the current style to the default style.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@current@style}{\@glossary@default@style}
+% \end{macrocode}
+%\end{macro}
+%
+% Modify \cs{setglossarystyle} to set \cs{@glsxtr@current@style}.
+%\begin{macro}{\setglossarystyle}
+% \begin{macrocode}
+\renewcommand*{\setglossarystyle}[1]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries-extra}{Glossary style `#1' undefined}{}%
+ }%
+ {%
+ \csname @glsstyle@#1\endcsname
+% \end{macrocode}
+% Only set the current style if it exists.
+% \begin{macrocode}
+ \protected@edef\@glsxtr@current@style{#1}%
+ }%
+ \ifx\@glossary@default@style\relax
+ \protected@edef\@glossary@default@style{#1}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% In case we have an old version of \styfmt{glossaries}:
+% \begin{macrocode}
+\ifdef\@glossary@default@style
+{}
+{%
+ \let\@glossary@default@style\relax
+}
+% \end{macrocode}
+%
+%\begin{macro}{\glslistdottedwidth}
+%If \cs{glslistdottedwidth} has been defined and is currently equal
+%to \verb|.5\hsize| then make the modification suggested in
+%\href{http://www.dickimaw-books.com/cgi-bin/bugtracker.cgi?action=view&key=92}{bug report \#92}
+% \begin{macrocode}
+\ifdef\glslistdottedwidth
+{%
+ \ifdim\glslistdottedwidth=.5\hsize
+ \setlength{\glslistdottedwidth}{-\dimexpr\maxdimen-1sp\relax}
+ \AtBeginDocument{%
+ \ifdim\glslistdottedwidth=-\dimexpr\maxdimen-1sp\relax
+ \setlength{\glslistdottedwidth}{.5\columnwidth}%
+ \fi
+ }%
+ \fi
+}
+{}%
+% \end{macrocode}
+%\end{macro}
+%
+%Similarly for \cs{glsdescwidth}:
+%\begin{macro}{\glsdescwidth}
+%\changes{0.5.3}{2015-12-09}{added}
+% \begin{macrocode}
+\ifdef\glsdescwidth
+{%
+ \ifdim\glsdescwidth=.6\hsize
+ \setlength{\glsdescwidth}{-\dimexpr\maxdimen-1sp\relax}
+ \AtBeginDocument{%
+ \ifdim\glsdescwidth=-\dimexpr\maxdimen-1sp\relax
+ \setlength{\glsdescwidth}{.6\columnwidth}%
+ \fi
+ }%
+ \fi
+}
+{}%
+% \end{macrocode}
+%\end{macro}
+%and for \cs{glspagelistwidth}:
+%\begin{macro}{\glspagelistwidth}
+%\changes{0.5.3}{2015-12-09}{added}
+% \begin{macrocode}
+\ifdef\glspagelistwidth
+{%
+ \ifdim\glspagelistwidth=.1\hsize
+ \setlength{\glspagelistwidth}{-\dimexpr\maxdimen-1sp\relax}
+ \AtBeginDocument{%
+ \ifdim\glspagelistwidth=-\dimexpr\maxdimen-1sp\relax
+ \setlength{\glspagelistwidth}{.1\columnwidth}%
+ \fi
+ }%
+ \fi
+}
+{}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossaryentrynumbers}
+% Has the \pkgopt{nonumberlist} option been used?
+%\changes{0.5.2}{2015-12-08}{added}
+% \begin{macrocode}
+\def\org@glossaryentrynumbers#1{#1\gls@save@numberlist{#1}}%
+\ifx\org@glossaryentrynumbers\glossaryentrynumbers
+ \glsnonumberlistfalse
+ \renewcommand*{\glossaryentrynumbers}[1]{%
+ \ifglsentryexists{\glscurrententrylabel}%
+ {%
+ \@glsxtrpreloctag
+ \GlsXtrFormatLocationList{#1}%
+ \@glsxtrpostloctag
+ \gls@save@numberlist{#1}%
+ }{}%
+ }%
+\else
+ \glsnonumberlisttrue
+ \renewcommand*{\glossaryentrynumbers}[1]{%
+ \ifglsentryexists{\glscurrententrylabel}%
+ {%
+ \gls@save@numberlist{#1}%
+ }{}%
+ }%
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrFormatLocationList}
+%\changes{0.5.2}{2015-12-08}{new}
+% Provide an easy interface to change the format of the location
+% list without removing the save number list stuff.
+% \begin{macrocode}
+\newcommand*{\GlsXtrFormatLocationList}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+% Sometimes users want to prefix the location list with
+% \qt{page}\slash\qt{pages}. The simplest way to determine if the
+% location list consists of a single location is to check for
+% instances of \cs{delimN} or \cs{delimR}, but this isn't so easy to
+% do as they might be embedded inside the argument of formatting
+% commands. With a bit of trickery we can find out by adjusting
+% \cs{delimN} and \cs{delimR} to set a flag and then save
+% information to the auxiliary file for the next run.
+%\begin{macro}{\GlsXtrEnablePreLocationTag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrEnablePreLocationTag}[2]{%
+ \let\@glsxtrpreloctag\@@glsxtrpreloctag
+ \let\@glsxtrpostloctag\@@glsxtrpostloctag
+ \renewcommand*{\@glsxtr@pagetag}{#1}%
+ \renewcommand*{\@glsxtr@pagestag}{#2}%
+ \renewcommand*{\@glsxtr@savepreloctag}[2]{%
+ \csgdef{@glsxtr@preloctag@##1}{##2}%
+ }%
+ \renewcommand*{\@glsxtr@doloctag}{%
+ \ifcsundef{@glsxtr@preloctag@\glscurrententrylabel}%
+ {%
+ \GlossariesWarning{Missing pre-location tag for `\glscurrententrylabel'.
+ Rerun required}%
+ }%
+ {%
+ \csuse{@glsxtr@preloctag@\glscurrententrylabel}%
+ }%
+ }%
+}
+\@onlypreamble\GlsXtrEnablePreLocationTag
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrpreloctag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@@glsxtrpreloctag}{%
+ \let\@glsxtr@org@delimN\delimN
+ \let\@glsxtr@org@delimR\delimR
+ \let\@glsxtr@org@glsignore\glsignore
+% \end{macrocode}
+% \cs{gdef} is required as the delimiters may occur inside a scope.
+% \begin{macrocode}
+ \gdef\@glsxtr@thisloctag{\@glsxtr@pagetag}%
+ \renewcommand*{\delimN}{%
+ \gdef\@glsxtr@thisloctag{\@glsxtr@pagestag}%
+ \@glsxtr@org@delimN}%
+ \renewcommand*{\delimR}{%
+ \gdef\@glsxtr@thisloctag{\@glsxtr@pagestag}%
+ \@glsxtr@org@delimR}%
+ \renewcommand*{\glsignore}[1]{%
+ \gdef\@glsxtr@thisloctag{\relax}%
+ \@glsxtr@org@glsignore{##1}}%
+ \@glsxtr@doloctag
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrpreloctag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtrpreloctag}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@pagetag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@pagetag}{}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@pagestag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@pagestag}{}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@@glsxtrpostloctag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@@glsxtrpostloctag}{%
+ \let\delimN\@glsxtr@org@delimN
+ \let\delimR\@glsxtr@org@delimR
+ \let\glsignore\@glsxtr@org@glsignore
+ \protected@write\@auxout{}%
+ {\string\@glsxtr@savepreloctag{\glscurrententrylabel}{\@glsxtr@thisloctag}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrpostloctag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtrpostloctag}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@preloctag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@savepreloctag}[2]{}
+\protected@write\@auxout{}{%
+ \string\providecommand\string\@glsxtr@savepreloctag[2]{}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@doloctag}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@doloctag}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\KV@printgloss@nonumberlist}
+% Modify the \gloskey[printglossary]{nonumberlist} key to
+% use \cs{GlsXtrFormatLocationList} (and also save the number list):
+%\changes{0.5.2}{2015-12-08}{added}
+% \begin{macrocode}
+\renewcommand*{\KV@printgloss@nonumberlist}[1]{%
+ \XKV@plfalse
+ \XKV@sttrue
+ \XKV@checkchoice[\XKV@resa]{#1}{true,false}%
+ {%
+ \csname glsnonumberlist\XKV@resa\endcsname
+ \ifglsnonumberlist
+ \def\glossaryentrynumbers##1{\gls@save@numberlist{##1}}%
+ \else
+ \def\glossaryentrynumbers##1{%
+ \@glsxtrpreloctag
+ \GlsXtrFormatLocationList{##1}%
+ \@glsxtrpostloctag
+ \gls@save@numberlist{##1}}%
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Entry Formatting, Hyperlinks and Indexing}
+%
+%\begin{macro}{\glsentryfmt}
+% Change default entry format. Use the generic format for regular
+% terms (that is, entries that have a category with the \catattr{regular}
+% attribute set) or non-regular terms without a short value and use the abbreviation format for non-regular
+% terms that have a short value. If further attributes need to be checked, then
+% \cs{glsentryfmt} will need redefining as appropriate (or use
+% \cs{defglsentryfmt}).
+%\changes{0.3}{2015-12-02}{added check for short}
+% The abbreviation format is set here for entries that have a short
+% form, even if they are regular entries to ensure the abbreviation
+% fonts are correct.
+%\changes{0.5.2}{2015-12-08}{moved \cs{glssetabbrvfmt} from
+%\cs{glsxtrabbrvfmt} to here}
+% \begin{macrocode}
+\renewcommand*{\glsentryfmt}{%
+ \ifglshasshort{\glslabel}{\glssetabbrvfmt{\glscategory{\glslabel}}}{}%
+ \glsifregular{\glslabel}%
+ {\glsxtrregularfont{\glsgenentryfmt}}%
+ {%
+ \ifglshasshort{\glslabel}%
+ {\glsxtrabbreviationfont{\glsxtrgenabbrvfmt}}%
+ {\glsxtrregularfont{\glsgenentryfmt}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrregularfont}
+%\changes{1.04}{2016-05-02}{new}
+% Font used for regular entries.
+% \begin{macrocode}
+\newcommand*{\glsxtrregularfont}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrabbreviationfont}
+%\changes{1.30}{2018-04-25}{new}
+% Font used for abbreviation entries.
+% \begin{macrocode}
+\newcommand*{\glsxtrabbreviationfont}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+% Commands like \cs{glsifplural} are only used by the \cs{gls}-like
+% commands in the \styfmt{glossaries} package, but it might be useful
+% for the postlink hook to know if the user has used, say,
+% \cs{glsfirst} or \cs{glsplural}. This can provide better
+% consistency with the formatting of the \cs{gls}-like commands,
+% even though they don't use \cs{glsentryfmt}.
+%
+%\begin{macro}{\@gls@field@link}
+% Redefine \cs{@gls@field@link} so that commands like \cs{glsfirst}
+% can setup \cs{glsxtrifwasfirstuse} etc to allow the postlink hook
+% to work better. This now has an optional argument that sets up the
+% defaults.
+%\changes{0.3}{2015-12-02}{added optional argument}
+% \begin{macrocode}
+\renewcommand{\@gls@field@link}[4][]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#2}{#3}{glslink}%
+ \glsdoifexists{#3}%
+ {%
+% \end{macrocode}
+%Save and restore the hyper setting (\cs{@gls@link} also does this,
+%but that's too late if the optional argument of \cs{@gls@field@link}
+%modifies it).
+% \begin{macrocode}
+ \let\glsxtrorg@ifKV@glslink@hyper\ifKV@glslink@hyper
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \def\glscustomtext{#4}%
+ \@glsxtr@field@linkdefs
+ #1%
+ \@gls@link[#2]{#3}{#4}%
+ \let\ifKV@glslink@hyper\glsxtrorg@ifKV@glslink@hyper
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%The commands \cs{gls}, \cs{Gls} etc don't use \cs{@gls@field@link},
+%so they need modifying as well to use \cs{@glsxtr@record}.
+%
+%\begin{macro}{\@gls@}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%Save the original definition and redefine.
+% \begin{macrocode}
+\let\@glsxtr@org@gls@\@gls@
+\def\@gls@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@gls@{#1}{#2}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glspl@}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%Save the original definition and redefine.
+% \begin{macrocode}
+\let\@glsxtr@org@glspl@\@glspl@
+\def\@glspl@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@glspl@{#1}{#2}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Gls@}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%Save the original definition and redefine.
+% \begin{macrocode}
+\let\@glsxtr@org@Gls@\@Gls@
+\def\@Gls@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@Gls@{#1}{#2}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glspl@}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%Save the original definition and redefine.
+% \begin{macrocode}
+\let\@glsxtr@org@Glspl@\@Glspl@
+\def\@Glspl@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@Glspl@{#1}{#2}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLS@}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%Save the original definition and redefine.
+% \begin{macrocode}
+\let\@glsxtr@org@GLS@\@GLS@
+\def\@GLS@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@GLS@{#1}{#2}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSpl@}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%\changes{1.10}{2016-12-17}{fixed bug caused by typo in command name}
+%Save the original definition and redefine.
+% \begin{macrocode}
+\let\@glsxtr@org@GLSpl@\@GLSpl@
+\def\@GLSpl@#1#2{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \@glsxtr@org@GLSpl@{#1}{#2}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsdisp}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%\changes{1.13}{2017-02-07}{removed \cs{@glsxtr@org@glsdisp}}
+%This is redefined to allow the recording on the first run.
+%Can't save and restore \cs{@glsdisp} since it has an optional
+%argument.
+% \begin{macrocode}
+\renewcommand*{\@glsdisp}[3][]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}{%
+ \let\do@gls@link@checkfirsthyper\@gls@link@checkfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \def\glscustomtext{#3}%
+ \def\glsinsert{}%
+ \def\@glo@text{\csname gls@\glstype @entryfmt\endcsname}%
+ \@gls@link[#1]{#2}{\@glo@text}%
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@@link@}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%Redefine to include \cs{@glsxtr@record}
+% \begin{macrocode}
+\renewcommand*{\@gls@@link}[3][]{%
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexistsordo{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\relax
+% \end{macrocode}
+%\changes{1.35}{2018-08-13}{initialise post-link hook commands}
+% Post-link hook commands need initialising.
+% \begin{macrocode}
+ \def\glscustomtext{#3}%
+ \@glsxtr@field@linkdefs
+ \@gls@link[#1]{#2}{#3}%
+ }%
+ {%
+ \glstextformat{#3}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrinitwrgloss}
+%\changes{1.14}{2017-04-18}{new}
+%Set the default if the \gloskey[glslink]{wrgloss} is omitted.
+% \begin{macrocode}
+\newcommand*{\glsxtrinitwrgloss}{%
+ \glsifattribute{\glslabel}{wrgloss}{after}%
+ {%
+ \glsxtrinitwrglossbeforefalse
+ }%
+ {%
+ \glsxtrinitwrglossbeforetrue
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifglsxtrwrglossbefore}
+%\changes{1.14}{2017-04-18}{new}
+%Conditional to determine if the indexing should be done before the
+%link text.
+% \begin{macrocode}
+\newif\ifglsxtrinitwrglossbefore
+\glsxtrinitwrglossbeforetrue
+% \end{macrocode}
+%\end{macro}
+%
+% Define a \gloskey[glslink]{wrgloss} key to determine whether to
+% write the glossary information before or after the link text.
+% \begin{macrocode}
+\define@choicekey{glslink}{wrgloss}%
+[\@glsxtr@wrglossval\@glsxtr@wrglossnr]%
+{before,after}%
+{%
+ \ifcase\@glsxtr@wrglossnr\relax
+ \glsxtrinitwrglossbeforetrue
+ \or
+ \glsxtrinitwrglossbeforefalse
+ \fi
+}
+% \end{macrocode}
+%\changes{1.19}{2017-09-09}{added \cs{glslink} option \texttt{thevalue}}
+% \begin{macrocode}
+\define@key{glslink}{thevalue}{\def\@glsxtr@thevalue{#1}}
+% \end{macrocode}
+%
+%\changes{1.19}{2017-09-09}{added \cs{glslink} option \texttt{theHvalue}}
+% \begin{macrocode}
+\define@key{glslink}{theHvalue}{\def\@glsxtr@theHvalue{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\ifglsxtr@hyperoutside}
+%\changes{1.21}{2017-11-03}{new}
+% Define a \gloskey[glslink]{hyperoutside} key to determine whether
+% \cs{hyperlink} should be outside \cs{glstextformat}.
+% \begin{macrocode}
+\define@boolkey{glslink}[glsxtr@]{hyperoutside}[true]{}
+\glsxtr@hyperoutsidetrue
+% \end{macrocode}
+%
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@local@textformat}
+%\changes{1.30}{2018-04-25}{new}
+%Provide a key to locally change the text format.
+% \begin{macrocode}
+\define@key{glslink}{textformat}{%
+ \ifcsdef{#1}
+ {%
+ \letcs{\@glsxtr@local@textformat}{#1}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{Unknown control sequence name `#1'}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{1.31}{2018-05-09}{added \texttt{prefix} key for \texttt{glslink}}
+% \begin{macrocode}
+\define@key{glslink}{prefix}{\def\glolinkprefix{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\glsxtrinithyperoutside}
+%\changes{1.21}{2017-11-03}{new}
+%Set the default if the \gloskey[glslink]{hyperoutside} is omitted.
+% \begin{macrocode}
+\newcommand*{\glsxtrinithyperoutside}{%
+ \glsifattribute{\glslabel}{hyperoutside}{false}%
+ {%
+ \glsxtr@hyperoutsidefalse
+ }%
+ {%
+ \glsxtr@hyperoutsidetrue
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@inc@linkcount}
+%\changes{1.26}{2018-01-05}{new}
+%Does nothing by default.
+% \begin{macrocode}
+\newcommand*{\glsxtr@inc@linkcount}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslinkpresetkeys}
+%\changes{1.26}{2018-01-05}{new}
+%User hook performed immediately before options are set.
+%Does nothing by default.
+% \begin{macrocode}
+\newcommand*{\glslinkpresetkeys}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrExpandedFmt}
+%\changes{1.30}{2018-04-25}{new}
+%Helper command that (protected) fully expands second argument and
+%then applies it to the first, which must be a command that takes a
+%single argument.
+% \begin{macrocode}
+\newrobustcmd*{\GlsXtrExpandedFmt}[2]{%
+ \protected@edef\@glsxtr@tmp{#2}%
+ \expandafter#1\expandafter{\@glsxtr@tmp}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@use@equation@counter@or}
+%\changes{1.37}{2018-11-30}{new}
+%If in a numbered equation, change the counter to \ctr{equation}.
+%This can be overridden by explicitly setting the counter in the
+%optional argument of commands like \cs{gls} and \cs{glslink}.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@use@equation@counter}{%
+ \@glsxtr@ifnum@mmode{\def\@gls@counter{equation}}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@do@autoadd}
+%\changes{1.37}{2018-11-30}{new}
+%If \cs{GlsXtrAutoAddOnFormat} is used, this will automatically use
+%\cs{glsadd}. It's therefore only used with \cs{@gls@link} not with
+%\cs{glsadd} otherwise it could trigger an infinite loop. The
+%argument indicates the key family (glslink or glossadd).
+% \begin{macrocode}
+\newcommand*{\glsxtr@do@autoadd}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrAutoAddOnFormat}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{GlsXtrAutoAddOnFormat}\oarg{label}\marg{format list}\marg{glsadd options}
+%\end{definition}
+%If an entry is indexed with the format set to one identified in the
+%comma-separated list, then automatically index it using \cs{glsadd}
+%with the given options, which may override the current options.
+%Scoping is needed to prevent leakage.
+% \begin{macrocode}
+\newcommand*{\GlsXtrAutoAddOnFormat}[3][\glslabel]{%
+ \renewcommand*{\glsxtr@do@autoadd}[1]{%
+ \begingroup
+ \protected@edef\@glsxtr@do@autoadd{%
+ \noexpand\ifstrequal{##1}{glslink}%
+ {%
+ \noexpand\DTLifinlist{\@glsnumberformat}{#2}{\noexpand\glsadd[format={\@glsnumberformat},#3]{#1}}{}%
+ }%
+ {}%
+ }%
+ \@glsxtr@do@autoadd
+ \endgroup
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@link}
+%\changes{1.14}{2017-04-18}{added redefinition}
+%Redefine to allow the indexing to be placed after the link text. By
+%default this is done before the link text to prevent problems that
+%can occur from the whatsit, but there may be times when the user
+%would like the indexing done afterwards even though it causes a
+%whatsit.
+% \begin{macrocode}
+\def\@gls@link[#1]#2#3{%
+ \leavevmode
+ \edef\glslabel{\glsdetoklabel{#2}}%
+ \def\@gls@link@opts{#1}%
+ \let\@gls@link@label\glslabel
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
+ \edef\glstype{\csname glo@\glslabel @type\endcsname}%
+ \let\org@ifKV@glslink@hyper\ifKV@glslink@hyper
+% \end{macrocode}
+%Save current value of \cs{glolinkprefix}:
+% \begin{macrocode}
+ \let\@glsxtr@org@glolinkprefix\glolinkprefix
+% \end{macrocode}
+%Initialise \cs{@glsxtr@local@textformat}
+% \begin{macrocode}
+ \let\@glsxtr@local@textformat\relax
+% \end{macrocode}
+% Initialise thevalue and theHvalue (v1.19).
+% \begin{macrocode}
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+% \end{macrocode}
+% Initialise when indexing should occur (new to v1.14).
+% \begin{macrocode}
+ \glsxtrinitwrgloss
+% \end{macrocode}
+% Initialise whether \cs{hyperlink} should be outside \cs{glstextformat}
+% (new to v1.21).
+% \begin{macrocode}
+ \glsxtrinithyperoutside
+% \end{macrocode}
+% Note that the default link options may
+% override \cs{glsxtrinitwrgloss}.
+% \begin{macrocode}
+ \@gls@setdefault@glslink@opts
+% \end{macrocode}
+%Increment link counter if enabled (new to v1.26).
+% \begin{macrocode}
+ \glsxtr@inc@linkcount
+% \end{macrocode}
+% Check if the \pkgopt{equations} option has been set (new to v1.37).
+% \begin{macrocode}
+ \if@glsxtr@equations
+ \@glsxtr@use@equation@counter
+ \fi
+% \end{macrocode}
+% As the original definition.
+% \begin{macrocode}
+ \do@glsdisablehyperinlist
+ \do@gls@link@checkfirsthyper
+% \end{macrocode}
+%User hook before options are set (new to v1.26):
+% \begin{macrocode}
+ \glslinkpresetkeys
+% \end{macrocode}
+%Set options.
+% \begin{macrocode}
+ \setkeys{glslink}{#1}%
+% \end{macrocode}
+%Perform auto add if set (new to v1.37)
+% \begin{macrocode}
+ \glsxtr@do@autoadd{glslink}%
+% \end{macrocode}
+%User hook after options are set:
+% \begin{macrocode}
+ \glslinkpostsetkeys
+% \end{macrocode}
+% Check \gloskey[glslink]{thevalue} and \gloskey[glslink]{theHvalue}
+% before saving (v1.19).
+% \begin{macrocode}
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \@gls@saveentrycounter
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \def\theHglsentrycounter{\@glsxtr@theHvalue}%
+ }%
+ \@gls@setsort{\glslabel}%
+% \end{macrocode}
+%Check if the \gloskey[glslink]{textformat} key has been used.
+% \begin{macrocode}
+ \ifx\@glsxtr@local@textformat\relax
+% \end{macrocode}
+% Check \catattr{textformat} attribute (new to v1.21).
+% \begin{macrocode}
+ \glshasattribute{\glslabel}{textformat}%
+ {%
+ \edef\@glsxtr@attrval{\glsgetattribute{\glslabel}{textformat}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@textformat}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in textformat attribute
+ for entry `\glslabel'. Reverting to default \string\glstextformat}%
+ \let\@glsxtr@textformat\glstextformat
+ }%
+ }%
+ {%
+ \let\@glsxtr@textformat\glstextformat
+ }%
+ \else
+ \let\@glsxtr@textformat\@glsxtr@local@textformat
+ \fi
+% \end{macrocode}
+% Do write if it should occur before the link text:
+% \begin{macrocode}
+ \ifglsxtrinitwrglossbefore
+ \@do@wrglossary{#2}%
+ \fi
+% \end{macrocode}
+% Do the link text:
+% \begin{macrocode}
+ \ifKV@glslink@hyper
+ \ifglsxtr@hyperoutside
+ \@glslink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}%
+ \else
+ \@glsxtr@textformat{\@glslink{\glolinkprefix\glslabel}{#3}}%
+ \fi
+ \else
+ \ifglsxtr@hyperoutside
+ \glsdonohyperlink{\glolinkprefix\glslabel}{\@glsxtr@textformat{#3}}%
+ \else
+ \@glsxtr@textformat{\glsdonohyperlink{\glolinkprefix\glslabel}{#3}}%
+ \fi
+ \fi
+% \end{macrocode}
+% Do write if it should occur after the link text:
+% \begin{macrocode}
+ \ifglsxtrinitwrglossbefore
+ \else
+ \@do@wrglossary{#2}%
+ \fi
+% \end{macrocode}
+%Restore original value of \cs{glolinkprefix}:
+% \begin{macrocode}
+ \let\glolinkprefix\@glsxtr@org@glolinkprefix
+% \end{macrocode}
+% As the original definition:
+% \begin{macrocode}
+ \let\ifKV@glslink@hyper\org@ifKV@glslink@hyper
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{1.14}{2017-04-18}{added \cs{glsadd} option \texttt{thevalue}}
+% \begin{macrocode}
+\define@key{glossadd}{thevalue}{\def\@glsxtr@thevalue{#1}}
+% \end{macrocode}
+%
+%\changes{1.14}{2017-04-18}{added \cs{glsadd} option \texttt{theHvalue}}
+% \begin{macrocode}
+\define@key{glossadd}{theHvalue}{\def\@glsxtr@theHvalue{#1}}
+% \end{macrocode}
+%
+%\begin{macro}{\glsaddpresetkeys}
+%\changes{1.30}{2018-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsaddpresetkeys}{}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\glsaddpostsetkeys}
+%\changes{1.30}{2018-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsaddpostsetkeys}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsadd}
+%\changes{1.08}{2016-12-13}{added \cs{@glsxtr@record}}
+%\changes{1.37}{2018-11-30}{added grouping}
+%Redefine to include \cs{@glsxtr@record} and suppress in headings
+% \begin{macrocode}
+\renewrobustcmd*{\glsadd}[2][]{%
+ \glsxtrifinmark
+ {}%
+ {%
+ \@gls@adjustmode
+ \begingroup
+ \@glsxtr@record{#1}{#2}{glossadd}%
+ \glsdoifexists{#2}%
+ {%
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \edef\@gls@counter{\csname glo@\glsdetoklabel{#2}@counter\endcsname}%
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+% \end{macrocode}
+%Implement any default settings (before options are set)
+%\changes{1.30}{2018-04-25}{added \cs{glsaddpresetkeys}}
+% \begin{macrocode}
+ \glsaddpresetkeys
+ \setkeys{glossadd}{#1}%
+% \end{macrocode}
+%Implement any default settings (after options are set)
+%\changes{1.30}{2018-04-25}{added \cs{glsaddpostsetkeys}}
+% \begin{macrocode}
+ \glsaddpostsetkeys
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \@gls@saveentrycounter
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \def\theHglsentrycounter{\@glsxtr@theHvalue}%
+ }%
+% \end{macrocode}
+% Define sort key if necessary (in case of \pkgopt[use]{sort}):
+%\changes{1.24}{2017-11-14}{added \cs{@gls@setsort}}
+% \begin{macrocode}
+ \@gls@setsort{#2}%
+% \end{macrocode}
+%Ensure that indexing occurs (since that's the point of
+%\cs{glsadd}). If indexing has been switched off by default, don't
+%want the setting to affect \cs{glsadd}. The ignored format
+%\cs{glsignore} can be used for selection without location, but the
+%indexing still needs to be performed.
+%\changes{1.37}{2018-11-30}{ensure that \cs{glsadd} performs indexing}
+% \begin{macrocode}
+ \KV@glslink@noindexfalse
+ \@@do@wrglossary{#2}%
+ }%
+ \endgroup
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaddeach}
+%\changes{1.31}{2018-05-09}{new}
+%Performs \cs{glsadd} for each entry listed in the mandatory
+%argument.
+% \begin{macrocode}
+\newrobustcmd{\glsaddeach}[2][]{%
+ \@for\@gls@thislabel:=#2\do{\glsadd[#1]{\@gls@thislabel}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@field@linkdefs}
+% Default settings for \cs{@gls@field@link}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@field@linkdefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Redefine the field link commands that need to modify the above.
+%Also add accessibility support and set the abbreviation styles if
+%required.
+%\begin{macro}{\glsxtrassignfieldfont}
+%\changes{1.04}{2016-05-02}{new}
+%\changes{1.08}{2016-12-13}{added check for existence}
+% \begin{macrocode}
+\newcommand*{\glsxtrassignfieldfont}[1]{%
+ \ifglsentryexists{#1}%
+ {%
+ \ifglshasshort{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsifregular{#1}%
+ {\let\@gls@field@font\glsxtrregularfont}%
+ {\let\@gls@field@font\@firstofone}%
+ }%
+ {%
+ \glsifnotregular{#1}%
+ {\let\@gls@field@font\@firstofone}%
+ {\let\@gls@field@font\glsxtrregularfont}%
+ }%
+ }%
+ {%
+ \let\@gls@field@font\@gobble
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glstext@}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@glstext@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesstext{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLStext@}
+% All uppercase version of \cs{glstext}.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@GLStext@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]{#1}{#2}%
+ {\@gls@field@font{\GLSaccesstext{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glstext@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@Glstext@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@secondofthree]{#1}{#2}%
+ {\@gls@field@font{\Glsaccesstext{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Version 1.07 ensures that \cs{glsfirst} etc honours the
+%\catattr{nohyperfirst} attribute. Allow a convenient way for the
+%user to revert to ignoring this attribute for these commands.
+%\begin{macro}{\glsxtrchecknohyperfirst}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrchecknohyperfirst}[1]{%
+ \glsifattribute{#1}{nohyperfirst}{true}{\KV@glslink@hyperfalse}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsfirst@}
+% No case changing version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@glsfirst@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+% \end{macrocode}
+% Ensure that \cs{glsfirst} honours the \catattr{nohyperfirst} attribute.
+%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
+% \begin{macrocode}
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \glsxtrchecknohyperfirst{#2}%
+ ]{#1}{#2}%
+ {\@gls@field@font{\glsaccessfirst{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsfirst@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@Glsfirst@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+% \end{macrocode}
+% Ensure that \cs{Glsfirst} honours the \catattr{nohyperfirst} attribute.
+%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
+% \begin{macrocode}
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}{\@gls@field@font{\Glsaccessfirst{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSfirst@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set abbreviation format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@GLSfirst@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+% \end{macrocode}
+% Ensure that \cs{GLSfirst} honours the \catattr{nohyperfirst} attribute.
+%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
+% \begin{macrocode}
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}{\@gls@field@font{\GLSaccessfirst{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsplural@}
+% No case changing version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.03}{2016-04-27}{fixed bug \cs{@glsplural@} should be redefined
+%not \cs{@glsplural}}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@glsplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glsifplural\@firstoftwo]{#1}{#2}%
+ {\@gls@field@font{\glsaccessplural{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsplural@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.03}{2016-04-27}{fixed bug \cs{@Glsplural@} should be redefined
+%not \cs{@Glsplural}}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@Glsplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ ]%
+ {#1}{#2}{\@gls@field@font{\Glsaccessplural{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSplural@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.03}{2016-04-27}{fixed bug \cs{@GLSplural@} should be redefined
+%not \cs{@GLSplural}}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@GLSplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ ]%
+ {#1}{#2}{\@gls@field@font{\GLSaccessplural{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsfirstplural@}
+% No case changing version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@glsfirstplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+% \end{macrocode}
+% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute.
+%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
+% \begin{macrocode}
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}{\@gls@field@font{\glsaccessfirstplural{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsfirstplural@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.03}{2016-04-27}{bug fix: misspelt cs name}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@Glsfirstplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+% \end{macrocode}
+% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute.
+%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
+% \begin{macrocode}
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}{\@gls@field@font{\Glsaccessfirstplural{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSfirstplural@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.03}{2016-04-27}{bug fix: misspelt cs name}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@GLSfirstplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+% \end{macrocode}
+% Ensure that \cs{glsfirstplural} honours the \catattr{nohyperfirst} attribute.
+%\changes{1.07}{2016-08-15}{added check for nohyperfirst attribute}
+% \begin{macrocode}
+ \@gls@field@link
+ [\let\glsxtrifwasfirstuse\@firstoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \glsxtrchecknohyperfirst{#2}%
+ ]%
+ {#1}{#2}%
+ {\@gls@field@font{\GLSaccessfirstplural{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsname@}
+% Redefine to use accessibility support.
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@glsname@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessname{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsname@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{add accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@Glsname@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}%
+ {\@gls@field@font{\Glsaccessname{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSname@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+% The abbreviation format may also need setting.
+% \begin{macrocode}
+\def\@GLSname@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}%
+ {\@gls@field@font{\GLSaccessname{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsdesc@}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+% \begin{macrocode}
+\def\@glsdesc@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccessdesc{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsdesc@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+% \begin{macrocode}
+\def\@Glsdesc@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}%
+ {\@gls@field@font{\Glsaccessdesc{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSdesc@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+% \begin{macrocode}
+\def\@GLSdesc@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\GLSaccessdesc{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsdescplural@}
+% No case-changing version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+% \begin{macrocode}
+\def\@glsdescplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\@gls@field@font{\glsaccessdescplural{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsdescplural@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+% \begin{macrocode}
+\def\@Glsdescplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\@gls@field@font{\Glsaccessdescplural{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSdescplural@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set abbreviation and regular format}
+% \begin{macrocode}
+\def\@GLSdesc@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@thirdoftwo
+ \let\glsifplural\@firstoftwo
+ ]%
+ {#1}{#2}%
+ {\@gls@field@font{\GLSaccessdescplural{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glssymbol@}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@glssymbol@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link{#1}{#2}{\@gls@field@font{\glsaccesssymbol{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glssymbol@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@Glssymbol@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsaccesssymbol{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSsymbol@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@GLSsymbol@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\GLSaccesssymbol{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glssymbolplural@}
+% No case-changing version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@glssymbolplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\@gls@field@font{\glsaccesssymbolplural{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glssymbolplural@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@Glssymbolplural@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ ]{#1}{#2}{\@gls@field@font{\Glsaccesssymbolplural{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSsymbolplural@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{0.5.2}{2015-12-08}{added accessibility support}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@GLSsymbol@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@thirdoftwo
+ \let\glsifplural\@firstoftwo
+ ]%
+ {#1}{#2}%
+ {\@gls@field@font{\GLSaccesssymbolplural{#2}\mfirstucMakeUppercase{#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsuseri@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@Glsuseri@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]{#1}{#2}%
+ {\@gls@field@font{\Glsentryuseri{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSuseri@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@GLSuseri@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseri{#2}#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsuserii@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@Glsuserii@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuserii{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSuserii@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@GLSuserii@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserii{#2}#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsuseriii@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@Glsuseriii@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuseriii{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSuseriii@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@GLSuseriii@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriii{#2}#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsuseriv@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@Glsuseriv@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuseriv{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSuseriv@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@GLSuseriv@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}%
+ {\@gls@field@font{\mfirstucMakeUppercase{\glsentryuseriv{#2}#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsuserv@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@Glsuserv@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuserv{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSuserv@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@GLSuserv@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuserv{#2}#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsuservi@}
+% First letter uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@Glsuservi@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link
+ [\let\glscapscase\@secondoftwo]%
+ {#1}{#2}{\@gls@field@font{\Glsentryuservi{#2}#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSuservi@}
+% All uppercase version.
+%\changes{0.3}{2015-12-02}{added redefinition}
+%\changes{1.04}{2016-05-02}{set regular format}
+% \begin{macrocode}
+\def\@GLSuservi@#1#2[#3]{%
+ \glsxtrassignfieldfont{#2}%
+ \@gls@field@link[\let\glscapscase\@thirdoftwo]%
+ {#1}{#2}{\@gls@field@font{\mfirstucMakeUppercase{\glsentryuservi{#2}#3}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Commands like \cs{acrshort} already set \cs{glsifplural}, but they
+%don't set \cs{glsxtrifwasfirstuse} so they need adjusting.
+%
+%\begin{macro}{\@acrshort}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% No case change.
+% \begin{macrocode}
+\def\@acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsaccessshort{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Acrshort}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% First letter uppercase.
+% \begin{macrocode}
+\def\@Acrshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsaccessshort{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@ACRshort}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% All uppercase.
+% \begin{macrocode}
+\def\@ACRshort#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsaccessshort{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@acrshortpl}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% No case change.
+% \begin{macrocode}
+\def\@acrshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsaccessshortpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Acrshortpl}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% First letter uppercase.
+% \begin{macrocode}
+\def\@Acrshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsaccessshortpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@ACRshortpl}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% All uppercase.
+% \begin{macrocode}
+\def\@ACRshortpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsaccessshortpl{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@acrlong}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% No case change.
+% \begin{macrocode}
+\def\@acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsaccesslong{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Acrlong}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% First letter uppercase.
+% \begin{macrocode}
+\def\@Acrlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsaccesslong{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@ACRlong}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% All uppercase.
+% \begin{macrocode}
+\def\@ACRlong#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsaccesslong{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@acrlongpl}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% No case change.
+% \begin{macrocode}
+\def\@acrlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\glsaccesslongpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Acrlongpl}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% First letter uppercase.
+% \begin{macrocode}
+\def\@Acrlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \acronymfont{\Glsaccesslongpl{#2}}#3%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@ACRlongpl}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% All uppercase.
+% \begin{macrocode}
+\def\@ACRlongpl#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\acronymfont{\glsaccesslongpl{#2}}#3}%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Modify \cs{@glsaddkey} so additional keys provided by the user can
+%be treated in a similar way.
+%\begin{macro}{\@glsaddkey}
+% \begin{macrocode}
+\renewcommand*{\@glsaddkey}[7]{%
+ \key@ifundefined{glossentry}{#1}%
+ {%
+ \define@key{glossentry}{#1}{\csdef{@glo@#1}{##1}}%
+ \appto\@gls@keymap{,{#1}{#1}}%
+ \appto\@newglossaryentryprehook{\csdef{@glo@#1}{#2}}%
+ \appto\@newglossaryentryposthook{%
+ \letcs{\@glo@tmp}{@glo@#1}%
+ \gls@assign@field{#2}{\@glo@label}{#1}{\@glo@tmp}%
+ }%
+ \newcommand*{#3}[1]{\@gls@entry@field{##1}{#1}}%
+ \newcommand*{#4}[1]{\@Gls@entry@field{##1}{#1}}%
+% \end{macrocode}
+% Now for the commands with links. First the version with no case
+% change (same as before):
+% \begin{macrocode}
+ \ifcsdef{@gls@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#5' as helper command
+ `\expandafter\string\csname @gls@user@#1@\endcsname' already
+ exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @gls@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@gls@user@#1@}{##1}{##2}}%
+ {\csuse{@gls@user@#1@}{##1}{##2}[]}}%
+ \csdef{@gls@user@#1@}##1##2[##3]{%
+ \@gls@field@link{##1}{##2}{#3{##2}##3}%
+ }%
+ \newrobustcmd*{#5}{%
+ \expandafter\@gls@hyp@opt\csname @gls@user@#1\endcsname}%
+ }%
+% \end{macrocode}
+% Next the version with the first letter converted to upper case
+% (modified):
+% \begin{macrocode}
+ \ifcsdef{@Gls@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#6' as helper command
+ `\expandafter\string\csname @Gls@user@#1@\endcsname' already
+ exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @Gls@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@Gls@user@#1@}{##1}{##2}}%
+ {\csuse{@Gls@user@#1@}{##1}{##2}[]}}%
+ \csdef{@Gls@user@#1@}##1##2[##3]{%
+ \@gls@field@link[\let\glscapscase\@secondofthree]%
+ {##1}{##2}{#4{##2}##3}%
+ }%
+ \newrobustcmd*{#6}{%
+ \expandafter\@gls@hyp@opt\csname @Gls@user@#1\endcsname}%
+ }%
+% \end{macrocode}
+% Finally the all caps version (modified):
+% \begin{macrocode}
+ \ifcsdef{@GLS@user@#1@}%
+ {%
+ \PackageError{glossaries}%
+ {Can't define `\string#7' as helper command
+ `\expandafter\string\csname @GLS@user@#1@\endcsname' already
+ exists}%
+ {}%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\expandafter
+ {\csname @GLS@user@#1\endcsname}[2][]{%
+ \new@ifnextchar[%
+ {\csuse{@GLS@user@#1@}{##1}{##2}}%
+ {\csuse{@GLS@user@#1@}{##1}{##2}[]}}%
+ \csdef{@GLS@user@#1@}##1##2[##3]{%
+ \@gls@field@link[\let\glscapscase\@thirdofthree]%
+ {##1}{##2}{\mfirstucMakeUppercase{#3{##2}##3}}%
+ }%
+ \newrobustcmd*{#7}{%
+ \expandafter\@gls@hyp@opt\csname @GLS@user@#1\endcsname}%
+ }%
+ }%
+ {%
+ \PackageError{glossaries-extra}{Key `#1' already exists}{}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@link@nocheckfirsthyper}
+% Old versions of \styfmt{glossaries} don't define
+% this, so provide it just in case it hasn't been defined.
+% \begin{macrocode}
+\providecommand*{\@gls@link@nocheckfirsthyper}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@link@checkfirsthyper}
+% Modify check to determine if the hyperlink should be automatically
+% suppressed, but save the original in case the acronyms are restored.
+% \begin{macrocode}
+\let\@glsxtr@org@checkfirsthyper\@gls@link@checkfirsthyper
+\renewcommand*{\@gls@link@checkfirsthyper}{%
+% \end{macrocode}
+% \cs{ifglsused} isn't useful in the post link hook as it's already
+% been unset by then, so define a command that can be used in the
+% post link hook. Since \cs{@gls@link@checkfirsthyper} is only used
+% by commands like \cs{gls} but not by other commands, this seems
+% the best place to put it to automatically set the value for the
+% commands that change the first use flag. The other commands should
+% set \cs{glsxtrifwasfirstuse} to \cs{@secondoftwo} (which is done
+% in \cs{@glsxtr@field@linkdefs}).
+% \begin{macrocode}
+ \ifglsused{\glslabel}%
+ {\let\glsxtrifwasfirstuse\@secondoftwo}
+ {\let\glsxtrifwasfirstuse\@firstoftwo}%
+% \end{macrocode}
+% Store the category label for convenience.
+% \begin{macrocode}
+ \edef\glscategorylabel{\glscategory{\glslabel}}%
+ \ifglsused{\glslabel}%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{nohypernext}{true}%
+ {\KV@glslink@hyperfalse}{}%
+ }%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{nohyperfirst}{true}%
+ {\KV@glslink@hyperfalse}{}%
+ }%
+ \glslinkcheckfirsthyperhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\do@glsdisablehyperinlist}
+% This command was introduced in \styfmt{glossaries} v4.19. If it
+% hasn't been defined, we're using an earlier version, in which case
+% the \catattr{nohyper} attribute can't be implemented.
+% \begin{macrocode}
+\ifdef\do@glsdisablehyperinlist
+{%
+ \let\@glsxtr@do@glsdisablehyperinlist\do@glsdisablehyperinlist
+ \renewcommand*{\do@glsdisablehyperinlist}{%
+ \@glsxtr@do@glsdisablehyperinlist
+ \glsifattribute{\glslabel}{nohyper}{true}{\KV@glslink@hyperfalse}{}%
+ }
+}
+{}
+% \end{macrocode}
+%\end{macro}
+%
+% Define a \gloskey[glslink]{noindex} key to prevent writing information to the
+% external file.
+% \begin{macrocode}
+\define@boolkey{glslink}{noindex}[true]{}
+\KV@glslink@noindexfalse
+% \end{macrocode}
+%
+%If \cs{@gls@setdefault@glslink@opts} has been defined
+%(\styfmt{glossaries} v4.20) use it to set the default keys in
+%\cs{@glslink}.
+%\begin{macro}{\@gls@setdefault@glslink@opts}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\ifdef\@gls@setdefault@glslink@opts
+{
+ \renewcommand*{\@gls@setdefault@glslink@opts}{%
+ \KV@glslink@noindexfalse
+ \@glsxtrsetaliasnoindex
+ }
+}
+{
+% \end{macrocode}
+% Not defined so prepend it to \cs{do@glsdisablehyperinlist} to
+% achieve the same effect.
+% \begin{macrocode}
+ \newcommand*{\@gls@setdefault@glslink@opts}{%
+ \KV@glslink@noindexfalse
+ \@glsxtrsetaliasnoindex
+ }
+ \preto\do@glsdisablehyperinlist{\@gls@setdefault@glslink@opts}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsetaliasnoindex}
+%\changes{1.12}{2017-02-03}{new}
+%\changes{1.13}{2017-02-07}{switched to \cs{providecommand}}
+%Allow user to hook into the alias noindex setting.
+%Default behaviour switches off indexing for aliases.
+%If the record option is on, this will have been defined to do
+%nothing. (bib2gls will deal with records for aliased entries.)
+% \begin{macrocode}
+\providecommand*{\glsxtrsetaliasnoindex}{%
+ \KV@glslink@noindextrue
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrsetaliasnoindex}
+%\changes{1.12}{2017-02-03}{new}
+%\changes{1.21}{2017-11-03}{changed to use \cs{glsxtrifhasfield} instead of
+%\cs{ifglshasfield}}
+% \begin{macrocode}
+\newcommand*{\@glsxtrsetaliasnoindex}{%
+ \glsxtrifhasfield{alias}{\glslabel}%
+ {%
+ \let\glsxtrindexaliased\@glsxtrindexaliased
+ \glsxtrsetaliasnoindex
+ \let\glsxtrindexaliased\@no@glsxtrindexaliased
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrindexaliased}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtrindexaliased}{%
+ \ifKV@glslink@noindex
+ \else
+ \begingroup
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \edef\@gls@counter{\csname glo@\glsdetoklabel{\glslabel}@counter\endcsname}%
+ \glsxtr@saveentrycounter
+ \@@do@wrglossary{\glsxtralias{\glslabel}}%
+ \endgroup
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@no@glsxtrindexaliased}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\@no@glsxtrindexaliased}{%
+ \PackageError{glossaries-extra}{\string\glsxtrindexaliased\space
+ not permitted outside definition of \string\glsxtrsetaliasnoindex}%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrindexaliased}
+%\changes{1.12}{2017-02-03}{new}
+%Provide a command to redirect alias indexing, but only allow it to
+%be used within \cs{glsxtrsetaliasnoindex}.
+% \begin{macrocode}
+\let\glsxtrindexaliased\@no@glsxtrindexaliased
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetDefaultGlsOpts}
+%\changes{0.5.4}{2015-12-15}{new}
+% Set the default options for \cs{glslink} etc.
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetDefaultGlsOpts}[1]{%
+ \renewcommand*{\@gls@setdefault@glslink@opts}{%
+ \setkeys{glslink}{#1}%
+ \@glsxtrsetaliasnoindex
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifindexing}
+% Provide user level command to access it in \cs{glswriteentry}.
+% \begin{macrocode}
+\newcommand*{\glsxtrifindexing}[2]{%
+ \ifKV@glslink@noindex #2\else #1\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glswriteentry}
+% Redefine to test for \catattr{indexonlyfirst} category attribute.
+% \begin{macrocode}
+\renewcommand*{\glswriteentry}[2]{%
+ \glsxtrifindexing
+ {%
+ \ifglsindexonlyfirst
+ \ifglsused{#1}
+ {\glsxtrdoautoindexname{#1}{dualindex}}%
+ {#2}%
+ \else
+ \glsifattribute{#1}{indexonlyfirst}{true}%
+ {%
+ \ifglsused{#1}%
+ {\glsxtrdoautoindexname{#1}{dualindex}}%
+ {#2}%
+ }%
+ {#2}%
+ \fi
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@do@@wrglossary}
+% Hook into glossary indexing command so that it can also use
+% \ics{index} at the same time if required and add user hook.
+% \begin{macrocode}
+\appto\@@do@@wrglossary{\@glsxtr@do@@wrindex
+ \glsxtrdowrglossaryhook{\@gls@label}%
+}
+% \end{macrocode}
+% (The label can be obtained from \cs{@gls@label} at this point.)
+%\end{macro}
+% Similarly for the \qt{noidx} version:
+%\begin{macro}{\gls@noidxglossary}
+% \begin{macrocode}
+\appto\gls@noidxglossary{\@glsxtr@do@@wrindex
+ \glsxtrdowrglossaryhook{\@gls@label}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@do@@wrindex}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@do@@wrindex}{%
+ \glsxtrdoautoindexname{\@gls@label}{dualindex}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdowrglossaryhook}
+% Allow user to hook into indexing code. (Always used by
+% \cs{glsadd}. Used by \cs{gls} when indexing, which may or may not occur
+% depending on the indexing settings.)
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrdowrglossaryhook}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@alt@hyp@opt}
+%\changes{0.5.4}{2015-12-15}{new}
+% Commands like \cs{gls} have a star or plus version. Provide a
+% third symbol that the user can adapt for convenience.
+% \begin{macrocode}
+\newcommand*{\@gls@alt@hyp@opt}[1]{%
+ \let\glslinkvar\@firstofthree
+ \let\@gls@hyp@opt@cs#1\relax
+ \@ifstar{\s@gls@hyp@opt}%
+ {\@ifnextchar+%
+ {\@firstoftwo{\p@gls@hyp@opt}}%
+ {%
+ \expandafter\@ifnextchar\@gls@alt@hyp@opt@char
+ {\@firstoftwo{\@alt@gls@hyp@opt}}%
+ {#1}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@alt@gls@hyp@opt}
+% User version
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@alt@gls@hyp@opt}[1][]{%
+ \let\glslinkvar\@firstofthree
+ \expandafter\@gls@hyp@opt@cs\expandafter[\@gls@alt@hyp@opt@keys,#1]}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@alt@hyp@opt@char}
+%\changes{0.5.4}{2015-12-15}{new}
+%Contains the character used as the command modifier.
+% \begin{macrocode}
+\newcommand*{\@gls@alt@hyp@opt@char}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@alt@hyp@opt@keys}
+%\changes{0.5.4}{2015-12-15}{new}
+%Contains the option list used as the command modifier.
+% \begin{macrocode}
+\newcommand*{\@gls@alt@hyp@opt@keys}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetAltModifier}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetAltModifier}[2]{%
+ \let\@gls@hyp@opt\@gls@alt@hyp@opt
+ \def\@gls@alt@hyp@opt@char{#1}%
+ \def\@gls@alt@hyp@opt@keys{#2}%
+ \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
+ {}%
+ {%
+% \end{macrocode}
+%Let \gls{bib2gls} know the modifier.
+%\changes{1.37}{2018-11-30}{write modifier to aux}
+% \begin{macrocode}
+ \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@altmodifier}[1]{}}%
+ \protected@write\@auxout{}{\string\@glsxtr@altmodifier{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@org@dohyperlink}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\let\glsxtr@org@dohyperlink\glsdohyperlink
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnavhyperlink}
+%\changes{1.21}{2017-11-03}{patched}
+%Now that \cs{glsdohyperlink} (used by \cs{@glslink}) references
+%\cs{glslabel} it's necessary to patch \cs{glsnavhyperlink} to
+%avoid using it (since \cs{glslabel} won't be defined). This means
+%temporarily redefining \cs{glsdohyperlink} to its original
+%definition.
+%
+%This command is provided by \sty{glossary-hypernav} so it may not
+%exist.
+% \begin{macrocode}
+\ifdef\glsnavhyperlink
+{
+ \renewcommand*{\glsnavhyperlink}[3][\@glo@type]{%
+ \edef\gls@grplabel{#2}\protected@edef\@gls@grptitle{#3}%
+% \end{macrocode}
+%Scope:
+% \begin{macrocode}
+ {%
+ \let\glsdohyperlink\glsxtr@org@dohyperlink
+ \@glslink{\glsnavhyperlinkname{#1}{#2}}{#3}%
+ }%
+ }%
+}
+{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdohyperlink}
+% Unpleasant complications can occur if the \gloskey{text} or
+% \gloskey{first} key etc contains \cs{gls}, particularly if there
+% are hyperlinks. To get around this problem, patch
+% \cs{glsdohyperlink} so that it temporarily makes \ics{gls} behave
+% like \ics{glstext}\oarg{hyper=false,noindex}. (This will be
+% overridden if the user explicitly cancels either of those options
+% in the optional argument of \cs{gls} or using the plus version.)
+% This also patches the short form commands like \cs{acrshort}
+% and \cs{glsxtrshort} to use \cs{glsentryshort} and, similarly, the
+% long form commands like \cs{acrlong} and \cs{glsxtrlong} to use
+% \cs{glsentrylong}. Added attribute check.
+%\changes{0.5.4}{2015-12-15}{added}
+% \begin{macrocode}
+\renewcommand*{\glsdohyperlink}[2]{%
+ \glshasattribute{\glslabel}{targeturl}%
+ {%
+ \glshasattribute{\glslabel}{targetname}%
+ {%
+ \glshasattribute{\glslabel}{targetcategory}%
+ {%
+ \hyperref{\glsgetattribute{\glslabel}{targeturl}}%
+ {\glsgetattribute{\glslabel}{targetcategory}}%
+ {\glsgetattribute{\glslabel}{targetname}}%
+ {{\glsxtrprotectlinks#2}}%
+ }%
+ {%
+ \hyperref{\glsgetattribute{\glslabel}{targeturl}}%
+ {}%
+ {\glsgetattribute{\glslabel}{targetname}}%
+ {{\glsxtrprotectlinks#2}}%
+ }%
+ }%
+ {%
+ \href{\glsgetattribute{\glslabel}{targeturl}}%
+ {{\glsxtrprotectlinks#2}}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+%Check for alias.
+%\changes{1.12}{2017-02-03}{added check for alias field}
+% \begin{macrocode}
+ \glsfieldfetch{\glslabel}{alias}{\gloaliaslabel}%
+ \ifdefvoid\gloaliaslabel
+ {%
+ \glsxtrhyperlink{#1}{{\glsxtrprotectlinks#2}}%
+ }%
+ {%
+% \end{macrocode}
+%Redirect link to the alias target.
+% \begin{macrocode}
+ \glsxtrhyperlink
+ {\glolinkprefix\glsdetoklabel{\gloaliaslabel}}%
+ {{\glsxtrprotectlinks#2}}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\glsxtrhyperlink}
+%\changes{1.19}{2017-09-09}{new}
+%Allows integration with the base \styfmt{glossaries} package's
+%\pkgopt[showtargets]{debug} option.
+% \begin{macrocode}
+\ifdef\@glsshowtarget
+{
+ \newcommand{\glsxtrhyperlink}[2]{%
+ \@glsshowtarget{#1}%
+ \hyperlink{#1}{#2}%
+ }%
+}
+{
+ \newcommand{\glsxtrhyperlink}[2]{\hyperlink{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdisablehyper}
+%\changes{1.14}{2017-04-18}{added redefinition}
+% Redefine to set \cs{glslabel} (to allow it to be picked up by
+% \cs{glsdohyperlink}). Also made it robust and added grouping to localise the
+% definition of \cs{glslabel}. The original internal command
+% {@glo@label} could probably be simply replaced with \cs{glslabel},
+% but it's retained in case its removal causes unexpected problems.
+%\changes{1.21}{2017-11-03}{added check for existence}
+% \begin{macrocode}
+\renewrobustcmd*{\glshyperlink}[2][\glsentrytext{\@glo@label}]{%
+ \glsdoifexists{#2}%
+ {%
+ \def\@glo@label{#2}%
+ {\edef\glslabel{#2}%
+ \@glslink{\glolinkprefix\glslabel}{#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdisablehyper}
+%\changes{0.5.4}{2015-12-15}{added}
+%\changes{1.21}{2017-11-03}{changed to use \cs{def} rather than \cs{let}}
+% Redefine in case we have an old version of \styfmt{glossaries}.
+%This now uses \cs{def} rather than \cs{let} to allow for
+%redefinitions of \cs{glsdonohyperlink}.
+% \begin{macrocode}
+\renewcommand{\glsdisablehyper}{%
+ \KV@glslink@hyperfalse
+ \def\@glslink{\glsdonohyperlink}%
+ \let\@glstarget\@secondoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsenablehyper}
+%\changes{1.21}{2017-11-03}{changed to use \cs{def} rather than \cs{let}}
+%This now uses \cs{def} rather than \cs{let} to allow for
+%redefinitions of \cs{glsdohypertarget} and \cs{glsdohyperlink}.
+% \begin{macrocode}
+\renewcommand{\glsenablehyper}{%
+ \KV@glslink@hypertrue
+ \def\@glslink{\glsdohyperlink}%
+ \def\@glstarget{\glsdohypertarget}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdonohyperlink}
+% This command was only introduced in \styfmt{glossaries} v4.20, so it may
+% not be defined (therefore use \cs{def}). For older \styfmt{glossaries} versions, this won't be
+% used if \sty{hyperref} hasn't been loaded, which means the
+% indexing will still take place. The generated text is scoped
+% (the link text in \cs{hyperlink} is also scoped, so it's
+% consistent).
+%\changes{0.5.4}{2015-12-15}{added}
+% \begin{macrocode}
+\def\glsdonohyperlink#1#2{{\glsxtrprotectlinks #2}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslink}
+% Reset \cs{@glslink} with patched versions:
+%\changes{1.21}{2017-11-03}{changed \cs{let} to \cs{def}}
+% \begin{macrocode}
+\ifcsundef{hyperlink}%
+{%
+ \def\@glslink{\glsdonohyperlink}
+}%
+{%
+ \def\@glslink{\glsdohyperlink}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrprotectlinks}
+%\changes{0.5.4}{2015-12-15}{new}
+% Make \cs{gls} (and variants) behave like the corresponding
+% \cs{glstext} (and variants) with hyperlinking and indexing off.
+% \begin{macrocode}
+\newcommand*{\glsxtrprotectlinks}{%
+ \KV@glslink@hyperfalse
+ \KV@glslink@noindextrue
+ \let\@gls@\@glsxtr@p@text@
+ \let\@Gls@\@Glsxtr@p@text@
+ \let\@GLS@\@GLSxtr@p@text@
+ \let\@glspl@\@glsxtr@p@plural@
+ \let\@Glspl@\@Glsxtr@p@plural@
+ \let\@GLSpl@\@GLSxtr@p@plural@
+ \let\@glsxtrshort\@glsxtr@p@short@
+ \let\@Glsxtrshort\@Glsxtr@p@short@
+ \let\@GLSxtrshort\@GLSxtr@p@short@
+ \let\@glsxtrlong\@glsxtr@p@long@
+ \let\@Glsxtrlong\@Glsxtr@p@long@
+ \let\@GLSxtrlong\@GLSxtr@p@long@
+ \let\@glsxtrshortpl\@glsxtr@p@shortpl@
+ \let\@Glsxtrshortpl\@Glsxtr@p@shortpl@
+ \let\@GLSxtrshortpl\@GLSxtr@p@shortpl@
+ \let\@glsxtrlongpl\@glsxtr@p@longpl@
+ \let\@Glsxtrlongpl\@Glsxtr@p@longpl@
+ \let\@GLSxtrlongpl\@GLSxtr@p@longpl@
+ \let\@acrshort\@glsxtr@p@acrshort@
+ \let\@Acrshort\@Glsxtr@p@acrshort@
+ \let\@ACRshort\@GLSxtr@p@acrshort@
+ \let\@acrshortpl\@glsxtr@p@acrshortpl@
+ \let\@Acrshortpl\@Glsxtr@p@acrshortpl@
+ \let\@ACRshortpl\@GLSxtr@p@acrshortpl@
+ \let\@acrlong\@glsxtr@p@acrlong@
+ \let\@Acrlong\@Glsxtr@p@acrlong@
+ \let\@ACRlong\@GLSxtr@p@acrlong@
+ \let\@acrlongpl\@glsxtr@p@acrlongpl@
+ \let\@Acrlongpl\@Glsxtr@p@acrlongpl@
+ \let\@ACRlongpl\@GLSxtr@p@acrlongpl@
+}
+% \end{macrocode}
+%\end{macro}
+%
+% These protected versions need grouping to prevent the label from
+% getting confused.
+%\begin{macro}{\@glsxtr@p@text@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@text@#1#2[#3]{{\@glstext@{#1}{#2}[#3]}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@text@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@text@#1#2[#3]{{\@Glstext@{#1}{#2}[#3]}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@text@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@text@#1#2[#3]{{\@GLStext@{#1}{#2}[#3]}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@plural@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@plural@#1#2[#3]{{\@glsplural@{#1}{#2}[#3]}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@plural@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@plural@#1#2[#3]{{\@Glsplural@{#1}{#2}[#3]}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@plural@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@plural@#1#2[#3]{{\@GLSplural@{#1}{#2}[#3]}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@short@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@short@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \glsabbrvfont{\glsentryshort{#2}}#3%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@short@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@short@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \glsabbrvfont{\Glsentryshort{#2}}#3%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@short@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@short@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshort{#2}}#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@shortpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@shortpl@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \glsabbrvfont{\glsentryshortpl{#2}}#3%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@shortpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@shortpl@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \glsabbrvfont{\Glsentryshortpl{#2}}#3%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@shortpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@shortpl@#1#2[#3]{%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \mfirstucMakeUppercase{\glsabbrvfont{\glsentryshortpl{#2}}#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@long@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@long@#1#2[#3]{{\glsentrylong{#2}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@long@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@long@#1#2[#3]{{\Glsentrylong{#2}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@long@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@long@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\glslongfont{\glsentrylong{#2}}#3}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@longpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@longpl@#1#2[#3]{{\glsentrylongpl{#2}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@longpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@longpl@#1#2[#3]{{\glslongfont{\Glsentrylongpl{#2}}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@longpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@longpl@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\glslongfont{\glsentrylongpl{#2}}#3}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@acrshort@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\glsentryshort{#2}}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@acrshort@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@acrshort@#1#2[#3]{{\acronymfont{\Glsentryshort{#2}}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@acrshort@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@acrshort@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\acronymfont{\glsentryshort{#2}}#3}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@acrshortpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\glsentryshortpl{#2}}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@acrshortpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@acrshortpl@#1#2[#3]{{\acronymfont{\Glsentryshortpl{#2}}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@acrshortpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@acrshortpl@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\acronymfont{\glsentryshortpl{#2}}#3}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@acrlong@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@acrlong@#1#2[#3]{{\glsentrylong{#2}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@acrlong@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@acrlong@#1#2[#3]{{\Glsentrylong{#2}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@acrlong@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@acrlong@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\glsentrylong{#2}#3}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@p@acrlongpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@glsxtr@p@acrlongpl@#1#2[#3]{{\glsentrylongpl{#2}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtr@p@acrlongpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@Glsxtr@p@acrlongpl@#1#2[#3]{{\Glsentrylongpl{#2}#3}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtr@p@acrlongpl@}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\def\@GLSxtr@p@acrlongpl@#1#2[#3]{%
+ {\mfirstucMakeUppercase{\glsentrylongpl{#2}#3}}}
+% \end{macrocode}
+%\end{macro}
+%
+%Commands to minimise conflict.
+%\begin{macro}{\@glsxtrp@opt}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtrp@opt}{hyper=false,noindex}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsetpopts}
+%\changes{1.07}{2016-08-15}{new}
+%Used in glossary to switch hyperlinks on for the \cs{glsxtrp} type
+%of commands.
+% \begin{macrocode}
+\newcommand*{\glsxtrsetpopts}[1]{%
+ \renewcommand*{\@glsxtrp@opt}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossxtrsetpopts}
+%\changes{1.07}{2016-08-15}{new}
+%Used in glossary to switch hyperlinks on for the \cs{glsxtrp} type
+%of commands.
+% \begin{macrocode}
+\newcommand*{\glossxtrsetpopts}{%
+ \glsxtrsetpopts{noindex}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtrp}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@@glsxtrp}[2]{%
+% \end{macrocode}
+%Add scope.
+% \begin{macrocode}
+ {%
+ \let\glspostlinkhook\relax
+ \csname#1\expandafter\endcsname\expandafter[\@glsxtrp@opt]{#2}[]%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrp}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrp}[2]{%
+ \ifcsdef{gls#1}%
+ {%
+ \@@glsxtrp{gls#1}{#2}%
+ }%
+ {%
+ \ifcsdef{glsxtr#1}%
+ {%
+ \@@glsxtrp{glsxtr#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{`#1' not recognised by
+ \string\glsxtrp}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@Glsxtrp}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@Glsxtrp}[2]{%
+ \ifcsdef{Gls#1}%
+ {%
+ \@@glsxtrp{Gls#1}{#2}%
+ }%
+ {%
+ \ifcsdef{Glsxtr#1}%
+ {%
+ \@@glsxtrp{Glsxtr#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{`#1' not recognised by
+ \string\Glsxtrp}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GLSxtrp}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@GLSxtrp}[2]{%
+ \ifcsdef{GLS#1}%
+ {%
+ \@@glsxtrp{GLS#1}{#2}%
+ }%
+ {%
+ \ifcsdef{GLSxtr#1}%
+ {%
+ \@@glsxtrp{GLSxtr#1}{#2}%
+ }%
+ {%
+ \PackageError{glossaries-extra}{`#1' not recognised by
+ \string\GLSxtrp}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@entry@p}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtr@headentry@p}[2]{%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \mfirstucMakeUppercase{\@gls@entry@field{#1}{#2}}%
+ }%
+ {%
+ \@gls@entry@field{#1}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrp}
+%\changes{1.07}{2016-08-15}{new}
+%Not robust as it needs to expand somewhat.
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand{\glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\texorpdfstring
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{glsxtrhead#1}%
+ {%
+ {\protect\csuse{glsxtrhead#1}{#2}}%
+ }%
+ {%
+ \glsxtr@headentry@p{#2}{#1}%
+ }%
+ }%
+ {%
+ \@glsxtrp{#1}{#2}%
+ }%
+ }%
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }
+}
+{
+ \newcommand{\glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{glsxtrhead#1}%
+ {%
+ {\protect\csuse{glsxtrhead#1}}%
+ }%
+ {%
+ \glsxtr@headentry@p{#2}{#1}%
+ }%
+ }%
+ {%
+ \@glsxtrp{#1}{#2}%
+ }%
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide short synonyms for the most common option.
+%\begin{macro}{\glsps}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsps}{\glsxtrp{short}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glspt}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newcommand*{\glspt}{\glsxtrp{text}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrp}
+%\changes{1.07}{2016-08-15}{new}
+%As above but use first letter upper case (but not for the
+%bookmarks, which can't process \cs{uppercase}).
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand{\Glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\texorpdfstring
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{Glsxtrhead#1}%
+ {%
+ {\protect\csuse{Glsxtrhead#1}{#2}}%
+ }%
+ {%
+ \protect\@Gls@entry@field{#2}{#1}%
+ }%
+ }%
+ {%
+ \@Glsxtrp{#1}{#2}%
+ }%
+ }%
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }
+}
+{
+ \newcommand{\Glsxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{Glsxtrhead#1}%
+ {%
+ {\protect\csuse{Glsxtrhead#1}}%
+ }%
+ {%
+ \protect\@Gls@entry@field{#2}{#1}%
+ }%
+ }%
+ {%
+ \@Glsxtrp{#1}{#2}%
+ }%
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrp}
+%\changes{1.07}{2016-08-15}{new}
+%As above but all upper case (but not for the
+%bookmarks, which can't process \cs{uppercase}).
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand{\GLSxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\texorpdfstring
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{GLSxtr#1}%
+ {%
+ {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}%
+ }%
+ {%
+ \protect\mfirstucMakeUppercase
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }%
+ {%
+ \@GLSxtrp{#1}{#2}%
+ }%
+ }%
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }
+}
+{
+ \newcommand{\GLSxtrp}[2]{%
+ \protect\NoCaseChange
+ {%
+ \protect\glsxtrifinmark
+ {%
+ \ifcsdef{GLSxtr#1}%
+ {%
+ {\protect\GLSxtrshort[noindex,hyper=false]{#1}[]}%
+ }%
+ {%
+ \protect\mfirstucMakeUppercase
+ {%
+ \protect\@gls@entry@field{#2}{#1}%
+ }%
+ }%
+ }%
+ {%
+ \@GLSxtrp{#1}{#2}%
+ }%
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\subsection{Entry Counting}
+%
+% The (use) entry counting mechanism from \styfmt{glossaries} is adjusted
+% here to work with category attributes. Provide a convenient
+% command to enable entry counting, set the \catattr{entrycount}
+% attribute for given categories and redefine \ics{gls} etc to
+% use \cs{cgls} instead. This form of entry counting is provided to
+% adjust the formatting if the number of times an entry has been
+% used (through commands that unset the first use flag) doesn't
+% exceeding the specified threshold. For link counting, see
+% \sectionref{sec:linkcount}.
+%
+% First adjust definitions of the unset and reset commands to
+% provide a hook, but changing the flag can cause problems in
+% certain situations, so to allow the normal unsetting to be
+% temporarily disabled, \cs{@glsunset} is let to
+% \cs{@glsxtr@unset}, which performs the actual unsetting through
+% \cs{@@glsunset} and then does the hook. This means that the
+% unsetting (and the hook) can switched off by redefining \cs{@glsunset}
+% and then switched back on again by changing the definition back to
+% \cs{@glsxtr@unset}.
+%
+%\begin{macro}{\@glsxtr@unset}
+%\changes{1.30}{2018-04-25}{new}
+% Global unset.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@unset}[1]{%
+ \@@glsunset{#1}%
+ \glsxtrpostunset{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsunset}
+% Global unset.
+% \begin{macrocode}
+\let\@glsunset\@glsxtr@unset
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrpostunset}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostunset}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide a command to store a list of labels that will need
+%unsetting.
+%\begin{macro}{\GlsXtrStartUnsetBuffering}
+%\changes{1.30}{2018-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrStartUnsetBuffering}{%
+ \@ifstar\s@GlsXtrStartUnsetBuffering\@GlsXtrStartUnsetBuffering
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrStartUnsetBuffering}
+%\changes{1.31}{2018-05-09}{new}
+%Unstarred version doesn't check for duplicates.
+% \begin{macrocode}
+\newcommand*{\@GlsXtrStartUnsetBuffering}{%
+ \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer
+ \def\@glsxtr@unset@buffer{}%
+ \let\@glsunset\@glsxtrbuffer@unset
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@GlsXtrStartUnsetBuffering}
+%\changes{1.31}{2018-05-09}{new}
+%Starred version checks for duplicates.
+% \begin{macrocode}
+\newcommand*{\s@GlsXtrStartUnsetBuffering}{%
+ \let\@glsxtr@org@unset@buffer\@glsxtr@unset@buffer
+ \def\@glsxtr@unset@buffer{}%
+ \let\@glsunset\@glsxtrbuffer@nodup@unset
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrbuffer@unset}
+%\changes{1.30}{2018-04-25}{new}
+%This must use a global change since \cs{gls} may have to be placed
+%inside \cs{mbox} (for example, with \sty{soul} commands).
+% \begin{macrocode}
+\newcommand*{\@glsxtrbuffer@unset}[1]{%
+ \listxadd\@glsxtr@unset@buffer{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrbuffer@nodup@unset}
+%\changes{1.31}{2018-05-09}{new}
+%Alternative version that avoids duplicates.
+%One level of expansion is performed on the argument in case it's a
+%control sequence containing the label. (Not using \cs{xifinlist} as
+%the added complexity might cause problems that the buffering is
+%trying to overcome.)
+% \begin{macrocode}
+\newcommand*{\@glsxtrbuffer@nodup@unset}[1]{%
+ \expandafter\ifinlist\expandafter{#1}{\@glsxtr@unset@buffer}{}%
+ {\listxadd\@glsxtr@unset@buffer{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrStopUnsetBuffering}
+%\changes{1.30}{2018-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrStopUnsetBuffering}{%
+ \@ifstar\s@GlsXtrStopUnsetBuffering\@GlsXtrStopUnsetBuffering
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@GlsXtrStopUnsetBuffering}
+%\changes{1.30}{2018-04-25}{new}
+%Unstarred form (global unset).
+% \begin{macrocode}
+\newcommand*{\@GlsXtrStopUnsetBuffering}{%
+ \let\@glsunset\@glsxtr@unset
+ \forlistloop\@glsunset\@glsxtr@unset@buffer
+ \let\@glsxtr@unset@buffer\@glsxtr@org@unset@buffer
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@GlsXtrStopUnsetBuffering}
+%\changes{1.30}{2018-04-25}{new}
+%Starred form (local unset).
+% \begin{macrocode}
+\newcommand*{\s@GlsXtrStopUnsetBuffering}{%
+ \forlistloop\@glslocalunset\@glsxtr@unset@buffer
+ \let\@glsunset\@glsxtr@unset
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrForUnsetBufferedList}
+%\changes{1.31}{2018-05-09}{new}
+%Iterate over labels stored in the current buffer.
+%The argument is the handler macro.
+% \begin{macrocode}
+\newcommand*{\GlsXtrForUnsetBufferedList}[1]{%
+ \forlistloop#1\@glsxtr@unset@buffer
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslocalunset}
+% Local unset.
+% \begin{macrocode}
+\renewcommand*{\@glslocalunset}[1]{%
+ \@@glslocalunset{#1}%
+ \glsxtrpostlocalunset{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrpostlocalunset}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlocalunset}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsreset}
+% Global reset.
+% \begin{macrocode}
+\renewcommand*{\@glsreset}[1]{%
+ \@@glsreset{#1}%
+ \glsxtrpostreset{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrpostreset}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostreset}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslocalreset}
+% Local reset.
+% \begin{macrocode}
+\renewcommand*{\@glslocalreset}[1]{%
+ \@@glslocalreset{#1}%
+ \glsxtrpostlocalreset{#1}%
+}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrpostlocalreset}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlocalreset}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslocalreseteach}
+%\changes{1.31}{2018-05-09}{new}
+%Locally reset a list of entries.
+% \begin{macrocode}
+\newcommand*{\glslocalreseteach}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \@for\@gls@thislabel:=#1\do{%
+ \glsdoifexists{\@gls@thislabel}%
+ {%
+ \@glslocalreset{\@gls@thislabel}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslocalunseteach}
+%Locally unset a list of entries.
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+\newcommand*{\glslocalunseteach}[1]{%
+ \gls@ifnotmeasuring
+ {%
+ \@for\@gls@thislabel:=#1\do{%
+ \glsdoifexists{\@gls@thislabel}%
+ {%
+ \@glslocalunset{\@gls@thislabel}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrEnableEntryCounting}
+% The first argument is the list of categories and the second
+% argument is the value of the \catattr{entrycount} attribute.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrEnableEntryCounting}[2]{%
+% \end{macrocode}
+% Enable entry counting:
+% \begin{macrocode}
+ \glsenableentrycount
+% \end{macrocode}
+% Redefine \cs{gls} etc:
+% \begin{macrocode}
+ \renewcommand*{\gls}{\cgls}%
+ \renewcommand*{\Gls}{\cGls}%
+ \renewcommand*{\glspl}{\cglspl}%
+ \renewcommand*{\Glspl}{\cGlspl}%
+ \renewcommand*{\GLS}{\cGLS}%
+ \renewcommand*{\GLSpl}{\cGLSpl}%
+% \end{macrocode}
+% Set the \catattr{entrycount} attribute:
+% \begin{macrocode}
+ \@glsxtr@setentrycountunsetattr{#1}{#2}%
+% \end{macrocode}
+% In case this command is used again:
+% \begin{macrocode}
+ \let\GlsXtrEnableEntryCounting\@glsxtr@setentrycountunsetattr
+ \renewcommand*{\GlsXtrEnableEntryUnitCounting}[3]{%
+ \PackageError{glossaries-extra}{\string\GlsXtrEnableEntryUnitCounting\space
+ can't be used with \string\GlsXtrEnableEntryCounting}%
+ {Use one or other but not both commands}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@setentrycountunsetattr}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@setentrycountunsetattr}[2]{%
+ \@for\@glsxtr@cat:=#1\do
+ {%
+ \ifdefempty{\@glsxtr@cat}{}%
+ {%
+ \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Redefine the entry counting commands to take into account the
+%\catattr{entrycount} attribute.
+%\begin{macro}{\glsenableentrycount}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\renewcommand*{\glsenableentrycount}{%
+% \end{macrocode}
+% Enable new fields:
+% \begin{macrocode}
+ \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defcounters}%
+% \end{macrocode}
+% Just in case the user has switched on the \pkgopt{docdef} option.
+% \begin{macrocode}
+ \renewcommand*{\gls@defdocnewglossaryentry}{%
+ \renewcommand*\newglossaryentry[2]{%
+ \PackageError{glossaries}{\string\newglossaryentry\space
+ may only be used in the preamble when entry counting has
+ been activated}{If you use \string\glsenableentrycount\space
+ you must place all entry definitions in the preamble not in
+ the document environment}%
+ }%
+ }%
+% \end{macrocode}
+% New commands to access new fields:
+% \begin{macrocode}
+ \newcommand*{\glsentrycurrcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@currcount}%
+ {0}{\@gls@entry@field{##1}{currcount}}%
+ }%
+ \newcommand*{\glsentryprevcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevcount}%
+ {0}{\@gls@entry@field{##1}{prevcount}}%
+ }%
+% \end{macrocode}
+% Adjust post unset and reset:
+% \begin{macrocode}
+ \let\@glsxtr@entrycount@org@unset\glsxtrpostunset
+ \renewcommand*{\glsxtrpostunset}[1]{%
+ \@glsxtr@entrycount@org@unset{##1}%
+ \@gls@increment@currcount{##1}%
+ }%
+ \let\@glsxtr@entrycount@org@localunset\glsxtrpostlocalunset
+ \renewcommand*{\glsxtrpostlocalunset}[1]{%
+ \@glsxtr@entrycount@org@localunset{##1}%
+ \@gls@local@increment@currcount{##1}%
+ }%
+ \let\@glsxtr@entrycount@org@reset\glsxtrpostreset
+ \renewcommand*{\glsxtrpostreset}[1]{%
+ \@glsxtr@entrycount@org@reset{##1}%
+ \csgdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ }%
+ \let\@glsxtr@entrycount@org@localreset\glsxtrpostlocalreset
+ \renewcommand*{\glsxtrpostlocalreset}[1]{%
+ \@glsxtr@entrycount@org@localreset{##1}%
+ \csdef{glo@\glsdetoklabel{##1}@currcount}{0}%
+ }%
+% \end{macrocode}
+% Modifications to take into account the attributes that govern
+% whether the entry should be unset.
+% \begin{macrocode}
+ \let\@cgls@\@@cgls@
+ \let\@cglspl@\@@cglspl@
+% \end{macrocode}
+%\changes{1.14}{2017-04-18}{fixed assignment of \cs{@cGls@}}
+% \begin{macrocode}
+ \let\@cGls@\@@cGls@
+ \let\@cGlspl@\@@cGlspl@
+ \let\@cGLS@\@@cGLS@
+ \let\@cGLSpl@\@@cGLSpl@
+% \end{macrocode}
+% The rest is as the original definition.
+% \begin{macrocode}
+ \AtEndDocument{\@gls@write@entrycounts}%
+ \renewcommand*{\@gls@entry@count}[2]{%
+ \csgdef{glo@\glsdetoklabel{##1}@prevcount}{##2}%
+ }%
+ \let\glsenableentrycount\relax
+ \renewcommand*{\glsenableentryunitcount}{%
+ \PackageError{glossaries-extra}{\string\glsenableentryunitcount\space
+ can't be used with \string\glsenableentrycount}%
+ {Use one or other but not both commands}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@write@entrycounts}
+% Modify this command so that it only writes the information for
+% entries with the \catattr{entrycount} attribute and issue
+% warning if no entries have this attribute set.
+% \begin{macrocode}
+\renewcommand*{\@gls@write@entrycounts}{%
+ \immediate\write\@auxout
+ {\string\providecommand*{\string\@gls@entry@count}[2]{}}%
+ \count@=0\relax
+ \forallglsentries{\@glsentry}{%
+ \glshasattribute{\@glsentry}{entrycount}%
+ {%
+ \ifglsused{\@glsentry}%
+ {%
+ \immediate\write\@auxout
+ {\string\@gls@entry@count{\@glsentry}{\glsentrycurrcount{\@glsentry}}}%
+ }%
+ {}%
+ \advance\count@ by \@ne
+ }%
+ {}%
+ }%
+ \ifnum\count@=0
+ \GlossariesExtraWarningNoLine{Entry counting has been enabled
+ \MessageBreak with \string\glsenableentrycount\space but the
+ \MessageBreak attribute `entrycount' hasn't
+ \MessageBreak been assigned to any of the defined
+ \MessageBreak entries}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifcounttrigger}
+%\begin{definition}
+%\cs{glsxtrifcounttrigger}\marg{label}\marg{trigger format}\marg{normal}
+%\end{definition}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifcounttrigger}[3]{%
+ \glshasattribute{#1}{entrycount}%
+ {%
+ \ifnum\glsentryprevcount{#1}>\glsgetattribute{#1}{entrycount}\relax
+ #3%
+ \else
+ #2%
+ \fi
+ }%
+ {#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Actual internal definitions of \cs{cgls} used when entry counting
+% is enabled.
+%
+%\begin{macro}{\@@cgls@}
+% \begin{macrocode}
+\def\@@cgls@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cglsformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@gls@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@cglspl@}
+% \begin{macrocode}
+\def\@@cglspl@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cglsplformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@cGls@}
+% \begin{macrocode}
+\def\@@cGls@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cGlsformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@Gls@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@cGlspl@}
+% \begin{macrocode}
+\def\@@cGlspl@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cGlsplformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@Glspl@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@cGLS@}
+% \begin{macrocode}
+\def\@@cGLS@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cGLSformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@GLS@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@cGLSpl@}
+% \begin{macrocode}
+\def\@@cGLSpl@#1#2[#3]{%
+ \glsxtrifcounttrigger{#2}%
+ {%
+ \cGLSplformat{#2}{#3}%
+ \glsunset{#2}%
+ }%
+ {%
+ \@GLSpl@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+% Remove default warnings from \cs{cgls} etc so that it can be used
+% interchangeable with \cs{gls} etc.
+%\begin{macro}{\@cgls@}
+% \begin{macrocode}
+\def\@cgls@#1#2[#3]{\@gls@{#1}{#2}[#3]}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@cGls@}
+% \begin{macrocode}
+\def\@cGls@#1#2[#3]{\@Gls@{#1}{#2}[#3]}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@cglspl@}
+% \begin{macrocode}
+\def\@cglspl@#1#2[#3]{\@glspl@{#1}{#2}[#3]}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@cGlspl@}
+% \begin{macrocode}
+\def\@cGlspl@#1#2[#3]{\@Glspl@{#1}{#2}[#3]}
+% \end{macrocode}
+%\end{macro}
+%
+% Add all upper case versions not provided by \styfmt{glossaries}.
+%\begin{macro}{\cGLS}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newrobustcmd*{\cGLS}{\@gls@hyp@opt\@cGLS}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@cGLS}
+%\changes{0.5}{2015-12-07}{new}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@cGLS}[2][]{%
+ \new@ifnextchar[{\@cGLS@{#1}{#2}}{\@cGLS@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@cGLS@}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\def\@cGLS@#1#2[#3]{\@GLS@{#1}{#2}[#3]}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGLSformat}
+%\changes{0.5}{2015-12-07}{new}
+% Format used by \cs{cGLS} if entry only used once on previous run.
+% The first argument is the label, the second argument is the insert
+% text.
+% \begin{macrocode}
+\newcommand*{\cGLSformat}[2]{%
+ \expandafter\mfirstucMakeUppercase\expandafter{\cglsformat{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGLSpl}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newrobustcmd*{\cGLSpl}{\@gls@hyp@opt\@cGLSpl}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@cGLSpl}
+%\changes{0.5}{2015-12-07}{new}
+% Defined the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\@cGLSpl}[2][]{%
+ \new@ifnextchar[{\@cGLSpl@{#1}{#2}}{\@cGLSpl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@cGLSpl@}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\def\@cGLSpl@#1#2[#3]{\@GLSpl@{#1}{#2}[#3]}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGLSplformat}
+%\changes{0.5}{2015-12-07}{new}
+% Format used by \cs{cGLSpl} if entry only used once on previous run.
+% The first argument is the label, the second argument is the insert
+% text.
+% \begin{macrocode}
+\newcommand*{\cGLSplformat}[2]{%
+ \expandafter\mfirstucMakeUppercase\expandafter{\cglsplformat{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Modify the trigger formats to check for the \catattr{regular} attribute.
+%\begin{macro}{\cglsformat}
+%\changes{0.5.4}{2015-12-15}{added}
+% \begin{macrocode}
+\renewcommand*{\cglsformat}[2]{%
+ \glsifregular{#1}
+ {\glsentryfirst{#1}}%
+ {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGlsformat}
+%\changes{0.5.4}{2015-12-15}{added}
+% \begin{macrocode}
+\renewcommand*{\cGlsformat}[2]{%
+ \glsifregular{#1}
+ {\Glsentryfirst{#1}}%
+ {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cglsplformat}
+%\changes{0.5.4}{2015-12-15}{added}
+% \begin{macrocode}
+\renewcommand*{\cglsplformat}[2]{%
+ \glsifregular{#1}
+ {\glsentryfirstplural{#1}}%
+ {\ifglshaslong{#1}{\glsentrylongpl{#1}}{\glsentryfirstplural{#1}}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\cGlsplformat}
+%\changes{0.5.4}{2015-12-15}{added}
+% \begin{macrocode}
+\renewcommand*{\cGlsplformat}[2]{%
+ \glsifregular{#1}
+ {\Glsentryfirstplural{#1}}%
+ {\ifglshaslong{#1}{\Glsentrylongpl{#1}}{\Glsentryfirstplural{#1}}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%New code similar to above for unit counting.
+%
+%\begin{macro}{\@@newglossaryentry@defunitcounters}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@@newglossaryentry@defunitcounters}{%
+ \edef\@glo@countunit{\csuse{@glsxtr@categoryattr@@\@glo@category @unitcount}}%
+ \ifdefvoid\@glo@countunit
+ {}%
+ {%
+ \@glsxtr@ifunitcounter{\@glo@countunit}%
+ {}%
+ {\expandafter\@glsxtr@addunitcounter\expandafter{\@glo@countunit}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@unitcountlist}
+%\changes{0.5.4}{2015-12-15}{new}
+% List to keep track of which counters are being used by the entry
+% unit count facility.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@unitcountlist}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@addunitcounter}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@addunitcounter}[1]{%
+ \listadd{\@glsxtr@unitcountlist}{#1}%
+ \ifcsundef{glsxtr@theunit@#1}
+ {%
+ \ifcsdef{theH#1}%
+ {\csdef{glsxtr@theunit@#1}{\csuse{theH#1}}}%
+ {\csdef{glsxtr@theunit@#1}{\csuse{the#1}}}%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@ifunitcounter}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@ifunitcounter}[3]{%
+ \xifinlist{#1}{\@glsxtr@unitcountlist}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@currentunitcount}
+% \begin{macrocode}
+\newcommand*\@glsxtr@currentunitcount[1]{%
+ glo@\glsdetoklabel{#1}@currunit@\glsgetattribute{#1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@previousunitcount}
+% \begin{macrocode}
+\newcommand*\@glsxtr@previousunitcount[1]{%
+ glo@\glsdetoklabel{#1}@prevunit@\glsgetattribute{#1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@increment@currunitcount}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@increment@currunitcount}[1]{%
+ \glshasattribute{#1}{unitcount}%
+ {%
+ \edef\@glsxtr@csname{\@glsxtr@currentunitcount{#1}}%
+ \ifcsundef{\@glsxtr@csname}%
+ {%
+ \csgdef{\@glsxtr@csname}{1}%
+ \listcsxadd
+ {glo@\glsdetoklabel{#1}@unitlist}%
+ {\glsgetattribute{#1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}%
+ }%
+ }%
+ {%
+ \csxdef{\@glsxtr@csname}%
+ {\number\numexpr\csname\@glsxtr@csname\endcsname+1}%
+ }%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@local@increment@currunitcount}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@local@increment@currunitcount}[1]{%
+ \glshasattribute{#1}{unitcount}%
+ {%
+ \edef\@glsxtr@csname{\@glsxtr@currentunitcount{#1}}%
+ \ifcsundef{\@glsxtr@csname}%
+ {%
+ \csdef{\@glsxtr@csname}{1}%
+ \listcseadd
+ {glo@\glsdetoklabel{#1}@unitlist}%
+ {\glsgetattribute{#1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{#1}{unitcount}}%
+ }%
+ }%
+ {%
+ \csedef{\@glsxtr@csname}%
+ {\number\numexpr\csname\@glsxtr@csname\endcsname+1}%
+ }%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@currunitcount}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@currunitcount}[2]{%
+ \ifcsundef
+ {glo@\glsdetoklabel{#1}@currunit@#2}%
+ {0}%
+ {\csuse{glo@\glsdetoklabel{#1}@currunit@#2}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@prevunitcount}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@prevunitcount}[2]{%
+ \ifcsundef
+ {glo@\glsdetoklabel{#1}@prevunit@#2}%
+ {0}%
+ {\csuse{glo@\glsdetoklabel{#1}@prevunit@#2}}%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsenableentryunitcount}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsenableentryunitcount}{%
+% \end{macrocode}
+% Enable new fields:
+% \begin{macrocode}
+ \appto\@newglossaryentry@defcounters{\@@newglossaryentry@defunitcounters}%
+% \end{macrocode}
+% Just in case the user has switched on the \pkgopt{docdef} option.
+% \begin{macrocode}
+ \renewcommand*{\gls@defdocnewglossaryentry}{%
+ \renewcommand*\newglossaryentry[2]{%
+ \PackageError{glossaries}{\string\newglossaryentry\space
+ may only be used in the preamble when entry counting has
+ been activated}{If you use \string\glsenableentryunitcount\space
+ you must place all entry definitions in the preamble not in
+ the document environment}%
+ }%
+ }%
+% \end{macrocode}
+% New commands to access new fields:
+% \begin{macrocode}
+ \newcommand*{\glsentrycurrcount}[1]{%
+ \@glsxtr@currunitcount{##1}{\glsgetattribute{##1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{##1}{unitcount}}}%
+ }%
+ \newcommand*{\glsentryprevcount}[1]{%
+ \@glsxtr@prevunitcount{##1}{\glsgetattribute{##1}{unitcount}.%
+ \csuse{glsxtr@theunit@\glsgetattribute{##1}{unitcount}}}%
+ }%
+% \end{macrocode}
+% Access total count:
+% \begin{macrocode}
+ \newcommand*{\glsentryprevtotalcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}%
+ {0}%
+ {%
+ \number\csuse{glo@\glsdetoklabel{##1}@prevunittotal}
+ }%
+ }%
+% \end{macrocode}
+% Access max value:
+% \begin{macrocode}
+ \newcommand*{\glsentryprevmaxcount}[1]{%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}%
+ {0}%
+ {%
+ \number\csuse{glo@\glsdetoklabel{##1}@prevunitmax}
+ }%
+ }%
+% \end{macrocode}
+% Adjust post unset and reset:
+% \begin{macrocode}
+ \let\@glsxtr@entryunitcount@org@unset\glsxtrpostunset
+ \renewcommand*{\glsxtrpostunset}[1]{%
+ \@glsxtr@entryunitcount@org@unset{##1}%
+ \@gls@increment@currunitcount{##1}%
+ }%
+ \let\@glsxtr@entryunitcount@org@localunset\glsxtrpostlocalunset
+ \renewcommand*{\glsxtrpostlocalunset}[1]{%
+ \@glsxtr@entryunitcount@org@localunset{##1}%
+ \@gls@local@increment@currunitcount{##1}%
+ }%
+ \let\@glsxtr@entryunitcount@org@reset\glsxtrpostreset
+ \renewcommand*{\glsxtrpostreset}[1]{%
+ \glshasattribute{##1}{unitcount}%
+ {%
+ \edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}%
+ \ifcsundef{\@glsxtr@csname}%
+ {}%
+ {\csgdef{\@glsxtr@csname}{0}}%
+ }%
+ {}%
+ }%
+ \let\@glsxtr@entryunitcount@org@localreset\glsxtrpostlocalreset
+ \renewcommand*{\glsxtrpostlocalreset}[1]{%
+ \@glsxtr@entryunitcount@org@localreset{##1}%
+ \glshasattribute{##1}{unitcount}%
+ {%
+ \edef\@glsxtr@csname{\@glsxtr@currentunitcount{##1}}%
+ \ifcsundef{\@glsxtr@csname}%
+ {}%
+ {\csdef{\@glsxtr@csname}{0}}%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% Modifications to take into account the attributes that govern
+% whether the entry should be unset.
+% \begin{macrocode}
+ \let\@cgls@\@@cgls@
+ \let\@cglspl@\@@cglspl@
+% \end{macrocode}
+%\changes{1.14}{2017-04-18}{fixed assignment of \cs{@cGls@}}
+% \begin{macrocode}
+ \let\@cGls@\@@cGls@
+ \let\@cGlspl@\@@cGlspl@
+ \let\@cGLS@\@@cGLS@
+ \let\@cGLSpl@\@@cGLSpl@
+% \end{macrocode}
+% Write information to the aux file.
+% \begin{macrocode}
+ \AtEndDocument{\@gls@write@entryunitcounts}%
+ \renewcommand*{\@gls@entry@unitcount}[3]{%
+ \csgdef{glo@\glsdetoklabel{##1}@prevunit@##3}{##2}%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevunittotal}%
+ {\csgdef{glo@\glsdetoklabel{##1}@prevunittotal}{##2}}%
+ {%
+ \csxdef{glo@\glsdetoklabel{##1}@prevunittotal}{
+ \number\numexpr\csuse{glo@\glsdetoklabel{##1}@prevunittotal}+##2}%
+ }%
+ \ifcsundef{glo@\glsdetoklabel{##1}@prevunitmax}%
+ {\csgdef{glo@\glsdetoklabel{##1}@prevunitmax}{##2}}%
+ {%
+ \ifnum\csuse{glo@\glsdetoklabel{##1}@prevunitmax}<##2
+ \csgdef{glo@\glsdetoklabel{##1}@prevunitmax}{##2}%
+ \fi
+ }%
+ }%
+ \let\glsenableentryunitcount\relax
+ \renewcommand*{\glsenableentrycount}{%
+ \PackageError{glossaries-extra}{\string\glsenableentrycount\space
+ can't be used with \string\glsenableentryunitcount}%
+ {Use one or other but not both commands}%
+ }%
+}
+\@onlypreamble\glsenableentryunitcount
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@entry@unitcount}
+% \begin{macrocode}
+\newcommand*{\@gls@entry@unitcount}[3]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@write@entryunitcounts@do}
+% \begin{macrocode}
+\newcommand*{\@gls@write@entryunitcounts@do}[1]{%
+ \immediate\write\@auxout
+ {\string\@gls@entry@unitcount
+ {\@glsentry}%
+ {\@glsxtr@currunitcount{\@glsentry}{#1}%
+ }%
+ {#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@write@entryunitcounts}
+% \begin{macrocode}
+\newcommand*{\@gls@write@entryunitcounts}{%
+ \immediate\write\@auxout
+ {\string\providecommand*{\string\@gls@entry@unitcount}[3]{}}%
+ \count@=0\relax
+ \forallglsentries{\@glsentry}{%
+ \glshasattribute{\@glsentry}{unitcount}%
+ {%
+ \ifglsused{\@glsentry}%
+ {%
+ \forlistcsloop
+ {\@gls@write@entryunitcounts@do}%
+ {glo@\glsdetoklabel{\@glsentry}@unitlist}%
+ }%
+ {}%
+ \advance\count@ by \@ne
+ }%
+ {}%
+ }%
+ \ifnum\count@=0
+ \GlossariesExtraWarningNoLine{Entry counting has been enabled
+ \MessageBreak with \string\glsenableentryunitcount\space but the
+ \MessageBreak attribute `unitcount' hasn't
+ \MessageBreak been assigned to any of the defined
+ \MessageBreak entries}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrEnableEntryUnitCounting}
+% The first argument is the list of categories, the second
+% argument is the value of the \catattr{entrycount} attribute
+% and the third is the counter name.
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrEnableEntryUnitCounting}[3]{%
+% \end{macrocode}
+% Enable entry counting:
+% \begin{macrocode}
+ \glsenableentryunitcount
+% \end{macrocode}
+% Redefine \cs{gls} etc:
+% \begin{macrocode}
+ \renewcommand*{\gls}{\cgls}%
+ \renewcommand*{\Gls}{\cGls}%
+ \renewcommand*{\glspl}{\cglspl}%
+ \renewcommand*{\Glspl}{\cGlspl}%
+ \renewcommand*{\GLS}{\cGLS}%
+ \renewcommand*{\GLSpl}{\cGLSpl}%
+% \end{macrocode}
+% Set the \catattr{entrycount} attribute:
+% \begin{macrocode}
+ \@glsxtr@setentryunitcountunsetattr{#1}{#2}{#3}%
+% \end{macrocode}
+% In case this command is used again:
+% \begin{macrocode}
+ \let\GlsXtrEnableEntryUnitCounting\@glsxtr@setentryunitcountunsetattr
+ \renewcommand*{\GlsXtrEnableEntryCounting}[2]{%
+ \PackageError{glossaries-extra}{\string\GlsXtrEnableEntryCounting\space
+ can't be used with \string\GlsXtrEnableEntryUnitCounting}%
+ {Use one or other but not both commands}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@setentryunitcountunsetattr}
+%\changes{0.5.4}{2015-12-15}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@setentryunitcountunsetattr}[3]{%
+ \@for\@glsxtr@cat:=#1\do
+ {%
+ \ifdefempty{\@glsxtr@cat}{}%
+ {%
+ \glssetcategoryattribute{\@glsxtr@cat}{entrycount}{#2}%
+ \glssetcategoryattribute{\@glsxtr@cat}{unitcount}{#3}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\subsection{Acronym Modifications}
+% It's more consistent to use the abbreviation code for acronyms,
+% but make some adjustments to allow for continued use of the
+% \styfmt{glossaries} package's custom acronym format. (For example,
+% user may already have defined some acronym styles with
+% \cs{newacronymstyle} which they would like to continue to use.)
+% The original \styfmt{glossaries} acronym code can be restored
+% with \cs{RestoreAcronyms}, but adjust \cs{SetGenericNewAcronym}
+% so that \cs{newacronym} adds the category.
+%
+%\begin{macro}{\SetGenericNewAcronym}
+% \begin{macrocode}
+\renewcommand*{\SetGenericNewAcronym}{%
+ \let\@Gls@entryname\@Gls@acrentryname
+ \renewcommand{\newacronym}[4][]{%
+ \ifdefempty{\@glsacronymlists}%
+ {%
+ \def\@glo@type{\acronymtype}%
+ \setkeys{glossentry}{##1}%
+ \DeclareAcronymList{\@glo@type}%
+ }%
+ {}%
+ \glskeylisttok{##1}%
+ \glslabeltok{##2}%
+ \glsshorttok{##3}%
+ \glslongtok{##4}%
+ \newacronymhook
+ \protected@edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\acronymtype,%
+ name={\expandonce{\acronymentry{##2}}},%
+ sort={\acronymsort{\the\glsshorttok}{\the\glslongtok}},%
+ text={\the\glsshorttok},%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshorttok\noexpand\acrpluralsuffix},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongtok\noexpand\acrpluralsuffix},%
+ category=acronym,
+ \GenericAcronymFields,%
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+ }%
+ \renewcommand*{\acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\genacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullfmt}[3]{%
+ \glslink[##1]{##2}{\Genacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\genacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\Acrfullplfmt}[3]{%
+ \glslink[##1]{##2}{\Genplacrfullformat{##2}{##3}}}%
+ \renewcommand*{\ACRfullplfmt}[3]{%
+ \glslink[##1]{##2}{%
+ \mfirstucMakeUppercase{\genplacrfullformat{##2}{##3}}}}%
+ \renewcommand*{\glsentryfull}[1]{\genacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfull}[1]{\Genacrfullformat{##1}{}}%
+ \renewcommand*{\glsentryfullpl}[1]{\genplacrfullformat{##1}{}}%
+ \renewcommand*{\Glsentryfullpl}[1]{\Genplacrfullformat{##1}{}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% This will cause a problem for glossaries that contain a mixture of
+% acronyms and abbreviations, so redefine \cs{newacronym} to use the
+% new abbreviation interface.
+%
+% First save the original definitions:
+% \begin{macrocode}
+\let\@glsxtr@org@setacronymstyle\setacronymstyle
+\let\@glsxtr@org@newacronymstyle\newacronymstyle
+% \end{macrocode}
+%
+%\begin{macro}{\MakeAcronymsAbbreviations}
+% Make acronyms use the same interface as abbreviations.
+% Note that \cs{newacronymstyle} has a different implementation to
+% \cs{newabbrevationstyle} so disable \cs{newacronymstyle} and
+% \cs{setacronymstyle}.
+%\changes{0.4}{2015-12-03}{set the default type to \cs{acronymtype}}
+%\changes{0.5.4}{2015-12-15}{now disables \cs{setacronymstyle}}
+% \begin{macrocode}
+\newcommand*{\MakeAcronymsAbbreviations}{%
+ \renewcommand*{\newacronym}[4][]{%
+ \glsxtr@newabbreviation{type=\acronymtype,category=acronym,##1}{##2}{##3}{##4}%
+ }%
+ \renewcommand*{\firstacronymfont}[1]{\glsfirstabbrvfont{##1}}%
+ \renewcommand*{\acronymfont}[1]{\glsabbrvfont{##1}}%
+ \renewcommand*{\setacronymstyle}[1]{%
+ \PackageError{glossaries-extra}{\string\setacronymstyle{##1}
+ unavailable.
+ Use \string\setabbreviationstyle\space instead.
+ The original acronym interface can be restored with
+ \string\RestoreAcronyms}{}%
+ }%
+ \renewcommand*{\newacronymstyle}[1]{%
+ \GlossariesExtraWarning{New acronym style `##1' won't be
+ available unless you restore the original acronym interface with
+ \string\RestoreAcronyms}%
+ \@glsxtr@org@newacronymstyle{##1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Switch acronyms to abbreviations:
+% \begin{macrocode}
+\MakeAcronymsAbbreviations
+% \end{macrocode}
+%
+%\begin{macro}{\RestoreAcronyms}
+% Restore acronyms to \styfmt{glossaries} interface.
+% \begin{macrocode}
+\newcommand*{\RestoreAcronyms}{%
+ \SetGenericNewAcronym
+ \renewcommand{\firstacronymfont}[1]{\acronymfont{##1}}%
+ \renewcommand{\acronymfont}[1]{##1}%
+ \let\setacronymstyle\@glsxtr@org@setacronymstyle
+ \let\newacronymstyle\@glsxtr@org@newacronymstyle
+% \end{macrocode}
+%\changes{1.07}{2016-08-15}{modified \cs{@gls@link@checkfirsthyper} to set
+%\cs{glsxtrifwasfirstuse}}
+% Need to restore the original definition of \cs{@gls@link@checkfirsthyper}
+% but \cs{glsxtrifwasfirstuse} still needs setting for the benefit
+% of the post-link hook.
+% \begin{macrocode}
+ \renewcommand*\@gls@link@checkfirsthyper{%
+ \ifglsused{\glslabel}%
+ {\let\glsxtrifwasfirstuse\@secondoftwo}
+ {\let\glsxtrifwasfirstuse\@firstoftwo}%
+ \@glsxtr@org@checkfirsthyper
+ }
+ \glssetcategoryattribute{acronym}{regular}{false}%
+ \setacronymstyle{long-short}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsacspace}
+% Allow the user to customise the maximum value.
+% \begin{macrocode}
+\renewcommand*{\glsacspace}[1]{%
+ \settowidth{\dimen@}{(\firstacronymfont{\glsentryshort{#1}})}%
+ \ifdim\dimen@<\glsacspacemax~\else\space\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsacspacemax}
+% Value used in the above.
+% \begin{macrocode}
+\newcommand*{\glsacspacemax}{3em}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Indexing and Displaying Glossaries}
+%From time-to-time users ask if they can have one glossary sorted
+%normally and another sorted by definition or usage. With the
+% base \styfmt{glossaries} package this can only be achieved with the
+% \qt{noidx} commands (Option~1). This is an attempt to mix and
+% match.
+%
+%First we need a list of the glossaries that require
+%\gls{makeindex}\slash\gls{xindy}.
+%\begin{macro}{\@glsxtr@reg@glosslist}
+%\changes{1.0}{2016-01-24}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@reg@glosslist}{}
+% \end{macrocode}
+%\end{macro}
+% Save the original definition of \cs{makeglossaries}:
+% \begin{macrocode}
+\let\@glsxtr@org@makeglossaries\makeglossaries
+% \end{macrocode}
+%
+% Redefine \cs{makeglossaries} to take an optional argument.
+% This should be empty for the usual behaviour (all glossaries
+% need processing with an indexing application) or a comma-separated
+% list of glossary labels indicating those glossaries that should be
+% processed with an indexing application. The optional argument
+% version shouldn't be used with \pkgopt{record}.
+%\begin{macro}{\makeglossaries}
+%\changes{1.0}{2016-01-24}{new}
+% \begin{macrocode}
+\renewcommand*{\makeglossaries}[1][]{%
+ \@glsxtr@if@record@only
+ {%
+ \PackageError{glossaries-extra}{\string\makeglossaries\space
+ not permitted\MessageBreak with record=\@glsxtr@record@setting\space
+ package option}%
+ {You may only use \string\makeglossaries\space with
+ record=off or record=alsoindex options}%
+ }%
+ {%
+ \ifblank{#1}%
+ {\@glsxtr@org@makeglossaries}%
+ {%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@alsoindex
+ \PackageError{glossaries-extra}{\string\makeglossaries[#1]\space
+ not permitted\MessageBreak with record=alsoindex package option}%
+ {You may only use the hybrid \string\makeglossaries[...]\space with
+ record=off option}%
+ \else
+% \end{macrocode}
+%\cs{@gls@@automake@immediate} was introduced to \sty{glossaries}
+%v4.42 so it may not be defined.
+% \begin{macrocode}
+ \ifdef\@gls@@automake@immediate{\@gls@@automake@immediate}{}%
+ \edef\@glsxtr@reg@glosslist{#1}%
+ \ifundef{\glswrite}{\newwrite\glswrite}{}%
+ \protected@write\@auxout{}{\string\providecommand
+ \string\@glsorder[1]{}}
+ \protected@write\@auxout{}{\string\providecommand
+ \string\@istfilename[1]{}}
+ \protected@write\@auxout{}{\string\@istfilename{\istfilename}}%
+ \protected@write\@auxout{}{\string\@glsorder{\glsorder}}
+ \protected@write\@auxout{}{\string\glsxtr@makeglossaries{#1}}
+ \write\@auxout{\string\providecommand\string\@gls@reference[3]{}}%
+% \end{macrocode}
+% Iterate through each supplied glossary type and activate it.
+% \begin{macrocode}
+ \@for\@glo@type:=#1\do{%
+ \ifdefempty{\@glo@type}{}{\@makeglossary{\@glo@type}}%
+ }%
+% \end{macrocode}
+% New glossaries must be created before \cs{makeglossaries}:
+% \begin{macrocode}
+ \renewcommand*\newglossary[4][]{%
+ \PackageError{glossaries}{New glossaries
+ must be created before \string\makeglossaries}{You need
+ to move \string\makeglossaries\space after all your
+ \string\newglossary\space commands}}%
+% \end{macrocode}
+% Any subsequence instances of this command should have no effect
+% \begin{macrocode}
+ \let\@makeglossary\relax
+ \let\makeglossary\relax
+ \renewcommand\makeglossaries[1][]{}%
+% \end{macrocode}
+% Disable all commands that have no effect after \cs{makeglossaries}
+% \begin{macrocode}
+ \@disable@onlypremakeg
+% \end{macrocode}
+% Allow \gloskey{see} key:
+% \begin{macrocode}
+ \let\gls@checkseeallowed\relax
+% \end{macrocode}
+%Adjust \cs{@do@seeglossary}. This needs to check for the entry's
+%existence but don't increment associated counter.
+% \begin{macrocode}
+ \renewcommand*{\@do@seeglossary}[2]{%
+ \glsdoifexists{##1}%
+ {%
+ \edef\@gls@label{\glsdetoklabel{##1}}%
+ \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}%
+ \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}%
+ {\@glsxtr@org@doseeglossary{##1}{##2}}%
+ {%
+ \@@glsxtrwrglossmark
+ \protected@write\@auxout{}{%
+ \string\@gls@reference
+ {\gls@type}{\@gls@label}{\string\glsseeformat##2{}}%
+ }%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Adjust \cs{@@do@@wrglossary}
+% \begin{macrocode}
+ \let\@glsxtr@@do@@wrglossary\@@do@@wrglossary
+ \def\@@do@@wrglossary{%
+ \edef\@gls@type{\csname glo@\@gls@label @type\endcsname}%
+ \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}%
+ {\@glsxtr@@do@@wrglossary}%
+ {\gls@noidxglossary}%
+ }%
+% \end{macrocode}
+% Suppress warning about no \cs{makeglossaries}
+% \begin{macrocode}
+ \let\warn@nomakeglossaries\relax
+ \def\warn@noprintglossary{%
+ \GlossariesWarningNoLine{No \string\printglossary\space
+ or \string\printglossaries\space
+ found.^^J(Remove \string\makeglossaries\space if you don't want
+ any glossaries.)^^JThis document will not have a glossary}%
+ }%
+% \end{macrocode}
+% Only warn for glossaries not listed.
+% \begin{macrocode}
+ \renewcommand{\@gls@noref@warn}[1]{%
+ \edef\@gls@type{##1}%
+ \expandafter\DTLifinlist\expandafter{\@gls@type}{\@glsxtr@reg@glosslist}%
+ {%
+ \GlossariesExtraWarning{Can't use
+ \string\printnoidxglossary[type={\@gls@type}]
+ when `\@gls@type' is listed in the optional argument of
+ \string\makeglossaries}%
+ }%
+ {%
+ \GlossariesWarning{Empty glossary for
+ \string\printnoidxglossary[type={##1}].
+ Rerun may be required (or you may have forgotten to use
+ commands like \string\gls)}%
+ }%
+ }%
+% \end{macrocode}
+% Adjust display number list to check for type:
+% \begin{macrocode}
+ \renewcommand*{\glsdisplaynumberlist}[1]{%
+ \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}%
+ {\@glsxtr@idx@displaynumberlist{##1}}%
+ {\@glsxtr@noidx@displaynumberlist{##1}}%
+ }%
+% \end{macrocode}
+% Adjust entry list:
+% \begin{macrocode}
+ \renewcommand*{\glsentrynumberlist}[1]{%
+ \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}%
+ {\@glsxtr@idx@entrynumberlist{##1}}%
+ {\@glsxtr@noidx@entrynumberlist{##1}}%
+ }%
+% \end{macrocode}
+% Adjust number list loop
+% \begin{macrocode}
+ \renewcommand*{\glsnumberlistloop}[2]{%
+ \expandafter\DTLifinlist\expandafter{##1}{\@glsxtr@reg@glosslist}%
+ {%
+ \PackageError{glossaries-extra}{\string\glsnumberlistloop\space
+ not available for glossary `##1'}{}%
+ }%
+ {\@glsxtr@noidx@numberlistloop{##1}{##2}}%
+ }%
+% \end{macrocode}
+% Only sanitize sort for normal indexing glossaries.
+% \begin{macrocode}
+ \renewcommand*{\glsprestandardsort}[3]{%
+ \expandafter\DTLifinlist\expandafter{##2}{\@glsxtr@reg@glosslist}%
+ {%
+ \glsdosanitizesort
+ }%
+ {%
+ \ifglssanitizesort
+ \@gls@noidx@sanitizesort
+ \else
+ \@gls@noidx@nosanitizesort
+ \fi
+ }%
+ }%
+% \end{macrocode}
+% Unlike \cs{makenoidxglossaries} we can't automatically set
+% sanitizesort=false. All entries must be defined in the preamble.
+% \begin{macrocode}
+ \renewcommand*\new@glossaryentry[2]{%
+ \PackageError{glossaries-extra}{Glossary entries must be defined
+ in the preamble\MessageBreak when you use the optional argument
+ of \string\makeglossaries}{Either move your definitions to the
+ preamble or don't use the optional argument of
+ \string\makeglossaries}%
+ }%
+% \end{macrocode}
+% Only activate sort key for glossaries that aren't listed in
+% \verb|#1| (glossary label is stored in \cs{@glo@type} but this
+% defaults to \cs{glsdefaulttype} so some expansion is required).
+% \begin{macrocode}
+ \let\@glo@assign@sortkey\@glsxtr@mixed@assign@sortkey
+ \renewcommand*{\@printgloss@setsort}{%
+% \end{macrocode}
+% Need to extract just the \gloskey[printglossary]{type} value.
+% \begin{macrocode}
+ \expandafter\@glsxtr@gettype\expandafter,\@glsxtr@printglossopts,%
+ type=\glsdefaulttype,\@end@glsxtr@gettype
+ \def\@glo@sorttype{\@glo@default@sorttype}%
+ }%
+% \end{macrocode}
+% Check \pkgopt{automake} setting:
+% \begin{macrocode}
+ \ifglsautomake
+ \renewcommand*{\@gls@doautomake}{%
+ \@for\@gls@type:=\@glsxtr@reg@glosslist\do{%
+ \ifdefempty{\@gls@type}{}{\@gls@automake{\@gls@type}}%
+ }%
+ }%
+ \fi
+% \end{macrocode}
+% Check the sort setting (\sty{glossaries} v4.30 onwards):
+% \begin{macrocode}
+ \ifdef\@glo@check@sortallowed{\@glo@check@sortallowed\makeglossaries}{}%
+ \fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%The optional argument version of \cs{makeglossaries} needs an
+%adjustment to \cs{@printglossary} to allow \cs{@glo@assign@sortkey}
+%to pick up the glossary type.
+%
+%\begin{macro}{\@glsxtr@orgprintglossary}
+%This no longer simply saves \cs{@printglossary} with \cs{let}
+%but is actually defined
+%to check for the existence of the title, since ignored
+%glossaries don't have a title assigned. (bib2gls writes
+%\cs{provideignoredglossary} to the glstex file for some settings,
+%so the glossary might not have been defined.)
+%(This command is also used for on-the-fly setting.)
+% \begin{macrocode}
+\newcommand{\@glsxtr@orgprintglossary}[2]{%
+ \def\@glo@type{\glsdefaulttype}%
+% \end{macrocode}
+%Add check here.
+% \begin{macrocode}
+ \def\glossarytitle{%
+ \ifcsdef{@glotype@\@glo@type @title}%
+ {\csuse{@glotype@\@glo@type @title}}%
+ {\glossaryname}}%
+ \def\glossarytoctitle{\glossarytitle}%
+ \let\org@glossarytitle\glossarytitle
+ \def\@glossarystyle{%
+ \ifx\@glossary@default@style\relax
+ \GlossariesWarning{No default glossary style provided \MessageBreak
+ for the glossary `\@glo@type'. \MessageBreak
+ Using deprecated fallback. \MessageBreak
+ To fix this set the style with \MessageBreak
+ \string\setglossarystyle\space or use the \MessageBreak
+ style key=value option}%
+ \fi
+ }%
+ \def\gls@dotoctitle{\glssettoctitle{\@glo@type}}%
+ \let\@org@glossaryentrynumbers\glossaryentrynumbers
+ \bgroup
+ \@printgloss@setsort
+ \setkeys{printgloss}{#1}%
+ \ifx\glossarytitle\org@glossarytitle
+ \else
+ \cslet{@glotype@\@glo@type @title}{\glossarytitle}%
+ \fi
+ \let\currentglossary\@glo@type
+ \let\org@glossaryentrynumbers\glossaryentrynumbers
+ \let\glsnonextpages\@glsnonextpages
+ \let\glsnextpages\@glsnextpages
+% \end{macrocode}
+%\changes{1.22}{2017-11-08}{changed explicit \cs{let} for \cs{nopostdesc}
+%to \cs{glsxtractivatenopost}}
+% \begin{macrocode}
+ \glsxtractivatenopost
+ \gls@dotoctitle
+ \@glossarystyle
+ \let\gls@org@glossaryentryfield\glossentry
+ \let\gls@org@glossarysubentryfield\subglossentry
+ \renewcommand{\glossentry}[1]{%
+ \xdef\glscurrententrylabel{\glsdetoklabel{##1}}%
+ \gls@org@glossaryentryfield{##1}%
+ }%
+ \renewcommand{\subglossentry}[2]{%
+ \xdef\glscurrententrylabel{\glsdetoklabel{##2}}%
+ \gls@org@glossarysubentryfield{##1}{##2}%
+ }%
+ \@gls@preglossaryhook
+ #2%
+ \egroup
+ \global\let\glossaryentrynumbers\@org@glossaryentrynumbers
+ \global\let\warn@noprintglossary\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtractivatenopost}
+%\changes{1.22}{2017-11-08}{new}
+%Change \cs{nopostdesc} and \cs{glsxtrnopostpunc} to behave as they
+%do in the glossary.
+% \begin{macrocode}
+\newcommand*{\glsxtractivatenopost}{%
+ \let\nopostdesc\@nopostdesc
+ \let\glsxtrnopostpunc\@glsxtr@nopostpunc
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnopostpunc}
+%\changes{1.22}{2017-11-08}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnopostpunc}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@nopostpunc}
+%Provide a command that works like \cs{nopostdesc} but only
+%switches of the punctuation without suppressing the post-description
+%hook.
+%\changes{1.22}{2017-11-08}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtr@nopostpunc}{%
+ \let\@@glsxtr@org@postdescription\glspostdescription
+ \ifglsnopostdot
+ \renewcommand{\glspostdescription}{%
+ \glsnopostdottrue
+ \let\glspostdescription\@@glsxtr@org@postdescription
+ \let\glsxtrrestorepostpunc\@glsxtr@restore@postpunc
+ \glsxtrpostdescription
+ \@glsxtr@nopostpunc@postdesc}%
+ \else
+ \renewcommand{\glspostdescription}{%
+ \let\glspostdescription\@@glsxtr@org@postdescription
+ \let\glsxtrrestorepostpunc\@glsxtr@restore@postpunc
+ \glsxtrpostdescription
+ \@glsxtr@nopostpunc@postdesc}%
+ \fi
+ \glsnopostdotfalse
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@nopostpunc@postdesc}
+%\changes{1.23}{2017-11-12}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@nopostpunc@postdesc}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@restore@postpunc}
+%\changes{1.23}{2017-11-12}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@restore@postpunc}{%
+ \def\@glsxtr@nopostpunc@postdesc{%
+ \@glsxtr@org@postdescription
+ \let\@glsxtr@nopostpunc@postdesc\@empty
+ \let\glsxtrrestorepostpunc\@empty
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrrestorepostpunc}
+%\changes{1.23}{2017-11-12}{new}
+%Does nothing outside of glossary.
+% \begin{macrocode}
+\newcommand*{\glsxtrrestorepostpunc}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@printglossary}
+%Redefine.
+%\changes{1.09}{2016-12-16}{redefined to save options}
+% \begin{macrocode}
+\renewcommand{\@printglossary}[2]{%
+ \def\@glsxtr@printglossopts{#1}%
+ \@glsxtr@orgprintglossary{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Add a key that switches off the entry targets:
+%\changes{1.12}{2017-02-03}{added target key to printgloss family}
+% \begin{macrocode}
+\define@choicekey{printgloss}{target}
+[\@glsxtr@printglossval\@glsxtr@printglossnr]%
+{true,false}[true]%
+{%
+ \ifcase\@glsxtr@printglossnr
+% \end{macrocode}
+%\changes{1.31}{2018-05-09}{changed \cs{let} to \cs{def}}
+% \begin{macrocode}
+ \def\@glstarget{\glsdohypertarget}%
+ \else
+ \let\@glstarget\@secondoftwo
+ \fi
+}
+% \end{macrocode}
+%\begin{macro}{\@glsxtrhypernameprefix}
+%\changes{1.20}{2017-09-11}{new}
+% \begin{macrocode}
+\newcommand{\@glsxtrhypernameprefix}{}
+% \end{macrocode}
+%\end{macro}
+%
+%New to v1.20:
+% \begin{macrocode}
+\define@key{printgloss}{targetnameprefix}{%
+ \renewcommand{\@glsxtrhypernameprefix}{#1}%
+}
+% \end{macrocode}
+%
+%\changes{1.31}{2018-05-09}{added \texttt{prefix} key for \texttt{printgloss}}
+% \begin{macrocode}
+\define@key{printgloss}{prefix}{%
+ \renewcommand{\glolinkprefix}{#1}%
+}
+% \end{macrocode}
+%
+%\changes{1.39}{2019-03-22}{added \texttt{label} key for \texttt{printgloss}}
+% \begin{macrocode}
+\define@key{printgloss}{label}{%
+ \glsxtrsetglossarylabel{#1}%
+}
+% \end{macrocode}
+%
+%\begin{macro}{\glsxtrsetglossarylabel}
+%\changes{1.39}{2019-03-22}{new}
+%Set the label for subsequent glossaries. If the label is
+%fixed (that is, doesn't change with each glossary) this will need
+%to be scoped or changed again to prevent duplicate labels.
+% \begin{macrocode}
+\newcommand{\glsxtrsetglossarylabel}[1]{%
+ \renewcommand*{\@@glossaryseclabel}{%
+ \protected@edef\@currentlabelname{\glossarytoctitle}%
+ \label{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdohypertarget}
+%\changes{1.20}{2017-09-11}{added redefinition}
+%Redefine to insert \cs{@glsxtrhypernameprefix} before the target
+%name.
+% \begin{macrocode}
+\let\@glsxtr@org@glsdohypertarget\glsdohypertarget
+\renewcommand{\glsdohypertarget}[2]{%
+ \@glsxtr@org@glsdohypertarget{\@glsxtrhypernameprefix#1}{#2}%
+}
+% \end{macrocode}
+%\changes{1.31}{2018-05-09}{bug fix: ensure that new version is picked up}
+%Update \cs{@glstarget} to use \cs{def} instead being assigned with
+%\cs{let} so that it can pick up the new definition and allow any
+%further redefinitions:
+% \begin{macrocode}
+\ifx\@glstarget\@glsxtr@org@glsdohypertarget
+ \def\@glstarget{\glsdohypertarget}%
+\fi
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtr@makeglossaries}
+%For the benefit of \app{makeglossaries}
+%\changes{1.09}{2016-12-16}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@makeglossaries}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@gettype}
+%Get just the type.
+%\changes{1.09}{2016-12-16}{new}
+% \begin{macrocode}
+\def\@glsxtr@gettype#1,type=#2,#3\@end@glsxtr@gettype{%
+ \def\@glo@type{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@mixed@assign@sortkey}
+%Assign the sort key.
+%\changes{1.09}{2016-12-16}{new}
+% \begin{macrocode}
+\newcommand\@glsxtr@mixed@assign@sortkey[1]{%
+ \edef\@glo@type{\@glo@type}%
+ \expandafter\DTLifinlist\expandafter{\@glo@type}{\@glsxtr@reg@glosslist}%
+ {%
+ \@glo@no@assign@sortkey{#1}%
+ }%
+ {%
+ \@@glo@assign@sortkey{#1}%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+% Display number list for the regular version:
+%\begin{macro}{\@glsxtr@idx@displaynumberlist}
+%\changes{1.0}{2016-01-24}{new}
+% \begin{macrocode}
+\let\@glsxtr@idx@displaynumberlist\glsdisplaynumberlist
+% \end{macrocode}
+%\end{macro}
+%
+% Display number list for the \qt{noidx} version:
+%\begin{macro}{\@glsxtr@noidx@displaynumberlist}
+%\changes{1.0}{2016-01-24}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@noidx@displaynumberlist}[1]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \ifdef\@gls@loclist
+ {%
+ \def\@gls@noidxloclist@sep{%
+ \def\@gls@noidxloclist@sep{%
+ \def\@gls@noidxloclist@sep{%
+ \glsnumlistsep
+ }%
+ \def\@gls@noidxloclist@finalsep{\glsnumlistlastsep}%
+ }%
+ }%
+ \def\@gls@noidxloclist@finalsep{}%
+ \def\@gls@noidxloclist@prev{}%
+ \forlistloop{\glsnoidxdisplayloclisthandler}{\@gls@loclist}%
+ \@gls@noidxloclist@finalsep
+ \@gls@noidxloclist@prev
+ }%
+ {%
+% \end{macrocode}
+%\changes{1.17}{2017-08-09}{replace hard-coded ?? with
+%\cs{glsxtrundeftag}}
+% \begin{macrocode}
+ \glsxtrundeftag
+ \glsdoifexists{#1}%
+ {%
+ \GlossariesWarning{Missing location list for `#1'. Either
+ a rerun is required or you haven't referenced the entry.}%
+ }%
+ }%
+}%
+
+% \end{macrocode}
+%\end{macro}
+%And for the number list loop:
+%\begin{macro}{\@glsxtr@noidx@numberlistloop}
+%\changes{1.0}{2016-01-24}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@noidx@numberlistloop}[3]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \let\@gls@org@glsnoidxdisplayloc\glsnoidxdisplayloc
+ \let\@gls@org@glsseeformat\glsseeformat
+ \let\glsnoidxdisplayloc#2\relax
+ \let\glsseeformat#3\relax
+ \ifdef\@gls@loclist
+ {%
+ \forlistloop{\glsnoidxnumberlistloophandler}{\@gls@loclist}%
+ }%
+ {%
+% \end{macrocode}
+%\changes{1.17}{2017-08-09}{replace hard-coded ?? with
+%\cs{glsxtrundeftag}}
+% \begin{macrocode}
+ \glsxtrundeftag
+ \glsdoifexists{#1}%
+ {%
+ \GlossariesWarning{Missing location list for `##1'. Either
+ a rerun is required or you haven't referenced the entry.}%
+ }%
+ }%
+ \let\glsnoidxdisplayloc\@gls@org@glsnoidxdisplayloc
+ \let\glsseeformat\@gls@org@glsseeformat
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%Same for entry number list.
+%\begin{macro}{\@glsxtr@noidx@entrynumberlist}
+%\changes{1.0}{2016-01-24}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@noidx@entrynumberlist}[1]{%
+ \letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \ifdef\@gls@loclist
+ {%
+ \glsnoidxloclist{\@gls@loclist}%
+ }%
+ {%
+% \end{macrocode}
+%\changes{1.17}{2017-08-09}{replace hard-coded ?? with
+%\cs{glsxtrundeftag}}
+% \begin{macrocode}
+ \glsxtrundeftag
+ \glsdoifexists{#1}%
+ {%
+ \GlossariesWarning{Missing location list for `#1'. Either
+ a rerun is required or you haven't referenced the entry.}%
+ }%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@idx@entrynumberlist}
+%\changes{1.0}{2016-01-24}{new}
+%\changes{1.04}{2016-05-02}{switched from \cs{let} to \cs{newcommand}}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@idx@entrynumberlist}[1]{\glsentrynumberlist{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@noidx@getgrouptitle}
+%\changes{1.14}{2017-04-18}{new}
+%\changes{1.16}{2017-06-15}{fixed bug}
+%Patch.
+% \begin{macrocode}
+\renewcommand*{\@gls@noidx@getgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{#1}%
+ \ifdefvoid\@glsxtr@titlelabel
+ {}%
+ {%
+ \protected@edef\@glsxtr@titlelabel{\csuse{glsxtr@grouptitle@#1}}%
+ }%
+ \ifdefvoid{\@glsxtr@titlelabel}%
+ {%
+ \DTLifint{#1}%
+ {%
+ \ifnum#1<256\relax
+ \edef#2{\char#1\relax}%
+ \else
+ \edef#2{#1}%
+ \fi
+ }%
+ {%
+ \ifcsundef{#1groupname}%
+ {\def#2{#1}}%
+ {\letcs#2{#1groupname}}%
+ }%
+ }%
+ {%
+ \let#2\@glsxtr@titlelabel
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@org@getgrouptitle}
+%\changes{1.14}{2017-04-18}{new}
+%Save original definition of \cs{@gls@getgrouptitle}
+% \begin{macrocode}
+\let\glsxtr@org@getgrouptitle\@gls@getgrouptitle
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgetgrouptitle}
+%\changes{1.14}{2017-04-18}{new}
+%Provide a user-level command to fetch the group title. The first
+%argument is the group label. The second argument is a control
+%sequence in which to store the title.
+% \begin{macrocode}
+\newrobustcmd{\glsxtrgetgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlelabel
+ \ifcsdef{\@glsxtr@titlelabel}
+ {\letcs{#2}{\@glsxtr@titlelabel}}%
+ {\glsxtr@org@getgrouptitle{#1}{#2}}%
+}
+\let\@gls@getgrouptitle\glsxtrgetgrouptitle
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsetgrouptitle}
+%\changes{1.14}{2017-04-18}{new}
+%Sets the title for the given group label.
+%\changes{1.28}{2018-03-06}{changed \cs{csxdef} \cs{protected@csxdef}}
+% \begin{macrocode}
+\newcommand{\glsxtrsetgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlelabel
+ \protected@csxdef{\@glsxtr@titlelabel}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlocalsetgrouptitle}
+%\changes{1.24}{2017-11-14}{new}
+%As above put only locally defines the title.
+%\changes{1.28}{2018-03-06}{changed \cs{csedef} \cs{protected@csedef}}
+% \begin{macrocode}
+\newcommand{\glsxtrlocalsetgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlelabel
+ \protected@csedef{\@glsxtr@titlelabel}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnavigation}
+%\changes{1.14}{2017-04-18}{new}
+%Redefine to use new user-level command.
+% \begin{macrocode}
+\renewcommand*{\glsnavigation}{%
+ \def\@gls@between{}%
+ \ifcsundef{@gls@hypergrouplist@\@glo@type}%
+ {%
+ \def\@gls@list{}%
+ }%
+ {%
+ \expandafter\let\expandafter\@gls@list
+ \csname @gls@hypergrouplist@\@glo@type\endcsname
+ }%
+ \@for\@gls@tmp:=\@gls@list\do{%
+ \@gls@between
+ \glsxtrgetgrouptitle{\@gls@tmp}{\@gls@grptitle}%
+ \glsnavhyperlink{\@gls@tmp}{\@gls@grptitle}%
+ \let\@gls@between\glshypernavsep
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@print@noidx@glossary}
+%\changes{1.11}{2017-01-19}{added redefinition}
+% \begin{macrocode}
+\renewcommand*{\@print@noidx@glossary}{%
+ \ifcsdef{@glsref@\@glo@type}%
+ {%
+ \ifcsdef{@glo@sortmacro@\@glo@sorttype}%
+ {%
+ \csuse{@glo@sortmacro@\@glo@sorttype}{\@glo@type}%
+ }%
+ {%
+ \PackageError{glossaries}{Unknown sort handler `\@glo@sorttype'}{}%
+ }%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}%
+ \glossarypreamble
+% \end{macrocode}
+%Moved this command definition outside of environment in case of
+%scoping issues (e.g. in tabular-like styles).
+% \begin{macrocode}
+ \def\@gls@currentlettergroup{}%
+ \begin{theglossary}%
+ \glossaryheader
+ \glsresetentrylist
+ \forlistcsloop{\@gls@noidx@do}{@glsref@\@glo@type}%
+ \end{theglossary}%
+ \glossarypostamble
+ }%
+ {%
+% \end{macrocode}
+%Add section header if there are actually entries defined in this
+%glossary as the document is likely pending a re-run.
+% \begin{macrocode}
+ \glsxtrifemptyglossary{\@glo@type}%
+ {}%
+ {\glossarysection[\glossarytoctitle]{\glossarytitle}}%
+ \@gls@noref@warn{\@glo@type}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsnoidxdisplayloc}
+%\changes{1.12}{2017-02-03}{added redefinition}
+%Patch to check for range formations.
+% \begin{macrocode}
+\renewcommand*{\glsnoidxdisplayloc}[4]{%
+ \setentrycounter[#1]{#2}%
+ \@glsxtr@display@loc#3\empty\end@glsxtr@display@loc{#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@display@loc}
+%\changes{1.12}{2017-02-03}{new}
+%Patch to check for range formations.
+% \begin{macrocode}
+\def\@glsxtr@display@loc#1#2\end@glsxtr@display@loc#3{%
+ \ifx#1(\relax
+ \glsxtrdisplaystartloc{#2}{#3}%
+ \else
+ \ifx#1)\relax
+ \glsxtrdisplayendloc{#2}{#3}%
+ \else
+ \glsxtrdisplaysingleloc{#1#2}{#3}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdisplaysingleloc}
+%\changes{1.12}{2017-02-03}{new}
+%Single location.
+% \begin{macrocode}
+\newcommand*{\glsxtrdisplaysingleloc}[2]{%
+ \csuse{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%By default the range identifiers are simply ignored.
+%A custom list loop handler can be defined by the user
+%to test for ranges by checking the definition of
+%\cs{glsxtrlocrangefmt}.
+%
+%\begin{macro}{\glsxtrdisplaystartloc}
+%\changes{1.12}{2017-02-03}{new}
+%Start of a location range.
+% \begin{macrocode}
+\newcommand*{\glsxtrdisplaystartloc}[2]{%
+ \edef\glsxtrlocrangefmt{#1}%
+ \ifx\glsxtrlocrangefmt\empty
+ \def\glsxtrlocrangefmt{glsnumberformat}%
+ \fi
+ \expandafter\glsxtrdisplaysingleloc
+ \expandafter{\glsxtrlocrangefmt}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdisplayendloc}
+%\changes{1.12}{2017-02-03}{new}
+%\changes{1.14}{2017-04-18}{added check for empty format}
+%End of a location range.
+% \begin{macrocode}
+\newcommand*{\glsxtrdisplayendloc}[2]{%
+ \edef\@glsxtr@tmp{#1}%
+ \ifdefempty{\@glsxtr@tmp}{\def\@glsxtr@tmp{glsnumberformat}}{}%
+ \ifx\glsxtrlocrangefmt\@glsxtr@tmp
+ \else
+ \GlossariesExtraWarning{Mismatched end location range
+ (start=\glsxtrlocrangefmt, end=\@glsxtr@tmp)}%
+ \fi
+ \expandafter\glsxtrdisplayendlochook\expandafter{\@glsxtr@tmp}{#2}%
+ \expandafter\glsxtrdisplaysingleloc
+ \expandafter{\glsxtrlocrangefmt}{#2}%
+ \def\glsxtrlocrangefmt{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdisplayendlochook}
+%\changes{1.12}{2017-02-03}{new}
+%Allow the user to hook into the end of range command.
+% \begin{macrocode}
+\newcommand*{\glsxtrdisplayendlochook}[2]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrlocrangefmt}
+%\changes{1.12}{2017-02-03}{new}
+%Current range format. Empty if not in a range.
+% \begin{macrocode}
+\newcommand*{\glsxtrlocrangefmt}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\setentrycounter}
+%\changes{1.29}{2018-04-09}{new}
+%Adjust \cs{setentrycounter} to save the original prefix.
+% \begin{macrocode}
+\renewcommand*{\setentrycounter}[2][]{%
+ \def\glsxtrcounterprefix{#1}%
+ \ifx\glsxtrcounterprefix\@empty
+ \def\@glo@counterprefix{.}%
+ \else
+ \def\@glo@counterprefix{.#1.}%
+ \fi
+ \def\glsentrycounter{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@removespaces}
+%\changes{1.14}{2017-04-18}{new}
+%Redefine to allow adjustments to location hyperlink.
+% \begin{macrocode}
+\def\@gls@removespaces#1 #2\@nil{%
+ \toks@=\expandafter{\the\toks@#1}%
+ \ifx\\#2\\%
+% \end{macrocode}
+%\changes{1.39}{2019-03-22}{changed \cs{x} to \cs{@glo@tmp}}
+% \begin{macrocode}
+ \edef\@glo@tmp{\the\toks@}%
+ \ifx\@glo@tmp\empty
+ \else
+% \end{macrocode}
+%Expand location (just in case \cs{toks@} is needed for something
+%else).
+%\changes{1.29}{2018-04-09}{added expansion}
+% \begin{macrocode}
+ \expandafter\glsxtrlocationhyperlink\expandafter
+ \glsentrycounter\expandafter\@glo@counterprefix\expandafter{\the\toks@}%
+ \fi
+ \else
+ \@gls@ReturnAfterFi{%
+ \@gls@removespaces#2\@nil
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlocationhyperlink}
+%\changes{1.14}{2017-04-18}{new}
+%\begin{definition}
+%\cs{glsxtrlocationhyperlink}\marg{counter}\marg{prefix}\marg{location}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtrlocationhyperlink}[3]{%
+ \ifdefvoid\glsxtrsupplocationurl
+ {%
+ \GlsXtrInternalLocationHyperlink{#1}{#2}{#3}%
+ }%
+ {%
+ \hyperref{\glsxtrsupplocationurl}{}{#1#2#3}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsupphypernumber}
+%\changes{1.14}{2017-04-18}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrsupphypernumber}[1]{%
+ {%
+ \glshasattribute{\glscurrententrylabel}{externallocation}%
+ {%
+ \def\glsxtrsupplocationurl{%
+ \glsgetattribute{\glscurrententrylabel}{externallocation}}%
+ }%
+ {%
+ \def\glsxtrsupplocationurl{}%
+ }%
+ \glshypernumber{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Give a bit of assistance to new users who are confused and don't
+% know how to read transcript messages.
+%\begin{macro}{\@print@glossary}
+%\changes{0.3}{2015-12-02}{added redefinition}
+% \begin{macrocode}
+\renewcommand{\@print@glossary}{%
+ \makeatletter
+ \@input@{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ \IfFileExists{\jobname.\csname @glotype@\@glo@type @in\endcsname}%
+ {}%
+ {\glsxtrNoGlossaryWarning{\@glo@type}}%
+ \ifglsxindy
+ \ifcsundef{@xdy@\@glo@type @language}%
+ {%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@xdylanguage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@xdylanguage{\@glo@type}{\@xdy@main@language}}%
+ }%
+ }%
+ }%
+ {%
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@xdylanguage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@xdylanguage{\@glo@type}{\csname @xdy@\@glo@type
+ @language\endcsname}}%
+ }%
+ }%
+ }%
+ \@do@auxoutstuff
+ \edef\@do@auxoutstuff{%
+ \noexpand\AtEndDocument{%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\providecommand\string\@gls@codepage[2]{}}%
+ \noexpand\immediate\noexpand\write\@auxout{%
+ \string\@gls@codepage{\@glo@type}{\gls@codepage}}%
+ }%
+ }%
+ \@do@auxoutstuff
+ \fi
+ \renewcommand*{\@warn@nomakeglossaries}{%
+ \GlossariesWarningNoLine{\string\makeglossaries\space
+ hasn't been used,^^Jthe glossaries will not be updated}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Setup the warning text to display if the external file for the given
+% glossary is missing.
+%
+%\begin{macro}{\GlsXtrNoGlsWarningHead}
+% Header message.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningHead}[2]{%
+ This document is incomplete. The external file associated with
+ the glossary `#1' (which should be called \texttt{#2})
+ hasn't been created.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningEmptyStart}
+% No entries have been added to the glossary.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningEmptyStart}{%
+ This has probably happened because there are no entries defined
+ in this glossary.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningEmptyMain}
+% The default \qt{main} glossary is empty.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningEmptyMain}{%
+ If you don't want this glossary,
+ add \texttt{nomain} to your package option list when you load
+ \texttt{glossaries-extra.sty}. For example:%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningEmptyNotMain}
+% A glossary that isn't the default \qt{main} glossary is empty.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningEmptyNotMain}[1]{%
+ Did you forget to use \texttt{type=#1} when you defined your
+ entries? If you tried to load entries into this glossary with
+ \texttt{\string\loadglsentries} did you remember to use
+ \texttt{[#1]} as the optional argument? If you did, check that
+ the definitions in the file you loaded all had the type set
+ to \texttt{\string\glsdefaulttype}.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningCheckFile}
+% Advisory message to check the file contents.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningCheckFile}[1]{%
+ Check the contents of the file \texttt{#1}. If
+ it's empty, that means you haven't indexed any of your entries in this
+ glossary (using commands like \texttt{\string\gls} or
+ \texttt{\string\glsadd}) so this list can't be generated.
+ If the file isn't empty, the document build process hasn't been
+ completed.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningAutoMake}
+% Message when \pkgopt{automake} option has been used.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningAutoMake}[1]{%
+ You may need to rerun \LaTeX. If you already have, it may be that
+ \TeX's shell escape doesn't allow you to run
+ \ifglsxindy xindy\else makeindex\fi. Check the
+ transcript file \texttt{\jobname.log}. If the shell escape is
+ disabled, try one of the following:
+
+ \begin{itemize}
+ \item Run the external (Lua) application:
+
+ \texttt{makeglossaries-lite \string"\jobname\string"}
+
+ \item Run the external (Perl) application:
+
+ \texttt{makeglossaries \string"\jobname\string"}
+ \end{itemize}
+
+ Then rerun \LaTeX\ on this document.
+ \GlossariesExtraWarning{Rerun required to build the
+ glossary `#1' or check TeX's shell escape allows
+ you to run \ifglsxindy xindy\else makeindex\fi}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{0.5.3}{2015-12-09}{removed \cs{GlsXtrNoGlsWarningNoAutoMakeMain}}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningMisMatch}
+% Mismatching \cs{makenoidxglossaries}.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningMisMatch}{%
+ You need to either replace \texttt{\string\makenoidxglossaries}
+ with \texttt{\string\makeglossaries} or replace
+ \texttt{\string\printglossary} (or \texttt{\string\printglossaries}) with
+ \texttt{\string\printnoidxglossary}
+ (or \texttt{\string\printnoidxglossaries}) and then rebuild
+ this document.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningBuildInfo}
+% Build advice.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningBuildInfo}{%
+ Try one of the following:
+ \begin{itemize}
+ \item Add \texttt{automake} to your package option list when you load
+ \texttt{glossaries-extra.sty}. For example:
+
+ \texttt{\string\usepackage[automake]%
+ \glsopenbrace glossaries-extra\glsclosebrace}
+
+ \item Run the external (Lua) application:
+
+ \texttt{makeglossaries-lite.lua \string"\jobname\string"}
+
+ \item Run the external (Perl) application:
+
+ \texttt{makeglossaries \string"\jobname\string"}
+ \end{itemize}
+
+ Then rerun \LaTeX\ on this document.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrRecordWarning}
+% Paragraph for \pkgopt[only]{record}.
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+\newcommand{\GlsXtrRecordWarning}[1]{%
+ \texttt{\string\printglossary} doesn't work
+ with the \texttt{record=only} package option
+ use\par\texttt{\string\printunsrtglossary[type=#1]}\par
+ instead (or change the package option).%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningTail}
+% Final paragraph.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningTail}{%
+ This message will be removed once the problem has been fixed.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrNoGlsWarningNoOut}
+% No out file created.
+% Build advice.
+% \begin{macrocode}
+\newcommand{\GlsXtrNoGlsWarningNoOut}[1]{%
+ The file \texttt{#1} doesn't exist. This most likely means you haven't used
+ \texttt{\string\makeglossaries} or you have used
+ \texttt{\string\nofiles}. If this is just a draft version of the
+ document, you can suppress this message using the
+ \texttt{nomissingglstext} package option.%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@defaultnoglossarywarning}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@defaultnoglossarywarning}[1]{%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}
+ \GlsXtrNoGlsWarningHead{#1}{\jobname.\csname @glotype@\@glo@type @in\endcsname}
+ \par
+ \glsxtrifemptyglossary{#1}%
+ {%
+ \GlsXtrNoGlsWarningEmptyStart\space
+ \ifthenelse{\equal{#1}{main}}{\GlsXtrNoGlsWarningEmptyMain\par
+ \medskip
+ \noindent\texttt{\string\usepackage[nomain\ifglsacronym ,acronym\fi]%
+ \glsopenbrace glossaries-extra\glsclosebrace}
+ \medskip
+ }%
+ {\GlsXtrNoGlsWarningEmptyNotMain{#1}}%
+ }%
+ {%
+ \IfFileExists{\jobname.\csname @glotype@\@glo@type @out\endcsname}
+ {%
+ \GlsXtrNoGlsWarningCheckFile
+ {\jobname.\csname @glotype@\@glo@type @out\endcsname}
+
+ \ifglsautomake
+
+ \GlsXtrNoGlsWarningAutoMake{#1}
+
+ \else
+
+ \ifthenelse{\equal{#1}{main}}%
+ {%
+ \GlsXtrNoGlsWarningEmptyMain\par
+ \medskip
+ \noindent\texttt{\string\usepackage[nomain]%
+ \glsopenbrace glossaries-extra\glsclosebrace}
+ \medskip
+ }%
+ {}%
+
+ \ifdefequal\makeglossaries\@no@makeglossaries
+ {%
+ \GlsXtrNoGlsWarningMisMatch
+ }%
+ {%
+ \GlsXtrNoGlsWarningBuildInfo
+ }%
+ \fi
+ }%
+ {%
+ \GlsXtrNoGlsWarningNoOut
+ {\jobname.\csname @glotype@\@glo@type @out\endcsname}%
+ }%
+ }%
+ \par
+ \GlsXtrNoGlsWarningTail
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@record@noglossarywarning}
+%\changes{1.31}{2018-05-09}{new}
+%Warn about using \cs{printglossary} with \pkgopt{record}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@record@noglossarywarning}[1]{%
+ \GlossariesExtraWarning{\string\printglossary\space doesn't work\MessageBreak
+ with record=only package option\MessageBreak(use
+ \string\printunsrtglossary[type=#1])\MessageBreak
+ instead (or change the package option)}%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}
+ \GlsXtrRecordWarning{#1}
+ \GlsXtrNoGlsWarningTail
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide some commands to accompany the \pkgopt{record} option
+%for use with \href{https://github.com/nlct/bib2gls}{bib2gls}.
+%
+%\begin{macro}{\GlsXtrDefaultResourceOptions}
+%\changes{1.40}{2019-03-31}{new}
+%Default resource options.
+% \begin{macrocode}
+\newcommand*{\GlsXtrDefaultResourceOptions}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrresourcefile}
+%\changes{1.08}{2016-12-13}{new}
+%\changes{1.11}{2017-01-19}{changed extension to .glstex}
+%Since it's dangerous for an external application to
+%create a file with a .tex extension, as from v1.11 this
+%enforces a .glstex extension to avoid conflict.
+% \begin{macrocode}
+\newcommand*{\glsxtrresourcefile}[2][]{%
+% \end{macrocode}
+%The \pkgopt{record} option can't be set after this command.
+%\changes{1.21}{2017-11-03}{now disables record key}
+% \begin{macrocode}
+ \disable@keys{glossaries-extra.sty}{record}%
+ \glsxtr@writefields
+ \ifdefempty\GlsXtrDefaultResourceOptions
+ {%
+ \protected@write\@auxout{\glsxtrresourceinit}%
+ {\string\glsxtr@resource{#1}{#2}}%
+ }%
+ {%
+ \protected@write\@auxout{\glsxtrresourceinit}%
+ {\string\glsxtr@resource{\GlsXtrDefaultResourceOptions,#1}{#2}}%
+ }%
+ \let\@glsxtr@org@see@noindex\@gls@see@noindex
+ \let\@gls@see@noindex\relax
+ \IfFileExists{#2.glstex}%
+ {%
+% \end{macrocode}
+%Can't scope \cs{@input} so save and restore the category code of
+%\texttt{@} to allow for internal commands in the location list.
+%\changes{1.12}{2017-02-03}{added catcode change for @}
+% \begin{macrocode}
+ \edef\@bibgls@restoreat{\noexpand\catcode\noexpand`\noexpand\@=\number\catcode`\@}%
+ \makeatletter
+ \@input{#2.glstex}%
+ \@bibgls@restoreat
+% \end{macrocode}
+% If the \pkgopt[nameref]{record} option has been set, check if this
+% is supported by the installed version of \app{bib2gls}.
+% \begin{macrocode}
+ \@glsxtr@check@bibgls@nameref
+ }%
+ {%
+ \GlossariesExtraWarning{No file `#2.glstex'}%
+ }%
+ \let\@gls@see@noindex\@glsxtr@org@see@noindex
+}
+\@onlypreamble\glsxtrresourcefile
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@check@bibgls@nameref}
+%\changes{1.37}{2018-11-30}{new}
+%This will only warn after \app{bib2gls} has created the .glstex
+%file, but there's way to check before.
+% \begin{macrocode}
+\newcommand{\@glsxtr@check@bibgls@nameref}{%
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \ifdef\bibglshrefchar
+ {}%
+ {%
+ \GlossariesExtraWarning{record=nameref requires at least
+ version 1.8 of bib2gls}%
+ }%
+ \fi
+ \let\@glsxtr@check@bibgls@nameref\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrresourceinit}
+%\changes{1.21}{2017-11-03}{new}
+%Code used during the protected write operation.
+% \begin{macrocode}
+\newcommand*{\glsxtrresourceinit}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrresourcecount}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcount\glsxtrresourcecount
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsXtrLoadResources}
+%\changes{1.11}{2017-01-19}{new}
+%\changes{1.12}{2017-02-03}{removed restriction on only one per document}
+%Short cut that uses \cs{glsxtrresourcefile} with \cs{jobname} as
+%the mandatory argument.
+% \begin{macrocode}
+\newcommand*{\GlsXtrLoadResources}[1][]{%
+ \ifnum\glsxtrresourcecount=0\relax
+ \glsxtrresourcefile[#1]{\jobname}%
+ \else
+ \glsxtrresourcefile[#1]{\jobname-\the\glsxtrresourcecount}%
+ \fi
+ \advance\glsxtrresourcecount by 1\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@resource}
+%\changes{1.08}{2016-12-13}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@resource}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@fields}
+%\changes{1.11}{2017-01-19}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@fields}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@texencoding}
+%\changes{1.11}{2017-01-19}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@texencoding}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@langtag}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@langtag}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@pluralsuffixes}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@pluralsuffixes}[4]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@shortcutsval}
+%\changes{1.11}{2017-01-19}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@shortcutsval}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@linkprefix}
+%\changes{1.11}{2017-01-19}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@linkprefix}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@writefields}
+%\changes{1.11}{2017-01-19}{new}
+%This information only needs to be written once, so disable it after
+%it's been used.
+% \begin{macrocode}
+\newcommand*{\glsxtr@writefields}{%
+% \end{macrocode}
+%\changes{1.16}{2017-06-15}{added \cs{providecommand} lines}
+% \begin{macrocode}
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@fields}[1]{}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@resource}[2]{}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@pluralsuffixes}[4]{}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@shortcutsval}[1]{}}%
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@linkprefix}[1]{}}%
+ \protected@write\@auxout{}{\string\glsxtr@fields{\@gls@keymap}}%
+% \end{macrocode}
+%\changes{1.22}{2017-11-08}{provide \cs{glsxtr@record} in aux file}
+% \begin{macrocode}
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@record}[5]{}}%
+% \end{macrocode}
+%\changes{1.37}{2018-11-30}{provide \cs{glsxtr@record@nameref} in aux file}
+% \begin{macrocode}
+ \ifx\@glsxtr@record@setting\@glsxtr@record@setting@nameref
+ \protected@write\@auxout{}%
+ {\string\providecommand*{\string\glsxtr@record@nameref}[8]{}}%
+ \fi
+% \end{macrocode}
+%If any languages have been loaded, the language tag will be
+%available in \cs{CurrentTrackedLanguageTag} (provided by
+%\sty{tracklang}). For multilingual
+%documents, the required locale will have to be indicated in the
+%"sort" key when using \cs{glsxtrresourcefile}.
+% \begin{macrocode}
+ \ifdef\CurrentTrackedLanguageTag
+ {%
+ \protected@write\@auxout{}{%
+ \string\glsxtr@langtag{\CurrentTrackedLanguageTag}}%
+ }%
+ {}%
+ \protected@write\@auxout{}{\string\glsxtr@pluralsuffixes
+ {\glspluralsuffix}{\abbrvpluralsuffix}{\acrpluralsuffix}%
+ {\glsxtrabbrvpluralsuffix}}%
+ \ifdef\inputencodingname
+ {%
+ \protected@write\@auxout{}{\string\glsxtr@texencoding{\inputencodingname}}%
+ }%
+ {%
+% \end{macrocode}
+%If \sty{fontspec} has been loaded, assume UTF-8. (The encoding can
+%be changed with \cs{XeTeXinputencoding}, but I can't work out how
+%to determine the current encoding.)
+% \begin{macrocode}
+ \@ifpackageloaded{fontspec}%
+ {\protected@write\@auxout{}{\string\glsxtr@texencoding{utf8}}}%
+ {}%
+ }%
+ \protected@write\@auxout{}{\string\glsxtr@shortcutsval{\@glsxtr@shortcutsval}}%
+% \end{macrocode}
+%Prefix deferred until the beginning of the document in case it's
+%redefined later in the preamble. This is picked up by bib2gls when
+%the external option is used.
+% \begin{macrocode}
+ \AtBeginDocument
+ {\protected@write\@auxout{}{\string\glsxtr@linkprefix{\glolinkprefix}}}%
+ \let\glsxtr@writefields\relax
+% \end{macrocode}
+%If the \pkgopt{automake} option is on, try running bib2gls if
+%the aux file exists. This has to be done before the aux file is
+%opened (so package options \pkgopt[immediate]{automake} and
+%\pkgopt[true]{automake} are identical if just bib2gls is used).
+%\changes{1.14}{2017-04-18}{added check for automake}
+%\changes{1.19}{2017-09-09}{removed double-quotes around \cs{jobname}}
+%The double-quotes around \cs{jobname} have been removed (v1.19)
+%since \cs{jobname} will include double-quotes if the file name has
+%spaces.
+% \begin{macrocode}
+ \ifglsautomake
+ \IfFileExists{\jobname.aux}%
+ {\immediate\write18{bib2gls \jobname}}{}%
+% \end{macrocode}
+%If \cs{makeglossaries} is also used, allow makeindex/xindy to
+%also be run, otherwise disable the error message about requiring
+%\cs{makeglossaries} with \pkgopt[true]{automake}.
+% \begin{macrocode}
+ \ifx\@gls@doautomake\@gls@doautomake@err
+ \let\@gls@doautomake\relax
+ \fi
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@do@automake@err}
+%\changes{1.14}{2017-04-18}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@doautomake@err}{%
+ \PackageError{glossaries}{You must use
+ \string\makeglossaries\space with automake=true}
+ {%
+ Either remove the automake=true setting or
+ add \string\makeglossaries\space to your document preamble.%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Allow locations specific to a particular counter to be recorded.
+%\begin{macro}{\glsxtr@record}
+%\changes{1.08}{2016-12-13}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@record}[5]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@record@nameref}
+%\changes{1.37}{2018-11-30}{new}
+%Used with \pkgopt[nameref]{record} to include current label
+%information.
+% \begin{macrocode}
+\newcommand*{\glsxtr@record@nameref}[8]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@counterrecord}
+%\changes{1.12}{2017-02-03}{new}
+%Aux file command.
+% \begin{macrocode}
+\newcommand*{\glsxtr@counterrecord}[3]{%
+ \glsxtrfieldlistgadd{#1}{record.#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@counterrecordhook}
+%\changes{1.12}{2017-02-03}{new}
+%Hook used by \cs{@glsxtr@dorecord}.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@counterrecordhook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrRecordCounter}
+%\changes{1.12}{2017-02-03}{new}
+%Activate recording for a particular counter (identified in the
+%argument).
+% \begin{macrocode}
+\newcommand*{\GlsXtrRecordCounter}[1]{%
+ \@@glsxtr@recordcounter{#1}%
+}
+\@onlypreamble\GlsXtrRecordCounter
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@docounterrecord}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@docounterrecord}[1]{%
+ \protected@write\@auxout{}{\string\glsxtr@counterrecord
+ {\@gls@label}{#1}{\csuse{the#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrglossentry}
+%Users may prefer to have entries displayed throughout the document
+%rather than gathered together in a list. This command emulates
+%the way \cs{glossentry} behaves (without the style formatting
+%commands like \cs{item}). This needs to define \cs{currentglossary}
+%to the current glossary type (normally set at the start of
+%\cs{@printglossary}) and needs to define \cs{glscurrententrylabel}
+%to the entry's label (normally set before \cs{glossentry} and
+%\cs{subglossentry}). This needs some protection in case it's used
+%in a section heading.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrglossentry}[1]{%
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentry{#1}}%
+ {\glsentryname{#1}}%
+ {\glsxtrheadname{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrglossentry}
+%\changes{1.21}{2017-11-03}{new}
+%Another test is needed in case \cs{@glsxtrglossentry} has been
+%written to the table of contents.
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrglossentry}[1]{%
+ \glsxtrtitleorpdforheading
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \begingroup
+ \edef\glscurrententrylabel{\glsdetoklabel{#1}}%
+ \edef\currentglossary{\GlsXtrStandaloneGlossaryType}%
+ \ifglshasparent{#1}%
+ {\GlsXtrStandaloneSubEntryItem{#1}}%
+ {\glsentryitem{#1}}%
+ \GlsXtrStandaloneEntryName{#1}%
+ \endgroup
+ }%
+ }%
+ {\glsentryname{#1}}%
+ {\glsxtrheadname{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrStandaloneEntryName}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrStandaloneEntryName}[1]{%
+ \glstarget{#1}{\glossentryname{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrStandaloneGlossaryType}
+%\changes{1.31}{2018-05-09}{new}
+%To make it easier to adjust the definition of \cs{currentglossary}
+%within \cs{glsxtrglossentry}, this expands to the default
+%definition. (If redefined, it must fully expand to the appropriate
+%label.)
+% \begin{macrocode}
+\newcommand{\GlsXtrStandaloneGlossaryType}{\glsentrytype{\glscurrententrylabel}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrStandaloneSubEntryItem}
+%\changes{1.31}{2018-05-09}{new}
+%Used for sub-entries in standalone format. The argument is the
+%entry's label.
+% \begin{macrocode}
+\newcommand*{\GlsXtrStandaloneSubEntryItem}[1]{%
+ \GlsXtrIfFieldEqNum{level}{#1}{1}{\glssubentryitem{#1}}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrglossentryother}
+%\changes{1.22}{2017-11-08}{new}
+%As \cs{glsxtrglossentry} but uses a different field.
+%First argument is code to use in the header. The second argument
+%is the entry's label. The third argument is the internal field
+%label. This needs to be expandable in case it occurs in a
+%sectioning command so it can't have an optional argument.
+% \begin{macrocode}
+\newcommand*{\glsxtrglossentryother}[3]{%
+ \ifstrempty{#1}%
+ {%
+ \ifcsdef{glsxtrhead#3}%
+ {%
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentryother{#2}{#3}{#1}}%
+ {\@gls@entry@field{#2}{#3}}%
+ {\csuse{glsxtrhead#3}{#2}}%
+ }%
+ {%
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentryother{#2}{#3}{#1}}%
+ {\@gls@entry@field{#2}{#3}}%
+ {\@gls@entry@field{\NoCaseChange{#2}}{#3}}%
+ }%
+ }%
+ {%
+ \glsxtrtitleorpdforheading
+ {\@glsxtrglossentryother{#2}{#3}{#1}}%
+ {\@gls@entry@field{#2}{#3}}%
+ {#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtrglossentryother}
+%\changes{1.22}{2017-11-08}{new}
+%As \cs{@glsxtrglossentry} but uses a different field.
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrglossentryother}[3]{%
+ \glsxtrtitleorpdforheading
+ {%
+ \glsdoifexists{#1}%
+ {%
+ \begingroup
+ \edef\glscurrententrylabel{\glsdetoklabel{#1}}%
+ \edef\currentglossary{\GlsXtrStandaloneGlossaryType}%
+ \ifglshasparent{#1}%
+ {\GlsXtrStandaloneSubEntryItem{#1}}%
+ {\glsentryitem{#1}}%
+ \GlsXtrStandaloneEntryOther{#1}%
+ \endgroup
+ }%
+ }%
+ {\@gls@entry@field{#1}{#2}}%
+ {#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrStandaloneEntryOther}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrStandaloneEntryOther}[2]{%
+ \glstarget{#1}{\glossentrynameother{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossary}
+%\changes{1.08}{2016-12-13}{new}
+%\changes{1.12}{2017-02-03}{added starred form}
+%Similar to \cs{printnoidxglossary} but it displays all entries
+%defined for the given glossary without sorting.
+% \begin{macrocode}
+\newcommand*{\printunsrtglossary}{%
+ \@ifstar\s@printunsrtglossary\@printunsrtglossary
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@printunsrtglossary}
+%\changes{1.12}{2017-02-03}{new}
+%Unstarred version.
+% \begin{macrocode}
+\newcommand*{\@printunsrtglossary}[1][]{%
+ \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\s@printunsrtglossary}
+%\changes{1.12}{2017-02-03}{new}
+%Starred version.
+% \begin{macrocode}
+\newcommand*{\s@printunsrtglossary}[2][]{%
+ \begingroup
+ #2%
+ \@printglossary{type=\glsdefaulttype,#1}{\@print@unsrt@glossary}%
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossaries}
+%\changes{1.08}{2016-12-13}{new}
+%Similar to \cs{printnoidxglossaries} but it displays all entries
+%defined for the given glossary without sorting.
+% \begin{macrocode}
+\newcommand*{\printunsrtglossaries}{%
+ \forallglossaries{\@@glo@type}{\printunsrtglossary[type=\@@glo@type]}%
+}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\@print@unsrt@glossary}
+%\changes{1.08}{2016-12-13}{new}
+% \begin{macrocode}
+\newcommand*{\@print@unsrt@glossary}{%
+ \glossarysection[\glossarytoctitle]{\glossarytitle}%
+ \glossarypreamble
+% \end{macrocode}
+%check for empty list
+% \begin{macrocode}
+ \glsxtrifemptyglossary{\@glo@type}%
+ {%
+ \GlossariesExtraWarning{No entries defined in glossary `\@glo@type'}%
+ }%
+ {%
+% \end{macrocode}
+%\changes{1.16}{2017-06-15}{corrected misspelt command}
+% \begin{macrocode}
+ \key@ifundefined{glossentry}{group}%
+ {\let\@gls@getgrouptitle\@gls@noidx@getgrouptitle}%
+ {\let\@gls@getgrouptitle\@glsxtr@unsrt@getgrouptitle}%
+ \def\@gls@currentlettergroup{}%
+% \end{macrocode}
+%A loop within the tabular-like styles can cause problems, so
+%move the loop outside.
+% \begin{macrocode}
+ \def\@glsxtr@doglossary{%
+ \begin{theglossary}%
+ \glossaryheader
+ \glsresetentrylist
+ }%
+ \expandafter\@for\expandafter\glscurrententrylabel\expandafter
+ :\expandafter=\csname glolist@\@glo@type\endcsname\do{%
+ \ifdefempty{\glscurrententrylabel}
+ {}%
+ {%
+% \end{macrocode}
+%Provide a hook (for example to measure width).
+% \begin{macrocode}
+ \let\glsxtr@process\@firstofone
+ \let\printunsrtglossaryskipentry
+ \@glsxtr@printunsrtglossaryskipentry
+ \printunsrtglossaryentryprocesshook{\glscurrententrylabel}%
+% \end{macrocode}
+%Don't check group for child entries.
+% \begin{macrocode}
+ \glsxtr@process
+ {%
+ \ifglshasparent{\glscurrententrylabel}{}%
+ {%
+ \@glsxtr@checkgroup\glscurrententrylabel
+ \expandafter\appto\expandafter\@glsxtr@doglossary\expandafter
+ {\@glsxtr@groupheading}%
+ }%
+ \eappto\@glsxtr@doglossary{%
+ \noexpand\@printunsrt@glossary@handler{\glscurrententrylabel}}%
+ }%
+ }%
+ }%
+ \appto\@glsxtr@doglossary{\end{theglossary}}%
+ \printunsrtglossarypredoglossary
+ \@glsxtr@doglossary
+ }%
+ \glossarypostamble
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossaryentryprocesshook}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\printunsrtglossaryentryprocesshook}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossaryskipentry}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\printunsrtglossaryskipentry}{%
+ \PackageError{glossaries-extra}{\string\printunsrtglossaryskipentry\space
+can only be used within \string\printunsrtglossaryentryprocesshook}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossaryentryprocesshook}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@printunsrtglossaryskipentry}{%
+ \let\glsxtr@process\@gobble
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossarypredoglossary}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\printunsrtglossarypredoglossary}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@printunsrt@glossary@handler}
+%\changes{1.16}{2017-06-15}{new}
+% \begin{macrocode}
+\newcommand{\@printunsrt@glossary@handler}[1]{%
+ \xdef\glscurrententrylabel{#1}%
+ \printunsrtglossaryhandler\glscurrententrylabel
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossaryhandler}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrunsrtdo{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtriflabelinlist}
+%\begin{definition}
+%\cs{glsxtriflabelinlist}\marg{label}\marg{list}\marg{true}\marg{false}
+%\end{definition}
+%\changes{1.21}{2017-11-03}{new}
+%Might be useful for the handler to check if an entry label
+%or category label is contained in a list, so provide a user-level
+%version of \cs{@gls@ifinlist} which ensures the label and list are
+%fully expanded.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtriflabelinlist}[4]{%
+ \protected@edef\@glsxtr@doiflabelinlist{\noexpand\@gls@ifinlist{#1}{#2}}%
+ \@glsxtr@doiflabelinlist{#3}{#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\print@op@unsrtglossaryunit}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\print@op@unsrtglossaryunit}[2][]{%
+ \s@printunsrtglossary[type=\glsdefaulttype,#1]{%
+ \printunsrtglossaryunitsetup{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtglossaryunitsetup}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\printunsrtglossaryunitsetup}[1]{%
+ \renewcommand{\printunsrtglossaryhandler}[1]{%
+ \glsxtrfieldxifinlist{##1}{record.#1}{\csuse{the#1}}
+ {\glsxtrunsrtdo{##1}}%
+ {}%
+ }%
+% \end{macrocode}
+%\changes{1.20}{2017-09-11}{switched from redefining \cs{glolinkprefix} to
+% \cs{@glsxtrhypernameprefix}}
+%Only the target names should have the prefixes adjusted as \cs{gls}
+%etc need the original \cs{glolinkprefix}. The \cs{@gobble} part
+%discards \cs{glolinkprefix}.
+% \begin{macrocode}
+ \ifcsundef{theH#1}%
+ {%
+ \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{the#1}.\@gobble}%
+ }%
+ {%
+ \renewcommand*{\@glsxtrhypernameprefix}{record.#1.\csuse{theH#1}.\@gobble}%
+ }%
+ \renewcommand*{\glossarysection}[2][]{}%
+ \appto\glossarypostamble{\glspar\medskip\glspar}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\print@noop@unsrtglossaryunit}
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand{\print@noop@unsrtglossaryunit}[2][]{%
+ \PackageError{glossaries-extra}{\string\printunsrtglossaryunit\space
+ requires the record=only or record=alsoindex package option}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@unsrt@getgrouptitle}
+%\changes{1.11}{2017-01-19}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtr@unsrt@getgrouptitle}[2]{%
+ \protected@edef\@glsxtr@titlelabel{glsxtr@grouptitle@#1}%
+ \@onelevel@sanitize\@glsxtr@titlelabel
+ \ifcsdef{\@glsxtr@titlelabel}
+ {\letcs{#2}{\@glsxtr@titlelabel}}%
+ {\def#2{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrunsrtdo}
+%\changes{1.12}{2017-02-03}{new}
+%Provide a user-level call to \cs{@glsxtr@noidx@do} to make it
+%easier to define a new handler.
+% \begin{macrocode}
+\newcommand{\glsxtrunsrtdo}{\@glsxtr@noidx@do}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgroupfield}
+%\app{bib2gls} provides a supplementary field labelled
+%\texttt{secondarygroup} for secondary glossaries, so
+%provide a way of switching to that field. (The \gloskey{group}
+%key still needs checking. There's no associated key with the
+%internal field).
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrgroupfield}{group}
+% \end{macrocode}
+%\end{macro}
+%
+%The \env{tabular}-like glossary styles cause quite a problem
+%with the iterative approach. In particular for the group skip.
+%To compensate for this, the groups are now determined while
+%\cs{@glsxtr@doglossary} is being constructed rather than in the
+%handler.
+%\begin{macro}{\@glsxtr@checkgroup}
+%\changes{1.21}{2017-11-03}{new}
+%The argument is the entry's label. (This block of code was
+%formerly in \cs{@glsxtr@noidx@do}.) Now that this is no longer
+%within a tabular environment, the global definitions aren't needed.
+%The result is now stored in \cs{@glsxtr@groupheading}, which will
+%be empty if no heading is required.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@checkgroup}[1]{%
+ \def\@glsxtr@groupheading{}%
+ \key@ifundefined{glossentry}{group}%
+ {%
+ \letcs{\@gls@sort}{glo@\glsdetoklabel{#1}@sort}%
+ \expandafter\glo@grabfirst\@gls@sort{}{}\@nil
+ }%
+ {%
+% \end{macrocode}
+%\changes{1.16}{2017-06-15}{use \cs{csuse} instead of \cs{csname}}
+% \begin{macrocode}
+ \protected@edef\@glo@thislettergrp{%
+ \csuse{glo@\glsdetoklabel{#1}@\glsxtrgroupfield}}%
+ }%
+ \ifdefequal{\@glo@thislettergrp}{\@gls@currentlettergroup}%
+ {}%
+ {%
+ \ifdefempty{\@gls@currentlettergroup}{}%
+ {\def\@glsxtr@groupheading{\glsgroupskip}}%
+ \eappto\@glsxtr@groupheading{%
+ \noexpand\glsgroupheading{\expandonce\@glo@thislettergrp}%
+ }%
+ }%
+ \let\@gls@currentlettergroup\@glo@thislettergrp
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrLocationField}
+%\changes{1.37}{2018-11-30}{new}
+%Stores the internal name of the location field.
+% \begin{macrocode}
+\newcommand*{\GlsXtrLocationField}{location}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@noidx@do}
+%\changes{1.11}{2017-01-19}{new}
+%Minor modification of \cs{@gls@noidx@do} to check for location
+%field if present, but also need to check for the \gloskey{group}
+%field.
+% \begin{macrocode}
+\newcommand{\@glsxtr@noidx@do}[1]{%
+ \ifglsentryexists{#1}%
+ {%
+ \global\letcs{\@gls@loclist}{glo@\glsdetoklabel{#1}@loclist}%
+ \global\letcs{\@gls@location}{glo@\glsdetoklabel{#1}@\GlsXtrLocationField}%
+ \ifglshasparent{#1}%
+ {%
+ \gls@level=\csuse{glo@\glsdetoklabel{#1}@level}\relax
+ \ifdefvoid{\@gls@location}%
+ {%
+ \ifdefvoid{\@gls@loclist}%
+ {%
+ \subglossentry{\gls@level}{#1}{}%
+ }%
+ {%
+ \subglossentry{\gls@level}{#1}%
+ {%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+ {%
+ \subglossentry{\gls@level}{#1}{\glossaryentrynumbers{\@gls@location}}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{removed code dealing with the group}
+% \begin{macrocode}
+ \ifdefvoid{\@gls@location}%
+ {%
+ \ifdefvoid{\@gls@loclist}
+ {%
+ \glossentry{#1}{}%
+ }%
+ {%
+ \glossentry{#1}%
+ {%
+ \glossaryentrynumbers{\glsnoidxloclist{\@gls@loclist}}%
+ }%
+ }%
+ }%
+ {%
+ \glossentry{#1}%
+ {%
+ \glossaryentrynumbers{\@gls@location}%
+ }%
+ }%
+ }%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide a way to conveniently define commands that behaves like
+%\cs{gls} with a label prefix.
+%
+%It's possible that the user might want minor variations
+%with the same prefix but different default options, so
+%use a counter to provide unique inner commands.
+%\begin{macro}{\glsxtrnewgls}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcount\@glsxtrnewgls@inner
+% \end{macrocode}
+%\end{macro}
+%(The default options supplied in \meta{options} below
+%could possibly be used to form the inner control sequence name to
+%help make it unique, but it might feasibly contain
+%\gloskey[glslink]{thevalue} where the value might contain commands.)
+%
+%\begin{macro}{\@glsxtr@providenewgls}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@providenewgls}{%
+ \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@newglslike}[2]{}}%
+ \let\@glsxtr@providenewgls\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtridentifyglslike}
+%\changes{1.37}{2018-11-30}{new}
+%Identify the command given in the second argument for the benefit
+%of \gls{bib2gls}.
+% \begin{macrocode}
+\newcommand{\glsxtridentifyglslike}[2]{%
+ \ifdefequal\@glsxtr@record@setting\@glsxtr@record@setting@off
+ {}%
+ {%
+ \@glsxtr@providenewgls
+ \protected@write\@auxout{}{\string\@glsxtr@newglslike{#1}{\string#2}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrnewgls}
+%\changes{1.21}{2017-11-03}{new}
+%\begin{definition}
+%\cs{glsxtrnewgls}\oarg{options}\marg{prefix}\marg{cs}\marg{inner cs
+%name}
+%\end{definition}
+%
+% \begin{macrocode}
+\newcommand*{\@glsxtrnewgls}[4]{%
+ \ifdef{#3}%
+ {%
+ \PackageError{glossaries-extra}{Command \string#3\space already
+defined}{}%
+ }%
+ {%
+% \end{macrocode}
+%Write information to the aux file for bib2gls.
+% \begin{macrocode}
+ \glsxtridentifyglslike{#2}{#3}%
+ \ifcsdef{@#4like@#2}%
+ {%
+ \advance\@glsxtrnewgls@inner by \@ne
+ \def\@glsxtrnewgls@innercsname{@#4like\number\@glsxtrnewgls@inner @#2}%
+ }%
+ {\def\@glsxtrnewgls@innercsname{@#4like@#2}}%
+ \expandafter\newrobustcmd\expandafter*\expandafter
+ #3\expandafter{\expandafter\@gls@hyp@opt\csname\@glsxtrnewgls@innercsname\endcsname}%
+ \ifstrempty{#1}%
+ {%
+ \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{%
+ \new@ifnextchar[%
+ {\csname @#4@\endcsname{##1}{#2##2}}%
+ {\csname @#4@\endcsname{##1}{#2##2}[]}%
+ }%
+ }%
+ {%
+ \expandafter\newcommand\expandafter*\csname\@glsxtrnewgls@innercsname\endcsname[2][]{%
+ \new@ifnextchar[%
+ {\csname @#4@\endcsname{#1,##1}{#2##2}}%
+ {\csname @#4@\endcsname{#1,##1}{#2##2}[]}%
+ }%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewgls}
+%\begin{definition}
+%\cs{glsxtrnewgls}\oarg{options}\marg{prefix}\marg{cs}
+%\end{definition}
+%The first argument prepends to the options and the second argument is the prefix.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnewgls}[3][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{gls}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewglslike}
+%Provide a way to conveniently define commands that behave like
+%\cs{gls}, \cs{glspl}, \cs{Gls} and \cs{Glspl} with a label prefix.
+%The first argument prepends to the options and the second argument is the prefix.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnewglslike}[6][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{gls}%
+ \@glsxtrnewgls{#1}{#2}{#4}{glspl}%
+ \@glsxtrnewgls{#1}{#2}{#5}{Gls}%
+ \@glsxtrnewgls{#1}{#2}{#6}{Glspl}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewGLSlike}
+%Provide a way to conveniently define commands that behave like
+%\cs{GLS}, \cs{GLSpl} with a label prefix.
+%The first argument prepends to the options and the second argument is the prefix.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnewGLSlike}[4][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{GLS}%
+ \@glsxtrnewgls{#1}{#2}{#4}{GLSpl}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewrgls}
+%As \cs{glsxtrnewgls} but for \cs{rgls}.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnewrgls}[3][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{rgls}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewrglslike}
+%As \cs{glsxtrnewglslike} but for \cs{rgls} etc.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnewrglslike}[6][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{rgls}%
+ \@glsxtrnewgls{#1}{#2}{#4}{rglspl}%
+ \@glsxtrnewgls{#1}{#2}{#5}{rGls}%
+ \@glsxtrnewgls{#1}{#2}{#6}{rGlspl}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewrGLSlike}
+%\changes{1.21}{2017-11-03}{new}
+%As \cs{glsxtrnewGLSlike} but for \cs{rGLS} etc.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrnewrGLSlike}[4][]{%
+ \@glsxtrnewgls{#1}{#2}{#3}{rGLS}%
+ \@glsxtrnewgls{#1}{#2}{#4}{rGLSpl}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide easy access to record count fields.
+%\begin{macro}{\GlsXtrTotalRecordCount}
+%\changes{1.21}{2017-11-03}{new}
+%Access total record count. This is designed to
+%be expandable. The argument is the label.
+% \begin{macrocode}
+\newcommand*{\GlsXtrTotalRecordCount}[1]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@recordcount}%
+ {\csname glo@\glsdetoklabel{#1}@recordcount\endcsname}%
+ {0}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\GlsXtrRecordCount}
+%\changes{1.21}{2017-11-03}{new}
+%Access record count for a particular counter. The first argument is the label.
+%The second argument is the counter name.
+% \begin{macrocode}
+\newcommand*{\GlsXtrRecordCount}[2]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2}%
+ {\csname glo@\glsdetoklabel{#1}@recordcount.#2\endcsname}%
+ {0}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrLocationRecordCount}
+%\changes{1.21}{2017-11-03}{new}
+%Access record count for a particular counter and location.
+%The first argument is the label.
+%The second argument is the counter name.
+%The third argument is the location.
+%This command shouldn't be used if the location doesn't fully
+%expand unless \cs{glsxtrdetoklocation} can be set to something
+%sensible.
+% \begin{macrocode}
+\newcommand*{\GlsXtrLocationRecordCount}[3]{%
+ \ifcsdef{glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}}%
+ {\csname glo@\glsdetoklabel{#1}@recordcount.#2.\glsxtrdetoklocation{#3}\endcsname}%
+ {0}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdetoklocation}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrdetoklocation}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrenablerecordcount}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrenablerecordcount}{%
+ \renewcommand*{\gls}{\rgls}%
+ \renewcommand*{\Gls}{\rGls}%
+ \renewcommand*{\glspl}{\rglspl}%
+ \renewcommand*{\Glspl}{\rGlspl}%
+ \renewcommand*{\GLS}{\rGLS}%
+ \renewcommand*{\GLSpl}{\rGLSpl}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrrecordtriggervalue}
+%\changes{1.21}{2017-11-03}{new}
+%The value used by the record trigger test.
+%The argument is the entry's label.
+% \begin{macrocode}
+\newcommand*{\glsxtrrecordtriggervalue}[1]{%
+ \GlsXtrTotalRecordCount{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetRecordCountAttribute}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetRecordCountAttribute}[2]{%
+ \@for\@glsxtr@cat:=#1\do
+ {%
+ \ifdefempty{\@glsxtr@cat}{}%
+ {%
+ \glssetcategoryattribute{\@glsxtr@cat}{recordcount}{#2}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifrecordtrigger}
+%\begin{definition}
+%\cs{glsxtrifrecordtrigger}\marg{label}\marg{trigger format}\marg{normal}
+%\end{definition}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifrecordtrigger}[3]{%
+ \glshasattribute{#1}{recordcount}%
+ {%
+ \ifnum\glsxtrrecordtriggervalue{#1}>\glsgetattribute{#1}{recordcount}\relax
+ #3%
+ \else
+ #2%
+ \fi
+ }%
+ {#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@rglstrigger@record}
+%\changes{1.21}{2017-11-03}{new}
+%Still need a record to ensure that \app{bib2gls} selects the entry.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@rglstrigger@record}[3]{%
+ \edef\glslabel{\glsdetoklabel{#2}}%
+ \let\@gls@link@label\glslabel
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \def\@glsnumberformat{glstriggerrecordformat}%
+ \edef\@gls@counter{\csname glo@\glslabel @counter\endcsname}%
+ \edef\glstype{\csname glo@\glslabel @type\endcsname}%
+ \def\@glsxtr@thevalue{}%
+ \def\@glsxtr@theHvalue{\@glsxtr@thevalue}%
+ \glsxtrinitwrgloss
+ \glslinkpresetkeys
+ \setkeys{glslink}{#1}%
+ \glslinkpostsetkeys
+ \ifdefempty{\@glsxtr@thevalue}%
+ {%
+ \@gls@saveentrycounter
+ }%
+ {%
+ \let\theglsentrycounter\@glsxtr@thevalue
+ \def\theHglsentrycounter{\@glsxtr@theHvalue}%
+ }%
+ \ifglsxtrinitwrglossbefore
+ \@do@wrglossary{#2}%
+ \fi
+ #3%
+ \ifglsxtrinitwrglossbefore
+ \else
+ \@do@wrglossary{#2}%
+ \fi
+ \ifKV@glslink@local
+ \glslocalunset{#2}%
+ \else
+ \glsunset{#2}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstriggerrecordformat}
+%\changes{1.21}{2017-11-03}{new}
+%Typically won't be used as it should be recognised as a special
+%type of ignored location by \app{bib2gls}.
+% \begin{macrocode}
+\newcommand*{\glstriggerrecordformat}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rgls}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\rgls}{\@gls@hyp@opt\@rgls}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@rgls}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@rgls}[2][]{%
+ \new@ifnextchar[{\@rgls@{#1}{#2}}{\@rgls@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@rgls@}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\def\@rgls@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rglsformat{#2}{#3}}%
+ }%
+ {%
+ \@gls@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rglspl}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\rglspl}{\@gls@hyp@opt\@rglspl}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@rglspl}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@rglspl}[2][]{%
+ \new@ifnextchar[{\@rglspl@{#1}{#2}}{\@rglspl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@rglspl@}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\def\@rglspl@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rglsplformat{#2}{#3}}%
+ }%
+ {%
+ \@glspl@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rGls}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\rGls}{\@gls@hyp@opt\@rGls}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@rGls}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@rGls}[2][]{%
+ \new@ifnextchar[{\@rGls@{#1}{#2}}{\@rGls@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@rGls@}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\def\@rGls@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsformat{#2}{#3}}%
+ }%
+ {%
+ \@Gls@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rGlspl}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\rGlspl}{\@gls@hyp@opt\@rGlspl}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@rGlspl}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@rGlspl}[2][]{%
+ \new@ifnextchar[{\@rGlspl@{#1}{#2}}{\@rGlspl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@rGlspl@}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\def\@rGlspl@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rGlsplformat{#2}{#3}}%
+ }%
+ {%
+ \@Glspl@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rGLS}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\rGLS}{\@gls@hyp@opt\@rGLS}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@rGLS}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@rGLS}[2][]{%
+ \new@ifnextchar[{\@rGLS@{#1}{#2}}{\@rGLS@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@rGLS@}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\def\@rGLS@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSformat{#2}{#3}}%
+ }%
+ {%
+ \@GLS@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rGLSpl}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\rGLSpl}{\@gls@hyp@opt\@rGLSpl}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@rGLSpl}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\@rGLSpl}[2][]{%
+ \new@ifnextchar[{\@rGLSpl@{#1}{#2}}{\@rGLSpl@{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@rGLSpl@}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\def\@rGLSpl@#1#2[#3]{%
+ \glsxtrifrecordtrigger{#2}%
+ {%
+ \@glsxtr@rglstrigger@record{#1}{#2}{\rGLSplformat{#2}{#3}}%
+ }%
+ {%
+ \@GLSpl@{#1}{#2}[#3]%
+ }%
+}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rglsformat}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\rglsformat}[2]{%
+ \glsifregular{#1}
+ {\glsentryfirst{#1}}%
+ {\ifglshaslong{#1}{\glsentrylong{#1}}{\glsentryfirst{#1}}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rglsplformat}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\rglsplformat}[2]{%
+ \glsifregular{#1}
+ {\glsentryfirstplural{#1}}%
+ {\ifglshaslong{#1}{\glsentrylongplural{#1}}{\glsentryfirstplural{#1}}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rGlsformat}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\rGlsformat}[2]{%
+ \glsifregular{#1}
+ {\Glsentryfirst{#1}}%
+ {\ifglshaslong{#1}{\Glsentrylong{#1}}{\Glsentryfirst{#1}}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rGlsplformat}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\rGlsplformat}[2]{%
+ \glsifregular{#1}
+ {\Glsentryfirstplural{#1}}%
+ {\ifglshaslong{#1}{\Glsentrylongplural{#1}}{\Glsentryfirstplural{#1}}}#2%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rGLSformat}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\rGLSformat}[2]{%
+ \expandafter\mfirstucMakeUppercase\expandafter{\rglsformat{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\rGLSplformat}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\rGLSplformat}[2]{%
+ \expandafter\mfirstucMakeUppercase\expandafter{\rglsplformat{#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Link Counting}
+%\label{sec:linkcount}
+%This is different to the entry counting provided by the base
+%package (which counts the number of times the first use flag is
+%unset). Instead, this method hooks into \cs{@gls@link} (through
+%\cs{glsxtr@inc@linkcount}) to increment an associated counter.
+%To preserve resources, the counter is only defined if it needs to
+%be incremented. This method is independent of the presence of
+%hyperlinks. (The \qt{link} part of the name refers to \cs{@gls@link}
+%not \cs{hyperlink}.)
+%
+%\begin{macro}{\@glsxtr@do@inc@linkcount}
+%\changes{1.26}{2018-01-05}{new}
+%This performs the actual incrementing and counter definition.
+%The counter is given by \cs{c@glsxtr@linkcount@\meta{label}} where
+%\meta{label} is the entry's label. Since this is performed within
+%\cs{@gls@link} the label can be accessed with \cs{glslabel}.
+% \begin{macrocode}
+\newcommand{\@glsxtr@do@inc@linkcount}{%
+% \end{macrocode}
+%Does this entry have the \catattr{linkcount} attribute set?
+% \begin{macrocode}
+ \glsifattribute{\glslabel}{linkcount}{true}%
+ {%
+% \end{macrocode}
+%Does the counter exist?
+% \begin{macrocode}
+ \ifcsdef{c@glsxtr@linkcount@\glslabel}{}%
+ {%
+% \end{macrocode}
+%Counter doesn't exist, so define it.
+% \begin{macrocode}
+ \newcounter{glsxtr@linkcount@\glslabel}%
+% \end{macrocode}
+%If \catattr{linkcountmaster} is set, add to counter reset.
+% \begin{macrocode}
+ \glshasattribute{\glslabel}{linkcountmaster}%
+ {%
+% \end{macrocode}
+%Need to ensure values are fully expanded.
+% \begin{macrocode}
+ \begingroup
+ \edef\x{\endgroup\noexpand\@addtoreset{glsxtr@linkcount@\glslabel}%
+ {\glsgetattribute{\glslabel}{linkcountmaster}}}%
+ \x
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% Increment counter:
+% \begin{macrocode}
+ \glsxtrinclinkcounter{glsxtr@linkcount@\glslabel}%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrinclinkcounter}
+%\changes{1.26}{2018-01-05}{new}
+%May be redefined to use \cs{refstepcounter} if required.
+% \begin{macrocode}
+\newcommand*{\glsxtrinclinkcounter}[1]{\stepcounter{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrLinkCounterValue}
+%\changes{1.26}{2018-01-05}{new}
+%Expands to the associated link counter register or 0 if not
+%defined.
+% \begin{macrocode}
+\newcommand*{\GlsXtrLinkCounterValue}[1]{%
+ \ifcsundef{c@glsxtr@linkcount@#1}{0}{\csname c@glsxtr@linkcount@#1\endcsname}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrTheLinkCounter}
+%\changes{1.26}{2018-01-05}{new}
+%Expands to the display value of the associated link counter or 0 if not
+%defined.
+% \begin{macrocode}
+\newcommand*{\GlsXtrTheLinkCounter}[1]{%
+ \ifcsundef{theglsxtr@linkcount@#1}{0}%
+ {\csname theglsxtr@linkcount@#1\endcsname}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfLinkCounterDef}
+%\changes{1.26}{2018-01-05}{new}
+%Tests if the counter has been defined
+% \begin{macrocode}
+\newcommand*{\GlsXtrIfLinkCounterDef}[3]{%
+ \ifcsundef{theglsxtr@linkcount@#1}{#3}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrLinkCounterName}
+%\changes{1.26}{2018-01-05}{new}
+%Expands to the associated link counter name. (No check for
+%existence.)
+% \begin{macrocode}
+\newcommand*{\GlsXtrLinkCounterName}[1]{glsxtr@linkcount@#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrEnableLinkCounting}
+%\changes{1.26}{2018-01-05}{new}
+%\begin{definition}
+%\cs{GlsXtrEnableLinkCounting}\oarg{master counter}\marg{categories}
+%\end{definition}
+%Enable link counting for the given categories.
+% \begin{macrocode}
+\newcommand*{\GlsXtrEnableLinkCounting}[2][]{%
+ \let\glsxtr@inc@linkcount\@glsxtr@do@inc@linkcount
+ \@for\@glsxtr@label:=#2\do
+ {%
+ \glssetcategoryattribute{\@glsxtr@label}{linkcount}{true}%
+ \ifstrempty{#1}{}%
+ {%
+ \ifcsundef{c@#1}%
+ {\@nocounterr{#1}}%
+ {\glssetcategoryattribute{\@glsxtr@label}{linkcountmaster}{#1}}%
+ }%
+ }%
+}
+\@onlypreamble\GlsXtrEnableLinkCounting
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Integration with glossaries-accsupp}
+% Provide better integration with the \sty{glossaries-accsupp}
+% package. (Must be loaded before the main code of
+% \styfmt{glossaries-extra} either explicitly or through the
+% \pkgopt{accsupp} package option.)
+%
+% These commands have their definitions set according to whether
+% or not \styfmt{glossaries-extra} has been loaded.
+%\changes{0.5.2}{2015-12-08}{fixed typo in glossaries-accsupp and tidied up code to use
+% just one \cs{@ifpackageloaded}}
+% \begin{macrocode}
+\@ifpackageloaded{glossaries-accsupp}
+{
+% \end{macrocode}
+% Define (or redefine) commands to use the accessibility
+% information.
+%\begin{macro}{\glsaccessname}
+% Display the \gloskey{name} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \glsentryname{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessname}
+% Display the \gloskey{name} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \Glsentryname{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessname}
+% Display the \gloskey{name} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessname}[1]{%
+ \glsnameaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryname{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesstext}
+% Display the \gloskey{text} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \glsentrytext{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesstext}
+% Display the \gloskey{text} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \Glsentrytext{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesstext}
+% Display the \gloskey{text} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesstext}[1]{%
+ \glstextaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrytext{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessplural}
+% Display the \gloskey{plural} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \glsentryplural{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessplural}
+% Display the \gloskey{plural} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \Glsentryplural{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessplural}
+% Display the \gloskey{plural} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessplural}[1]{%
+ \glspluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryplural{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfirst}
+% Display the \gloskey{first} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \glsentryfirst{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfirst}
+% Display the \gloskey{first} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \Glsentryfirst{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfirst}
+% Display the \gloskey{first} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfirst}[1]{%
+ \glsfirstaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryfirst{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfirstplural}
+% Display the \gloskey{firstplural} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \glsentryfirstplural{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfirstplural}
+% Display the \gloskey{firstplural} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \Glsentryfirstplural{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfirstplural}
+% Display the \gloskey{firstplural} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfirstplural}[1]{%
+ \glsfirstpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryfirstplural{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesssymbol}
+% Display the \gloskey{symbol} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \glsentrysymbol{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesssymbol}
+% Display the \gloskey{symbol} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \Glsentrysymbol{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesssymbol}
+% Display the \gloskey{symbol} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesssymbol}[1]{%
+ \glssymbolaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrysymbol{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesssymbolplural}
+% Display the \gloskey{symbolplural} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \glsentrysymbolplural{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesssymbolplural}
+% Display the \gloskey{symbolplural} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \Glsentrysymbolplural{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesssymbolplural}
+% Display the \gloskey{symbolplural} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesssymbolplural}[1]{%
+ \glssymbolpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrysymbolplural{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessdesc}
+% Display the \gloskey{desc} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \glsentrydesc{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessdesc}
+% Display the \gloskey{desc} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \Glsentrydesc{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessdesc}
+% Display the \gloskey{desc} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessdesc}[1]{%
+ \glsdescriptionaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrydesc{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessdescplural}
+% Display the \gloskey{descplural} value (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \glsentrydescplural{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessdescplural}
+% Display the \gloskey{descplural} value (no link and no check for existence)
+% with the first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \Glsentrydescplural{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessdescplural}
+% Display the \gloskey{descplural} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessdescplural}[1]{%
+ \glsdescriptionpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrydescplural{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessshort}
+% Display the short form (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessshort}[1]{%
+ \glsshortaccessdisplay
+ {%
+ \glsentryshort{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessshort}
+% Display the short form with first letter converted to uppercase
+% (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessshort}[1]{%
+ \glsshortaccessdisplay
+ {%
+ \Glsentryshort{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessshort}
+% Display the \gloskey{short} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessshort}[1]{%
+ \glsshortaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryshort{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessshortpl}
+% Display the short plural form (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccessshortpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \glsentryshortpl{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessshortpl}
+% Display the short plural form with first letter converted to
+% uppercase (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\Glsaccessshortpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \Glsentryshortpl{#1}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessshortpl}
+% Display the \gloskey{shortplural} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessshortpl}[1]{%
+ \glsshortpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentryshortpl{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesslong}
+% Display the long form (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccesslong}[1]{%
+ \glslongaccessdisplay{\glsentrylong{#1}}{#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesslong}
+% Display the long form (no link and no check for existence).
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+
+ \newcommand*{\Glsaccesslong}[1]{%
+ \glslongaccessdisplay{\Glsentrylong{#1}}{#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesslong}
+% Display the \gloskey{long} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesslong}[1]{%
+ \glslongaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrylong{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesslongpl}
+% Display the long plural form (no link and no check for existence).
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\glsaccesslongpl}[1]{%
+ \glslongpluralaccessdisplay{\glsentrylongpl{#1}}{#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesslongpl}
+% Display the long plural form (no link and no check for existence).
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+
+ \newcommand*{\Glsaccesslongpl}[1]{%
+ \glslongpluralaccessdisplay{\Glsentrylongpl{#1}}{#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesslongpl}
+% Display the \gloskey{longplural} value (no link and no check for existence)
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesslongpl}[1]{%
+ \glslongpluralaccessdisplay
+ {%
+ \mfirstucMakeUppercase{\glsentrylongpl{#1}}%
+ }%
+ {#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+% Keys for accessibility support.
+% \begin{macrocode}
+ \define@key{glsxtrabbrv}{access}{%
+ \def\@gls@nameaccess{#1}%
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \define@key{glsxtrabbrv}{textaccess}{%
+ \def\@gls@textaccess{#1}%
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \define@key{glsxtrabbrv}{firstaccess}{%
+ \def\@gls@firstaccess{#1}%
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \define@key{glsxtrabbrv}{shortaccess}{%
+ \def\@gls@shortaccess{#1}%
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \define@key{glsxtrabbrv}{shortpluralaccess}{%
+ \def\@gls@shortaccesspl{#1}%
+ }
+% \end{macrocode}
+%\begin{macro}{\@gls@initaccesskeys}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+ \newcommand*{\@gls@initaccesskeys}{%
+ \def\@gls@nameaccess{}%
+ \def\@gls@textaccess{}%
+ \def\@gls@firstaccess{}%
+ \def\@gls@shortaccess{}%
+ \def\@gls@shortaccesspl{}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@ifaccessattribute@set}
+%\begin{definition}
+%\cs{\@gls@ifaccessattribute@set}\marg{attribute}\marg{true}\marg{false}
+%\end{definition}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+\newcommand*{\@gls@ifaccessattribute@set}[3]{%
+ \glsifcategoryattribute{\glscategorylabel}{access#1}{true}%
+ {#2}%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{access#1}{false}%
+ {#3}%
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{#1}{true}%
+ {#2}%
+ {#3}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@setup@default@short@access}
+%\changes{1.31}{2018-05-09}{new}
+%Assign the default value of the \gloskey{shortaccess} key. The
+%argument is the short value passed to \cs{newabbreviation}.
+% \begin{macrocode}
+ \newcommand{\@gls@setup@default@short@access}[1]{%
+% \end{macrocode}
+%Check if the \catattr{accessinsertdots} attribute has been set but
+%only if \gloskey{shortaccess} hasn't been set.
+% \begin{macrocode}
+ \ifdefempty\@gls@shortaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{accessinsertdots}{true}%
+ {%
+ \@glsxtr@insertdots\@gls@shortaccess{#1}%
+ \eappto\ExtraCustomAbbreviationFields{%
+ shortaccess={\expandonce\@gls@shortaccess},}%
+ }%
+ {}%
+ }%
+ {}%
+% \end{macrocode}
+%If the \gloskey{shortaccess} field has been set but
+%\gloskey{shortaccessplural} hasn't been set, assign plural form.
+% \begin{macrocode}
+ \ifdefempty\@gls@shortaccess
+ {}%
+ {%
+ \ifdefempty\@gls@shortaccesspl
+ {%
+ \@gls@ifaccessattribute@set{aposplural}%
+ {%
+ \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{%
+ \@gls@shortaccess'\abbrvpluralsuffix}%
+ }%
+ {%
+ \@gls@ifaccessattribute@set{noshortplural}%
+ {%
+ \let\@gls@shortaccesspl\@gls@shortaccess
+ }%
+ {%
+ \expandafter\def\expandafter\@gls@shortaccesspl\expandafter{%
+ \@gls@shortaccess\abbrvpluralsuffix}%
+ }%
+ }%
+ \eappto\ExtraCustomAbbreviationFields{%
+ shortpluralaccess={\expandonce\@gls@shortaccesspl},}%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+%If \gloskey{access} key hasn't been set, check if the
+%\catattr{nameshortaccess} attribute has been set.
+% \begin{macrocode}
+ \ifdefempty\@gls@nameaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{nameshortaccess}{true}%
+ {%
+% \end{macrocode}
+%Do nothing if the \gloskey{shortaccess} key hasn't been set.
+% \begin{macrocode}
+ \ifdefempty\@gls@shortaccess
+ {}%
+ {%
+ \eappto\ExtraCustomAbbreviationFields{%
+ access={\expandonce\@gls@shortaccess},%
+ }%
+ }%
+ }%
+ {}%
+ }%
+ {}%
+% \end{macrocode}
+%If \gloskey{textaccess} key hasn't been set, check if the
+%\catattr{textshortaccess} attribute has been set.
+% \begin{macrocode}
+ \ifdefempty\@gls@textaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{textshortaccess}{true}%
+ {%
+% \end{macrocode}
+%Do nothing if the \gloskey{shortaccess} key hasn't been set.
+% \begin{macrocode}
+ \ifdefempty\@gls@shortaccess
+ {}%
+ {%
+ \eappto\ExtraCustomAbbreviationFields{%
+ textaccess={\expandonce\@gls@shortaccess},%
+ }%
+ }%
+ }%
+ {}%
+ }%
+ {}%
+% \end{macrocode}
+%If \gloskey{firstaccess} key hasn't been set, check if the
+%\catattr{firstshortaccess} attribute has been set.
+% \begin{macrocode}
+ \ifdefempty\@gls@firstaccess
+ {%
+ \glsifcategoryattribute{\glscategorylabel}{firstshortaccess}{true}%
+ {%
+% \end{macrocode}
+%Do nothing if the \gloskey{shortaccess} key hasn't been set.
+% \begin{macrocode}
+ \ifdefempty\@gls@shortaccess
+ {}%
+ {%
+ \eappto\ExtraCustomAbbreviationFields{%
+ firstaccess={\expandonce\@gls@shortaccess},%
+ }%
+ }%
+ }%
+ {}%
+ }%
+ {}%
+ }
+% \end{macrocode}
+%\end{macro}
+% End of if accsupp part
+% \begin{macrocode}
+}
+{
+% \end{macrocode}
+% No accessibility support. Just define these commands to do
+% \cs{glsentry}\meta{xxx}
+%\begin{macro}{\glsaccessname}
+% Display the \gloskey{name} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccessname}[1]{\glsentryname{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessname}
+% Display the \gloskey{name} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccessname}[1]{\Glsentryname{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessname}
+% Display the \gloskey{name} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessname}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryname{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesstext}
+% Display the \gloskey{text} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccesstext}[1]{\glsentrytext{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesstext}
+% Display the \gloskey{text} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccesstext}[1]{\Glsentrytext{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesstext}
+% Display the \gloskey{text} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesstext}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrytext{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessplural}
+% Display the \gloskey{plural} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccessplural}[1]{\glsentryplural{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessplural}
+% Display the \gloskey{plural} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccessplural}[1]{\Glsentryplural{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessplural}
+% Display the \gloskey{plural} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessplural}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryplural{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfirst}
+% Display the \gloskey{first} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccessfirst}[1]{\glsentryfirst{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfirst}
+% Display the \gloskey{first} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfirst}[1]{\Glsentryfirst{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfirst}
+% Display the \gloskey{first} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfirst}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryfirst{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessfirstplural}
+% Display the \gloskey{firstplural} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccessfirstplural}[1]{\glsentryfirstplural{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessfirstplural}
+% Display the \gloskey{firstplural} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccessfirstplural}[1]{\Glsentryfirstplural{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessfirstplural}
+% Display the \gloskey{firstplural} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessfirstplural}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryfirstplural{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesssymbol}
+% Display the \gloskey{symbol} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccesssymbol}[1]{\glsentrysymbol{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesssymbol}
+% Display the \gloskey{symbol} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccesssymbol}[1]{\Glsentrysymbol{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesssymbol}
+% Display the \gloskey{symbol} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesssymbol}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrysymbol{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesssymbolplural}
+% Display the \gloskey{symbolplural} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccesssymbolplural}[1]{\glsentrysymbolplural{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesssymbolplural}
+% Display the \gloskey{symbolplural} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccesssymbolplural}[1]{\Glsentrysymbolplural{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesssymbolplural}
+% Display the \gloskey{symbolplural} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesssymbolplural}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrysymbolplural{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessdesc}
+% Display the \gloskey{desc} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccessdesc}[1]{\glsentrydesc{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessdesc}
+% Display the \gloskey{desc} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccessdesc}[1]{\Glsentrydesc{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessdesc}
+% Display the \gloskey{desc} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessdesc}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrydesc{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessdescplural}
+% Display the \gloskey{descplural} value (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccessdescplural}[1]{\glsentrydescplural{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessdescplural}
+% Display the \gloskey{descplural} value (no link and no check for existence)
+% with the first letter converted to upper case.
+% \begin{macrocode}
+ \newcommand*{\Glsaccessdescplural}[1]{\Glsentrydescplural{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessdescplural}
+% Display the \gloskey{descplural} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessdescplural}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrydescplural{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessshort}
+% Display the short form (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccessshort}[1]{\glsentryshort{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessshort}
+% Display the short form with first letter converted to uppercase
+% (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\Glsaccessshort}[1]{\Glsentryshort{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessshort}
+% Display the \gloskey{short} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessshort}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryshort{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccessshortpl}
+% Display the short plural form (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccessshortpl}[1]{\glsentryshortpl{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccessshortpl}
+% Display the short plural form with first letter converted to
+% uppercase (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\Glsaccessshortpl}[1]{\Glsentryshortpl{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccessshortpl}
+% Display the \gloskey{shortplural} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccessshortpl}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentryshortpl{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesslong}
+% Display the long form (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccesslong}[1]{\glsentrylong{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesslong}
+% Display the long form (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\Glsaccesslong}[1]{\Glsentrylong{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesslong}
+% Display the \gloskey{long} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesslong}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrylong{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsaccesslongpl}
+% Display the long plural form (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\glsaccesslongpl}[1]{\glsentrylongpl{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsaccesslongpl}
+% Display the long plural form (no link and no check for existence).
+% \begin{macrocode}
+ \newcommand*{\Glsaccesslongpl}[1]{\Glsentrylongpl{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSaccesslongpl}
+% Display the \gloskey{longplural} value (no link and no check for existence).
+% converted to upper case.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+ \newcommand*{\GLSaccesslongpl}[1]{%
+ \protect\mfirstucMakeUppercase{\glsentrylongpl{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@initaccesskeys}
+%\changes{1.31}{2018-05-09}{new}
+%This does nothing if there's no accessibility support.
+% \begin{macrocode}
+ \newcommand*{\@gls@initaccesskeys}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@setup@default@short@access}
+%\changes{1.31}{2018-05-09}{new}
+%This does nothing if there's no accessibility support.
+% \begin{macrocode}
+ \newcommand{\@gls@setup@default@short@access}[1]{}%
+% \end{macrocode}
+% End of else part
+% \begin{macrocode}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Categories}
+%\begin{macro}{\glscategory}
+% Add a new storage key that can be used to indicate a category. The
+% default category is \category{general}.
+% \begin{macrocode}
+\glsaddstoragekey{category}{general}{\glscategory}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifcategory}
+% Convenient shortcut to determine if an entry has the given
+% category.
+% \begin{macrocode}
+\newcommand{\glsifcategory}[4]{%
+ \ifglsfieldeq{#1}{category}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Categories can have attributes.
+%\begin{macro}{\glssetcategoryattribute}
+%\begin{definition}
+%\cs{glssetcategoryattribute}\marg{category}\marg{attribute-label}\marg{value}
+%\end{definition}
+% Set (or override if already set) an attribute for the given
+% category.
+% \begin{macrocode}
+\newcommand*{\glssetcategoryattribute}[3]{%
+ \csdef{@glsxtr@categoryattr@@#1@#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgetcategoryattribute}
+%\begin{definition}
+%\cs{glsgetcategoryattribute}\marg{category}\marg{attribute-label}
+%\end{definition}
+% Get the value of the given attribute for the given
+% category. Does nothing if the attribute isn't defined.
+% \begin{macrocode}
+\newcommand*{\glsgetcategoryattribute}[2]{%
+ \csuse{@glsxtr@categoryattr@@#1@#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glshascategoryattribute}
+%\begin{definition}
+%\cs{glshascategoryattribute}\marg{category}\marg{attribute-label}\marg{true}\marg{false}
+%\end{definition}
+%\changes{0.5}{2015-12-07}{new}
+% Tests if the category has the given attribute set.
+% \begin{macrocode}
+\newcommand*{\glshascategoryattribute}[4]{%
+ \ifcsvoid{@glsxtr@categoryattr@@#1@#2}{#4}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetattribute}
+%\begin{definition}
+%\cs{glssetattribute}\marg{entry label}\marg{attribute-label}\marg{value}
+%\end{definition}
+% Short cut where the category label is obtained from the entry
+% information.
+% \begin{macrocode}
+\newcommand*{\glssetattribute}[3]{%
+ \glssetcategoryattribute{\glscategory{#1}}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgetattribute}
+%\begin{definition}
+%\cs{glsgetattribute}\marg{entry label}\marg{attribute-label}
+%\end{definition}
+% Short cut where the category label is obtained from the entry
+% information.
+% \begin{macrocode}
+\newcommand*{\glsgetattribute}[2]{%
+ \glsgetcategoryattribute{\glscategory{#1}}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glshasattribute}
+%\begin{definition}
+%\cs{glshasattribute}\marg{entry
+%label}\marg{attribute-label}\marg{true}\marg{false}
+%\end{definition}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{0.5.4}{2015-12-15}{added check for entry's existence}
+% Short cut to test if the given attribute has been set where the
+% category label is obtained from the entry information.
+% \begin{macrocode}
+\newcommand*{\glshasattribute}[4]{%
+ \ifglsentryexists{#1}%
+ {\glshascategoryattribute{\glscategory{#1}}{#2}{#3}{#4}}%
+ {#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifcategoryattribute}
+%\begin{definition}
+%\cs{glsifcategoryattribute}\marg{category}\marg{attribute-label}\marg{value}\marg{true
+%part}\marg{false part}
+%\end{definition}
+% True if category has the attribute with the given value.
+% \begin{macrocode}
+\newcommand{\glsifcategoryattribute}[5]{%
+ \ifcsundef{@glsxtr@categoryattr@@#1@#2}%
+ {#5}%
+ {\ifcsstring{@glsxtr@categoryattr@@#1@#2}{#3}{#4}{#5}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifattribute}
+%\begin{definition}
+%\cs{glsifattribute}\marg{entry label}\marg{attribute-label}\marg{value}\marg{true
+%part}\marg{false part}
+%\end{definition}
+%Short cut to determine if the given entry has a category with the
+%given attribute set.
+%\changes{0.5.4}{2015-12-15}{added check for entry's existence}
+% \begin{macrocode}
+\newcommand{\glsifattribute}[5]{%
+ \ifglsentryexists{#1}%
+ {\glsifcategoryattribute{\glscategory{#1}}{#2}{#3}{#4}{#5}}%
+ {#5}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Set attributes for the default \category{general} category:
+% \begin{macrocode}
+\glssetcategoryattribute{general}{regular}{true}
+% \end{macrocode}
+% Acronyms are regular by default, since they're typically just
+% treated like normal words.
+% \begin{macrocode}
+\glssetcategoryattribute{acronym}{regular}{true}
+% \end{macrocode}
+%
+%\begin{macro}{\glssetregularcategory}
+%Convenient shortcut to add the regular attribute.
+% \begin{macrocode}
+\newcommand*{\glssetregularcategory}[1]{%
+ \glssetcategoryattribute{#1}{regular}{true}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifregularcategory}
+%\begin{definition}
+%\cs{glsifregularcategory}\marg{category}\marg{true part}\marg{false part}
+%\end{definition}
+% Short cut to determine if a category has the regular attribute
+% explicitly set to true.
+% \begin{macrocode}
+\newcommand{\glsifregularcategory}[3]{%
+ \glsifcategoryattribute{#1}{regular}{true}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifnotregularcategory}
+%\begin{definition}
+%\cs{glsifnotregularcategory}\marg{category}\marg{true part}\marg{false part}
+%\end{definition}
+% Short cut to determine if a category has the regular attribute
+% explicitly set to false.
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand{\glsifnotregularcategory}[3]{%
+ \glsifcategoryattribute{#1}{regular}{false}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifregular}
+%\begin{definition}
+%\cs{glsifregular}\marg{entry label}\marg{true part}\marg{false part}
+%\end{definition}
+% Short cut to determine if an entry has a regular attribute set to
+% true.
+% \begin{macrocode}
+\newcommand{\glsifregular}[3]{%
+ \glsifregularcategory{\glscategory{#1}}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsifnotregular}
+%\begin{definition}
+%\cs{glsifnotregular}\marg{entry label}\marg{true part}\marg{false part}
+%\end{definition}
+% Short cut to determine if an entry has a regular attribute set to
+% false.
+% \begin{macrocode}
+\newcommand{\glsifnotregular}[3]{%
+ \glsifnotregularcategory{\glscategory{#1}}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsforeachincategory}
+%\begin{definition}
+%\cs{glsforeachincategory}\oarg{glossary
+%labels}\marg{category-label}\marg{glossary-cs}\marg{label-cs}\marg{body}
+%\end{definition}
+% Iterates through all entries in all the glossaries (or just those
+% listed in \meta{glossary labels}) and does \meta{body} if the
+% category matches \meta{category-label}. The control sequences
+% \meta{glossary-cs} and \meta{label-cs} may be used in \meta{body}
+% to access the glossary label and entry label for the current
+% iteration.
+% \begin{macrocode}
+\newcommand{\glsforeachincategory}[5][\@glo@types]{%
+ \forallglossaries[#1]{#3}%
+ {%
+ \forglsentries[#3]{#4}%
+ {%
+ \glsifcategory{#4}{#2}{#5}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsforeachwithattribute}
+%\begin{definition}
+%\cs{glsforeachwithattribute}\oarg{glossary
+%labels}\marg{attribute-label}\marg{attribute-value}\marg{glossary-cs}\marg{label-cs}\marg{body}
+%\end{definition}
+% Iterates through all entries in all the glossaries (or just those
+% listed in \meta{glossary labels}) and does \meta{body} if the
+% category attribute \meta{attribute-label} matches
+% \meta{attribute-value}. The control sequences
+% \meta{glossary-cs} and \meta{label-cs} may be used in \meta{body}
+% to access the glossary label and entry label for the current
+% iteration.
+% \begin{macrocode}
+\newcommand{\glsforeachwithattribute}[6][\@glo@types]{%
+ \forallglossaries[#1]{#4}%
+ {%
+ \forglsentries[#4]{#5}%
+ {%
+ \glsifattribute{#5}{#2}{#3}{#6}{}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% If \cs{newterm} has been defined, redefine it so that it
+% automatically sets the category label to \category{index} and add
+% \cs{glsxtrpostdescription}.
+% \begin{macrocode}
+\ifdef\newterm
+{%
+% \end{macrocode}
+%\begin{macro}{\newterm}
+%\changes{0.4}{2015-12-03}{fixed name argument}
+% \begin{macrocode}
+ \renewcommand*{\newterm}[2][]{%
+ \newglossaryentry{#2}%
+ {type={index},category=index,name={#2},%
+ description={\glsxtrpostdescription\nopostdesc},#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+% Indexed terms are regular by default.
+% \begin{macrocode}
+ \glssetcategoryattribute{index}{regular}{true}
+% \end{macrocode}
+%\begin{macro}{\glsxtrpostdescindex}
+% \begin{macrocode}
+ \newcommand*{\glsxtrpostdescindex}{}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+}
+{}
+% \end{macrocode}
+%
+%If the \pkgopt{symbols} package option was used, define a similar
+%command for symbols, but set the default sort to the label rather
+%than the name as the symbols will typically contain commands that
+%will confuse makeindex and xindy.
+% \begin{macrocode}
+\ifdef\printsymbols
+{%
+% \end{macrocode}
+%\begin{macro}{\glsxtrnewsymbol}
+%\changes{0.4}{2015-12-03}{added extra argument}
+% Unlike \cs{newterm}, this has a separate argument for the label
+% (since the symbol will likely contain commands).
+% \begin{macrocode}
+ \newcommand*{\glsxtrnewsymbol}[3][]{%
+ \newglossaryentry{#2}{name={#3},sort={#2},type=symbols,category=symbol,#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+% Symbols are regular by default.
+% \begin{macrocode}
+ \glssetcategoryattribute{symbol}{regular}{true}
+% \end{macrocode}
+%\begin{macro}{\glsxtrpostdescsymbol}
+% \begin{macrocode}
+ \newcommand*{\glsxtrpostdescsymbol}{}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+}
+{}
+% \end{macrocode}
+%
+% Similar for the numbers option.
+% \begin{macrocode}
+\ifdef\printnumbers
+{%
+% \end{macrocode}
+%\begin{macro}{\glsxtrnewnumber}
+%\changes{0.4}{2015-12-03}{added extra argument}
+% \begin{macrocode}
+\ifdef\printnumbers
+ \newcommand*{\glsxtrnewnumber}[3][]{%
+ \newglossaryentry{#2}{name={#3},sort={#2},type=numbers,category=number,#1}%
+ }
+% \end{macrocode}
+%\end{macro}
+% Numbers are regular by default.
+% \begin{macrocode}
+ \glssetcategoryattribute{number}{regular}{true}
+% \end{macrocode}
+%\begin{macro}{\glsxtrpostdescnumber}
+% \begin{macrocode}
+ \newcommand*{\glsxtrpostdescnumber}{}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+}
+{}
+% \end{macrocode}
+%
+%\begin{macro}{\glsxtrsetcategory}
+% Set the category for all listed labels. The first argument is the
+% list of entry labels and the second argument is the category label.
+% \begin{macrocode}
+\newcommand*{\glsxtrsetcategory}[2]{%
+ \@for\@glsxtr@label:=#1\do
+ {%
+ \glsfieldxdef{\@glsxtr@label}{category}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsetcategoryforall}
+% Set the category for all entries in the listed glossaries. The first argument
+% is the list of glossary labels and the second argument is the category label.
+% \begin{macrocode}
+\newcommand*{\glsxtrsetcategoryforall}[2]{%
+ \forallglossaries[#1]{\@glsxtr@type}{%
+ \forglsentries[\@glsxtr@type]{\@glsxtr@label}%
+ {%
+ \glsfieldxdef{\@glsxtr@label}{category}{#2}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfieldtitlecase}
+%\begin{definition}
+%\cs{glsxtrfieldtitlecase}\marg{label}\marg{field}
+%\end{definition}
+% Apply title casing to the contents of the given field.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldtitlecase}[2]{%
+ \expandafter\glsxtrfieldtitlecasecs\expandafter
+ {\csname glo@\glsdetoklabel{#1}@#2\endcsname}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfieldtitlecasecs}
+%The command used by \cs{glsxtrfieldtitlecase}. May be
+%redefined to use a different command, for example,
+%\cs{xcapitalisefmtwords}.
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrfieldtitlecasecs}[1]{\xcapitalisewords{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide a convenient way to modify glossary styles without having
+% to define a new style just to convert the first letter of fields
+% to upper case.
+%\begin{macro}{\glossentrydesc}
+% If the \catattr{glossdesc} attribute is \qt{firstuc} convert first
+% letter to upper case. If the attribute is \qt{title} use title
+% case.
+% \begin{macrocode}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+% \end{macrocode}
+% As from version 1.04, allow the \catattr{glossdescfont} attribute
+% to determine the font applied.
+%\changes{1.04}{2016-05-02}{added glossdescfont attribute check}
+% \begin{macrocode}
+ \glshasattribute{#1}{glossdescfont}%
+ {%
+ \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossdescfont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossdescfont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossdescfont attribute
+ for entry `#1'. Ignoring}%
+ \let\@glsxtr@glossdescfont\@firstofone
+ }%
+ }%
+ {\let\@glsxtr@glossdescfont\@firstofone}%
+ \glsifattribute{#1}{glossdesc}{firstuc}%
+ {%
+ \@glsxtr@glossdescfont{\Glsaccessdesc{#1}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossdesc}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \glsdescriptionaccessdisplay
+ {%
+ \@glsxtr@glossdescfont{\glsxtrfieldtitlecase{#1}{desc}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \@glsxtr@glossdescfont{\glsaccessdesc{#1}}%
+ }%
+ }%
+ }%
+ }
+}
+{
+ \renewcommand*{\glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossdescfont}%
+ {%
+ \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossdescfont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossdescfont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossdescfont attribute
+ for entry `#1'. Ignoring}%
+ \let\@glsxtr@glossdescfont\@firstofone
+ }%
+ }%
+ {\let\@glsxtr@glossdescfont\@firstofone}%
+ \glsifattribute{#1}{glossdesc}{firstuc}%
+ {%
+ \@glsxtr@glossdescfont{\Glsentrydesc{#1}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossdesc}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \@glsxtr@glossdescfont{\glsxtrfieldtitlecase{#1}{desc}}%
+ }%
+ {%
+ \@glsxtr@glossdescfont{\glsentrydesc{#1}}%
+ }%
+ }%
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossentryname}
+% If the \catattr{glossname} attribute is \qt{firstuc} convert first
+% letter to upper case. If the attribute is \qt{title} use title
+% case.
+% \begin{macrocode}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\glossentryname}[1]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+% \end{macrocode}
+% As from version 1.04, allow the \catattr{glossnamefont} attribute
+% to determine the font applied.
+%\changes{1.04}{2016-05-02}{added glossnamefont attribute check}
+% \begin{macrocode}
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \glsifattribute{#1}{glossname}{firstuc}%
+ {%
+ \glsnameaccessdisplay
+ {%
+ \@glsxtr@glossnamefont{\Glsentryname{#1}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \glsnameaccessdisplay
+ {%
+ \@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{name}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{uc}%
+ {%
+ \glsnameaccessdisplay
+ {%
+% \end{macrocode}
+% Hide the label from the upper-casing command.
+% \begin{macrocode}
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}%
+ }%
+ {#1}%
+ }%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \glsnameaccessdisplay
+ {%
+ \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}%
+ }%
+ {#1}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Do post-name hook:
+% \begin{macrocode}
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+{
+ \renewcommand*{\glossentryname}[1]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \glsifattribute{#1}{glossname}{firstuc}%
+ {%
+ \@glsxtr@glossnamefont{\Glsentryname{#1}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{name}}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{uc}%
+ {%
+% \end{macrocode}
+% Hide the label from the upper-casing command.
+% \begin{macrocode}
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}%
+ }%
+ {%
+% \end{macrocode}
+% This little trick is used by \styfmt{glossaries} to allow the user to
+% redefine \ics{glsnamefont} to use \cs{makefirstuc}. Support it
+% even though they can now use the \catattr{firstuc} attribute.
+% \begin{macrocode}
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@name}%
+ \expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Do post-name hook.
+%\changes{1.04}{2016-05-02}{moved post name hook inside condition}
+% \begin{macrocode}
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glossentryname}
+% Redefine to set the abbreviation format and accessibility support.
+%\changes{0.5.2}{2015-12-08}{added}
+% \begin{macrocode}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \renewcommand*{\Glossentryname}[1]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+% \end{macrocode}
+% As from version 1.04, allow the \catattr{glossnamefont} attribute
+% to determine the font applied.
+%\changes{1.04}{2016-05-02}{added glossnamefont attribute check}
+% \begin{macrocode}
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \glsnameaccessdisplay
+ {%
+ \@glsxtr@glossnamefont{\Glsentryname{#1}}%
+ }%
+ {#1}%
+% \end{macrocode}
+% Do post-name hook:
+% \begin{macrocode}
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+{
+ \renewcommand*{\Glossentryname}[1]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \@glsxtr@glossnamefont{\Glsentryname{#1}}%
+% \end{macrocode}
+% Do post-name hook:
+% \begin{macrocode}
+ \glsxtrpostnamehook{#1}%
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Provide a convenient way to also index the entries using the
+% standard \ics{index} mechanism. This may use different actual,
+% encap and escape characters to those used for the glossaries.
+%
+%\begin{macro}{\glsxtrpostnamehook}
+%\changes{0.5.3}{2015-12-09}{new}
+% Hook to append stuff after the name is displayed in the glossary.
+% The argument is the entry's label.
+% \begin{macrocode}
+\newcommand*{\glsxtrpostnamehook}[1]{%
+ \let\@glsnumberformat\@glsxtr@defaultnumberformat
+ \glsxtrdoautoindexname{#1}{indexname}%
+% \end{macrocode}
+%Allow additional code regardless of category:
+% \begin{macrocode}
+ \glsextrapostnamehook{#1}%
+% \end{macrocode}
+% Allow categories to hook in here.
+%\changes{1.04}{2016-05-02}{added category check}
+% \begin{macrocode}
+ \csuse{glsxtrpostname\glscategory{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsextrapostnamehook}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsextrapostnamehook}[1]{}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdefpostname}
+%\changes{1.31}{2018-05-09}{new}
+%Provide a convenient command for defining the post-name hook
+%for the given category.
+% \begin{macrocode}
+\newcommand*{\glsdefpostname}[2]{%
+ \csdef{glsxtrpostname#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@setaccessdisplay}
+%\changes{1.22}{2017-11-08}{new}
+% \begin{macrocode}
+\@ifpackageloaded{glossaries-accsupp}
+{
+ \newcommand*{\glsxtr@setaccessdisplay}[1]{%
+ \ifcsdef{gls#1accessdisplay}%
+ {\letcs\@glsxtr@accessdisplay{gls#1accessdisplay}}%
+ {%
+% \end{macrocode}
+%This is essentially the reverse of \cs{@gls@fetchfield}, since the
+%field supplied to \cs{glossentryname} has to be the internal label,
+%but the \cs{gls\meta{field}accessdisplay} commands use the key name.
+% \begin{macrocode}
+ \edef\@gls@thisval{#1}%
+ \@for\@gls@map:=\@gls@keymap\do{%
+ \edef\@this@key{\expandafter\@secondoftwo\@gls@map}%
+ \ifdefequal{\@this@key}{\@gls@thisval}%
+ {%
+ \edef\@gls@thisval{\expandafter\@firstoftwo\@gls@map}%
+ \@endfortrue
+ }%
+ {}%
+ }%
+ \ifcsdef{gls\@gls@thisval accessdisplay}%
+ {\letcs\@glsxtr@accessdisplay{gls\@gls@thisval accessdisplay}}%
+ {\let\@glsxtr@accessdisplay\@firstoftwo}%
+ }%
+ }
+}
+{%
+ \newcommand*{\glsxtr@setaccessdisplay}[1]{%
+ \let\@glsxtr@accessdisplay\@firstoftwo}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossentrynameother}
+% Provide a command that works like \cs{glossentryname}
+% but accesses a different field (which must be supplied using its
+% internal field label).
+%\changes{1.22}{2017-11-08}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glossentrynameother}[2]{%
+ \@glsdoifexistsorwarn{#1}%
+ {%
+% \end{macrocode}
+%Accessibility support:
+% \begin{macrocode}
+ \glsxtr@setaccessdisplay{#2}%
+% \end{macrocode}
+%Set the abbreviation format:
+% \begin{macrocode}
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glshasattribute{#1}{glossnamefont}%
+ {%
+ \edef\@glsxtr@attrval{\glsgetattribute{#1}{glossnamefont}}%
+ \ifcsdef{\@glsxtr@attrval}%
+ {%
+ \letcs{\@glsxtr@glossnamefont}{\@glsxtr@attrval}%
+ }%
+ {%
+ \GlossariesExtraWarning{Unknown control sequence name
+ `\@glsxtr@attrval' supplied in glossnamefont attribute
+ for entry `#1'. Reverting to default \string\glsnamefont}%
+ \let\@glsxtr@glossnamefont\glsnamefont
+ }%
+ }%
+ {\let\@glsxtr@glossnamefont\glsnamefont}%
+ \glsifattribute{#1}{glossname}{firstuc}%
+ {%
+ \@glsxtr@accessdisplay
+ {\@glsxtr@glossnamefont{\@Gls@entry@field{#1}{#2}}}%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{title}%
+ {%
+ \@glsxtr@do@titlecaps@warn
+ \@glsxtr@accessdisplay
+ {\@glsxtr@glossnamefont{\glsxtrfieldtitlecase{#1}{#2}}}%
+ {#1}%
+ }%
+ {%
+ \glsifattribute{#1}{glossname}{uc}%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}%
+ \@glsxtr@accessdisplay
+ {\@glsxtr@glossnamefont{\mfirstucMakeUppercase{\glo@name}}}%
+ {#1}%
+ }%
+ {%
+ \letcs{\glo@name}{glo@\glsdetoklabel{#1}@#2}%
+ \@glsxtr@accessdisplay
+ {\expandafter\@glsxtr@glossnamefont\expandafter{\glo@name}}%
+ {#1}%
+ }%
+ }%
+ }%
+% \end{macrocode}
+% Do post-name hook.
+% \begin{macrocode}
+ \glsxtrpostnamehook{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\if@glsxtr@format@override}
+%\changes{0.5.3}{2015-12-09}{new}
+% Determines if the \gloskey[glslink]{format} key should override
+% the indexing attribute value.
+% \begin{macrocode}
+\newif\if@glsxtr@format@override
+\@glsxtr@format@overridefalse
+% \end{macrocode}
+%\end{macro}
+%
+%If overriding is enabled, the \ics{glshypernumber} command will have to
+%be redefined in the index to use \cs{hyperpage} instead.
+%\begin{macro}{\GlsXtrEnableIndexFormatOverride}
+% \begin{macrocode}
+\@ifpackageloaded{hyperref}
+{
+% \end{macrocode}
+% If \sty{hyperref}'s \pkgoptfmt{hyperindex} option is on, then
+% \sty{hyperref} will automatically add \cs{hyperpage}, so don't
+% add it.
+% \begin{macrocode}
+ \ifHy@hyperindex
+ \newcommand*{\GlsXtrEnableIndexFormatOverride}{%
+ \@glsxtr@format@overridetrue
+ \appto\theindex{\let\glshypernumber\@firstofone}%
+ }
+ \else
+ \newcommand*{\GlsXtrEnableIndexFormatOverride}{%
+ \@glsxtr@format@overridetrue
+ \appto\theindex{\let\glshypernumber\hyperpage}%
+ }
+ \fi
+}
+{
+ \newcommand*{\GlsXtrEnableIndexFormatOverride}{%
+ \@glsxtr@format@overridetrue
+ }
+}
+\@onlypreamble\GlsXtrEnableIndexFormatOverride
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdoautoindexname}
+%\changes{0.5.3}{2015-12-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrdoautoindexname}[2]{%
+ \glshasattribute{#1}{#2}%
+ {%
+% \end{macrocode}
+% Escape any makeindex/xindy characters in the value of the \gloskey{name}
+% field. Take care with \sty{babel} as this won't work if the
+% category code has changed for those characters.
+% \begin{macrocode}
+ \@glsxtr@autoindex@setname{#1}%
+% \end{macrocode}
+% If the attribute value is simply \qt{true} don't add an encap,
+% otherwise use the value as the encap.
+% \begin{macrocode}
+ \protected@edef\@glsxtr@attrval{\glsgetattribute{#1}{#2}}%
+ \if@glsxtr@format@override
+% \end{macrocode}
+%\changes{1.19}{2017-09-09}{changed format test}
+% \begin{macrocode}
+ \ifx\@glsnumberformat\@glsxtr@defaultnumberformat
+ \else
+ \let\@glsxtr@attrval\@glsnumberformat
+ \fi
+ \fi
+ \ifdefstring{\@glsxtr@attrval}{true}%
+ {}%
+ {\eappto\@glo@name{\@glsxtr@autoindex@encap\@glsxtr@attrval}}%
+ \expandafter\glsxtrautoindex\expandafter{\@glo@name}%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrautoindex}
+%\changes{1.16}{2017-06-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrautoindex}{\index}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrautoindexesc}
+%\changes{1.36}{2018-08-18}{new}
+% \begin{macrocode}
+\newcommand{\glsxtrautoindexesc}{%
+ \@gls@checkmkidxchars\@glo@sort
+ \@glsxtr@autoindex@doextra@esc\@glo@sort
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@autoindex@setname}
+%\changes{0.5.3}{2015-12-09}{new}
+% Assign \cs{@glo@name} for use with \catattr{indexname} attribute.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@autoindex@setname}[1]{%
+ \protected@edef\@glo@name{\glsxtrautoindexentry{#1}}%
+ \glsxtrautoindexassignsort{\@glo@sort}{#1}%
+ \glsxtrautoindexesc
+ \epreto\@glo@name{\@glo@sort\@glsxtr@autoindex@at}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrautoindexentry}
+%\changes{1.16}{2017-06-15}{new}
+%Command used for the actual part when auto-indexing.
+% \begin{macrocode}
+\newcommand*{\glsxtrautoindexentry}[1]{\string\glsentryname{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrautoindexassignsort}
+%\changes{1.16}{2017-06-15}{new}
+%Used to assign the sort value when auto-indexing.
+% \begin{macrocode}
+\newcommand*{\glsxtrautoindexassignsort}[2]{%
+ \glsletentryfield{#1}{#2}{sort}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@autoindex@doextra@esc}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@autoindex@doextra@esc}[1]{%
+% \end{macrocode}
+% Escape the escape character unless it has already been escaped.
+% \begin{macrocode}
+ \ifx\@glsxtr@autoindex@esc\@gls@quotechar
+ \else
+ \def\@gls@checkedmkidx{}%
+ \edef\@@glsxtr@checkspch{%
+ \noexpand\@glsxtr@autoindex@escquote\expandonce{#1}%
+ \noexpand\@empty\@glsxtr@autoindex@esc\noexpand\@nnil
+ \@glsxtr@autoindex@esc\noexpand\@empty\noexpand\@glsxtr@endescspch}%
+ \@@glsxtr@checkspch
+ \let#1\@gls@checkedmkidx\relax
+ \fi
+% \end{macrocode}
+% Escape actual character unless it has already been escaped.
+% \begin{macrocode}
+ \ifx\@glsxtr@autoindex@at\@gls@actualchar
+ \else
+ \def\@gls@checkedmkidx{}%
+ \edef\@@glsxtr@checkspch{%
+ \noexpand\@glsxtr@autoindex@escat\expandonce{#1}%
+ \noexpand\@empty\@glsxtr@autoindex@at\noexpand\@nnil
+ \@glsxtr@autoindex@at\noexpand\@empty\noexpand\@glsxtr@endescspch}%
+ \@@glsxtr@checkspch
+ \let#1\@gls@checkedmkidx\relax
+ \fi
+% \end{macrocode}
+% Escape level character unless it has already been escaped.
+% \begin{macrocode}
+ \ifx\@glsxtr@autoindex@level\@gls@levelchar
+ \else
+ \def\@gls@checkedmkidx{}%
+ \edef\@@glsxtr@checkspch{%
+ \noexpand\@glsxtr@autoindex@esclevel\expandonce{#1}%
+ \noexpand\@empty\@glsxtr@autoindex@level\noexpand\@nnil
+ \@glsxtr@autoindex@level\noexpand\@empty\noexpand\@glsxtr@endescspch}%
+ \@@glsxtr@checkspch
+ \let#1\@gls@checkedmkidx\relax
+ \fi
+% \end{macrocode}
+% Escape encap character unless it has already been escaped.
+% \begin{macrocode}
+ \ifx\@glsxtr@autoindex@encap\@gls@encapchar
+ \else
+ \def\@gls@checkedmkidx{}%
+ \edef\@@glsxtr@checkspch{%
+ \noexpand\@glsxtr@autoindex@escencap\expandonce{#1}%
+ \noexpand\@empty\@glsxtr@autoindex@encap\noexpand\@nnil
+ \@glsxtr@autoindex@encap\noexpand\@empty\noexpand\@glsxtr@endescspch}%
+ \@@glsxtr@checkspch
+ \let#1\@gls@checkedmkidx\relax
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The user commands here have a preamble-only restriction to ensure
+% they are set before required and also to reduce the chances of
+% complications caused by \sty{babel}'s shorthands.
+%
+%\begin{macro}{\@glsxtr@autoindex@at}
+%\changes{0.5.3}{2015-12-09}{new}
+% Actual character for use with \cs{index}.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@autoindex@at}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetActualChar}
+% Set the actual character.
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetActualChar}[1]{%
+ \gdef\@glsxtr@autoindex@at{#1}%
+ \def\@glsxtr@autoindex@escat##1#1##2#1##3\@glsxtr@endescspch{%
+ \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escat}{##1}{##2}{##3}%
+ }%
+}
+\@onlypreamble\GlsXtrSetActualChar
+\makeatother
+\GlsXtrSetActualChar{@}
+\makeatletter
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@autoindex@encap}
+%\changes{0.5.3}{2015-12-09}{new}
+% Encap character for use with \cs{index}.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@autoindex@encap}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetEncapChar}
+% Set the encap character.
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetEncapChar}[1]{%
+ \gdef\@glsxtr@autoindex@encap{#1}%
+ \def\@glsxtr@autoindex@escencap##1#1##2#1##3\@glsxtr@endescspch{%
+ \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escencap}{##1}{##2}{##3}%
+ }%
+}
+\GlsXtrSetEncapChar{|}
+\@onlypreamble\GlsXtrSetEncapChar
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@autoindex@level}
+%\changes{0.5.3}{2015-12-09}{new}
+% Level character for use with \cs{index}.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@autoindex@level}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetLevelChar}
+% Set the encap character.
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetLevelChar}[1]{%
+ \gdef\@glsxtr@autoindex@level{#1}%
+ \def\@glsxtr@autoindex@esclevel##1#1##2#1##3\@glsxtr@endescspch{%
+ \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@esclevel}{##1}{##2}{##3}%
+ }%
+}
+\GlsXtrSetLevelChar{!}
+\@onlypreamble\GlsXtrSetLevelChar
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@autoindex@esc}
+%\changes{0.5.3}{2015-12-09}{new}
+% Escape character for use with \cs{index}.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@autoindex@esc}{"}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrSetEscChar}
+% Set the escape character.
+% \begin{macrocode}
+\newcommand*{\GlsXtrSetEscChar}[1]{%
+ \gdef\@glsxtr@autoindex@esc{#1}%
+ \def\@glsxtr@autoindex@escquote##1#1##2#1##3\@glsxtr@endescspch{%
+ \@@glsxtr@autoindex@escspch{#1}{\@glsxtr@autoindex@escquote}{##1}{##2}{##3}%
+ }%
+}
+\GlsXtrSetEscChar{"}
+\@onlypreamble\GlsXtrSetEscChar
+% \end{macrocode}
+%\end{macro}
+%
+% Set if defined. (For example, if \sty{doc} package has been
+% loaded.) Actual character \ics{actualchar}:
+% \begin{macrocode}
+\ifdef\actualchar
+ {\expandafter\GlsXtrSetActualChar\expandafter{\actualchar}}
+ {}
+% \end{macrocode}
+% Quote character \ics{quotechar}:
+% \begin{macrocode}
+\ifdef\quotechar
+ {\expandafter\GlsXtrSetEscChar\expandafter{\quotechar}}
+ {}
+% \end{macrocode}
+% Level character \ics{levelchar}:
+% \begin{macrocode}
+\ifdef\levelchar
+ {\expandafter\GlsXtrSetLevelChar\expandafter{\levelchar}}
+ {}
+% \end{macrocode}
+% Encap character \ics{encapchar}:
+% \begin{macrocode}
+\ifdef\encapchar
+ {\expandafter\GlsXtrSetEncapChar\expandafter{\encapchar}}
+ {}
+% \end{macrocode}
+%
+%\begin{macro}{\@glsxtr@gobbleto@endescspch}
+% \begin{macrocode}
+\def\@glsxtr@gobbleto@endescspch#1\@glsxtr@endescspch{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@@glsxtr@autoindex@esc@spch}
+%\begin{definition}
+%\cs{@@glsxtr@autoindex@escspch}\marg{char}\marg{cs}\marg{pre}\marg{mid}\marg{post}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\@@glsxtr@autoindex@escspch}[5]{%
+ \@gls@tmpb=\expandafter{\@gls@checkedmkidx}%
+ \toks@={#3}%
+ \ifx\@nnil#3\relax
+ \def\@@glsxtr@checkspch{\@glsxtr@gobbleto@endescspch#5\@glsxtr@endescspch}%
+ \else
+ \ifx\@nnil#4\relax
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@}%
+ \def\@@glsxtr@checkspch{\@glsxtr@gobbleto@endescspch
+ #4#5\@glsxtr@endescspch}%
+ \else
+ \edef\@gls@checkedmkidx{\the\@gls@tmpb\the\toks@
+ \@glsxtr@autoindex@esc#1}%
+ \def\@@glsxtr@checkspch{#2#5#1\@nnil#1\@glsxtr@endescspch}%
+ \fi
+ \fi
+ \@@glsxtr@checkspch
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glossentrydesc}
+% Redefine to set the abbreviation format and accessibility support.
+%\changes{0.5.2}{2015-12-08}{added}
+% \begin{macrocode}
+\renewcommand*{\Glossentrydesc}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \Glsaccessdesc{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glossentrysymbol}
+% Redefine to set the abbreviation format and accessibility support.
+%\changes{0.5.2}{2015-12-08}{added}
+% \begin{macrocode}
+\renewcommand*{\glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \glsaccesssymbol{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glossentrysymbol}
+% Redefine to set the abbreviation format and accessibility support.
+%\changes{0.5.2}{2015-12-08}{added}
+% \begin{macrocode}
+\renewcommand*{\Glossentrysymbol}[1]{%
+ \glsdoifexistsorwarn{#1}%
+ {%
+ \glssetabbrvfmt{\glscategory{#1}}%
+ \Glsaccesssymbol{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Allow initials to be marked but only use the formatting for the
+%tag in the glossary.
+%\begin{macro}{\GlsXtrEnableInitialTagging}
+% Allow initial tagging. The first argument is a list of categories
+% to apply this to. The second argument is the name of the command to
+% use to tag the initials. This can't already be defined for safety
+% unless the starred version is used.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrEnableInitialTagging}{%
+ \@ifstar\s@glsxtr@enabletagging\@glsxtr@enabletagging
+}
+\@onlypreamble\GlsXtrEnableInitialTagging
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@enabletagging}
+% Starred version undefines command.
+% \begin{macrocode}
+\newcommand*{\s@glsxtr@enabletagging}[2]{%
+ \undef#2%
+ \@glsxtr@enabletagging{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@enabletagging}
+% Internal command.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@enabletagging}[2]{%
+% \end{macrocode}
+% Set attributes for categories given in the first argument.
+% \begin{macrocode}
+ \@for\@glsxtr@cat:=#1\do
+ {%
+ \ifdefempty\@glsxtr@cat
+ {}%
+ {\glssetcategoryattribute{\@glsxtr@cat}{tagging}{true}}%
+ }%
+ \newrobustcmd*#2[1]{##1}%
+ \def\@glsxtr@taggingcs{#2}%
+ \renewcommand*\@glsxtr@activate@initialtagging{%
+ \let#2\@glsxtr@tag
+ }%
+ \ifundef\@gls@preglossaryhook
+ {\GlossariesExtraWarning{Initial tagging requires at least
+ glossaries.sty v4.19 to work correctly}}%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Are we using an old version of \sty{mfirstuc} that has a bug in
+%\cs{capitalisewords}? If so, patch it so we don't have a problem
+% with a combination of tagging and title case.
+%\begin{macro}{\mfu@checkword@do}
+%If this command hasn't been defined, then we have pre v2.02 of
+%\sty{mfirstuc}
+%\changes{0.5.2}{2015-12-08}{added}
+% \begin{macrocode}
+\ifundef\mfu@checkword@do
+{
+ \newcommand*{\mfu@checkword@do}[1]{%
+ \ifdefstring{\mfu@checkword@arg}{#1}%
+ {%
+ \let\@mfu@domakefirstuc\@firstofone
+ \listbreak
+ }%
+ {}%
+ }
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\mfu@checkword}
+% \cs{capitalisewords} was introduced in \sty{mfirstuc} v1.06.
+% If \cs{mfu@checkword} hasn't been defined \sty{mfirstuc} is too
+% old to support the title case attribute.
+% \begin{macrocode}
+ \ifundef\mfu@checkword
+ {
+ \newcommand{\@glsxtr@do@titlecaps@warn}{%
+ \GlossariesExtraWarning{mfirstuc.sty too old. Title Caps
+ support not available}%
+% \end{macrocode}
+% One warning should suffice.
+% \begin{macrocode}
+ \let\@glsxtr@do@titlecaps@warn\relax
+ }
+ }
+ {
+ \renewcommand*{\mfu@checkword}[1]{%
+ \def\mfu@checkword@arg{#1}%
+ \let\@mfu@domakefirstuc\makefirstuc
+ \forlistloop\mfu@checkword@do\@mfu@nocaplist
+ }
+ }
+}
+{}% no patch required
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@do@titlecaps@warn}
+% Do warning if title case not supported.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@do@titlecaps@warn}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@activate@initialtagging}
+% Used in \cs{printglossary} but at least v4.19 of \styfmt{glossaries}
+% required.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+\newcommand*\@glsxtr@activate@initialtagging{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@tag}
+%\changes{0.5.2}{2015-12-08}{new}
+% Definition of tagging command when used in glossary.
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtr@tag}[1]{%
+ \glsifattribute{\glscurrententrylabel}{tagging}{true}%
+ {\glsxtrtagfont{#1}}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtagfont}
+% Used in the glossary.
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrtagfont}[1]{\underline{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@gls@preglossaryhook}
+% This macro was introduced in \styfmt{glossaries} version 4.19, so it
+% may not be defined. If it hasn't been defined this feature is
+% unavailable. A check is added for the entry's existence to prevent
+% errors from occurring if the user removes an entry or changes the
+% label, which can interrupt the build process.
+%\changes{1.04}{2016-05-02}{added check for entry's existence}
+% \begin{macrocode}
+\ifdef\@gls@preglossaryhook
+{
+ \renewcommand*{\@gls@preglossaryhook}{%
+ \@glsxtr@activate@initialtagging
+% \end{macrocode}
+%\changes{1.12}{2017-02-03}{check for definition}
+%Since the glossaries are automatically scoped,
+%\cs{@glsxtr@org@postdescription} shouldn't already be defined, but
+%check anyway just as a precautionary measure.
+% \begin{macrocode}
+ \ifundef\@glsxtr@org@postdescription
+ {%
+ \let\@glsxtr@org@postdescription\glspostdescription
+ \renewcommand*{\glspostdescription}{%
+ \ifglsentryexists{\glscurrententrylabel}%
+ {%
+ \glsxtrpostdescription
+ \@glsxtr@org@postdescription
+ }%
+ {}%
+ }%
+ }%
+ {}%
+% \end{macrocode}
+%\changes{1.07}{2016-08-15}{added \cs{glossxtrsetpopts}}
+%Enable the options used by \cs{@@glsxtrp}:
+% \begin{macrocode}
+ \glossxtrsetpopts
+ }%
+}
+{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostdescription}
+%This command will only be used if \cs{@gls@preglossaryhook} is
+%available \emph{and} the glossary style uses
+%\cs{glspostdescription} without modifying it. (\cs{nopostdesc}
+%will suppress this.) The \sty{glossaries-extra-stylemods} package will
+%add the post description hook to all the predefined styles that
+%don't include it.
+% \begin{macrocode}
+\newcommand*{\glsxtrpostdescription}{%
+ \csuse{glsxtrpostdesc\glscategory{\glscurrententrylabel}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostdescgeneral}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostdescgeneral}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostdescterm}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostdescterm}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostdescacronym}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostdescacronym}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostdescabbreviation}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostdescabbreviation}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdefpostdesc}
+%\changes{1.31}{2018-05-09}{new}
+%Provide a convenient command for defining the post-description hook
+%for the given category.
+% \begin{macrocode}
+\newcommand*{\glsdefpostdesc}[2]{%
+ \csdef{glsxtrpostdesc#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glspostlinkhook}
+% Redefine the post link hook used by commands like \cs{gls} to
+% make it easier for categories or attributes to modify this action.
+% Since this hook occurs outside the existence check of commands like
+% \cs{gls}, this needs to be checked again here. Do nothing if the
+% entry hasn't been defined.
+%\changes{0.5.4}{2015-12-15}{added existence check}
+% \begin{macrocode}
+\renewcommand*{\glspostlinkhook}{%
+ \ifglsentryexists{\glslabel}{\glsxtrpostlinkhook}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostlinkhook}
+% The entry label should already be stored in \cs{glslabel} by
+% \cs{@gls@link}.
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlinkhook}{%
+ \glsxtrdiscardperiod{\glslabel}%
+ {\glsxtrpostlinkendsentence}%
+ {\glsxtrifcustomdiscardperiod
+ {\glsxtrifperiod{\glsxtrpostlinkendsentence}{\glsxtrpostlink}}%
+ {\glsxtrpostlink}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifcustomdiscardperiod}
+%\changes{1.23}{2017-11-12}{new}
+%Allow user to provide a custom check. Should expand to \verb|#2| if
+%no check is required otherwise expand to \verb|#1|.
+% \begin{macrocode}
+\newcommand*{\glsxtrifcustomdiscardperiod}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostlink}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlink}{%
+ \csuse{glsxtrpostlink\glscategory{\glslabel}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsdefpostlink}
+%\changes{1.31}{2018-05-09}{new}
+%Provide a convenient command for defining the post-link hook
+%for the given category. Doesn't allow an empty argument (which)
+%would overwrite \cs{glsxtrpostlink}.
+% \begin{macrocode}
+\newcommand*{\glsdefpostlink}[2]{%
+% \end{macrocode}
+% \cs{ifthenelse} is used to ensure that the expanded value is
+% tested. (The category label must be fully expandable.)
+% \begin{macrocode}
+ \ifthenelse{\equal{#1}{}}%
+ {\PackageError{glossaries-extra}
+ {Invalid empty category label in \string\glsdefpostlink}{}}%
+ {\csdef{glsxtrpostlink#1}{#2}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostlinkendsentence}
+%\changes{0.3}{2015-12-02}{new}
+% Done by \cs{glsxtrpostlinkhook} if a full stop is discarded.
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlinkendsentence}{%
+ \ifcsdef{glsxtrpostlink\glscategory{\glslabel}}
+ {%
+ \csuse{glsxtrpostlink\glscategory{\glslabel}}%
+% \end{macrocode}
+% Put the full stop back.
+% \begin{macrocode}
+ .\spacefactor\sfcode`\. \relax
+ }%
+ {%
+% \end{macrocode}
+% Assume the full stop was discarded because the entry ends with a
+% period, so adjust the spacefactor.
+% \begin{macrocode}
+ \spacefactor\sfcode`\. \relax
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostlinkAddDescOnFirstUse}
+%\changes{0.3}{2015-12-02}{new}
+% Provide a command for appending the description in parentheses on
+% first use, for the convenience of users wanting to add this to the
+% post link hook.
+%\changes{1.25}{2017-11-24}{changed to use \cs{glsxtrparen}}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlinkAddDescOnFirstUse}{%
+ \glsxtrifwasfirstuse{\space\glsxtrparen{\glsaccessdesc{\glslabel}}}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostlinkAddSymbolOnFirstUse}
+%\changes{0.3}{2015-12-02}{new}
+% Provide a command for appending the symbol (if defined) in parentheses on
+% first use, for the convenience of users wanting to add this to the
+% post link hook.
+%\changes{1.25}{2017-11-24}{changed to use \cs{glsxtrparen}}
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlinkAddSymbolOnFirstUse}{%
+ \glsxtrifwasfirstuse
+ {%
+ \ifglshassymbol{\glslabel}%
+ {\space\glsxtrparen{\glsaccesssymbol{\glslabel}}}%
+ {}%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrpostlinkAddSymbolDescOnFirstUse}
+%\changes{1.31}{2018-05-09}{new}
+% Provide a command for appending the symbol (if defined) and
+% description in parentheses on
+% first use, for the convenience of users wanting to add this to the
+% post link hook.
+% \begin{macrocode}
+\newcommand*{\glsxtrpostlinkAddSymbolDescOnFirstUse}{%
+ \glsxtrifwasfirstuse
+ {%
+ \space\glsxtrparen
+ {%
+ \ifglshassymbol{\glslabel}%
+ {\glsaccesssymbol{\glslabel}, }%
+ {}%
+ \glsaccessdesc{\glslabel}%
+ }%
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdiscardperiod}
+% Discard following period (if present) if the
+% \catattr{discardperiod} attribute is true. If a period is
+% discarded, do the second argument otherwise do the third
+% argument. The entry label is in the first argument.
+% Since this is designed for abbreviations that end with a period,
+% check if the plural form was used (which typically won't end with
+% a period).
+%\changes{0.3}{2015-12-02}{added check for plural}
+%\changes{1.01}{2016-02-02}{added check for first use}
+% \begin{macrocode}
+\newcommand*{\glsxtrdiscardperiod}[3]{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsifattribute{#1}{retainfirstuseperiod}{true}%
+ {#3}%
+ {%
+ \glsifattribute{#1}{discardperiod}{true}%
+ {%
+ \glsifplural
+ {%
+ \glsifattribute{#1}{pluraldiscardperiod}{true}%
+ {\glsxtrifperiod{#2}{#3}}%
+ {#3}%
+ }%
+ {%
+ \glsxtrifperiod{#2}{#3}%
+ }%
+ }%
+ {#3}%
+ }%
+ }%
+ {%
+ \glsifattribute{#1}{discardperiod}{true}%
+ {%
+ \glsifplural
+ {%
+ \glsifattribute{#1}{pluraldiscardperiod}{true}%
+ {\glsxtrifperiod{#2}{#3}}%
+ {#3}%
+ }%
+ {%
+ \glsxtrifperiod{#2}{#3}%
+ }%
+ }%
+ {#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifperiod}
+% Make a convenient user command to check if the next character is a
+% full stop (period). Works like \cs{@ifstar} but uses
+% \cs{new@ifnextchar} rather than \cs{@ifnextchar}
+% \begin{macrocode}
+\newcommand*{\glsxtrifperiod}[1]{\new@ifnextchar.{\@firstoftwo{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+% Sometimes it's useful to test if there's a punctuation character
+% following the glossary entry.
+%\begin{macro}{\glsxtr@punclist}
+% List of characters identified as punctuation marks. (Be careful of
+% \sty{babel} shorthands!) This doesn't allow for punctuation marks
+% made up from multiple characters (such as \verb|''|).
+% \begin{macrocode}
+\newcommand*{\glsxtr@punclist}{.,:;?!}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtraddpunctuationmark}
+% Add character to punctuation list.
+% \begin{macrocode}
+\newcommand*{\glsxtraddpunctuationmark}[1]{\appto\glsxtr@punclist{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsetpunctuationmarks}
+% Reset the punctuation list.
+% \begin{macrocode}
+\newcommand*{\glsxtrsetpunctuationmarks}[1]{\def\glsxtr@punclist{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifpunc}
+%\begin{definition}
+%\cs{glsxtrifnextpunc}\marg{true part}\marg{false part}
+%\end{definition}
+%Test if this is followed by a punctuation mark. (Adapted from
+%\cs{new@ifnextchar}.)
+% \begin{macrocode}
+\newcommand*{\glsxtrifnextpunc}[2]{%
+ \def\reserved@a{#1}%
+ \def\reserved@b{#2}%
+ \futurelet\@glspunc@token\glsxtr@ifnextpunc
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@ifnextpunc}
+% \begin{macrocode}
+\newcommand*{\glsxtr@ifnextpunc}{%
+ \glsxtr@ifpunctoken{\@glspunc@token}{\let\reserved@b\reserved@a}{}%
+ \reserved@b
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@ifpunctoken}
+% Test if the token given in the first argument is in the
+% punctuation list.
+% \begin{macrocode}
+\newcommand*{\glsxtr@ifpunctoken}[1]{%
+ \expandafter\@glsxtr@ifpunctoken\expandafter#1\glsxtr@punclist\@nnil
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@ifpunctoken}
+% \begin{macrocode}
+\def\@glsxtr@ifpunctoken#1#2{%
+ \let\reserved@d=#2%
+ \ifx\reserved@d\@nnil
+ \let\glsxtr@next\@glsxtr@notfoundinlist
+ \else
+ \ifx#1\reserved@d
+ \let\glsxtr@next\@glsxtr@foundinlist
+ \else
+ \let\glsxtr@next\@glsxtr@ifpunctoken
+ \fi
+ \fi
+ \glsxtr@next#1%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@foundinlist}
+% \begin{macrocode}
+\def\@glsxtr@foundinlist#1\@nnil{\@firstoftwo}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@notfoundinlist}
+% \begin{macrocode}
+\def\@glsxtr@notfoundinlist#1{\@secondoftwo}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdopostpunc}
+%\begin{definition}
+%\cs{glsxtrdopostpunc}\marg{code}
+%\end{definition}
+% If this is followed be a punctuation character, do \meta{code}
+% after the character otherwise do \meta{code} before whatever comes
+% next.
+% \begin{macrocode}
+\newcommand{\glsxtrdopostpunc}[1]{%
+ \glsxtrifnextpunc{\@glsxtr@swaptwo{#1}}{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@swaptwo}
+% \begin{macrocode}
+\newcommand{\@glsxtr@swaptwo}[2]{#2#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Abbreviations}
+%
+%The \qt{acronym} code from \styfmt{glossaries} is misnamed as it's more
+%often used for other forms of abbreviations. This code corrects
+%this inconsistency, but rather than just having synonyms, provide
+% commands for abbreviations that have a similar, but not identical,
+% underlying mechanism to acronyms.
+%
+% If there's a style for the given category, apply it.
+% \begin{macrocode}
+\define@key{glsxtrabbrv}{category}{%
+ \edef\glscategorylabel{#1}%
+ \ifcsdef{@glsabbrv@current@#1}%
+ {%
+% \end{macrocode}
+% Warning should already have been issued.
+% \begin{macrocode}
+ \let\@glsxtr@orgwarndep\GlsXtrWarnDeprecatedAbbrStyle
+ \let\GlsXtrWarnDeprecatedAbbrStyle\@gobbletwo
+ \glsxtr@applyabbrvstyle{\csname @glsabbrv@current@#1\endcsname}%
+ \let\GlsXtrWarnDeprecatedAbbrStyle\@glsxtr@orgwarndep
+ }%
+ {}%
+}
+% \end{macrocode}
+% Save the short plural form. This may be needed before the entry is
+% defined.
+% \begin{macrocode}
+\define@key{glsxtrabbrv}{shortplural}{%
+ \def\@gls@shortpl{#1}%
+}
+% \end{macrocode}
+% Similarly for the long plural form.
+% \begin{macrocode}
+\define@key{glsxtrabbrv}{longplural}{%
+ \def\@gls@longpl{#1}%
+}
+% \end{macrocode}
+%
+% Token registers for the short plural and long plural, provided for
+% use in the abbreviation style definitions.
+%\begin{macro}{\glsshortpltok}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newtoks\glsshortpltok
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongpltok}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newtoks\glslongpltok
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@insertdots}
+%\changes{0.3}{2015-12-02}{new}
+% Provided in case user wants to automatically insert dots between
+% each letter of the abbreviation. This should be applied before
+% defining the abbreviation to optimise the document build.
+% (Otherwise, it would have to be done each time the short form is
+% required, which is an unnecessary waste of time.) For this to work
+% the short form must be expanded when passed to
+% \cs{newabbreviation}. Note that explicitly using the
+% \gloskey{short} or \gloskey{shortplural} keys will override this.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@insertdots}[2]{%
+ \def#1{}%
+ \@glsxtr@insert@dots#1#2\@nnil
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@insert@dots}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@insert@dots}[2]{%
+ \ifx\@nnil#2\relax
+ \let\@glsxtr@insert@dots@next\@gobble
+ \else
+ \ifx\relax#2\relax
+ \else
+ \appto#1{#2.}%
+ \fi
+ \let\@glsxtr@insert@dots@next\@glsxtr@insert@dots
+ \fi
+ \@glsxtr@insert@dots@next#1%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Similarly provide a way of replacing spaces with
+%\cs{glsxtrwordsep}, which first needs to be defined:
+%\begin{macro}{\glsxtrwordsep}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrwordsep}{\space}
+% \end{macrocode}
+%\end{macro}
+%Each word is marked with
+%\begin{macro}{\glsxtrword}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrword}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@markwordseps}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@markwordseps}[2]{%
+ \def#1{}%
+ \@glsxtr@mark@wordseps#1#2 \@nnil
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@mark@wordseps}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\def\@glsxtr@mark@wordseps#1#2 #3{%
+ \ifdefempty{#1}%
+ {\def#1{\protect\glsxtrword{#2}}}%
+ {\appto#1{\protect\glsxtrwordsep\protect\glsxtrword{#2}}}%
+ \ifx\@nnil#3\relax
+ \let\@glsxtr@mark@wordseps@next\relax
+ \else
+ \def\@glsxtr@mark@wordseps@next{%
+ \@glsxtr@mark@wordseps#1#3}%
+ \fi
+ \@glsxtr@mark@wordseps@next
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\newabbreviation}
+% Define a new generic abbreviation.
+% \begin{macrocode}
+\newcommand*{\newabbreviation}[4][]{%
+ \glsxtr@newabbreviation{#1}{#2}{#3}{#4}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@newabbreviation}
+% Internal macro. (bib2gls has an option that needs to
+% temporarily redefine \cs{newabbreviation}. This is just makes
+% it easier to save and restore the original definition.)
+%\changes{1.12}{2017-02-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@newabbreviation}[4]{%
+ \glskeylisttok{#1}%
+ \glslabeltok{#2}%
+ \glsshorttok{#3}%
+ \glslongtok{#4}%
+% \end{macrocode}
+%Save the original short and long values (before attribute settings
+%modify them).
+%\changes{1.17}{2017-08-09}{added \cs{glsxtrorgshort} and \cs{glsxtrorglong}}
+% \begin{macrocode}
+ \def\glsxtrorgshort{#3}%
+ \def\glsxtrorglong{#4}%
+% \end{macrocode}
+%\changes{1.31}{2018-05-09}{added \cs{ExtraCustomAbbreviationFields}}
+%Provide extra settings for hooks (if modified, this command must
+%end with a comma).
+% \begin{macrocode}
+ \def\ExtraCustomAbbreviationFields{}%
+% \end{macrocode}
+%Initialise accessibility settings if required.
+% \begin{macrocode}
+ \@gls@initaccesskeys
+% \end{macrocode}
+% Get the category.
+%\changes{0.3}{2015-12-02}{fixed family name in \cs{setkeys}}
+% \begin{macrocode}
+ \def\glscategorylabel{abbreviation}%
+ \glsxtr@applyabbrvstyle{\@glsabbrv@current@abbreviation}%
+% \end{macrocode}
+% Ignore the shortplural and longplural keys.
+% \begin{macrocode}
+ \setkeys*{glsxtrabbrv}[shortplural,longplural]{#1}%
+% \end{macrocode}
+% Set the default long plural
+% \begin{macrocode}
+ \def\@gls@longpl{#4\glspluralsuffix}%
+ \let\@gls@default@longpl\@gls@longpl
+% \end{macrocode}
+% Has the \catattr{markwords} attribute been set?
+% \begin{macrocode}
+ \glsifcategoryattribute{\glscategorylabel}{markwords}{true}%
+ {%
+ \@glsxtr@markwordseps\@gls@long{#4}%
+ \expandafter\def\expandafter\@gls@longpl\expandafter
+ {\@gls@long\glspluralsuffix}%
+ \let\@gls@default@longpl\@gls@longpl
+% \end{macrocode}
+% Update \cs{glslongtok}.
+% \begin{macrocode}
+ \expandafter\glslongtok\expandafter{\@gls@long}%
+ }%
+ {}%
+% \end{macrocode}
+% Has the \catattr{markshortwords} attribute been set? (Not
+% compatible with \catattr{insertdots}.)
+% \begin{macrocode}
+ \glsifcategoryattribute{\glscategorylabel}{markshortwords}{true}%
+ {%
+ \@glsxtr@markwordseps\@gls@short{#3}%
+ }%
+ {%
+% \end{macrocode}
+% Has the \catattr{insertdots} attribute been set?
+% \begin{macrocode}
+ \glsifcategoryattribute{\glscategorylabel}{insertdots}{true}%
+ {%
+ \@glsxtr@insertdots\@gls@short{#3}%
+ \expandafter\glsshorttok\expandafter{\@gls@short\spacefactor1000 \relax}%
+ }%
+ {\def\@gls@short{#3}}%
+ }%
+% \end{macrocode}
+% Has the \catattr{aposplural} attribute been set? (Not compatible
+% with \catattr{noshortplural}.)
+% \begin{macrocode}
+ \glsifcategoryattribute{\glscategorylabel}{aposplural}{true}%
+ {%
+ \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short
+ '\abbrvpluralsuffix}%
+ }%
+ {%
+% \end{macrocode}
+% Has the \catattr{noshortplural} attribute been set?
+% \begin{macrocode}
+ \glsifcategoryattribute{\glscategorylabel}{noshortplural}{true}%
+ {%
+ \let\@gls@shortpl\@gls@short
+ }%
+ {%
+ \expandafter\def\expandafter\@gls@shortpl\expandafter{\@gls@short
+ \abbrvpluralsuffix}%
+ }%
+ }%
+% \end{macrocode}
+% Update \cs{glsshorttok}:
+% \begin{macrocode}
+ \expandafter\glsshorttok\expandafter{\@gls@short}%
+% \end{macrocode}
+% Hook for further customisation if required:
+% \begin{macrocode}
+ \glsxtrnewabbrevpresetkeyhook{#1}{#2}{#3}%
+% \end{macrocode}
+% Get the short and long plurals provided by user in optional
+% argument to override defaults, if necessary.
+% Ignore the category key (already obtained).
+% \begin{macrocode}
+ \setkeys*{glsxtrabbrv}[category]{#1}%
+% \end{macrocode}
+% Has the plural been explicitly set?
+% \begin{macrocode}
+ \ifx\@gls@default@longpl\@gls@longpl
+ \else
+% \end{macrocode}
+% Has the \catattr{markwords} attribute been set?
+% \begin{macrocode}
+ \glsifcategoryattribute{\glscategorylabel}{markwords}{true}%
+ {%
+ \expandafter\@glsxtr@markwordseps\expandafter\@gls@longpl\expandafter
+ {\@gls@longpl}%
+ }%
+ {}%
+ \fi
+% \end{macrocode}
+% Set the plural token registers so the values can be accessed by
+% the abbreviation styles.
+% \begin{macrocode}
+ \expandafter\glsshortpltok\expandafter{\@gls@shortpl}%
+ \expandafter\glslongpltok\expandafter{\@gls@longpl}%
+% \end{macrocode}
+% Hook for accessibility support (does nothing if
+% \sty{glossaries-accsupp} hasn't been loaded).
+% \begin{macrocode}
+ \@gls@setup@default@short@access{#3}%
+% \end{macrocode}
+% Do any extra setup provided by hook:
+% \begin{macrocode}
+ \newabbreviationhook
+% \end{macrocode}
+% Define this entry:
+% \begin{macrocode}
+ \protected@edef\@do@newglossaryentry{%
+ \noexpand\newglossaryentry{\the\glslabeltok}%
+ {%
+ type=\glsxtrabbrvtype,%
+ category=abbreviation,%
+ short={\the\glsshorttok},%
+ shortplural={\the\glsshortpltok},%
+ long={\the\glslongtok},%
+ longplural={\the\glslongpltok},%
+ name={\the\glsshorttok},%
+ \CustomAbbreviationFields,%
+% \end{macrocode}
+% Hook may override abbreviation style default settings (this hook
+% must end with a comma if set).
+% \begin{macrocode}
+ \ExtraCustomAbbreviationFields
+% \end{macrocode}
+% Any explicit fields set in the optional argument override all
+% other settings.
+% \begin{macrocode}
+ \the\glskeylisttok
+ }%
+ }%
+ \@do@newglossaryentry
+ \GlsXtrPostNewAbbreviation
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnewabbrevpresetkeyhook}
+% Hook for extra stuff in \cs{newabbreviation}
+%\changes{0.5.2}{2015-12-08}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrnewabbrevpresetkeyhook}[3]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrPostNewAbbreviation}
+% Hook used by abbreviation styles.
+% \begin{macrocode}
+\newcommand*{\GlsXtrPostNewAbbreviation}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\newabbreviationhook}
+% Hook for use with \cs{newabbreviation}.
+% \begin{macrocode}
+\newcommand*{\newabbreviationhook}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\CustomAbbreviationFields}
+% \begin{macrocode}
+\newcommand*{\CustomAbbreviationFields}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrparen}
+%\changes{1.17}{2017-08-09}{new}
+%For the parenthetical styles.
+% \begin{macrocode}
+\newcommand*{\glsxtrparen}[1]{(#1)}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfullformat}
+% Full format without case change.
+% \begin{macrocode}
+\newcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{#1}}#2\glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrfullformat}
+% Full format with case change.
+% \begin{macrocode}
+\newcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{#1}}#2\glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfullplformat}
+% Plural full format without case change.
+% \begin{macrocode}
+\newcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrfullplformat}
+% Plural full format with case change.
+% \begin{macrocode}
+\newcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{#1}}#2\glsxtrfullsep{#1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfullsep}
+% Separator used by full format is a space by default. The argument
+% is the entry's label.
+% \begin{macrocode}
+\newcommand*{\glsxtrfullsep}[1]{\space}
+% \end{macrocode}
+%\end{macro}
+%
+% In-line formats in case first use isn't compatible with
+% \cs{glsentryfull} (for example, first use suppresses the long form
+% or uses a footnote).
+%\begin{macro}{\glsxtrinlinefullformat}
+% Full format without case change.
+% \begin{macrocode}
+\newcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrinlinefullformat}
+% Full format with case change.
+% \begin{macrocode}
+\newcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfullplformat}
+% Plural full format without case change.
+% \begin{macrocode}
+\newcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrinlinefullplformat}
+% Plural full format with case change.
+% \begin{macrocode}
+\newcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}
+% \end{macrocode}
+%\end{macro}
+%
+% Redefine \cs{glsentryfull} etc to use the inline format.
+% Since these commands as supposed to be expandable, they can only
+% use the currently applied style. If there are mixed styles, you'll
+% need to use the \cs{glsxtrfull} set of commands instead.
+%\begin{macro}{\glsentryfull}
+% \begin{macrocode}
+\renewcommand*{\glsentryfull}[1]{\glsxtrinlinefullformat{#1}{}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsentryfull}
+% \begin{macrocode}
+\renewcommand*{\Glsentryfull}[1]{\Glsxtrinlinefullformat{#1}{}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsentryfullpl}
+% \begin{macrocode}
+\renewcommand*{\glsentryfullpl}[1]{\glsxtrinlinefullplformat{#1}{}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsentryfullpl}
+% \begin{macrocode}
+\renewcommand*{\Glsentryfullpl}[1]{\Glsxtrinlinefullplformat{#1}{}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfirstabbrvfont}
+% Font changing command used for the abbreviation on first use or in
+% the full format.
+% \begin{macrocode}
+\newcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfirstabbrvdefaultfont}
+% Font changing command used for the abbreviation on first use or in
+% the full format.
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.40}{2019-03-31}{changed definition from \cs{glsabbrvfont} to
+%\cs{glsabbrvdefaultfont} for consistency}
+% \begin{macrocode}
+\newcommand*{\glsfirstabbrvdefaultfont}[1]{\glsabbrvdefaultfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsabbrvfont}
+% Font changing command used for the abbreviation on subsequent use.
+% \begin{macrocode}
+\newcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsabbrvdefaultfont}
+%\changes{0.3}{2015-12-02}{renamed from \cs{abbrvdefaultfont}}
+% \begin{macrocode}
+\newcommand*{\glsabbrvdefaultfont}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongfont}
+%\changes{1.04}{2016-05-02}{new}
+% Font changing command used for the long form in commands like
+% \cs{glsxtrlong}.
+% \begin{macrocode}
+\newcommand*{\glslongfont}[1]{\glslongdefaultfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongdefaultfont}
+% Default font changing command used for the long form in commands like
+%\changes{1.04}{2016-05-02}{new}
+% \cs{glsxtrlong}.
+% \begin{macrocode}
+\newcommand*{\glslongdefaultfont}[1]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfirstlongfont}
+% Font changing command used for the long form on first use or in
+% the full format.
+% \begin{macrocode}
+\newcommand*{\glsfirstlongfont}[1]{\glslongfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfirstlongdefaultfont}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsfirstlongdefaultfont}[1]{\glslongdefaultfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrabbrvpluralsuffix}
+% Default plural suffix.
+%\changes{1.12}{2017-02-03}{new}
+%Allow an alternative default suffix for abbreviations.
+% \begin{macrocode}
+\newcommand*{\glsxtrabbrvpluralsuffix}{\glspluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\abbrvpluralsuffix}
+% Default plural suffix.
+% \begin{macrocode}
+\newcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfull}
+% Full form (no case-change).
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrfull}{\@gls@hyp@opt\ns@glsxtrfull}
+\newcommand*\ns@glsxtrfull[2][]{%
+ \new@ifnextchar[{\@glsxtr@full{#1}{#2}}%
+ {\@glsxtr@full{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@full}
+% Low-level macro:
+% \begin{macrocode}
+\def\@glsxtr@full#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\glsxtrinlinefullformat{#2}{#3}}%
+% \end{macrocode}
+% What should \cs{glsxtrifwasfirstuse} be set to here? Where the inline
+% and display full forms are the same, this is essentially emulating
+% first use, to it make sense for the postlink hook to pretend it
+% was a first use instance. It makes less sense if the inline and
+% display forms are different. Provide a hook to make it easier to
+% reconfigure.
+% \begin{macrocode}
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsetupfulldefs}
+% \begin{macrocode}
+\newcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@firstoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrfull}
+% Full form (first letter uppercase).
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrfull}{\@gls@hyp@opt\ns@Glsxtrfull}
+\newcommand*\ns@Glsxtrfull[2][]{%
+ \new@ifnextchar[{\@Glsxtr@full{#1}{#2}}%
+ {\@Glsxtr@full{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@Glsxtr@full}
+% Low-level macro:
+% \begin{macrocode}
+\def\@Glsxtr@full#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\Glsxtrinlinefullformat{#2}{#3}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrfull}
+% Full form (all uppercase).
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrfull}{\@gls@hyp@opt\ns@GLSxtrfull}
+\newcommand*\ns@GLSxtrfull[2][]{%
+ \new@ifnextchar[{\@GLSxtr@full{#1}{#2}}%
+ {\@GLSxtr@full{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@GLSxtr@full}
+% Low-level macro:
+% \begin{macrocode}
+\def\@GLSxtr@full#1#2[#3]{%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\mfirstucMakeUppercase{\glsxtrinlinefullformat{#2}{#3}}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfullpl}
+% Plural full form (no case-change).
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrfullpl}{\@gls@hyp@opt\ns@glsxtrfullpl}
+\newcommand*\ns@glsxtrfullpl[2][]{%
+ \new@ifnextchar[{\@glsxtr@fullpl{#1}{#2}}%
+ {\@glsxtr@fullpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@fullpl}
+% Low-level macro:
+% \begin{macrocode}
+\def\@glsxtr@fullpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\glsxtrinlinefullplformat{#2}{#3}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrfullpl}
+% Plural full form (first letter uppercase).
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrfullpl}{\@gls@hyp@opt\ns@Glsxtrfullpl}
+\newcommand*\ns@Glsxtrfullpl[2][]{%
+ \new@ifnextchar[{\@Glsxtr@fullpl{#1}{#2}}%
+ {\@Glsxtr@fullpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@Glsxtr@fullpl}
+% Low-level macro:
+% \begin{macrocode}
+\def\@Glsxtr@fullpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{\Glsxtrinlinefullplformat{#2}{#3}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrfullpl}
+% Plural full form (all upper case).
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrfullpl}{\@gls@hyp@opt\ns@GLSxtrfullpl}
+\newcommand*\ns@GLSxtrfullpl[2][]{%
+ \new@ifnextchar[{\@GLSxtr@fullpl{#1}{#2}}%
+ {\@GLSxtr@fullpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@GLSxtr@fullpl}
+% Low-level macro:
+% \begin{macrocode}
+\def\@GLSxtr@fullpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase{\glsxtrinlinefullplformat{#2}{#3}}}%
+ \glsxtrsetupfulldefs
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% The short and long forms work in a similar way to acronyms.
+%\begin{macro}{\glsxtrshort}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrshort}{\@gls@hyp@opt\ns@glsxtrshort}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@glsxtrshort}[2][]{%
+ \new@ifnextchar[{\@glsxtrshort{#1}{#2}}{\@glsxtrshort{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@glsxtrshort#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+% \end{macrocode}
+% Need to make sure \cs{glsabbrvfont} is set correctly.
+% \begin{macrocode}
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrshort}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrshort}{\@gls@hyp@opt\ns@Glsxtrshort}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@Glsxtrshort}[2][]{%
+ \new@ifnextchar[{\@Glsxtrshort{#1}{#2}}{\@Glsxtrshort{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Glsxtrshort#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsabbrvfont{\Glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshort}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrshort}{\@gls@hyp@opt\ns@GLSxtrshort}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@GLSxtrshort}[2][]{%
+ \new@ifnextchar[{\@GLSxtrshort{#1}{#2}}{\@GLSxtrshort{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@GLSxtrshort#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase
+ {\glsabbrvfont{\glsaccessshort{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlong}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrlong}{\@gls@hyp@opt\ns@glsxtrlong}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@glsxtrlong}[2][]{%
+ \new@ifnextchar[{\@glsxtrlong{#1}{#2}}{\@glsxtrlong{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@glsxtrlong#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrlong}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrlong}{\@gls@hyp@opt\ns@Glsxtrlong}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@Glsxtrlong}[2][]{%
+ \new@ifnextchar[{\@Glsxtrlong{#1}{#2}}{\@Glsxtrlong{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Glsxtrlong#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glslongfont{\Glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlong}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrlong}{\@gls@hyp@opt\ns@GLSxtrlong}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@GLSxtrlong}[2][]{%
+ \new@ifnextchar[{\@GLSxtrlong{#1}{#2}}{\@GLSxtrlong{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@GLSxtrlong#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@secondoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase
+ {\glslongfont{\glsaccesslong{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Plural short forms:
+%\begin{macro}{\glsxtrshortpl}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrshortpl}{\@gls@hyp@opt\ns@glsxtrshortpl}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@glsxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@glsxtrshortpl{#1}{#2}}{\@glsxtrshortpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@glsxtrshortpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrshortpl}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrshortpl}{\@gls@hyp@opt\ns@Glsxtrshortpl}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@Glsxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@Glsxtrshortpl{#1}{#2}}{\@Glsxtrshortpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Glsxtrshortpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glsabbrvfont{\Glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrshortpl}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrshortpl}{\@gls@hyp@opt\ns@GLSxtrshortpl}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@GLSxtrshortpl}[2][]{%
+ \new@ifnextchar[{\@GLSxtrshortpl{#1}{#2}}{\@GLSxtrshortpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@GLSxtrshortpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \glssetabbrvfmt{\glscategory{#2}}%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase
+ {\glsabbrvfont{\glsaccessshortpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Plural long forms:
+%\begin{macro}{\glsxtrlongpl}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrlongpl}{\@gls@hyp@opt\ns@glsxtrlongpl}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@glsxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@glsxtrlongpl{#1}{#2}}{\@glsxtrlongpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@glsxtrlongpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@firstofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrlongpl}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrlongpl}{\@gls@hyp@opt\ns@Glsxtrlongpl}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@Glsxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@Glsxtrlongpl{#1}{#2}}{\@Glsxtrlongpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@Glsxtrlongpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@secondofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \glslongfont{\Glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GLSxtrlongpl}
+%\changes{0.3}{2015-12-02}{new}
+% \begin{macrocode}
+\newrobustcmd*{\GLSxtrlongpl}{\@gls@hyp@opt\ns@GLSxtrlongpl}
+% \end{macrocode}
+% Define the un-starred form. Need to determine if there is
+% a final optional argument
+% \begin{macrocode}
+\newcommand*{\ns@GLSxtrlongpl}[2][]{%
+ \new@ifnextchar[{\@GLSxtrlongpl{#1}{#2}}{\@GLSxtrlongpl{#1}{#2}[]}%
+}
+% \end{macrocode}
+% Read in the final optional argument:
+% \begin{macrocode}
+\def\@GLSxtrlongpl#1#2[#3]{%
+% \end{macrocode}
+%If the \pkgopt{record} option has been used, the information needs
+%to be written to the aux file regardless of whether the entry
+%exists (unless indexing has been switched off).
+%\changes{1.30}{2018-04-25}{added \cs{@glsxtr@record}}
+% \begin{macrocode}
+ \@glsxtr@record{#1}{#2}{glslink}%
+ \glsdoifexists{#2}%
+ {%
+ \let\do@gls@link@checkfirsthyper\@gls@link@nocheckfirsthyper
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ \let\glsifplural\@firstoftwo
+ \let\glscapscase\@thirdofthree
+ \let\glsinsert\@empty
+ \def\glscustomtext{%
+ \mfirstucMakeUppercase
+ {\glslongfont{\glsaccesslongpl{#2}\ifglsxtrinsertinside#3\fi}%
+ \ifglsxtrinsertinside\else#3\fi
+ }%
+ }%
+ \@gls@link[#1]{#2}{\csname gls@\glstype @entryfmt\endcsname}%
+ }%
+ \glspostlinkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glssetabbrvfmt}
+% Set the current format for the given category (or the
+% \category{abbreviation} category if unset).
+% \begin{macrocode}
+\newcommand*{\glssetabbrvfmt}[1]{%
+ \ifcsdef{@glsabbrv@current@#1}%
+ {\glsxtr@applyabbrvfmt{\csname @glsabbrv@current@#1\endcsname}}%
+ {\glsxtr@applyabbrvfmt{\@glsabbrv@current@abbreviation}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsuseabbrvfont}
+% Provide a way to use the abbreviation font for a given category
+% for arbitrary text.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsuseabbrvfont}[2]{{\glssetabbrvfmt{#2}\glsabbrvfont{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsuselongfont}
+% Provide a way to use the long font for a given category
+% for arbitrary text.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsuselongfont}[2]{{\glssetabbrvfmt{#2}\glslongfont{#1}}}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{0.5.2}{2015-12-08}{removed \cs{glsxtrabbrvfmt}}
+%\begin{macro}{\glsxtrgenabbrvfmt}
+% Similar to \cs{glsgenacfmt}, but for abbreviations.
+%\changes{1.17}{2017-08-09}{added check for \cs{ifglsxtrinsertinside}}
+% \begin{macrocode}
+\newcommand*{\glsxtrgenabbrvfmt}{%
+ \ifdefempty\glscustomtext
+ {%
+ \ifglsused\glslabel
+ {%
+% \end{macrocode}
+% Subsequent use:
+% \begin{macrocode}
+ \glsifplural
+ {%
+% \end{macrocode}
+% Subsequent plural form:
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Subsequent plural form, don't adjust case:
+% \begin{macrocode}
+ \glsxtrsubsequentplfmt{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% Subsequent plural form, make first letter upper case:
+% \begin{macrocode}
+ \Glsxtrsubsequentplfmt{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% Subsequent plural form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\glsxtrsubsequentplfmt{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% Subsequent singular form, don't adjust case:
+% \begin{macrocode}
+ \glsxtrsubsequentfmt{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, make first letter upper case:
+% \begin{macrocode}
+ \Glsxtrsubsequentfmt{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% Subsequent singular form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\glsxtrsubsequentfmt{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% First use:
+% \begin{macrocode}
+ \glsifplural
+ {%
+% \end{macrocode}
+% First use plural form:
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% First use plural form, don't adjust case:
+% \begin{macrocode}
+ \glsxtrfullplformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use plural form, make first letter upper case:
+% \begin{macrocode}
+ \Glsxtrfullplformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use plural form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\glsxtrfullplformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form
+% \begin{macrocode}
+ \glscapscase
+ {%
+% \end{macrocode}
+% First use singular form, don't adjust case:
+% \begin{macrocode}
+ \glsxtrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form, make first letter upper case:
+% \begin{macrocode}
+ \Glsxtrfullformat{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% First use singular form, all caps:
+% \begin{macrocode}
+ \mfirstucMakeUppercase
+ {\glsxtrfullformat{\glslabel}{\glsinsert}}%
+ }%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+% User supplied text.
+% \begin{macrocode}
+ \glscustomtext
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsubsequentfmt}
+% Subsequent use format (singular no case change).
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}%
+ \ifglsxtrinsertinside \else#2\fi
+}
+\let\glsxtrdefaultsubsequentfmt\glsxtrsubsequentfmt
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrsubsequentplfmt}
+% Subsequent use format (plural no case change).
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}%
+ \ifglsxtrinsertinside \else#2\fi
+}
+\let\glsxtrdefaultsubsequentplfmt\glsxtrsubsequentplfmt
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrsubsequentfmt}
+% Subsequent use format (singular, first letter uppercase).
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshort{#1}\ifglsxtrinsertinside #2\fi}%
+ \ifglsxtrinsertinside \else#2\fi
+}
+\let\Glsxtrdefaultsubsequentfmt\Glsxtrsubsequentfmt
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrsubsequentplfmt}
+% Subsequent use format (plural, first letter uppercase).
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshortpl{#1}\ifglsxtrinsertinside #2\fi}%
+ \ifglsxtrinsertinside \else#2\fi
+}
+\let\Glsxtrdefaultsubsequentplfmt\Glsxtrsubsequentplfmt
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Abbreviation Styles Setup}
+%
+%\begin{macro}{\setabbreviationstyle}
+% \begin{macrocode}
+\newcommand*{\setabbreviationstyle}[2][abbreviation]{%
+ \ifcsundef{@glsabbrv@dispstyle@setup@#2}
+ {%
+ \PackageError{glossaries-extra}{Undefined abbreviation style `#2'}{}%
+ }%
+ {%
+% \end{macrocode}
+% Have abbreviations already been defined for this category?
+%\changes{0.5.2}{2015-12-08}{added check for post-definition style switch}
+% \begin{macrocode}
+ \ifcsstring{@glsabbrv@current@#1}{#2}%
+ {%
+% \end{macrocode}
+% Style already set.
+% \begin{macrocode}
+ }%
+ {%
+ \def\@glsxtr@dostylewarn{}%
+ \glsforeachincategory{#1}{\@gls@type}{\@gls@label}%
+ {%
+ \def\@glsxtr@dostylewarn{\GlossariesWarning{Abbreviation
+ style has been switched \MessageBreak
+ for category `#1', \MessageBreak
+ but there have already been entries \MessageBreak
+ defined for this category. Unwanted \MessageBreak
+ side-effects may result}}%
+ \@endfortrue
+ }%
+ \@glsxtr@dostylewarn
+% \end{macrocode}
+% Set up the style for the given category.
+% \begin{macrocode}
+ \csdef{@glsabbrv@current@#1}{#2}%
+ \glsxtr@applyabbrvstyle{#2}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@applyabbrvstyle}
+% Apply the abbreviation style without existence check.
+% \begin{macrocode}
+\newcommand*{\glsxtr@applyabbrvstyle}[1]{%
+ \csuse{@glsabbrv@dispstyle@setup@#1}%
+ \csuse{@glsabbrv@dispstyle@fmts@#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@applyabbrvfmt}
+% Only apply the style formats.
+% \begin{macrocode}
+\newcommand*{\glsxtr@applyabbrvfmt}[1]{%
+ \csuse{@glsabbrv@dispstyle@fmts@#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\newabbreviationstyle}
+% This is different from \cs{newacronymstyle}. The first argument is
+% the label, the second argument sets the information required when
+% defining the new abbreviation and the third argument sets the
+% commands used to display the full format.
+%\changes{1.04}{2016-05-02}{bug fix: corrected test for existence}
+% \begin{macrocode}
+\newcommand*{\newabbreviationstyle}[3]{%
+ \ifcsdef{@glsabbrv@dispstyle@setup@#1}
+ {%
+ \PackageError{glossaries-extra}{Abbreviation style `#1' already
+ defined}{}%
+ }%
+ {%
+ \csdef{@glsabbrv@dispstyle@setup@#1}{%
+% \end{macrocode}
+% Initialise hook to do nothing. The style may change this.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{}%
+ #2}%
+ \csdef{@glsabbrv@dispstyle@fmts@#1}{%
+% \end{macrocode}
+% Assume in-line form is the same as first use. The style may change
+% this.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}%
+ \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}%
+ \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}%
+ \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}%
+% \end{macrocode}
+% Reset \cs{glsxtrsubsequentfmt} etc in case a style changes this.
+% \begin{macrocode}
+ \let\glsxtrsubsequentfmt\glsxtrdefaultsubsequentfmt
+ \let\glsxtrsubsequentplfmt\glsxtrdefaultsubsequentplfmt
+ \let\Glsxtrsubsequentfmt\Glsxtrdefaultsubsequentfmt
+ \let\Glsxtrsubsequentplfmt\Glsxtrdefaultsubsequentplfmt
+ #3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\renewabbreviationstyle}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\renewabbreviationstyle}[3]{%
+ \ifcsundef{@glsabbrv@dispstyle@setup@#1}
+ {%
+ \PackageError{glossaries-extra}{Abbreviation style `#1' not defined}{}%
+ }%
+ {%
+ \csdef{@glsabbrv@dispstyle@setup@#1}{%
+% \end{macrocode}
+% Initialise hook to do nothing. The style may change this.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{}%
+ #2}%
+ \csdef{@glsabbrv@dispstyle@fmts@#1}{%
+% \end{macrocode}
+% Assume in-line form is the same as first use. The style may change
+% this.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}{\glsxtrfullformat}%
+ \renewcommand*{\Glsxtrinlinefullformat}{\Glsxtrfullformat}%
+ \renewcommand*{\glsxtrinlinefullplformat}{\glsxtrfullplformat}%
+ \renewcommand*{\Glsxtrinlinefullplformat}{\Glsxtrfullplformat}%
+ #3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\letabbreviationstyle}
+%\changes{1.04}{2016-05-02}{new}
+% Define a synonym for an abbreviation style. The first argument is
+% the new name. The second argument is the original style's name.
+% \begin{macrocode}
+\newcommand*{\letabbreviationstyle}[2]{%
+ \csletcs{@glsabbrv@dispstyle@setup@#1}{@glsabbrv@dispstyle@setup@#2}%
+ \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\@glsxtr@deprecated@abbrstyle}
+%\changes{1.04}{2016-05-02}{new}
+%\begin{definition}
+%\cs{@glsxtr@deprecated@abbrstyle}\marg{old-name}\marg{new-name}
+%\end{definition}
+% Define a synonym for a deprecated abbreviation style.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@deprecated@abbrstyle}[2]{%
+ \csdef{@glsabbrv@dispstyle@setup@#1}{%
+ \GlsXtrWarnDeprecatedAbbrStyle{#1}{#2}%
+ \csuse{@glsabbrv@dispstyle@setup@#2}%
+ }%
+ \csletcs{@glsabbrv@dispstyle@fmts@#1}{@glsabbrv@dispstyle@fmts@#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrWarnDeprecatedAbbrStyle}
+%Generate warning for deprecated style use.
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\GlsXtrWarnDeprecatedAbbrStyle}[2]{%
+ \GlossariesExtraWarning{Deprecated abbreviation style name `#1',
+ use `#2' instead}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrUseAbbrStyleSetup}
+% \begin{macrocode}
+\newcommand*{\GlsXtrUseAbbrStyleSetup}[1]{%
+ \ifcsundef{@glsabbrv@dispstyle@setup@#1}%
+ {%
+ \PackageError{glossaries-extra}%
+ {Unknown abbreviation style definitions `#1'}{}%
+ }%
+ {%
+ \csname @glsabbrv@dispstyle@setup@#1\endcsname
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrUseAbbrStyleFmts}
+% \begin{macrocode}
+\newcommand*{\GlsXtrUseAbbrStyleFmts}[1]{%
+ \ifcsundef{@glsabbrv@dispstyle@fmts@#1}%
+ {%
+ \PackageError{glossaries-extra}%
+ {Unknown abbreviation style formats `#1'}{}%
+ }%
+ {%
+ \csname @glsabbrv@dispstyle@fmts@#1\endcsname
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\subsection{Predefined Styles (Default Font)}
+% Define some common styles. These will set the \gloskey{first},
+% \gloskey{firstplural}, \gloskey{text} and \gloskey{plural}
+% keys, even if the \catattr{regular} attribute isn't set to
+% \qt{true}. If this attribute is set, commands like \cs{gls} will
+% use them as per a regular entry, otherwise those keys will be
+% ignored unless explicitly invoked by the user with commands like
+% \cs{glsfirst}. In order for the first letter uppercase versions to
+% work correctly, \cs{glsxtrfullformat} needs to be expanded when
+% those keys are set. The final optional argument of \cs{glsfirst}
+% will behave differently to the final optional argument of \cs{gls}
+% with some styles.
+%
+%\begin{macro}{\ifglsxtrinsertinside}
+%\changes{1.02}{2016-04-25}{new}
+% Switch to determine if the insert text should be inside or outside
+% the font changing command. The default is outside.
+% \begin{macrocode}
+\newif\ifglsxtrinsertinside
+\glsxtrinsertinsidefalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlongshortname}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongshortname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{1.17}{2017-08-09}{removed some inconsistencies in the abbreviation
+%styles}
+%\begin{abbrvstyle}{long-short}
+% \begin{macrocode}
+\newabbreviationstyle{long-short}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+% \end{macrocode}
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+% Set this as the default style for general abbreviations:
+% \begin{macrocode}
+\setabbreviationstyle{long-short}
+% \end{macrocode}
+%
+%\begin{macro}{\glsxtrlongshortdescsort}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongshortdescsort}{%
+ \expandonce\glsxtrorglong\space (\expandonce\glsxtrorgshort)%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlongshortdescname}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongshortdescname}{%
+ \protect\glslongfont{\the\glslongtok}
+ \glsxtrparen{\protect\glsabbrvfont{\the\glsshorttok}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-short-desc}
+% User supplies description. The long form is included in the name.
+%\changes{0.3}{2015-12-02}{fixed name to use \cs{glslabeltok}}
+% \begin{macrocode}
+\newabbreviationstyle{long-short-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\the\glsshortpltok}}},%
+% \end{macrocode}
+%The \gloskey{text} key should only have the short form.
+%\changes{1.07}{2016-08-15}{added missing text key}
+% \begin{macrocode}
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+% \end{macrocode}
+%\changes{1.07}{2016-08-15}{fixed misspelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrshortlongname}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortlongname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{short-long}
+% Short form followed by long form in parenthesis on first use.
+% \begin{macrocode}
+\newabbreviationstyle{short-long}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrshortlongdescsort}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortlongdescsort}{\the\glsshorttok}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrshortlongdescname}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortlongdescname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}
+ \glsxtrparen{\protect\glslongfont{\the\glslongtok}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{short-long-desc}
+% User supplies description. The long form is included in the name.
+%\changes{0.3}{2015-12-02}{fixed name to use \cs{glslabeltok}}
+% \begin{macrocode}
+\newabbreviationstyle{short-long-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongfont{\the\glslongpltok}}},%
+% \end{macrocode}
+%\changes{1.07}{2016-08-15}{added text key}
+% \begin{macrocode}
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+% \end{macrocode}
+%\changes{1.07}{2016-08-15}{fixed misspelling of \cs{glsabbrvfont} in plural
+%key}
+% \begin{macrocode}
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsfirstlongfootnotefont}
+%\changes{1.05}{2016-06-10}{new}
+%Only used by the \qt{footnote} styles.
+% \begin{macrocode}
+\newcommand*{\glsfirstlongfootnotefont}[1]{\glslongfootnotefont{#1}}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongfootnotefont}
+%\changes{1.05}{2016-06-10}{new}
+%Only used by the \qt{footnote} styles.
+% \begin{macrocode}
+\newcommand*{\glslongfootnotefont}[1]{\glslongdefaultfont{#1}}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrabbrvfootnote}
+%\begin{definition}
+%\cs{glsxtrabbrvfootnote}\marg{label}\marg{long}
+%\end{definition}
+%\changes{1.07}{2016-08-15}{new}
+%Command used by footnote abbreviation styles. The default
+%definition ignores the first argument. The second argument
+%\meta{long} includes the font changing command and may be the
+%singular or plural form, depending on the command that was used
+%(for example, \cs{gls} or \cs{glspl}).
+% \begin{macrocode}
+\newcommand*{\glsxtrabbrvfootnote}[2]{\footnote{#2}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfootnotename}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrfootnotename}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{footnote}
+% Short form followed by long form in footnote on first use.
+% \begin{macrocode}
+\newabbreviationstyle{footnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+% \end{macrocode}
+%\changes{1.07}{2016-08-15}{changed first forms to use
+%\cs{glsfirstlongfootnotefont}}
+% \begin{macrocode}
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Switch off hyperlinks on first use to prevent nested hyperlinks,
+% and unset the \catattr{regular} attribute if it has been set.
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+% \end{macrocode}
+% The full format displays the short form followed by the long form
+% as a footnote.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form and the inline full form use the short
+% (long) style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{short-footnote}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-footnote}{footnote}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{postfootnote}
+% Similar to the above but the footnote is placed afterwards,
+% outside the link. This avoids nested links and can also move the
+% footnote marker after any following punctuation mark.
+% Pre v1.07 included \cs{footnote} in the first keys, which was
+% incorrect as it caused duplicate footnotes.
+%\changes{1.07}{2016-08-15}{removed \cs{footnote} from first keys}
+% \begin{macrocode}
+\newabbreviationstyle{postfootnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Make this category insert a footnote after the link if this was
+% the first use, and
+% unset the \catattr{regular} attribute if it has been set.
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+% \end{macrocode}
+% Needs the specific font command here as the style may have been
+% lost by the time the footnote occurs.
+% \begin{macrocode}
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+%\changes{1.02}{2016-04-25}{added redef of \cs{glsxtrsetupfulldefs}}
+% The footnote needs to be suppressed in the inline form, so
+% \cs{glsxtrfull} must set the first use switch off.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+% \end{macrocode}
+% The full format displays the short form. The long form is
+% deferred.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+% \end{macrocode}
+% The first use full form and the inline full form use the short
+% (long) style.
+%\changes{1.07}{2016-08-15}{switched from \cs{glsfirstlongfont} to
+%\cs{glsfirstlongfootnotefont}}
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-postfootnote}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-postfootnote}{postfootnote}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrshortnolongname}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortnolongname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{short}
+% Provide a style that only displays the short form on first use,
+% but the short and long form can be displayed with the \qt{full}
+% commands that use the inline format. If the user supplies a
+% description, the long form won't be displayed in the predefined
+% glossary styles, but the post description hook can be employed to
+% automatically insert it.
+% \begin{macrocode}
+\newabbreviationstyle{short}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortnolongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}},
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The inline full form displays the short form followed by the
+% long form in parentheses.
+%\changes{0.2}{2015-11-30}{switched inline full form to short (long)}
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\Glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\Glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the short form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+% Set this as the default style for acronyms:
+% \begin{macrocode}
+\setabbreviationstyle[acronym]{short}
+% \end{macrocode}
+%
+%\begin{abbrvstyle}{short-nolong}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-nolong}{short}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-nolong-noreg}
+%\changes{1.17}{2017-08-09}{new}
+% Like \abbrstyle{short-nolong} but doesn't set the \catattr{regular} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{short-nolong-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-nolong}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-nolong}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%
+%\begin{macro}{\glsxtrshortdescname}
+%\changes{1.17}{2017-08-09}{new}
+%\changes{1.39}{2019-03-22}{corrected to show long form as advertised in the
+%manual}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortdescname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \protect\glsxtrparen{\protect\glslongfont{\the\glslongtok}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{short-desc}
+% The user must supply the description in this style. The long form
+% is added to the name. The \abbrstyle{short} style (possibly with the
+% post-description hooks set) might be a better option.
+%\changes{1.01}{2016-02-02}{fixed typo in
+%\cs{glsxtrinlinefullformat} and added missing second argument}
+%\changes{1.39}{2019-03-22}{corrected to omit \gloskey{description} key as advertised in the
+%manual}
+% \begin{macrocode}
+\newabbreviationstyle{short-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The inline full form displays the short format followed by the
+% long form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the short form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{short-nolong-desc}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-nolong-desc}{short-desc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-nolong-desc-noreg}
+%\changes{1.17}{2017-08-09}{new}
+% Like \abbrstyle{short-nolong-desc} but doesn't set the \catattr{regular} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{short-nolong-desc-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-nolong-desc}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-nolong-desc}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{nolong-short}
+% Similar to \abbrstyle{short-nolong} but the full form shows the
+% long form followed by the short form in parentheses.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newabbreviationstyle{nolong-short}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-nolong}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-nolong}%
+% \end{macrocode}
+% The inline full form displays the long form followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvfont{\Glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{nolong-short-noreg}
+%\changes{1.21}{2017-11-03}{new}
+% Like \abbrstyle{nolong-short} but doesn't set the \catattr{regular} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{nolong-short-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{nolong-short}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{nolong-short}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrlongnoshortdescname}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongnoshortdescname}{%
+ \protect\glslongfont{\the\glslongtok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-desc}
+% Provide a style that only displays the long form,
+% but the long and short form can be displayed with the \qt{full}
+% commands that use the inline format. The predefined glossary styles
+% won't show the short form. The user must supply a description for
+% this style.
+% \begin{macrocode}
+\newabbreviationstyle{long-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortdescname},
+ sort={\the\glslongtok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}},
+ text={\glslongfont{\the\glslongtok}},
+ plural={\glslongfont{\the\glslongpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{long-noshort-desc}
+%\changes{1.04}{2016-05-02}{new}
+%Provide a synonym that matches similar styles.
+% \begin{macrocode}
+\letabbreviationstyle{long-noshort-desc}{long-desc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort-desc-noreg}
+%\changes{1.17}{2017-08-09}{new}
+% Like long-noshort-desc but doesn't set the \catattr{regular} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{long-noshort-desc-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort-desc}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-noshort-desc}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrlongnoshortname}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongnoshortname}{%
+ \protect\glsabbrvfont{\the\glsshorttok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long}
+% It doesn't really make a great deal of sense to have a long-only
+% style that doesn't have a description (unless no glossary is
+% required), but the best course of
+% action here is to use the short form as the name and the long
+% form as the description.
+% \begin{macrocode}
+\newabbreviationstyle{long}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongfont{\the\glslongpltok}},
+ text={\glslongfont{\the\glslongtok}},
+ plural={\glslongfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-desc}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort}
+%\changes{1.04}{2016-05-02}{new}
+%Provide a synonym that matches similar styles.
+% \begin{macrocode}
+\letabbreviationstyle{long-noshort}{long}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort-noreg}
+%\changes{1.17}{2017-08-09}{new}
+% Like long-noshort but doesn't set the \catattr{regular} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{long-noshort-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-noshort}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\subsection{Predefined Styles (Small Capitals)}
+%These styles use \cs{textsc} for the short form.
+%\begin{macro}{\glsxtrscfont}
+%\changes{0.5}{2015-12-07}{new}
+%Maintained for backward-compatibility.
+% \begin{macrocode}
+\newcommand*{\glsxtrscfont}[1]{\textsc{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsabbrvscfont}
+%\changes{1.17}{2017-08-09}{new}
+%Added for consistent naming.
+% \begin{macrocode}
+\newcommand*{\glsabbrvscfont}{\glsxtrscfont}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrfirstscfont}
+%\changes{1.04}{2016-05-02}{new}
+%Maintained for backward-compatibility.
+% \begin{macrocode}
+\newcommand*{\glsxtrfirstscfont}[1]{\glsabbrvscfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstabbrvscfont}
+%\changes{1.17}{2017-08-09}{new}
+%Added for consistent naming.
+% \begin{macrocode}
+\newcommand*{\glsfirstabbrvscfont}{\glsxtrfirstscfont}
+% \end{macrocode}
+%\end{macro}
+% and for the default short form suffix:
+%\begin{macro}{\glsxtrscsuffix}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrscsuffix}{\glstextup{\glsxtrabbrvpluralsuffix}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-short-sc}
+% \begin{macrocode}
+\newabbreviationstyle{long-short-sc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% Use smallcaps and adjust the plural suffix to revert to upright.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+% \end{macrocode}
+% Use the default long fonts.
+% \begin{macrocode}
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%
+%\begin{abbrvstyle}{long-short-sc-desc}
+% \begin{macrocode}
+\newabbreviationstyle{long-short-sc-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% As long-short-sc style:
+% \begin{macrocode}
+ \GlsXtrUseAbbrStyleFmts{long-short-sc}%
+}
+% \end{macrocode}
+%
+% Now the short (long) version
+% \begin{macrocode}
+\newabbreviationstyle{short-sc-long}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% Use smallcaps and adjust the plural suffix to revert to upright.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+% As before but user provides description
+% \begin{macrocode}
+\newabbreviationstyle{short-sc-long-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% As short-sc-long style:
+% \begin{macrocode}
+ \GlsXtrUseAbbrStyleFmts{short-sc-long}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sc}
+% \begin{macrocode}
+\newabbreviationstyle{short-sc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortnolongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}},
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+% \end{macrocode}
+% Use smallcaps and adjust the plural suffix to revert to upright.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The inline full form displays the short form followed by the
+% long form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvscfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{corrected first letter uppercasing}
+% \begin{macrocode}
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvscfont{\Glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvscfont{\Glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the short form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sc-nolong}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-sc-nolong}{short-sc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sc-desc}
+%\changes{1.39}{2019-03-22}{bug fix: omit \gloskey{description} key as advertised in the
+%manual}
+% \begin{macrocode}
+\newabbreviationstyle{short-sc-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvscfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+% \end{macrocode}
+% Use smallcaps and adjust the plural suffix to revert to upright.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The inline full form displays the short format followed by the
+% long form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the short form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{short-sc-nolong-desc}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-sc-nolong-desc}{short-sc-desc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{nolong-short-sc}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newabbreviationstyle{nolong-short-sc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-sc-nolong}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sc-nolong}%
+% \end{macrocode}
+% The inline full form displays the long form followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort-sc}
+%\changes{1.04}{2016-05-02}{renamed from \qt{long-sc}}
+% The smallcaps font will only be used if
+% the short form is explicitly invoked through commands like
+% \cs{glsxtrshort}.
+% \begin{macrocode}
+\newabbreviationstyle{long-noshort-sc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
+ text={\protect\glslongdefaultfont{\the\glslongtok}},
+ plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+% \end{macrocode}
+% Use smallcaps and adjust the plural suffix to revert to upright.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{long-sc}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{long-sc}{long-noshort-sc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort-sc-desc}
+%\changes{1.04}{2016-05-02}{renamed from \qt{long-desc-sc}}
+% The smallcaps font will only be used if
+% the short form is explicitly invoked through commands like
+% \cs{glsshort}.
+% \begin{macrocode}
+\newabbreviationstyle{long-noshort-sc-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort-desc}%
+}%
+{%
+% \end{macrocode}
+% Use smallcaps and adjust the plural suffix to revert to upright.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvscfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{long-desc-sc}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{long-desc-sc}{long-noshort-sc-desc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sc-footnote}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2016-05-02}{renamed from \qt{footnote-sc}}
+% \begin{macrocode}
+\newabbreviationstyle{short-sc-footnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Switch off hyperlinks on first use to prevent nested hyperlinks,
+% and unset the \catattr{regular} attribute if it has been set.
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% Use smallcaps and adjust the plural suffix to revert to upright.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+% \end{macrocode}
+% The full format displays the short form followed by the long form
+% as a footnote.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form and the inline full form use the short
+% (long) style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{footnote-sc}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{footnote-sc}{short-sc-footnote}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sc-postfootnote}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-sc}}
+% \begin{macrocode}
+\newabbreviationstyle{short-sc-postfootnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvscfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvscfont{\the\glsshortpltok}},%
+ plural={\protect\glsabbrvscfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Make this category insert a footnote after the link if this was
+% the first use, and
+% unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+% \end{macrocode}
+% Needs the specific font command here as the style may have been
+% lost by the time the footnote occurs.
+% \begin{macrocode}
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% The footnote needs to be suppressed in the inline form, so
+% \cs{glsxtrfull} must set the first use switch off.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+% \end{macrocode}
+% Use smallcaps and adjust the plural suffix to revert to upright.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrscsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvscfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvscfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+% \end{macrocode}
+% The full format displays the short form. The long form is
+% deferred.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+% \end{macrocode}
+% The first use full form and the inline full form use the short
+% (long) style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvscfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{postfootnote-sc}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{postfootnote-sc}{short-sc-postfootnote}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\subsection{Predefined Styles (Fake Small Capitals)}
+% These styles require the \sty{relsize} package, which must be
+% loaded by the user. These styles all use:
+%\begin{macro}{\glsxtrsmfont}
+%\changes{0.5}{2015-12-07}{new}
+%Maintained for backward compatibility.
+% \begin{macrocode}
+\newcommand*{\glsxtrsmfont}[1]{\textsmaller{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsabbrvsmfont}
+%\changes{1.17}{2017-08-09}{new}
+%Added for consistent naming.
+% \begin{macrocode}
+\newcommand*{\glsabbrvsmfont}{\glsxtrsmfont}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrfirstsmfont}
+%\changes{1.04}{2016-05-02}{new}
+%Maintained for backward compatibility.
+% \begin{macrocode}
+\newcommand*{\glsxtrfirstsmfont}[1]{\glsabbrvsmfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstabbrvsmfont}
+%\changes{1.17}{2017-08-09}{new}
+%Added for consistent naming.
+% \begin{macrocode}
+\newcommand*{\glsfirstabbrvsmfont}{\glsxtrfirstsmfont}
+% \end{macrocode}
+%\end{macro}
+% and for the default short form suffix:
+%\begin{macro}{\glsxtrsmsuffix}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrsmsuffix}{\glsxtrabbrvpluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-short-sm}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-short-sm}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+% \end{macrocode}
+% Use the default long fonts.
+% \begin{macrocode}
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-short-sm-desc}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-short-sm-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% As long-short-sm style:
+% \begin{macrocode}
+ \GlsXtrUseAbbrStyleFmts{long-short-sm}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sm-long}
+% Now the short (long) version
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-sm-long}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sm-long-desc}
+% As before but user provides description
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-sm-long-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% As short-sm-long style:
+% \begin{macrocode}
+ \GlsXtrUseAbbrStyleFmts{short-sm-long}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sm}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-sm}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortnolongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}},
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The inline full form displays the short form followed by the
+% long form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvsmfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{corrected first letter uppercasing}
+% \begin{macrocode}
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvsmfont{\Glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvsmfont{\Glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the short form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sm-nolong}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-sm-nolong}{short-sm}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sm-desc}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.39}{2019-03-22}{corrected to omit \gloskey{description} key as advertised in the
+%manual}
+% \begin{macrocode}
+\newabbreviationstyle{short-sm-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvsmfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The inline full form displays the short format followed by the
+% long form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the short form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{short-sm-nolong-desc}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-sm-nolong-desc}{short-sm-desc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{nolong-short-sm}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newabbreviationstyle{nolong-short-sm}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-sm-nolong}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-sm-nolong}%
+% \end{macrocode}
+% The inline full form displays the long form followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort-sm}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2016-05-02}{renamed from \qt{long-sm}}
+% The smallcaps font will only be used if
+% the short form is explicitly invoked through commands like
+% \cs{glsshort}.
+% \begin{macrocode}
+\newabbreviationstyle{long-noshort-sm}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
+ text={\protect\glslongdefaultfont{\the\glslongtok}},
+ plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{long-sm}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{long-sm}{long-noshort-sm}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort-sm-desc}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2016-05-02}{renamed from \cs{long-desc-sm}}
+% The smaller font will only be used if
+% the short form is explicitly invoked through commands like
+% \cs{glsshort}.
+% \begin{macrocode}
+\newabbreviationstyle{long-noshort-sm-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort-desc}%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvsmfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{long-desc-sm}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{long-desc-sm}{long-noshort-sm-desc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sm-footnote}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2016-05-02}{renamed from \qt{footnote-sm}}
+% \begin{macrocode}
+\newabbreviationstyle{short-sm-footnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Switch off hyperlinks on first use to prevent nested hyperlinks,
+% and unset the \catattr{regular} attribute if it has been set.
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+% \end{macrocode}
+% The full format displays the short form followed by the long form
+% as a footnote.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form and the inline full form use the short
+% (long) style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{footnote-sm}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{footnote-sm}{short-sm-footnote}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-sm-postfootnote}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-sm}}
+% \begin{macrocode}
+\newabbreviationstyle{short-sm-postfootnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvsmfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvsmfont{\the\glsshortpltok}},%
+ plural={\protect\glsabbrvsmfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Make this category insert a footnote after the link if this was
+% the first use, and
+% unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+% \end{macrocode}
+% Needs the specific font command here as the style may have been
+% lost by the time the footnote occurs.
+% \begin{macrocode}
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% The footnote needs to be suppressed in the inline form, so
+% \cs{glsxtrfull} must set the first use switch off.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvsmfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvsmfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtrsmsuffix}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+% \end{macrocode}
+% The full format displays the short form. The long form is
+% deferred.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+% \end{macrocode}
+% The first use full form and the inline full form use the short
+% (long) style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvsmfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{postfootnote-sm}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{postfootnote-sm}{short-sm-postfootnote}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\subsection{Predefined Styles (Emphasized)}
+% These styles use \ics{emph} for the short form.
+%\begin{macro}{\glsabbrvemfont}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsabbrvemfont}[1]{\emph{#1}}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstabbrvemfont}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsfirstabbrvemfont}[1]{\glsabbrvemfont{#1}}%
+% \end{macrocode}
+%\end{macro}
+% The default short form suffix:
+%\begin{macro}{\glsxtremsuffix}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtremsuffix}{\glsxtrabbrvpluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstlongemfont}
+%\changes{1.04}{2016-05-02}{new}
+%Only used by the \qt{long-em} styles.
+% \begin{macrocode}
+\newcommand*{\glsfirstlongemfont}[1]{\glslongemfont{#1}}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongemfont}
+%\changes{1.04}{2016-05-02}{new}
+%Only used by the \qt{long-em} styles.
+% \begin{macrocode}
+\newcommand*{\glslongemfont}[1]{\emph{#1}}%
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-short-em}
+%\changes{0.5}{2015-12-07}{new}
+% The long form is just set in the default long font.
+% \begin{macrocode}
+\newabbreviationstyle{long-short-em}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}},%
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+% \end{macrocode}
+% Use the default long fonts.
+% \begin{macrocode}
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-short-em-desc}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-short-em-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% As long-short-em style:
+% \begin{macrocode}
+ \GlsXtrUseAbbrStyleFmts{long-short-em}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-em-short-em}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-em-short-em}%
+{%
+% \end{macrocode}
+%\cs{glslongemfont} is used in the description since \cs{glsdesc}
+%doesn't set the style.
+% \begin{macrocode}
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongemfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}},%
+ description={\protect\glslongemfont{\the\glslongtok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-em-short-em-desc}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-em-short-em-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlongemfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-em-short-em}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em-long}
+% Now the short (long) version
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-em-long}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% Mostly as short-long style:
+%\changes{1.05}{2016-06-10}{fixed incorrect font used by long form}
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*\glsfirstabbrvfont[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em-long-desc}
+% As before but user provides description
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-em-long-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongdefaultfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-em-long}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em-long-em}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-em-long-em}%
+{%
+% \end{macrocode}
+%\cs{glslongemfont} is used in the description since \cs{glsdesc}
+%doesn't set the style.
+% \begin{macrocode}
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\protect\glslongemfont{\the\glslongtok}},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongemfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongemfont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em-long-em-desc}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-em-long-em-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},%
+ sort={\glsxtrshortlongdescsort},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlongemfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-em-long-em}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em}
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-em}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortnolongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}},
+ description={\the\glslongtok}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The inline full form displays the short form followed by the
+% long form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvemfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstabbrvemfont{\Glsaccessshort{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstabbrvemfont{\Glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the short form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em-nolong}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-em-nolong}{short-em}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em-desc}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.39}{2019-03-22}{bug fix: omit \gloskey{description} key as advertised in the
+%manual}
+% \begin{macrocode}
+\newabbreviationstyle{short-em-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},
+ text={\protect\glsabbrvemfont{\the\glsshorttok}},
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The inline full form displays the short format followed by the
+% long form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongdefaultfont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the short form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{short-em-nolong-desc}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\letabbreviationstyle{short-em-nolong-desc}{short-em-desc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{nolong-short-em}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newabbreviationstyle{nolong-short-em}%
+{%
+ \GlsXtrUseAbbrStyleSetup{short-em-nolong}%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-em-nolong}%
+% \end{macrocode}
+% The inline full form displays the long form followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslong{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \protect\glsfirstlongdefaultfont{\Glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort-em}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2016-05-02}{renamed from \qt{long-em}}
+% The short form is explicitly invoked through commands like
+% \cs{glsshort}.
+% \begin{macrocode}
+\newabbreviationstyle{long-noshort-em}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongdefaultfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongdefaultfont{\the\glslongpltok}},
+ text={\protect\glslongdefaultfont{\the\glslongtok}},
+ plural={\protect\glslongdefaultfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{long-em}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{long-em}{long-noshort-em}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-em-noshort-em}
+%\changes{1.04}{2016-05-02}{new}
+% The short form is explicitly invoked through commands like
+% \cs{glsshort}.
+% \begin{macrocode}
+\newabbreviationstyle{long-em-noshort-em}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongemfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}},
+ text={\protect\glslongemfont{\the\glslongtok}},
+ plural={\protect\glslongemfont{\the\glslongpltok}},%
+ description={\protect\glslongemfont{\the\glslongtok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-em-noshort-em-noreg}
+%\changes{1.17}{2017-08-09}{new}
+% Like long-em-noshort-em but doesn't set the \catattr{regular} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{long-em-noshort-em-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-em-noshort-em}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-em-noshort-em}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-noshort-em-desc}
+%\changes{1.04}{2016-05-02}{renamed from \qt{long-desc-em}}
+%\changes{0.5}{2015-12-07}{new}
+% The emphasized font will only be used if
+% the short form is explicitly invoked through commands like
+% \cs{glsshort}.
+% \begin{macrocode}
+\newabbreviationstyle{long-noshort-em-desc}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-noshort-desc}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongdefaultfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongdefaultfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongdefaultfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongdefaultfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{long-desc-em}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{long-desc-em}{long-noshort-em-desc}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-em-noshort-em-desc}
+%\changes{1.04}{2016-05-02}{new}
+% The short form is explicitly invoked through commands like
+% \cs{glsxtrshort}. The long form is emphasized.
+% \begin{macrocode}
+\newabbreviationstyle{long-em-noshort-em-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortdescname},
+ sort={\the\glslongtok},
+ first={\protect\glsfirstlongemfont{\the\glslongtok}},
+ firstplural={\protect\glsfirstlongemfont{\the\glslongpltok}},
+ text={\glslongemfont{\the\glslongtok}},
+ plural={\glslongemfont{\the\glslongpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{regular}{true}}%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongemfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongemfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glslongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glslongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glslongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glslongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside ##2\fi}%
+ \ifglsxtrinsertinside \else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongemfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvemfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form, but it
+% typically won't be used as the \catattr{regular} attribute is set by this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongemfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-em-noshort-em-desc-noreg}
+%\changes{1.17}{2017-08-09}{new}
+% Like long-em-noshort-em-desc but doesn't set the \catattr{regular} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{long-em-noshort-em-desc-noreg}%
+{%
+ \GlsXtrUseAbbrStyleSetup{long-em-noshort-em-desc}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-em-noshort-em-desc}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em-footnote}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2015-04-30}{renamed from \qt{footnote-em}}
+% \begin{macrocode}
+\newabbreviationstyle{short-em-footnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}%
+ \protect\glsxtrabbrvfootnote{\the\glslabeltok}%
+ {\protect\glsfirstlongfootnotefont{\the\glslongpltok}}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Switch off hyperlinks on first use to prevent nested hyperlinks,
+% and unset the \catattr{regular} attribute if it has been set.
+%\changes{0.5.1}{2015-12-07}{switch off regular attribute if set}
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glssetattribute{\the\glslabeltok}{nohyperfirst}{true}%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+% \end{macrocode}
+% The full format displays the short form followed by the long form
+% as a footnote.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \protect\glsxtrabbrvfootnote{##1}%
+ {\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form and the inline full form use the short
+% (long) style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{footnote-em}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{footnote-em}{short-em-footnote}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-em-postfootnote}
+%\changes{0.5}{2015-12-07}{new}
+%\changes{1.04}{2016-05-02}{renamed from \qt{postfootnote-em}}
+% \begin{macrocode}
+\newabbreviationstyle{short-em-postfootnote}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrfootnotename},
+ sort={\the\glsshorttok},
+ description={\the\glslongtok},%
+ first={\protect\glsfirstabbrvemfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvemfont{\the\glsshortpltok}},%
+ plural={\protect\glsabbrvemfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Make this category insert a footnote after the link if this was
+% the first use, and
+% unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+% \end{macrocode}
+% Needs the specific font command here as the style may have been
+% lost by the time the footnote occurs.
+% \begin{macrocode}
+ \glsxtrdopostpunc{\protect\glsxtrabbrvfootnote{\glslabel}%
+ {\glsfirstlongfootnotefont{\glsentrylong{\glslabel}}}}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+% \end{macrocode}
+% The footnote needs to be suppressed in the inline form, so
+% \cs{glsxtrfull} must set the first use switch off.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsetupfulldefs}{%
+ \let\glsxtrifwasfirstuse\@secondoftwo
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtremsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvemfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongfootnotefont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongfootnotefont{##1}}%
+% \end{macrocode}
+% The full format displays the short form. The long form is
+% deferred.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+% \end{macrocode}
+% The first use full form and the inline full form use the short
+% (long) style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslong{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvemfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi\glsxtrfullsep{##1}%
+ \glsxtrparen{\glsfirstlongfootnotefont{\glsaccesslongpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%\begin{abbrvstyle}{postfootnote-em}
+%Backward compatibility:
+% \begin{macrocode}
+\@glsxtr@deprecated@abbrstyle{postfootnote-em}{short-em-postfootnote}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\subsection{Predefined Styles (User Parentheses Hook)}
+% These styles allow the user to adjust the parenthetical forms.
+% These styles all test for the existence of the
+% field given by:
+%\begin{macro}{\glsxtruserfield}
+%\changes{1.04}{2016-05-02}{new}
+% Default is the useri field.
+% \begin{macrocode}
+\newcommand*{\glsxtruserfield}{useri}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtruserparen}
+%\changes{1.04}{2016-05-02}{new}
+% The format of the parenthetical information.
+% The first argument is the long/short form. The second argument
+% is the entry's label. If \cs{glscurrentfieldvalue} has been
+% defined, then we have at least \styfmt{glossaries} v4.23, which makes
+% it easier for the user to adjust this.
+% \begin{macrocode}
+\ifdef\glscurrentfieldvalue
+{
+ \newcommand*{\glsxtruserparen}[2]{%
+ \glsxtrfullsep{#2}%
+ \glsxtrparen
+ {#1\ifglshasfield{\glsxtruserfield}{#2}{, \glscurrentfieldvalue}{}}%
+ }
+}
+{
+ \newcommand*{\glsxtruserparen}[2]{%
+ \glsxtrfullsep{#2}%
+ \glsxtrparen
+ {#1\ifglshasfield{\glsxtruserfield}{#2}{, \@glo@thisvalue}{}}%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+% Font used for short form:
+%\begin{macro}{\glsabbrvuserfont}
+%\changes{1.04}{2016-05-02}{new}
+%\changes{1.17}{2017-08-09}{initialised to default font}
+% \begin{macrocode}
+\newcommand*{\glsabbrvuserfont}[1]{\glsabbrvdefaultfont{#1}}
+% \end{macrocode}
+%\end{macro}
+% Font used for short form on first use:
+%\begin{macro}{\glsfirstabbrvuserfont}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsfirstabbrvuserfont}[1]{\glsabbrvuserfont{#1}}
+% \end{macrocode}
+%\end{macro}
+% Font used for long form:
+%\begin{macro}{\glslonguserfont}
+%\changes{1.04}{2016-05-02}{new}
+%\changes{1.17}{2017-08-09}{initialised to default font}
+% \begin{macrocode}
+\newcommand*{\glslonguserfont}[1]{\glslongdefaultfont{#1}}
+% \end{macrocode}
+%\end{macro}
+% Font used for long form on first use:
+%\begin{macro}{\glsfirstlonguserfont}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsfirstlonguserfont}[1]{\glslonguserfont{#1}}
+% \end{macrocode}
+%\end{macro}
+% The default short form suffix:
+%\begin{macro}{\glsxtrusersuffix}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrusersuffix}{\glsxtrabbrvpluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%
+% Description encapsulator.
+%\begin{macro}{\glsuserdescription}
+%\changes{1.30}{2018-04-25}{new}
+%The first argument is the description. The second argument is the
+%label.
+% \begin{macrocode}
+\newcommand*{\glsuserdescription}[2]{\glslonguserfont{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-short-user}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-short-user}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}%
+ \protect\glsxtruserparen{\protect\glsfirstabbrvuserfont{\the\glsshorttok}}%
+ {\the\glslabeltok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}%
+ \protect\glsxtruserparen
+ {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},%
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-postshort-user}
+%\changes{1.12}{2017-02-03}{new}
+%Like \abbrstyle{long-short-user} but defers the parenthetical
+%matter to after the link.
+% \begin{macrocode}
+\newabbreviationstyle{long-postshort-user}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},%
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+% \end{macrocode}
+%First use full form:
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+% \end{macrocode}
+% In-line format:
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonguserfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshort{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonguserfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstabbrvuserfont{\glsaccessshortpl{##1}}}{##1}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrlongshortuserdescname}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrlongshortuserdescname}{%
+ \protect\glslonguserfont{\the\glslongtok}%
+ \protect\glsxtruserparen
+ {\protect\glsabbrvuserfont{\the\glsshorttok}}{\the\glslabeltok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-postshort-user-desc}
+%\changes{1.12}{2017-02-03}{new}
+%Like \abbrstyle{long-postshort-user} but the user supplies the
+%description.
+% \begin{macrocode}
+\newabbreviationstyle{long-postshort-user-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortuserdescname},
+ sort={\the\glslongtok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ text={\protect\glsabbrvuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstabbrvuserfont{\glsentryshort{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-postshort-user}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-postlong-user}
+%\changes{1.12}{2017-02-03}{new}
+%Like \abbrstyle{short-long-user} but defers the parenthetical
+%matter to after the link.
+% \begin{macrocode}
+\newabbreviationstyle{short-postlong-user}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}},%
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+% \end{macrocode}
+%First use full form:
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+% \end{macrocode}
+% In-line format:
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrshortlonguserdescname}
+%\changes{1.25}{2017-11-24}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrshortlonguserdescname}{%
+ \protect\glsabbrvuserfont{\the\glsshorttok}%
+ \protect\glsxtruserparen
+ {\protect\glslonguserfont{\the\glslongpltok}}%
+ {\the\glslabeltok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{short-postlong-user-desc}
+%\changes{1.12}{2017-02-03}{new}
+%Like \abbrstyle{short-postlong-user} but leaves the user to specify
+%the description.
+% \begin{macrocode}
+\newabbreviationstyle{short-postlong-user-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlonguserdescname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ text={\protect\glsabbrvuserfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtruserparen
+ {\glsfirstlonguserfont{\glsentrylong{\glslabel}}}%
+ {\glslabel}%
+ }%
+ {}%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-postlong-user}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-short-user-desc}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-short-user-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortuserdescname},
+ sort={\glsxtrlongshortdescsort},%
+% \end{macrocode}
+%\changes{1.17}{2017-08-09}{corrected first forms}
+% \begin{macrocode}
+ first={\protect\glsfirstlonguserfont{\the\glslongtok}%
+ \protect\glsxtruserparen{\protect\glsfirstabbrvuserfont{\the\glsshorttok}}%
+ {\the\glslabeltok}},%
+ firstplural={\protect\glsfirstlonguserfont{\the\glslongpltok}%
+ \protect\glsxtruserparen
+ {\protect\glsfirstabbrvuserfont{\the\glsshortpltok}}{\the\glslabeltok}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-short-user}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-long-user}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-long-user}%
+{%
+% \end{macrocode}
+%\cs{glslonguserfont} is used in the description since \cs{glsdesc}
+%doesn't set the style. (Now in \cs{glsuserdescription}.)
+% \begin{macrocode}
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ description={\protect\glsuserdescription{\the\glslongtok}%
+ {\the\glslabeltok}},%
+ first={\protect\glsfirstabbrvuserfont{\the\glsshorttok}%
+ \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongtok}}%
+ {\the\glslabeltok}},%
+ firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}%
+ \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}%
+ {\the\glslabeltok}},%
+% \end{macrocode}
+%\changes{1.15}{2017-05-10}{fixed spelling of \cs{glsabbrvfont}}
+% \begin{macrocode}
+ plural={\protect\glsabbrvuserfont{\the\glsshortpltok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrusersuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvuserfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonguserfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonguserfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstabbrvuserfont{\glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshort{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslong{##1}}}{##1}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstabbrvuserfont{\Glsaccessshortpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtruserparen{\glsfirstlonguserfont{\glsaccesslongpl{##1}}}{##1}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-long-user-desc}
+%\changes{1.04}{2016-05-02}{new}
+% \begin{macrocode}
+\newabbreviationstyle{short-long-user-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlonguserdescname},
+ sort={\glsxtrshortlongdescsort},%
+% \end{macrocode}
+%\changes{1.17}{2017-08-09}{corrected first forms}
+% \begin{macrocode}
+ first={\protect\glsfirstabbrvuserfont{\the\glsshorttok}%
+ \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongtok}}%
+ {\the\glslabeltok}},%
+ firstplural={\protect\glsfirstabbrvuserfont{\the\glsshortpltok}%
+ \protect\glsxtruserparen{\protect\glsfirstlonguserfont{\the\glslongpltok}}%
+ {\the\glslabeltok}},%
+ text={\protect\glsabbrvfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-long-user}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\subsection{Predefined Styles (Hyphen)}
+%These styles are designed to work with the \catattr{markwords}
+%attribute. They check if the inserted material (provided by the final
+%optional argument of commands like \cs{gls}) starts with a hyphen.
+%If it does, the insert is added to the parenthetical material.
+%Note that commands like \cs{glsxtrlong} set \cs{glsinsert} to empty
+%with the entire link-text stored in \cs{glscustomtext}.
+%
+%\begin{macro}{\glsxtrifhyphenstart}
+%Checks if the argument starts with a hyphen. The argument may be
+%\cs{glsinsert} so check for that and expand.
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrifhyphenstart}[3]{%
+ \ifx\glsinsert#1\relax
+ \expandafter\@glsxtrifhyphenstart#1\relax\relax
+ \@end@glsxtrifhyphenstart{#2}{#3}%
+ \else
+ \@glsxtrifhyphenstart#1\relax\relax\@end@glsxtrifhyphenstart{#2}{#3}%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrifhyphenstart}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\def\@glsxtrifhyphenstart#1#2\@end@glsxtrifhyphenstart#3#4{%
+ \ifx-#1\relax#3\else #4\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrlonghyphenshort}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrlonghyphenshort}\marg{label}\marg{long}\marg{short}\marg{insert}
+%\end{definition}
+%The \meta{long} and \meta{short} arguments may be the plural form.
+%The \meta{long} argument may also be the first letter uppercase form.
+% \begin{macrocode}
+\newcommand*{\glsxtrlonghyphenshort}[4]{%
+% \end{macrocode}
+% Grouping is needed to localise the redefinitions.
+% \begin{macrocode}
+ {%
+% \end{macrocode}
+% If \meta{insert} starts with a hyphen, redefine \ics{glsxtrwordsep}
+% to a hyphen. The inserted material is also inserted into the
+% parenthetical part. (The inserted material is grouped as a
+% precautionary measure.) No change is made to \cs{glsxtrwordsep} if
+% \meta{insert} doesn't start with a hyphen.
+% \begin{macrocode}
+ \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#4}\fi}%
+ \ifglsxtrinsertinside\else{#4}\fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsfirstabbrvhyphenfont{#3\ifglsxtrinsertinside{#4}\fi}%
+ \ifglsxtrinsertinside\else{#4}\fi}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsabbrvhyphenfont}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsabbrvhyphenfont}{\glsabbrvdefaultfont}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstabbrvhyphenfont}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsfirstabbrvhyphenfont}{\glsabbrvhyphenfont}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslonghyphenfont}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glslonghyphenfont}{\glslongdefaultfont}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstlonghyphenfont}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsfirstlonghyphenfont}{\glslonghyphenfont}%
+% \end{macrocode}
+%\end{macro}
+% The default short form suffix:
+%\begin{macro}{\glsxtrhyphensuffix}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrhyphensuffix}{\glsxtrabbrvpluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-hyphen-short-hyphen}
+%\changes{1.17}{2017-08-09}{new}
+%Designed for use with the \catattr{markwords} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{long-hyphen-short-hyphen}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
+ description={\protect\glslonghyphenfont{\the\glslongtok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrhyphensuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrlonghyphenshort{##1}{\glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphenshort{##1}{\glsaccesslongpl{##1}}%
+ {\glsaccessshortpl{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrlonghyphenshort{##1}{\Glsaccesslong{##1}}{\glsaccessshort{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphenshort{##1}{\Glsaccesslongpl{##1}}%
+ {\glsaccessshortpl{##1}}{##2}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-hyphen-short-hyphen-desc}
+%\changes{1.17}{2017-08-09}{new}
+%Like \abbrstyle{long-hyphen-short-hyphen} but the description
+%must be supplied by the user.
+% \begin{macrocode}
+\newabbreviationstyle{long-hyphen-short-hyphen-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrlonghyphennoshort}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrlonghyphennoshort}\marg{label}\marg{long}\marg{insert}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtrlonghyphennoshort}[3]{%
+% \end{macrocode}
+% Grouping is needed to localise the redefinitions.
+% \begin{macrocode}
+ {%
+% \end{macrocode}
+% If \meta{insert} starts with a hyphen, redefine \ics{glsxtrwordsep}
+% to a hyphen. The inserted material is also inserted into the
+% parenthetical part. (The inserted material is grouped as a
+% precautionary measure.) No change is made to \cs{glsxtrwordsep} if
+% \meta{insert} doesn't start with a hyphen.
+% \begin{macrocode}
+ \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstlonghyphenfont{#2\ifglsxtrinsertinside{#3}\fi}%
+ \ifglsxtrinsertinside\else{#3}\fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-hyphen-noshort-desc-noreg}
+%\changes{1.17}{2017-08-09}{new}
+%This version doesn't show the short form (except
+%explicitly with \cs{glsxtrshort}). Since \cs{glsxtrshort} doesn't
+%support the hyphen switch, the short form just uses the default
+%short-form font command. This style won't work with the
+%\catattr{regular} as the regular form isn't flexible enough.
+% \begin{macrocode}
+\newabbreviationstyle{long-hyphen-noshort-desc-noreg}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortdescname},
+ sort={\expandonce\glsxtrorglong},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
+ plural={\protect\glslonghyphenfont{\the\glslongpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-hyphen-short-hyphen}%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*\glsabbrvfont[1]{\glsabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvdefaultfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+% \end{macrocode}
+% The format for subsequent use (not used when the regular attribute
+% is set).
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
+ }%
+% \end{macrocode}
+% The inline full form displays the long format followed by the
+% short form in parentheses.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvfont{\glsaccessshortpl{##1}}}%
+ }%
+% \end{macrocode}
+% The first use full form only displays the long form.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\glsaccesslongpl{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphennoshort{##1}{\Glsaccesslongpl{##1}}{##2}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-hyphen-noshort-noreg}
+%\changes{1.17}{2017-08-09}{new}
+% It doesn't really make a great deal of sense to have a long-only
+% style that doesn't have a description (unless no glossary is
+% required), but the best course of
+% action here is to use the short form as the name and the long
+% form as the description.
+% \begin{macrocode}
+\newabbreviationstyle{long-hyphen-noshort-noreg}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongnoshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
+ text={\protect\glslonghyphenfont{\the\glslongtok}},%
+ plural={\protect\glslonghyphenfont{\the\glslongpltok}},%
+ description={\the\glslongtok}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+%\changes{1.40}{2019-03-31}{corrected formatting commands}
+% \begin{macrocode}
+ \GlsXtrUseAbbrStyleFmts{long-hyphen-noshort-desc-noreg}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrlonghyphen}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrlonghyphen}\marg{long}\marg{label}\marg{insert}
+%\end{definition}
+%Used by \abbrstyle{long-hyphen-postshort-hyphen}. The \meta{insert}
+%is check to determine if it starts with a hyphen but isn't used
+%here as it's moved to the post-link hook.
+% \begin{macrocode}
+\newcommand*{\glsxtrlonghyphen}[3]{%
+% \end{macrocode}
+% Grouping is needed to localise the redefinitions.
+% \begin{macrocode}
+ {%
+ \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstlonghyphenfont{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrposthyphenshort}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrposthyphenshort}\marg{label}\marg{insert}
+%\end{definition}
+%Used in the post-link hook for the
+%\abbrstyle{long-hyphen-postshort-hyphen} style. Much like
+%\cs{glsxtrlonghyphenshort} but omits the \meta{long} part. This
+%always uses the singular short form.
+% \begin{macrocode}
+\newcommand*{\glsxtrposthyphenshort}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}%
+ \ifglsxtrinsertinside{\glsfirstlonghyphenfont{#2}}\else{#2}\fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {\glsfirstabbrvhyphenfont{\glsentryshort{#1}\ifglsxtrinsertinside{#2}\fi}%
+ \ifglsxtrinsertinside\else{#2}\fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrposthyphensubsequent}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrposthyphensubsequent}\marg{label}\marg{insert}
+%\end{definition}
+%Format in the post-link hook for subsequent use. The label is
+%ignored by default.
+% \begin{macrocode}
+\newcommand*{\glsxtrposthyphensubsequent}[2]{%
+ \glsabbrvfont{\ifglsxtrinsertinside {#2}\fi}%
+ \ifglsxtrinsertinside \else{#2}\fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-hyphen-postshort-hyphen}
+%\changes{1.17}{2017-08-09}{new}
+%Like \abbrstyle{long-hyphen-short-hyphen} but shifts the insert
+%and parenthetical material to the post-link hook.
+% \begin{macrocode}
+\newabbreviationstyle{long-hyphen-postshort-hyphen}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
+ description={\protect\glslonghyphenfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrposthyphenshort{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% Put the insertion into the post-link:
+% \begin{macrocode}
+ \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ }%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+% \end{macrocode}
+% Subsequent use needs to omit the insertion:
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\glsaccessshort{##1}}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\glsaccessshortpl{##1}}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshort{##1}}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshortpl{##1}}%
+ }%
+% \end{macrocode}
+% First use full form:
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrlonghyphen{\glsaccesslong{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphen{\glsaccesslongpl{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrlonghyphen{\Glsaccesslong{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrlonghyphen{\Glsaccesslongpl{##1}}{##1}{##2}%
+ }%
+% \end{macrocode}
+% In-line format.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlonghyphenfont{\glsaccesslong{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonghyphenfont{\glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlonghyphenfont{\Glsaccesslong{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlonghyphenfont{\Glsaccesslongpl{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{long-hyphen-postshort-hyphen-desc}
+%\changes{1.17}{2017-08-09}{new}
+%Like \abbrstyle{long-hyphen-postshort-hyphen} but the description
+%must be supplied by the user.
+% \begin{macrocode}
+\newabbreviationstyle{long-hyphen-postshort-hyphen-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrlongshortdescname},
+ sort={\glsxtrlongshortdescsort},%
+ first={\protect\glsfirstlonghyphenfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlonghyphenfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrposthyphenshort{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% Put the insertion into the post-link:
+% \begin{macrocode}
+ \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ }%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-hyphen-postshort-hyphen}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrshorthyphenlong}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrshorthyphenlong}\marg{label}\marg{short}\marg{long}\marg{insert}
+%\end{definition}
+%The \meta{long} and \meta{short} arguments may be the plural form.
+%The \meta{long} argument may also be the first letter uppercase form.
+% \begin{macrocode}
+\newcommand*{\glsxtrshorthyphenlong}[4]{%
+% \end{macrocode}
+% Grouping is needed to localise the redefinitions.
+% \begin{macrocode}
+ {%
+% \end{macrocode}
+% If \meta{insert} starts with a hyphen, redefine \cs{glsxtrwordsep}
+% to a hyphen. The inserted material is also inserted into the
+% parenthetical part. (The inserted material is grouped as a
+% precautionary measure.)
+% \begin{macrocode}
+ \glsxtrifhyphenstart{#4}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstabbrvhyphenfont{#2\ifglsxtrinsertinside{#4}\fi}%
+ \ifglsxtrinsertinside\else{#4}\fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen{\glsfirstlonghyphenfont{#3\ifglsxtrinsertinside{#4}\fi}%
+ \ifglsxtrinsertinside\else{#4}\fi}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{short-hyphen-long-hyphen}
+%\changes{1.17}{2017-08-09}{new}
+%Designed for use with the \catattr{markwords} attribute.
+% \begin{macrocode}
+\newabbreviationstyle{short-hyphen-long-hyphen}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
+ description={\protect\glslonghyphenfont{\the\glslongtok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrhyphensuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+% \end{macrocode}
+% The first use full form and the inline full form are the same for
+% this style.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrshorthyphenlong{##1}%
+ {\glsaccessshortpl{##1}}{\glsaccesslongpl{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrshorthyphenlong{##1}{\glsaccessshort{##1}}{\Glsaccesslong{##1}}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrshorthyphenlong{##1}%
+ {\glsaccessshortpl{##1}}{\Glsaccesslongpl{##1}}{##2}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-hyphen-long-hyphen-desc}
+%\changes{1.17}{2017-08-09}{new}
+%Like \abbrstyle{short-hyphen-long-hyphen} but the description
+%must be supplied by the user.
+% \begin{macrocode}
+\newabbreviationstyle{short-hyphen-long-hyphen-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},
+ first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongtok}}},%
+ firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}%
+ \protect\glsxtrfullsep{\the\glslabeltok}%
+ \glsxtrparen{\protect\glsfirstlonghyphenfont{\the\glslongpltok}}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-hyphen-long-hyphen}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtrshorthyphen}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrshorthyphen}\marg{short}\marg{label}\marg{insert}
+%\end{definition}
+%Used by \abbrstyle{short-hyphen-postlong-hyphen}. The \meta{insert}
+%is check to determine if it starts with a hyphen but isn't used
+%here as it's moved to the post-link hook.
+% \begin{macrocode}
+\newcommand*{\glsxtrshorthyphen}[3]{%
+% \end{macrocode}
+% Grouping is needed to localise the redefinitions.
+% \begin{macrocode}
+ {%
+ \glsxtrifhyphenstart{#3}{\def\glsxtrwordsep{-}}{}%
+ \glsfirstabbrvhyphenfont{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrposthyphenlong}
+%\changes{1.17}{2017-08-09}{new}
+%\begin{definition}
+%\cs{glsxtrposthyphenlong}\marg{label}\marg{insert}
+%\end{definition}
+%Used in the post-link hook for the
+%\abbrstyle{short-hyphen-postlong-hyphen} style. Much like
+%\cs{glsxtrshorthyphenlong} but omits the \meta{short} part. This
+%always uses the singular long form.
+% \begin{macrocode}
+\newcommand*{\glsxtrposthyphenlong}[2]{%
+ {%
+ \glsxtrifhyphenstart{#2}{\def\glsxtrwordsep{-}}{}%
+ \ifglsxtrinsertinside{\glsfirstabbrvhyphenfont{#2}}\else{#2}\fi
+ \glsxtrfullsep{#1}%
+ \glsxtrparen
+ {\glsfirstlonghyphenfont{\glsentrylong{#1}\ifglsxtrinsertinside{#2}\fi}%
+ \ifglsxtrinsertinside\else{#2}\fi
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{short-hyphen-postlong-hyphen}
+%\changes{1.17}{2017-08-09}{new}
+%Like \abbrstyle{short-hyphen-long-hyphen} but shifts the insert
+%and parenthetical material to the post-link hook.
+% \begin{macrocode}
+\newabbreviationstyle{short-hyphen-postlong-hyphen}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}},%
+ description={\protect\glslonghyphenfont{\the\glslongtok}}}%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrposthyphenlong{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% Put the insertion into the post-link:
+% \begin{macrocode}
+ \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ }%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+% \end{macrocode}
+% In case the user wants to mix and match font styles, these are
+% redefined here.
+% \begin{macrocode}
+ \renewcommand*{\abbrvpluralsuffix}{\glsxtrabbrvpluralsuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvhyphenfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlonghyphenfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslonghyphenfont{##1}}%
+% \end{macrocode}
+% Subsequent use needs to omit the insertion:
+% \begin{macrocode}
+ \renewcommand*{\glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\glsaccessshort{##1}}%
+ }%
+ \renewcommand*{\glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\glsaccessshortpl{##1}}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshort{##1}}%
+ }%
+ \renewcommand*{\Glsxtrsubsequentplfmt}[2]{%
+ \glsabbrvfont{\Glsaccessshortpl{##1}}%
+ }%
+% \end{macrocode}
+% First use full form:
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsxtrshorthyphen{\glsaccessshort{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsxtrshorthyphen{\glsaccessshortpl{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsxtrshorthyphen{\Glsaccessshort{##1}}{##1}{##2}%
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsxtrshorthyphen{\Glsaccessshortpl{##1}}{##1}{##2}%
+ }%
+% \end{macrocode}
+% In-line format. Commands like \cs{glsxtrfull} set \cs{glsinsert}
+% to empty. The entire link-text (provided by the following
+% commands) is stored in \cs{glscustomtext}.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvhyphenfont{\glsaccessshort{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvhyphenfont{\glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstabbrvhyphenfont{\Glsaccessshort{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstabbrvhyphenfont{\Glsaccessshortpl{##1}%
+ \ifglsxtrinsertinside{##2}\fi}%
+ \ifglsxtrinsertinside \else{##2}\fi
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{abbrvstyle}{short-hyphen-postlong-hyphen-desc}
+%\changes{1.17}{2017-08-09}{new}
+%Like \abbrstyle{short-hyphen-postlong-hyphen} but the description
+%must be supplied by the user.
+% \begin{macrocode}
+\newabbreviationstyle{short-hyphen-postlong-hyphen-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtrshortlongdescname},
+ sort={\glsxtrshortlongdescsort},%
+ first={\protect\glsfirstabbrvhyphenfont{\the\glsshorttok}},%
+ firstplural={\protect\glsfirstabbrvhyphenfont{\the\glsshortpltok}},%
+ text={\protect\glsabbrvhyphenfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvhyphenfont{\the\glsshortpltok}}%
+ }%
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \csdef{glsxtrpostlink\glscategorylabel}{%
+ \glsxtrifwasfirstuse
+ {%
+ \glsxtrposthyphenlong{\glslabel}{\glsinsert}%
+ }%
+ {%
+% \end{macrocode}
+% Put the insertion into the post-link:
+% \begin{macrocode}
+ \glsxtrposthyphensubsequent{\glslabel}{\glsinsert}%
+ }%
+ }%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{short-hyphen-postlong-hyphen}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\subsection{Predefined Styles (No Short on First Use)}
+%These styles show only the long form on first use and only the
+%short form on subsequent use.
+%\begin{macro}{\glsabbrvonlyfont}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsabbrvonlyfont}{\glsabbrvdefaultfont}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstabbrvonlyfont}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsfirstabbrvonlyfont}{\glsabbrvonlyfont}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslongonlyfont}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glslongonlyfont}{\glslongdefaultfont}%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsfirstlongonlyfont}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsfirstlongonlyfont}{\glslongonlyfont}%
+% \end{macrocode}
+%\end{macro}
+% The default short form suffix:
+%\begin{macro}{\glsxtronlysuffix}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtronlysuffix}{\glsxtrabbrvpluralsuffix}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtronlyname}
+%\changes{1.25}{2017-11-24}{new}
+% The default name format for this style.
+% \begin{macrocode}
+\newcommand*{\glsxtronlyname}{%
+ \protect\glsabbrvonlyfont{\the\glsshorttok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-only-short-only}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-only-short-only}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtronlyname},
+ sort={\the\glsshorttok},
+ first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
+ plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}},%
+ description={\protect\glslongonlyfont{\the\glslongtok}}}%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \renewcommand*{\abbrvpluralsuffix}{\protect\glsxtronlysuffix}%
+ \renewcommand*{\glsabbrvfont}[1]{\glsabbrvonlyfont{##1}}%
+ \renewcommand*{\glsfirstabbrvfont}[1]{\glsfirstabbrvonlyfont{##1}}%
+ \renewcommand*{\glsfirstlongfont}[1]{\glsfirstlongonlyfont{##1}}%
+ \renewcommand*{\glslongfont}[1]{\glslongonlyfont{##1}}%
+% \end{macrocode}
+% The first use full form doesn't show the short form.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrfullformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\glsxtrfullplformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+ \renewcommand*{\Glsxtrfullplformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ }%
+% \end{macrocode}
+% The inline full form does show the short form.
+% \begin{macrocode}
+ \renewcommand*{\glsxtrinlinefullformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshort{##1}}}%
+ }%
+ \renewcommand*{\glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongonlyfont{\glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslong{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvonlyfont{\glsaccessshortpl{##1}}}%
+ }%
+ \renewcommand*{\Glsxtrinlinefullplformat}[2]{%
+ \glsfirstlongonlyfont{\Glsaccesslongpl{##1}\ifglsxtrinsertinside##2\fi}%
+ \ifglsxtrinsertinside\else##2\fi
+ \glsxtrfullsep{##1}%
+ \glsxtrparen{\protect\glsfirstabbrvonlyfont{\Glsaccessshortpl{##1}}}%
+ }%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glsxtronlydescsort}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtronlydescsort}{\the\glslongtok}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtronlydescname}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtronlydescname}{%
+ \protect\glslongfont{\the\glslongtok}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-only-short-only-desc}
+%\changes{1.17}{2017-08-09}{new}
+% \begin{macrocode}
+\newabbreviationstyle{long-only-short-only-desc}%
+{%
+ \renewcommand*{\CustomAbbreviationFields}{%
+ name={\glsxtronlydescname},
+ sort={\glsxtronlydescsort},%
+ first={\protect\glsfirstlongonlyfont{\the\glslongtok}},%
+ firstplural={\protect\glsfirstlongonlyfont{\the\glslongpltok}},%
+ text={\protect\glsabbrvonlyfont{\the\glsshorttok}},%
+ plural={\protect\glsabbrvonlyfont{\the\glsshortpltok}}%
+ }%
+% \end{macrocode}
+% Unset the \catattr{regular} attribute if it has been set.
+% \begin{macrocode}
+ \renewcommand*{\GlsXtrPostNewAbbreviation}{%
+ \glshasattribute{\the\glslabeltok}{regular}%
+ {%
+ \glssetattribute{\the\glslabeltok}{regular}{false}%
+ }%
+ {}%
+ }%
+}%
+{%
+ \GlsXtrUseAbbrStyleFmts{long-only-short-only}%
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\section{Using Entries in Headings}
+%
+% There are four main problems with using entries in sectioning
+% commands: they can mess with the first use flag if they end up in
+% the table of contents, they can add unwanted numbers to the
+% entry's location list, the label is corrupted if used inside
+% \ics{MakeUppercase} (which is used by the default headings style)
+% and they need to be expandable for PDF bookmarks. The
+% \styfmt{glossaries} package therefore recommends the use of the
+% expandable commands, such as \cs{glsentryshort}, instead but this
+% doesn't reflect the formatting since it doesn't include
+% \cs{glsabbrvfont}. The commands below are an attempt to get around
+% these problems.
+%
+% The PDF bookmark issue can easily be fixed with \sty{hyperref}'s
+% \cs{texorpdfstring} which can simply use the expandable command
+% in the PDF string case. The \TeX\ string case can now use
+% \cs{glsxtrshort} with the \gloskey[glslink]{noindex} key set, which
+% prevents the unwanted additions to the location list, and the
+% \gloskey[glslink]{hyper} key set to false, which prevents the problem of
+% nested links. This just leaves one thing left that needs to be
+% dealt with, and that's what to do if the heading style
+% uses \cs{MakeUppercase}.
+%
+% Note that \styfmt{glossaries} automatically loads \sty{textcase}, so
+% the label can be protected from case change with \sty{textcase}'s
+% \cs{NoCaseChange}. This means that we don't have a problem
+% provided the page style uses \cs{MakeTextUppercase}, but the
+% default heading page style uses \cs{MakeUppercase}.
+%
+% To get around this, save the original definition of \cs{markboth}
+% and \cs{markright} and adjust it so that \cs{MakeUppercase} is
+% temporarily redefined to \cs{MakeTextUppercase}. Some packages or
+% classes redefine these commands, so we can't just assume they
+% still have the original kernel definition.
+%
+%\begin{macro}{\markright}
+% Save original definition:
+% \begin{macrocode}
+\let\@glsxtr@org@markright\markright
+% \end{macrocode}
+% Redefine (grouping not added in case it interferes with the
+% original code):
+% \begin{macrocode}
+\renewcommand*{\markright}[1]{%
+ \glsxtrmarkhook
+ \@glsxtr@org@markright{\@glsxtrinmark#1\@glsxtrnotinmark}%
+ \glsxtrrestoremarkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\markboth}
+% Save original definition:
+% \begin{macrocode}
+\let\@glsxtr@org@markboth\markboth
+% \end{macrocode}
+% Redefine (grouping not added in case it interferes with the
+% original code):
+% \begin{macrocode}
+\renewcommand*{\markboth}[2]{%
+ \glsxtrmarkhook
+ \@glsxtr@org@markboth
+ {\@glsxtrinmark#1\@glsxtrnotinmark}%
+ {\@glsxtrinmark#2\@glsxtrnotinmark}%
+ \glsxtrrestoremarkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Also do this for \cs{@starttoc}
+%\begin{macro}{\@starttoc}
+% Save original definition:
+% \begin{macrocode}
+\let\@glsxtr@org@@starttoc\@starttoc
+% \end{macrocode}
+% Redefine:
+% \begin{macrocode}
+\renewcommand*{\@starttoc}[1]{%
+ \glsxtrmarkhook
+ \@glsxtrinmark
+ \@glsxtr@org@@starttoc{#1}%
+ \@glsxtrnotinmark
+ \glsxtrrestoremarkhook
+}
+% \end{macrocode}
+%\end{macro}
+%
+% If this causes a problem provide a simple way of switching back to
+% the original definitions:
+%\begin{macro}{\glsxtrRevertMarks}
+% \begin{macrocode}
+\newcommand*{\glsxtrRevertMarks}{%
+ \let\markright\@glsxtr@org@markright
+ \let\markboth\@glsxtr@org@markboth
+ \let\@starttoc\@glsxtr@org@@starttoc
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrRevertTocMarks}
+%\changes{1.31}{2018-05-09}{new}
+%Just restores \cs{@starttoc}.
+% \begin{macrocode}
+\newcommand*{\glsxtrRevertTocMarks}{%
+ \let\@starttoc\@glsxtr@org@@starttoc
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifinmark}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrifinmark}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrinmark}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrinmark}{%
+ \let\glsxtrifinmark\@firstoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrnotinmark}
+%\changes{1.07}{2016-08-15}{new}
+% \begin{macrocode}
+\newrobustcmd*{\@glsxtrnotinmark}{%
+ \let\glsxtrifinmark\@secondoftwo
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitleorpdforheading}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsxtrtitleorpdforheading}[3]{\texorpdfstring{#1}{#2}}
+}
+{
+ \newcommand*{\glsxtrtitleorpdforheading}[3]{#1}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrmarkhook}
+% Hook used in new definition of \cs{markboth} and \cs{markright}
+% to make some changes to apply to the marks:
+% \begin{macrocode}
+\newcommand*{\glsxtrmarkhook}{%
+% \end{macrocode}
+% Save current definitions:
+% \begin{macrocode}
+ \let\@glsxtr@org@MakeUppercase\MakeUppercase
+ \let\@glsxtr@org@glsxtrtitleorpdforheading\glsxtrtitleorpdforheading
+ \let\@glsxtr@org@glsxtrtitleshort\glsxtrtitleshort
+ \let\@glsxtr@org@glsxtrtitleshortpl\glsxtrtitleshortpl
+ \let\@glsxtr@org@Glsxtrtitleshort\Glsxtrtitleshort
+ \let\@glsxtr@org@Glsxtrtitleshortpl\Glsxtrtitleshortpl
+ \let\@glsxtr@org@glsxtrtitlename\glsxtrtitlename
+ \let\@glsxtr@org@Glsxtrtitlename\Glsxtrtitlename
+ \let\@glsxtr@org@glsxtrtitletext\glsxtrtitletext
+ \let\@glsxtr@org@Glsxtrtitletext\Glsxtrtitletext
+ \let\@glsxtr@org@glsxtrtitleplural\glsxtrtitleplural
+ \let\@glsxtr@org@Glsxtrtitleplural\Glsxtrtitleplural
+ \let\@glsxtr@org@glsxtrtitlefirst\glsxtrtitlefirst
+ \let\@glsxtr@org@Glsxtrtitlefirst\Glsxtrtitlefirst
+ \let\@glsxtr@org@glsxtrtitlefirstplural\glsxtrtitlefirstplural
+ \let\@glsxtr@org@Glsxtrtitlefirstplural\Glsxtrtitlefirstplural
+ \let\@glsxtr@org@glsxtrtitlelong\glsxtrtitlelong
+ \let\@glsxtr@org@glsxtrtitlelongpl\glsxtrtitlelongpl
+ \let\@glsxtr@org@Glsxtrtitlelong\Glsxtrtitlelong
+ \let\@glsxtr@org@Glsxtrtitlelongpl\Glsxtrtitlelongpl
+ \let\@glsxtr@org@glsxtrtitlefull\glsxtrtitlefull
+ \let\@glsxtr@org@glsxtrtitlefullpl\glsxtrtitlefullpl
+ \let\@glsxtr@org@Glsxtrtitlefull\Glsxtrtitlefull
+ \let\@glsxtr@org@Glsxtrtitlefullpl\Glsxtrtitlefullpl
+% \end{macrocode}
+% New definitions
+% \begin{macrocode}
+ \let\glsxtrifinmark\@firstoftwo
+ \let\MakeUppercase\MakeTextUppercase
+ \let\glsxtrtitleorpdforheading\@thirdofthree
+ \let\glsxtrtitleshort\glsxtrheadshort
+ \let\glsxtrtitleshortpl\glsxtrheadshortpl
+ \let\Glsxtrtitleshort\Glsxtrheadshort
+ \let\Glsxtrtitleshortpl\Glsxtrheadshortpl
+ \let\glsxtrtitlename\glsxtrheadname
+ \let\Glsxtrtitlename\Glsxtrheadname
+ \let\glsxtrtitletext\glsxtrheadtext
+ \let\Glsxtrtitletext\Glsxtrheadtext
+ \let\glsxtrtitleplural\glsxtrheadplural
+ \let\Glsxtrtitleplural\Glsxtrheadplural
+ \let\glsxtrtitlefirst\glsxtrheadfirst
+ \let\Glsxtrtitlefirst\Glsxtrheadfirst
+ \let\glsxtrtitlefirstplural\glsxtrheadfirstplural
+ \let\Glsxtrtitlefirstplural\Glsxtrheadfirstplural
+ \let\glsxtrtitlelong\glsxtrheadlong
+ \let\glsxtrtitlelongpl\glsxtrheadlongpl
+ \let\Glsxtrtitlelong\Glsxtrheadlong
+ \let\Glsxtrtitlelongpl\Glsxtrheadlongpl
+ \let\glsxtrtitlefull\glsxtrheadfull
+ \let\glsxtrtitlefullpl\glsxtrheadfullpl
+ \let\Glsxtrtitlefull\Glsxtrheadfull
+ \let\Glsxtrtitlefullpl\Glsxtrheadfullpl
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrrestoremarkhook}
+% Hook used in new definition of \cs{markboth} and \cs{markright}
+% to restore the modified definitions. (This is in case the original
+% \cs{markboth} and \cs{markright} shouldn't be grouped for some
+% reason. There already is some grouping within those original
+% definitions, but some of the code lies outside that grouping, and
+% possibly there's a reason for it.)
+% \begin{macrocode}
+\newcommand*{\glsxtrrestoremarkhook}{%
+ \let\glsxtrifinmark\@secondoftwo
+ \let\MakeUppercase\@glsxtr@org@MakeUppercase
+ \let\glsxtrtitleorpdforheading\@glsxtr@org@glsxtrtitleorpdforheading
+ \let\glsxtrtitleshort\@glsxtr@org@glsxtrtitleshort
+ \let\glsxtrtitleshortpl\@glsxtr@org@glsxtrtitleshortpl
+ \let\Glsxtrtitleshort\@glsxtr@org@Glsxtrtitleshort
+ \let\Glsxtrtitleshortpl\@glsxtr@org@Glsxtrtitleshortpl
+ \let\glsxtrtitlename\@glsxtr@org@glsxtrtitlename
+ \let\Glsxtrtitlename\@glsxtr@org@Glsxtrtitlename
+ \let\glsxtrtitletext\@glsxtr@org@glsxtrtitletext
+ \let\Glsxtrtitletext\@glsxtr@org@Glsxtrtitletext
+ \let\glsxtrtitleplural\@glsxtr@org@glsxtrtitleplural
+ \let\Glsxtrtitleplural\@glsxtr@org@Glsxtrtitleplural
+ \let\glsxtrtitlefirst\@glsxtr@org@glsxtrtitlefirst
+ \let\Glsxtrtitlefirst\@glsxtr@org@Glsxtrtitlefirst
+ \let\glsxtrtitlefirstplural\@glsxtr@org@glsxtrtitlefirstplural
+ \let\Glsxtrtitlefirstplural\@glsxtr@org@Glsxtrtitlefirstplural
+ \let\glsxtrtitlelong\@glsxtr@org@glsxtrtitlelong
+ \let\glsxtrtitlelongpl\@glsxtr@org@glsxtrtitlelongpl
+ \let\Glsxtrtitlelong\@glsxtr@org@Glsxtrtitlelong
+ \let\Glsxtrtitlelongpl\@glsxtr@org@Glsxtrtitlelongpl
+ \let\glsxtrtitlefull\@glsxtr@org@glsxtrtitlefull
+ \let\glsxtrtitlefullpl\@glsxtr@org@glsxtrtitlefullpl
+ \let\Glsxtrtitlefull\@glsxtr@org@Glsxtrtitlefull
+ \let\Glsxtrtitlefullpl\@glsxtr@org@Glsxtrtitlefullpl
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\changes{0.5.1}{2015-12-07}{removed \cs{ifglsxtruseuchead}}
+% Instead of using one document-wide conditional, use
+% \catattr{headuc} attribute to determine whether or not to use the
+% all upper case form.
+%
+%\begin{macro}{\glsxtrheadshort}
+% Command used to display short form in the page header.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadshort}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitleshort}
+% Command to display short form of abbreviation in section title and
+% table of contents.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitleshort}[1]{%
+ \glsxtrshort[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadshortpl}
+% Command used to display plural short form in the page header.
+% If you want the text converted to upper case, this needs to be
+% redefined to use \cs{GLSxtrshortpl} instead. If you are using a
+% smallcaps style, the default fonts don't provide italic smallcaps.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadshortpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitleshortpl}
+% Command to display plural short form of abbreviation in section title and
+% table of contents.
+%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrshort} to
+%\cs{glsxtrshortpl}}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitleshortpl}[1]{%
+ \glsxtrshortpl[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadshort}
+% Command used to display short form in the page header with the
+% first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadshort}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrshort[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitleshort}
+% Command to display short form of abbreviation in section title and
+% table of contents with the first letter converted to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitleshort}[1]{%
+ \Glsxtrshort[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadshortpl}
+% Command used to display plural short form in the page header with the
+% first letter converted to upper case.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadshortpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrshortpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitleshortpl}
+% Command to display plural short form of abbreviation in section title and
+% table of contents with the first letter converted to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitleshortpl}[1]{%
+ \Glsxtrshortpl[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadname}
+% As above but for the \gloskey{name} value.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadname}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSname[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsname[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlename}
+% Command to display \gloskey{name} value in section title and
+% table of contents.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlename}[1]{%
+ \glsname[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadname}
+% First letter converted to upper case
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadname}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSname[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsname[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlename}
+% Command to display \gloskey{name} value in section title and
+% table of contents with the first letter changed to upper case.
+% \begin{macrocode}
+%\changes{1.21}{2017-11-03}{new}
+\newrobustcmd*{\Glsxtrtitlename}[1]{%
+ \Glsname[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadtext}
+% As above but for the \gloskey{text} value.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadtext}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLStext[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glstext[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitletext}
+% Command to display \gloskey{text} value in section title and
+% table of contents.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitletext}[1]{%
+ \glstext[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\Glsxtrheadtext}
+% First letter converted to upper case
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadtext}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLStext[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glstext[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitletext}
+% Command to display \gloskey{text} value in section title and
+% table of contents with the first letter changed to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitletext}[1]{%
+ \Glstext[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadplural}
+% As above but for the \gloskey{plural} value.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitleplural}
+% Command to display \gloskey{plural} value in section title and
+% table of contents.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitleplural}[1]{%
+ \glsplural[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadplural}
+% Convert first letter to upper case.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitleplural}
+% Command to display \gloskey{plural} value in section title and
+% table of contents with the first letter changed to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitleplural}[1]{%
+ \Glsplural[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadfirst}
+% As above but for the \gloskey{first} value.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadfirst}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSfirst[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsfirst[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlefirst}
+% Command to display \gloskey{first} value in section title and
+% table of contents.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlefirst}[1]{%
+ \glsfirst[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadfirst}
+% First letter converted to upper case
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadfirst}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSfirst[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsfirst[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlefirst}
+% Command to display \gloskey{first} value in section title and
+% table of contents with the first letter changed to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlefirst}[1]{%
+ \Glsfirst[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadfirstplural}
+% As above but for the \gloskey{firstplural} value.
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadfirstplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlefirstplural}
+% Command to display \gloskey{firstplural} value in section title and
+% table of contents.
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlefirstplural}[1]{%
+ \glsfirstplural[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadfirstplural}
+% First letter converted to upper case
+%\changes{0.5.1}{2015-12-07}{now uses headuc attribute}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadfirstplural}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsfirstplural[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlefirstplural}
+% Command to display \gloskey{first} value in section title and
+% table of contents with the first letter changed to upper case.
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlefirstplural}[1]{%
+ \Glsfirstplural[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadlong}
+% Command used to display long form in the page header.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadlong}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlelong}
+% Command to display long form of abbreviation in section title and
+% table of contents.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlelong}[1]{%
+ \glsxtrlong[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadlongpl}
+% Command used to display plural long form in the page header.
+% If you want the text converted to upper case, this needs to be
+% redefined to use \cs{GLSxtrlongpl} instead. If you are using a
+% smallcaps style, the default fonts don't provide italic smallcaps.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadlongpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlelongpl}
+% Command to display plural long form of abbreviation in section title and
+% table of contents.
+%\changes{1.02}{2016-04-25}{new}
+%\changes{1.03}{2016-04-27}{bug fix: changed \cs{glsxtrlong} to
+%\cs{glsxtrlongpl}}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlelongpl}[1]{%
+ \glsxtrlongpl[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadlong}
+% Command used to display long form in the page header with the
+% first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadlong}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrlong[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlelong}
+% Command to display long form of abbreviation in section title and
+% table of contents with the first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlelong}[1]{%
+ \Glsxtrlong[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadlongpl}
+% Command used to display plural long form in the page header with the
+% first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadlongpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrlongpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlelongpl}
+% Command to display plural long form of abbreviation in section title and
+% table of contents with the first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlelongpl}[1]{%
+ \Glsxtrlongpl[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadfull}
+% Command used to display full form in the page header.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadfull}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlefull}
+% Command to display full form of abbreviation in section title and
+% table of contents.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlefull}[1]{%
+ \glsxtrfull[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrheadfullpl}
+% Command used to display plural full form in the page header.
+% If you want the text converted to upper case, this needs to be
+% redefined to use \cs{GLSxtrfullpl} instead. If you are using a
+% smallcaps style, the default fonts don't provide italic smallcaps.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrheadfullpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \glsxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtitlefullpl}
+% Command to display plural full form of abbreviation in section title and
+% table of contents.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\glsxtrtitlefullpl}[1]{%
+ \glsxtrfullpl[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadfull}
+% Command used to display full form in the page header with the
+% first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadfull}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrfull[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlefull}
+% Command to display full form of abbreviation in section title and
+% table of contents with the first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlefull}[1]{%
+ \Glsxtrfull[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrheadfullpl}
+% Command used to display plural full form in the page header with the
+% first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newcommand*{\Glsxtrheadfullpl}[1]{%
+ \protect\NoCaseChange
+ {%
+ \glsifattribute{#1}{headuc}{true}%
+ {%
+ \GLSxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ {%
+ \Glsxtrfullpl[noindex,hyper=false]{#1}[]%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsxtrtitlefullpl}
+% Command to display plural full form of abbreviation in section title and
+% table of contents with the first letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\newrobustcmd*{\Glsxtrtitlefullpl}[1]{%
+ \Glsxtrfullpl[noindex,hyper=false]{#1}[]%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtshort}
+% Provide a way of using the formatted short form in section
+% headings. If \sty{hyperref} has been loaded, use
+% \cs{texorpdfstring} for convenience in PDF bookmarks.
+%\changes{0.2}{2015-11-30}{new}
+%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshort}}
+%\changes{0.5}{2015-12-07}{changed to use \cs{glsxtrtitleshort}}
+%\changes{0.5}{2015-12-07}{renamed from \cs{glsentryfmtshort}}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtshort}[1]{%
+ \texorpdfstring
+ {\glsxtrtitleshort{#1}}%
+ {\glsentryshort{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtshort}[1]{%
+ \glsxtrtitleshort{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%Similarly for the plural version.
+%\begin{macro}{\glsfmtshortpl}
+%\changes{0.2}{2015-11-30}{new}
+%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshortpl}}
+%\changes{0.5}{2015-12-07}{changed to use \cs{glsxtrtitleshortpl}}
+%\changes{0.5}{2015-12-07}{renamed from \cs{glsentryfmtshortpl}}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtshortpl}[1]{%
+ \texorpdfstring
+ {\glsxtrtitleshortpl{#1}}%
+ {\glsentryshortpl{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtshortpl}[1]{%
+ \glsxtrtitleshortpl{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+% The case-changing version isn't suitable for PDF bookmarks, so the
+% PDF alternative uses the non-case-changing version.
+%\begin{macro}{\Glsfmtshort}
+% Singular form (first letter uppercase).
+%\changes{0.2}{2015-11-30}{new}
+%\changes{0.4}{2015-12-03}{changed to use \cs{Glsxtrshort}}
+%\changes{0.5}{2015-12-07}{changed to use \cs{Glsxtrtitleshort}}
+%\changes{0.5}{2015-12-07}{renamed from \cs{Glsentryfmtshort}}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtshort}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitleshort{#1}}%
+ {\glsentryshort{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtshort}[1]{%
+ \Glsxtrtitleshort{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\Glsfmtshortpl}
+%Plural form (first letter uppercase).
+%\changes{0.2}{2015-11-30}{new}
+%\changes{0.4}{2015-12-03}{changed to use \cs{glsxtrshortpl}}
+%\changes{0.5}{2015-12-07}{changed to use \cs{Glsxtrtitleshortpl}}
+%\changes{0.5}{2015-12-07}{renamed from \cs{Glsentryfmtshortpl}}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtshortpl}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitleshortpl{#1}}%
+ {\glsentryshortpl{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtshortpl}[1]{%
+ \Glsxtrtitleshortpl{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtname}
+%As above but for the \gloskey{name} value.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtname}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlename{#1}}%
+ {\glsentryname{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtname}[1]{%
+ \glsxtrtitlename{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtname}
+%First letter converted to upper case.
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtname}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlename{#1}}%
+ {\glsentryname{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtname}[1]{%
+ \Glsxtrtitlename{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\glsfmttext}
+%As above but for the \gloskey{text} value.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmttext}[1]{%
+ \texorpdfstring
+ {\glsxtrtitletext{#1}}%
+ {\glsentrytext{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmttext}[1]{%
+ \glsxtrtitletext{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmttext}
+%First letter converted to upper case.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmttext}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitletext{#1}}%
+ {\glsentrytext{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmttext}[1]{%
+ \Glsxtrtitletext{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtplural}
+%As above but for the \gloskey{plural} value.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtplural}[1]{%
+ \texorpdfstring
+ {\glsxtrtitleplural{#1}}%
+ {\glsentryplural{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtplural}[1]{%
+ \glsxtrtitleplural{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtplural}
+%First letter converted to upper case.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtplural}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitleplural{#1}}%
+ {\glsentryplural{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtplural}[1]{%
+ \Glsxtrtitleplural{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtfirst}
+%As above but for the \gloskey{first} value.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtfirst}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlefirst{#1}}%
+ {\glsentryfirst{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtfirst}[1]{%
+ \glsxtrtitlefirst{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfirst}
+%First letter converted to upper case.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtfirst}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlefirst{#1}}%
+ {\glsentryfirst{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtfirst}[1]{%
+ \Glsxtrtitlefirst{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtfirstpl}
+%As above but for the \gloskey{firstplural} value.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtfirstpl}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlefirstplural{#1}}%
+ {\glsentryfirstplural{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtfirstpl}[1]{%
+ \glsxtrtitlefirstplural{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfirstpl}
+%First letter converted to upper case.
+%\changes{0.5}{2015-12-07}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtfirstpl}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlefirstplural{#1}}%
+ {\glsentryfirstplural{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtfirstpl}[1]{%
+ \Glsxtrtitlefirstplural{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtlong}
+%As above but for the \gloskey{long} value.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtlong}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlelong{#1}}%
+ {\glsentrylong{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtlong}[1]{%
+ \glsxtrtitlelong{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtlong}
+%First letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtlong}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlelong{#1}}%
+ {\glsentrylong{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtlong}[1]{%
+ \Glsxtrtitlelong{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtlongpl}
+%As above but for the \gloskey{longplural} value.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtlongpl}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlelongpl{#1}}%
+ {\glsentrylongpl{#1}}%
+ }
+}
+{
+ \newcommand*{\glsfmtlongpl}[1]{%
+ \glsxtrtitlelongpl{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtlongpl}
+%First letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtlongpl}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlelongpl{#1}}%
+ {\glsentrylongpl{#1}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtlongpl}[1]{%
+ \Glsxtrtitlelongpl{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtfull}
+%In-line full format.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtfull}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlefull{#1}}%
+ {\glsxtrinlinefullformat{#1}{}}%
+ }
+}
+{
+ \newcommand*{\glsfmtfull}[1]{%
+ \glsxtrtitlefull{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfull}
+%First letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtfull}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlefull{#1}}%
+ {\Glsxtrinlinefullformat{#1}{}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtfull}[1]{%
+ \Glsxtrtitlefull{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsfmtfullpl}
+%In-line full plural format.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\glsfmtfullpl}[1]{%
+ \texorpdfstring
+ {\glsxtrtitlefullpl{#1}}%
+ {\glsxtrinlinefullplformat{#1}{}}%
+ }
+}
+{
+ \newcommand*{\glsfmtfullpl}[1]{%
+ \glsxtrtitlefullpl{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Glsfmtfullpl}
+%First letter converted to upper case.
+%\changes{1.02}{2016-04-25}{new}
+% \begin{macrocode}
+\ifdef\texorpdfstring
+{
+ \newcommand*{\Glsfmtfullpl}[1]{%
+ \texorpdfstring
+ {\Glsxtrtitlefullpl{#1}}%
+ {\Glsxtrinlinefullplformat{#1}{}}%
+ }
+}
+{
+ \newcommand*{\Glsfmtfullpl}[1]{%
+ \Glsxtrtitlefullpl{#1}}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{Multi-Lingual Support}
+% Add the facility to load language modules, if they are installed,
+% but none are provided with this package.
+%
+%\begin{macro}{\RequireGlossariesExtraLang}
+%\changes{0.5.3}{2015-12-09}{new}
+% \begin{macrocode}
+\newcommand*{\RequireGlossariesExtraLang}[1]{%
+ \@ifundefined{ver@glossariesxtr-#1.ldf}{\input{glossariesxtr-#1.ldf}}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ProvidesGlossariesExtraLang}
+%\changes{0.5.3}{2015-12-09}{new}
+% \begin{macrocode}
+\newcommand*{\ProvidesGlossariesExtraLang}[1]{%
+ \ProvidesFile{glossariesxtr-#1.ldf}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+% Load any required language modules that are available. This
+% doesn't generate any warning if none are found, since they're not
+% essential. (The only command that really needs defining for the
+% document is \ics{abbreviationsname}, which can simply be
+% redefined. However, with \app{bib2gls} it might be useful to
+% provide custom rules for a particular locale.)
+%
+%\begin{macro}{\glsxtr@loaddialect}
+%The dialect label should be stored in \cs{this@dialect}
+%before using this command.
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand{\glsxtr@loaddialect}{%
+ \IfTrackedLanguageFileExists{\this@dialect}%
+ {glossariesxtr-}% prefix
+ {.ldf}%
+ {%
+ \RequireGlossariesExtraLang{\CurrentTrackedTag}%
+ }%
+ {}% not found
+% \end{macrocode}
+% If \sty{glossaries-extra-bib2gls} has been loaded,
+% \cs{@glsxtrdialecthook} will check for the associated script,
+% otherwise it will do nothing.
+% \begin{macrocode}
+ \@glsxtrdialecthook
+}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+\@ifpackageloaded{tracklang}
+{%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}%
+ }%
+ {}%
+}
+{}
+% \end{macrocode}
+% Load \sty{glossaries-extra-stylemods} if required.
+% \begin{macrocode}
+\@glsxtr@redefstyles
+% \end{macrocode}
+% and set the style:
+% \begin{macrocode}
+\@glsxtr@do@style
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-extra.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-extra-bib2gls.sty>
+% \end{macrocode}
+%\fi
+%\changes{1.27}{2018-02-26}{added glossaries-extra-bib2gls.sty}
+%\section{glossaries-extra-bib2gls.sty}
+%This package provides additional support for \app{bib2gls} and is
+%automatically loaded by the record option.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-extra-bib2gls}[2019/04/09 v1.41 (NLCT)]
+% \end{macrocode}
+%Provide convenient shortcut commands for predefined glossary types.
+%\begin{macro}{\printunsrtacronyms}
+%\changes{1.40}{2019-03-31}{new}
+% \begin{macrocode}
+\ifglsacronym
+ \providecommand*{\printunsrtacronyms}[1][]{%
+ \printunsrtglossary[type=\acronymtype,#1]}%
+\fi
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtindex}
+%\changes{1.40}{2019-03-31}{new}
+% \begin{macrocode}
+\ifglossaryexists{index}
+{
+ \providecommand*{\printunsrtindex}[1][]{%
+ \printunsrtglossary[type=index,#1]}%
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtsymbols}
+%\changes{1.40}{2019-03-31}{new}
+% \begin{macrocode}
+\ifglossaryexists{symbols}
+{
+ \providecommand*{\printunsrtsymbols}[1][]{%
+ \printunsrtglossary[type=symbols,#1]}%
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtnumbers}
+%\changes{1.40}{2019-03-31}{new}
+% \begin{macrocode}
+\ifglossaryexists{numbers}
+{
+ \providecommand*{\printunsrtnumbers}[1][]{%
+ \printunsrtglossary[type=numbers,#1]}%
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\printunsrtabbreviations}
+%\changes{1.40}{2019-03-31}{new}
+% \begin{macrocode}
+\ifglossaryexists{abbreviations}
+{
+ \providecommand*{\printunsrtabbreviations}[1][]{%
+ \printunsrtglossary[type=abbreviations,#1]}%
+}{}
+% \end{macrocode}
+%\end{macro}
+%
+%These are some convenient macros for use with custom rules.
+%\begin{macro}{\glshex}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glshex}{\string\u}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glscapturedgroup}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+\newcommand*{\glscapturedgroup}{\string\$}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIfHasNonZeroChildCount}
+%\changes{1.31}{2018-05-09}{new}
+%For use with \app{bib2gls}'s \texttt{save-child-count} resource option.
+% \begin{macrocode}
+\newcommand*{\GlsXtrIfHasNonZeroChildCount}[3]{%
+ \GlsXtrIfFieldNonZero{childcount}{#1}{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrprovidecommand}
+%\changes{1.27}{2018-02-26}{new}
+%For use in \texttt{@preamble}, this behaves like
+%\cs{providecommand} in the document but like \cs{renewcommand}
+%in \app{bib2gls}.
+% \begin{macrocode}
+\newcommand*{\glsxtrprovidecommand}{\providecommand}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsrenewcommand}
+%\changes{1.37}{2018-11-30}{new}
+%Like \cs{renewcommand} but only generates a warning rather than an
+%error if the command isn't defined.
+% \begin{macrocode}
+\newcommand*{\glsrenewcommand}{\@star@or@long\glsxtr@renewcommand}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@renewcommand}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@renewcommand}[1]{%
+ \begingroup \escapechar\m@ne\xdef\@gtempa{{\string#1}}\endgroup
+ \expandafter\@ifundefined\@gtempa
+ {%
+ \GlossariesExtraWarning{can't redefine \noexpand#1(not already defined)}%
+ }%
+ \relax
+ \relax
+ \let\@ifdefinable\@rc@ifdefinable
+ \new@command#1%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtr@wrglossarylocation}
+%\changes{1.29}{2018-04-09}{new}
+%For use with \pkgopt{indexcounter} and \app{bib2gls}.
+% \begin{macrocode}
+\newcommand*{\glsxtr@wrglossarylocation}[2]{#1}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrIndexCounterLink}
+%\changes{1.29}{2018-04-09}{new}
+%\begin{definition}
+%\cs{GlsXtrIndexCounterLink}\marg{text}\marg{label}
+%\end{definition}
+%For use with \pkgopt{indexcounter} and \app{bib2gls}.
+% \begin{macrocode}
+\ifdef\hyperref
+{%
+ \newcommand*{\GlsXtrIndexCounterLink}[2]{%
+ \glsxtrifhasfield{indexcounter}{#2}%
+ {\hyperref[wrglossary.\glscurrentfieldvalue]{#1}}%
+ {#1}%
+ }
+}
+{
+ \newcommand*{\GlsXtrIndexCounterLink}[2]{#1}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrDualField}
+%\changes{1.30}{2018-04-25}{new}
+%\begin{definition}
+%\cs{GlsXtrDualField}
+%\end{definition}
+%The internal field used to store the dual label. The
+%\texttt{dual-field} defaults to \texttt{dual} if no value is
+%supplied so that's used as the default.
+% \begin{macrocode}
+\newcommand*{\GlsXtrDualField}{dual}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrDualBackLink}
+%\changes{1.30}{2018-04-25}{new}
+%\begin{definition}
+%\cs{GlsXtrDualBackLink}\marg{text}\marg{label}
+%\end{definition}
+%Adds a hyperlink to the dual entry.
+% \begin{macrocode}
+\newcommand*{\GlsXtrDualBackLink}[2]{%
+ \glsxtrifhasfield{\GlsXtrDualField}{#2}%
+ {\glshyperlink[#1]{\glscurrentfieldvalue}}%
+ {#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrBibTeXEntryAliases}
+%\changes{1.29}{2018-04-09}{new}
+%Convenient shortcut for use with \texttt{entry-type-aliases} to
+%alias standard \BibTeX\ entry types to \texttt{@bibtexentry}.
+% \begin{macrocode}
+\newcommand*{\GlsXtrBibTeXEntryAliases}{%
+ article=bibtexentry,
+ book=bibtexentry,
+ booklet=bibtexentry,
+ conference=bibtexentry,
+ inbook=bibtexentry,
+ incollection=bibtexentry,
+ inproceedings=bibtexentry,
+ manual=bibtexentry,
+ mastersthesis=bibtexentry,
+ misc=bibtexentry,
+ phdthesis=bibtexentry,
+ proceedings=bibtexentry,
+ techreport=bibtexentry,
+ unpublished=bibtexentry
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\GlsXtrProvideBibTeXFields}
+%\changes{1.29}{2018-04-09}{new}
+%Convenient shortcut to define the standard \BibTeX\ fields.
+% \begin{macrocode}
+\newcommand*{\GlsXtrProvideBibTeXFields}{%
+ \glsaddstoragekey{address}{}{\glsxtrbibaddress}%
+ \glsaddstoragekey{author}{}{\glsxtrbibauthor}%
+ \glsaddstoragekey{booktitle}{}{\glsxtrbibbooktitle}%
+ \glsaddstoragekey{chapter}{}{\glsxtrbibchapter}%
+ \glsaddstoragekey{edition}{}{\glsxtrbibedition}%
+ \glsaddstoragekey{howpublished}{}{\glsxtrbibhowpublished}%
+ \glsaddstoragekey{institution}{}{\glsxtrbibinstitution}%
+ \glsaddstoragekey{journal}{}{\glsxtrbibjournal}%
+ \glsaddstoragekey{month}{}{\glsxtrbibmonth}%
+ \glsaddstoragekey{note}{}{\glsxtrbibnote}%
+ \glsaddstoragekey{number}{}{\glsxtrbibnumber}%
+ \glsaddstoragekey{organization}{}{\glsxtrbiborganization}%
+ \glsaddstoragekey{pages}{}{\glsxtrbibpages}%
+ \glsaddstoragekey{publisher}{}{\glsxtrbibpublisher}%
+ \glsaddstoragekey{school}{}{\glsxtrbibschool}%
+ \glsaddstoragekey{series}{}{\glsxtrbibseries}%
+ \glsaddstoragekey{title}{}{\glsxtrbibtitle}%
+ \glsaddstoragekey{bibtextype}{}{\glsxtrbibtype}%
+ \glsaddstoragekey{volume}{}{\glsxtrbibvolume}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Multiple supplementary references are only supported with
+%\app{bib2gls}.
+%\begin{macro}{\glsxtrmultisupplocation}
+%\changes{1.36}{2018-08-18}{new}
+%This is like \cs{glsxtrsupphypernumber} but the second argument is
+%the external file name (which isn't obtained from the
+%\catattr{externallocation} attribute). The third argument is the
+%formatting (encap) control sequence \emph{name}. This is ignored by
+%default, but is set by \app{bib2gls} to the original encap in case
+%it's required.
+% \begin{macrocode}
+\newcommand*{\glsxtrmultisupplocation}[3]{%
+ {%
+ \def\glsxtrsupplocationurl{#2}%
+ \glshypernumber{#1}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdisplaysupploc}
+%\changes{1.36}{2018-08-18}{new}
+%\begin{definition}
+%\cs{glsxtrdisplaysupploc}\marg{prefix}\marg{counter}\marg{format}\marg{src}\marg{location}
+%\end{definition}
+%This is like \cs{glsnoidxdisplayloc} but is used for supplementary
+%locations and so requires an extra argument.
+% \begin{macrocode}
+\newcommand*\glsxtrdisplaysupploc[5]{%
+ \setentrycounter[#1]{#2}%
+ \glsxtrmultisupplocation{#5}{#4}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdisplaylocnameref}
+%\changes{1.37}{2018-11-30}{new}
+%\cs{glsxtrdisplaylocnameref}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{name}\marg{href}\marg{hcounter}\marg{external
+%file}
+%Used with the \sty[nameref]{record} package option. The \meta{href}
+%argument was obtained from \cs{@currentHref} and the
+%\meta{hcounter} argument was obtained from \cs{theHentrycounter},
+%which is more reliable.
+%If \sty{hyperref} hasn't been loaded, this just behaves like \cs{glsnoidxdisplayloc}.
+% \begin{macrocode}
+\ifundef\hyperlink
+{
+ \newcommand*{\glsxtrdisplaylocnameref}[8]{%
+ \glsnoidxdisplayloc{#1}{#2}{#3}{#4}%
+ }
+}
+{
+% \end{macrocode}
+% Default action uses \meta{hcounter}. Equations and pages typically don't
+% have a title, so check the counter name.
+% \begin{macrocode}
+ \newcommand*{\glsxtrdisplaylocnameref}[8]{%
+ \ifstrequal{#2}{equation}%
+ {\glsxtrnamereflink{#3}{(#4)}{#2.#7}{#8}}%
+ {%
+ \ifstrempty{#5}%
+ {%
+% \end{macrocode}
+%No title, so just use the location as the link text.
+% \begin{macrocode}
+ \glsxtrnamereflink{#3}{#4}{#2.#7}{#8}%
+ }%
+ {%
+ \ifstrequal{#2}{page}%
+ {\glsxtrnamereflink{#3}{#4}{#2.#7}{#8}}%
+ {\glsxtrnamereflink{#3}{#5}{#2.#7}{#8}}%
+ }%
+ }%
+ }
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnamereflink}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glsxtrfmtnamereflink}\marg{format}\marg{title}\marg{href}\marg{external
+%file}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtrnamereflink}[4]{%
+% \end{macrocode}
+%Locally change \cs{glshypernumber} to \cs{@firstofone} to
+%remove the normal location hyperlink.
+% \begin{macrocode}
+ \begingroup
+ \let\glshypernumber\@firstofone
+% \end{macrocode}
+%If the \meta{external file} argument is empty, an internal link is used,
+%otherwise an external one is needed.
+% \begin{macrocode}
+ \ifstrempty{#4}%
+ {\glsxtrfmtinternalnameref{#3}{#1}{#2}}%
+ {\glsxtrfmtexternalnameref{#3}{#1}{#2}{#4}}%
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnameloclink}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glsxtrnamerefloclink}\marg{prefix}\marg{counter}\marg{format}\marg{location}\marg{text}\marg{external
+%file}
+%\end{definition}
+%Like \cs{@gls@numberlink}, this creates a hyperlink to the
+%target obtained from the prefix, counter and location but uses
+%\meta{text} as the hyperlink text. As with regular indexing, this
+%will fail if the target name can't be formed by prefixing the
+%location value.
+% \begin{macrocode}
+\newcommand{\glsxtrnameloclink}[6]{%
+ \begingroup
+ \setentrycounter[#1]{#2}%
+ \def\glsxtr@locationhypertext{#5}%
+ \let\glshypernumber\@firstofone
+ \def\@glsnumberformat{#3}%
+ \def\glsxtrsupplocationurl{#6}%
+ \toks@={}%
+ \@glsxtr@bibgls@removespaces#4 \@nil
+ \endgroup
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@bibgls@removespaces}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\def\@glsxtr@bibgls@removespaces#1 #2\@nil{%
+ \toks@=\expandafter{\the\toks@#1}%
+ \ifx\\#2\\%
+ \edef\x{\the\toks@}%
+ \ifx\x\empty
+ \else
+ \protected@edef\x{\glsentrycounter\@glo@counterprefix\the\toks@}%
+ \ifdefvoid\glsxtrsupplocationurl
+ {%
+ \expandafter\glsxtrfmtinternalnameref\expandafter{\x}%
+ {\@glsnumberformat}{\glsxtr@locationhypertext}%
+ }%
+ {%
+ \expandafter\glsxtrfmtexternalnameref\expandafter{\x}%
+ {\@glsnumberformat}{\glsxtr@locationhypertext}{\glsxtrsupplocationurl}%
+ }%
+ \fi
+ \else
+ \@gls@ReturnAfterFi{%
+ \@glsxtr@bibgls@removespaces#2\@nil
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfmtinternalnameref}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glsxtrfmtinternalnameloc}\marg{target}\marg{format}\marg{title}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtrfmtinternalnameref}[3]{%
+ \csuse{#2}{\glsdohyperlink{#1}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfmtexternalnameref}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glsxtrfmtexternalnameloc}\marg{target}\marg{format}\marg{title}\marg{file}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glsxtrfmtexternalnameref}[4]{%
+ \csuse{#2}{\hyperref{#4}{}{#1}{#3}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrSetWidest}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glsxtrSetWidest}\marg{type}\marg{level}\marg{text}
+%\end{definition}
+%As from \gls{bib2gls} v1.8, this is used by the \texttt{set-widest}
+%resource option for the \glostyle{alttree} and the styles
+%provided by the \sty{glossary-longextra} package.
+% \begin{macrocode}
+\newcommand*{\glsxtrSetWidest}[3]{%
+% \end{macrocode}
+%Check which style options have been provided. (The style packages
+%may not have been loaded.)
+% \begin{macrocode}
+ \ifdef\glsupdatewidest
+ {%
+ \ifdef\glslongextraUpdateWidest
+ {%
+% \end{macrocode}
+%Relevant style packages all loaded.
+%If the \meta{type} has been given, append to glossary preamble.
+% \begin{macrocode}
+ \ifstrempty{#1}
+ {%
+ \glsupdatewidest[#2]{#3}%
+ \ifnum#2=0\relax
+ \glslongextraUpdateWidest{#3}%
+ \else
+ \glslongextraUpdateWidestChild{#2}{#3}%
+ \fi
+ }%
+ {%
+ \apptoglossarypreamble[#1]{\glsupdatewidest[#2]{#3}}%
+ \ifnum#2=0\relax
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}%
+ \else
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}%
+ \fi
+ }%
+ }%
+ {%
+% \end{macrocode}
+%Only \glostyle{alttree}.
+% \begin{macrocode}
+ \ifstrempty{#1}
+ {%
+ \glsupdatewidest[#2]{#3}%
+ }%
+ {%
+ \apptoglossarypreamble[#1]{\glsupdatewidest[#2]{#3}}%
+ }%
+ }%
+ }%
+ {%
+% \end{macrocode}
+%\cs{glsupdatewidest} hasn't been defined. This could just mean
+%that the \sty{glossaries-extra-stylemods} package hasn't been
+%loaded.
+% \begin{macrocode}
+ \ifdef\glssetwidest
+ {%
+ \ifdef\glslongextraUpdateWidest
+ {%
+% \end{macrocode}
+%Relevant \sty{glossary-tree} and \sty{glossary-longextra} have been loaded.
+%If the \meta{type} has been given, append to glossary preamble.
+% \begin{macrocode}
+ \ifstrempty{#1}
+ {%
+ \glssetwidest[#2]{#3}%
+ \ifnum#2=0\relax
+ \glslongextraUpdateWidest{#3}%
+ \else
+ \glslongextraUpdateWidestChild{#2}{#3}%
+ \fi
+ }%
+ {%
+ \apptoglossarypreamble[#1]{\glssetwidest[#2]{#3}}%
+ \ifnum#2=0\relax
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}%
+ \else
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}%
+ \fi
+ }%
+ }%
+ {%
+% \end{macrocode}
+%Only \glostyle{alttree}.
+% \begin{macrocode}
+ \ifstrempty{#1}
+ {%
+ \glssetwidest[#2]{#3}%
+ }%
+ {%
+ \apptoglossarypreamble[#1]{\glssetwidest[#2]{#3}}%
+ }%
+ }%
+ }%
+ {%
+ \ifdef\glslongextraUpdateWidest
+ {%
+% \end{macrocode}
+%\sty{glossary-longextra} has been loaded.
+% \begin{macrocode}
+ \ifstrempty{#1}
+ {%
+ \ifnum#2=0\relax
+ \glslongextraUpdateWidest{#3}%
+ \else
+ \glslongextraUpdateWidestChild{#2}{#3}%
+ \fi
+ }%
+ {%
+ \ifnum#2=0\relax
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidest{#3}}%
+ \else
+ \apptoglossarypreamble[#1]{\glslongextraUpdateWidestChild{#2}{#3}}%
+ \fi
+ }%
+ }%
+% \end{macrocode}
+%Neither \sty{glossary-tree} nor \sty{glossary-longextra} have been
+%loaded. Do nothing.
+% \begin{macrocode}
+ {}%
+ }%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrSetWidestFallback}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glsxtrSetWidestFallback}\marg{max depth}\marg{list}
+%\end{definition}
+%Used when \gls{bib2gls} can't determine the widest name.
+%The \meta{list} argument is a comma-separated list of glossary
+%labels. The \meta{max depth} refers to the maximum hierarchical
+%depth. This will either be 0 (only top-level entries) or 2
+%(up to two child-levels).
+% \begin{macrocode}
+\newcommand*{\glsxtrSetWidestFallback}[2]{%
+ \ifnum#1=0\relax
+ \ifdef\glsFindWidestTopLevelName
+ {%
+ \glsFindWidestTopLevelName[#2]%
+ }%
+ {%
+ \GlossariesExtraWarning{You need stylemods={tree} to
+ provide a fallback for set-widest}%
+ }%
+ \else
+ \ifdef\glsFindWidestLevelTwo
+ {%
+ \glsFindWidestLevelTwo[#2]%
+ \ifdef\glslongextraUpdateWidestChild
+ {%
+ \glslongextraUpdateWidestChild{#1}{\csuse{@glswidestnamei}}%
+ \glslongextraUpdateWidestChild{#1}{\csuse{@glswidestnameii}}%
+ }%
+ {}%
+ }%
+ {%
+ \GlossariesExtraWarning{You need stylemods={tree} to
+ provide a fallback for set-widest}%
+ }%
+ \fi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@labelprefixes}
+%\changes{1.37}{2018-11-30}{new}
+%List of label prefixes.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@labelprefixes}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrclearlabelprefixes}
+%\changes{1.37}{2018-11-30}{new}
+%List of label prefixes.
+% \begin{macrocode}
+\newcommand*{\glsxtrclearlabelprefixes}{%
+ \renewcommand*{\@glsxtr@labelprefixes}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtraddlabelprefix}
+%\changes{1.37}{2018-11-30}{new}
+%Add prefix to the list.
+%These should be added in the order of precedence with the last one
+%as a fallback. This doesn't check against
+%duplicates as it may be useful to replicate a prefix at the end as
+%the fallback.
+% \begin{macrocode}
+\newcommand*{\glsxtraddlabelprefix}[1]{%
+ \ifstrempty{#1}%
+ {\glsxtraddlabelprefix{\empty}}%
+ {%
+ \ifdefempty\@glsxtr@labelprefixes
+ {\def\@glsxtr@labelprefixes{#1}}%
+ {\appto\@glsxtr@labelprefixes{,#1}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrprependlabelprefix}
+%\changes{1.37}{2018-11-30}{new}
+%Inserts at the start of the list.
+% \begin{macrocode}
+\newcommand*{\glsxtrprependlabelprefix}[1]{%
+ \ifstrempty{#1}%
+ {\glsxtrprependlabelprefix{\empty}}%
+ {%
+ \ifdefempty\@glsxtr@labelprefixes
+ {\def\@glsxtr@labelprefixes{#1}}%
+ {\preto\@glsxtr@labelprefixes{#1,}}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrifinlabelprefixlist}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glsxtrifinlabelprefixlist}\marg{prefix}\marg{true}\marg{false}
+%\end{definition}
+%Test if the given prefix is in the list.
+% \begin{macrocode}
+\newcommand*{\glsxtrifinlabelprefixlist}[3]{%
+ \ifstrempty{#1}%
+ {\glsxtrifinlabelprefixlist{\empty}{#2}{#3}}%
+ {%
+ \DTLifinlist{#1}{\@glsxtr@labelprefixes}{#2}{#3}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@prefixlabellist}
+%\changes{1.37}{2018-11-30}{new}
+%This is provided for the benefit of \gls{bib2gls}. It's possible
+%that the user may add more prefixes after the start of the
+%document, but that can lead to inconsistencies. The final element
+%of the list (the fallback) is the only prefix of interest for \gls{bib2gls}.
+% \begin{macrocode}
+\AtBeginDocument{%
+ \protected@write\@auxout{}{\string\providecommand{\string\@glsxtr@prefixlabellist}[1]{}}%
+ \protected@write\@auxout{}{\string\@glsxtr@prefixlabellist{\@glsxtr@labelprefixes}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtr@get@prefixedlabel}
+%\changes{1.37}{2018-11-30}{new}
+%Iterate through all the prefixes and find the first
+%prefix and label combination that exists. If none found, this could
+%mean that it's the first \LaTeX\ run, so the last prefix in the
+%list needs to be the fallback one. Grouping is used in case
+%of a nested for loop.
+% \begin{macrocode}
+\newcommand*{\@glsxtr@get@prefixedlabel}[1]{%
+ \begingroup
+% \end{macrocode}
+%Initialise to the unprefixed label in the event that the list is
+%empty.
+% \begin{macrocode}
+ \edef\@gls@thislabel{#1}%
+ \@for\@glsxtr@prefix:=\@glsxtr@labelprefixes\do
+ {%
+ \edef\@gls@thislabel{\@glsxtr@prefix#1}%
+ \ifglsentryexists{\@gls@thislabel}{\@endfortrue}{}%
+ }%
+ \edef\x{\endgroup\noexpand\def\noexpand\@gls@thislabel{\@gls@thislabel}}\x
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dgls}
+%\changes{1.37}{2018-11-30}{new}
+%Like \cs{gls} but tries the prefixes. (Can't use \cs{pgls} as
+%that's provided by \sty{glossaries-prefix}.) Since this command
+%is designed for \app{bib2gls}'s dual entry system, the \qt{d}
+%stands for \qt{dual}.
+% \begin{macrocode}
+\newrobustcmd*{\dgls}{\@gls@hyp@opt\@dgls}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dgls}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@dgls}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@gls@{#1}{\@gls@thislabel}}{\@gls@{#1}{\@gls@thislabel}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dglspl}
+% \begin{macrocode}
+\newrobustcmd*{\dglspl}{\@gls@hyp@opt\@dglspl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dglspl}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@dglspl}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@glspl@{#1}{\@gls@thislabel}}{\@glspl@{#1}{\@gls@thislabel}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dGls}
+% \begin{macrocode}
+\newrobustcmd*{\dGls}{\@gls@hyp@opt\@dGls}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGls}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@dGls}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@Gls@{#1}{\@gls@thislabel}}{\@Gls@{#1}{\@gls@thislabel}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dGlspl}
+% \begin{macrocode}
+\newrobustcmd*{\dGlspl}{\@gls@hyp@opt\@dGlspl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGlspl}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@dGlspl}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@Glspl@{#1}{\@gls@thislabel}}{\@Glspl@{#1}{\@gls@thislabel}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dGLS}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newrobustcmd*{\dGLS}{\@gls@hyp@opt\@dGLS}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGLS}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@dGLS}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@GLS@{#1}{\@gls@thislabel}}{\@GLS@{#1}{\@gls@thislabel}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dGLSpl}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newrobustcmd*{\dGLSpl}{\@gls@hyp@opt\@dGLSpl}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@dGLSpl}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\@dGLSpl}[2][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \new@ifnextchar[{\@GLSpl@{#1}{\@gls@thislabel}}{\@GLSpl@{#1}{\@gls@thislabel}[]}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dglslink}
+%\changes{1.37}{2018-11-30}{new}
+%Like \cs{glslink} but tries the prefixes.
+% \begin{macrocode}
+\newrobustcmd*{\dglslink}[3][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \glslink[#1]{\@gls@thislabel}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\dglsdisp}
+%\changes{1.37}{2018-11-30}{new}
+%Like \cs{glsdisp} but tries the prefixes.
+% \begin{macrocode}
+\newrobustcmd*{\dglsdisp}[3][]{%
+ \@glsxtr@get@prefixedlabel{#2}%
+ \glsdisp[#1]{\@gls@thislabel}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide missing Greek letters for use in maths mode.
+%These commands are recognised by \app{bib2gls} and will be mapped to the
+%Mathematical Greek Italic letters. This ensures that the Greek
+%letters that have the same shape as Latin letters are kept
+%with the other mathematical Greek letters for sorting purposes.
+%The \LaTeX\ version of these commands (provided here) use an upright font
+%for capitals and italic for lower case to provide a better match
+%with the other Greek symbols provided by the kernel.
+%
+%\begin{macro}{\Alpha}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Alpha}{\mathrm{A}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Beta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Beta}{\mathrm{B}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Epsilon}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Epsilon}{\mathrm{E}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Zeta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Zeta}{\mathrm{Z}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Eta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Eta}{\mathrm{H}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Iota}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Iota}{\mathrm{I}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Kappa}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Kappa}{\mathrm{K}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Mu}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Mu}{\mathrm{M}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Nu}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Nu}{\mathrm{N}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Omicron}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Omicron}{\mathrm{O}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Rho}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Rho}{\mathrm{P}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Tau}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Tau}{\mathrm{T}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Chi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Chi}{\mathrm{X}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Digamma}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\Digamma}{\mathrm{F}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\omicron}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\providecommand*{\omicron}{\mathit{o}}
+% \end{macrocode}
+%\end{macro}
+%
+%Provide corresponding upright characters if \sty{upgreek} has been
+%loaded. (The upper case characters are the same as above.)
+% \begin{macrocode}
+\@ifpackageloaded{upgreek}%
+{
+% \end{macrocode}
+%\begin{macro}{\Upalpha}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upalpha}{\mathrm{A}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upbeta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upbeta}{\mathrm{B}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upepsilon}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upepsilon}{\mathrm{E}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upzeta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upzeta}{\mathrm{Z}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upeta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upeta}{\mathrm{H}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upiota}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upiota}{\mathrm{I}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upkappa}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upkappa}{\mathrm{K}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upmu}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upmu}{\mathrm{M}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upnu}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upnu}{\mathrm{N}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upomicron}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upomicron}{\mathrm{O}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Uprho}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Uprho}{\mathrm{P}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Uptau}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Uptau}{\mathrm{T}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\Upchi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\Upchi}{\mathrm{X}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\upomicron}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+ \providecommand*{\upomicron}{\mathrm{o}}
+% \end{macrocode}
+%\end{macro}
+%
+% \begin{macrocode}
+}%
+{}% upgreek.sty not loaded
+% \end{macrocode}
+%
+%This package provides some basic rules, but it's not intended for
+%complete coverage of all locales. The CLDR should provide the
+%appropriate locale-sensitive rules. These macros are primarily to
+%help construct custom rules to include, for example, Greek maths symbols
+%mixed with Latin. For the full rule syntax, see the Java API for
+%\href{https://docs.oracle.com/javase/8/docs/api/java/text/RuleBasedCollator.html}{RuleBaseCollator}
+%
+%If you want to provide a rule-block for a particular locale to
+%allow for customization within that locale, create a file called
+%\texttt{glossariesxtr-\meta{tag}.ldf} (where \meta{tag} identifies
+%the locale) and add similar commands. See the description
+%of \cs{IfTrackedLanguageFileExists} in the \sty{tracklang} manual
+%for the allowed forms of \meta{tag}. The simplest is to just use
+%the root language label or ISO code. The file will then be automatically loaded
+%by \styfmt{glossaries-extra} if the document has support for that
+%language.
+%
+%When combining these blocks of rules, remember to separate them
+%with the appropriate character. For example:
+%\begin{verbatim}
+%sort-rule={\glsxtrcontrolrules
+% ;\glsxtrspacerules
+% ;\glsxtrnonprintablerules
+% ;\glsxtrcombiningdiacriticrules
+% ,\glsxtrhyphenrules
+% <\glsxtrgeneralpuncrules
+% <\glsxtrdigitrules
+% <\glsxtrfractionrules
+% <\glsxtrGeneralLatinIVrules
+% <\glsxtrMathItalicGreekIrules
+%}
+%\end{verbatim}
+%
+%\begin{macro}{\glsxtrcontrolrules}
+%\changes{1.27}{2018-02-26}{new}
+%These are control characters that are usually placed at the start
+%of a rule in the `ignored characters' section. These control
+%characters are unlikely to appear in any entry fields but are
+%provided for completeness.
+%\cs{string} is used for punctuation characters in case they've been
+%made active.
+% \begin{macrocode}
+\newcommand*{\glsxtrcontrolrules}{%
+ \string'\glshex 200B\string'\string=\glshex 200C\string=\glshex 200D
+ \string=\glshex 200E\string=\glshex 200F\string=\glshex 0000\string=\glshex 0001
+ \string=\glshex 0002\string=\glshex 0003\string=\glshex 0004\string=\glshex 0005
+ \string=\glshex 0006\string=\glshex 0007\string=\glshex 0008
+ \string=\string'\glshex 0009\string'\string=\string'\glshex 000B\string'
+ \string=\glshex 000E\string=\glshex 000F\string=\string'\glshex
+0010\string'\string=\glshex 0011
+ \string=\glshex 0012\string=\glshex 0013\string=\glshex 0014\string=\glshex 0015
+ \string=\glshex 0016\string=\glshex 0017\string=\glshex 0018\string=\glshex 0019
+ \string=\glshex 001A\string=\glshex 001B\string=\glshex 001C\string=\glshex 001D
+ \string=\glshex 001E\string=\glshex 001F\string=\glshex 007F\string=\glshex 0080
+ \string=\glshex 0081\string=\glshex 0082\string=\glshex 0083\string=\glshex 0084
+ \string=\glshex 0085\string=\glshex 0086\string=\glshex 0087\string=\glshex 0088
+ \string=\glshex 0089\string=\glshex 008A\string=\glshex 008B\string=\glshex 008C
+ \string=\glshex 008D\string=\glshex 008E\string=\glshex 008F\string=\glshex 0090
+ \string=\glshex 0091\string=\glshex 0092\string=\glshex 0093\string=\glshex 0094
+ \string=\glshex 0095\string=\glshex 0096\string=\glshex 0097\string=\glshex 0098
+ \string=\glshex 0099\string=\glshex 009A\string=\glshex 009B\string=\glshex 009C
+ \string=\glshex 009D\string=\glshex 009E\string=\glshex 009F
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrspacerules}
+%\changes{1.27}{2018-02-26}{new}
+%These are space characters.
+% \begin{macrocode}
+\newcommand*{\glsxtrspacerules}{%
+ \string' \string'\string;
+ \string'\glshex 00A0\string'\string;
+ \string'\glshex 2000\string'\string;
+ \string'\glshex 2001\string'\string;
+ \string'\glshex 2002\string'\string;
+ \string'\glshex 2003\string'\string;
+ \string'\glshex 2004\string'\string;
+ \string'\glshex 2005\string'\string;
+ \string'\glshex 2006\string'\string;
+ \string'\glshex 2007\string'\string;
+ \string'\glshex 2008\string'\string;
+ \string'\glshex 2009\string'\string;
+ \string'\glshex 200A\string'\string;
+ \string'\glshex 3000\string'
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrnonprintablerules}
+%\changes{1.27}{2018-02-26}{new}
+%These are non-printable characters (BOM, tabs, line feed and carriage
+%return).
+% \begin{macrocode}
+\newcommand*{\glsxtrnonprintablerules}{%
+ \string'\glshex FEFF\string'\string;
+ \string'\glshex 000A\string'\string;
+ \string'\glshex 0009\string'\string;
+ \string'\glshex 000C\string'\string;
+ \string'\glshex 000B\string'
+}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\glsxtrcombiningdiacriticrules}
+%\changes{1.27}{2018-02-26}{new}
+%Combining diacritic marks. This is split into multiple macros.
+% \begin{macrocode}
+\newcommand*{\glsxtrcombiningdiacriticrules}{%
+ \glsxtrcombiningdiacriticIrules\string;
+ \glsxtrcombiningdiacriticIIrules\string;
+ \glsxtrcombiningdiacriticIIIrules\string;
+ \glsxtrcombiningdiacriticIVrules
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrcombiningdiacriticIrules}
+%\changes{1.27}{2018-02-26}{new}
+%First set of combining diacritic marks.
+% \begin{macrocode}
+\newcommand*{\glsxtrcombiningdiacriticIrules}{%
+ \glshex 0301\string;% combining acute
+ \glshex 0300\string;% combining grave
+ \glshex 0306\string;% combining breve
+ \glshex 0302\string;% combining circumflex
+ \glshex 030C\string;% combining caron
+ \glshex 030A\string;% combining ring
+ \glshex 030D\string;% combining vertical line above
+ \glshex 0308\string;% combining diaeresis
+ \glshex 030B\string;% combining double acute
+ \glshex 0303\string;% combining tilde
+ \glshex 0307\string;% combining dot above
+ \glshex 0304% combining macron
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrcombiningdiacriticIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Second set of combining diacritic marks.
+% \begin{macrocode}
+\newcommand*{\glsxtrcombiningdiacriticIIrules}{%
+ \glshex 0337\string;% combining short solidus overlay
+ \glshex 0327\string;% combining cedilla
+ \glshex 0328\string;% combining ogonek
+ \glshex 0323\string;% combining dot below
+ \glshex 0332\string;% combining low line
+ \glshex 0305\string;% combining overline
+ \glshex 0309\string;% combining hook above
+ \glshex 030E\string;% combining double vertical line above
+ \glshex 030F\string;% combining double grave accent
+ \glshex 0310\string;% combining candrabindu
+ \glshex 0311\string;% combining inverted breve
+ \glshex 0312\string;% combining turned comma above
+ \glshex 0313\string;% combining comma above
+ \glshex 0314\string;% combining reversed comma above
+ \glshex 0315\string;% combining comma above right
+ \glshex 0316\string;% combining grave accent below
+ \glshex 0317% combining acute accent below
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrcombiningdiacriticIIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Third set of combining diacritic marks.
+% \begin{macrocode}
+\newcommand*{\glsxtrcombiningdiacriticIIIrules}{%
+ \glshex 0318\string;% combining left tack below
+ \glshex 0319\string;% combining right tack below
+ \glshex 031A\string;% combining left angle above
+ \glshex 031B\string;% combining horn
+ \glshex 031C\string;% combining left half ring below
+ \glshex 031D\string;% combining up tack below
+ \glshex 031E\string;% combining down tack below
+ \glshex 031F\string;% combining plus sign below
+ \glshex 0320\string;% combining minus sign below
+ \glshex 0321\string;% combining palatalized hook below
+ \glshex 0322\string;% combining retroflex hook below
+ \glshex 0324\string;% combining diaresis below
+ \glshex 0325\string;% combining ring below
+ \glshex 0326\string;% combining comma below
+ \glshex 0329\string;% combining vertical line below
+ \glshex 032A\string;% combining bridge below
+ \glshex 032B\string;% combining inverted double arch below
+ \glshex 032C\string;% combining caron below
+ \glshex 032D\string;% combining circumflex accent below
+ \glshex 032E\string;% combining breve below
+ \glshex 032F\string;% combining inverted breve below
+ \glshex 0330\string;% combining tilde below
+ \glshex 0331\string;% combining macron below
+ \glshex 0333\string;% combining double low line
+ \glshex 0334\string;% combining tilde overlay
+ \glshex 0335\string;% combining short stroke overlay
+ \glshex 0336\string;% combining long stroke overlay
+ \glshex 0338\string;% combining long solidus overlay
+ \glshex 0339\string;% combining combining right half ring below
+ \glshex 033A\string;% combining inverted bridge below
+ \glshex 033B\string;% combining square below
+ \glshex 033C\string;% combining seagull below
+ \glshex 033D\string;% combining x above
+ \glshex 033E\string;% combining vertical tilde
+ \glshex 033F\string;% combining double overline
+ \glshex 0342\string;% combining Greek perispomeni
+ \glshex 0344\string;% combining Greek dialytika tonos
+ \glshex 0345\string;% combining Greek ypogegrammeni
+ \glshex 0360\string;% combining double tilde
+ \glshex 0361\string;% combining double inverted breve
+ \glshex 0483\string;% combining Cyrillic titlo
+ \glshex 0484\string;% combining Cyrillic palatalization
+ \glshex 0485\string;% combining Cyrillic dasia pneumata
+ \glshex 0486% combining Cyrillic psili pneumata
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrcombiningdiacriticIVrules}
+%\changes{1.27}{2018-02-26}{new}
+%Fourth set of combining diacritic marks.
+% \begin{macrocode}
+\newcommand*{\glsxtrcombiningdiacriticIVrules}{%
+ \glshex 20D0\string;% combining left harpoon above
+ \glshex 20D1\string;% combining right harpoon above
+ \glshex 20D2\string;% combining long vertical line overlay
+ \glshex 20D3\string;% combining short vertical line overlay
+ \glshex 20D4\string;% combining anticlockwise arrow above
+ \glshex 20D5\string;% combining clockwise arrow above
+ \glshex 20D6\string;% combining left arrow above
+ \glshex 20D7\string;% combining right arrow above
+ \glshex 20D8\string;% combining ring overlay
+ \glshex 20D9\string;% combining clockwise ring overlay
+ \glshex 20DA\string;% combining anticlockwise ring overlay
+ \glshex 20DB\string;% combining three dots above
+ \glshex 20DC\string;% combining four dots above
+ \glshex 20DD\string;% combining enclosing circle
+ \glshex 20DE\string;% combining enclosing square
+ \glshex 20DF\string;% combining enclosing diamond
+ \glshex 20E0\string;% combining enclosing circle backslash
+ \glshex 20E1% combining left right arrow above
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrhyphenrules}
+%\changes{1.27}{2018-02-26}{new}
+%Hyphens.
+% \begin{macrocode}
+\newcommand*{\glsxtrhyphenrules}{%
+ \string'\string-\string'\string;% ASCII hyphen
+ \glshex 00AD\string;% soft hyphen
+ \glshex 2010\string;% hyphen
+ \glshex 2011\string;% non-breaking hyphen
+ \glshex 2012\string;% figure dash
+ \glshex 2013\string;% en dash
+ \glshex 2014\string;% em dash
+ \glshex 2015\string;% horizontal bar
+ \glshex 2212\string=\glshex 207B\string=\glshex 208B% minus sign
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgeneralpuncrules}
+%\changes{1.27}{2018-02-26}{new}
+%General punctuation.
+% \begin{macrocode}
+\newcommand*{\glsxtrgeneralpuncrules}{%
+ \glsxtrgeneralpuncIrules
+ \string<\glsxtrcurrencyrules
+ \string<\glsxtrgeneralpuncIIrules
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgeneralpuncIrules}
+%\changes{1.27}{2018-02-26}{new}
+%First set of general punctuation.
+% \begin{macrocode}
+\newcommand*{\glsxtrgeneralpuncIrules}{%
+ \string'\glshex 005F\string'% underscore
+ \string<\glshex 00AF% macron
+ \string<\string'\glshex 002C\string'% comma
+ \string<\string'\glshex 003B\string'% semi-colon
+ \string<\string'\glshex 003A\string'% colon
+ \string<\string'\glshex 0021\string'% exclamation mark
+ \string<\glshex 00A1% inverted exclamation mark
+ \string<\string'\glshex 003F\string'% question mark
+ \string<\glshex 00BF% inverted question mark
+ \string<\string'\glshex 002F\string'% solidus
+ \string<\string'\glshex 002E\string'% full stop
+ \string<\glshex 00B4% acute accent
+ \string<\string'\glshex 0060\string'% grave accent
+ \string<\string'\glshex 005E\string'% circumflex accent
+ \string<\glshex 00A8% diaersis
+ \string<\string'\glshex 007E\string'% tilde
+ \string<\glshex 00B7% middle dot
+ \string<\glshex 00B8% cedilla
+ \string<\string'\glshex 0027\string'% straight apostrophe
+ \string<\string'\glshex 0022\string'% straight double quote
+ \string<\glshex 00AB% left guillemet
+ \string<\glshex 00BB% right guillemet
+ \string<\string'\glshex 0028\string'% left parenthesis
+ \string=\glshex 207D\string=\glshex 208D% super/subscript left parenthesis
+ \string<\string'\glshex 0029\string'% right parenthesis
+ \string=\glshex 207E\string=\glshex 208E% super/subscript right parenthesis
+ \string<\string'\glshex 005B\string'% left square bracket
+ \string<\string'\glshex 005D\string'% right square bracket
+ \string<\string'\glshex 007B\string'% left curly bracket
+ \string<\string'\glshex 007D\string'% right curly bracket
+ \string<\glshex 00A7% section sign
+ \string<\glshex 00B6% pilcrow sign
+ \string<\glshex 00A9% copyright sign
+ \string<\glshex 00AE% registered sign
+ \string<\string'\glshex 0040\string'% at sign
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrcurrencyrules}
+%\changes{1.27}{2018-02-26}{new}
+%General punctuation.
+% \begin{macrocode}
+\newcommand*{\glsxtrcurrencyrules}{%
+ \glshex 00A4% currency sign
+ \string<\glshex 0E3F% Thai currency symbol baht
+ \string<\glshex 00A2% cent sign
+ \string<\glshex 20A1% colon sign
+ \string<\glshex 20A2% cruzeiro sign
+ \string<\string'\glshex 0024\string'% dollar sign
+ \string<\glshex 20AB% dong sign
+ \string<\glshex 20AC% euro sign
+ \string<\glshex 20A3% French franc sign
+ \string<\glshex 20A4% lira sign
+ \string<\glshex 20A5% mill sign
+ \string<\glshex 20A6% naira sign
+ \string<\glshex 20A7% peseta sign
+ \string<\glshex 00A3% pound sign
+ \string<\glshex 20A8% rupee sign
+ \string<\glshex 20AA% new sheqel sign
+ \string<\glshex 20A9% won sign
+ \string<\glshex 00A5% yen sign
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrgeneralpuncIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Second set of general punctuation.
+% \begin{macrocode}
+\newcommand*{\glsxtrgeneralpuncIIrules}{%
+ \string'\glshex 002A\string'% asterisk
+ \string<\string'\glshex 005C\string'% backslash
+ \string<\string'\glshex 0026\string'% ampersand
+ \string<\string'\glshex 0023\string'% hash sign
+ \string<\string'\glshex 0025\string'% percent sign
+ \string<\string'\glshex 002B\string'% plus sign
+ \string=\glshex 207A\string=\glshex 208A% super/subscript plus sign
+ \string<\glshex 00B1% plus-minus sign
+ \string<\glshex 00F7% division sign
+ \string<\glshex 00D7% multiplication sign
+ \string<\string'\glshex 003C\string'% less-than sign
+ \string<\string'\glshex 003D\string'% equals sign
+ \string<\string'\glshex 003E\string'% greater-than sign
+ \string<\glshex 00AC% not sign
+ \string<\string'\glshex 007C\string'% vertical bar (pipe)
+ \string<\glshex 00A6% broken bar
+ \string<\glshex 00B0% degree sign
+ \string<\glshex 00B5% micron sign
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Basic Latin alphabet.
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinIrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string<\glsxtrLatinT
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%General Latin alphabet (eth between D and E, \ss\ treated as SS).
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinIIrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SS \string, \glsxtrLatinEszettSs
+ \string<\glsxtrLatinT
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinIIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%General Latin alphabet (eth between D and E, \ss\ treated as SZ).
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinIIIrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SZ, \glsxtrLatinEszettSz
+ \string<\glsxtrLatinT
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinIVrules}
+%\changes{1.27}{2018-02-26}{new}
+%General Latin alphabet (\AE\ treated as AE and \OE treated as OE,
+%\TH treated as TH, \ss\ treated as SS, eth between D and E).
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinIVrules}{%
+ \glsxtrLatinA
+ \string& AE , \glsxtrLatinAELigature
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string& OE , \glsxtrLatinOELigature
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SS , \glsxtrLatinEszettSs
+ \string<\glsxtrLatinT
+ \string& th =\glshex 00DE
+ \string& TH =\glshex 00FE
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinVrules}
+%\changes{1.27}{2018-02-26}{new}
+%General Latin alphabet (eth between D and E, \ss\ treated as SS,
+%\TH\ treated as TH).
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinVrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SS , \glsxtrLatinEszettSs
+ \string<\glsxtrLatinT
+ \string& th =\glshex 00DE
+ \string& TH =\glshex 00FE
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinVIrules}
+%\changes{1.27}{2018-02-26}{new}
+%General Latin alphabet (eth between D and E, \ss\ treated as SZ,
+%\TH\ treated as TH).
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinVIrules}{%
+ \glsxtrLatinA
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SZ , \glsxtrLatinEszettSz
+ \string<\glsxtrLatinT
+ \string& th =\glshex 00DE
+ \string& TH =\glshex 00FE
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinVIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%General Latin alphabet (\AE\ between A and B, eth between D and E,
+%insular G as G, \OE\ between O and P, long S equivalent to S,
+%\TH\ between T and U and wynn as W).
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinVIIrules}{%
+ \glsxtrLatinA
+ \string<\glsxtrLatinAELigature
+ \string<b,B%
+ \string<c,C%
+ \string<d,D%
+ \string<\glsxtrLatinEth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<\glsxtrLatinInsularG
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glsxtrLatinL
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glsxtrLatinO
+ \string<\glsxtrLatinOELigature
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glshex 017F=\glsxtrLatinS % s and long s
+ \string<\glsxtrLatinT
+ \string<\glsxtrLatinThorn
+ \string<u,U%
+ \string<v,V%
+ \string< w\string=\glshex 01BF, W\string=\glshex 01F7
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrGeneralLatinVIIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%General Latin alphabet (\AE\ treated as AE and \OE treated as OE,
+%\TH treated as TH, \ss\ treated as SS, eth treated as D, \O\
+%treated as O, \L\ treated as L).
+% \begin{macrocode}
+\newcommand*{\glsxtrGeneralLatinVIIIrules}{%
+ \glsxtrLatinA
+ \string& AE , \glsxtrLatinAELigature
+ \string<b,B%
+ \string<c,C%
+ \string<\glshex 00F0\string;d,\glshex 00D0\string;D% D and eth
+ \string<\glsxtrLatinE
+ \string<f,F%
+ \string<g,G%
+ \string<\glsxtrLatinH
+ \string<\glsxtrLatinI
+ \string<j,J%
+ \string<\glsxtrLatinK
+ \string<\glshex 0142\string=\glsxtrLatinL\string=\glshex 0141% L and \L
+ \string<\glsxtrLatinM
+ \string<\glsxtrLatinN
+ \string<\glshex 00F8\string=\glsxtrLatinO\string=\glshex 00D8% O and \O
+ \string& OE , \glsxtrLatinOELigature
+ \string<\glsxtrLatinP
+ \string<q,Q%
+ \string<r,R%
+ \string<\glsxtrLatinS
+ \string& SS , \glsxtrLatinEszettSs
+ \string<\glsxtrLatinT
+ \string& th =\glshex 00DE
+ \string& TH =\glshex 00FE
+ \string<u,U%
+ \string<v,V%
+ \string<w,W%
+ \string<\glsxtrLatinX
+ \string<y,Y%
+ \string<z,Z%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinA}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinA}{%
+ a\string=\glshex 00AA\string=\glshex 2090,A
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinE}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinE}{%
+ e\string=\glshex 2091,E
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinH}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinH}{%
+ h\string=\glshex 2095,H
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinI}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinI}{%
+ i\string=\glshex 2071,I
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinK}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinK}{%
+ k\string=\glshex 2096,K
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinL}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinL}{%
+ l\string=\glshex 2097,L
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinM}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinM}{%
+ m\string=\glshex 2098,M
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinN}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinN}{%
+ n\string=\glshex 207F\string=\glshex 2099,N
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinO}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinO}{%
+ o\string=\glshex 00BA\string=\glshex 2092,O
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinP}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinP}{%
+ p\string=\glshex 209A,P
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinS}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinS}{%
+ s\string=\glshex 209B,S
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinT}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinT}{%
+ t\string=\glshex 209C,T
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinX}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinX}{%
+ x\string=\glshex 2093,X
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinSchwa}
+%\changes{1.27}{2018-02-26}{new}
+%Latin schwa (lower case, subscript and upper case).
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinSchwa}{%
+ \glshex 0259\string=\glshex 2094,\glshex 018F
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinEszettSs}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinEszettSs}{%
+ \glshex 00DF% eszett
+ \string=\glshex 017Fs % long S s
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinEszettSz}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinEszettSz}{%
+ \glshex 00DF% eszett
+ \string= \glshex 017Fz % long S z
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinEth}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinEth}{%
+ \glshex 00F0,\glshex 00D0% eth
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinThorn}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinThorn}{%
+ \glshex 00FE,\glshex 00DE% thorn
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinAELigature}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinAELigature}{%
+ \glshex 00E6,\glshex 00C6% AE-ligature
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinOELigature}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinOELigature}{%
+ \glshex 0153,\glshex 0152% OE-ligature
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinAA}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinAA}{%
+ \glshex 00E5=a\glshex 030A,% \aa
+ \glshex 00C5=A\glshex 030A% \AA
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinWynn}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinWynn}{%
+ \glshex 01BF,\glshex 01F7% wynn
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinInsularG}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinInsularG}{%
+ \glshex 1D79,\glshex A77D% insular G
+ \string; g, G
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinOslash}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinOslash}{%
+ \glshex 00F8,\glshex 00D8% \o, \O
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrLatinLslash}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrLatinLslash}{%
+ \glshex 0142,\glshex 0141% \l, \L
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathUpGreekIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Includes digamma between epsilon and zeta.
+% \begin{macrocode}
+\newcommand*{\glsxtrMathUpGreekIrules}{%
+ \glsxtrUpAlpha
+ \string<\glsxtrUpBeta
+ \string<\glsxtrUpGamma
+ \string<\glsxtrUpDelta
+ \string<\glsxtrUpEpsilon
+ \string<\glsxtrUpDigamma
+ \string<\glsxtrUpZeta
+ \string<\glsxtrUpEta
+ \string<\glsxtrUpTheta
+ \string<\glsxtrUpIota
+ \string<\glsxtrUpKappa
+ \string<\glsxtrUpLambda
+ \string<\glsxtrUpMu
+ \string<\glsxtrUpNu
+ \string<\glsxtrUpXi
+ \string<\glsxtrUpOmicron
+ \string<\glsxtrUpPi
+ \string<\glsxtrUpRho
+ \string<\glsxtrUpSigma
+ \string<\glsxtrUpTau
+ \string<\glsxtrUpUpsilon
+ \string<\glsxtrUpPhi
+ \string<\glsxtrUpChi
+ \string<\glsxtrUpPsi
+ \string<\glsxtrUpOmega
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathUpGreekIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Doesn't include digamma.
+% \begin{macrocode}
+\newcommand*{\glsxtrMathUpGreekIIrules}{%
+ \glsxtrUpAlpha
+ \string<\glsxtrUpBeta
+ \string<\glsxtrUpGamma
+ \string<\glsxtrUpDelta
+ \string<\glsxtrUpEpsilon
+ \string<\glsxtrUpZeta
+ \string<\glsxtrUpEta
+ \string<\glsxtrUpTheta
+ \string<\glsxtrUpIota
+ \string<\glsxtrUpKappa
+ \string<\glsxtrUpLambda
+ \string<\glsxtrUpMu
+ \string<\glsxtrUpNu
+ \string<\glsxtrUpXi
+ \string<\glsxtrUpOmicron
+ \string<\glsxtrUpPi
+ \string<\glsxtrUpRho
+ \string<\glsxtrUpSigma
+ \string<\glsxtrUpTau
+ \string<\glsxtrUpUpsilon
+ \string<\glsxtrUpPhi
+ \string<\glsxtrUpChi
+ \string<\glsxtrUpPsi
+ \string<\glsxtrUpOmega
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicGreekIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Includes (upright) digamma between epsilon and zeta (there isn't
+%an italic digamma), so don't mix with \cs{glsxtrMathUpGreekIrules}
+%or there may be unexpected results.
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicGreekIrules}{%
+ \glsxtrMathItalicAlpha
+ \string<\glsxtrMathItalicBeta
+ \string<\glsxtrMathItalicGamma
+ \string<\glsxtrMathItalicDelta
+ \string<\glsxtrMathItalicEpsilon
+ \string<\glsxtrUpDigamma
+ \string<\glsxtrMathItalicZeta
+ \string<\glsxtrMathItalicEta
+ \string<\glsxtrMathItalicTheta
+ \string<\glsxtrMathItalicIota
+ \string<\glsxtrMathItalicKappa
+ \string<\glsxtrMathItalicLambda
+ \string<\glsxtrMathItalicMu
+ \string<\glsxtrMathItalicNu
+ \string<\glsxtrMathItalicXi
+ \string<\glsxtrMathItalicOmicron
+ \string<\glsxtrMathItalicPi
+ \string<\glsxtrMathItalicRho
+ \string<\glsxtrMathItalicSigma
+ \string<\glsxtrMathItalicTau
+ \string<\glsxtrMathItalicUpsilon
+ \string<\glsxtrMathItalicPhi
+ \string<\glsxtrMathItalicChi
+ \string<\glsxtrMathItalicPsi
+ \string<\glsxtrMathItalicOmega
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicGreekIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Doesn't include digamma.
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicGreekIIrules}{%
+ \glsxtrMathItalicAlpha
+ \string<\glsxtrMathItalicBeta
+ \string<\glsxtrMathItalicGamma
+ \string<\glsxtrMathItalicDelta
+ \string<\glsxtrMathItalicEpsilon
+ \string<\glsxtrMathItalicZeta
+ \string<\glsxtrMathItalicEta
+ \string<\glsxtrMathItalicTheta
+ \string<\glsxtrMathItalicIota
+ \string<\glsxtrMathItalicKappa
+ \string<\glsxtrMathItalicLambda
+ \string<\glsxtrMathItalicMu
+ \string<\glsxtrMathItalicNu
+ \string<\glsxtrMathItalicXi
+ \string<\glsxtrMathItalicOmicron
+ \string<\glsxtrMathItalicPi
+ \string<\glsxtrMathItalicRho
+ \string<\glsxtrMathItalicSigma
+ \string<\glsxtrMathItalicTau
+ \string<\glsxtrMathItalicUpsilon
+ \string<\glsxtrMathItalicPhi
+ \string<\glsxtrMathItalicChi
+ \string<\glsxtrMathItalicPsi
+ \string<\glsxtrMathItalicOmega
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicUpperGreekIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Upper case only (includes upright digamma).
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicUpperGreekIrules}{%
+ \glshex 1D6E2% upper case alpha (maths italic)
+ \string<\glshex 1D6E3% upper case beta (maths italic)
+ \string<\glshex 1D6E4% upper case gamma (maths italic)
+ \string<\glshex 1D6E5% upper case delta (maths italic)
+ \string<\glshex 1D6E6% upper case epsilon (maths italic)
+ \string<\glshex 03DC% upper case digamma
+ \string<\glshex 1D6E7% upper case zeta (maths italic)
+ \string<\glshex 1D6E8% upper case eta (maths italic)
+ \string<\glshex 1D6E9% upper case theta (maths italic)
+ \string=\glshex 1D6F3% upper case theta variant (maths italic)
+ \string<\glshex 1D6EA% upper case iota (maths italic)
+ \string<\glshex 1D6EB% upper case kappa (maths italic)
+ \string<\glshex 1D6EC% upper case lambda (maths italic)
+ \string<\glshex 1D6ED% upper case mu (maths italic)
+ \string<\glshex 1D6EE% upper case nu (maths italic)
+ \string<\glshex 1D6EF% upper case xi (maths italic)
+ \string<\glshex 1D6F0% upper case omicron (maths italic)
+ \string<\glshex 1D6F1% upper case pi (maths italic)
+ \string<\glshex 1D6F2% upper case rho (maths italic)
+ \string<\glshex 1D6F4% upper case sigma (maths italic)
+ \string<\glshex 1D6F5% upper case tau (maths italic)
+ \string<\glshex 1D6F6% upper case upsilon (maths italic)
+ \string<\glshex 1D6F7% upper case phi (maths italic)
+ \string<\glshex 1D6F8% upper case chi (maths italic)
+ \string<\glshex 1D6F9% upper case psi (maths italic)
+ \string<\glshex 1D6FA% upper case omega (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicUpperGreekIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Upper case only (doesn't include upright digamma).
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicUpperGreekIIrules}{%
+ \glshex 1D6E2% upper case alpha (maths italic)
+ \string<\glshex 1D6E3% upper case beta (maths italic)
+ \string<\glshex 1D6E4% upper case gamma (maths italic)
+ \string<\glshex 1D6E5% upper case delta (maths italic)
+ \string<\glshex 1D6E6% upper case epsilon (maths italic)
+ \string<\glshex 1D6E7% upper case zeta (maths italic)
+ \string<\glshex 1D6E8% upper case eta (maths italic)
+ \string<\glshex 1D6E9% upper case theta (maths italic)
+ \string=\glshex 1D6F3% upper case theta variant (maths italic)
+ \string<\glshex 1D6EA% upper case iota (maths italic)
+ \string<\glshex 1D6EB% upper case kappa (maths italic)
+ \string<\glshex 1D6EC% upper case lambda (maths italic)
+ \string<\glshex 1D6ED% upper case mu (maths italic)
+ \string<\glshex 1D6EE% upper case nu (maths italic)
+ \string<\glshex 1D6EF% upper case xi (maths italic)
+ \string<\glshex 1D6F0% upper case omicron (maths italic)
+ \string<\glshex 1D6F1% upper case pi (maths italic)
+ \string<\glshex 1D6F2% upper case rho (maths italic)
+ \string<\glshex 1D6F4% upper case sigma (maths italic)
+ \string<\glshex 1D6F5% upper case tau (maths italic)
+ \string<\glshex 1D6F6% upper case upsilon (maths italic)
+ \string<\glshex 1D6F7% upper case phi (maths italic)
+ \string<\glshex 1D6F8% upper case chi (maths italic)
+ \string<\glshex 1D6F9% upper case psi (maths italic)
+ \string<\glshex 1D6FA% upper case omega (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicLowerGreekIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Lower case only (includes upright digamma).
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicLowerGreekIrules}{%
+ \glshex 1D6FC% lower case alpha (maths italic)
+ \string<\glshex 1D6FD% lower case beta (maths italic)
+ \string<\glshex 1D6FE% lower case gamma (maths italic)
+ \string<\glshex 1D6FF% lower case delta (maths italic)
+ \string<\glshex 1D700% lower case epsilon (maths italic)
+ \string=\glshex 1D716% lower case epsilon variant (maths italic)
+ \string<\glshex 03DD% lower case digamma
+ \string<\glshex 1D701% lower case zeta (maths italic)
+ \string<\glshex 1D702% lower case eta (maths italic)
+ \string<\glshex 1D703% lower case theta (maths italic)
+ \string=\glshex 1D717% lower case theta variant (maths italic)
+ \string<\glshex 1D704% lower case iota (maths italic)
+ \string<\glshex 1D705% lower case kappa (maths italic)
+ \string=\glshex 1D718% lower case kappa variant (maths italic)
+ \string<\glshex 1D706% lower case lambda (maths italic)
+ \string<\glshex 1D707% lower case mu (maths italic)
+ \string<\glshex 1D708% lower case nu (maths italic)
+ \string<\glshex 1D709% lower case xi (maths italic)
+ \string<\glshex 1D70A% lower case omicron (maths italic)
+ \string<\glshex 1D70B% lower case pi (maths italic)
+ \string=\glshex 1D71B% lower case pi variant (maths italic)
+ \string<\glshex 1D70C% lower case rho (maths italic)
+ \string=\glshex 1D71A% lower case rho variant (maths italic)
+ \string<\glshex 1D70D% lower case final sigma (maths italic)
+ \string=\glshex 1D70E% lower case sigma (maths italic)
+ \string<\glshex 1D70F% lower case tau (maths italic)
+ \string<\glshex 1D710% lower case upsilon (maths italic)
+ \string<\glshex 1D711% lower case phi (maths italic)
+ \string=\glshex 1D719% lower case phi variant (maths italic)
+ \string<\glshex 1D712% lower case chi (maths italic)
+ \string<\glshex 1D713% lower case psi (maths italic)
+ \string<\glshex 1D714% lower case omega (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicLowerGreekIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Lower case only (doesn't includes upright digamma).
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicLowerGreekIIrules}{%
+ \glshex 1D6FC% lower case alpha (maths italic)
+ \string<\glshex 1D6FD% lower case beta (maths italic)
+ \string<\glshex 1D6FE% lower case gamma (maths italic)
+ \string<\glshex 1D6FF% lower case delta (maths italic)
+ \string<\glshex 1D700% lower case epsilon (maths italic)
+ \string=\glshex 1D716% lower case epsilon variant (maths italic)
+ \string<\glshex 1D701% lower case zeta (maths italic)
+ \string<\glshex 1D702% lower case eta (maths italic)
+ \string<\glshex 1D703% lower case theta (maths italic)
+ \string=\glshex 1D717% lower case theta variant (maths italic)
+ \string<\glshex 1D704% lower case iota (maths italic)
+ \string<\glshex 1D705% lower case kappa (maths italic)
+ \string=\glshex 1D718% lower case kappa variant (maths italic)
+ \string<\glshex 1D706% lower case lambda (maths italic)
+ \string<\glshex 1D707% lower case mu (maths italic)
+ \string<\glshex 1D708% lower case nu (maths italic)
+ \string<\glshex 1D709% lower case xi (maths italic)
+ \string<\glshex 1D70A% lower case omicron (maths italic)
+ \string<\glshex 1D70B% lower case pi (maths italic)
+ \string=\glshex 1D71B% lower case pi variant (maths italic)
+ \string<\glshex 1D70C% lower case rho (maths italic)
+ \string=\glshex 1D71A% lower case rho variant (maths italic)
+ \string<\glshex 1D70D% lower case final sigma (maths italic)
+ \string=\glshex 1D70E% lower case sigma (maths italic)
+ \string<\glshex 1D70F% lower case tau (maths italic)
+ \string<\glshex 1D710% lower case upsilon (maths italic)
+ \string<\glshex 1D711% lower case phi (maths italic)
+ \string=\glshex 1D719% lower case phi variant (maths italic)
+ \string<\glshex 1D712% lower case chi (maths italic)
+ \string<\glshex 1D713% lower case psi (maths italic)
+ \string<\glshex 1D714% lower case omega (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathGreekIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Includes both upright and italic with digamma between epsilon and
+%zeta.
+% \begin{macrocode}
+\newcommand*{\glsxtrMathGreekIrules}{%
+ \glsxtrMathItalicAlpha
+ \string;\glsxtrUpAlpha
+ \string<\glsxtrMathItalicBeta
+ \string;\glsxtrUpBeta
+ \string<\glsxtrMathItalicGamma
+ \string;\glsxtrUpGamma
+ \string<\glsxtrMathItalicDelta
+ \string;\glsxtrUpDelta
+ \string<\glsxtrMathItalicEpsilon
+ \string;\glsxtrUpEpsilon
+ \string<\glsxtrUpDigamma
+ \string<\glsxtrMathItalicZeta
+ \string;\glsxtrUpZeta
+ \string<\glsxtrMathItalicEta
+ \string;\glsxtrUpEta
+ \string<\glsxtrMathItalicTheta
+ \string;\glsxtrUpTheta
+ \string<\glsxtrMathItalicIota
+ \string;\glsxtrUpIota
+ \string<\glsxtrMathItalicKappa
+ \string;\glsxtrUpKappa
+ \string<\glsxtrMathItalicLambda
+ \string;\glsxtrUpLambda
+ \string<\glsxtrMathItalicMu
+ \string;\glsxtrUpMu
+ \string<\glsxtrMathItalicNu
+ \string;\glsxtrUpNu
+ \string<\glsxtrMathItalicXi
+ \string;\glsxtrUpXi
+ \string<\glsxtrMathItalicOmicron
+ \string;\glsxtrUpOmicron
+ \string<\glsxtrMathItalicPi
+ \string;\glsxtrUpPi
+ \string<\glsxtrMathItalicRho
+ \string;\glsxtrUpRho
+ \string<\glsxtrMathItalicSigma
+ \string;\glsxtrUpSigma
+ \string<\glsxtrMathItalicTau
+ \string;\glsxtrUpTau
+ \string<\glsxtrMathItalicUpsilon
+ \string;\glsxtrUpUpsilon
+ \string<\glsxtrMathItalicPhi
+ \string;\glsxtrUpPhi
+ \string<\glsxtrMathItalicChi
+ \string;\glsxtrUpChi
+ \string<\glsxtrMathItalicPsi
+ \string;\glsxtrUpPsi
+ \string<\glsxtrMathItalicOmega
+ \string;\glsxtrUpOmega
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathGreekIIrules}
+%\changes{1.27}{2018-02-26}{new}
+%Includes both upright and italic (digamma not included).
+% \begin{macrocode}
+\newcommand*{\glsxtrMathGreekIIrules}{%
+ \glsxtrMathItalicAlpha
+ \string;\glsxtrUpAlpha
+ \string<\glsxtrMathItalicBeta
+ \string;\glsxtrUpBeta
+ \string<\glsxtrMathItalicGamma
+ \string;\glsxtrUpGamma
+ \string<\glsxtrMathItalicDelta
+ \string;\glsxtrUpDelta
+ \string<\glsxtrMathItalicEpsilon
+ \string;\glsxtrUpEpsilon
+ \string<\glsxtrMathItalicZeta
+ \string;\glsxtrUpZeta
+ \string<\glsxtrMathItalicEta
+ \string;\glsxtrUpEta
+ \string<\glsxtrMathItalicTheta
+ \string;\glsxtrUpTheta
+ \string<\glsxtrMathItalicIota
+ \string;\glsxtrUpIota
+ \string<\glsxtrMathItalicKappa
+ \string;\glsxtrUpKappa
+ \string<\glsxtrMathItalicLambda
+ \string;\glsxtrUpLambda
+ \string<\glsxtrMathItalicMu
+ \string;\glsxtrUpMu
+ \string<\glsxtrMathItalicNu
+ \string;\glsxtrUpNu
+ \string<\glsxtrMathItalicXi
+ \string;\glsxtrUpXi
+ \string<\glsxtrMathItalicOmicron
+ \string;\glsxtrUpOmicron
+ \string<\glsxtrMathItalicPi
+ \string;\glsxtrUpPi
+ \string<\glsxtrMathItalicRho
+ \string;\glsxtrUpRho
+ \string<\glsxtrMathItalicSigma
+ \string;\glsxtrUpSigma
+ \string<\glsxtrMathItalicTau
+ \string;\glsxtrUpTau
+ \string<\glsxtrMathItalicUpsilon
+ \string;\glsxtrUpUpsilon
+ \string<\glsxtrMathItalicPhi
+ \string;\glsxtrUpPhi
+ \string<\glsxtrMathItalicChi
+ \string;\glsxtrUpChi
+ \string<\glsxtrMathItalicPsi
+ \string;\glsxtrUpPsi
+ \string<\glsxtrMathItalicOmega
+ \string;\glsxtrUpOmega
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpAlpha}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpAlpha}{%
+ \glshex 03B1,% lower case alpha
+ \glshex 0391% upper case alpha
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpBeta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpBeta}{%
+ \glshex 03B2,% lower case beta
+ \glshex 0392% upper case beta
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpGamma}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpGamma}{%
+ \glshex 03B3,% lower case gamma
+ \glshex 0393% upper case gamma
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpDelta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpDelta}{%
+ \glshex 03B4,% lower case delta
+ \glshex 0394% upper case delta
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpEpsilon}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpEpsilon}{%
+ \glshex 03B5% lower case epsilon
+ \string=\glshex 03F5,% lower case epsilon variant
+ \glshex 0395% upper case epsilon
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpDigamma}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpDigamma}{%
+ \glshex 03DD,% lower case digamma
+ \glshex 03DC% upper case digamma
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpZeta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpZeta}{%
+ \glshex 03B6,% lower case zeta
+ \glshex 0396% upper case zeta
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpEta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpEta}{%
+ \glshex 03B7,% lower case eta
+ \glshex 0397% upper case eta
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpTheta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpTheta}{%
+ \glshex 03B8% lower case theta
+ \string=\glshex 03D1,% lower case theta variant
+ \glshex 0398% upper case theta
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpIota}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpIota}{%
+ \glshex 03B9,% lower case iota
+ \glshex 0399% upper case iota
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpKappa}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpKappa}{%
+ \glshex 03BA% lower case kappa
+ \string=\glshex 03F0,% lower case kappa variant
+ \glshex 039A% upper case kappa
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpLambda}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpLambda}{%
+ \glshex 03BB,% lower lambda
+ \glshex 039B% upper case lambda
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpMu}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpMu}{%
+ \glshex 03BC,% lower case mu
+ \glshex 039C% upper case mu
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpNu}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpNu}{%
+ \glshex 03BD,% lower case nu
+ \glshex 039D% upper case nu
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpXi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpXi}{%
+ \glshex 03BE,% lower case xi
+ \glshex 039E% upper case xi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpOmicron}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpOmicron}{%
+ \glshex 03BF,% lower case omicron
+ \glshex 039F% upper case omicron
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpPi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpPi}{%
+ \glshex 03C0% lower case pi
+ \string=\glshex 03D6,% lower case pi variant
+ \glshex 03A0% upper case pi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpRho}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpRho}{%
+ \glshex 03C1% lower case rho
+ \string=\glshex 03F1,% lower case rho variant
+ \glshex 03A1% upper case rho
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpSigma}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpSigma}{%
+ \glshex 03C2% lower case sigma
+ \string=\glshex 03C3,% lower case sigma
+ \glshex 03A3% upper case sigma
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpTau}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpTau}{%
+ \glshex 03C4,% lower case tau
+ \glshex 03A4% upper case tau
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpUpsilon}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpUpsilon}{%
+ \glshex 03C5,% lower case upsilon
+ \glshex 03A5% upper case upsilon
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpPhi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpPhi}{%
+ \glshex 03C6% lower case phi
+ \string=\glshex 03D5,% lower case phi variant
+ \glshex 03A6% upper case phi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpChi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpChi}{%
+ \glshex 03C7,% lower case chi
+ \glshex 03A7% upper case chi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpPsi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpPsi}{%
+ \glshex 03C8,% lower case psi
+ \glshex 03A8% upper case psi
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrUpOmega}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrUpOmega}{%
+ \glshex 03C9,% lower case omega
+ \glshex 03A9% upper case omega
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicAlpha}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicAlpha}{%
+ \glshex 1D6FC,% lower case alpha (maths italic)
+ \glshex 1D6E2% upper case alpha (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicBeta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicBeta}{%
+ \glshex 1D6FD,% lower case beta (maths italic)
+ \glshex 1D6E3% upper case beta (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicGamma}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicGamma}{%
+ \glshex 1D6FE,% lower case gamma (maths italic)
+ \glshex 1D6E4% upper case gamma (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicDelta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicDelta}{%
+ \glshex 1D6FF,% lower case delta (maths italic)
+ \glshex 1D6E5% upper case delta (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicEpsilon}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicEpsilon}{%
+ \glshex 1D700% lower case epsilon (maths italic)
+ \string=\glshex 1D716,% lower case epsilon variant (maths italic)
+ \glshex 1D6E6% upper case epsilon (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicZeta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicZeta}{%
+ \glshex 1D701,% lower case zeta (maths italic)
+ \glshex 1D6E7% upper case zeta (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicEta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicEta}{%
+ \glshex 1D702,% lower case eta (maths italic)
+ \glshex 1D6E8% upper case eta (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicTheta}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicTheta}{%
+ \glshex 1D703% lower case theta (maths italic)
+ \string=\glshex 1D717,% lower case theta variant (maths italic)
+ \glshex 1D6E9% upper case theta (maths italic)
+ \string=\glshex 1D6F3% upper case theta variant (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicIota}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicIota}{%
+ \glshex 1D704,% lower case iota (maths italic)
+ \glshex 1D6EA% upper case iota (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicKappa}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicKappa}{%
+ \glshex 1D705% lower case kappa (maths italic)
+ \string=\glshex 1D718,% lower case kappa variant (maths italic)
+ \glshex 1D6EB% upper case kappa (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicLambda}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicLambda}{%
+ \glshex 1D706,% lower case lambda (maths italic)
+ \glshex 1D6EC% upper case lambda (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicMu}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicMu}{%
+ \glshex 1D707,% lower case mu (maths italic)
+ \glshex 1D6ED% upper case mu (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicNu}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicNu}{%
+ \glshex 1D708,% lower case nu (maths italic)
+ \glshex 1D6EE% upper case nu (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicXi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicXi}{%
+ \glshex 1D709,% lower case xi (maths italic)
+ \glshex 1D6EF% upper case xi (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicOmicron}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicOmicron}{%
+ \glshex 1D70A,% lower case omicron (maths italic)
+ \glshex 1D6F0% upper case omicron (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicPi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicPi}{%
+ \glshex 1D70B% lower case pi (maths italic)
+ \string=\glshex 1D71B,% lower case pi variant (maths italic)
+ \glshex 1D6F1% upper case pi (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicRho}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicRho}{%
+ \glshex 1D70C% lower case rho (maths italic)
+ \string=\glshex 1D71A,% lower case rho variant (maths italic)
+ \glshex 1D6F2% upper case rho (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicSigma}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicSigma}{%
+ \glshex 1D70D% lower case final sigma (maths italic)
+ \string=\glshex 1D70E,% lower case sigma (maths italic)
+ \glshex 1D6F4% upper case sigma (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicTau}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicTau}{%
+ \glshex 1D70F,% lower case tau (maths italic)
+ \glshex 1D6F5% upper case tau (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicUpsilon}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicUpsilon}{%
+ \glshex 1D710,% lower case upsilon (maths italic)
+ \glshex 1D6F6% upper case upsilon (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicPhi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicPhi}{%
+ \glshex 1D711% lower case phi (maths italic)
+ \string=\glshex 1D719,% lower case phi variant (maths italic)
+ \glshex 1D6F7% upper case phi (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicChi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicChi}{%
+ \glshex 1D712,% lower case chi (maths italic)
+ \glshex 1D6F8% upper case chi (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicPsi}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicPsi}{%
+ \glshex 1D713,% lower case psi (maths italic)
+ \glshex 1D6F9% upper case psi (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicOmega}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicOmega}{%
+ \glshex 1D714,% lower case omega (maths italic)
+ \glshex 1D6FA% upper case omega (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicPartial}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicPartial}{%
+ \glshex 1D715% partial differential (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrMathItalicNabla}
+%\changes{1.27}{2018-02-26}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrMathItalicNabla}{%
+ \glshex 1D6FB% nabla (maths italic)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrdigitrules}
+%\changes{1.27}{2018-02-26}{new}
+%Digits from the Basic Latin set and subscript and superscript digit
+%rules.
+% \begin{macrocode}
+\newcommand*{\glsxtrdigitrules}{%
+ 0\string=\glshex 2080\string=\glshex 2070
+ \string<1\string=\glshex 2081\string=\glshex 00B9
+ \string<2\string=\glshex 2082\string=\glshex 00B2
+ \string<3\string=\glshex 2083\string=\glshex 00B3
+ \string<4\string=\glshex 2084\string=\glshex 2074
+ \string<5\string=\glshex 2085\string=\glshex 2075
+ \string<6\string=\glshex 2086\string=\glshex 2076
+ \string<7\string=\glshex 2087\string=\glshex 2077
+ \string<8\string=\glshex 2088\string=\glshex 2078
+ \string<9\string=\glshex 2089\string=\glshex 2079
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrBasicDigitrules}
+%\changes{1.27}{2018-02-26}{new}
+%Digits from the Basic Latin set.
+% \begin{macrocode}
+\newcommand*{\glsxtrBasicDigitrules}{%
+ 0\string<1\string<2\string<3\string<4%
+ \string<5\string<6\string<7\string<8\string<9%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrSubScriptDigitrules}
+%\changes{1.27}{2018-02-26}{new}
+%Subscript digits.
+% \begin{macrocode}
+\newcommand*{\glsxtrSubScriptDigitrules}{%
+ \glshex 2080% subscript 0
+ \string<\glshex 2081% subscript 1
+ \string<\glshex 2082% subscript 2
+ \string<\glshex 2083% subscript 3
+ \string<\glshex 2084% subscript 4
+ \string<\glshex 2085% subscript 5
+ \string<\glshex 2086% subscript 6
+ \string<\glshex 2087% subscript 7
+ \string<\glshex 2088% subscript 8
+ \string<\glshex 2089% subscript 9
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrSuperScriptDigitrules}
+%\changes{1.27}{2018-02-26}{new}
+%Superscript digits.
+% \begin{macrocode}
+\newcommand*{\glsxtrSuperScriptDigitrules}{%
+ \glshex 2070% superscript 0
+ \string<\glshex 00B9% superscript 1
+ \string<\glshex 00B2% superscript 2
+ \string<\glshex 00B3% superscript 3
+ \string<\glshex 2074% superscript 4
+ \string<\glshex 2075% superscript 5
+ \string<\glshex 2076% superscript 6
+ \string<\glshex 2077% superscript 7
+ \string<\glshex 2078% superscript 8
+ \string<\glshex 2079% superscript 9
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrfractionrules}
+%\changes{1.27}{2018-02-26}{new}
+%Vulgar fractions.
+% \begin{macrocode}
+\newcommand*{\glsxtrfractionrules}{%
+ \glshex 215F% fraction numerator one (1/)
+ \string<\glshex 2189% zero thirds (0/3 = 0)
+ \string<\glshex 2152% one tenth (1/10 = 0.1)
+ \string<\glshex 2151% one ninth (1/9 ~ 0.111)
+ \string<\glshex 215B% one eighth (1/8 = 0.125)
+ \string<\glshex 2150% one seventh (1/7 ~ 0.143)
+ \string<\glshex 2159% one sixth (1/6 ~ 0.167)
+ \string<\glshex 2155% one fifth (1/5 = 0.2)
+ \string<\glshex 00BC% one quarter (1/4 = 0.25)
+ \string<\glshex 2153% one third (1/3 ~ 0.333)
+ \string<\glshex 215C% three eighths (3/8 = 0.375)
+ \string<\glshex 2156% two fifths (2/5 = 0.4)
+ \string<\glshex 00BD% one half (1/2 = 0.5)
+ \string<\glshex 2157% three fifths (3/5 = 0.6)
+ \string<\glshex 215D% five eighths (5/8 = 0.625)
+ \string<\glshex 2154% two thirds (2/3 ~ 0.667)
+ \string<\glshex 00BE% three quarters (3/4 = 0.75)
+ \string<\glshex 2158% four fifths (4/5 = 0.8)
+ \string<\glshex 215A% five sixths (5/6 ~ 0.833)
+ \string<\glshex 215E% seven eighths (7/8 = 0.875)
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glsxtrdialecthook}
+%Check for scripts associated with the document dialects.
+%\changes{1.28}{2018-03-06}{save and restore \cs{TrackLangRequireDialectPrefix}}
+% \begin{macrocode}
+\renewcommand{\@glsxtrdialecthook}{%
+ \ifundef\CurrentTrackedScript
+ {%
+ \TrackLangIfHasDefaultScript{\CurrentTrackedLanguage}%
+ {%
+ \edef\CurrentTrackedScript{%
+ \TrackLangGetDefaultScript\CurrentTrackedLanguage}%
+ }%
+ {}%
+ }%
+ {}%
+ \ifdef\CurrentTrackedScript
+ {%
+ \let\gls@orgTrackLangRequireDialectPrefix\TrackLangRequireDialectPrefix
+ \def\TrackLangRequireDialectPrefix{glossariesxtr-}%
+ \let\CurrentTrackedTag\CurrentTrackedScript
+ \IfFileExists{\TrackLangRequireDialectPrefix\CurrentTrackedTag.ldf}
+ {\RequireGlossariesExtraLang{\CurrentTrackedTag}}%
+ {}%
+ \let\TrackLangRequireDialectPrefix\gls@orgTrackLangRequireDialectPrefix
+ }%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%If \cs{glsxtr@loaddialect} has been defined, then
+%\sty{glossaries-extra-bib2gls} has been loaded after
+%\sty{glossaries-extra}. (For example, through
+%\ics{glossariesextrasetup}.) Not recommended, but if this has been
+%done try to find the associated language resources.
+% \begin{macrocode}
+\ifdef\glsxtr@loaddialect
+{%
+ \@ifpackageloaded{tracklang}
+ {%
+ \AnyTrackedLanguages
+ {%
+ \ForEachTrackedDialect{\this@dialect}{\glsxtr@loaddialect}%
+ }%
+ {}%
+ }
+ {}
+}
+{}
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-extra-bib2gls.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossaries-extra-stylemods.sty>
+% \end{macrocode}
+%\fi
+%\chapter{Style Adjustments (\styfmt{glossaries-extra-stylemods.sty})}
+% This package adjusts the predefined styles so that they include the post
+% description hook. Also, some other minor adjustments may be made
+% to make existing styles more flexible.
+%
+%\section{Package Initialisation}
+% First identify package:
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossaries-extra-stylemods}[2019/04/09 v1.41 (NLCT)]
+% \end{macrocode}
+% Provide package options to automatically load required predefined
+% styles. The simplest method is to just test for the existence of
+% the file \texttt{glossary-}\meta{option}\texttt{.sty}. Packages
+% can't be loaded whilst the options are being processed, so save
+% the list in \cs{@glsxtr@loadstyles}.
+%\begin{macro}{\@glsxtr@loadstyles}
+% \begin{macrocode}
+\newcommand*{\@glsxtr@loadstyles}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{option}{all}
+%\changes{1.21}{2017-11-03}{new}
+%\changes{1.38}{2018-12-01}{added \styfmt{glossary-longextra}}
+%\changes{1.40}{2019-03-22}{added \styfmt{glossary-topic}}
+%Provide all known styles.
+% \begin{macrocode}
+\DeclareOption{all}{%
+ \appto\@glsxtr@loadstyles{%
+ \RequirePackage{glossary-inline}%
+ \RequirePackage{glossary-list}%
+ \RequirePackage{glossary-tree}%
+ \RequirePackage{glossary-mcols}%
+ \RequirePackage{glossary-long}%
+ \RequirePackage{glossary-longragged}%
+ \RequirePackage{glossary-longbooktabs}%
+ \RequirePackage{glossary-super}%
+ \RequirePackage{glossary-superragged}%
+ \RequirePackage{glossary-bookindex}%
+ \RequirePackage{glossary-longextra}%
+ \RequirePackage{glossary-topic}%
+ }
+}
+% \end{macrocode}
+%\end{option}
+%
+% \begin{macrocode}
+\DeclareOption*{%
+ \IfFileExists{glossary-\CurrentOption.sty}
+ {\eappto\@glsxtr@loadstyles{%
+ \noexpand\RequirePackage{glossary-\CurrentOption}}%
+ }%
+ {%
+ \PackageError{glossaries-extra-styles}%
+ {Unknown option `\CurrentOption'}{}%
+ }%
+}
+% \end{macrocode}
+% Process the package options:
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% Load the required packages:
+% \begin{macrocode}
+\@glsxtr@loadstyles
+% \end{macrocode}
+% Adjust the styles so that they all have the post description hook.
+% Also, instead of having a hard-coded \cs{space} before the
+% location, use:
+%\begin{macro}{\glsxtrprelocation}
+%\changes{1.21}{2017-11-03}{new}
+%This uses \cs{providecommand} as the same command is also
+%provided by \sty{glossary-bookindex}.
+% \begin{macrocode}
+\providecommand*{\glsxtrprelocation}{\space}
+% \end{macrocode}
+%\end{macro}
+%
+%In case we have an old version of \sty{glossaries}:
+%\begin{macro}{\renewglossarystyle}
+% \begin{macrocode}
+\providecommand{\renewglossarystyle}[2]{%
+ \ifcsundef{@glsstyle@#1}%
+ {%
+ \PackageError{glossaries-extra}{Glossary style `#1' isn't already defined}{}%
+ }%
+ {%
+ \csdef{@glsstyle@#1}{#2}%
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\section{List-Like Styles}
+% The list-like styles mostly already use the post description hook.
+% Only the \glostyle{listdotted} style need modifying to add this.
+% \begin{macrocode}
+\ifdef{\@glsstyle@listdotted}
+{%
+ \renewglossarystyle{listdotted}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}%
+ \glossentrydesc{##1}\glspostdescription}%
+ \renewcommand*{\subglossentry}[3]{%
+ \item[]\makebox[\glslistdottedwidth][l]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\glossentryname{##2}}%
+ \unskip\leaders\hbox to 2.9mm{\hss.}\hfill\strut}%
+ \glossentrydesc{##2}\glspostdescription}%
+ }
+}
+{%
+% \end{macrocode}
+% Assume the style isn't required if it hasn't already been defined.
+% \begin{macrocode}
+}
+% \end{macrocode}
+% The \glostyle{sublistdotted} style doesn't display the description
+% for top-level entries. Sub-level entries use the
+% \glostyle{listdottedstyle}.
+%
+%The other list styles would be easier to adapt if the space
+%before the number list wasn't hard coded.
+%\changes{1.21}{2017-11-03}{modified list to remove hard coded \cs{space}}
+% \begin{macrocode}
+\ifdef{\@glsstyle@list}
+{%
+% \end{macrocode}
+%\begin{macro}{\glslistprelocation}
+%\changes{1.21}{2017-11-03}{new}
+%Space before number list for top-level entries.
+% \begin{macrocode}
+ \newcommand{\glslistprelocation}{\glsxtrprelocation}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslistchildprelocation}
+%\changes{1.21}{2017-11-03}{new}
+%Space before number list for child entries.
+% \begin{macrocode}
+ \newcommand{\glslistchildprelocation}{\glslistprelocation}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslistchildpostlocation}
+%\changes{1.21}{2017-11-03}{new}
+%Full stop after number list.
+% \begin{macrocode}
+ \newcommand{\glslistchildpostlocation}{.}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslistdesc}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+ \newcommand{\glslistdesc}[1]{\glossentrydesc{#1}\glspostdescription}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glslistgroupskip}
+%\changes{1.41}{2019-04-09}{new}
+% \begin{macrocode}
+ \newcommand{\glslistgroupskip}{\nobreak\indexspace\nobreak}
+% \end{macrocode}
+%\end{macro}
+%Redefine \glostyle{list} to use these commands.
+% \begin{macrocode}
+ \renewglossarystyle{list}{%
+ \renewenvironment{theglossary}%
+ {\begin{description}}{\end{description}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]
+ \glslistdesc{##1}\glslistprelocation ##2}%
+ \renewcommand*{\subglossentry}[3]{%
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\space
+ \glslistdesc{##2}%
+ \glslistchildprelocation ##3\glslistchildpostlocation}%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glslistgroupskip\fi}%
+ }
+}
+{}
+% \end{macrocode}
+%Similarly for \glostyle{altlist}. Since it requires \glostyle{list},
+%the new commands should have been defined above.
+% \begin{macrocode}
+\ifdef{\@glsstyle@altlist}
+{%
+ \renewglossarystyle{altlist}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossentry}[2]{%
+ \item[\glsentryitem{##1}%
+ \glstarget{##1}{\glossentryname{##1}}]%
+ \mbox{}\par\nobreak\@afterheading
+ \glslistdesc{##1}\glslistprelocation ##2}%
+ \renewcommand{\subglossentry}[3]{%
+ \par
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glslistdesc{##2}%
+ \glslistchildprelocation ##3}%
+ }
+}
+{}
+% \end{macrocode}
+%Redefine \glostyle{listgroup} so that it discourages a break
+%after group headings.
+%\changes{1.21}{2017-11-03}{redefined \texttt{listgroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@listgroup}
+{%
+ \renewglossarystyle{listgroup}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]%
+ \mbox{}\par\nobreak\@afterheading
+ }%
+ }
+}
+{}
+% \end{macrocode}
+%Similarly for \glostyle{listhypergroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{listhypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@listhypergroup}
+{%
+ \renewglossarystyle{listhypergroup}{%
+ \setglossarystyle{list}%
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]%
+ \mbox{}\par\nobreak\@afterheading
+ }%
+ }
+}
+{}
+% \end{macrocode}
+%Similarly for \glostyle{altlistgroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{altlistgroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@altlistgroup}
+{%
+ \renewglossarystyle{altlistgroup}{%
+ \setglossarystyle{altlist}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt{\glsgetgrouptitle{##1}}]%
+ \mbox{}\par\nobreak\@afterheading
+ }%
+ }
+}
+{}
+% \end{macrocode}
+%Similarly for \glostyle{altlisthypergroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{altlisthypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@altlisthypergroup}
+{%
+ \renewglossarystyle{altlisthypergroup}{%
+ \setglossarystyle{altlist}%
+ \renewcommand*{\glossaryheader}{%
+ \glslistnavigationitem{\glsnavigation}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \item[\glslistgroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsgetgrouptitle{##1}}}]%
+ \mbox{}\par\nobreak\@afterheading
+ }%
+ }
+}
+{}
+% \end{macrocode}
+%
+%\section{Longtable Styles}
+% The three and four column styles require adjustment to add the
+% post-description hook. The two column styles need the hard-coded
+% \cs{space} changed to \cs{glsxtrprelocation}.
+% \begin{macrocode}
+\ifcsdef{@glsstyle@long}
+{%
+ \renewglossarystyle{long}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription
+ \glsxtrprelocation ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription
+ \glsxtrprelocation ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+%Three column style:
+% \begin{macrocode}
+\ifcsdef{@glsstyle@long3col}
+{%
+ \renewglossarystyle{long3col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+%Conditional needs to be outside of \cs{glsgroupskip} otherwise it
+%can cause \qt{Incomplete \cs{iftrue}} errors.
+%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}}
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& &\tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+% Four column style:
+% \begin{macrocode}
+\ifcsdef{@glsstyle@long4col}
+{%
+ \renewglossarystyle{long4col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{llll}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription &
+ \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}}
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+%
+%The styles in \sty{glossary-longbooktabs} are all based on the
+%styles in \sty{glossary-long}, so no adjustments are needed for
+%that package.
+%
+%\section{Long Ragged Styles}
+% The three and four column styles require adjustment for the
+% post-description hook, but not the two column styles. However, the
+% two-column styles need to have \cs{space} replaced with
+% \cs{glsxtrprelocation}.
+% \begin{macrocode}
+\ifcsdef{@glsstyle@longragged}
+{%
+ \renewglossarystyle{longragged}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}%
+ \glspostdescription\glsxtrprelocation ##3%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & \tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+%Three and four column styles don't use \cs{glsxtrprelocation} since the number
+%list is in its own column.
+% \begin{macrocode}
+\ifcsdef{@glsstyle@longragged3col}
+{%
+ \renewglossarystyle{longragged3col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}}
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& &\tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+% Four column style:
+% \begin{macrocode}
+\ifcsdef{@glsstyle@altlongragged4col}
+{%
+ \renewglossarystyle{altlongragged4col}{%
+ \renewenvironment{theglossary}%
+ {\begin{longtable}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription & \glossentrysymbol{##1} &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}}
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+%
+%\section{Supertabular Styles}
+% The three and four column styles require adjustment to add the
+% post-description hook. The two column styles need the hard-coded
+% \cs{space} changed to \cs{glsxtrprelocation}.
+% \begin{macrocode}
+\ifcsdef{@glsstyle@super}
+{%
+ \renewglossarystyle{super}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription
+ \glsxtrprelocation ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription
+ \glsxtrprelocation ##3\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+%Three column style:
+% \begin{macrocode}
+\ifcsdef{@glsstyle@super3col}
+{%
+ \renewglossarystyle{super3col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{lp{\glsdescwidth}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}}
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+% Four column styles:
+% \begin{macrocode}
+\ifcsdef{@glsstyle@super4col}
+{%
+ \renewglossarystyle{super4col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{llll}}{%
+ \end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}}
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+%
+%\section{Super Ragged Styles}
+% The three and four column styles require adjustment for the
+% post-description hook, but not the two column styles. However, the
+% two-column styles need to have \cs{space} replaced with
+% \cs{glsxtrprelocation}.
+% \begin{macrocode}
+\ifcsdef{@glsstyle@superragged}
+{%
+ \renewglossarystyle{superragged}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription\glsxtrprelocation ##2%
+ \tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription
+ \glsxtrprelocation ##3%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& \tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+%Three column style:
+% \begin{macrocode}
+\ifcsdef{@glsstyle@superragged3col}
+{%
+ \renewglossarystyle{superragged3col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription &
+ ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ ##3\tabularnewline
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}}
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{ & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+% Four columns:
+% \begin{macrocode}
+\ifcsdef{@glsstyle@altsuperragged4col}
+{%
+ \renewglossarystyle{altsuperragged4col}{%
+ \renewenvironment{theglossary}%
+ {\tablehead{}\tabletail{}%
+ \begin{supertabular}{l>{\raggedright}p{\glsdescwidth}l%
+ >{\raggedright}p{\glspagelistwidth}}}%
+ {\end{supertabular}}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand{\glossentry}[2]{%
+ \glsentryitem{##1}\glstarget{##1}{\glossentryname{##1}} &
+ \glossentrydesc{##1}\glspostdescription &
+ \glossentrysymbol{##1} & ##2\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ &
+ \glssubentryitem{##2}%
+ \glstarget{##2}{\strut}\glossentrydesc{##2}\glspostdescription &
+ \glossentrysymbol{##2} & ##3\tabularnewline
+ }%
+% \end{macrocode}
+%\changes{1.21}{2017-11-03}{moved conditional outside of \cs{glsgroupskip}}
+% \begin{macrocode}
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{& & &\tabularnewline}%
+ \fi
+ }
+}
+{}
+% \end{macrocode}
+%
+%\section{Inline Style}
+% The \glostyle{inline} style is dealt with slightly differently.
+% The \cs{glspostdescription} hook is actually in
+% \cs{glspostinline}, which is called at the end of the glossary.
+% The original definition of \cs{glspostinline} also includes a
+% space, which is unnecessary. Here, instead of redefining the
+% \glostyle{inline} style, just redefine \cs{glspostinline} and
+% \cs{glsinlinedescformat}.
+% \begin{macrocode}
+\ifdef{\@glsstyle@inline}
+{%
+ \renewcommand*{\glspostinline}{.\spacefactor\sfcode`\.}
+% \end{macrocode}
+% Just use \cs{glsxtrpostdescription} instead of
+% \cs{glspostdescription}.
+% \begin{macrocode}
+ \renewcommand*{\glsinlinedescformat}[3]{%
+ \space#1\glsxtrpostdescription}
+ \renewcommand*{\glsinlinesubdescformat}[3]{%
+ #1\glsxtrpostdescription}
+% \end{macrocode}
+% The default settings don't show the location lists, so there's no
+% adjustment for \cs{glsxtrprelocation}.
+% \begin{macrocode}
+}
+{}
+% \end{macrocode}
+%
+%\section{Tree Styles}
+% Redefine both \cs{glstreenamefmt} and \cs{glstreegroupheaderfmt}
+% in terms of \cs{glstreedefaultnamefmt} to make it easier to change
+% both at the same time or only change one without affecting the
+% other.
+% \begin{macrocode}
+\ifdef\glstreenamefmt
+{
+% \end{macrocode}
+%\begin{macro}{\glstreedefaultnamefmt}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+ \newcommand{\glstreedefaultnamefmt}[1]{\textbf{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreenamefmt}
+%\changes{1.31}{2018-05-09}{added redefinition}
+% \begin{macrocode}
+ \renewcommand{\glstreenamefmt}[1]{\glstreedefaultnamefmt{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreegroupheaderfmt}
+%\changes{1.31}{2018-05-09}{added redefinition}
+%This command was only introduced to \sty{glossary-tree} v4.22, so
+%it may not be defined.
+% \begin{macrocode}
+ \def\glstreegroupheaderfmt#1{\glstreedefaultnamefmt{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreenavigationfmt}
+%\changes{1.31}{2018-05-09}{added redefinition}
+%This command was only introduced to \sty{glossary-tree} v4.22, so
+%it may not be defined.
+% \begin{macrocode}
+ \def\glstreenavigationfmt#1{\glstreedefaultnamefmt{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreePreHeader}
+%\changes{1.41}{2019-04-09}{new}
+%Takes the label as the first argument and title as the second
+%argument so this can be modified to add a bookmark.
+% \begin{macrocode}
+ \newcommand{\glstreePreHeader}[2]{}
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+}
+{}
+% \end{macrocode}
+% The \glostyle{index} style is redefined so that the space before
+% the number list isn't hard coded.
+%\changes{1.21}{2017-11-03}{modified index to remove hard coded \cs{space}}
+% \begin{macrocode}
+\ifdef{\@glsstyle@index}
+{
+% \end{macrocode}
+%\begin{macro}{\glstreeprelocation}
+%\changes{1.21}{2017-11-03}{new}
+%The space before the number list for top-level entries. This is
+%shared by the other tree styles.
+% \begin{macrocode}
+ \newcommand*{\glstreeprelocation}{\glsxtrprelocation}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreechildprelocation}
+%\changes{1.21}{2017-11-03}{new}
+%The space before the number list for child entries. This is
+%shared by the other tree styles.
+% \begin{macrocode}
+ \newcommand*{\glstreechildprelocation}{\glstreeprelocation}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreegroupskip}
+%\changes{1.41}{2019-04-09}{new}
+% \begin{macrocode}
+ \newcommand{\glstreegroupskip}{\nopagebreak\indexspace\nobreak}
+% \end{macrocode}
+%\end{macro}
+%Modify the \glostyle{index} style.
+% \begin{macrocode}
+ \renewglossarystyle{index}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem
+ \let\subitem\glstreesubitem
+ \let\subsubitem\glstreesubsubitem
+ }%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand*{\glossentry}[2]{%
+ \item\glsentryitem{##1}%
+ \glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \glstreesymbol{##1}%
+ \glstreeDescLoc{##1}{##2}%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifcase##1\relax
+ \item
+ \or
+ \subitem
+ \glssubentryitem{##2}%
+ \else
+ \subsubitem
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \glstreechildsymbol{##2}%
+ \glstreeChildDescLoc{##2}{##3}%
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}%
+ }
+}
+{}
+% \end{macrocode}
+%
+% The \glostyle{indexgroup} style is redefined to discourage a page
+% break after the heading.
+%\changes{1.21}{2017-11-03}{redefined \texttt{indexgroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@indexgroup}
+{%
+ \renewglossarystyle{indexgroup}{%
+ \setglossarystyle{index}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}
+{}
+% \end{macrocode}
+%
+%Similarly for \glostyle{indexhypergroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{indexhypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@indexhypergroup}
+{%
+ \renewglossarystyle{indexhypergroup}{%
+ \setglossarystyle{index}%
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupskip\@afterheading}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading}%
+ }%
+}
+{}
+% \end{macrocode}
+%
+%Adjust \glostyle{tree} style to remove hard coded space before
+%number list.
+% \begin{macrocode}
+\ifdef{\@glsstyle@tree}
+{%
+% \end{macrocode}
+%Provide a command for use with the \glostyle{tree} styles that displays
+%the pre-description separator, the
+%description and post-description hook.
+%\begin{macro}{\glstreedesc}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+ \newcommand{\glstreedesc}[1]{%
+ \glstreepredesc\glossentrydesc{#1}\glspostdescription
+ }
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreeDescLoc}
+%\changes{1.41}{2019-04-09}{new}
+%\begin{definition}
+%\cs{glstreeDescLoc}\marg{label}\marg{location}
+%\end{definition}
+%This checks for the description and symbol. If both are missing,
+%don't want a space at the start of the location list. (For example,
+%the entry may just have a cross-reference.)
+% \begin{macrocode}
+ \newcommand{\glstreeDescLoc}[2]{%
+ \ifglshasdesc{#1}%
+ {\glstreedesc{#1}\glstreeprelocation}%
+ {\ifglshassymbol{#1}{\glstreeprelocation}{}}%
+ #2%
+ }
+% \end{macrocode}
+%\end{macro}
+%Similarly for the symbol.
+%\begin{macro}{\glstreesymbol}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+ \newcommand{\glstreesymbol}[1]{%
+ \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}%
+ }%
+% \end{macrocode}
+%\end{macro}
+%And for the child entries:
+%\begin{macro}{\glstreechilddesc}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+ \newcommand{\glstreechilddesc}[1]{%
+ \glstreechildpredesc\glossentrydesc{#1}\glspostdescription
+ }%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreeChildDescLoc}
+%\changes{1.41}{2019-04-09}{new}
+% \begin{macrocode}
+ \newcommand{\glstreeChildDescLoc}[2]{%
+ \ifglshasdesc{#1}%
+ {\glstreechilddesc{#1}\glstreechildprelocation}%
+ {\ifglshassymbol{#1}{\glstreechildprelocation}{}}%
+ #2%
+ }%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreechildsymbol}
+%\changes{1.31}{2018-05-09}{new}
+%This just behaves in the same way as the top-level.
+% \begin{macrocode}
+ \newcommand{\glstreechildsymbol}[1]{%
+ \glstreesymbol{#1}%
+ }%
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+ \renewglossarystyle{tree}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \glstreesymbol{##1}%
+ \glstreeDescLoc{##1}{##2}\par
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}%
+ \glstreechildsymbol{##2}%
+ \glstreeChildDescLoc{##2}{##3}\par
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}%
+ }%
+}
+{}
+% \end{macrocode}
+%
+% The \glostyle{treegroup} style is redefined to discourage a page
+% break after the heading.
+%\changes{1.21}{2017-11-03}{redefined \texttt{treegroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@treegroup}
+{%
+ \renewglossarystyle{treegroup}{%
+ \setglossarystyle{tree}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupskip\@afterheading}%
+ }
+}
+{}
+% \end{macrocode}
+%
+%Similarly for \glostyle{treehypergroup}
+%\changes{1.21}{2017-11-03}{redefined \texttt{treehypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@treehypergroup}
+{%
+ \renewglossarystyle{treehypergroup}{%
+ \setglossarystyle{tree}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupskip\@afterheading}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading}%
+ }
+}
+{}
+% \end{macrocode}
+%
+%Adjust \glostyle{treenoname} style to remove hard coded space before
+%number list.
+% \begin{macrocode}
+\ifdef{\@glsstyle@treenoname}
+{%
+% \end{macrocode}
+%Provide a command for use with the \glostyle{treenoname} styles that displays
+%the pre-description separator, the
+%description and post-description hook.
+%\begin{macro}{\glstreenonamedesc}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+ \newcommand{\glstreenonamedesc}[1]{%
+ \glstreepredesc\glossentrydesc{#1}\glspostdescription
+ }%
+% \end{macrocode}
+%\end{macro}
+%Similarly for the symbol.
+%\begin{macro}{\glstreenonamesymbol}
+%\changes{1.31}{2018-05-09}{new}
+% \begin{macrocode}
+ \newcommand{\glstreenonamesymbol}[1]{%
+ \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}%
+ }%
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstreenonamechilddesc}
+%\changes{1.31}{2018-05-09}{new}
+%The child entry doesn't have the pre-description separator as the
+%name isn't displayed.
+% \begin{macrocode}
+ \newcommand{\glstreenonamechilddesc}[1]{%
+ \glossentrydesc{#1}\glspostdescription
+ }%
+% \end{macrocode}
+%\end{macro}
+% \begin{macrocode}
+ \renewglossarystyle{treenoname}{%
+ \renewenvironment{theglossary}%
+ {\setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}}%
+ {}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsentryitem{##1}\glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ \glstreenonamesymbol{##1}%
+ \glstreenonamedesc{##1}%
+ \glstreeprelocation##2\par
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \hangindent##1\glstreeindent\relax
+ \parindent##1\glstreeindent\relax
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \glstarget{##2}{\strut}%
+ \glstreenonamechilddesc{##2}%
+ \glstreechildprelocation##3\par
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}%
+ }
+}
+{}
+% \end{macrocode}
+%
+% The \glostyle{treenonamegroup} style is redefined to discourage a page
+% break after the heading.
+%\changes{1.21}{2017-11-03}{redefined \texttt{treenonamegroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@treenonamegroup}
+{%
+ \renewglossarystyle{treenonamegroup}{%
+ \setglossarystyle{treenoname}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}
+{}
+% \end{macrocode}
+%
+%Similarly for \glostyle{treenonamehypergroup}
+%\changes{1.21}{2017-11-03}{redefined \texttt{treenonamehypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@treenonamehypergroup}
+{%
+ \renewglossarystyle{treenonamehypergroup}{%
+ \setglossarystyle{treenoname}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupskip\@afterheading}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading}%
+ }
+}
+{}
+% \end{macrocode}
+%
+% The \glostyle{alttree} style is redefined to make it easier to
+% made minor adjustments.
+% \begin{macrocode}
+\ifdef{\@glsstyle@alttree}
+{%
+% \end{macrocode}
+% Only redefine this style if it's already been defined.
+%
+%\begin{macro}{\glsxtralttreeSymbolDescLocation}
+%\changes{1.05}{2016-06-10}{new}
+%\begin{definition}
+%\cs{glsxtralttreeSymbolDescLocation}\marg{label}\marg{location
+%list}
+%\end{definition}
+%Layout the symbol, description and location for top-level entries.
+% \begin{macrocode}
+ \newcommand{\glsxtralttreeSymbolDescLocation}[2]{%
+ {%
+ \let\par\glsxtrAltTreePar
+ \ifglshassymbol{#1}{(\glossentrysymbol{#1})\space}{}%
+% \end{macrocode}
+%\changes{1.41}{2019-04-09}{added check for description}
+% \begin{macrocode}
+ \ifglshasdesc{#1}%
+ {\glossentrydesc{#1}\glspostdescription\glstreeprelocation}{}%
+ #2\par
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrAltTreeIndent}
+%\changes{1.05}{2016-06-10}{new}
+% Paragraph indent for subsequent paragraphs in multi-paragraph
+% descriptions.
+% \begin{macrocode}
+ \newlength\glsxtrAltTreeIndent
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrAltTreePar}
+%\changes{1.05}{2016-06-10}{new}
+%Multi-paragraph descriptions need to keep the hanging indent.
+% \begin{macrocode}
+ \newcommand{\glsxtrAltTreePar}{%
+ \@@par
+ \glsxtrAltTreeSetHangIndent
+ \setlength{\parindent}{\dimexpr\hangindent+\glsxtrAltTreeIndent}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtralttreeSubSymbolDescLocation}
+%\changes{1.05}{2016-06-10}{new}
+%\begin{definition}
+%\cs{glsxtralttreeSubSymbolDescLocation}\marg{level}\marg{label}\marg{location
+%list}
+%\end{definition}
+%Layout the symbol, description and location for sub-entries.
+% Defaults to the same as the top-level.
+% \begin{macrocode}
+ \newcommand{\glsxtralttreeSubSymbolDescLocation}[3]{%
+ \glsxtralttreeSymbolDescLocation{#2}{#3}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrtreetopindent}
+%\changes{1.05}{2016-06-10}{new}
+% The original style has to keep computing the width of the name at
+% each entry. This register allows the style to compute it once for
+% the top-level at the start of the glossary.
+% \begin{macrocode}
+ \newlength\glsxtrtreetopindent
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtralttreeInit}
+%\changes{1.05}{2016-06-10}{new}
+% User-level initialisation for the \glostyle{alttree} style.
+% \begin{macrocode}
+ \newcommand*{\glsxtralttreeInit}{%
+ \settowidth{\glsxtrtreetopindent}{\glstreenamefmt{\glsgetwidestname\space}}%
+ \glsxtrAltTreeIndent=\parindent
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gglssetwidest}
+%\changes{1.21}{2017-11-03}{new}
+% The original \cs{glssetwidest} only uses \cs{def}. This uses
+% \cs{gdef}.
+% \begin{macrocode}
+ \newcommand*{\gglssetwidest}[2][0]{%
+ \csgdef{@glswidestname\romannumeral#1}{#2}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\eglssetwidest}
+%\changes{1.05}{2016-06-10}{new}
+% The original \cs{glssetwidest} only uses \cs{def}. This uses
+% \cs{protected@csedef}.
+% \begin{macrocode}
+ \newcommand*{\eglssetwidest}[2][0]{%
+ \protected@csedef{@glswidestname\romannumeral#1}{#2}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\xglssetwidest}
+%\changes{1.05}{2016-06-10}{new}
+%Like the above but uses \cs{protected@csxdef}.
+% \begin{macrocode}
+ \newcommand*{\xglssetwidest}[2][0]{%
+ \protected@csxdef{@glswidestname\romannumeral#1}{#2}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsupdatewidest}
+%\changes{1.23}{2017-11-12}{new}
+%Only sets if new value is wider than old value.
+% \begin{macrocode}
+ \newcommand*{\glsupdatewidest}[2][0]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\csdef{@glswidestname\romannumeral#1}{#2}}%
+ {%
+ \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}%
+ \settowidth{\dimen@ii}{#2}%
+ \ifdim\dimen@ii>\dimen@
+ \csdef{@glswidestname\romannumeral#1}{#2}%
+ \fi
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\gglsupdatewidest}
+%\changes{1.23}{2017-11-12}{new}
+%As above but global definition.
+% \begin{macrocode}
+ \newcommand*{\gglsupdatewidest}[2][0]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\csgdef{@glswidestname\romannumeral#1}{#2}}%
+ {%
+ \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}%
+ \settowidth{\dimen@ii}{#2}%
+ \ifdim\dimen@ii>\dimen@
+ \csgdef{@glswidestname\romannumeral#1}{#2}%
+ \fi
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\eglsupdatewidest}
+%\changes{1.23}{2017-11-12}{new}
+%As \cs{glsupdatewidest} but expands value.
+% \begin{macrocode}
+ \newcommand*{\eglsupdatewidest}[2][0]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\protected@csedef{@glswidestname\romannumeral#1}{#2}}%
+ {%
+ \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}%
+ \settowidth{\dimen@ii}{#2}%
+ \ifdim\dimen@ii>\dimen@
+ \protected@csedef{@glswidestname\romannumeral#1}{#2}%
+ \fi
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\xglsupdatewidest}
+%\changes{1.23}{2017-11-12}{new}
+%As above but global.
+% \begin{macrocode}
+ \newcommand*{\xglsupdatewidest}[2][0]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\protected@csxdef{@glswidestname\romannumeral#1}{#2}}%
+ {%
+ \settowidth{\dimen@}{\csuse{@glswidestname\romannumeral#1}}%
+ \settowidth{\dimen@ii}{#2}%
+ \ifdim\dimen@ii>\dimen@
+ \protected@csxdef{@glswidestname\romannumeral#1}{#2}%
+ \fi
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgetwidestname}
+%\changes{1.05}{2016-06-10}{new}
+% Provide a user-level macro to obtain the widest top-level name.
+% \begin{macrocode}
+ \newcommand*{\glsgetwidestname}{\@glswidestname}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsgetwidestsubname}
+%\changes{1.05}{2016-06-10}{new}
+% Provide a user-level macro to obtain the widest sub-entry name.
+% \begin{macrocode}
+ \newcommand*{\glsgetwidestsubname}[1]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {\@glswidestname}%
+ {\csuse{@glswidestname\romannumeral#1}}%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestTopLevelName}
+%CamelCase is easier for long command names. Provide a CamelCase
+%synonym of \ics{glsfindwidesttoplevelname}.
+% \begin{macrocode}
+ \let\glsFindWidestTopLevelName\glsfindwidesttoplevelname
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestUsedTopLevelName}
+%\changes{1.05}{2016-06-10}{new}
+% Like \cs{glsfindwidesttoplevelname} but has an additional check
+% that the entry has been used. Only useful if the glossaries occur
+% at the end of the document, in which case this command should go
+% at the start of the glossary. Alternatively, place at the end of
+% the document and save for the next run.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestUsedTopLevelName}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestUsedAnyName}
+%\changes{1.05}{2016-06-10}{new}
+% Like the above but doesn't check the parent key. Useful if all
+% levels should have the same width for the name.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestUsedAnyName}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ {}%
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestAnyName}
+%\changes{1.05}{2016-06-10}{new}
+% Like the above but doesn't check is the entry has been used.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestAnyName}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestUsedLevelTwo}
+%\changes{1.05}{2016-06-10}{new}
+% This is like \cs{glsFindWidestUsedTopLevelName} but also sets the
+% first two sub-levels as well. Any entry that has a
+% great-grandparent is ignored.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestUsedLevelTwo}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \dimen@i=0pt\relax
+ \dimen@ii=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {%
+ \edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@label}@parent}}%
+ \ifglshasparent{\@glo@parent}%
+ {%
+ \edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@parent}@parent}}%
+ \ifglshasparent{\@glo@parent}%
+ {}%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@ii
+ \dimen@ii=\gls@tmplen
+ \eglssetwidest[2]{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@i
+ \dimen@i=\gls@tmplen
+ \eglssetwidest[1]{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@
+ \dimen@=\gls@tmplen
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {}%
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestLevelTwo}
+%\changes{1.05}{2016-06-10}{new}
+% This is like \cs{glsFindWidestUsedLevelTwo} but doesn't check if the
+% entry has been used.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestLevelTwo}[1][\@glo@types]{%
+ \dimen@=0pt\relax
+ \dimen@i=0pt\relax
+ \dimen@ii=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglshasparent{\@glo@label}%
+ {%
+ \edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@label}@parent}}%
+ \ifglshasparent{\@glo@parent}%
+ {%
+ \edef\@glo@parent{\csuse{glo@\glsdetoklabel{\@glo@parent}@parent}}%
+ \ifglshasparent{\@glo@parent}%
+ {}%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@ii
+ \dimen@ii=\gls@tmplen
+ \eglssetwidest[2]{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@i
+ \dimen@i=\gls@tmplen
+ \eglssetwidest[1]{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ {%
+ \settowidth{\gls@tmplen}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\gls@tmplen>\dimen@
+ \dimen@=\gls@tmplen
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ }%
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestUsedAnyNameSymbol}
+%\changes{1.05}{2016-06-10}{new}
+% Like the \cs{glsFindWidestUsedAnyName} but also measures the
+% symbol. The length of the widest symbol is stored in the second argument
+% should be a length register.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestUsedAnyNameSymbol}[2][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\glsentrysymbol{\@glo@label}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ }%
+ {}%
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestAnyNameSymbol}
+%\changes{1.05}{2016-06-10}{new}
+% Like the above but doesn't check if the entry has been used.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestAnyNameSymbol}[2][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\glsentrysymbol{\@glo@label}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestUsedAnyNameSymbolLocation}
+%\changes{1.05}{2016-06-10}{new}
+% Like the \cs{glsFindWidestUsedAnyNameSymbol} but also measures the
+% location list. This requires \ics{glsentrynumberlist}.
+% The length of the widest symbol is stored in the second argument
+% should be a length register. The length of the widest location
+% list is stored in the third argument, which should also be a
+% length register.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestUsedAnyNameSymbolLocation}[3][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ #3=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\glsentrysymbol{\@glo@label}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ \settowidth{\dimen@}%
+ {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}%
+ \ifdim\dimen@>#3\relax
+ #3=\dimen@
+ \fi
+ }%
+ {}%
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestAnyNameSymbolLocation}
+%\changes{1.05}{2016-06-10}{new}
+% Like the \cs{glsFindWidestUsedAnyNameSymbol} but doesn't check if
+% the entry has been used.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestAnyNameSymbolLocation}[3][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ #3=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\glsentrysymbol{\@glo@label}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ \settowidth{\dimen@}%
+ {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}%
+ \ifdim\dimen@>#3\relax
+ #3=\dimen@
+ \fi
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestUsedAnyNameLocation}
+%\changes{1.05}{2016-06-10}{new}
+% Like the \cs{glsFindWidestUsedAnyNameSymbolLocation} but doesn't
+% measure the symbol. The length of the widest location
+% list is stored in the second argument, which should be a
+% length register.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestUsedAnyNameLocation}[2][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \ifglsused{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ }%
+ {}%
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsFindWidestAnyNameLocation}
+%\changes{1.05}{2016-06-10}{new}
+% Like the \cs{glsFindWidestAnyNameLocation} but doesn't
+% check the \gls{firstuse} flag.
+% \begin{macrocode}
+ \newrobustcmd*{\glsFindWidestAnyNameLocation}[2][\@glo@types]{%
+ \dimen@=0pt\relax
+ \gls@tmplen=0pt\relax
+ #2=0pt\relax
+ \forallglossaries[#1]{\@gls@type}%
+ {%
+ \forglsentries[\@gls@type]{\@glo@label}%
+ {%
+ \settowidth{\dimen@}%
+ {\glstreenamefmt{\glsentryname{\@glo@label}}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \eglssetwidest{\glsentryname{\@glo@label}}%
+ \fi
+ \settowidth{\dimen@}%
+ {\GlsXtrFormatLocationList{\glsentrynumberlist{\@glo@label}}}%
+ \ifdim\dimen@>#2\relax
+ #2=\dimen@
+ \fi
+ }%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrComputeTreeIndent}
+%\changes{1.05}{2016-06-10}{new}
+% Compute the value of \cs{glstreeindent}. Argument is the entry label.
+% (Ignored in default definition, but this command may be redefined
+% to take the particular entry into account.) Note that the
+% sub-levels modify \cs{glstreeindent}.
+% \begin{macrocode}
+ \newcommand*{\glsxtrComputeTreeIndent}[1]{%
+ \glstreeindent=\glsxtrtreetopindent\relax
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrComputeTreeSubIndent}
+%\changes{1.05}{2016-06-10}{new}
+%\begin{definition}
+%\cs{glsxtrComputeTreeSubIndent}\marg{level}\marg{label}\marg{register}
+%\end{definition}
+% Compute the indent for the sub-entries. The first argument is the
+% level, the second argument is the entry label and the third
+% argument is the length register used to store the computed indent.
+% \begin{macrocode}
+ \newcommand*{\glsxtrComputeTreeSubIndent}[3]{%
+ \ifcsundef{@glswidestname\romannumeral#1}%
+ {%
+ \settowidth{#3}{\glstreenamefmt{\@glswidestname\space}}%
+ }%
+ {%
+ \settowidth{#3}{\glstreenamefmt{%
+ \csname @glswidestname\romannumeral#1\endcsname\space}}%
+ }%
+ }
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrAltTreeSetHangIndent}
+%\changes{1.05}{2016-06-10}{new}
+% Set \cs{hangindent} for top-level entries:
+% \begin{macrocode}
+ \newcommand*{\glsxtrAltTreeSetHangIndent}{\hangindent\glstreeindent}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrAltTreeSetSubHangIndent}
+%\changes{1.05}{2016-06-10}{new}
+% Set \cs{hangindent} for sub-entries:
+% \begin{macrocode}
+ \newcommand*{\glsxtrAltTreeSetSubHangIndent}[1]{\hangindent\glstreeindent}
+% \end{macrocode}
+%\end{macro}
+%
+% Redefine \glostyle{alttree}:
+% \begin{macrocode}
+ \renewglossarystyle{alttree}{%
+ \renewenvironment{theglossary}%
+ {%
+ \glsxtralttreeInit
+ \def\@gls@prevlevel{-1}%
+ \mbox{}\par}%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{}%
+ \renewcommand{\glossentry}[2]{%
+ \ifnum\@gls@prevlevel=0\relax
+ \else
+ \glsxtrComputeTreeIndent{##1}%
+ \fi
+ \parindent\glstreeindent
+ \glsxtrAltTreeSetHangIndent
+ \makebox[0pt][r]%
+ {%
+ \glstreenamebox{\glstreeindent}%
+ {%
+ \glsentryitem{##1}%
+ \glstreenamefmt{\glstarget{##1}{\glossentryname{##1}}}%
+ }%
+ }%
+ \glsxtralttreeSymbolDescLocation{##1}{##2}%
+ \def\@gls@prevlevel{0}%
+ }
+ \renewcommand{\subglossentry}[3]{%
+ \ifnum##1=1\relax
+ \glssubentryitem{##2}%
+ \fi
+ \ifnum\@gls@prevlevel=##1\relax
+ \else
+ \glsxtrComputeTreeSubIndent{##1}{##2}{\gls@tmplen}%
+ \ifnum\@gls@prevlevel<##1\relax
+ \setlength\glstreeindent\gls@tmplen
+ \addtolength\glstreeindent\parindent
+ \parindent\glstreeindent
+ \else
+ \ifnum\@gls@prevlevel=0\relax
+ \glsxtrComputeTreeIndent{##2}%
+ \else
+ \glsxtrComputeTreeSubIndent{\@gls@prevlevel}{##2}{\glstreeindent}%
+ \fi
+ \addtolength\parindent{-\glstreeindent}%
+ \setlength\glstreeindent\parindent
+ \fi
+ \fi
+ \glsxtrAltTreeSetSubHangIndent{##1}%
+ \makebox[0pt][r]{\glstreenamebox{\gls@tmplen}{%
+ \glstreenamefmt{\glstarget{##2}{\glossentryname{##2}}}}}%
+ \glsxtralttreeSubSymbolDescLocation{##1}{##2}{##3}%
+ \def\@gls@prevlevel{##1}%
+ }%
+ \renewcommand*{\glsgroupskip}{\ifglsnogroupskip\else\glstreegroupskip\fi}%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Redefine \glostyle{alttreegroup} so that it discourages a break
+%after group headings.
+%\changes{1.21}{2017-11-03}{redefined \texttt{alttreegroup} to discourage
+%breaks after group headings}
+%Can't use \cs{@afterheading} here as it messes with the first item
+%of the group.
+% \begin{macrocode}
+\ifdef{\@glsstyle@alttreegroup}
+{%
+ \renewglossarystyle{alttreegroup}{%
+ \setglossarystyle{alttree}%
+ \renewcommand{\glsgroupheading}[1]{\par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupskip
+ }%
+ }%
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{alttreehypergroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{alttreehypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@alttreehypergroup}
+{%
+ \renewglossarystyle{alttreehypergroup}{%
+ \setglossarystyle{alttree}%
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%
+%\section{Multicolumn Styles}
+%Adjust \glostyle{mcolindexgroup} to discourage page breaks after
+%the group headings.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcolindexgroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcolindexgroup}
+{%
+ \renewglossarystyle{mcolindexgroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcolindexhypergroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcolindexhypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcolindexhypergroup}
+{%
+ \renewglossarystyle{mcolindexhypergroup}{%
+ \setglossarystyle{mcolindex}%
+ \renewcommand*{\glossaryheader}{%
+ \item\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcolindexspannav}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcolindexspannav} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcolindexspannav}
+{%
+ \renewglossarystyle{mcolindexspannav}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}[\noindent\glstreenavigationfmt{\glsnavigation}]%
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\item\glstreeitem}%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \item\glstreegroupheaderfmt
+ {\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcoltreegroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreegroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcoltreegroup}
+{%
+ \renewglossarystyle{mcoltreegroup}{%
+ \setglossarystyle{mcoltree}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcoltreehypergroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreehypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcoltreehypergroup}
+{%
+ \renewglossarystyle{mcoltreehypergroup}{%
+ \setglossarystyle{mcoltree}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcoltreespannav}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreespannav} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcoltreespannav}
+{%
+ \renewglossarystyle{mcoltreespannav}{%
+ \setglossarystyle{tree}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}%
+ [\noindent\glstreenavigationfmt{\glsnavigation}]%
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcoltreenonamegroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreenonamegroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcoltreenonamegroup}
+{%
+ \renewglossarystyle{mcoltreenonamegroup}{%
+ \setglossarystyle{mcoltreenoname}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent\glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupskip\@afterheading
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcoltreenonamehypergroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreenonamehypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcoltreenonamehypergroup}
+{%
+ \renewglossarystyle{mcoltreenonamehypergroup}{%
+ \setglossarystyle{mcoltreenoname}%
+ \renewcommand*{\glossaryheader}{%
+ \par\noindent\glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading}%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcoltreenonamespannav}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcoltreenonamespannav} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcoltreenonamespannav}
+{%
+ \renewglossarystyle{mcoltreenonamespannav}{%
+ \setglossarystyle{treenoname}%
+ \renewenvironment{theglossary}%
+ {%
+ \begin{multicols}{\glsmcols}%
+ [\noindent\glstreenavigationfmt{\glsnavigation}]%
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ }%
+ {\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par\noindent
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip\@afterheading}%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%\glostyle{mcolalttree} needs adjusting so that it uses \cs{glsxtralttreeInit}
+%This doesn't use \verb|\mbox{}\par| which would unbalance the top
+%of the columns.
+%\changes{1.21}{2017-11-03}{adjusted mcolalttree}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcolalttree}
+{%
+ \renewglossarystyle{mcolalttree}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \glsxtralttreeInit
+ \def\@gls@prevlevel{-1}%
+ \begin{multicols}{\glsmcols}%
+ }%
+ {\par\end{multicols}}%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Redefine \glostyle{mcolalttreegroup} to discourage page breaks
+%after the group headings.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcolalttreegroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcolalttreegroup}
+{%
+ \renewglossarystyle{mcolalttreegroup}{%
+ \setglossarystyle{mcolalttree}%
+ \renewcommand{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsxtr@grptitle}%
+ \glstreegroupskip
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcolalttreehypergroup}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcolalttreehypergroup} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcolalttreehypergroup}
+{%
+ \renewglossarystyle{mcolalttreehypergroup}{%
+ \setglossarystyle{mcolalttree}%
+ \renewcommand*{\glossaryheader}{%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreenavigationfmt{\glsnavigation}%
+ \glstreegroupskip
+ }%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%Similarly for \glostyle{mcolalttreespannav}.
+%\changes{1.21}{2017-11-03}{redefined \texttt{mcolalttreespannav} to discourage
+%breaks after group headings}
+% \begin{macrocode}
+\ifdef{\@glsstyle@mcolalttreespannav}
+{%
+ \renewglossarystyle{mcolalttreespannav}{%
+ \setglossarystyle{alttree}%
+ \renewenvironment{theglossary}%
+ {%
+ \glsxtralttreeInit
+ \def\@gls@prevlevel{-1}%
+ \begin{multicols}{\glsmcols}%
+ [\noindent\glstreenavigationfmt{\glsnavigation}]%
+ }%
+ {\par\end{multicols}}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \glsxtrgetgrouptitle{##1}{\glsxtr@grptitle}%
+ \glstreePreHeader{##1}{\glsxtr@grptitle}%
+ \par
+ \def\@gls@prevlevel{-1}%
+ \hangindent0pt\relax
+ \parindent0pt\relax
+ \glstreegroupheaderfmt{\glsnavhypertarget{##1}{\glsxtr@grptitle}}%
+ \glstreegroupskip
+ }%
+ }
+}%
+{%
+}
+% \end{macrocode}
+%
+% Reset the default style
+% \begin{macrocode}
+\ifx\@glossary@default@style\relax
+\else
+ \setglossarystyle{\@glsxtr@current@style}
+\fi
+% \end{macrocode}
+%\iffalse
+% \begin{macrocode}
+%</glossaries-extra-stylemods.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-bookindex.sty>
+% \end{macrocode}
+%\fi
+%\chapter{bookindex style (\styfmt{glossary-bookindex.sty})}
+%\changes{1.21}{2017-11-03}{new}
+%\section{Package Initialisation and Options}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossary-bookindex}[2019/04/09 v1.41 (NLCT)]
+% \end{macrocode}
+%Load required packages.
+% \begin{macrocode}
+\RequirePackage{multicol}
+\RequirePackage{glossary-tree}
+% \end{macrocode}
+%\begin{macro}{\glsxtrbookindexcols}
+%\changes{1.21}{2017-11-03}{new}
+% Number of columns.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexcols}{2}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexname}
+%\changes{1.21}{2017-11-03}{new}
+%Format used for top-level entries.
+% (Argument is the label.)
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexname}[1]{\glossentryname{#1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexsubname}
+%\changes{1.21}{2017-11-03}{new}
+%Format used for sub entries.
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexsubname}[1]{\glsxtrbookindexname{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrprelocation}
+%\changes{1.21}{2017-11-03}{new}
+%Provide in case \sty{glossaries-stylemods} isn't loaded.
+% \begin{macrocode}
+\providecommand*{\glsxtrprelocation}{\space}
+% \end{macrocode}
+%\end{macro}
+
+%\begin{macro}{\glsxtrbookindexprelocation}
+%\changes{1.21}{2017-11-03}{new}
+%Separator used before location list for top-level entries.
+%Version 1.22 has removed the \cs{ifglsnopostdot} check
+%since this style doesn't display the description.
+%\changes{1.22}{2017-11-08}{removed check for no post dot}
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexprelocation}[1]{%
+ \glsxtrifhasfield{location}{#1}%
+ {,\glsxtrprelocation}%
+ {\glsxtrprelocation}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexsubprelocation}
+%\changes{1.21}{2017-11-03}{new}
+%Separator used before location list for sub-entries.
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexsubprelocation}[1]{%
+ \glsxtrbookindexprelocation{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexlocation}
+%\changes{1.39}{2019-03-22}{new}
+%\begin{definition}
+%\cs{glsxtrbookindexlocation}\marg{label}\marg{location}
+%\end{definition}
+%Displays the location.
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexlocation}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexsublocation}
+%\changes{1.39}{2019-03-22}{new}
+%\begin{definition}
+%\cs{glsxtrbookindexlocation}\marg{label}\marg{location}
+%\end{definition}
+%Displays the location for sub-entries.
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexsublocation}{\glsxtrbookindexlocation}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexparentchildsep}
+%\changes{1.21}{2017-11-03}{new}
+%Separator used between top-level parent and child entry.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexparentchildsep}{\nopagebreak}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexparentsubchildsep}
+%\changes{1.21}{2017-11-03}{new}
+%Separator used between sub-level parent and child entry.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexparentsubchildsep}{\glsxtrbookindexparentchildsep}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexbetween}
+%\changes{1.21}{2017-11-03}{new}
+%Between two top-level entries identified by the labels in the
+%arguments.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexbetween}[2]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexsubbetween}
+%\changes{1.21}{2017-11-03}{new}
+%Between two level~1 entries identified by the labels in the
+%arguments.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexsubbetween}[2]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexsubsubbetween}
+%\changes{1.21}{2017-11-03}{new}
+%Between two level~2 entries identified by the labels in the
+%arguments.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexsubsubbetween}[2]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexatendgroup}
+%\changes{1.21}{2017-11-03}{new}
+%At the end of a letter group. The argument is the index of the last
+%top-level entry.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexatendgroup}[1]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexsubatendgroup}
+%\changes{1.21}{2017-11-03}{new}
+%At the end of a letter group. The argument is the index of the last
+%level~1 entry.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexsubatendgroup}[1]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexsubsubatendgroup}
+%\changes{1.21}{2017-11-03}{new}
+%At the end of a letter group. The argument is the index of the last
+%level~2 entry.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexsubsubatendgroup}[1]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexgroupskip}
+%\changes{1.21}{2017-11-03}{new}
+%Group separator.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexgroupskip}{\ifglsnogroupskip\else\indexspace\fi}
+% \end{macrocode}
+%\end{macro}
+%
+%Format group title.
+%\begin{macro}{\glsxtrbookindexformatheader}
+%\changes{1.21}{2017-11-03}{new}
+%Group separator.
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexformatheader}[1]{%
+ \par{\centering\glstreegroupheaderfmt{#1}\par}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexbookmark}
+%\changes{1.21}{2017-11-03}{new}
+%Book mark group heading if supported.
+% \begin{macrocode}
+\ifdef\pdfbookmark
+{%
+ \newcommand*{\glsxtrbookindexbookmark}[2]{%
+ \ifdefstring{\@@glossarysec}{chapter}%
+ {\pdfbookmark[1]{#1}{#2}}%
+ {\pdfbookmark[2]{#1}{#2}}%
+ }
+}
+{%
+ \newcommand*{\glsxtrbookindexbookmark}[2]{}
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexcolspread}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexcolspread}{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexmulticolsenv}
+%\changes{1.25}{2017-11-14}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexmulticolsenv}{multicols}
+% \end{macrocode}
+%\end{macro}
+%
+%Define the style.
+% \begin{macrocode}
+\newglossarystyle{bookindex}{%
+ \setglossarystyle{index}%
+ \renewenvironment{theglossary}%
+ {%
+ \ifnum\glsxtrbookindexcols>1\relax
+ \ifdefempty\glsxtrbookindexcolspread
+ {%
+ \edef\glsxtr@beginbookindex{%
+ \noexpand\begin{\glsxtrbookindexmulticolsenv}
+ {\glsxtrbookindexcols}%
+ }%
+ }%
+ {%
+ \edef\glsxtr@beginbookindex{%
+ \noexpand\begin{\glsxtrbookindexmulticolsenv}%
+ {\glsxtrbookindexcols}[\glsxtrbookindexcolspread]%
+ }%
+ }%
+ \else
+ \def\glsxtr@beginbookindex{}%
+ \fi
+ \glsxtr@beginbookindex
+ \setlength{\parindent}{0pt}%
+ \setlength{\parskip}{0pt plus 0.3pt}%
+ \let\@glsxtr@bookindex@sep\glsxtrbookindexparentchildsep
+ \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep
+ \let\@glsxtr@bookindex@between\@gobble
+ \let\@glsxtr@bookindex@subbetween\@gobble
+ \let\@glsxtr@bookindex@subsubbetween\@gobble
+ \let\@glsxtr@bookindex@atendgroup\relax
+ \let\@glsxtr@bookindex@subatendgroup\relax
+ \let\@glsxtr@bookindex@subsubatendgroup\relax
+ \let\@glsxtr@bookindexgroupskip\relax
+ }%
+ {%
+% \end{macrocode}
+% Do end group hooks.
+% \begin{macrocode}
+ \@glsxtr@bookindex@subsubatendgroup
+ \@glsxtr@bookindex@subatendgroup
+ \@glsxtr@bookindex@atendgroup
+% \end{macrocode}
+%End \env{multicols} environment.
+% \begin{macrocode}
+ \ifnum\glsxtrbookindexcols>1\relax
+ \edef\glsxtr@endbookindex{%
+ \noexpand\end{\glsxtrbookindexmulticolsenv}%
+ }%
+ \else
+ \def\glsxtr@endbookindex{}%
+ \fi
+ \glsxtr@endbookindex
+ }%
+% \end{macrocode}
+%Use ragged right as columns are likely to be narrow and
+%indexes tend not to be fully justified.
+% \begin{macrocode}
+ \renewcommand*{\glossaryheader}{\raggedright}%
+% \end{macrocode}
+%Top level entry format.
+% \begin{macrocode}
+ \renewcommand*{\glossentry}[2]{%
+% \end{macrocode}
+%Do separator.
+% \begin{macrocode}
+ \@glsxtr@bookindex@between{##1}%
+% \end{macrocode}
+%Update separators.
+% \begin{macrocode}
+ \let\@glsxtr@bookindex@sep\glsxtrbookindexparentchildsep
+ \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep
+ \let\@glsxtr@bookindex@subbetween\@gobble
+ \let\@glsxtr@bookindex@subsubbetween\@gobble
+ \edef\@glsxtr@bookindex@between{%
+ \noexpand\glsxtrbookindexbetween{##1}%
+ }%
+ \edef\@glsxtr@bookindex@atendgroup{%
+ \noexpand\glsxtrbookindexatendgroup{##1}%
+ }%
+ \let\@glsxtr@bookindex@subatendgroup\relax
+ \let\@glsxtr@bookindex@subsubatendgroup\relax
+% \end{macrocode}
+%Format entry.
+% \begin{macrocode}
+ \glstreeitem
+ \glsentryitem{##1}%
+ \glstarget{##1}{\glsxtrbookindexname{##1}}%
+ \glsxtrbookindexprelocation{##1}%
+ \glsxtrbookindexlocation{##1}{##2}%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifcase##1\relax
+% \end{macrocode}
+% Level 0 (shouldn't happen as that's formatted with \cs{glossentry}).
+% \begin{macrocode}
+ \glstreeitem
+ \or
+% \end{macrocode}
+% Level 1.
+% \begin{macrocode}
+ \@glsxtr@bookindex@sep
+ \@glsxtr@bookindex@subbetween{##2}%
+ \let\@glsxtr@bookindex@sep\relax
+% \end{macrocode}
+% Update separators.
+% \begin{macrocode}
+ \let\@glsxtr@bookindex@subsubbetween\@gobble
+ \let\@glsxtr@bookindex@subsep\glsxtrbookindexparentsubchildsep
+ \edef\@glsxtr@bookindex@subbetween{%
+ \noexpand\glsxtrbookindexsubbetween{##2}%
+ }%
+ \edef\@glsxtr@bookindex@atsubendgroup{%
+ \noexpand\glsxtrbookindexatsubendgroup{##1}%
+ }%
+% \end{macrocode}
+% Start sub-item.
+% \begin{macrocode}
+ \glstreesubitem
+ \glssubentryitem{##2}%
+ \else
+% \end{macrocode}
+% All other levels.
+% \begin{macrocode}
+ \@glsxtr@bookindex@subsep
+ \@glsxtr@bookindex@subsubbetween{##2}%
+% \end{macrocode}
+% Update separators.
+% \begin{macrocode}
+ \let\@glsxtr@bookindex@subsep\relax
+ \edef\@glsxtr@bookindex@subsubbetween{%
+ \noexpand\glsxtrbookindexsubsubbetween{##2}%
+ }%
+ \edef\@glsxtr@bookindex@atsubsubendgroup{%
+ \noexpand\glsxtrbookindexatsubsubendgroup{##1}%
+ }%
+% \end{macrocode}
+% Start sub-sub-item.
+% \begin{macrocode}
+ \glstreesubsubitem
+ \fi
+% \end{macrocode}
+% Format entry.
+% \begin{macrocode}
+ \glstarget{##2}{\glsxtrbookindexsubname{##2}}%
+ \glsxtrbookindexsubprelocation{##2}%
+ \glsxtrbookindexsublocation{##2}{##3}%
+ }%
+% \end{macrocode}
+% The group skip is moved to the group heading to avoid interfering
+% with the end letter group hooks.
+% \begin{macrocode}
+ \renewcommand*{\glsgroupskip}{}%
+% \end{macrocode}
+% Group heading format.
+% \begin{macrocode}
+ \renewcommand*{\glsgroupheading}[1]{%
+% \end{macrocode}
+% Do end group hooks.
+% \begin{macrocode}
+ \@glsxtr@bookindex@subsubatendgroup
+ \@glsxtr@bookindex@subatendgroup
+ \@glsxtr@bookindex@atendgroup
+ \@glsxtr@bookindexgroupskip
+% \end{macrocode}
+% Update separators.
+% \begin{macrocode}
+ \let\@glsxtr@bookindexgroupskip\glsxtrbookindexgroupskip
+ \let\@glsxtr@bookindex@between\@gobble
+ \let\@glsxtr@bookindex@atendgroup\relax
+ \let\@glsxtr@bookindex@subatendgroup\relax
+ \let\@glsxtr@bookindex@subsubatendgroup\relax
+% \end{macrocode}
+% Fetch the group title from the label supplied in \verb|#1|.
+%\changes{1.41}{2019-04-09}{changed \cs{thisgrptitle} to
+%\cs{glsxtrcurrentgrptitle}}%
+% \begin{macrocode}
+ \glsxtrgetgrouptitle{##1}{\glsxtrcurrentgrptitle}%
+% \end{macrocode}
+% Do the PDF bookmark if supported.
+% \begin{macrocode}
+ \glsxtrbookindexbookmark{\glsxtrcurrentgrptitle}{index.##1}%
+% \end{macrocode}
+% Format the group title.
+% \begin{macrocode}
+ \glsxtrbookindexformatheader{\glsxtrcurrentgrptitle}%
+ \nopagebreak\indexspace\nopagebreak\@afterheading
+ }%
+}
+% \end{macrocode}
+% Some supplementary commands that may be useful.
+% These store the entry label for the current page. Since the page
+% number is needed in the control sequence, this uses
+% \cs{glsxtrbookindexthepage} instead of \cs{thepage} in case
+% the page numbering has been set to something that contains
+% formatting commands.
+%\begin{macro}{\glsxtrbookindexthepage}
+%\changes{1.21}{2017-11-03}{new}
+%The \cs{@printglossary} sets \cs{currentglossary} to the current
+%glossary label. This is used as a prefix in case the page number is
+%reset.
+% \begin{macrocode}
+\newcommand{\glsxtrbookindexthepage}{%
+ \ifdef\currentglossary{\currentglossary.\arabic{page}}{\arabic{page}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexmarkentry}
+%\changes{1.21}{2017-11-03}{new}
+%Writes entry information to the \texttt{.aux} file. The argument is
+%the entry label.
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexmarkentry}[1]{%
+ \protected@write\@auxout
+ {\let\glsxtrbookindexthepage\relax}%
+ {\string\glsxtr@setbookindexmark{\glsxtrbookindexthepage}{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtr@setbookindexmark}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtr@setbookindexmark}[2]{%
+ \ifcsundef{glsxtr@idxfirstmark@#1}%
+ {\csgdef{glsxtr@idxfirstmark@#1}{#2}}%
+ {}%
+ \csgdef{glsxtr@idxlastmark@#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexfirstmarkfmt}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexfirstmarkfmt}[1]{%
+ \glsentryname{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexfirstmark}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexfirstmark}{%
+ \letcs{\glsxtr@label}{glsxtr@idxfirstmark@\glsxtrbookindexthepage}%
+ \ifdef\glsxtr@label
+ {\glsxtrbookindexfirstmarkfmt{\glsxtr@label}}%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glsxtrbookindexlastmarkfmt}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexlastmarkfmt}[1]{%
+ \glsentryname{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glsxtrbookindexlastmark}
+%\changes{1.21}{2017-11-03}{new}
+% \begin{macrocode}
+\newcommand*{\glsxtrbookindexlastmark}{%
+ \letcs{\glsxtr@label}{glsxtr@idxlastmark@\glsxtrbookindexthepage}%
+ \ifdef\glsxtr@label
+ {\glsxtrbookindexlastmarkfmt{\glsxtr@label}}%
+ {}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\iffalse
+% \begin{macrocode}
+%</glossary-bookindex.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-longextra.sty>
+% \end{macrocode}
+%\fi
+%\chapter{longextra styles (\styfmt{glossary-longextra.sty})}
+%\changes{1.37}{2018-11-30}{new}
+%\section{Package Initialisation and Options}
+%Provides additional long styles.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossary-longextra}[2019/04/09 v1.41 (NLCT)]
+% \end{macrocode}
+%Load required packages.
+% \begin{macrocode}
+\RequirePackage{glossary-longbooktabs}
+% \end{macrocode}
+%
+%\begin{macro}{\glslongextraNameFmt}
+%\changes{1.37}{2018-11-30}{new}
+%\changes{1.38}{2018-12-01}{bug fix: removed double param}
+%\begin{definition}
+%\cs{glslongextraNameFmt}\marg{label}
+%\end{definition}
+%Governs the way the name is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraNameFmt}[1]{%
+ \glsentryitem{#1}\glstarget{#1}{\glossentryname{#1}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraDescFmt}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glslongextraDescFmt}\marg{label}
+%\end{definition}
+%Governs the way the description is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraDescFmt}[1]{%
+ \glossentrydesc{#1}\glspostdescription
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymbolFmt}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glslongextraSymbolFmt}\marg{label}
+%\end{definition}
+%Governs the way the symbol is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraSymbolFmt}[1]{\glossentrysymbol{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocationFmt}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glslongextraLocationFmt}\marg{label}\marg{location list}
+%\end{definition}
+%Governs the way the location is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraLocationFmt}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSubNameFmt}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glslongextraSubNameFmt}\marg{level}\marg{label}
+%\end{definition}
+%Governs the way the child name is displayed. Just does the
+%sub-entry counter, if enabled, and the target.
+% \begin{macrocode}
+\newcommand{\glslongextraSubNameFmt}[2]{%
+ \glssubentryitem{#2}\glstarget{#2}{\strut}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSubDescFmt}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glslongextraSubDescFmt}\marg{level}\marg{label}
+%\end{definition}
+%Governs the way the child description is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraSubDescFmt}[2]{%
+ \glslongextraDescFmt{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSubSymbolFmt}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glslongextraSubSymbolFmt}\marg{level}\marg{label}
+%\end{definition}
+%Governs the way the child symbol is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraSubSymbolFmt}[2]{%
+ \glslongextraSymbolFmt{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSubLocationFmt}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glslongextraSubLocationFmt}\marg{level}\marg{label}\marg{location list}
+%\end{definition}
+%Governs the way the child location list is displayed.
+% \begin{macrocode}
+\newcommand{\glslongextraSubLocationFmt}[3]{#3}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameAlign}
+%\changes{1.37}{2018-11-30}{new}
+%Alignment for the name column.
+% \begin{macrocode}
+\newcommand{\glslongextraNameAlign}{l}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraDescAlign}
+%\changes{1.37}{2018-11-30}{new}
+%Alignment for the description column.
+% \begin{macrocode}
+\newcommand{\glslongextraDescAlign}{>{\raggedright}p{\glsdescwidth}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymbolAlign}
+%\changes{1.37}{2018-11-30}{new}
+%Alignment for the symbol column.
+% \begin{macrocode}
+\newcommand{\glslongextraSymbolAlign}{c}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocationAlign}
+%\changes{1.37}{2018-11-30}{new}
+%Alignment for the location column.
+% \begin{macrocode}
+\newcommand{\glslongextraLocationAlign}{>{\raggedright}p{\glspagelistwidth}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraGroupHeading}
+%\changes{1.37}{2018-11-30}{new}
+%Used to format the letter group headings. The first argument is the
+%number of columns in the table. The second is the group
+%\emph{label} (not the title).
+% \begin{macrocode}
+\newcommand{\glslongextraGroupHeading}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraHeaderFormat}
+%\changes{1.37}{2018-11-30}{new}
+%Format for the column headers.
+% \begin{macrocode}
+\newcommand{\glslongextraHeaderFmt}[1]{\textbf{#1}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescHeader}{%
+ \glslongextraNameDescTabularHeader\endhead
+ \glslongextraNameDescTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\descriptionname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%Unlike the \glostyle{alttree} style, there aren't different widths
+%for the hierarchical levels.
+%\begin{macro}{\glslongextraSetWidest}
+%\changes{1.37}{2018-11-30}{new}
+%Provide in case the tree styles haven't been loaded.
+% \begin{macrocode}
+\newcommand*{\glslongextraSetWidest}[1]{%
+ \def\@glslongextrawidestname{#1}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\@glslongextrawidestname}
+%\changes{1.37}{2018-11-30}{new}
+%Pick up the widest name from the \glostyle{alttree} style if it has
+%been set. (Will expand to nothing otherwise.)
+% \begin{macrocode}
+\newcommand*{\@glslongextrawidestname}{\csuse{@glswidestname}}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraUpdateWidest}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand*{\glslongextraUpdateWidest}[1]{%
+ \ifundef\@glslongextrawidestname
+ {\def\@glslongextrawidestname{#1}}%
+ {%
+ \settowidth{\dimen@}{\@glslongextrawidestname}%
+ \settowidth{\dimen@ii}{#1}%
+ \ifdim\dimen@ii>\dimen@
+ \def\@glslongextrawidestname{#1}%
+ \fi
+ }%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraUpdateWidestChild}
+%\changes{1.37}{2018-11-30}{new}
+%\begin{definition}
+%\cs{glslongextraUpdateWidestChild}\marg{level}\marg{text}
+%\end{definition}
+%Used by \cs{glsxtrSetWidest} in \sty{glossaries-extra-bib2gls}.
+%Does nothing by default, since the default action in these styles
+%is to omit the child name. If the child name should be displayed,
+%then this needs to be redefined to use
+%\cs{glslongextraUpdateWidest}.
+% \begin{macrocode}
+\newcommand*{\glslongextraUpdateWidestChild}[2]{}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSetDescWidth}
+%\changes{1.37}{2018-11-30}{new}
+% Computes the value of \cs{glsdescwidth} for the styles that only
+% have name and description columns.
+% \begin{macrocode}
+\newcommand{\glslongextraSetDescWidth}{%
+ \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\entryname}%
+% \end{macrocode}
+% Has the widest name been set.
+% \begin{macrocode}
+ \settowidth{\dimen@}{\glsnamefont{\@glslongextrawidestname}}%
+ \ifdim\dimen@>\gls@tmplen
+ \gls@tmplen=\dimen@
+ \fi
+% \end{macrocode}
+% Description width is \cs{linewidth} less 4\cs{tabcolsep} less the
+% width of the name column.
+% \begin{macrocode}
+ \setlength{\glsdescwidth}{\dimexpr\linewidth-4\tabcolsep-\gls@tmplen}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymSetDescWidth}
+%\changes{1.37}{2018-11-30}{new}
+% Computes the value of \cs{glsdescwidth} for the styles that only
+% have name, symbol and description columns.
+% \begin{macrocode}
+\newcommand{\glslongextraSymSetDescWidth}{%
+% \end{macrocode}
+% Work out the size for just the name and description style.
+% \begin{macrocode}
+ \glslongextraSetDescWidth
+% \end{macrocode}
+% Now work out the symbol column width. This is assuming that the
+% column title will be the widest text in the column.
+% \begin{macrocode}
+ \settowidth{\gls@tmplen}{\glslongextraHeaderFmt\symbolname}%
+% \end{macrocode}
+% Subtract 2\cs{tabcolsep} and the symbol header width.
+% \begin{macrocode}
+ \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\gls@tmplen}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocSetDescWidth}
+%\changes{1.37}{2018-11-30}{new}
+% Computes the value of \cs{glsdescwidth} for the styles that only
+% have name, location and description columns.
+% \begin{macrocode}
+\newcommand{\glslongextraLocSetDescWidth}{%
+% \end{macrocode}
+% Work out the size for just the name and description style.
+% \begin{macrocode}
+ \glslongextraSetDescWidth
+% \end{macrocode}
+% Subtract 2\cs{tabcolsep} and the location list column width.
+% \begin{macrocode}
+ \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\glspagelistwidth}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymLocSetDescWidth}
+%\changes{1.37}{2018-11-30}{new}
+% Computes the value of \cs{glsdescwidth} for the styles that
+% have name, symbol, location and description columns.
+% \begin{macrocode}
+\newcommand{\glslongextraSymLocSetDescWidth}{%
+% \end{macrocode}
+% Work out the size for just the name, symbol and description style.
+% \begin{macrocode}
+ \glslongextraSymSetDescWidth
+% \end{macrocode}
+% Subtract 2\cs{tabcolsep} and the location list column width.
+% \begin{macrocode}
+ \setlength{\glsdescwidth}{\dimexpr\glsdescwidth-2\tabcolsep-\glspagelistwidth}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\ifGlsLongExtraUseTabular}
+%\changes{1.37}{2018-11-30}{new}
+%If true use \env{tabular} instead of \env{longtable}. Obviously
+%only intended for short glossaries that can fit into a single page.
+% \begin{macrocode}
+\newif\ifGlsLongExtraUseTabular
+\GlsLongExtraUseTabularfalse
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraTabularVAlign}
+%\changes{1.37}{2018-11-30}{new}
+%Only used with the \env{tabular} setting.
+% \begin{macrocode}
+\newcommand*{\glslongextraTabularVAlign}{c}
+% \end{macrocode}
+%\end{macro}
+%\begin{abbrvstyle}{long-name-desc}
+%\changes{1.37}{2018-11-30}{new}
+%Two column style with multi-lined descriptions and header.
+%This is similar to the \glostyle{longragged-booktabs} style.
+% \begin{macrocode}
+\newglossarystyle{long-name-desc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign}}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameDescTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign}}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraDescFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2}
+ &
+ \glslongextraSubDescFmt{##1}{##2}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraNameDescLocationHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescLocationHeader}{%
+ \glslongextraNameDescLocationTabularHeader\endhead
+ \glslongextraNameDescLocationTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescLocationTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescLocationTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\pagelistname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescLocationTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescLocationTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-name-desc-loc}
+%\changes{1.37}{2018-11-30}{new}
+%Three columns: name, description and location list.
+% \begin{macrocode}
+\newglossarystyle{long-name-desc-loc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameDescLocationTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescLocationTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescLocationHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraLocationFmt{##1}{##2}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2}&
+ \glslongextraSubDescFmt{##1}{##2}&
+ \glslongextraSubLocationFmt{##1}{##2}{##3}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraDescNameHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescNameHeader}{%
+ \glslongextraDescNameTabularHeader\endhead
+ \glslongextraDescNameTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraDescNameTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\descriptionname&
+ \glslongextraHeaderFmt\entryname \tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraDescNameTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescNameTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-desc-name}
+%\changes{1.37}{2018-11-30}{new}
+%Like \glostyle{name-desc} but swaps the columns.
+% \begin{macrocode}
+\newglossarystyle{long-desc-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign}}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraDescNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraDescNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign}}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraDescNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{2}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraDescFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraLocationDescNameHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationDescNameHeader}{%
+ \glslongextraLocationDescNameTabularHeader\endhead
+ \glslongextraLocationDescNameTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocationDescNameTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationDescNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\pagelistname&
+ \glslongextraHeaderFmt\descriptionname&
+ \glslongextraHeaderFmt\entryname \tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocationDescNameTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationDescNameTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-loc-desc-name}
+%\changes{1.37}{2018-11-30}{new}
+%Three columns: location, description and name.
+% \begin{macrocode}
+\newglossarystyle{long-loc-desc-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ {%
+ \glslongextraLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign}}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraLocationDescNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationDescNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign}}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationDescNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraLocationFmt{##1}{##2} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubLocationFmt{##1}{##2}{##3} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraNameDescSymHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescSymHeader}{%
+ \glslongextraNameDescSymTabularHeader\endhead
+ \glslongextraNameDescSymTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescSymTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescSymTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescSymTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescSymTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-name-desc-sym}
+%\changes{1.37}{2018-11-30}{new}
+%Three column style with symbol in the third column.
+% \begin{macrocode}
+\newglossarystyle{long-name-desc-sym}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameDescSymTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescSymTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescSymHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraNameDescSymLocationHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescSymLocationHeader}{%
+ \glslongextraNameDescSymLocationTabularHeader\endhead
+ \glslongextraNameDescSymLocationTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescSymLocationTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescSymLocationTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\pagelistname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameDescSymLocationTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameDescSymLocationTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-name-desc-sym-loc}
+%\changes{1.37}{2018-11-30}{new}
+%Four columns: name, description and location
+% \begin{macrocode}
+\newglossarystyle{long-name-desc-sym-loc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameDescSymLocationTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescSymLocationTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameDescSymLocationHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolFmt{##1}&
+ \glslongextraLocationFmt{##1}{##2}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2}&
+ \glslongextraSubLocationFmt{##1}{##2}{##3}%
+ \tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraNameSymDescHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameSymDescHeader}{%
+ \glslongextraNameSymDescTabularHeader\endhead
+ \glslongextraNameSymDescTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameSymDescTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameSymDescTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameSymDescTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameSymDescTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-name-sym-desc}
+%\changes{1.37}{2018-11-30}{new}
+%Three column style with symbol in the second column.
+% \begin{macrocode}
+\newglossarystyle{long-name-sym-desc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameSymDescTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameSymDescTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameSymDescHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraDescFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraNameSymDescLocationHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameSymDescLocationHeader}{%
+ \glslongextraNameSymDescLocationTabularHeader\endhead
+ \glslongextraNameSymDescLocationTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameSymDescLocationTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameSymDescLocationTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\entryname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\pagelistname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraNameSymDescLocationTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraNameSymDescLocationTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-name-sym-desc-loc}
+%\changes{1.37}{2018-11-30}{new}
+%Four column style with symbol in the second column.
+% \begin{macrocode}
+\newglossarystyle{long-name-sym-desc-loc}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraNameSymDescLocationTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraNameSymDescLocationTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraNameAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraLocationAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraNameSymDescLocationHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraNameFmt{##1} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraLocationFmt{##1}{##2}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubNameFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubLocationFmt{##1}{##2}{##3}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraSymDescNameHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraSymDescNameHeader}{%
+ \glslongextraSymDescNameTabularHeader\endhead
+ \glslongextraSymDescNameTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymDescNameTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraSymDescNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\entryname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraSymDescNameTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraSymDescNameTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-sym-desc-name}
+%\changes{1.37}{2018-11-30}{new}
+%Three column style with symbol in the first column, description in
+%the second and name in the third.
+% \begin{macrocode}
+\newglossarystyle{long-sym-desc-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraSymDescNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraSymDescNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraSymDescNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraLocationSymDescNameHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationSymDescNameHeader}{%
+ \glslongextraLocationSymDescNameTabularHeader\endhead
+ \glslongextraLocationSymDescNameTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocationSymDescNameTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationSymDescNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\pagelistname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\entryname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocationSymDescNameTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationSymDescNameTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-loc-sym-desc-name}
+%\changes{1.37}{2018-11-30}{new}
+%Four column style with location list, symbol, description and name.
+% \begin{macrocode}
+\newglossarystyle{long-loc-sym-desc-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraLocationSymDescNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationSymDescNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationSymDescNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraLocationFmt{##1}{##2} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubLocationFmt{##1}{##2}{##3} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraDescSymNameHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescSymNameHeader}{%
+ \glslongextraDescSymNameTabularHeader\endhead
+ \glslongextraDescSymNameTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraDescSymNameTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescSymNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\entryname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraDescSymNameTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraDescSymNameTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-desc-sym-name}
+%\changes{1.37}{2018-11-30}{new}
+%Three column style with description in the first column, symbol in
+%the second and name in the third.
+% \begin{macrocode}
+\newglossarystyle{long-desc-sym-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraDescSymNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraDescSymNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraDescSymNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{3}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\begin{macro}{\glslongextraLocationDescSymNameHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationDescSymNameHeader}{%
+ \glslongextraLocationDescSymNameTabularHeader\endhead
+ \glslongextraLocationDescSymNameTabularFooter\endfoot
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocationDescSymNameTabularHeader}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationDescSymNameTabularHeader}{%
+ \toprule
+ \glslongextraHeaderFmt\pagelistname &
+ \glslongextraHeaderFmt\descriptionname &
+ \glslongextraHeaderFmt\symbolname &
+ \glslongextraHeaderFmt\entryname\tabularnewline
+ \midrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glslongextraLocationDescSymNameTabularFooter}
+%\changes{1.37}{2018-11-30}{new}
+% \begin{macrocode}
+\newcommand{\glslongextraLocationDescSymNameTabularFooter}{%
+ \bottomrule
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{abbrvstyle}{long-loc-desc-sym-name}
+%\changes{1.37}{2018-11-30}{new}
+%Four column style with location list, description, symbol and name.
+% \begin{macrocode}
+\newglossarystyle{long-loc-desc-sym-name}%
+{%
+ \ifGlsLongExtraUseTabular
+ \renewenvironment{theglossary}%
+ {%
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{tabular}[\glslongextraTabularVAlign]{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {%
+ \glslongextraLocationDescSymNameTabularFooter
+ \end{tabular}%
+ }%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationDescSymNameTabularHeader}%
+ \else
+ \renewenvironment{theglossary}%
+ {%
+ \glspatchLToutput
+ \glslongextraSymLocSetDescWidth
+ \edef\@glslongextra@begintab{%
+ \noexpand\begin{longtable}{%
+ \expandonce\glslongextraLocationAlign
+ \expandonce\glslongextraDescAlign
+ \expandonce\glslongextraSymbolAlign
+ \expandonce\glslongextraNameAlign
+ }}%
+ \@glslongextra@begintab
+ }%
+ {\end{longtable}}%
+ \renewcommand*{\glossaryheader}{\glslongextraLocationDescSymNameHeader}%
+ \fi
+ \renewcommand*{\glsgroupheading}[1]{\glslongextraGroupHeading{4}{##1}}%
+ \renewcommand{\glossentry}[2]{%
+ \glslongextraLocationFmt{##1}{##2} &
+ \glslongextraDescFmt{##1} &
+ \glslongextraSymbolFmt{##1} &
+ \glslongextraNameFmt{##1}\tabularnewline
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \glslongextraSubLocationFmt{##1}{##2}{##3} &
+ \glslongextraSubDescFmt{##1}{##2} &
+ \glslongextraSubSymbolFmt{##1}{##2} &
+ \glslongextraSubNameFmt{##1}{##2}\tabularnewline
+ }%
+ \ifglsnogroupskip
+ \renewcommand*{\glsgroupskip}{}%
+ \else
+ \renewcommand*{\glsgroupskip}{\glspenaltygroupskip}%
+ \fi
+}
+% \end{macrocode}
+%\end{abbrvstyle}
+%
+%\iffalse
+% \begin{macrocode}
+%</glossary-longextra.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*glossary-topic.sty>
+% \end{macrocode}
+%\fi
+%\chapter{topic styles (\styfmt{glossary-topic.sty})}
+%\changes{1.40}{2019-03-22}{new}
+%\section{Package Initialisation and Options}
+%Provides \qt{topic} styles where top-level entries are considered a
+%topic.
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{glossary-topic}[2019/04/09 v1.41 (NLCT)]
+% \end{macrocode}
+%Load required package.
+% \begin{macrocode}
+\RequirePackage{multicol}
+% \end{macrocode}
+%The top-level entries act like headers. If the top-level entry has a
+%description it's placed below the name.
+%\begin{style}{topic}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newglossarystyle{topic}{%
+ \renewenvironment{theglossary}%
+ {%
+ \glstopicInit
+ \def\glstopic@prechildren{}%
+ \def\glstopic@prevlevel{-1}%
+ }%
+ {\par}%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \def\glstopic@prevlevel{-1}%
+ \glstopicGroupHeading{##1}%
+ }%
+ \renewcommand{\glossentry}[2]{%
+ \hangindent0pt\relax
+ \parindent\glstopicParIndent\relax
+ \glstopicItem{##1}{##2}%
+% \end{macrocode}
+%\changes{1.41}{2019-04-09}{added penalty if no description}
+%If there isn't a description, penalise a page break.
+% \begin{macrocode}
+ \ifglshasdesc{##1}%
+ {%
+ \def\glstopic@prechildren{}%
+ }%
+ {%
+ \def\glstopic@prechildren{\nopagebreak}%
+ }%
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifnum\glstopic@prevlevel=0\relax\glstopic@prechildren\fi
+ \def\glstopic@prevlevel{##1}%
+ \glstopicAssignSubIndent{##1}%
+ \glstopicSubItem{##1}{##2}{##3}%
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+}
+% \end{macrocode}
+%\end{style}
+%\begin{macro}{\glstopicGroupHeading}
+%\changes{1.40}{2019-03-22}{new}
+%\begin{definition}
+%\cs{glstopicGroupHeading}\marg{group label}
+%\end{definition}
+%May be redefined if letter group headings are required. For
+%example:
+%\begin{verbatim}
+%\renewcommand*{\glstopicGroupHeading}[1]{%
+% \glsxtrgetgrouptitle{#1}{\thisgrptitle}%
+% \section*{\thisgrptitle}%
+%}
+%\end{verbatim}
+% \begin{macrocode}
+\newcommand*{\glstopicGroupHeading}[1]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicItem}
+%\changes{1.40}{2019-03-22}{new}
+%\begin{definition}
+%\cs{glstopicItem}\marg{label}\marg{location list}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glstopicItem}[2]{%
+ \glspar\glstopicPreSkip\glspar\noindent
+ \glstopicMarker{#1}%
+ \glstopicTitleFont
+ {%
+ \glsentryitem{#1}\glstarget{#1}{\glstopicTitle{#1}}%
+ }%
+ \ifglshasdesc{#1}%
+ {\glspar\nobreak\glstopicMidSkip\glspar\nobreak
+ \@afterheading\glstopicDesc{#1}\glspar\glstopicPostSkip}%
+ {\glspar\nobreak\glstopicPostSkip}%
+ \glstopicLoc{#1}{#2}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicMarker}
+%\changes{1.40}{2019-03-22}{new}
+% May be used to insert a bookmark etc if required.
+% \begin{macrocode}
+\newcommand*{\glstopicMarker}[1]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicName}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicTitle}[1]{\Glossentryname{#1}%
+ \ifglshassymbol{#1}{\space(\glossentrysymbol{#1})}{}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicTitleFont}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicTitleFont}[1]{\textbf{\large #1}}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicDesc}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicDesc}[1]{\Glossentrydesc{#1}\glspostdescription}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicLoc}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicLoc}[2]{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicParIndent}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newlength\glstopicParIndent
+\setlength\glstopicParIndent{20pt}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicSubIndent}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newlength\glstopicSubIndent
+\setlength\glstopicSubIndent{20pt}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicInit}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand{\glstopicInit}{}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicAssignSubIndent}
+%\changes{1.40}{2019-03-22}{new}
+%\begin{definition}
+%\cs{glstopicAssignSubIndent}\marg{level}
+%\end{definition}
+%Used to set the indentation for sub-levels.
+% \begin{macrocode}
+\newcommand*{\glstopicAssignSubIndent}[1]{%
+% \end{macrocode}
+%\changes{1.41}{2019-04-09}{moved \cs{par} from \cs{glstopicSubItem}}
+% \begin{macrocode}
+ \par
+ \parindent\dimexpr#1\glstopicSubIndent-\glstopicSubIndent\relax
+ \glstopicAssignWidest{#1}%
+ \hangindent\dimexpr\parindent+\glstopicwidest\relax
+}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstopicwidest}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newlength\glstopicwidest
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstopicAssignWidest}
+%\changes{1.40}{2019-03-22}{new}
+%\begin{definition}
+%\cs{glstopicAssignWidest}\marg{level}
+%\end{definition}
+%Used in the definition of \cs{glstopicAssignSubIndent}
+%to set the indentation from the widest name for the given
+%level. This will require \sty{glossary-tree} to set the values.
+% \begin{macrocode}
+\newcommand*{\glstopicAssignWidest}[1]{%
+ \ifcsundef{@glswidestlength\romannumeral#1}%
+ {%
+ \ifcsdef{@glswidestname\romannumeral#1}%
+ {%
+ \settowidth{\glstopicwidest}{%
+ \glstopicSubNameFont{\csuse{@glswidestname\romannumeral#1}}%
+ \glstopicSubItemSep
+ }%
+ }%
+ {\setlength{\glstopicwidest}{0pt}}%
+% \end{macrocode}
+%Save the value so that it doesn't have to keep being recalculated.
+% \begin{macrocode}
+ \csedef{@glswidestlength\romannumeral#1}{\the\glstopicwidest}%
+ }%
+ {\setlength{\glstopicwidest}{\csuse{@glswidestlength\romannumeral#1}}}%
+}
+% \end{macrocode}
+%\end{macro}
+%
+%
+%\begin{macro}{\glstopicPreSkip}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicPreSkip}{\medskip}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicMidSkip}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicMidSkip}{\smallskip}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicPostSkip}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicPostSkip}{\smallskip}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicSubItem}
+%\changes{1.40}{2019-03-22}{new}
+%\begin{definition}
+%\cs{glstopicSubItem}\marg{level}\marg{label}\marg{location list}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glstopicSubItem}[3]{%
+% \end{macrocode}
+%\changes{1.41}{2019-04-09}{moved \cs{par} to \cs{glstopicAssignSubIndent}}
+% \begin{macrocode}
+ \glstopicSubItemBox{#1}{\glstopicSubNameFont{\glsentryitem{#2}%
+ \glstarget{#2}{\glossentryname{#2}}}%
+ \glstopicSubItemSep
+ }%
+ \ifglshassymbol{#2}{(\glossentrysymbol{#2})\space}{}%
+% \end{macrocode}
+%\changes{1.41}{2019-04-09}{added check for description}
+% \begin{macrocode}
+ \ifglshasdesc{#2}%
+ {\glossentrydesc{#2}\glspostdescription\glstopicSubPreLocSep}{}%
+ \glstopicSubLoc{#2}{#3}%
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicSubItemSep}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicSubItemSep}{\quad}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicSubItemBox}
+%\changes{1.40}{2019-03-22}{new}
+%\begin{definition}
+%\cs{glstopicSubItemBox}\marg{level}\marg{text}
+%\end{definition}
+% \begin{macrocode}
+\newcommand*{\glstopicSubItemBox}[2]{%
+ \ifdim\glstopicwidest>0pt\relax\makebox[\glstopicwidest][l]{#2}\else#2\fi
+}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicSubNameFont}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicSubNameFont}[1]{\textbf{#1}}
+% \end{macrocode}
+%\end{macro}
+%\changes{1.41}{2019-04-09}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicSubPreLocSep}{\space}
+% \end{macrocode}
+%\end{macro}
+%\begin{macro}{\glstopicSubLoc}
+%\changes{1.40}{2019-03-22}{new}
+%\changes{1.41}{2019-04-09}{moved \cs{space} to \cs{glstopicSubPreLocSep}}
+% \begin{macrocode}
+\newcommand*{\glstopicSubLoc}[2]{#2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstopicCols}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicCols}{2}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{macro}{\glstopicColsEnv}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newcommand*{\glstopicColsEnv}{multicols}
+% \end{macrocode}
+%\end{macro}
+%
+%\begin{style}{topicmcols}
+%\changes{1.40}{2019-03-22}{new}
+% \begin{macrocode}
+\newglossarystyle{topicmcols}{%
+ \renewenvironment{theglossary}%
+ {%
+ \glstopicInit
+ \def\glstopic@prechildren{}%
+ \def\glstopic@postchildren{}%
+ \def\glstopic@prevlevel{-1}%
+ }%
+ {%
+ \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi
+ \par
+ }%
+ \renewcommand*{\glossaryheader}{}%
+ \renewcommand*{\glsgroupheading}[1]{%
+ \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi
+ \def\glstopic@prevlevel{-1}%
+ \glstopicGroupHeading{##1}%
+ }%
+ \renewcommand{\glossentry}[2]{%
+ \ifnum\glstopic@prevlevel>0\relax\glstopic@postchildren\fi
+ \def\glstopic@prevlevel{0}%
+ \hangindent0pt\relax
+ \parindent\glstopicParIndent\relax
+ \glstopicItem{##1}{##2}%
+ \ifnum\glstopicCols>1\relax
+% \end{macrocode}
+%\changes{1.41}{2019-04-09}{added penalty if no description}
+%If there isn't a description, penalise a page break.
+% \begin{macrocode}
+ \ifglshasdesc{##1}%
+ {%
+ \edef\glstopic@prechildren{%
+ \noexpand\begin{\glstopicColsEnv}{\glstopicCols}}%
+ }%
+ {%
+ \edef\glstopic@prechildren{%
+ \noexpand\nopagebreak
+ \noexpand\begin{\glstopicColsEnv}{\glstopicCols}}%
+ }%
+ \edef\glstopic@postchildren{\noexpand\end{\glstopicColsEnv}}%
+ \fi
+ }%
+ \renewcommand{\subglossentry}[3]{%
+ \ifnum\glstopic@prevlevel=0\relax\glstopic@prechildren\fi
+ \def\glstopic@prevlevel{##1}%
+ \glstopicAssignSubIndent{##1}%
+ \glstopicSubItem{##1}{##2}{##3}%
+ }%
+ \renewcommand*{\glsgroupskip}{}%
+}
+% \end{macrocode}
+%\end{style}
+%\iffalse
+% \begin{macrocode}
+%</glossary-topic.sty>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-xr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% This file is part of the glossaries-extra bundle
+% These are dummy glossary entries with cross-references for use in
+% test documents.
+%COMMENT
+\newglossaryentry{lorem}{name={lorem},description={ipsum}}
+
+\newglossaryentry{alias-lorem}{name={alias-lorem},description={ipsum},
+ alias={lorem}}
+
+\newglossaryentry{dolor}{name={dolor},description={sit}}
+
+\newglossaryentry{amet}{name={amet},description={consectetuer},
+ see={dolor}}
+
+\newglossaryentry{adipiscing}{name={adipiscing},description={elit}}
+
+\newglossaryentry{ut}{name={ut},description={purus}}
+
+\newglossaryentry{elit}{name={elit},description={vestibulum},
+ seealso={adipiscing,ut}}
+
+\newglossaryentry{placerat}{name={placerat},description={ac}}
+
+\newglossaryentry{vitae}{name={vitae},description={felis}}
+
+\newglossaryentry{curabitur}{name={curabitur},description={gravida}}
+
+\newglossaryentry{mauris}{name={mauris},description={nam}}
+
+\newglossaryentry{arcu}{name={arcu},description={libero},
+ seealso={placerat,vitae,curabitur}}
+
+\newglossaryentry{nonummy}{name={nonummy},description={eget},
+ seealso={mauris}}
+
+\newglossaryentry{consectetuer}{name={consectetuer},description={id},
+ parent={nonummy}}
+
+\newglossaryentry{vulputate}{name={vulputate},description={a magna},
+ parent={nonummy}}
+
+\newglossaryentry{donec}{name={donec},description={vehicula}}
+
+\newglossaryentry{augue}{name={augue},description={eu neque}}
+
+\newglossaryentry{pellentesque}{name={pellentesque},description={habitant},
+ see={augue}}
+
+\newglossaryentry{morbi}{name={morbi},description={tristique}}
+
+\newglossaryentry{senectus}{name={senectus},description={et netus}}
+
+\newglossaryentry{et}{name={et},description={malesuada},
+ see={vulputate}}
+
+\newglossaryentry{fames}{name={fames},description={ac}}
+
+\newglossaryentry{turpis}{name={turpis},description={egestas},
+ seealso={consectetuer}}
+
+\newglossaryentry{leo}{name={leo},description={cras}}
+
+\newglossaryentry{viverra}{name={viverra},description={metus}}
+
+\newglossaryentry{rhoncus}{name={rhoncus},description={sem}}
+
+\newglossaryentry{nulla}{name={nulla},description={et}}
+
+\newglossaryentry{lectus}{name={lectus},description={vestibulum}}
+
+\newglossaryentry{urna}{name={urna},description={fringilla},
+ parent={lectus},see={nulla}}
+
+\newglossaryentry{ultrices}{name={ultrices},description={phasellus},
+ parent={lectus}}
+
+\newglossaryentry{eu}{name={eu},description={tellus},
+ parent={lectus}}
+
+\newglossaryentry{alias-eu}{name={alias-eu},description={tellus},
+ alias={eu}}
+
+\newglossaryentry{sit}{name={sit},description={amet}}
+
+\newglossaryentry{tortor}{name={tortor},description={gravida}}
+
+\newglossaryentry{integer}{name={integer},description={sapien}}
+
+\newglossaryentry{est}{name={est},description={iaculis}}
+
+\newglossaryentry{in}{name={in},description={pretium},
+ seealso={sit,tortor,est}}
+
+\newglossaryentry{quis}{name={quis},description={viverra}}
+
+\newglossaryentry{ac}{name={ac},description={nunc}}
+
+\newglossaryentry{praesent}{name={praesent},description={eget \gls{ac}}}
+
+\newglossaryentry{sem}{name={sem},description={vel leo
+\glshyperlink{quis}}}
+
+\newglossaryentry{bibendum}{name={bibendum},description={ultrices}}
+
+\newglossaryentry{aenean}{name={aenean},description={faucibus}}
+
+\newglossaryentry{malesuada}{name={malesuada},description={eu},
+ parent={aenean}}
+
+\newglossaryentry{pulvinar}{name={pulvinar},description={at},
+ parent={aenean}}
+
+\newglossaryentry{mollis}{name={mollis},description={ac nulla},
+ parent={aenean}}
+
+\newglossaryentry{auctor}{name={auctor},description={semper},
+ parent={aenean}}
+
+\newglossaryentry{varius}{name={varius},description={orci},
+ parent={aenean}}
+
+\newglossaryentry{eget}{name={eget},description={risus}}
+
+\newglossaryentry{duis}{name={duis},description={nibh}}
+
+\newglossaryentry{mi}{name={mi},description={congue}}
+
+\newglossaryentry{accumsan}{name={accumsan},description={eleifend}}
+
+\newglossaryentry{sagittis}{name={sagittis},description={quis},
+ see={eget}}
+
+\newglossaryentry{diam}{name={diam},description={duis}}
+
+\newglossaryentry{orci}{name={orci},description={dignissim},
+ seealso={diam}}
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-xr.tex>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronym-desc.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@acronym{ndl,
+ description = {fringilla a, euismod sodales,
+ sollicitudin vel, wisi},
+ short = {NDL},
+ long = {nam dui ligula}
+}
+
+@acronym{mal,
+ description = {non justo},
+ short = {MAL},
+ long = {morbi auctor lorem}
+}
+
+@acronym{nll,
+ description = {pretium at, lobortis vitae, ultricies et,
+tellus},
+ short = {NLL},
+ long = {name lacus libero}
+}
+
+@acronym{da,
+ description = {tortor sed accumsan bibendum, erat ligula
+aliquet magna, vitae ornare odio metus a mi},
+ short = {DA},
+ long = {donec aliquet}
+}
+
+@acronym{mao,
+ description = {et nisl hendrerit mollis},
+ short = {MAO},
+ long = {morbi ac orci}
+}
+
+@acronym{sum,
+ description = {cras nec ante},
+ short = {SUM},
+ long = {suspendisse ut massa}
+}
+
+@acronym{pan,
+ description = {cum sociis natoque penatibus et magnis dis
+parturient montes, nascetur ridiculus mus},
+ short = {PAN},
+ long = {pellentesque a nulla}
+}
+
+@acronym{atu,
+ description = {nulla ullamcorper vestibulum
+turpis},
+ short = {ATU},
+ long = {aliquam tincidunt urna}
+}
+
+@acronym{pclm,
+ description = {nulla malesuada porttitor diam},
+ short = {PCLM},
+ long = {pellentesque cursus luctus mauris}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronym-desc.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronym.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@acronym{lid,
+ short = {LID},
+ long = {lorem ipsum dolor}
+}
+
+@acronym{stc,
+ short = {STC},
+ long = {sit amet consectetuer}
+}
+
+@acronym{aeu,
+ short = {AEU},
+ long = {adipiscing elit ut}
+}
+
+@acronym{pev,
+ short = {PEV},
+ long = {purus elit vestibulum}
+}
+
+@acronym{upa,
+ short = {UPA},
+ long = {ut placerat ac}
+}
+
+@acronym{avf,
+ short = {AVF},
+ long = {adipiscing vitae felis}
+}
+
+@acronym{cdg,
+ short = {CDG},
+ long = {curabitur dictum gravida}
+}
+
+@acronym{mna,
+ short = {MNA},
+ long = {mauris nam arcu}
+}
+
+@acronym{lne,
+ short = {LNE},
+ long = {libero nonummy eget}
+}
+
+@acronym{civ,
+ short = {CIV},
+ long = {consectetuer id vulputate}
+}
+
+@acronym{amd,
+ short = {AMD},
+ long = {a magna donec}
+}
+
+@acronym{vae,
+ short = {VAE},
+ long = {vehicula augue eu}
+}
+
+@acronym{nph,
+ short = {NPH},
+ long = {neque pellentesque habitant}
+}
+
+@acronym{mts,
+ short = {MTS},
+ long = {morbi tristique senectus}
+}
+
+@acronym{ene,
+ short = {ENE},
+ long = {et netus et}
+}
+
+@acronym{mfa,
+ short = {MFA},
+ long = {malesuada fames ac}
+}
+
+@acronym{tem,
+ short = {TEM},
+ long = {turpis egestas mauris}
+}
+
+@acronym{ulc,
+ short = {ULC},
+ long = {ut leo cras}
+}
+
+@acronym{vmr,
+ short = {VMR},
+ long = {viverra metus rhoncus}
+}
+
+@acronym{sne,
+ short = {SNE},
+ long = {sem nulla et}
+}
+
+@acronym{lvu,
+ short = {LVU},
+ long = {lectus vestibulum urna}
+}
+
+@acronym{fup,
+ short = {FUP},
+ long = {fringilla ultrices phasellus}
+}
+
+@acronym{ets,
+ short = {ETS},
+ long = {eu tellus sit}
+}
+
+@acronym{atg,
+ short = {ATG},
+ long = {amet tortor gravida}
+}
+
+@acronym{pis,
+ short = {PIS},
+ long = {placerat integer sapien}
+}
+
+@acronym{eii,
+ short = {EII},
+ long = {est iaculis in}
+}
+
+@acronym{pqv,
+ short = {PQV},
+ long = {pretium quis viverra}
+}
+
+@acronym{anp,
+ short = {ANP},
+ long = {ac nunc praesent}
+}
+
+@acronym{esv,
+ short = {ESV},
+ long = {eget sem vel}
+}
+
+@acronym{lub,
+ short = {LUB},
+ long = {leo ultrices bibendum}
+}
+
+@acronym{afm,
+ short = {AFM},
+ long = {aenean faucibus morbi}
+}
+
+@acronym{dnm,
+ short = {DNM},
+ long = {dolor nulla malesuada}
+}
+
+@acronym{epa,
+ short = {EPA},
+ long = {eu pulvinar at}
+}
+
+@acronym{man,
+ short = {MAC},
+ long = {mollis ac nulla}
+}
+
+@acronym{cas,
+ short = {CAS},
+ long = {curabitur auctor semper}
+}
+
+@acronym{ndv,
+ short = {NDV},
+ long = {nulla donec varius}
+}
+
+@acronym{oer,
+ short = {OER},
+ long = {orci eget risus}
+}
+
+@acronym{dnmc,
+ short = {DNMC},
+ long = {duis nibh mi congue}
+}
+
+@acronym{cea,
+ short = {CEA},
+ long = {congue eu accumsan}
+}
+
+@acronym{esq,
+ short = {ESQ},
+ long = {eleifend sagittis quis}
+}
+
+@acronym{dia,
+ short = {DIA},
+ long = {duis eget orci}
+}
+
+@acronym{sao,
+ short = {SAO},
+ long = {sit amet orci}
+}
+
+@acronym{drn,
+ short = {DRN},
+ long = {dignissim rutrum nam}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronym.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-acronyms-lang.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@acronym{li,
+ user1 = {love itself},
+ short = {LI},
+ long = {lorem ipsum}
+}
+
+@acronym{np,
+ user1 = {produces none},
+ short = {NP},
+ long = {nulla pariatur}
+}
+
+@acronym{sic,
+ user1 = {blame belongs},
+ short = {SIC},
+ long = {sunt in culpa}
+}
+
+@acronym{esoc,
+ user1 = {blinded by
+desire},
+ short = {ESOC},
+ long = {excepturi sint obcaecati cupiditat}
+}
+
+@acronym{nmruu,
+ short = {NMRUU},
+ long = {nulla malesuada
+risus ut urna}
+}
+
+@acronym{di,
+ short = {DI},
+ long = {duis iaculi}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-acronyms-lang.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-brief.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{lorem,
+ name = {lorem},
+ description = {ipsum}
+}
+
+@entry{dolor,
+ name = {dolor},
+ description = {sit}
+}
+
+@entry{amet,
+ name = {amet},
+ description = {consectetuer}
+}
+
+@entry{adipiscing,
+ name = {adipiscing},
+ description = {elit}
+}
+
+@entry{ut,
+ name = {ut},
+ description = {purus}
+}
+
+@entry{elit,
+ name = {elit},
+ description = {vestibulum}
+}
+
+@entry{placerat,
+ name = {placerat},
+ description = {ac}
+}
+
+@entry{vitae,
+ name = {vitae},
+ description = {felis}
+}
+
+@entry{curabitur,
+ name = {curabitur},
+ description = {gravida}
+}
+
+@entry{mauris,
+ name = {mauris},
+ description = {nam}
+}
+
+@entry{arcu,
+ name = {arcu},
+ description = {libero}
+}
+
+@entry{nonummy,
+ name = {nonummy},
+ description = {eget}
+}
+
+@entry{consectetuer,
+ name = {consectetuer},
+ description = {id}
+}
+
+@entry{vulputate,
+ name = {vulputate},
+ description = {a magna}
+}
+
+@entry{donec,
+ name = {donec},
+ description = {vehicula}
+}
+
+@entry{augue,
+ name = {augue},
+ description = {eu neque}
+}
+
+@entry{pellentesque,
+ name = {pellentesque},
+ description = {habitant}
+}
+
+@entry{morbi,
+ name = {morbi},
+ description = {tristique}
+}
+
+@entry{senectus,
+ name = {senectus},
+ description = {et netus}
+}
+
+@entry{et,
+ name = {et},
+ description = {malesuada}
+}
+
+@entry{fames,
+ name = {fames},
+ description = {ac}
+}
+
+@entry{turpis,
+ name = {turpis},
+ description = {egestas}
+}
+
+@entry{leo,
+ name = {leo},
+ description = {cras}
+}
+
+@entry{viverra,
+ name = {viverra},
+ description = {metus}
+}
+
+@entry{rhoncus,
+ name = {rhoncus},
+ description = {sem}
+}
+
+@entry{nulla,
+ name = {nulla},
+ description = {et}
+}
+
+@entry{lectus,
+ name = {lectus},
+ description = {vestibulum}
+}
+
+@entry{urna,
+ name = {urna},
+ description = {fringilla}
+}
+
+@entry{ultrices,
+ name = {ultrices},
+ description = {phasellus}
+}
+
+@entry{eu,
+ name = {eu},
+ description = {tellus}
+}
+
+@entry{sit,
+ name = {sit},
+ description = {amet}
+}
+
+@entry{tortor,
+ name = {tortor},
+ description = {gravida}
+}
+
+@entry{integer,
+ name = {integer},
+ description = {sapien}
+}
+
+@entry{est,
+ name = {est},
+ description = {iaculis}
+}
+
+@entry{in,
+ name = {in},
+ description = {pretium}
+}
+
+@entry{quis,
+ name = {quis},
+ description = {viverra}
+}
+
+@entry{ac,
+ name = {ac},
+ description = {nunc}
+}
+
+@entry{praesent,
+ name = {praesent},
+ description = {eget}
+}
+
+@entry{sem,
+ name = {sem},
+ description = {vel leo}
+}
+
+@entry{bibendum,
+ name = {bibendum},
+ description = {ultrices}
+}
+
+@entry{aenean,
+ name = {aenean},
+ description = {faucibus}
+}
+
+@entry{malesuada,
+ name = {malesuada},
+ description = {eu}
+}
+
+@entry{pulvinar,
+ name = {pulvinar},
+ description = {at}
+}
+
+@entry{mollis,
+ name = {mollis},
+ description = {ac nulla}
+}
+
+@entry{auctor,
+ name = {auctor},
+ description = {semper}
+}
+
+@entry{varius,
+ name = {varius},
+ description = {orci}
+}
+
+@entry{eget,
+ name = {eget},
+ description = {risus}
+}
+
+@entry{duis,
+ name = {duis},
+ description = {nibh}
+}
+
+@entry{mi,
+ name = {mi},
+ description = {congue}
+}
+
+@entry{accumsan,
+ name = {accumsan},
+ description = {eleifend}
+}
+
+@entry{sagittis,
+ name = {sagittis},
+ description = {quis}
+}
+
+@entry{diam,
+ name = {diam},
+ description = {duis}
+}
+
+@entry{orci,
+ name = {orci},
+ description = {dignissim}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-brief.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-childnoname.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{scelerisque,
+ name = {scelerisque},
+ description = {at}
+}
+
+@entry{vestibulum,
+ parent = {scelerisque},
+ description = {eu, nulla}
+}
+
+@entry{utodionisl,
+ parent = {scelerisque},
+ description = {facilisis id}
+}
+
+@entry{molliset,
+ parent = {scelerisque},
+ description = {nec, enim}
+}
+
+@entry{aeneansem,
+ parent = {scelerisque},
+ description = {sem leo}
+}
+
+@entry{pellentesquesit,
+ parent = {scelerisque},
+ description = {sit amet}
+}
+
+@entry{sapien,
+ parent = {scelerisque},
+ description = {vehicula
+pellentesque}
+}
+
+@entry{consequat,
+ parent = {scelerisque},
+ description = {tellus
+et tortor}
+}
+
+@entry{uttempor,
+ name = {ut tempor},
+ description = {laoreet
+quam}
+}
+
+@entry{nullamid,
+ parent = {uttempor},
+ description = {wisi a
+libero}
+}
+
+@entry{tristique,
+ parent = {uttempor},
+ description = {semper}
+}
+
+@entry{nullamnislmassa,
+ parent = {uttempor},
+ description = {rutrum
+ut}
+}
+
+@entry{eleifend,
+ name = {eleifend},
+ description = {sit amet
+faucibus}
+}
+
+@entry{elementum,
+ parent = {eleifend},
+ description = {elementum}
+}
+
+@entry{urnasapien,
+ parent = {eleifend},
+ description = {urna sapien}
+}
+
+@entry{consectetuermauris,
+ name = {consectetuer},
+ description = {mauris}
+}
+
+@entry{quisegestas,
+ parent = {consectetuermauris},
+ description = {quis egestas}
+}
+
+@entry{leojusto,
+ parent = {consectetuermauris},
+ description = {leo
+justo}
+}
+
+@entry{nonrisus,
+ name = {non risus},
+ description = {morbi non
+felis}
+}
+
+@entry{aclibero,
+ parent = {nonrisus},
+ description = {ac libero}
+}
+
+@entry{vulputatefringilla,
+ parent = {nonrisus},
+ description = {vulputate
+fringilla}
+}
+
+@entry{maurislibero,
+ name = {mauris},
+ description = {libero eros}
+}
+
+@entry{lacinia,
+ parent = {maurislibero},
+ description = {lacinia
+non}
+}
+
+@entry{sodales,
+ parent = {maurislibero},
+ description = {sodales
+quis}
+}
+
+@entry{dapibus,
+ parent = {maurislibero},
+ description = {dapibus
+porttitor, pede}
+}
+
+@entry{class,
+ name = {class},
+ description = {aptent taciti}
+}
+
+@entry{sociosqu,
+ parent = {class},
+ description = {sociosqu}
+}
+
+@entry{adlitora,
+ parent = {class},
+ description = {ad litora}
+}
+
+@entry{torquent,
+ parent = {class},
+ description = {torquent per
+conubia}
+}
+
+@entry{nostra,
+ name = {nostra},
+ description = {per inceptos
+hymenaeos}
+}
+
+@entry{morbidapibus,
+ parent = {nostra},
+ description = {morbi
+dapibus}
+}
+
+@entry{mauriscondimentum,
+ parent = {nostra},
+ description = {mauris
+condimentum nulla}
+}
+
+@entry{cumsociis,
+ name = {cum sociis},
+ description = {natoque
+penatibus}
+}
+
+@entry{etmagnis,
+ parent = {cumsociis},
+ description = {et
+magnis}
+}
+
+@entry{disparturient,
+ parent = {cumsociis},
+ description = {dis
+parturient montes}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-childnoname.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-cite.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{fusce,
+ user1 = {article-minimal},
+ name = {fusce},
+ description = {suscipit cursus sem}
+}
+
+@entry{vivamus,
+ user1 = {article-full},
+ name = {vivamus},
+ description = {risus mi, egestas ac}
+}
+
+@entry{imperdiet,
+ user1 = {whole-journal},
+ name = {imperdiet},
+ description = {varius, faucibus quis, leo}
+}
+
+@entry{aenean2,
+ user1 = {inbook-minimal},
+ name = {aenean},
+ description = {tincidunt}
+}
+
+@entry{crasid,
+ user1 = {inbook-full},
+ name = {cras id},
+ description = {justo quis nibh scelerisque dignissim}
+}
+
+@entry{aliquam2,
+ user1 = {book-minimal},
+ name = {aliquam},
+ description = {sagittis elementum dolor}
+}
+
+@entry{aeneanconsectetuer,
+ user1 = {book-full},
+ name = {aenean consectetuer},
+ description = {justo in pede}
+}
+
+@entry{curabiturullamcorper,
+ user1 = {booklet-minimal},
+ name = {curabitur ullamcorper},
+ description = {ligula nec orci}
+}
+
+@entry{aliquampurus,
+ user1 = {booklet-full},
+ name = {aliquam purus},
+ description = {turpis, aliquam id}
+}
+
+@entry{ornarevitae,
+ user1 = {incollection-minimal},
+ name = {ornare vitae},
+ description = {porttitor non, wisi}
+}
+
+@entry{maecenasluctus,
+ user1 = {incollection-full},
+ name = {maecenas luctus},
+ description = {porta lorem}
+}
+
+@entry{donecvitae,
+ user1 = {manual-minimal},
+ name = {donec vitae},
+ description = {ligula eu ante pretium varius}
+}
+
+@entry{proin,
+ user1 = {manual-full},
+ name = {proin},
+ description = {tortor metus, convallis et}
+}
+
+@entry{hendrerit,
+ user1 = {mastersthesis-minimal},
+ name = {hendrerit},
+ description = {non, scelerisque in, urna}
+}
+
+@entry{crasquis,
+ user1 = {mastersthesis-full},
+ name = {cras qui},
+ description = {libero eu ligula bibendum tempor}
+}
+
+@entry{vivamustellus,
+ user1 = {misc-minimal},
+ name = {vivamus tellus},
+ description = {quam, malesuada eu, tempus sed, tempor sed, velit}
+}
+
+@entry{doneclacinia,
+ user1 = {misc-full},
+ name = {donec lacinia},
+ description = {auctor libero}
+}
+
+@entry{praesent2,
+ user1 = {inproceedings-minimal},
+ name = {praesent},
+ description = {sed neque id pede mollis rutrum}
+}
+
+@entry{vestibulum2,
+ user1 = {inproceedings-minimal,phdthesis-minimal},
+ name = {vestibulum},
+ description = {iaculis risus}
+}
+
+@entry{pellentesque2,
+ name = {pellentesque},
+ description = {lacus}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-cite.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-images.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{sedfeugiat,
+ user1 = {example-image},
+ name = {sed feugiat},
+ description = {Cum sociis natoque penatibus et magnis dis parturient montes,
+nascetur ridiculus mus. Ut pellentesque augue sed urna. Vestibulum
+diam eros, fringilla et, consectetuer eu, nonummy id, sapien. Nullam
+at lectus. In sagittis ultrices mauris. Curabitur malesuada erat sit
+amet massa. Fusce blandit. Aliquam erat volutpat. Aliquam euismod.
+Aenean vel lectus. Nunc imperdiet justo nec dolor.
+
+Etiam euismod. Fusce facilisis lacinia dui. Suspendisse potenti. In
+mi erat, cursus id, nonummy sed, ullamcorper eget, sapien. Praesent
+pretium, magna in eleifend egestas, pede pede pretium lorem, quis
+consectetuer tortor sapien facilisis magna. Mauris quis magna
+varius nulla scelerisque imperdiet. Aliquam non quam. Aliquam
+porttitor quam a lacus. Praesent vel arcu ut tortor cursus volutpat.
+In vitae pede quis diam bibendum placerat. Fusce elementum convallis
+neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut,
+mi. Duis nec dui quis leo sagittis commodo.
+}
+}
+
+@entry{aliquamlectus,
+ user1 = {example-image-a},
+ name = {aliquam lectus},
+ description = {Vivamus leo. Quisque ornare tellus ullamcorper nulla. Mauris
+porttitor pharetra tortor. Sed fringilla justo sed mauris. Mauris
+tellus. Sed non leo. Nullam elementum, magna in cursus sodales,
+augue est scelerisque sapien, venenatis congue nulla arcu et pede.
+Ut suscipit enim vel sapien. Donec congue. Maecenas urna mi,
+suscipit in, placerat ut, vestibulum ut, massa. Fusce ultrices nulla
+et nisl.
+
+Etiam ac leo a risus tristique nonummy. Donec dignissim tincidunt
+nulla. Vestibulum rhoncus molestie odio. Sed lobortis, justo et
+pretium lobortis, mauris turpis condimentum augue, nec ultricies
+nibh arcu pretium enim. Nunc purus neque, placerat id, imperdiet
+sed, pellentesque nec, nisl. Vestibulum imperdiet neque non sem
+accumsan laoreet. In hac habitasse platea dictumst. Etiam
+condimentum facilisis libero. Suspendisse in elit quis nisl aliquam
+dapibus. Pellentesque auctor sapien. Sed egestas sapien nec lectus.
+Pellentesque vel dui vel neque bibendum viverra. Aliquam porttitor
+nisl nec pede. Proin mattis libero vel turpis. Donec rutrum mauris
+et libero. Proin euismod porta felis. Nam lobortis, metus quis
+elementum commodo, nunc lectus elementum mauris, eget vulputate
+ligula tellus eu neque. Vivamus eu dolor.
+}
+}
+
+@entry{nullainipsum,
+ user1 = {example-image-b},
+ name = {nulla in ipsum},
+ description = {Praesent eros nulla, congue vitae, euismod ut, commodo a, wisi.
+Pellentesque habitant morbi tristique senectus et netus et malesuada
+fames ac turpis egestas. Aenean nonummy magna non leo. Sed felis
+erat, ullamcorper in, dictum non, ultricies ut, lectus. Proin vel
+arcu a odio lobortis euismod. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Proin ut
+est. Aliquam odio. Pellentesque massa turpis, cursus eu, euismod
+nec, tempor congue, nulla. Duis viverra gravida mauris. Cras
+tincidunt. Curabitur eros ligula, varius ut, pulvinar in, cursus
+faucibus, augue.
+
+Nulla mattis luctus nulla. Duis commodo velit at leo. Aliquam
+vulputate magna et leo. Nam vestibulum ullamcorper leo. Vestibulum
+condimentum rutrum mauris. Donec id mauris. Morbi molestie justo et
+pede. Vivamus eget turpis sed nisl cursus tempor. Curabitur mollis
+sapien condimentum nunc. In wisi nisl, malesuada at, dignissim sit
+amet, lobortis in, odio. Aenean consequat arcu a ante. Pellentesque
+porta elit sit amet orci. Etiam at turpis nec elit ultricies
+imperdiet. Nulla facilisi. In hac habitasse platea dictumst.
+Suspendisse viverra aliquam risus. Nullam pede justo, molestie
+nonummy, scelerisque eu, facilisis vel, arcu.
+}
+}
+
+@entry{curabiturtellusmagna,
+ user1 = {example-image-c},
+ name = {curabitur tellus magna},
+ description = {Donec interdum. Praesent scelerisque. Maecenas posuere sodales
+odio. Vivamus metus lacus, varius quis, imperdiet quis, rhoncus a,
+turpis. Etiam ligula arcu, elementum a, venenatis quis, sollicitudin
+sed, metus. Donec nunc pede, tincidunt in, venenatis vitae, faucibus
+vel, nibh. Pellentesque wisi. Nullam malesuada. Morbi ut tellus ut
+pede tincidunt porta. Lorem ipsum dolor sit amet, consectetuer
+adipiscing elit. Etiam congue neque id dolor.
+
+Donec et nisl at wisi luctus bibendum. Nam interdum tellus ac
+libero. Sed sem justo, laoreet vitae, fringilla at, adipiscing ut,
+nibh. Maecenas non sem quis tortor eleifend fermentum. Etiam id
+tortor ac mauris porta vulputate. Integer porta neque vitae massa.
+Maecenas tempus libero a libero posuere dictum. Vestibulum ante
+ipsum primis in faucibus orci luctus et ultrices posuere cubilia
+Curae; Aenean quis mauris sed elit commodo placerat. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+hymenaeos. Vivamus rhoncus tincidunt libero. Etiam elementum pretium
+justo. Vivamus est. Morbi a tellus eget pede tristique commodo.
+Nulla nisl. Vestibulum sed nisl eu sapien cursus rutrum.
+}
+}
+
+@entry{nullanonmauris,
+ user1 = {example-image-16x10},
+ name = {nulla non mauris},
+ description = {Nullam varius. Etiam dignissim elementum metus. Vestibulum faucibus,
+metus sit amet mattis rhoncus, sapien dui laoreet odio, nec
+ultricies nibh augue a enim. Fusce in ligula. Quisque at magna et
+nulla commodo consequat. Proin accumsan imperdiet sem. Nunc porta.
+Donec feugiat mi at justo. Phasellus facilisis ipsum quis ante. In
+ac elit eget ipsum pharetra faucibus. Maecenas viverra nulla in
+massa.
+
+Nulla ac nisl. Nullam urna nulla, ullamcorper in, interdum sit amet,
+gravida ut, risus. Aenean ac enim. In luctus. Phasellus eu quam
+vitae turpis viverra pellentesque. Duis feugiat felis ut enim.
+Phasellus pharetra, sem id porttitor sodales, magna nunc aliquet
+nibh, nec blandit nisl mauris at pede. Suspendisse risus risus,
+lobortis eget, semper at, imperdiet sit amet, quam. Quisque
+scelerisque dapibus nibh. Nam enim. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. Nunc ut metus. Ut metus justo, auctor
+at, ultrices eu, sagittis ut, purus. Aliquam aliquam.
+}
+}
+
+@entry{etiampedemassa,
+ user1 = {example-image-10x16},
+ name = {etiam pede massa},
+ description = {Vestibulum luctus commodo lacus. Morbi lacus dui, tempor sed,
+euismod eget, condimentum at, tortor. Phasellus aliquet odio ac
+lacus tempor faucibus. Praesent sed sem. Praesent iaculis. Cras
+rhoncus tellus sed justo ullamcorper sagittis. Donec quis orci.
+Sed ut tortor quis tellus euismod tincidunt. Suspendisse congue nisl
+eu elit. Aliquam tortor diam, tempus id, tristique eget, sodales
+vel, nulla. Praesent tellus mi, condimentum sed, viverra at,
+consectetuer quis, lectus. In auctor vehicula orci. Sed pede sapien,
+euismod in, suscipit in, pharetra placerat, metus. Vivamus commodo
+dui non odio. Donec et felis.
+
+Etiam suscipit aliquam arcu. Aliquam sit amet est ac purus bibendum
+congue. Sed in eros. Morbi non orci. Pellentesque mattis lacinia
+elit. Fusce molestie velit in ligula. Nullam et orci vitae nibh
+vulputate auctor. Aliquam eget purus. Nulla auctor wisi sed ipsum.
+Morbi porttitor tellus ac enim. Fusce ornare. Proin ipsum enim,
+tincidunt in, ornare venenatis, molestie a, augue. Donec vel pede in
+lacus sagittis porta. Sed hendrerit ipsum quis nisl. Suspendisse
+quis massa ac nibh pretium cursus. Sed sodales. Nam eu neque quis
+pede dignissim ornare. Maecenas eu purus ac urna tincidunt congue.
+}
+}
+
+@entry{donecetnisl,
+ user1 = {example-image-16x9},
+ name = {donec et nisl},
+ description = {Aenean dictum odio sit amet risus. Morbi purus. Nulla a est sit amet
+purus venenatis iaculis. Vivamus viverra purus vel magna. Donec in
+justo sed odio malesuada dapibus. Nunc ultrices aliquam nunc.
+Vivamus facilisis pellentesque velit. Nulla nunc velit, vulputate
+dapibus, vulputate id, mattis ac, justo. Nam mattis elit dapibus
+purus. Quisque enim risus, congue non, elementum ut, mattis quis,
+sem. Quisque elit.
+
+Maecenas non massa. Vestibulum pharetra nulla at lorem. Duis quis
+quam id lacus dapibus interdum. Nulla lorem. Donec ut ante quis
+dolor bibendum condimentum. Etiam egestas tortor vitae lacus.
+Praesent cursus. Mauris bibendum pede at elit. Morbi et felis a
+lectus interdum facilisis. Sed suscipit gravida turpis. Nulla at
+lectus. Vestibulum ante ipsum primis in faucibus orci luctus et
+ultrices posuere cubilia Curae; Praesent nonummy luctus nibh. Proin
+turpis nunc, congue eu, egestas ut, fringilla at, tellus. In hac
+habitasse platea dictumst.
+}
+}
+
+@entry{vivamuseutellus,
+ user1 = {example-image-9x16},
+ name = {vivamus eu tellus},
+ description = {Nam orci orci, malesuada id, gravida nec, ultricies vitae, erat.
+Donec risus turpis, luctus sit amet, interdum quis, porta sed,
+ipsum. Suspendisse condimentum, tortor at egestas posuere, neque
+metus tempor orci, et tincidunt urna nunc a purus. Sed facilisis
+blandit tellus. Nunc risus sem, suscipit nec, eleifend quis, cursus
+quis, libero. Curabitur et dolor. Sed vitae sem. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+Maecenas ante. Duis ullamcorper enim. Donec tristique enim eu leo.
+Nullam molestie elit eu dolor. Nullam bibendum, turpis vitae
+tristique gravida, quam sapien tempor lectus, quis pretium tellus
+purus ac quam. Nulla facilisi.
+
+Duis aliquet dui in est. Donec eget est. Nunc lectus odio, varius
+at, fermentum in, accumsan non, enim. Aliquam erat volutpat. Proin
+sit amet nulla ut eros consectetuer cursus. Phasellus dapibus
+aliquam justo. Nunc laoreet. Donec consequat placerat magna. Duis
+pretium tincidunt justo. Sed sollicitudin vestibulum quam. Nam quis
+ligula. Vivamus at metus. Etiam imperdiet imperdiet pede. Aenean
+turpis. Fusce augue velit, scelerisque sollicitudin, dictum vitae,
+tempor et, pede. Donec wisi sapien, feugiat in, fermentum ut,
+sollicitudin adipiscing, metus.
+}
+}
+
+@entry{donecvelnibh,
+ user1 = {example-image-golden},
+ name = {donec vel nibh},
+ description = {Donec pede. Sed id quam id wisi laoreet suscipit. Nulla lectus
+dolor, aliquam ac, fringilla eget, mollis ut, orci. In pellentesque
+justo in ligula. Maecenas turpis. Donec eleifend leo at felis
+tincidunt consequat. Aenean turpis metus, malesuada sed, condimentum
+sit amet, auctor a, wisi. Pellentesque sapien elit, bibendum ac,
+posuere et, congue eu, felis. Vestibulum mattis libero quis metus
+scelerisque ultrices. Sed purus.
+
+Donec molestie, magna ut luctus ultrices, tellus arcu nonummy velit,
+sit amet pulvinar elit justo et mauris. In pede. Maecenas euismod
+elit eu erat. Aliquam augue wisi, facilisis congue, suscipit in,
+adipiscing et, ante. In justo. Cras lobortis neque ac ipsum. Nunc
+fermentum massa at ante. Donec orci tortor, egestas sit amet,
+ultrices eget, venenatis eget, mi. Maecenas vehicula leo semper
+est. Mauris vel metus. Aliquam erat volutpat. In rhoncus sapien ac
+tellus. Pellentesque ligula.
+}
+}
+
+@entry{crasdapibus,
+ user1 = {example-image-golden-upright},
+ name = {cras dapibus},
+ description = {Aenean interdum nibh sed wisi. Praesent sollicitudin vulputate dui.
+Praesent iaculis viverra augue. Quisque in libero. Aenean gravida
+lorem vitae sem ullamcorper cursus. Nunc adipiscing rutrum ante.
+Nunc ipsum massa, faucibus sit amet, viverra vel, elementum semper,
+orci. Cras eros sem, vulputate et, tincidunt id, ultrices eget,
+magna. Nulla varius ornare odio. Donec accumsan mauris sit amet
+augue. Sed ligula lacus, laoreet non, aliquam sit amet, iaculis
+tempor, lorem. Suspendisse eros. Nam porta, leo sed congue tempor,
+felis est ultrices eros, id mattis velit felis non metus. Curabitur
+vitae elit non mauris varius pretium. Aenean lacus sem, tincidunt
+ut, consequat quis, porta vitae, turpis. Nullam laoreet fermentum
+urna. Proin iaculis lectus.
+
+Sed mattis, erat sit amet gravida malesuada, elit augue egestas
+diam, tempus scelerisque nunc nisl vitae libero. Sed consequat
+feugiat massa. Nunc porta, eros in eleifend varius, erat leo rutrum
+dui, non convallis lectus orci ut nibh. Sed lorem massa, nonummy
+quis, egestas id, condimentum at, nisl. Maecenas at nibh. Aliquam
+et augue at nunc pellentesque ullamcorper. Duis nisl nibh, laoreet
+suscipit, convallis ut, rutrum id, enim. Phasellus odio. Nulla
+nulla elit, molestie non, scelerisque at, vestibulum eu, nulla. Ut
+odio nisl, facilisis id, mollis et, scelerisque nec, enim. Aenean
+sem leo, pellentesque sit amet, scelerisque sit amet, vehicula
+pellentesque, sapien.
+}
+}
+
+@entry{sedconsequat,
+ user1 = {example-image-1x1},
+ name = {sed consequat},
+ description = {Ut tempor laoreet quam. Nullam id wisi a libero tristique semper.
+Nullam nisl massa, rutrum ut, egestas semper, mollis id, leo. Nulla
+ac massa eu risus blandit mattis. Mauris ut nunc. In hac habitasse
+platea dictumst. Aliquam eget tortor. Quisque dapibus pede in erat.
+Nunc enim. In dui nulla, commodo at, consectetuer nec, malesuada
+nec, elit. Aliquam ornare tellus eu urna. Sed nec metus. Cum sociis
+natoque penatibus et magnis dis parturient montes, nascetur
+ridiculus mus. Pellentesque habitant morbi tristique senectus et
+netus et malesuada fames ac turpis egestas.
+
+Phasellus id magna. Duis malesuada interdum arcu. Integer metus.
+Morbi pulvinar pellentesque mi. Suspendisse sed est eu magna
+molestie egestas. Quisque mi lorem, pulvinar eget, egestas quis,
+luctus at, ante. Proin auctor vehicula purus. Fusce ac nisl aliquam
+ante hendrerit pellentesque. Class aptent taciti sociosqu ad litora
+torquent per conubia nostra, per inceptos hymenaeos. Morbi wisi.
+Etiam arcu mauris, facilisis sed, eleifend non, nonummy ut, pede.
+Cras ut lacus tempor metus mollis placerat. Vivamus eu tortor vel
+metus interdum malesuada.
+}
+}
+
+@entry{sedeleifend,
+ name = {sed eleifend},
+ description = {Morbi non felis ac libero vulputate fringilla. Mauris libero eros,
+lacinia non, sodales quis, dapibus porttitor, pede. Class aptent
+taciti sociosqu ad litora torquent per conubia nostra, per inceptos
+hymenaeos. Morbi dapibus mauris condimentum nulla. Cum sociis
+natoque penatibus et magnis dis parturient montes, nascetur
+ridiculus mus. Etiam sit amet erat. Nulla varius. Etiam tincidunt
+dui vitae turpis. Donec leo. Morbi vulputate convallis est. Integer
+aliquet. Pellentesque aliquet sodales urna.
+}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-images.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-long.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{loremipsum,
+ name = {lorem ipsum},
+ description = {dolor sit amet, consectetuer adipiscing elit. Ut purus
+elit, vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
+dictum gravida mauris.}
+}
+
+@entry{namearcu,
+ name = {name arcu},
+ description = {libero, nonummy eget, consectetuer id, vulputate a, magna. Donec
+vehicula augue eu neque. Pellentesque habitant morbi tristique
+senectus et netus et malesuada fames ac turpis egestas. Mauris ut
+leo.}
+}
+
+@entry{crasviverra,
+ name = {cras viverra},
+ description = {metus rhoncus sem. Nulla et lectus vestibulum
+urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida
+placerat.}
+}
+
+@entry{integersapien,
+ name = {integer sapien},
+ description = {est, iaculis in, pretium quis, viverra ac,
+nunc. Praesent eget sem vel leo ultrices bibendum. Aenean
+faucibus.}
+}
+
+@entry{morbidolor,
+ name = {morbi dolor},
+ description = {nulla, malesuada eu, pulvinar at, mollis ac, nulla.
+Curabitur auctor semper nulla. Donec varius orci eget risus. Duis
+nibh mi, congue eu, accumsan eleifend, sagittis quis, diam. Duis
+eget orci sit amet orci dignissim rutrum.}
+}
+
+@entry{namdui,
+ name = {nam dui},
+ description = {ligula, fringilla a, euismod sodales,
+sollicitudin vel, wisi. Morbi auctor lorem non justo.}
+}
+
+@entry{namlacus,
+ name = {nam lacus},
+ description = {libero, pretium at, lobortis vitae, ultricies et,
+tellus. Donec aliquet, tortor sed accumsan bibendum, erat ligula aliquet magna,
+vitae ornare odio metus a mi.}
+}
+
+@entry{morbiac,
+ name = {morbi ac},
+ description = {orci et nisl hendrerit mollis. Suspendisse ut massa.
+Cras nec ante. Pellentesque a nulla. Cum sociis natoque penatibus
+et magnis dis parturient montes, nascetur ridiculus mus.}
+}
+
+@entry{aliquam,
+ name = {aliquam},
+ description = {tincidunt urna. Nulla ullamcorper
+vestibulum turpis. Pellentesque cursus luctus mauris.}
+}
+
+@entry{nullamalesuada,
+ name = {nulla malesuada},
+ description = {porttitor diam. Donec felis erat, congue non, volutpat at,
+tincidunt tristique, libero. Vivamus viverra fermentum felis.}
+}
+
+@entry{donecnonummy,
+ name = {donec nonummy},
+ description = {pellentesque ante. Phasellus
+adipiscing semper elit. Proin fermentum massa ac quam. Sed diam
+turpis, molestie vitae, placerat a, molestie nec, leo.}
+}
+
+@entry{maecenaslacinia,
+ name = {maecenas lacinia},
+ description = {nam ipsum ligula, eleifend at, accumsan nec, suscipit
+a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat
+lorem.}
+}
+
+@entry{sedlacinia,
+ name = {sed lacinia},
+ description = {nulla vitae enim. Pellentesque tincidunt purus
+vel magna. Integer non enim. Praesent euismod nunc eu purus. Donec
+bibendum quam in tellus.}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-long.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-multipar.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{loremi-ii,
+ name = {lorem 1--2},
+ description = {Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit,
+vestibulum ut, placerat ac, adipiscing vitae, felis. Curabitur
+dictum gravida mauris. Nam arcu libero, nonummy eget, consectetuer
+id, vulputate a, magna. Donec vehicula augue eu neque. Pellentesque
+habitant morbi tristique senectus et netus et malesuada fames ac
+turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla
+et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus
+sit amet tortor gravida placerat. Integer sapien est, iaculis in,
+pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices
+bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar
+at, mollis ac, nulla. Curabitur auctor semper nulla. Donec varius
+orci eget risus. Duis nibh mi, congue eu, accumsan eleifend,
+sagittis quis, diam. Duis eget orci sit amet orci dignissim rutrum.
+
+Nam dui ligula, fringilla a, euismod sodales, sollicitudin vel,
+wisi. Morbi auctor lorem non justo. Nam lacus libero, pretium at,
+lobortis vitae, ultricies et, tellus. Donec aliquet, tortor sed
+accumsan bibendum, erat ligula aliquet magna, vitae ornare odio
+metus a mi. Morbi ac orci et nisl hendrerit mollis. Suspendisse ut
+massa. Cras nec ante. Pellentesque a nulla. Cum sociis natoque
+penatibus et magnis dis parturient montes, nascetur ridiculus mus.
+Aliquam tincidunt urna. Nulla ullamcorper vestibulum turpis.
+Pellentesque cursus luctus mauris.}
+}
+
+@entry{loremiii-iv,
+ name = {lorem 3--4},
+ description = {Nulla malesuada porttitor diam. Donec felis erat, congue non,
+volutpat at, tincidunt tristique, libero. Vivamus viverra fermentum
+felis. Donec nonummy pellentesque ante. Phasellus adipiscing semper
+elit. Proin fermentum massa ac quam. Sed diam turpis, molestie
+vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum
+ligula, eleifend at, accumsan nec, suscipit a, ipsum. Morbi blandit
+ligula feugiat magna. Nunc eleifend consequat lorem. Sed lacinia
+nulla vitae enim. Pellentesque tincidunt purus vel magna. Integer
+non enim. Praesent euismod nunc eu purus. Donec bibendum quam in
+tellus. Nullam cursus pulvinar lectus. Donec et mi. Nam vulputate
+metus eu enim. Vestibulum pellentesque felis eu massa.
+
+Quisque ullamcorper placerat ipsum. Cras nibh. Morbi vel justo
+vitae lacus tincidunt ultrices. Lorem ipsum dolor sit amet,
+consectetuer adipiscing elit. In hac habitasse platea dictumst.
+Integer tempus convallis augue. Etiam facilisis. Nunc elementum
+fermentum wisi. Aenean placerat. Ut imperdiet, enim sed gravida
+sollicitudin, felis odio placerat quam, ac pulvinar elit purus eget
+enim. Nunc vitae tortor. Proin tempus nibh sit amet nisl. Vivamus
+quis tortor vitae risus porta vehicula.}
+}
+
+@entry{loremv-vi,
+ name = {lorem 5--6},
+ description = {Fusce mauris. Vestibulum luctus nibh at lectus. Sed bibendum, nulla
+a faucibus semper, leo velit ultricies tellus, ac venenatis arcu
+wisi vel nisl. Vestibulum diam. Aliquam pellentesque, augue quis
+sagittis posuere, turpis lacus congue quam, in hendrerit risus eros
+eget felis. Maecenas eget erat in sapien mattis porttitor.
+Vestibulum porttitor. Nulla facilisi. Sed a turpis eu lacus commodo
+facilisis. Morbi fringilla, wisi in dignissim interdum, justo lectus
+sagittis dui, et vehicula libero dui cursus dui. Mauris tempor
+ligula sed lacus. Duis cursus enim ut augue. Cras ac magna. Cras
+nulla. Nulla egestas. Curabitur a leo. Quisque egestas wisi eget
+nunc. Nam feugiat lacus vel est. Curabitur consectetuer.%
+
+
+Suspendisse vel felis. Ut lorem lorem, interdum eu, tincidunt sit
+amet, laoreet vitae, arcu. Aenean faucibus pede eu ante. Praesent
+enim elit, rutrum at, molestie non, nonummy vel, nisl. Ut lectus
+eros, malesuada sit amet, fermentum eu, sodales cursus, magna. Donec
+eu purus. Quisque vehicula, urna sed ultricies auctor, pede lorem
+egestas dui, et convallis elit erat sed nulla. Donec luctus.
+Curabitur et nunc. Aliquam dolor odio, commodo pretium, ultricies
+non, pharetra in, velit. Integer arcu est, nonummy in, fermentum
+faucibus, egestas vel, odio.}
+}
+
+@entry{loremvii-viii,
+ name = {lorem 7--8},
+ description = {Sed commodo posuere pede. Mauris ut est. Ut quis purus. Sed ac odio.
+Sed vehicula hendrerit sem. Duis non odio. Morbi ut dui. Sed
+accumsan risus eget odio. In hac habitasse platea dictumst.
+Pellentesque non elit. Fusce sed justo eu urna porta tincidunt.
+Mauris felis odio, sollicitudin sed, volutpat a, ornare ac, erat.
+Morbi quis dolor. Donec pellentesque, erat ac sagittis semper, nunc
+dui lobortis purus, quis congue purus metus ultricies tellus. Proin
+et quam. Class aptent taciti sociosqu ad litora torquent per conubia
+nostra, per inceptos hymenaeos. Praesent sapien turpis, fermentum
+vel, eleifend faucibus, vehicula eu, lacus.
+
+Pellentesque habitant morbi tristique senectus et netus et malesuada
+fames ac turpis egestas. Donec odio elit, dictum in, hendrerit sit
+amet, egestas sed, leo. Praesent feugiat sapien aliquet odio.
+Integer vitae justo. Aliquam vestibulum fringilla lorem. Sed neque
+lectus, consectetuer at, consectetuer sed, eleifend ac, lectus.
+Nulla facilisi. Pellentesque eget lectus. Proin eu metus. Sed
+porttitor. In hac habitasse platea dictumst. Suspendisse eu lectus.
+Ut mi mi, lacinia sit amet, placerat et, mollis vitae, dui. Sed ante
+tellus, tristique ut, iaculis eu, malesuada ac, dui. Mauris nibh
+leo, facilisis non, adipiscing quis, ultrices a, dui.}
+}
+
+@entry{loremix-x,
+ name = {lorem 9--10},
+ description = {Morbi luctus, wisi viverra faucibus pretium, nibh est placerat odio,
+nec commodo wisi enim eget quam. Quisque libero justo, consectetuer
+a, feugiat vitae, porttitor eu, libero. Suspendisse sed mauris
+vitae elit sollicitudin malesuada. Maecenas ultricies eros sit amet
+ante. Ut venenatis velit. Maecenas sed mi eget dui varius euismod.
+Phasellus aliquet volutpat odio. Vestibulum ante ipsum primis in
+faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque
+sit amet pede ac sem eleifend consectetuer. Nullam elementum, urna
+vel imperdiet sodales, elit ipsum pharetra ligula, ac pretium ante
+justo a nulla. Curabitur tristique arcu eu metus. Vestibulum lectus.
+Proin mauris. Proin eu nunc eu urna hendrerit faucibus. Aliquam
+auctor, pede consequat laoreet varius, eros tellus scelerisque quam,
+pellentesque hendrerit ipsum dolor sed augue. Nulla nec lacus.
+
+Suspendisse vitae elit. Aliquam arcu neque, ornare in, ullamcorper
+quis, commodo eu, libero. Fusce sagittis erat at erat tristique
+mollis. Maecenas sapien libero, molestie et, lobortis in, sodales
+eget, dui. Morbi ultrices rutrum lorem. Nam elementum ullamcorper
+leo. Morbi dui. Aliquam sagittis. Nunc placerat. Pellentesque
+tristique sodales est. Maecenas imperdiet lacinia velit. Cras non
+urna. Morbi eros pede, suscipit ac, varius vel, egestas non, eros.
+Praesent malesuada, diam id pretium elementum, eros sem dictum
+tortor, vel consectetuer odio sem sed wisi.}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-multipar.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-parent.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{sedmattis,
+ name = {sed mattis},
+ description = {erat sit amet}
+}
+
+@entry{nunc,
+ name = {nunc},
+ description = {nisl vitae}
+}
+
+@entry{nonconvallis,
+ name = {non
+convallis},
+ description = {lectus orci ut nibh}
+}
+
+@entry{condimentum,
+ name = {condimentum},
+ description = {at
+nisl}
+}
+
+@entry{aliquamet,
+ name = {aliquam et},
+ description = {augue}
+}
+
+@entry{rutrum,
+ name = {rutrum},
+ description = {id, enim}
+}
+
+% child entries:
+
+
+@entry{gravida,
+ parent = {sedmattis},
+ name = {gravida},
+ description = {malesuada}
+}
+
+@entry{elitaugue,
+ parent = {sedmattis},
+ name = {elit augue},
+ description = {egestas diam}
+}
+
+@entry{tempus,
+ parent = {sedmattis},
+ name = {tempus},
+ description = {scelerisque}
+}
+
+@entry{libero,
+ parent = {nunc},
+ name = {libero},
+ description = {sed
+consequat}
+}
+
+@entry{feugiat,
+ parent = {nunc},
+ name = {feugiat},
+ description = {massa}
+}
+
+@entry{porta,
+ parent = {nunc},
+ name = {porta},
+ description = {eros
+in eleifend}
+}
+
+@entry{variuserat,
+ parent = {nunc},
+ name = {varius erat},
+ description = {leo rutrum dui}
+}
+
+@entry{sedlorem,
+ parent = {nonconvallis},
+ name = {sedlorem},
+ description = {massa}
+}
+
+@entry{nonummyquis,
+ parent = {nonconvallis},
+ name = {nonummy
+quis},
+ description = {egestas id}
+}
+
+@entry{maecenas,
+ parent = {condimentum},
+ name = {maecenas},
+ description = {at nibh}
+}
+
+@entry{atnunc,
+ parent = {aliquamet},
+ name = {at nunc},
+ description = {pellentesque
+ullamcorper}
+}
+
+@entry{phasellus,
+ parent = {rutrum},
+ name = {phasellus},
+ description = {odio}
+}
+
+@entry{nullanulla,
+ parent = {rutrum},
+ name = {nulla nulla},
+ description = {elit, molestie non}
+}
+
+% level 2:
+
+@entry{duisnisl,
+ parent = {atnunc},
+ name = {duisnisl},
+ description = {laoreet
+suscipit}
+}
+
+@entry{duisnibh,
+ parent = {atnunc},
+ name = {duisnibh},
+ description = {convallis ut}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-parent.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-symbolnames.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+% Encoding: UTF-8
+@entry{sym.alpha,
+ name = {\ensuremath{\alpha}},
+ description = {Quisque ullamcorper placerat ipsum.}
+}
+
+@entry{sym.beta,
+ name = {\ensuremath{\beta}},
+ description = {Cras nibh.}
+}
+
+@entry{sym.gamma,
+ name = {\ensuremath{\gamma}},
+ description = {Morbi vel justo vitae lacus tincidunt ultrices.}
+}
+
+@entry{sym.delta,
+ name = {\ensuremath{\delta}},
+ description = {Lorem ipsum dolor sit amet, consectetuer adipiscing
+elit.}
+}
+
+@entry{sym.epsilon,
+ name = {\ensuremath{\epsilon}},
+ description = {In hac habitasse platea dictumst.}
+}
+
+@entry{sym.zeta,
+ name = {\ensuremath{\zeta}},
+ description = {Integer tempus convallis augue.}
+}
+
+@entry{sym.eta,
+ name = {\ensuremath{\eta}},
+ description = {Etiam facilisis.}
+}
+
+@entry{sym.theta,
+ name = {\ensuremath{\theta}},
+ description = {Nunc elementum fermentum wisi.}
+}
+
+@entry{sym.iota,
+ name = {\ensuremath{i}},
+ description = {Aenean placerat.}
+}
+
+@entry{sym.kappa,
+ name = {\ensuremath{\kappa}},
+ description = {Ut imperdiet, enim sed gravida sollicitudin, felis odio
+placerat quam, ac pulvinar elit purus eget enim.}
+}
+
+@entry{sym.lambda,
+ name = {\ensuremath{\lambda}},
+ description = {Nunc vitae tortor.}
+}
+
+@entry{sym.mu,
+ name = {\ensuremath{\mu}},
+ description = {Proin tempus nibh sit amet nisl.}
+}
+
+@entry{sym.nu,
+ name = {\ensuremath{\nu}},
+ description = {Vivamus quis tortor vitae risus porta vehicula.}
+}
+
+@entry{sym.xi,
+ name = {\ensuremath{\xi}},
+ description = {Fusce mauris.}
+}
+
+@entry{sym.pi,
+ name = {\ensuremath{\pi}},
+ description = {Vestibulum luctus nibh at lectus.}
+}
+
+@entry{sym.rho,
+ name = {\ensuremath{\rho}},
+ description = {Sed bibendum, nulla a faucibus semper, leo velit
+ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.}
+}
+
+@entry{sym.sigma,
+ name = {\ensuremath{\sigma}},
+ description = {Aliquam pellentesque, augue quis sagittis posuere,
+turpis lacus congue quam, in hendrerit risus eros eget felis.}
+}
+
+@entry{sym.tau,
+ name = {\ensuremath{\tau}},
+ description = {Maecenas eget erat in sapien mattis porttitor.}
+}
+
+@entry{sym.upsilon,
+ name = {\ensuremath{\upsilon}},
+ description = {Vestibulum porttitor.}
+}
+
+@entry{sym.phi,
+ name = {\ensuremath{\phi}},
+ description = {Nulla facilisi.}
+}
+
+@entry{sym.chi,
+ name = {\ensuremath{\chi}},
+ description = {Sed a turpis eu lacus commodo facilisis.}
+}
+
+@entry{sym.psi,
+ name = {\ensuremath{\psi}},
+ description = {Morbi fringilla, wisi in dignissim interdum, justo
+lectus sagittis dui, et vehicula libero dui cursus dui.}
+}
+
+@entry{sym.omega,
+ name = {\ensuremath{\omega}},
+ description = {Mauris tempor ligula sed lacus.}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-symbolnames.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-symbols.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{alpha,
+ symbol = {\ensuremath{\alpha}},
+ name = {alpha},
+ description = {Quisque ullamcorper placerat ipsum.}
+}
+
+@entry{beta,
+ symbol = {\ensuremath{\beta}},
+ name = {beta},
+ description = {Cras nibh.}
+}
+
+@entry{gamma,
+ symbol = {\ensuremath{\gamma}},
+ name = {gamma},
+ description = {Morbi vel justo vitae lacus tincidunt ultrices.}
+}
+
+@entry{delta,
+ symbol = {\ensuremath{\delta}},
+ name = {delta},
+ description = {Lorem ipsum dolor sit amet, consectetuer adipiscing
+elit.}
+}
+
+@entry{epsilon,
+ symbol = {\ensuremath{\epsilon}},
+ name = {epsilon},
+ description = {In hac habitasse platea dictumst.}
+}
+
+@entry{zeta,
+ symbol = {\ensuremath{\zeta}},
+ name = {zeta},
+ description = {Integer tempus convallis augue.}
+}
+
+@entry{eta,
+ symbol = {\ensuremath{\eta}},
+ name = {eta},
+ description = {Etiam facilisis.}
+}
+
+@entry{theta,
+ symbol = {\ensuremath{\theta}},
+ name = {theta},
+ description = {Nunc elementum fermentum wisi.}
+}
+
+@entry{iota,
+ symbol = {\ensuremath{i}},
+ name = {iota},
+ description = {Aenean placerat.}
+}
+
+@entry{kappa,
+ symbol = {\ensuremath{\kappa}},
+ name = {kappa},
+ description = {Ut imperdiet, enim sed gravida sollicitudin, felis odio
+placerat quam, ac pulvinar elit purus eget enim.}
+}
+
+@entry{lambda,
+ symbol = {\ensuremath{\lambda}},
+ name = {lambda},
+ description = {Nunc vitae tortor.}
+}
+
+@entry{mu,
+ symbol = {\ensuremath{\mu}},
+ name = {mu},
+ description = {Proin tempus nibh sit amet nisl.}
+}
+
+@entry{nu,
+ symbol = {\ensuremath{\nu}},
+ name = {nu},
+ description = {Vivamus quis tortor vitae risus porta vehicula.}
+}
+
+@entry{xi,
+ symbol = {\ensuremath{\xi}},
+ name = {xi},
+ description = {Fusce mauris.}
+}
+
+@entry{pi,
+ symbol = {\ensuremath{\pi}},
+ name = {pi},
+ description = {Vestibulum luctus nibh at lectus.}
+}
+
+@entry{rho,
+ symbol = {\ensuremath{\rho}},
+ name = {rho},
+ description = {Sed bibendum, nulla a faucibus semper, leo velit
+ultricies tellus, ac venenatis arcu wisi vel nisl. Vestibulum diam.}
+}
+
+@entry{sigma,
+ symbol = {\ensuremath{\sigma}},
+ name = {sigma},
+ description = {Aliquam pellentesque, augue quis sagittis posuere,
+turpis lacus congue quam, in hendrerit risus eros eget felis.}
+}
+
+@entry{tau,
+ symbol = {\ensuremath{\tau}},
+ name = {tau},
+ description = {Maecenas eget erat in sapien mattis porttitor.}
+}
+
+@entry{upsilon,
+ symbol = {\ensuremath{\upsilon}},
+ name = {upsilon},
+ description = {Vestibulum porttitor.}
+}
+
+@entry{phi,
+ symbol = {\ensuremath{\phi}},
+ name = {phi},
+ description = {Nulla facilisi.}
+}
+
+@entry{chi,
+ symbol = {\ensuremath{\chi}},
+ name = {chi},
+ description = {Sed a turpis eu lacus commodo facilisis.}
+}
+
+@entry{psi,
+ symbol = {\ensuremath{\psi}},
+ name = {psi},
+ description = {Morbi fringilla, wisi in dignissim interdum, justo
+lectus sagittis dui, et vehicula libero dui cursus dui.}
+}
+
+@entry{omega,
+ symbol = {\ensuremath{\omega}},
+ name = {omega},
+ description = {Mauris tempor ligula sed lacus.}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-symbols.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-url.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{aenean-url,
+ user1 = {http://uk.tug.org/},
+ name = {aenean},
+ description = {adipiscing auctor est}
+}
+
+@entry{morbi-url,
+ user1 = {http://www.ctan.org/},
+ name = {morbi},
+ description = {quam arcu, malesuada sed, volutpat et, elementum sit
+amet, libero}
+}
+
+@entry{duis-url,
+ user1 = {http://www.tug.org/},
+ name = {duis},
+ description = {mattis}
+}
+
+@entry{sed-url,
+ user1 = {http://theoval.cmp.uea.ac.uk/\protect~nlct/},
+ name = {sed},
+ description = {cursus lectus quis odio (uses
+\texttt{\string\protect\string~})}
+}
+
+@entry{sed2-url,
+ user1 = {http://theoval.cmp.uea.ac.uk/\string~nlct/},
+ name = {sed},
+ description = {cursus lectus quis odio (uses
+\texttt{\string\string\string~})}
+}
+
+@entry{sed3-url,
+ user1 = {http://theoval.cmp.uea.ac.uk/\glstildechar nlct/},
+ name = {sed},
+ description = {cursus lectus quis odio (uses
+\texttt{\string\glstildechar})}
+}
+
+@entry{phasellus-url,
+ user1 = {http://theoval.cmp.uea.ac.uk/},
+ name = {phasellus},
+ description = {arcu (catcode change)}
+}
+
+@entry{phasellus2-url,
+ user1 = {http://theoval.cmp.uea.ac.uk/\%7Enlct
+},
+ name = {phasellus},
+ description = {arcu (uses \texttt{\string\%})}
+}
+
+@entry{phasellus3-url,
+ user1 = {http://theoval.cmp.uea.ac.uk/\glspercentchar 7Enlct
+},
+ name = {phasellus},
+ description = {arcu (uses
+ \texttt{\string\glspercentchar})}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-url.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<*example-glossaries-xr.bib>
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%<<COMMENT
+% Encoding: UTF-8
+%COMMENT
+@entry{lorem,
+ name = {lorem},
+ description = {ipsum}
+}
+
+@entry{alias-lorem,
+ name = {alias-lorem},
+ description = {ipsum},
+ alias = {lorem}
+}
+
+@entry{dolor,
+ name = {dolor},
+ description = {sit}
+}
+
+@entry{amet,
+ see = {dolor},
+ name = {amet},
+ description = {consectetuer}
+}
+
+@entry{adipiscing,
+ name = {adipiscing},
+ description = {elit}
+}
+
+@entry{ut,
+ name = {ut},
+ description = {purus}
+}
+
+@entry{elit,
+ name = {elit},
+ description = {vestibulum},
+ seealso = {adipiscing,ut}
+}
+
+@entry{placerat,
+ name = {placerat},
+ description = {ac}
+}
+
+@entry{vitae,
+ name = {vitae},
+ description = {felis}
+}
+
+@entry{curabitur,
+ name = {curabitur},
+ description = {gravida}
+}
+
+@entry{mauris,
+ name = {mauris},
+ description = {nam}
+}
+
+@entry{arcu,
+ name = {arcu},
+ description = {libero},
+ seealso = {placerat,vitae,curabitur}
+}
+
+@entry{nonummy,
+ name = {nonummy},
+ description = {eget},
+ seealso = {mauris}
+}
+
+@entry{consectetuer,
+ parent = {nonummy},
+ name = {consectetuer},
+ description = {id}
+}
+
+@entry{vulputate,
+ parent = {nonummy},
+ name = {vulputate},
+ description = {a magna}
+}
+
+@entry{donec,
+ name = {donec},
+ description = {vehicula}
+}
+
+@entry{augue,
+ name = {augue},
+ description = {eu neque}
+}
+
+@entry{pellentesque,
+ see = {augue},
+ name = {pellentesque},
+ description = {habitant}
+}
+
+@entry{morbi,
+ name = {morbi},
+ description = {tristique}
+}
+
+@entry{senectus,
+ name = {senectus},
+ description = {et netus}
+}
+
+@entry{et,
+ see = {vulputate},
+ name = {et},
+ description = {malesuada}
+}
+
+@entry{fames,
+ name = {fames},
+ description = {ac}
+}
+
+@entry{turpis,
+ name = {turpis},
+ description = {egestas},
+ seealso = {consectetuer}
+}
+
+@entry{leo,
+ name = {leo},
+ description = {cras}
+}
+
+@entry{viverra,
+ name = {viverra},
+ description = {metus}
+}
+
+@entry{rhoncus,
+ name = {rhoncus},
+ description = {sem}
+}
+
+@entry{nulla,
+ name = {nulla},
+ description = {et}
+}
+
+@entry{lectus,
+ name = {lectus},
+ description = {vestibulum}
+}
+
+@entry{urna,
+ parent = {lectus},
+ see = {nulla},
+ name = {urna},
+ description = {fringilla}
+}
+
+@entry{ultrices,
+ parent = {lectus},
+ name = {ultrices},
+ description = {phasellus}
+}
+
+@entry{eu,
+ parent = {lectus},
+ name = {eu},
+ description = {tellus}
+}
+
+@entry{alias-eu,
+ name = {alias-eu},
+ description = {tellus},
+ alias = {eu}
+}
+
+@entry{sit,
+ name = {sit},
+ description = {amet}
+}
+
+@entry{tortor,
+ name = {tortor},
+ description = {gravida}
+}
+
+@entry{integer,
+ name = {integer},
+ description = {sapien}
+}
+
+@entry{est,
+ name = {est},
+ description = {iaculis}
+}
+
+@entry{in,
+ name = {in},
+ description = {pretium},
+ seealso = {sit,tortor,est}
+}
+
+@entry{quis,
+ name = {quis},
+ description = {viverra}
+}
+
+@entry{ac,
+ name = {ac},
+ description = {nunc}
+}
+
+@entry{praesent,
+ name = {praesent},
+ description = {eget \gls{ac}}
+}
+
+@entry{sem,
+ name = {sem},
+ description = {vel leo
+\glshyperlink{quis}}
+}
+
+@entry{bibendum,
+ name = {bibendum},
+ description = {ultrices}
+}
+
+@entry{aenean,
+ name = {aenean},
+ description = {faucibus}
+}
+
+@entry{malesuada,
+ parent = {aenean},
+ name = {malesuada},
+ description = {eu}
+}
+
+@entry{pulvinar,
+ parent = {aenean},
+ name = {pulvinar},
+ description = {at}
+}
+
+@entry{mollis,
+ parent = {aenean},
+ name = {mollis},
+ description = {ac nulla}
+}
+
+@entry{auctor,
+ parent = {aenean},
+ name = {auctor},
+ description = {semper}
+}
+
+@entry{varius,
+ parent = {aenean},
+ name = {varius},
+ description = {orci}
+}
+
+@entry{eget,
+ name = {eget},
+ description = {risus}
+}
+
+@entry{duis,
+ name = {duis},
+ description = {nibh}
+}
+
+@entry{mi,
+ name = {mi},
+ description = {congue}
+}
+
+@entry{accumsan,
+ name = {accumsan},
+ description = {eleifend}
+}
+
+@entry{sagittis,
+ see = {eget},
+ name = {sagittis},
+ description = {quis}
+}
+
+@entry{diam,
+ name = {diam},
+ description = {duis}
+}
+
+@entry{orci,
+ name = {orci},
+ description = {dignissim},
+ seealso = {diam}
+}
+
+% \end{macrocode}
+%\fi
+%\iffalse
+% \begin{macrocode}
+%</example-glossaries-xr.bib>
+% \end{macrocode}
+%\fi
+%\Finale
+\endinput
diff --git a/macros/latex/contrib/glossaries-extra/glossaries-extra.ins b/macros/latex/contrib/glossaries-extra/glossaries-extra.ins
new file mode 100644
index 0000000000..e8bd0d99db
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/glossaries-extra.ins
@@ -0,0 +1,57 @@
+% glossaries-extra.ins generated using makedtx version 1.2 2019/4/9 21:59
+\input docstrip
+
+\preamble
+
+ glossaries-extra.dtx
+ Copyright 2019 Nicola Talbot
+
+ This work may be distributed and/or modified under the
+ conditions of the LaTeX Project Public License, either version 1.3
+ of this license or (at your option) any later version.
+ The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of LaTeX
+ version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status `maintained'.
+
+ The Current Maintainer of this work is Nicola Talbot.
+
+ This work consists of the files glossaries-extra.dtx and glossaries-extra.ins and the derived files glossaries-extra.sty, glossaries-extra-bib2gls.sty, glossaries-extra-stylemods.sty, glossary-bookindex.sty, glossary-longextra.sty, glossary-topic.sty, example-glossaries-xr.tex, example-glossaries-acronym-desc.bib, example-glossaries-acronym.bib, example-glossaries-acronyms-lang.bib, example-glossaries-brief.bib, example-glossaries-childnoname.bib, example-glossaries-cite.bib, example-glossaries-images.bib, example-glossaries-long.bib, example-glossaries-multipar.bib, example-glossaries-parent.bib, example-glossaries-symbolnames.bib, example-glossaries-symbols.bib, example-glossaries-url.bib, example-glossaries-xr.bib.
+
+\endpreamble
+
+\askforoverwritefalse
+
+\generate{\file{glossaries-extra.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossaries-extra.sty,package}}
+\file{glossaries-extra-bib2gls.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossaries-extra-bib2gls.sty,package}}
+\file{glossaries-extra-stylemods.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossaries-extra-stylemods.sty,package}}
+\file{glossary-bookindex.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossary-bookindex.sty,package}}
+\file{glossary-longextra.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossary-longextra.sty,package}}
+\file{glossary-topic.sty}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{glossary-topic.sty,package}}
+\file{example-glossaries-xr.tex}{\usepreamble\defaultpreamble
+\usepostamble\defaultpostamble\from{glossaries-extra.dtx}{example-glossaries-xr.tex,package}}
+\file{example-glossaries-acronym-desc.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-acronym-desc.bib}}
+\file{example-glossaries-acronym.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-acronym.bib}}
+\file{example-glossaries-acronyms-lang.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-acronyms-lang.bib}}
+\file{example-glossaries-brief.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-brief.bib}}
+\file{example-glossaries-childnoname.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-childnoname.bib}}
+\file{example-glossaries-cite.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-cite.bib}}
+\file{example-glossaries-images.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-images.bib}}
+\file{example-glossaries-long.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-long.bib}}
+\file{example-glossaries-multipar.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-multipar.bib}}
+\file{example-glossaries-parent.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-parent.bib}}
+\file{example-glossaries-symbolnames.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-symbolnames.bib}}
+\file{example-glossaries-symbols.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-symbols.bib}}
+\file{example-glossaries-url.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-url.bib}}
+\file{example-glossaries-xr.bib}{\nopreamble\nopostamble\from{glossaries-extra.dtx}{example-glossaries-xr.bib}}
+}
+
+\endbatchfile
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf
new file mode 100644
index 0000000000..7d04e01e7a
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.tex b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.tex
new file mode 100644
index 0000000000..e123813d21
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-abbr-styles.tex
@@ -0,0 +1,430 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: pdflatex
+
+\documentclass{report}
+
+\usepackage[T1]{fontenc}
+\usepackage{relsize}
+\usepackage{etoolbox}
+\usepackage[colorlinks,linkcolor=magenta]{hyperref}
+\usepackage{glossaries-extra}
+
+% If you get any undefined control sequences or undefined
+% style errors, make sure you have the latest versions of
+% glossaries-extra.sty and glossaries.sty
+
+\makeglossaries
+
+% This command is used for short forms for styles
+% that don't have a designated command:
+\renewcommand{\glsabbrvdefaultfont}[1]{\textsf{#1}}
+
+% This command is used on first use for short forms
+% for styles that don't have a designated command:
+%\renewcommand{\glsfirstabbrvdefaultfont}[1]{\textsf{#1}}
+
+% This command is used for long forms for styles
+% that don't have a designated command:
+\renewcommand{\glslongdefaultfont}[1]{\textsf{#1}}
+
+% This command is used on first use for long forms
+% for styles that don't have a designated command:
+%\renewcommand{\glsfirstlongdefaultfont}[1]{\textsf{#1}}
+
+% These commands are used by the '-hyphen' styles.
+% For example, to switch to small-caps for the short form:
+%\renewcommand{\glsabbrvhyphenfont}{\glsabbrvscfont}
+%\renewcommand{\glsxtrhyphensuffix}{\glsxtrscsuffix}
+% and emphasize the long form
+%\renewcommand{\glslonghyphenfont}{\emph}
+
+\renewcommand{\glsxtrabbrvfootnote}[2]{%
+ \footnote{\glshyperlink[\glsfmtshort{#1}]{#1}: #2}%
+}
+
+\glssetcategoryattribute{long-hyphen-short-hyphen}{markwords}{true}
+\glssetcategoryattribute{long-hyphen-postshort-hyphen}{markwords}{true}
+\glssetcategoryattribute{long-hyphen-short-hyphen-desc}{markwords}{true}
+\glssetcategoryattribute{long-hyphen-postshort-hyphen-desc}{markwords}{true}
+\glssetcategoryattribute{short-hyphen-long-hyphen}{markwords}{true}
+\glssetcategoryattribute{short-hyphen-postlong-hyphen}{markwords}{true}
+\glssetcategoryattribute{short-hyphen-long-hyphen-desc}{markwords}{true}
+\glssetcategoryattribute{short-hyphen-postlong-hyphen-desc}{markwords}{true}
+\glssetcategoryattribute{long-hyphen-noshort-desc-noreg}{markwords}{true}
+\glssetcategoryattribute{long-hyphen-noshort-noreg}{markwords}{true}
+
+\newcommand{\stylelist}{}
+
+\newcommand{\teststyle}[1]{%
+ \listadd{\stylelist}{#1}%
+ \setabbreviationstyle[#1]{#1}%
+ \newabbreviation[category=#1,%
+ %sort={#1},% order by style name
+ user1={user text}%
+ ]{sample-#1}{short}{long form}%
+ \csdef{glsxtrpostdesc#1}{ [style: #1]}%
+}
+
+\newcommand{\testdescstyle}[1]{%
+ \listadd{\stylelist}{#1}%
+ \setabbreviationstyle[#1]{#1}%
+ \newabbreviation[category=#1,%
+ %sort={#1},% order by style name
+ user1={user text},%
+ description={sample description}]{sample-#1}{short}{long form}%
+ \csdef{glsxtrpostdesc#1}{ [style: #1]}%
+}
+
+\teststyle{long-short}
+\teststyle{short-long}
+%\teststyle{footnote}% synonym: short-footnote
+\teststyle{short-footnote}
+%\teststyle{postfootnote}% synonym: short-postfootnote
+\teststyle{short-postfootnote}
+%\teststyle{short}% synonym: short-nolong
+\teststyle{short-nolong}
+\teststyle{short-nolong-noreg}
+\teststyle{nolong-short}
+\teststyle{nolong-short-noreg}
+%\teststyle{long}% synonym: long-noshort
+\teststyle{long-noshort}
+\teststyle{long-noshort-noreg}
+\teststyle{long-only-short-only}
+\teststyle{long-short-sc}
+\teststyle{short-sc-long}
+%\teststyle{short-sc}% synonym: short-sc-nolong
+\teststyle{short-sc-nolong}
+\teststyle{nolong-short-sc}
+\teststyle{long-noshort-sc}
+%\teststyle{long-sc}% deprecated synonym of long-noshort-sc
+\teststyle{short-sc-footnote}
+%\teststyle{footnote-sc}% deprecated synonym of short-sc-footnote
+\teststyle{short-sc-postfootnote}
+%\teststyle{postfootnote-sc}% deprecated synonym of short-sc-postfootnote
+\teststyle{long-short-sm}
+\teststyle{short-sm-long}
+%\teststyle{short-sm}% synonym: short-sm-nolong
+\teststyle{short-sm-nolong}
+\teststyle{nolong-short-sm}
+%\teststyle{long-sm}% deprecated synonym of long-noshort-sm
+\teststyle{long-noshort-sm}
+\teststyle{short-sm-footnote}
+%\teststyle{footnote-sm}% deprecated synonym of short-sm-footnote
+\teststyle{short-sm-postfootnote}
+%\teststyle{postfootnote-sm}% deprecated synonym of short-sm-postfootnote
+\teststyle{long-short-em}
+\teststyle{long-em-short-em}
+\teststyle{short-em-long}
+\teststyle{short-em-long-em}
+\teststyle{short-em-nolong}
+%\teststyle{short-em}% synonym: short-em-nolong
+\teststyle{nolong-short-em}
+\teststyle{long-noshort-em}
+%\teststyle{long-em}% deprecated synonym of long-noshort-em
+\teststyle{long-em-noshort-em}
+\teststyle{long-em-noshort-em-noreg}
+\teststyle{short-em-footnote}
+%\teststyle{footnote-em}% deprecated synonym of short-em-footnote
+\teststyle{short-em-postfootnote}
+%\teststyle{postfootnote-em}% deprecated synonym of short-em-postfootnote
+\teststyle{long-short-user}
+\teststyle{long-postshort-user}
+\teststyle{short-long-user}
+\teststyle{short-postlong-user}
+\teststyle{long-hyphen-short-hyphen}
+\teststyle{long-hyphen-postshort-hyphen}
+\teststyle{short-hyphen-long-hyphen}
+\teststyle{short-hyphen-postlong-hyphen}
+\teststyle{long-hyphen-noshort-noreg}
+
+\testdescstyle{long-short-desc}
+\testdescstyle{short-long-desc}
+%\testdescstyle{short-desc}% synonym: short-nolong-desc
+\testdescstyle{short-nolong-desc}
+\testdescstyle{short-nolong-desc-noreg}
+%\testdescstyle{long-desc}% synonym: long-noshort-desc
+\testdescstyle{long-noshort-desc}
+\testdescstyle{long-noshort-desc-noreg}
+\testdescstyle{long-only-short-only-desc}
+\testdescstyle{long-short-sc-desc}
+\testdescstyle{short-sc-long-desc}
+%\testdescstyle{short-sc-desc}% synonym: short-sc-nolong-desc
+\testdescstyle{short-sc-nolong-desc}
+\testdescstyle{long-noshort-sc-desc}
+%\testdescstyle{long-desc-sc}% deprecated synonym of long-noshort-sc-desc
+\testdescstyle{long-short-sm-desc}
+\testdescstyle{short-sm-long-desc}
+%\testdescstyle{short-sm-desc}% synonym: short-sm-nolong-desc
+\testdescstyle{short-sm-nolong-desc}
+\testdescstyle{long-noshort-sm-desc}
+%\testdescstyle{long-desc-sm}% deprecated synonym of long-noshort-sm-desc
+\testdescstyle{long-short-em-desc}
+\testdescstyle{long-em-short-em-desc}
+\testdescstyle{short-em-long-desc}
+\testdescstyle{short-em-long-em-desc}
+%\testdescstyle{short-em-desc}% synonym: short-em-nolong-desc
+\testdescstyle{short-em-nolong-desc}
+\testdescstyle{long-noshort-em-desc}
+%\testdescstyle{long-desc-em}% deprecated synonym of long-noshort-em-desc
+\testdescstyle{long-em-noshort-em-desc}
+\testdescstyle{long-em-noshort-em-desc-noreg}
+\testdescstyle{long-short-user-desc}
+\testdescstyle{long-postshort-user-desc}
+\testdescstyle{short-long-user-desc}
+\testdescstyle{short-postlong-user-desc}
+\testdescstyle{long-hyphen-short-hyphen-desc}
+\testdescstyle{long-hyphen-postshort-hyphen-desc}
+\testdescstyle{short-hyphen-long-hyphen-desc}
+\testdescstyle{short-hyphen-postlong-hyphen-desc}
+\testdescstyle{long-hyphen-noshort-desc-noreg}
+
+\newcommand{\marg}[1]{\{\textnormal{\emph{#1}}\}}
+\pagestyle{headings}
+
+\makeatletter
+\renewcommand{\l@section}{\@dottedtocline {1}{1.5em}{3.3em}}
+\makeatother
+
+\begin{document}
+\pagenumbering{roman}
+This is a test document demonstrating abbreviation styles
+provided by the \textsf{glossaries-extra} package. Hyperlinks
+are shown in
+\makeatletter
+\textcolor{\@linkcolor}{\@linkcolor}.
+\makeatother
+
+Some of the styles just use the default formatting commands (which don't
+change the font). To make the default setting clearer, this document has done:
+\begin{verbatim}
+\renewcommand{\glslongdefaultfont}[1]{\textsf{#1}}
+\renewcommand{\glsabbrvdefaultfont}[1]{\textsf{#1}}
+\end{verbatim}
+So any text in this document that's rendered in sans-serif would normally not have any font
+change implemented.
+
+Each test entry is defined using
+\begin{verbatim}
+ \newabbreviation[category=#1,user1={user text}]%
+ {sample-#1}{short}{long form}%
+\end{verbatim}
+for the non\texttt{-desc} styles or
+\begin{verbatim}
+ \newabbreviation[category=#1,user1={user text},%
+ description={sample description}]%
+ {sample-#1}{short}{long form}%
+\end{verbatim}
+for the \texttt{-desc} styles (where \verb|#1| is the style label).
+Note that many of the entries will have duplicate sort values, so
+don't build this with \texttt{xindy}. You can change the ordering
+in the glossary to that it's sorted according to the style name
+by changing the above definitions to:
+\begin{verbatim}
+ \newabbreviation[category=#1,user1={user text},sort={#1}]%
+ {sample-#1}{short}{long form}%
+ \newabbreviation[category=#1,user1={user text},sort={#1},%
+ description={sample description}]%
+ {sample-#1}{short}{long form}%
+\end{verbatim}
+
+To assist with distinguishing between the various styles,
+the post-description hook (used after displaying the description in
+the glossary) is set to \verb*| [style: #1]| for all categories,
+and the footnote command \verb|\glsxtrabbrvfootnote| has been
+redefined to include the short form hyperlinked to the glossary.
+
+The test entries that use the \texttt{-hyphen} styles have had the
+\texttt{markwords} attribute set. This is designed to trigger
+compound word hyphenation if the inserted text (through the final
+optional argument of \verb|\gls|) starts with a hyphen.
+
+\tableofcontents
+
+\pagenumbering{arabic}
+\chapter{First Use}
+First use of \verb|\gls|.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\gls{\thislabel}.\glspar}
+
+\chapter{Next Use}
+Next use of \verb|\gls|.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\gls{\thislabel}.\glspar}
+
+\chapter{First Use With Insert}
+First use of \texttt{\string\gls\marg{label}[-insert]}. The conditional
+\verb|\ifglsxtrinsertinside| is used by some styles to
+determine whether or not to include the inserted material
+inside the font changing command used by the style.
+The default is: \ifglsxtrinsertinside true\else false\fi.
+
+In this test chapter, each entry is reset, then displayed with
+\begin{verbatim}
+\glsxtrinsertinsidefalse
+\end{verbatim}
+then reset and displayed with
+\begin{verbatim}
+\glsxtrinsertinsidetrue
+\end{verbatim}
+(following the semi-colon). Some styles may only obey this
+conditional for particular commands. (For example, the inline
+commands like \verb|\glsxtrfull| may behave differently to
+commands like \verb|\gls|.)
+
+Some of the styles just use the default font commands (which don't
+change the font) so there's no noticeable difference. To make the
+differences more noticeable this document has done:
+\begin{verbatim}
+\renewcommand{\glslongdefaultfont}[1]{\textsf{#1}}
+\renewcommand{\glsabbrvdefaultfont}[1]{\textsf{#1}}
+\end{verbatim}
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsreset{\thislabel}\glsxtrinsertinsidefalse
+\gls{\thislabel}[-insert];
+\glsreset{\thislabel}\glsxtrinsertinsidetrue
+\gls{\thislabel}[-insert].\glspar}
+
+\chapter{Next Use With Insert}
+Next use of \texttt{\string\gls\marg{label}[-insert]}.
+
+In this test chapter, each entry is displayed
+with \verb|\glsxtrinsertinsidefalse| and then displayed with
+\verb|\glsxtrinsertinsidetrue|
+(following the semi-colon). Some styles don't check this
+conditional.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsxtrinsertinsidefalse
+\gls{\thislabel}[-insert];
+\glsxtrinsertinsidetrue
+\gls{\thislabel}[-insert].\glspar}
+
+\chapter{Full Form}
+Full form using \verb|\glsxtrfull| (inline full style).
+This may differ from the display form used by \verb|\gls|
+on first use, depending on the style.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsxtrfull{\thislabel}.\glspar}
+
+\chapter{Short Form}
+Short form using \verb|\glsxtrshort|.
+This may differ from the display form used by \verb|\gls|
+on subsequent use, depending on the style.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsxtrshort{\thislabel}.\glspar
+}
+
+\chapter{Long Form}
+Long form using \verb|\glsxtrlong|.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsxtrlong{\thislabel}.\glspar}
+
+\chapter{Full Form With Insert}
+Full form using \texttt{\string\glsxtrfull\marg{label}[-insert]} (inline full style).
+In this test chapter, each entry is displayed
+with \verb|\glsxtrinsertinsidefalse| and then displayed with
+\verb|\glsxtrinsertinsidetrue|
+(following the semi-colon).
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsxtrinsertinsidefalse
+\glsxtrfull{\thislabel}[-insert];
+\glsxtrinsertinsidetrue
+\glsxtrfull{\thislabel}[-insert].\glspar}
+
+\chapter{Short Form With Insert}
+Short form using \texttt{\string\glsxtrshort\marg{label}[-insert]}.
+
+In this test chapter, each entry is displayed
+with \verb|\glsxtrinsertinsidefalse| and then displayed with
+\verb|\glsxtrinsertinsidetrue|
+(following the semi-colon).
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsxtrinsertinsidefalse
+\glsxtrshort{\thislabel}[-insert];
+\glsxtrinsertinsidetrue
+\glsxtrshort{\thislabel}[-insert].\glspar}
+
+\chapter{Long Form With Insert}
+Long form using \texttt{\string\glsxtrlong\marg{label}[-insert]}.
+Note that the \texttt{hyphen} styles with the \texttt{markwords}
+attribute don't adjust in this case.
+
+In this test chapter, each entry is displayed
+with \verb|\glsxtrinsertinsidefalse| and then displayed with
+\verb|\glsxtrinsertinsidetrue|
+(following the semi-colon).
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsxtrinsertinsidefalse
+\glsxtrlong{\thislabel}[-insert];
+\glsxtrinsertinsidetrue
+\glsxtrlong{\thislabel}[-insert].\glspar}
+
+\chapter{First Form}
+First form using \verb|\glsfirst|. This may be different
+from the first use of \verb|\gls| depending on the style.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsfirst{\thislabel}.\glspar}
+
+\chapter{Text Form}
+Text form using \verb|\glstext|. This may be different
+from the subsequent use of \verb|\gls| depending on the style.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glstext{\thislabel}.\glspar}
+
+\chapter{First Form With Insert}
+First form using \texttt{\string\glsfirst\marg{label}[-insert]}.
+This is different from the first use of \verb|\gls|
+as can be seen by the location of the inserted material.
+(There's no check for the conditional
+\verb|\ifglsxtrinsertinside|.) In general it's best not
+to use \verb|\glsfirst| with abbreviations. Use either
+\verb|\gls| (possibly with a reset) or \verb|\glsxtrfull|.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glsfirst{\thislabel}[-insert].\glspar}
+
+\chapter{Text Form With Insert}
+Text form using \texttt{\string\glstext\marg{label}[-insert]}.
+This doesn't check for the conditional
+\verb|\ifglsxtrinsertinside|.
+
+\forglsentries{\thislabel}{\glscategory{\thislabel}:
+\glstext{\thislabel}[-insert].\glspar}
+
+\chapter{Summary}
+
+\renewcommand{\do}[1]{\section{#1}
+First use \texttt{\string\gls\marg{label}}:
+\glsreset{sample-#1}\gls{sample-#1}.\par\noindent
+Next use \texttt{\string\gls\marg{label}}: \gls{sample-#1}.\par\noindent
+First use \texttt{\string\gls\marg{label}[-insert]}:
+\glsreset{sample-#1}\gls{sample-#1}[-insert].\par\noindent
+Next use \texttt{\string\gls\marg{label}[-insert]}:
+\gls{sample-#1}[-insert].\par\noindent
+\texttt{\string\glsxtrfull\marg{label}[-insert]}:
+\glsxtrfull{sample-#1}[-insert].\par\noindent
+\texttt{\string\glsxtrshort\marg{label}[-insert]}:
+\glsxtrshort{sample-#1}[-insert].\par\noindent
+\texttt{\string\glsxtrlong\marg{label}[-insert]}:
+\glsxtrlong{sample-#1}[-insert].\par\noindent
+Name: \glsentryname{sample-#1}.\par\noindent
+Sort: \texttt{\glsentrysort{sample-#1}}.\par\noindent
+Description: \glsentrydesc{sample-#1}.\par
+}
+
+\dolistloop{\stylelist}
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf
new file mode 100644
index 0000000000..e85508041d
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.tex b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.tex
new file mode 100644
index 0000000000..9d598f408f
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-abbrv.tex
@@ -0,0 +1,36 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+\newabbreviation{xml}{XML}{extensible markup language}
+\newabbreviation{svg}{SVG}{scalable vector graphics}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Sample}
+
+First use: \gls{html}, \gls{xml} and \gls{svg}.
+
+Next use: \gls{html}, \gls{xml} and \gls{svg}.
+
+Resetting.
+\glsresetall
+
+Provide specific text (no first use trigger): \glslink{html}{SHTML}.
+(Has been used? \ifglsused{html}{Yes}{No}.)
+
+Provide specific text (first use trigger): \glsdisp{html}{SHTML}.
+(Has been used? \ifglsused{html}{Yes}{No}.)
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf
new file mode 100644
index 0000000000..51d427f7ca
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.tex b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.tex
new file mode 100644
index 0000000000..85d24a8059
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-accsupp.tex
@@ -0,0 +1,124 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[T1]{fontenc}
+\usepackage{cmap}
+
+\usepackage[accsupp,% use glossaries-accsupp
+ %nonumberlist,% suppress location list in glossary
+ nopostdot=false% insert dot after description in glossary
+]{glossaries-extra}
+
+\makeglossaries
+
+% Change the format of the location lists:
+\renewcommand{\GlsXtrFormatLocationList}[1]{Page list: #1.}
+
+% Default uses "ActualText" instead of "E". Redefine if required.
+% Support in PDF viewers is variable.
+%\renewcommand*{\glsaccsupp}[2]{%
+% \BeginAccSupp{E=#1}#2\EndAccSupp{}%
+%}
+
+\newabbreviation
+ [% add accessibility information:
+ %shortaccess={specific learning difference},% short access
+ %access={specific learning difference},% name access
+ textaccess={specific learning difference},% text access
+ ]
+ {spld}{SpLD}{specific learning difference}
+
+\glssetcategoryattribute{initialism}{accessinsertdots}{true}
+\glssetcategoryattribute{initialism}{nameshortaccess}{true}
+
+\newabbreviation[category=initialism]{pi}{PI}{Private Investigator}
+
+% \ensuremath is required in the following as the
+% accessibility support clashes with math-mode.
+
+% The firstaccess key defaults to the access key if omitted.
+% This means that on first use if firstaccess hasn't been
+% set but access has been set it will use the access text
+% that's used for the name field in the glossary (not the
+% value of the textaccess field). If this is inappropriate
+% you need to explicitly add the firstaccess key.
+
+\newglossaryentry{R}{name={\ensuremath{\Re}},
+ access={set of real numbers symbol},% name access
+ textaccess={set of real numbers},% text access
+ %firstaccess={set of real numbers},% first access
+ description={set of real numbers}}
+
+\newglossaryentry{in}{name={\ensuremath{\in}},
+ access={is element of set symbol},% name access
+ textaccess={in},% text access
+ %firstaccess={in},% first access
+ description={is an element of}}
+
+\begin{document}
+This is a sample document testing the accsupp option.
+If your PDF viewer doesn't provide a text-to-speech facility
+try copying the text on this page and pasting to a text file
+to see the difference.
+
+\section{An Abbreviation}
+
+First use: \gls{spld}.
+Next use: \gls{spld}.
+
+Access name: \glsentryaccess{spld}.
+
+Access text: \glsentrytextaccess{spld}.
+
+Access short: \glsentryshortaccess{spld}.
+
+If the access field isn't set in the above, no replacement text
+is used in the corresponding \verb|\glstext|, \verb|\glsaccesstext| etc commands.
+
+Text field: \glstext{spld} [no-index/link version: \glsaccesstext{spld}].
+Short field: \glsxtrshort{spld} [no-index/link version: \glsaccessshort{spld}].
+
+\section{An Initialism}
+
+The short form should be read as two letters: P I (not as the word
+pi).
+
+First use: \gls{pi}.
+Next use: \gls{pi}.
+
+Access short: \glsentryshortaccess{pi}.
+Actual short value: \glsentryshort{pi}.
+Access (name): \glsentryaccess{pi}.
+
+\section{A Symbol}
+
+First use: \gls{R}. Next use: \gls{R}.
+Text field: \glstext{R}. Name field: \glsname{R}.
+
+First use: \gls{in}. Next use: \gls{in}.
+Text field: \glstext{in}. Name field: \glsname{in}.
+
+Now test in math-mode:
+\[
+x \gls{in} \gls{R}
+\]
+
+The ``firstaccess'' field is used on first use. If this hasn't
+been set the ``access'' field is used instead. The ``textaccess''
+field is used on subsequent use. If this hasn't been set the
+``access'' field is used instead. The ``access'' field is used
+for the entry name in the glossary list.
+
+Access (name) field: \glsentryaccess{R}.
+First Access field: \glsentryfirstaccess{R}.
+Text Access field: \glsentrytextaccess{R}.
+
+Access (name) field: \glsentryaccess{in}.
+First Access field: \glsentryfirstaccess{in}.
+Text Access field: \glsentrytextaccess{in}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf
new file mode 100644
index 0000000000..a792bef02b
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.tex b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.tex
new file mode 100644
index 0000000000..f3c85c8c94
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-acronym-desc.tex
@@ -0,0 +1,43 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[nopostdot=false]{glossaries-extra}
+
+\makeglossaries
+
+\renewcommand*{\glsxtrpostdescacronym}{%
+ \space(\textsc{origin:} \glsentrylong{\glscurrententrylabel})%
+}
+
+\newacronym[description={a device that emits a narrow intense
+beam of light}]{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+\newacronym[description={a form of \gls{laser} generating a beam of
+microwaves}]{maser}{maser}{microwave amplification by stimulated
+emission of radiation}
+
+\newacronym[description={a system for detecting the location and
+speed of ships, aircraft, etc, through the use of radio waves}]{radar}{radar}{radio detection and ranging}
+
+\newacronym[description={portable breathing apparatus for divers}]{scuba}{scuba}{self-contained underwater breathing
+apparatus}
+
+\begin{document}
+\tableofcontents
+
+\chapter{Sample}
+
+An acronym is a word formed from the initial letters of other words.
+Since it's a word, an acronym is pronounced as a word rather than as
+a series of letters. Examples of acronyms: \gls{laser}, \gls{maser},
+\gls{radar} and \gls{scuba}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf
new file mode 100644
index 0000000000..748c73c9cb
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-acronym.tex b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.tex
new file mode 100644
index 0000000000..1301d14cc4
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-acronym.tex
@@ -0,0 +1,30 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\newacronym{laser}{laser}{light amplification by stimulated
+emission of radiation}
+
+\newacronym{maser}{maser}{microwave amplification by stimulated
+emission of radiation}
+
+\newacronym{radar}{radar}{radio detection and ranging}
+
+\newacronym{scuba}{scuba}{self-contained underwater breathing
+apparatus}
+
+\begin{document}
+An acronym is a word formed from the initial letters of other words.
+Since it's a word, an acronym is pronounced as a word rather than as
+a series of letters. Examples of acronyms: \gls{laser}, \gls{maser},
+\gls{radar} and \gls{scuba}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf
new file mode 100644
index 0000000000..7254b52a70
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-alias.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alias.tex b/macros/latex/contrib/glossaries-extra/samples/sample-alias.tex
new file mode 100644
index 0000000000..dd14470fbc
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-alias.tex
@@ -0,0 +1,48 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\newglossaryentry{numberlist}{name={number list},
+ description={\nopostdesc},
+ alias={locationlist}}
+
+\newglossaryentry{locationlist}{name={location list},
+ description={list of locations}
+}
+
+\renewcommand{\glsxtrsetaliasnoindex}{%
+ \ifglshasfield{alias}{\glslabel}%
+ {%
+ \setkeys{glslink}{noindex}%
+ \glsxtrindexaliased
+ }%
+ {}%
+}
+
+\newglossaryentry{sample}{name={sample},
+description={an example}}
+
+\newglossaryentry{sample-alias}{name={sample-alias},
+description={\nopostdesc},
+alias={sample}
+}
+
+\begin{document}
+
+\gls{numberlist} or \gls{locationlist}.
+
+\gls{sample} or \gls{sample-alias}.
+
+\newpage
+\gls{numberlist}
+
+\gls{sample-alias}
+\newpage
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf
new file mode 100644
index 0000000000..e0776db2de
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.tex b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.tex
new file mode 100644
index 0000000000..201c55c26f
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-altmodifier.tex
@@ -0,0 +1,32 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+% Don't use with indexonlyfirst setting!
+
+\GlsXtrSetDefaultGlsOpts{noindex}
+\GlsXtrSetAltModifier{>}{noindex=false}
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\begin{document}
+This is a sample document.
+The \gls{sample} entry is used on this page but isn't indexed.
+
+\newpage
+The \gls>{sample} entry is used on this page and is indexed.
+
+\newpage
+The \gls{sample} entry is used on this page but isn't indexed.
+
+\newpage
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf
new file mode 100644
index 0000000000..ab853285b4
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.tex b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.tex
new file mode 100644
index 0000000000..261e878f73
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-marginpar.tex
@@ -0,0 +1,100 @@
+% arara: pdflatex
+% arara: makeglossaries if found("aux", "@istfilename")
+% arara: pdflatex
+\documentclass[12pt]{book}
+
+\usepackage[T1]{fontenc}
+\usepackage{tgtermes}
+\usepackage[dvipsnames]{xcolor}
+\usepackage{pifont}
+\usepackage{tikz}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[stylemods=tree,style=alttree,savenumberlist]{glossaries-extra}
+
+\makeglossaries
+
+\loadglsentries{example-glossaries-multipar}
+
+\glssetcategoryattribute{general}{glossname}{firstuc}
+
+\renewcommand*{\GlsXtrFormatLocationList}[1]{%
+ {%
+ \hypersetup{hidelinks}%
+ \textcolor{Plum}{\ding{230}}~\textbf{#1}%
+ }%
+}
+
+% Suppress hanging paragraphs:
+%\renewcommand*{\glsxtrAltTreeSetHangIndent}{}
+
+\newlength\maxlocwidth
+
+\renewcommand*{\glsxtralttreeInit}{%
+% setup lengths
+ \glsFindWidestAnyNameLocation[\currentglossary]%
+ {\maxlocwidth}%
+ \settowidth
+ {\glsxtrtreetopindent}%
+ {\glstreenamefmt{\glsgetwidestname}}%
+ \addtolength{\glsxtrtreetopindent}%
+ {\dimexpr1em+2\nameinnersep+2\nameoutersep}%
+ \addtolength{\maxlocwidth}{1em}%
+ \glsxtrAltTreeIndent=\parindent
+}
+
+\newlength\nameinnersep
+\nameinnersep=4pt
+\newlength\nameoutersep
+\nameoutersep=2pt
+
+\renewcommand*{\glstreenamebox}[2]{%
+ \makebox[#1][l]%
+ {%
+ \begin{tikzpicture}[baseline=(X.base)]
+ \node[fill=Orchid,
+ align=center,
+ text width=\dimexpr#1-2\nameinnersep-2\nameoutersep,
+ inner sep=\nameinnersep,
+ outer sep=\nameoutersep
+ ] (X) {#2};
+ \end{tikzpicture}%
+ }%
+}
+
+\newcommand*{\locbox}[1]{%
+ \begin{tikzpicture}[baseline=(X.base)]
+ \node[text width=\maxlocwidth,
+ draw=CadetBlue,
+ fill=CornflowerBlue,
+ double,
+ thick,
+ align=center,
+ rounded corners]
+ (X) {#1};
+ \end{tikzpicture}%
+}
+
+\renewcommand{\glsxtralttreeSymbolDescLocation}[2]{%
+ \marginpar[\hfill\locbox{#2}]{\locbox{#2}}%
+ % scope \par change
+ {%
+ \let\par\glsxtrAltTreePar
+ \glossentrydesc{#1}\glspostdescription\par
+ }%
+}
+
+\begin{document}
+
+\frontmatter
+\chapter{Front Matter Test}
+\forallglsentries{\thislabel}{\gls{\thislabel}.\newpage}
+
+\mainmatter
+
+\chapter{Main Matter Test}
+\forallglsentries{\thislabel}{\gls{\thislabel}.\newpage}
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf
new file mode 100644
index 0000000000..56d3b3e27d
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.tex b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.tex
new file mode 100644
index 0000000000..c328aee923
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree-sym.tex
@@ -0,0 +1,60 @@
+% arara: pdflatex
+% arara: makeglossaries if found("aux", "@istfilename")
+% arara: pdflatex
+\documentclass{book}
+
+\usepackage[stylemods=tree,style=alttree,savenumberlist]{glossaries-extra}
+
+\makeglossaries
+
+\loadglsentries{example-glossaries-symbols}
+
+\newlength\maxsymbolwidth
+\newlength\maxlocwidth
+\newlength\fieldsep
+\setlength{\fieldsep}{10pt}
+\newlength\midfield
+\newlength\rightfield
+
+\renewcommand*{\glsxtralttreeInit}{%
+% setup lengths
+ \glsFindWidestAnyNameSymbolLocation[\currentglossary]%
+ {\maxsymbolwidth}{\maxlocwidth}%
+ \settowidth
+ {\glsxtrtreetopindent}%
+ {\glstreenamefmt{\glsgetwidestname}}%
+ \addtolength{\glsxtrtreetopindent}{\fieldsep}%
+ \ifdim\maxsymbolwidth>\maxlocwidth
+ \setlength{\rightfield}{\maxsymbolwidth}%
+ \else
+ \setlength{\rightfield}{\maxlocwidth}%
+ \fi
+ \addtolength{\rightfield}{\fieldsep}%
+ \setlength
+ {\midfield}%
+ {\dimexpr\linewidth-\glsxtrtreetopindent-\rightfield}%
+}
+
+\renewcommand{\glsxtralttreeSymbolDescLocation}[2]{%
+ \parbox[t]{\midfield}{\raggedright
+ \glossentrydesc{#1}\glspostdescription\strut\par}%
+ \parbox[t]{\rightfield}{\raggedleft
+ \glossentrysymbol{#1}\par
+ \sffamily#2\strut\par
+ }%
+ \par
+}
+
+\begin{document}
+
+\frontmatter
+\setcounter{page}{37}% test wide page number
+Test document.
+\newpage
+Indexing all entries here.
+\glsaddall
+
+\mainmatter
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf
new file mode 100644
index 0000000000..36df4991dd
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-alttree.tex b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.tex
new file mode 100644
index 0000000000..986828ecc4
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-alttree.tex
@@ -0,0 +1,23 @@
+% arara: pdflatex
+% arara: makeglossaries if found("aux", "@istfilename")
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[symbols,stylemods=tree,style=alttree]{glossaries-extra}
+
+\makeglossaries
+
+\loadglsentries{example-glossaries-parent.tex}
+\loadglsentries[symbols]{example-glossaries-symbols}
+
+\begin{document}
+\glsaddall
+\glsunsetall
+
+%\glsFindWidestUsedLevelTwo
+\preto{\glsxtralttreeInit}{%
+ \glsFindWidestUsedLevelTwo[\currentglossary]%
+}
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf
new file mode 100644
index 0000000000..59a5978d4f
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.tex b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.tex
new file mode 100644
index 0000000000..2aeac3b5f4
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex-hyp.tex
@@ -0,0 +1,129 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: makeindex
+% arara: pdflatex
+\documentclass[index=totoc]{scrreprt}
+
+\usepackage[T1]{fontenc}
+
+\usepackage{makeidx}
+\usepackage[colorlinks,
+ hyperindex=false% necessary for the encap entry
+ ]{hyperref}
+\usepackage[abbreviations]{glossaries-extra}
+
+\renewcommand{\abbreviationsname}{List of Abbreviations}
+
+\makeindex
+\makeglossaries
+
+% Provided by koma classes:
+\setindexpreamble{Page numbers in bold indicate an entry
+in the glossary or list of abbreviations.\par\medskip}
+
+% Automatically index the location of entry in the glossary
+% for those entries that are in the "general" category and
+% use "htextbf" as the encap value:
+
+% (Without the troublesome "encap" entry, hyperref's default
+% hyperindex=true option could've been used and the attribute
+% could simply be set to "textbf" and there'd be no need
+% to define "htextbf".)
+
+\glssetcategoryattribute{general}{indexname}{htextbf}
+\glssetcategoryattribute{general}{dualindex}{hyperpage}
+
+% Automatically index the location of entry in the glossary
+% for those entries that are in the "abbreviation" category
+% and use "htextbf" as the encap value:
+
+\newcommand*{\htextbf}[1]{\textbf{\hyperpage{#1}}}
+\glssetcategoryattribute{abbreviation}{indexname}{htextbf}
+\glssetcategoryattribute{abbreviation}{dualindex}{hyperpage}
+
+% Allow "format" key to override "dualindex" attribute.
+\GlsXtrEnableIndexFormatOverride
+
+% Convert the first letter of the name to upper case in the
+% glossary for general entries:
+\glssetcategoryattribute{general}{glossname}{firstuc}
+
+% Convert the name to upper case in the glossary for
+% abbreviations:
+\glssetcategoryattribute{abbreviation}{glossname}{uc}
+
+% Define general entries:
+
+\newglossaryentry{duck}{name=duck,%
+ description={a waterbird with webbed feet}}
+
+\newglossaryentry{parrot}{name=parrot,%
+ description={mainly tropical bird with bright plumage}}
+
+\newglossaryentry{at}{name={@},%
+ description={makeindex's default for the ``actual value''}}
+
+\newglossaryentry{level}{name={!},%
+ description={makeindex's default for the ``level value''}}
+
+\newglossaryentry{esc}{name={"},%
+ description={makeindex's default for the ``escape value''}}
+
+\newglossaryentry{encap}{name={|},%
+ description={makeindex's default for the ``encap value''}}
+
+% Set abbreviation style:
+
+\setabbreviationstyle{long-short-sc}
+
+% Define abbreviations:
+
+\newabbreviation
+ {html}% identifying label
+ {html}% short form
+ {hypertext markup language}% long form
+
+\newabbreviation
+ {xml}% identifying label
+ {xml}% short form
+ {extensible markup language}% long form
+
+\title{Sample document testing the glossaries-extra package}
+\author{Nicola Talbot}
+
+\begin{document}
+\maketitle
+
+\tableofcontents
+
+\chapter{Introduction}
+
+% If hyperref's default hyperindex=true option is in use
+% the indexed term here won't need the |hyperpage bit.
+This is a sample\index{sample|hyperpage} document testing the
+\texttt{glossaries-extra} package.
+
+\chapter{General Entries}
+
+Sample entries: \gls{duck} and \gls{parrot}.
+
+Test makeindex's special characters: \gls{at} (actual)
+\gls{esc} (escape) \gls{level} (level) and \gls{encap} (encap).
+
+\newpage
+
+Use some entries again: \gls{duck} and \gls[format=hyperit]{parrot}.
+
+\chapter{Abbreviations}
+
+First use: \gls{html} and \gls{xml}.
+
+Next use: \gls{html} and \gls{xml}.
+
+\printglossaries
+
+\printindex
+
+\end{document}
+
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf
new file mode 100644
index 0000000000..93a8d36a55
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.tex b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.tex
new file mode 100644
index 0000000000..da2b32d6d9
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-autoindex.tex
@@ -0,0 +1,127 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: makeindex
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[T1]{fontenc}
+
+\usepackage{makeidx}
+\usepackage[abbreviations,counter=chapter,nopostdot=false]{glossaries-extra}
+
+\renewcommand*{\abbreviationsname}{List of Abbreviations}
+\renewcommand*{\glossarypreamble}{\emph{Numbers refer to the
+\textbf{chapter} where the entry was referenced.}}
+
+\makeindex
+\makeglossaries
+
+% Automatically index the location of entry in the glossary
+% for those entries that are in the "general" category:
+
+\glssetcategoryattribute{general}{indexname}{textbf}
+\glssetcategoryattribute{general}{dualindex}{true}
+
+% Only index first use for the glossary location lists
+% (doesn't affect the indexing from "dualindex" attribute):
+%\glssetcategoryattribute{general}{indexonlyfirst}{true}
+
+% Automatically index the location of entry in the glossary
+% for those entries that are in the "abbreviation" category
+% and use "textbf" as the encap:
+
+\glssetcategoryattribute{abbreviation}{indexname}{textbf}
+\glssetcategoryattribute{abbreviation}{dualindex}{true}
+
+% Only index first use for the glossary location lists
+% (doesn't affect the indexing from "dualindex" attribute):
+%\glssetcategoryattribute{abbreviation}{indexonlyfirst}{true}
+
+% Convert the first letter of the name to upper case in the
+% glossary for general entries:
+\glssetcategoryattribute{general}{glossname}{firstuc}
+
+% Allow "format" key to override "dualindex" attribute.
+\GlsXtrEnableIndexFormatOverride
+
+% use first field instead of name field
+\renewcommand*{\glsxtrautoindexentry}[1]{\string\glsentryfirst{#1}}
+
+% use long form for the sort value, if provided:
+\renewcommand*{\glsxtrautoindexassignsort}[2]{%
+ \ifglshaslong{#2}%
+ {\glsletentryfield{#1}{#2}{long}}%
+ {\glsletentryfield{#1}{#2}{sort}}%
+}
+
+% Define general entries:
+
+\newglossaryentry{duck}{name=duck,%
+ description={a waterbird with webbed feet}}
+
+\newglossaryentry{parrot}{name=parrot,%
+ description={mainly tropical bird with bright plumage}}
+
+\newglossaryentry{at}{name={@},%
+ description={makeindex's default for the ``actual value''}}
+
+\newglossaryentry{esc}{name={"},%
+ description={makeindex's default for the ``escape value''}}
+
+\newglossaryentry{level}{name={!},%
+ description={makeindex's default for the ``level value''}}
+
+\newglossaryentry{encap}{name={|},%
+ description={makeindex's default for the ``encap value''}}
+
+% Set abbreviation style:
+
+\setabbreviationstyle{long-short-sc}
+
+% Define abbreviations:
+
+\newabbreviation
+ {html}% identifying label
+ {html}% short form
+ {hypertext markup language}% long form
+
+\newabbreviation
+ {xml}% identifying label
+ {xml}% short form
+ {extensible markup language}% long form
+
+\title{Sample document testing the glossaries-extra package}
+\author{Nicola Talbot}
+
+\begin{document}
+\maketitle
+
+\chapter{Introduction}
+
+This is a sample\index{sample} document testing the
+\texttt{glossaries-extra} package.
+
+\chapter{General Entries}
+
+Sample entries: \gls{duck} and \gls{parrot}.
+
+Test makeindex's special characters: \gls{at} (actual)
+\gls{esc} (escape) \gls{level} (level) and \gls{encap} (encap).
+
+\chapter{Abbreviations}
+
+First use: \gls{html} and \gls{xml}.
+
+Next use: \gls{html} and \gls{xml}.
+
+\newpage
+
+Uses some entries again: \gls{duck} and \gls[format=textit]{parrot}.
+
+\printglossaries
+
+\printindex
+
+\end{document}
+
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf
new file mode 100644
index 0000000000..8429430c25
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref.tex b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.tex
new file mode 100644
index 0000000000..4216b7f611
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-crossref.tex
@@ -0,0 +1,22 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\newglossaryentry{sample1}{name={sample 1},description={an example}}
+\newglossaryentry{sample2}{name={sample 2},description={an
+example},see={sample1}}
+\newglossaryentry{sample3}{name={sample 3},description={an
+example},seealso={sample2}}
+
+\begin{document}
+\gls{sample3}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf
new file mode 100644
index 0000000000..be4f0703ab
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.tex b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.tex
new file mode 100644
index 0000000000..abadf2b850
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-crossref2.tex
@@ -0,0 +1,32 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[nonumberlist]{glossaries-extra}
+
+\makeglossaries
+
+\renewcommand*{\glsxtrpostdescgeneral}{%
+ \ifglshasfield{see}{\glscurrententrylabel}
+ {, \glsxtrusesee{\glscurrententrylabel}}%
+ {}%
+ \ifglshasfield{seealso}{\glscurrententrylabel}
+ { (\glsxtruseseealso{\glscurrententrylabel})}%
+ {}%
+}
+
+\newglossaryentry{sample1}{name={sample 1},description={an example}}
+\newglossaryentry{sample2}{name={sample 2},description={an
+example},see={sample1}}
+\newglossaryentry{sample3}{name={sample 3},description={an
+example},see={sample2}}
+\newglossaryentry{sample4}{name={sample 4},description={an
+example},seealso={sample2,sample3}}
+
+\begin{document}
+\gls{sample4}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf
new file mode 100644
index 0000000000..418419a652
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-docdef.tex b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.tex
new file mode 100644
index 0000000000..8271b488fa
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-docdef.tex
@@ -0,0 +1,28 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[docdef]{glossaries-extra}
+
+\makeglossaries
+
+\begin{document}
+
+\printglossaries
+
+This is a sample document testing the use of document definitions
+for those who are happy to accept all the associated drawbacks
+of not following the advice in the glossaries manual about
+defining all your entries in the preamble. Use it at your own
+peril.
+
+\newglossaryentry{sample}{name=sample,description={an example}}
+\newglossaryentry{sample2}{name={another sample},
+ description={another example},see={sample}}
+\newabbreviation{ab}{AB}{sample abbreviation}
+
+Use \gls{sample2}.
+
+Use \gls{ab}.
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf
new file mode 100644
index 0000000000..0b032a464c
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.tex b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.tex
new file mode 100644
index 0000000000..739cf1061e
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-entrycount.tex
@@ -0,0 +1,44 @@
+% arara: pdflatex
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\GlsXtrEnableEntryCounting
+ {abbreviation}% list of categories to use entry counting
+ {2}% trigger value
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+\newabbreviation{xml}{XML}{extensible markup language}
+\newabbreviation{css}{CSS}{cascading style sheet}
+
+\newglossaryentry{sample}{name={sample},description={sample}}
+
+\begin{document}
+This is a sample document that uses entry counting. The entry counting
+has been enabled on the \texttt{abbreviation} category.
+This means that abbreviations will only be added to the glossary
+if they have been used more than $n$ times, where in this
+document $n$ has been set to
+\glsgetcategoryattribute{abbreviation}{entrycount}.
+Entries in other categories behave as normal.
+
+
+Used once: \gls{html}.
+
+Used twice: \gls{xml} and \gls{xml}.
+
+Used three times: \gls{css} and \gls{css} and \gls{css}.
+
+Used once but this entry is in the ``general'' category
+which doesn't have the ``entrycount'' attribute set:
+\gls{sample}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf
new file mode 100644
index 0000000000..b598bbe672
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-external.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-external.tex b/macros/latex/contrib/glossaries-extra/samples/sample-external.tex
new file mode 100644
index 0000000000..e3e5fda1d3
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-external.tex
@@ -0,0 +1,38 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\newignoredglossary*{external}
+
+\glssetcategoryattribute{external}{targeturl}{\glsentryuseri{\glslabel}}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\newcommand*{\newexternalentry}[3]{%
+ \newglossaryentry{#1}{type={external},category={external},user1={#2},#3}%
+}
+
+\newcommand*{\glsxtrpostlinkexternal}{%
+ \glsxtrpostlinkAddDescOnFirstUse
+}
+
+\newexternalentry{bib2gls}{https://github.com/nlct/bib2gls}
+{name={bib2gls},
+ description={command line application to convert from .bib to .glstex}
+}
+
+
+\begin{document}
+An internal example: \gls{sample}.
+
+An external example: \gls{bib2gls}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf
new file mode 100644
index 0000000000..44b0b88aba
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-fmt.tex b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.tex
new file mode 100644
index 0000000000..2c96d8a1fb
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-fmt.tex
@@ -0,0 +1,58 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[T1]{fontenc}
+\usepackage{amsmath}
+\usepackage[colorlinks]{hyperref}
+\usepackage[postdot,style=index]{glossaries-extra}
+
+\makeglossaries
+
+\newcommand*{\mtx}[1]{\boldsymbol{#1}}
+\newcommand*{\mtxinv}[1]{\mtx{#1}\sp{-1}}
+
+\newglossaryentry{matrix}{%
+ name={matrix},
+ symbol={\ensuremath{\mtx{M}}},
+ plural={matrices},
+ user1={mtx},
+ description={rectangular array of values}
+}
+
+\newglossaryentry{identitymatrix}{%
+ name={identity matrix},
+ symbol={\ensuremath{\mtx{I}}},
+ plural={identity matrices},
+ description={a diagonal matrix with all diagonal elements equal to
+1 and all other elements equal to 0}
+}
+
+\newglossaryentry{matrixinv}{%
+ name={matrix inverse},
+ symbol={\ensuremath{\mtxinv{M}}},
+ user1={mtxinv},
+ description={a square \gls{matrix} such that
+ $\mtx{M}\mtxinv{M}=\glssymbol{identitymatrix}$}
+}
+
+\renewcommand{\GlsXtrFmtDefaultOptions}{hyper=false,noindex}
+
+\begin{document}
+A \gls{matrix} is denoted \glssymbol{matrix}.
+The inverse is denoted \glssymbol{matrixinv}.
+
+\newpage
+
+\[
+ \glsxtrfmt{matrix}{A}
+ \glsxtrfmt{matrixinv}{A}
+ =
+ \glssymbol{identitymatrix}
+\]
+
+\newpage
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf
new file mode 100644
index 0000000000..ddd2da6376
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-footnote.tex b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.tex
new file mode 100644
index 0000000000..eed767a5c0
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-footnote.tex
@@ -0,0 +1,30 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+%\setabbreviationstyle{footnote}% similar to glossaries.sty acronym style of the same name
+\setabbreviationstyle{postfootnote}% put the footnote after following punctuation if present
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+\newabbreviation{xml}{XML}{extensible markup language}
+
+\begin{document}
+\chapter{Sample}
+
+First use: \gls{xml} and \gls{html}.
+
+\chapter{Another Sample}
+
+Next use: \gls{xml} and \gls{html}.
+
+Short form: \glsxtrshort{xml}\@. Long form: \glsxtrlong{html}.
+Full form: \glsxtrfull{xml}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf
new file mode 100644
index 0000000000..d14b7ac990
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-header.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-header.tex b/macros/latex/contrib/glossaries-extra/samples/sample-header.tex
new file mode 100644
index 0000000000..4b004c0245
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-header.tex
@@ -0,0 +1,73 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[T1]{fontenc}% provide bold small caps
+\usepackage[utf8]{inputenc}
+\usepackage{slantsc}% provide slanted small caps
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\setabbreviationstyle{long-short-sc}
+\newabbreviation{html}{html}{hypertext markup language}
+
+\newglossaryentry{sample}{name=sample,
+ description={an example}}
+
+\pagestyle{headings}
+
+% entries with the headuc attribute set to "true"
+% will ensure the \glsfmttext etc commands use the
+% upper case version in page headers.
+\glssetcategoryattribute{general}{headuc}{true}
+
+% This attribute isn't set for the "abbreviation" category
+% which keeps the abbreviation as small caps in the header.
+
+% Uncomment the following to set the attribute for the
+% abbreviations as well:
+%\glssetcategoryattribute{abbreviation}{headuc}{true}
+
+\begin{document}
+\begin{abstract}
+This is a sample document that tests the use of entries
+in sectioning commands through commands like \verb|\glsfmtshort|
+and \verb|\glsfmttext|.
+\end{abstract}
+
+\tableofcontents
+
+\chapter{\Glsfmttext{sample} Chapter with \glsfmtshort{html} Abbreviation}
+\label{ch:sample}
+
+First use: \gls{html}. Next use: \gls{html}.
+Note that the \gls{sample} entry that occurs at the start of
+the chapter title appears in lower case in the PDF bookmarks, since
+the case-changing command can't be used there.
+
+\newpage
+
+Page break to test header.
+
+\chapter{Another
+ \texorpdfstring{\Glsfmttext{sample}}{Sample}
+ Chapter with \glsfmtshort{html} Abbreviation}
+
+The case-changing commands can't be used in PDF bookmarks,
+so this chapter has used \verb|\texorpdfstring| to provide
+an alternative for the PDF bookmark. The first chapter
+(\nameref{ch:sample})
+didn't do this so ``\Gls{sample}'' appeared in lower case in
+the PDF bookmark.
+
+\newpage
+
+Page break to test header.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf
new file mode 100644
index 0000000000..6862cdf5af
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.tex b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.tex
new file mode 100644
index 0000000000..459888c0b4
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-indexhook.tex
@@ -0,0 +1,42 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage{etoolbox}
+\usepackage
+ [
+ indexcrossrefs=false% cross-ref indexing performed explicitly
+ ]
+ {glossaries-extra}
+
+\makeglossaries
+
+% Keep a list of entries that have been indexed
+\newcommand*{\indexedlist}{}
+\renewcommand*{\glsxtrdowrglossaryhook}[1]{%
+ \xifinlist{#1}{\indexedlist}{}{\listxadd{\indexedlist}{#1}}%
+}
+
+\newglossaryentry{sample1}{name={sample 1},description={an example}}
+\newglossaryentry{sample2}{name={sample 2},description={an
+example},see={sample1}}
+\newglossaryentry{sample3}{name={sample 3},description={an
+example},see={sample2}}
+
+\newglossaryentry{sample4}{name={sample 4},description={an example}}
+
+\begin{document}
+This is sample document.
+
+\gls{sample3}.
+
+\printglossaries
+
+% index all the cross-referenced entries that haven't been used:
+\glsxtraddallcrossrefs
+
+Entries that haven't been indexed:
+\forglsentries{\thislabel}{\xifinlist{\thislabel}{\indexedlist}{}{\space\thislabel}}.
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf
new file mode 100644
index 0000000000..70a828f297
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.tex b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.tex
new file mode 100644
index 0000000000..39aa4e905f
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-initialisms.tex
@@ -0,0 +1,70 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+% set up the styles:
+\setabbreviationstyle{long-short-sc}
+
+\setabbreviationstyle[initialism]{short-long}
+\glssetcategoryattribute{initialism}{insertdots}{true}
+\glssetcategoryattribute{initialism}{discardperiod}{true}
+\glssetcategoryattribute{initialism}{retainfirstuseperiod}{true}
+
+% define the entries:
+
+\newabbreviation{html}{html}{hypertext markup language}
+
+\newabbreviation[category=initialism]{eg}{eg}{for example}
+\newabbreviation[category=initialism]{si}{SI}{sample initials}
+
+\begin{document}
+\section{Examples}
+
+Abbreviations with dots \gls{eg} and \gls{si} and abbreviation
+without dots \gls{html} and the end of the sentence.
+
+(Next use.) Abbreviations with dots \gls{eg} and \gls{si} and abbreviation
+without dots \gls{html} and the end of the sentence.
+
+Plural: \glspl{si} and at the end of a sentence \glspl{si}.
+
+Reset\glsresetall. First use end of sentence:
+\gls{eg}. \gls{si}. \gls{html}.
+
+Next use end of sentence:
+\gls{eg}. \gls{si}. \gls{html}.
+
+\section{Space Factors}
+
+Test the space factors. (More visible if we switch to a monospaced
+font.)
+
+\begin{ttfamily}
+Initialisms in the middle \gls{eg} and \gls{si} of a sentence.
+
+Initialism at the end of a sentence \gls{eg}.
+Initialism at the end of a sentence \gls{si}.
+Another sentence.
+\end{ttfamily}
+
+Compare with explicitly writing the text without \verb|\gls|
+and judicious use of \verb*|\ | and \verb|\@|:
+
+\begin{ttfamily}
+Initialisms in the middle e.g.\ and S.I. of a sentence.
+
+Initialism at the end of a sentence e.g.
+Initialism at the end of a sentence S.I\@.
+Another sentence.
+\end{ttfamily}
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf
new file mode 100644
index 0000000000..6ecfa45889
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.tex b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.tex
new file mode 100644
index 0000000000..d8375eaabf
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-linkcount.tex
@@ -0,0 +1,44 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\renewcommand*{\glslinkpostsetkeys}{%
+ \ifnum\GlsXtrLinkCounterValue{\glslabel}>1
+ \setkeys{glslink}{hyper=false}%
+ \fi
+}
+
+%\GlsXtrEnableLinkCounting[section]{general}
+\GlsXtrEnableLinkCounting{general}
+
+\newglossaryentry{sample1}{name={sample1},description={an example}}
+\newglossaryentry{sample2}{name={sample2},description={another example}}
+
+\newabbreviation{ex}{ex}{example}
+
+\begin{document}
+
+\section{Sample Section}
+
+\Gls{sample1}, \gls{sample2} and \gls{ex}.
+\Glstext{sample1} and \gls{ex} again.
+Link count: \GlsXtrTheLinkCounter{sample1} (sample1),
+\GlsXtrTheLinkCounter{sample2} (sample2) and
+\GlsXtrTheLinkCounter{ex} (ex).
+
+\section{Another Sample Section}
+
+\Gls{sample1}, \gls{sample2} and \gls{ex}.
+Link count: \GlsXtrTheLinkCounter{sample1} (sample1),
+\GlsXtrTheLinkCounter{sample2} (sample2) and
+\GlsXtrTheLinkCounter{ex} (ex).
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf
new file mode 100644
index 0000000000..ed38e87d42
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.tex b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.tex
new file mode 100644
index 0000000000..421a5af0ba
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixed-abbrv-styles.tex
@@ -0,0 +1,25 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\setabbreviationstyle[inline]{long-short}
+\setabbreviationstyle[footer]{footnote}
+
+\newabbreviation[category=inline]{html}{HTML}{hypertext markup language}
+
+\newabbreviation[category=footer]{shtml}{SHTML}{server-parsed HTML}
+
+\begin{document}
+
+First use: \gls{shtml} and \gls{html}.
+
+Next use: \gls{shtml} and \gls{html}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf
new file mode 100644
index 0000000000..47a2626b99
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.tex b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.tex
new file mode 100644
index 0000000000..a85c7c6b9b
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixedsort.tex
@@ -0,0 +1,35 @@
+\documentclass{article}
+
+\usepackage[symbols,automake]{glossaries-extra}
+\usepackage{glossary-mcols}
+
+\makeglossaries[main]
+
+\newglossaryentry{duck}{name=duck,%
+ description={a waterbird with webbed feet}}
+
+\newglossaryentry{parrot}{name=parrot,%
+ description={mainly tropical bird with bright plumage}}
+
+\newglossaryentry{zebra}{name=zebra,%
+ description={black and white striped African wild horse}}
+
+\newglossaryentry{aardvark}{name=aardvark,%
+ description={African ant-eating mammal}}
+
+\glsxtrnewsymbol[description={zeta}]{zeta}{$\zeta$}
+\glsxtrnewsymbol[description={beta}]{beta}{$\beta$}
+\glsxtrnewsymbol[description={alpha}]{alpha}{$\alpha$}
+\glsxtrnewsymbol[description={gamma}]{gamma}{$\gamma$}
+
+\begin{document}
+
+General terms: \gls{duck}, \gls{zebra}, \gls{aardvark},
+\gls{parrot}.
+
+Symbols: \gls{beta}, \gls{gamma}, \gls{alpha}, \gls{zeta}.
+
+\printglossary[style=mcolindexgroup]
+\printnoidxglossary[type=symbols,sort=use,style=index]
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf
new file mode 100644
index 0000000000..3c9208ba08
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-mixture.tex b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.tex
new file mode 100644
index 0000000000..352200311e
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-mixture.tex
@@ -0,0 +1,344 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks]{hyperref}
+\usepackage[nopostdot=false]{glossaries-extra}
+
+\makeglossaries
+
+% regular terms:
+
+% (Version 1.04+) The following will make regular terms appear
+% in sans-serif when used with \gls etc but won't affect the
+% abbreviations:
+
+%\renewcommand*{\glsxtrregularfont}[1]{\textsf{#1}}
+
+% or limit to just the "general" category:
+%\renewcommand*{\glsxtrregularfont}[1]{%
+% \glsifcategory{\glslabel}{general}{\textsf{#1}}{#1}}
+
+% or limit to a particular attribute:
+
+%\glssetcategoryattribute{general}{font}{sf}
+%\glssetcategoryattribute{acronym}{font}{sf}
+
+%\renewcommand*{\glsxtrregularfont}[1]{%
+% \glsifattribute{\glslabel}{font}{sf}{\textsf{#1}}{#1}}
+
+% or use the attribute to store the font control sequence name:
+
+%\glssetcategoryattribute{general}{font}{textsf}
+%\glssetcategoryattribute{acronym}{font}{emph}
+%
+%\renewcommand*{\glsxtrregularfont}[1]{%
+% \glshasattribute{\glslabel}{font}%
+% {\csuse{\glsgetattribute{\glslabel}{font}}{#1}}%
+% {#1}%
+%}
+
+% The following will make the first letter of the name upper case
+% in the glossary for the general entries:
+\glssetcategoryattribute{general}{glossname}{firstuc}
+
+% The following will make the first letter of the description upper case
+% in the glossary for the general entries:
+\glssetcategoryattribute{general}{glossdesc}{firstuc}
+
+% (version 1.04+) The following will make the description
+% appear in italic in the glossary for general entries:
+
+%\glssetcategoryattribute{general}{glossdescfont}{emph}
+
+% (version 1.04+) The following will make the name
+% appear in italic in the glossary for general entries:
+
+%\glssetcategoryattribute{general}{glossnamefont}{emph}
+
+\newglossaryentry{duck}{name=duck,%
+ description={a waterbird with webbed feet}}
+
+\newglossaryentry{parrot}{name=parrot,%
+ description={mainly tropical bird with bright plumage}}
+
+% acronyms:
+
+% The following redefinition will add the provided text to the end of the
+% description in the glossary.
+
+\renewcommand*{\glsxtrpostdescacronym}{%
+ \space(\textsc{acronym:} \glsentrylong{\glscurrententrylabel})%
+}
+
+% The following will make the first letter of the name upper case
+% in the glossary for the acronym entries:
+\glssetcategoryattribute{acronym}{glossname}{firstuc}
+
+% The following will make the first letter of the description upper case
+% in the glossary for the acronym entries:
+\glssetcategoryattribute{acronym}{glossdesc}{firstuc}
+
+% Enable tagging of initials. The second argument is the name of
+% the command you want to use to tag initial letters. The
+% command will be defined robustly and will only be activated
+% in the glossary for the categories listed in the first
+% argument.
+% If the specified tagging command (\itag here) is used
+% anywhere else it will just do its argument.
+\GlsXtrEnableInitialTagging{acronym,abbreviation}{\itag}
+
+\newacronym[description={a device that emits a narrow intense
+beam of light}]{laser}{laser}
+{\itag{l}ight \itag{a}mplification by \itag{s}timulated
+\itag{e}mission of \itag{r}adiation}
+
+\newacronym[description={a form of \gls{laser} generating a beam of
+microwaves}]{maser}{maser}
+{\itag{m}icrowave \itag{a}mplification by \itag{s}timulated
+\itag{e}mission of \itag{r}adiation}
+
+\newacronym[description={a system for detecting the location and
+speed of ships, aircraft, etc, through the use of radio waves}]{radar}{radar}
+{\itag{ra}dio \itag{d}etection \itag{a}nd \itag{r}anging}
+
+\newacronym[description={portable breathing apparatus for divers}]{scuba}{scuba}
+{\itag{s}elf-\itag{c}ontained \itag{u}nderwater
+\itag{b}reathing \itag{a}pparatus}
+
+% The following redefinition will add the provided text to the end of the
+% description in the glossary.
+
+\renewcommand*{\glsxtrpostdescabbreviation}{%
+ \space (abbreviation)%
+}
+
+% The following will set the description in title case
+% in the glossary for the abbreviations:
+\glssetcategoryattribute{abbreviation}{glossdesc}{title}
+
+% The following will convert the abbreviations to all capitals
+% in the glossary:
+\glssetcategoryattribute{abbreviation}{glossname}{uc}
+
+% Use \textsc in the abbreviations:
+\setabbreviationstyle{long-short-sc}
+
+% Some other attributes you might want to try:
+
+% Use 's (apostrophe s) for the plural suffix
+% (only affects the short plural not the long plural)
+%\glssetcategoryattribute{abbreviation}{aposplural}{true}
+
+% Suppress the default suffix for the short plural.
+% (Don't use with the above for the same category.)
+%\glssetcategoryattribute{abbreviation}{noshortplural}{true}
+
+% abbreviations:
+
+\newabbreviation
+ {html}% identifying label
+ {html}% short form
+ {\itag{h}yper\itag{t}ext \itag{m}arkup \itag{l}anguage}% long form
+
+\newabbreviation
+ {xml}% identifying label
+ {xml}% short form
+ {e\itag{x}tensible \itag{m}arkup \itag{l}anguage}% long form
+
+\newabbreviation
+ {svg}% identifying label
+ {svg}% short form
+ {\itag{s}calable \itag{v}ector \itag{g}raphics}% long form
+
+\newabbreviation
+ {svm}% identifying label
+ {svm}% short form
+ {\itag{s}upport \itag{v}ector \itag{m}achine}% long form
+
+\title{Sample Document Illustrating the glossaries-extra Package}
+\author{Nicola Talbot}
+
+\begin{document}
+\pagenumbering{alph}
+\maketitle
+
+\pagenumbering{roman}
+\tableofcontents
+
+\pagenumbering{arabic}
+\chapter{Categories}
+
+The \texttt{glossaries-extra} package provides an extra key called
+\texttt{category}, which is used to assign a category to each entry.
+For example, the category for the ``duck'' entry is:
+\glscategory{duck}.
+
+The category value is just a label, which needs to be expandable, so
+make sure you avoid problematic characters in it. You can test the
+category with \verb|\glsifcategory|.
+
+The entry ``duck'' \glsifcategory{duck}{general}{is}{isn't} a
+general entry.
+The entry ``laser'' \glsifcategory{laser}{general}{is}{isn't} a
+general entry.
+
+A category can have attributes set. For example, both the
+``general'' category and the ``acronym'' category have the attribute
+``regular'' set to ``true''.
+
+You can obtain the value of an attribute for a given category with
+\begin{verbatim}
+\glsgetcategoryattribute{category}{attribute}
+\end{verbatim}
+This does nothing if the category
+or attribute aren't defined.
+
+Category ``general'' has the attribute ``regular'' set to
+``\glsgetcategoryattribute{general}{regular}''.
+Category ``acronym'' has the attribute ``regular'' set to
+``\glsgetcategoryattribute{acronym}{regular}''.
+Category ``abbreviation'' has the attribute ``regular'' set to
+``\glsgetcategoryattribute{abbreviation}{regular}''.
+
+You can test if a category has an attribute set to a given value
+with
+\begin{verbatim}
+\glsifcategoryattribute{category}{attribute}{value}{true code}{false
+code}
+\end{verbatim}
+
+Category ``general''
+\glsifcategoryattribute{general}{regular}{true}{has}{doesn't have}
+the ``regular'' attribute set to ``true''.
+Category ``acronym''
+\glsifcategoryattribute{acronym}{regular}{true}{has}{doesn't have}
+the ``regular'' attribute set to ``true''.
+Category ``abbreviation''
+\glsifcategoryattribute{abbreviation}{regular}{true}{has}{doesn't have}
+the ``regular'' attribute set to ``true''.
+
+\chapter{Regular Terms}
+
+By default glossary entries have the category ``general''.
+For
+example\glsforeachincategory{general}{\thistype}{\thislabel}{,
+\gls{\thislabel}} have the category field set to ``general''.
+
+Commands like \verb|\newabbreviation| and \verb|\newacronym|
+override this.
+
+Regular terms are those entries whose category has the ``regular''
+attribute set to ``true''. There's a convenient shortcut to
+determine if an entry has a category with the ``regular'' attribute
+set:
+\begin{verbatim}
+\glsifregular{entry-label}{true code}{false code}
+\end{verbatim}
+
+For example: \gls{duck} \glsifregular{duck}{is}{isn't} a regular
+term;
+\gls{laser} \glsifregular{laser}{is}{isn't} a regular
+term.
+
+The regular attribute determines what \verb|\gls| (and plural and
+case-changing variants) should do. A regular entry (even if
+it's been defined using \verb|\newacronym| or
+\verb|\newabbreviation|) uses the \texttt{first} (or
+\texttt{firstplural}) key on first use and the \texttt{text}
+(or \texttt{plural}) key on subsequent use.
+
+An abbreviation whose category doesn't have the regular attribute
+set to ``true'' will use the abbreviation style assigned
+to that category for first and subsequent use, which will use
+the values of the \texttt{long} (or \texttt{longplural})
+and \texttt{short} (or \texttt{shortplural}) keys.
+The first use of \verb|\gls| may or may not match \verb|\glsfirst|
+for non-regular entries, depending on the abbreviation style.
+
+\chapter{Abbreviations}
+
+Abbreviations include acronyms, initialisms and contractions.
+Some abbreviation styles may set category attributes.
+For example, the ``short'' style sets the ``regular'' attribute for
+the category used by the abbreviations with that style applied.
+Whereas the ``long-short'' style will switch off the ``regular'' attribute
+if it has previously been switched on.
+Styles must be set before defining abbreviations, but you may set
+different styles for different categories.
+
+For example, by default the ``short'' style is set for abbreviations
+with the ``acronym'' category using:
+\begin{verbatim}
+\setabbreviationstyle[acronym]{short}
+\end{verbatim}
+whereas the ``short-long'' style is set for abbreviations with the
+``abbreviation'' category:
+\begin{verbatim}
+\setabbreviationstyle{long-short}
+\end{verbatim}
+(The optional argument defaults to ``abbreviation''.)
+
+If no style has been set for a particular category, the style for the
+``abbreviation'' category is used instead.
+
+\section{Acronyms}
+
+An acronym is a word formed from the initial letters of other words.
+Since it's a word, an acronym is pronounced as a word rather than as
+a series of letters. Examples of acronyms: \gls{laser}, \gls{maser},
+\gls{radar} and \gls{scuba}.
+
+Since acronyms are treated as words, the ``acronym'' category
+has the ``regular'' attribute set to ``true''. The default
+abbreviation style for acronyms is ``short'', which doesn't expand
+the entry on first use.
+
+The description defaults to the long
+form with the ``short'' style. This example document overrides
+the default description by using the \texttt{description}
+key in the optional argument of \verb|\newacronym|. This
+document also sets the post description hook
+(\verb|\glsxtrpostdescacronym|) to insert the long form in
+parentheses after the description when it's displayed in the glossary.
+
+\section{Initialism}
+
+Initialisms are formed from initial letters of words where the
+letters are sounded out. Examples of initialisms:
+\gls{svm}, \gls{html}, \gls{svg} and \gls{xml}.
+
+The \texttt{glossaries-extra} package sets the default abbreviation
+style to \texttt{long-short}. This document has changed it to
+\texttt{long-short-sc} (use small caps). Next use:
+\gls{svm}, \gls{html}, \gls{svg} and \gls{xml}.
+
+Note that the acronyms (like \gls{laser}) don't use small caps.
+This is because the acronyms and initialisms have separate styles
+applied since they are in separate categories.
+
+\section{Plurals}
+
+The default plural for the short form is obtained by appending
+the abbreviation plural suffix to the singular form. You can
+override this on a per-entry basis using the \texttt{shortplural}
+key in the optional argument of \verb|\newabbreviation|
+(or \verb|\newacronym|) or you can prevent the suffix from
+being added to all entries in a particular category (or categories)
+by setting the \texttt{noshortplural} attribute to ``true'' for
+the relevant category (before defining the entries).
+
+Alternatively you can automatically insert an apostrophe before
+the plural suffix by setting the \texttt{aposplural} attribute to
+``true''. The \texttt{aposplural} attribute overrides the
+\texttt{noshortplural} attribute.
+
+Plurals: \glspl{svm}, \glspl{laser}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf
new file mode 100644
index 0000000000..83b5b168d8
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-name-font.tex b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.tex
new file mode 100644
index 0000000000..169b28e9c2
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-name-font.tex
@@ -0,0 +1,355 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: pdflatex
+\documentclass[fontsize=10pt,open=any]{scrbook}
+
+\usepackage[T1]{fontenc}
+\usepackage{tgtermes}
+\usepackage{xcolor}
+\usepackage{siunitx}
+\usepackage[hidelinks]{hyperref}
+\usepackage[nopostdot=false,% don't suppress the post-description dot
+ stylemods=longragged,% load glossary-longragged.sty and glossaries-extra-stylemods.sty
+ style=longragged3col,% set the glossary style
+ nogroupskip% don't have a gap between groups
+]{glossaries-extra}
+
+% KOMA class alterations (the default sans-serif clashes
+% with the smallcaps font in the headings examples)
+\setkomafont{disposition}{\normalcolor\bfseries}
+
+\pagestyle{headings}
+
+% Need a wider column for the location list:
+\setlength{\glspagelistwidth}{0.12\textwidth}
+
+% Adjust the description column width if necessary:
+%\setlength{\glsdescwidth}{0.5\textwidth}
+
+% Default font for name field in the glossary. This may be
+% overridden by the category attributes:
+\renewcommand*{\glsnamefont}[1]{\textbf{#1}}
+
+\makeglossaries
+
+% Define some semantic commands:
+\newcommand*{\animalfont}[1]{\textcolor{brown}{#1}}
+\newcommand*{\vegetablefont}[1]{\textcolor{teal}{#1}}
+\newcommand*{\mineralfont}[1]{\textcolor{violet}{#1}}
+\newcommand*{\myacronymfont}[1]{\textcolor{orange}{#1}}
+\newcommand*{\bacteriafont}[1]{\textcolor{green}{#1}}
+\newcommand*{\unitfont}[1]{\textcolor{blue}{#1}}
+\newcommand*{\constantfont}[1]{\textcolor{magenta}{#1}}
+
+% Make the first letter of the name field uppercase in the glossary
+% for the given categories:
+
+\glssetcategoryattribute{animal}{glossname}{firstuc}
+\glssetcategoryattribute{mineral}{glossname}{firstuc}
+\glssetcategoryattribute{vegetable}{glossname}{firstuc}
+
+% Make the name field in the glossary use a font changing command
+% (overrides \glsnamefont). In this example, I'm using the semantic
+% commands I defined above. The backslash is omitted.
+
+\glssetcategoryattribute{animal}{glossnamefont}{animalfont}
+\glssetcategoryattribute{mineral}{glossnamefont}{mineralfont}
+\glssetcategoryattribute{vegetable}{glossnamefont}{vegetablefont}
+\glssetcategoryattribute{acronym}{glossnamefont}{myacronymfont}
+\glssetcategoryattribute{bacteria}{glossnamefont}{bacteriafont}
+\glssetcategoryattribute{unit}{glossnamefont}{unitfont}
+\glssetcategoryattribute{constant}{glossnamefont}{constantfont}
+
+% Modify the font used for the description in the glossary:
+%\glssetcategoryattribute{bacteria}{glossdescfont}{textsf}
+
+% Modify the way commands like \gls display regular terms according
+% to attribute.
+
+\glssetcategoryattribute{general}{font}{textsf}
+\glssetcategoryattribute{mineral}{font}{mineralfont}
+\glssetcategoryattribute{animal}{font}{animalfont}
+\glssetcategoryattribute{vegetable}{font}{vegetablefont}
+\glssetcategoryattribute{acronym}{font}{myacronymfont}
+\glssetcategoryattribute{unit}{font}{unitfont}
+\glssetcategoryattribute{constant}{font}{constantfont}
+
+% I can't add one of the above for the "abbreviation" or "bacteria"
+% category as they aren't considered regular entries. (They use
+% one of the abbreviation styles that sets the "regular" attribute
+% to "false".)
+\glssetcategoryattribute{bacteria}{font}{bacteriafont}% ignored!
+% If the abbreviation style for "bacteria" is changed to, say,
+% "short-em", the attribute won't be ignored.
+
+% Adjust \glsxtrregularfont so that it picks up the appropriate
+% command from the "font" attribute (set above).
+\renewcommand*{\glsxtrregularfont}[1]{%
+ \glshasattribute{\glslabel}{font}%
+ {\csuse{\glsgetattribute{\glslabel}{font}}{#1}}%
+ {#1}%
+}
+
+\newglossaryentry{duck}{name=duck,
+ category={animal},
+ description={a waterbird with webbed feet}}
+
+\newglossaryentry{parrot}{name=parrot,
+ category={animal},
+ description={mainly tropical bird with bright plumage}}
+
+\newglossaryentry{cabbage}{name=cabbage,
+ category={vegetable},
+ description={vegetable with thick green or purple leaves}}
+
+\newglossaryentry{brocolli}{name=brocolli,
+ category={vegetable},
+ description={vegetable with heads of small green or purple flower
+buds}}
+
+\newglossaryentry{quartz}{name=quartz,
+ category=mineral,
+ description={hard mineral consisting of silica}}
+
+\newglossaryentry{corundum}{name=corundum,
+ category=mineral,
+ description={crystalline form of aluminium oxide}}
+
+% The following doesn't have the category explicitly set, so it
+% defaults to "general":
+
+\newglossaryentry{loremipsum}{name={lorem ipsum},
+ description={dummy text}}
+
+% The following set the category to "unit":
+
+\newglossaryentry{ohm}{name=ohm,symbol={\si{\ohm}},
+category=unit,
+description=unit of electrical resistance}
+
+\newglossaryentry{angstrom}{name={\aa}ngstr\"om,
+category=unit,
+symbol={\si{\angstrom}},sort=angstrom,
+description={non-SI unit of length}}
+
+% The selected style doesn't display the symbol
+% so add it to the post-name hook:
+\newcommand*{\glsxtrpostnameunit}{ (\glsentrysymbol{\glscurrententrylabel})}
+
+% Insert the symbol after commands like \gls but only on first use
+% (and only for the "unit" category):
+
+\newcommand*{\glsxtrpostlinkunit}{%
+ \ifdefempty\glscustomtext{\glsxtrpostlinkAddSymbolOnFirstUse}{}}
+% The above "post-link" hook occurs after the link-text produced by
+% \gls so it's place outside the \unitfont argument.
+
+% Mathematic constants need the "sort" key set because the "name"
+% field contains commands:
+\newglossaryentry{pi}{name={\ensuremath{\pi}},
+sort=pi,
+category=constant,
+user1=pi,
+description={ratio of a circle's circumference to its diameter}}
+
+% Insert the description and "user1" text after commands like \gls but only on first use
+% (and only for the "constant" category):
+
+\newcommand*{\glsxtrpostlinkconstant}{%
+ \ifdefempty\glscustomtext
+ {\glsxtrifwasfirstuse{ (\glsentryuseri{\glslabel},
+ \glsentrydesc{\glslabel})}{}}%
+ {}}
+
+% Insert the "user1" text after the description in the glossary
+% but only for the "constant" category:
+\newcommand*{\glsxtrpostdescconstant}{\space
+ (\glsentryuseri{\glscurrententrylabel})}
+
+% \newacronym sets the category to "acronym" by default. The
+% "short-em" style makes it a regular entry.
+\setabbreviationstyle[acronym]{short-em}
+
+\newacronym{laser}{laser}{light amplification by
+stimulated emission of radiation}
+
+\newacronym{scuba}{scuba}{self-contained underwater breathing
+apparatus}
+
+% \newabbreviation sets the category to "abbreviation" by default.
+% The "long-short-sc" style sets the regular attribute to false.
+\setabbreviationstyle{long-short-sc}
+
+\newabbreviation{html}{html}{hypertext markup language}
+
+\newabbreviation{svg}{svg}{scalable vector graphics}
+
+% The optional argument can be used to set a different category:
+\setabbreviationstyle[bacteria]{long-em-short-em}
+%\setabbreviationstyle[bacteria]{short-em}
+
+% An alternative approach that uses \bacteriafont in the document
+% and in the glossary is to provide a custom style:
+%\newabbreviationstyle{bacteria}%
+%{%
+% \GlsXtrUseAbbrStyleSetup{long-short}%
+%}%
+%{%
+% \GlsXtrUseAbbrStyleFmts{long-short}%
+% \renewcommand*{\glsabbrvfont}[1]{\bacteriafont{##1}}%
+% \renewcommand*{\glsfirstlongfont}[1]{\bacteriafont{##1}}%
+% \renewcommand*{\glslongfont}[1]{\bacteriafont{##1}}%
+%}
+% (the definition of \bacteriafont would need to be adjusted to
+% include \emph)
+%\setabbreviationstyle[bacteria]{bacteria}
+
+\newabbreviation[category=bacteria]%
+ {cbot}% label
+ {C.~botulinum}% short
+ {Clostridium botulinum}% long
+
+\newabbreviation[category=bacteria]%
+ {putida}% label
+ {P.~putida}% short
+ {Pseudomonas putida}% long
+
+% Abbreviations that have translations. These put the translated
+% text in the "user1" field. The "-user" abbreviation styles
+% insert this field (if present) into the parenthetical material
+% when used with \gls.
+
+\setabbreviationstyle[foreign]{short-long-user}
+
+% The fonts used by this style can be adjusted:
+\renewcommand*{\glsabbrvuserfont}[1]{\textsf{\color{red}#1}}% short-form font
+\renewcommand*{\glslonguserfont}[1]{\textsf{#1}}% long-form font
+
+\newabbreviation[category=foreign,user1={French \TeX\ user group}]
+ {gutenberg}{GUTenburg}{Groupe francophone des utilisateurs de \TeX}
+
+% Insert the translation (user1) text after the description
+% in the glossary but only for the "foreign" category:
+\newcommand*{\glsxtrpostdescforeign}{\space
+ (Translation: \glsentryuseri{\glscurrententrylabel})}
+
+% Now we have an awkward one that ends with a period:
+\setabbreviationstyle[foreignenddot]{short-long-user}
+
+% Need to discard the end of sentence period for the
+% entries in this category.
+
+\glssetcategoryattribute{foreignenddot}{discardperiod}{true}
+
+% But not on first use (the user1 text doesn't end with a
+% period):
+\glssetcategoryattribute{foreignenddot}{retainfirstuseperiod}{true}
+
+\newabbreviation
+ [user1={German Speaking \TeX\ User Group},category=foreignenddot]
+ {dante}{DANTE e.V.}{Deutschsprachige Anwendervereinigung \TeX\ e.V.}
+
+% Insert the translation (user1) text after the description
+% in the glossary but only for the "foreignenddot" category:
+\newcommand*{\glsxtrpostdescforeignenddot}{\space
+ (Translation: \glsentryuseri{\glscurrententrylabel})}
+
+% Insert page/pages tag before location list:
+\GlsXtrEnablePreLocationTag{Page: }{Pages: }
+
+\begin{document}
+\tableofcontents
+
+\chapter{Samples in the Main Document Text}
+
+\section{All Entries}
+
+First use (\verb|\gls|): \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Next use (\verb|\gls|): \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Using \verb|\glsfirst|: \forglsentries{\thislabel}{\glsfirst{\thislabel}. }
+
+Using \verb|\glstext|: \forglsentries{\thislabel}{\glstext{\thislabel}. }
+
+\section{Abbreviations only}
+Abbreviations that have the \verb|regular| attribute set are
+hybrids and can have odd results. In this example, the hybrid
+entries are:
+\forglsentries{\thislabel}{%
+ \ifglshasshort{\thislabel}%
+ {% is an abbreviation
+ \glsifregular{\thislabel}%
+ {% is regular
+ \texttt{\thislabel}.
+ }%
+ {}%
+ }
+ {}%
+}
+
+Using \verb|\glsxtrfull|:
+\forglsentries{\thislabel}{%
+ \ifglshasshort{\thislabel}{\glsxtrfull{\thislabel}. }{}}
+
+Using \verb|\glsxtrshort|:
+\forglsentries{\thislabel}{%
+ \ifglshasshort{\thislabel}{\glsxtrshort{\thislabel}. }{}}
+
+Using \verb|\glsxtrlong|:
+\forglsentries{\thislabel}{%
+ \ifglshaslong{\thislabel}{\glsxtrlong{\thislabel}. }{}}
+
+\section{Symbols}
+
+Using \verb|\glssymbol|:
+\forglsentries{\thislabel}{%
+ \ifglshassymbol{\thislabel}{\glssymbol{\thislabel}. }{}}
+
+\section{User Field}
+
+Using \verb|\glsuseri|:
+\forglsentries{\thislabel}{%
+ \ifglshasfield{useri}{\thislabel}{\glsuseri{\thislabel}[.] }{}}
+
+(The full stop in the above is placed inside square brackets
+to prevent the \verb|discardperiod| attribute from discarding it
+since the \verb|useri| field doesn't end with a dot.)
+
+\chapter{Math Mode}
+Inline: $\gls{pi} = \frac{C}{d}$, display:
+
+\[
+ \gls{pi} = \frac{C}{d}
+\]
+
+\chapter{Samples in Headings}
+
+Don't use commands like \verb|\gls| in section headings, but you can
+use commands like \verb|\glsfmttext| or \verb|\glsfmtshort|.
+
+\forglsentries{\thislabel}{%
+ \ifglshasshort{\thislabel}%
+ {\section{\glsfmtshort{\thislabel}}}%
+ {%
+% the constant entry "pi" can't be used in the PDF bookmarks,
+% so use the user1 text for the bookmark
+ \glsifcategory{\thislabel}{constant}
+ {%
+ \section{\texorpdfstring{\glsfmttext{\thislabel}}{\glsentryuseri{\thislabel}}}%
+ }%
+ {%
+ \section{\glsfmttext{\thislabel}}%
+ }%
+ }%
+ \Glsdesc[noindex]{\thislabel}.
+}
+
+
+\renewcommand{\glossarypreamble}{\emph{This glossary uses the style
+`\csuse{@glossary@default@style}' with modifications made
+through categories and their attributes.}\par\medskip}
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf
new file mode 100644
index 0000000000..da7a9f2d44
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-nested.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-nested.tex b/macros/latex/contrib/glossaries-extra/samples/sample-nested.tex
new file mode 100644
index 0000000000..a7c32a6908
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-nested.tex
@@ -0,0 +1,46 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\setabbreviationstyle{long-short-sc}
+
+\newabbreviation{ssi}{ssi}{server side includes}
+\newabbreviation{html}{html}{hypertext markup language}
+
+%DON'T use this with upper casing commands!
+\newabbreviation{shtml}{shtml}{\gls{ssi} enabled \gls{html}}
+
+% Alternatively
+%\newabbreviation{shtml}{shtml}{\glsxtrshort{ssi} enabled \glsxtrshort{html}}
+
+% Or
+%\newabbreviation{shtml}{shtml}{\glsps{ssi} enabled \glsps{html}}
+% (optional) enable indexing when \glsps occurs in glossary:
+%\renewcommand{\glossxtrsetpopts}{\glsxtrsetpopts{noindex=false}}
+
+\begin{document}
+
+This is a sample document testing nested link text.
+The \texttt{glossaries-extra} package temporarily modifies
+commands like \verb|\gls| or \verb|\glsxtrshort| that occur
+in fields, when any of those field is accessed through linking
+commands.
+
+First use: \gls{shtml}.
+
+\newpage
+
+Next use: \gls{shtml}.
+
+\newpage
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf
new file mode 100644
index 0000000000..d2a571a233
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.tex b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.tex
new file mode 100644
index 0000000000..da909b222f
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-noidx-restricteddocdefs.tex
@@ -0,0 +1,33 @@
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[
+ docdef=restricted,
+ undefaction=warn
+ ]{glossaries-extra}
+
+\makenoidxglossaries
+
+\begin{document}
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\gls{sample}.
+
+\verb|\printnoidxglossaries| follows:
+\printnoidxglossaries
+
+Too late to define an entry with the \texttt{docdef=restricted}
+setting. (Definitions must come before \verb|\printglossary|.)
+
+\newglossaryentry{sample2}{name={sample2},description={another
+example}}
+
+New entry just defined: \gls{sample2}.
+This will cause an error (or warning with \texttt{undefaction=warn})
+in \verb|\printnoidxglossaries|.
+This missing entry will cause a missing entry marker ??
+at the start of the glossary (before the header).
+
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf
new file mode 100644
index 0000000000..80898cefa1
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onelink.tex b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.tex
new file mode 100644
index 0000000000..1d9a71876c
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-onelink.tex
@@ -0,0 +1,49 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage{lipsum}
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\GlsXtrEnableEntryUnitCounting{general}{0}{page}
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+\newglossaryentry{sample2}{name={another sample},description={another example}}
+
+\renewcommand*{\glslinkcheckfirsthyperhook}{%
+ \ifnum\glsentrycurrcount\glslabel>0
+ \setkeys{glslink}{hyper=false}%
+ \fi
+}
+
+\begin{document}
+
+A \gls{sample} entry. \Gls{sample2}.
+Next use: \gls{sample}, \gls{sample2}.
+
+\lipsum[1]
+
+\Gls{sample} and more \glspl{sample}.
+\Gls{sample2} and \gls{sample2}.
+
+\newpage
+
+Next page: \gls{sample} and \gls{sample2}.
+
+Again: \gls{sample} and \gls{sample2}.
+
+\lipsum[2-5]
+
+Now for a \gls{sample} paragraph that spans the page break.
+\lipsum*[6-7] The entry in the final sentence in this \gls{sample} paragraph
+is incrementing and testing the count from the previous page.
+
+Another \gls{sample} paragraph.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf
new file mode 100644
index 0000000000..1daeb9987c
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.tex b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.tex
new file mode 100644
index 0000000000..51b91b2530
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-utf8.tex
@@ -0,0 +1,60 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[utf8]{inputenc}
+\usepackage[T1]{fontenc}
+\usepackage[xindy]{glossaries-extra}
+
+\makeglossaries
+
+% The starred version will attempt to allow UTF8 characters
+% in the label, but this may fail!
+\GlsXtrEnableOnTheFly*
+
+\begin{document}
+This is a \glsxtr{sample} document illustrating on-the-fly
+simultaneous \glsxtr{definition} and \glsxtr{usage}
+for \glsxtr[format=textbf][plural=glossaries]{glossary}
+\glsxtrpl[][plural=entries]{entry}. This has
+drawbacks and it's really much better to define entries in the
+\glsxtr{preamble}, but you may find it useful for simple
+indexing.
+
+\newpage
+
+\Glsxtr{preamble} \glsxtrpl{definition} are much better,
+but here is a \glsxtr{sample} of what you can do.
+
+\newpage
+The \glsxtrpl{glossary} must come at the end of the document
+with this usage.
+
+\newpage
+Commands can't occur in the label. The ``name'' key has to be
+used instead, but the starred version of
+\verb|\GlsXtrEnableOnTheFly| attempts to allow non-ASCII
+characters in the label, but this may break some commands,
+so take care!
+
+The \glsxtr{naïve}
+\glsxtr[][plural={phœnixes}]{phœnix} sent
+off its \glsxtr{résumé} covered in
+\glsxtr{pâté} from the \glsxtr{soirée}.
+
+Terms that contain commands must have the ``name'' set and the
+command removed from the label
+\glsxtr[][name={\emph{e.g.}}]{eg} like this, but
+really it's much better to define the entry in the preamble
+and use the standard \verb|\gls| instead.
+
+\newpage
+The previous page presupposes the existence of
+\glsxtrpl{phœnix}.
+
+\newpage
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf
new file mode 100644
index 0000000000..98df08cb26
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.tex b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.tex
new file mode 100644
index 0000000000..2ca31d1354
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly-xetex.tex
@@ -0,0 +1,55 @@
+% arara: xelatex
+% arara: makeglossaries
+% arara: xelatex
+\documentclass{article}
+
+\usepackage{fontspec}
+\usepackage[xindy]{glossaries-extra}
+
+\makeglossaries
+
+\GlsXtrEnableOnTheFly
+
+\begin{document}
+This is a \glsxtr{sample} document illustrating on-the-fly
+simultaneous \glsxtr{definition} and \glsxtr{usage}
+for \glsxtr[format=textbf][plural=glossaries]{glossary}
+\glsxtrpl[][plural=entries]{entry}. This has
+drawbacks and it's really much better to define entries in the
+\glsxtr{preamble}, but you may find it useful for simple
+indexing.
+
+\newpage
+
+\Glsxtr{preamble} \glsxtrpl{definition} are much better,
+but here is a \glsxtr{sample} of what you can do.
+
+\newpage
+The \glsxtrpl{glossary} must come at the end of the document
+with this usage.
+
+\newpage
+Commands can't occur in the label. The ``name'' key has to be
+used instead, but XeTeX makes life a bit easier for non-ASCII
+characters.
+
+The \glsxtr{naïve}
+\glsxtr[][plural={phœnixes}]{phœnix} sent
+off its \glsxtr{résumé} covered in
+\glsxtr{pâté} from the \glsxtr{soirée}.
+
+Terms that contain commands must have the ``name'' set and the
+command removed from the label
+\glsxtr[][name={\emph{e.g.}}]{eg} like this, but
+really it's much better to define the entry in the preamble
+and use the standard \verb|\gls| instead.
+
+\newpage
+The previous page presupposes the existence of
+\glsxtrpl{phœnix}.
+
+\newpage
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf
new file mode 100644
index 0000000000..1d60fe8175
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.tex b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.tex
new file mode 100644
index 0000000000..8431c6abe2
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-onthefly.tex
@@ -0,0 +1,50 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\GlsXtrEnableOnTheFly
+
+\begin{document}
+This is a \glsxtr{sample} document illustrating on-the-fly
+simultaneous \glsxtr{definition} and \glsxtr{usage}
+for \glsxtr[format=textbf][plural=glossaries]{glossary}
+\glsxtrpl[][plural=entries]{entry}. This has
+drawbacks and it's really much better to define entries in the
+\glsxtr{preamble}, but you may find it useful for simple
+indexing.
+
+\newpage
+
+\Glsxtr{preamble} \glsxtrpl{definition} are much better,
+but here is a \glsxtr{sample} of what you can do.
+
+\newpage
+The \glsxtrpl{glossary} must come at the end of the document
+with this usage.
+
+\newpage
+Commands can't occur in the label. The ``name'' key has to be
+used instead. Isn't this fiddly and not really worth the
+effort. May as well just define all the \glspl{entry} in the
+\glsxtr{preamble} instead.
+
+The \glsxtr[][name={na\"{\i}ve}]{naive}
+\glsxtr[][plural={ph\oe nixes},name={ph\oe nix}]{phoenix} sent
+off its \glsxtr[][name={r\'esum\'e}]{resume} covered in
+\glsxtr[][name={p\^at\'e}]{pate} from
+the \glsxtr[][name={soir\'ee}]{soiree}.
+
+\newpage
+The previous page presupposes the existence of
+\glsxtrpl{phoenix}.
+
+\newpage
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf
new file mode 100644
index 0000000000..97cb891003
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-pages.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-pages.tex b/macros/latex/contrib/glossaries-extra/samples/sample-pages.tex
new file mode 100644
index 0000000000..bb1722f9d7
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-pages.tex
@@ -0,0 +1,34 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[nopostdot=false]{glossaries-extra}
+
+\makeglossaries
+
+\GlsXtrEnablePreLocationTag{Page: }{Pages: }
+
+\newglossaryentry{sample1}{name={sample1},description={an example}}
+\newglossaryentry{sample2}{name={sample2},description={another example}}
+\newglossaryentry{sample3}{name={sample3},description={a third example}}
+
+\newglossaryentry{sample4}{name={sample4},description={a fourth example}}
+\glsadd[format=glsignore]{sample4}
+
+\begin{document}
+\chapter{First}
+
+Two entries: \gls{sample1}, \gls{sample2}.
+
+\chapter{Second}
+
+One entry: \gls{sample1}.
+
+\chapter{Third}
+
+All entries: \gls{sample1}, \gls{sample2}, \gls{sample3}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf
new file mode 100644
index 0000000000..5193bfe0bd
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postdot.tex b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.tex
new file mode 100644
index 0000000000..c54e3dcede
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-postdot.tex
@@ -0,0 +1,47 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+% Sample entry in the "general" category:
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\setabbreviationstyle[initialism]{short}
+
+% Set the attribute "insertdots" set to "true" to automatically
+% insert periods between the letters in initialism:
+\glssetcategoryattribute{initialism}{insertdots}{true}
+
+% This can cause a problem if any of the initialisms occur at the
+% end of a sentence so set the attribute "discardperiod" set to "true":
+\glssetcategoryattribute{initialism}{discardperiod}{true}
+
+\newabbreviation
+ [category=initialism,description={for example}]
+ {eg}{eg}{exempli gratia}
+
+% Now for an abbreviation without dots. This is strictly speaking
+% also an initialism, but it's going to be assigned the standard
+% "abbreviation" category:
+\newabbreviation{html}{HTML}{hypertext markup language}
+% (This will use the style currently set for the "abbreviation"
+% category, which is the short-long style by default.)
+
+\begin{document}
+
+Entry occurs at the end of a sentence: \gls{eg}.
+Entry occurs at the end of a sentence: \gls{sample}.
+Entry occurs at the end of a sentence: \gls{html}.
+
+Entry \gls{eg} occurs in the middle of a sentence.
+Entry \gls{sample} occurs in the middle of a sentence.
+Entry \gls{html} occurs in the middle of a sentence.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf
new file mode 100644
index 0000000000..7e7448c361
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-postlink.tex b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.tex
new file mode 100644
index 0000000000..5993302b7c
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-postlink.tex
@@ -0,0 +1,76 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[style=tree]{glossaries-extra}
+
+\makeglossaries
+
+% Append the description in parentheses on first use
+% for entries with the "describe" category:
+
+\glssetregularcategory{describe}
+
+\newcommand*{\glsxtrpostlinkdescribe}{%
+ \glsxtrpostlinkAddDescOnFirstUse
+}
+
+\newglossaryentry{sample1}{name={sample1},
+ category=describe,
+ description={the first sample entry}}
+
+% Append the symbol in parentheses on first use for
+% entries with the "symbol" category:
+
+\glssetregularcategory{symbol}
+
+\newcommand*{\glsxtrpostlinksymbol}{%
+ \glsxtrifwasfirstuse
+ {%
+ \space (denoted: \glsentrysymbol{\glslabel})%
+ }%
+ {}%
+}
+
+\newglossaryentry{sample2}{name={sample2},
+ symbol={\ensuremath{\mathcal{S}_2}},
+ category=symbol,
+ description={the second sample entry}}
+
+% Append the description as a footnote for general entries
+% on first use:
+
+%\newcommand*{\glsxtrpostlinkgeneral}{%
+% \glsxtrifwasfirstuse{\footnote{\glsentrydesc{\glslabel}}}{}%
+%}
+
+% or (defer footnote mark until after any following punctuation):
+
+\newcommand*{\glsxtrpostlinkgeneral}{%
+ \glsxtrifwasfirstuse
+ {\glsxtrdopostpunc{\footnote{\glsentrydesc{\glslabel}}}}%
+ {}%
+}
+
+% Disable hyperlink of first use for those entries in the "general"
+% category:
+
+\glssetcategoryattribute{general}{nohyperfirst}{true}
+
+\newglossaryentry{sample3}{name={sample3},
+ description={the third sample entry}}
+
+\begin{document}
+
+First use: \gls{sample1}, \gls{sample2} and \gls{sample3}.
+
+Next use: \gls{sample1}, \gls{sample2} and \gls{sample3}.
+
+Value of first field (post-link hook is still used): \glsfirst{sample1}, \glsfirst{sample2}
+and \glsfirst{sample3}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf
new file mode 100644
index 0000000000..196eeb389b
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-prefix.tex b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.tex
new file mode 100644
index 0000000000..7fa2f325fb
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-prefix.tex
@@ -0,0 +1,24 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+\usepackage{glossaries-prefix}
+
+\makeglossaries
+
+\newabbreviation
+ [prefix={an\space},
+ prefixfirst={a~}]
+ {svm}{SVM}{support vector machine}
+
+\begin{document}
+
+This is a sample document to test prefixes.
+First use: \pgls{svm}.
+Next use: \pgls{svm}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf
new file mode 100644
index 0000000000..23daf02f3c
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.tex b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.tex
new file mode 100644
index 0000000000..94bce09132
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-record-nameref.tex
@@ -0,0 +1,74 @@
+% arara: pdflatex
+% arara: bib2gls
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage{amsmath}
+\usepackage[colorlinks]{hyperref}
+\usepackage[record=nameref,% use bib2gls with nameref information (requires bib2gls v1.8+)
+ equations,% switch to equation counter in numbered equations
+ floats,% switch to corresponding counter when in a float
+ counter=section,% use section as the default record counter
+ stylemods,% load glossaries-extra-stylemods.sty
+ style=index]{glossaries-extra}
+
+\GlsXtrLoadResources[
+ % entries defined in example-glossaries-brief.bib and
+ % example-glossaries-symbols:
+ src={example-glossaries-brief,example-glossaries-symbols},
+ sort={en-GB},% sort according to en-GB locale
+ %selection=all,% select all entries provided in the .bib file
+ loc-suffix% add default suffix (full stop) for location list
+ ]
+
+\begin{document}
+
+\Gls[counter=page]{dolor}.
+
+\section{Sample Section}
+
+\gls{dolor}, \gls{amet}.
+
+See \url{https://ctan.org/pkg/bib2gls} for converting
+\texttt{.bib} to \texttt{.glstex} files.
+
+\section{Another Section}
+
+\glspl{lorem}, \gls{amet}.
+
+`Lorem' unused or undefined? \GlsXtrIfUnusedOrUndefined{lorem}{yes}{no}.
+
+\begin{figure}[hb]
+\centering
+X
+\caption{Sample Figure \glsfmttext{lorem}}
+\end{figure}
+
+\gls{lorem} again.
+
+\section{Yet Another Section}
+
+\Gls{lorem}, \gls{amet}, \gls{alpha}.
+
+\begin{equation}
+\glssymbol{alpha} = 2\glssymbol[counter=page]{beta}
+\end{equation}
+
+\gls{beta}.
+
+\begin{align}
+\glssymbol{alpha} &= 2\glssymbol{beta}\\
+\glssymbol{gamma} &= \glssymbol{beta}[^2] = \frac{1}{4}\glssymbol{alpha}[^2]
+\end{align}
+
+\newpage
+
+\Gls{lorem} and \gls[counter=page]{dolor}.
+
+\section{Section about \glsfmttext{lorem}}
+
+\Gls{lorem}.
+
+\printunsrtglossary
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf
new file mode 100644
index 0000000000..338bc55bb1
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-record.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-record.tex b/macros/latex/contrib/glossaries-extra/samples/sample-record.tex
new file mode 100644
index 0000000000..95f7bf9811
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-record.tex
@@ -0,0 +1,51 @@
+% arara: pdflatex
+% arara: bib2gls
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[record,% use bib2gls
+ stylemods,% load glossaries-extra-stylemods.sty
+ style=index]{glossaries-extra}
+
+\GlsXtrRecordCounter{section}
+
+% suppress the space that normally occurs before the locations:
+\renewcommand{\glsxtrprelocation}{}
+
+\GlsXtrLoadResources[
+ src={example-glossaries-brief},% entries defined in example-glossaries-brief.bib
+ sort={en-GB},% sort according to en-GB locale
+ %selection=all,% select all entries provided in the .bib file
+ loc-prefix={{, page},{, pages}},% prefix for location list
+ loc-suffix% suffix for location list
+ ]
+
+\begin{document}
+
+\section{Sample Section}
+\printunsrtglossaryunit[nonumberlist]{section}
+% or:
+%\printunsrtglossary*{\printunsrtglossaryunitsetup{section}%
+% \renewcommand*{\glossarysection}[2][]{\subsection*{Summary}}%
+%}
+
+\gls{dolor}, \gls{amet}.
+
+Check first use flag for `amet': \ifglsused{amet}{used}{not used}.
+Check first use flag for `lorem': \ifglsused{lorem}{used}{not used}.
+`Lorem' unused or undefined? \GlsXtrIfUnusedOrUndefined{lorem}{yes}{no}.
+
+See \url{https://ctan.org/pkg/bib2gls} for converting
+\texttt{.bib} to \texttt{.glstex} files.
+
+\section{Another Section}
+\printunsrtglossaryunit[nonumberlist]{section}
+
+\glspl{lorem}, \gls{amet}.
+
+`Lorem' unused or undefined? \GlsXtrIfUnusedOrUndefined{lorem}{yes}{no}.
+
+\printunsrtglossary
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf
new file mode 100644
index 0000000000..0662789138
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.tex b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.tex
new file mode 100644
index 0000000000..b0ca68763b
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-restricteddocdefs.tex
@@ -0,0 +1,33 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[docdef=restricted,
+ undefaction=warn
+ ]{glossaries-extra}
+
+\makeglossaries
+
+\begin{document}
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\gls{sample}.
+
+\printglossaries
+
+Too late to define an entry with the \texttt{docdef=restricted}
+setting. (Definitions must come before \verb|\printglossary|.)
+
+\newglossaryentry{sample2}{name={sample2},description={another
+example}}
+
+New entry just defined: \gls{sample2}.
+This will cause an error (or warning with \texttt{undefaction=warn})
+in \verb|\printglossaries|.
+This missing entry will be marked with two question marks ??
+in the glossary.
+
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf
new file mode 100644
index 0000000000..67862dfd86
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.tex b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.tex
new file mode 100644
index 0000000000..bb72a7ce1c
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-hyp.tex
@@ -0,0 +1,29 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage
+ %[debug=showtargets]% requires glossaries.sty v4.32
+ {glossaries-extra}
+
+%\renewcommand*{\glsshowtarget}[1]{\texttt{\small [#1]}}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\renewcommand{\thesection}{S.\arabic{section}}
+\renewcommand{\theHsection}{\thepart.\thesection}
+
+\begin{document}
+\part{Sample Part}
+\section{Sample Section}
+
+\part{Another Part}
+\section{Another Section}
+\gls[counter=section]{sample}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf
new file mode 100644
index 0000000000..fd234df18b
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.tex b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.tex
new file mode 100644
index 0000000000..e2de8bfbef
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main-hyp.tex
@@ -0,0 +1,30 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\glssetcategoryattribute{supplementary}{externallocation}{sample-suppl-hyp.pdf}
+
+\newglossaryentry{sample}{category={supplementary},
+ name={sample},description={an example}}
+
+\begin{document}
+\section{Sample}
+Some \gls{sample} text.
+
+Test link: \hyperref{sample-suppl-hyp.pdf}{}{section.II.S.2}{S.2}.
+
+In this document, \verb|\theHsection| is in the form: \theHsection.
+
+In the other document, it's in the form II.S.2 so
+\texttt{theHvalue} is needed to ensure the hyperlink is correct.
+
+\printglossaries
+\glsadd[format=glsxtrsupphypernumber,thevalue={S.2},theHvalue={II.S.2},counter=section]{sample}
+\end{document}
+
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf
new file mode 100644
index 0000000000..5ca8b571c0
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.tex b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.tex
new file mode 100644
index 0000000000..2945b55f81
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl-main.tex
@@ -0,0 +1,18 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\begin{document}
+Some \gls{sample} text.
+
+\printglossaries
+\glsadd[thevalue={S.2}]{sample}
+\end{document}
+
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf
new file mode 100644
index 0000000000..a78c307b62
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-suppl.tex b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.tex
new file mode 100644
index 0000000000..6b295688fc
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-suppl.tex
@@ -0,0 +1,14 @@
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage{glossaries-extra}
+
+\newglossaryentry{sample}{name={sample},description={an example}}
+
+\renewcommand{\thepage}{S.\arabic{page}}
+
+\begin{document}
+First page.
+\newpage
+\gls{sample}.
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf
new file mode 100644
index 0000000000..c7a5afbce6
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-trans.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-trans.tex b/macros/latex/contrib/glossaries-extra/samples/sample-trans.tex
new file mode 100644
index 0000000000..041dc24e48
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-trans.tex
@@ -0,0 +1,54 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[T1]{fontenc}
+\usepackage[colorlinks]{hyperref}
+\usepackage[nogroupskip]{glossaries-extra}
+
+\makeglossaries
+
+\setabbreviationstyle[acronym]{long-short-user}
+
+% Translations are stored in the user1 key in the sample file
+% (loaded below).
+% This is the default for the long-short-user style so
+% \glsxtruserfield doesn't need changing, but let's illustrate
+% changing the font style for the short form:
+
+\renewcommand{\glsabbrvuserfont}[1]{\textsc{\MakeLowercase{#1}}}
+\renewcommand*{\glsxtrusersuffix}{\glsxtrscsuffix}
+
+\loadglsentries{example-glossaries-acronyms-lang}
+
+% The entries in the above file are all defined using
+% \newacronym, which automatically sets the category
+% to "acronym" (which is why the abbreviation style needs
+% to use "acronym" in the optional argument). The glossary
+% can be adapted by using the post-description hook for this
+% category.
+
+% \glscurrentfieldvalue only works with glossaries v4.23 (and above)
+\renewcommand{\glsxtrpostdescacronym}{%
+ \ifglshasfield{\glsxtruserfield}{\glscurrententrylabel}%
+ { (English: \glscurrentfieldvalue)}%
+ {}%
+}
+
+\begin{document}
+
+\section{Sample}
+
+First use:
+
+\forglsentries{\thislabel}{\gls{\thislabel}. }
+
+Next use:
+
+\forglsentries{\thislabel}{\gls{\thislabel}. }
+
+\printglossaries
+
+\end{document}
+
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf
new file mode 100644
index 0000000000..f5ce99c373
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-undef.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-undef.tex b/macros/latex/contrib/glossaries-extra/samples/sample-undef.tex
new file mode 100644
index 0000000000..194f4a4bc8
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-undef.tex
@@ -0,0 +1,21 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage[undefaction=warn]{glossaries-extra}
+
+\makeglossaries
+
+\newglossaryentry{sample}{name=sample,description={an example}}
+
+\begin{document}
+
+Defined entry: \gls{sample}, \glslink{sample}{text}.
+
+Undefined entry: \gls{undefined}, \glslink{undefined}{text}.
+
+\printglossaries
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf
new file mode 100644
index 0000000000..4c397377f0
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.tex b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.tex
new file mode 100644
index 0000000000..7979120c45
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample-unitentrycount.tex
@@ -0,0 +1,90 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+\documentclass{report}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+
+\GlsXtrEnableEntryUnitCounting{abbreviation}{2}{chapter}
+
+\makeglossaries
+
+\newabbreviation{html}{HTML}{hypertext markup language}
+\newabbreviation{xml}{XML}{extensible markup language}
+\newabbreviation{css}{CSS}{cascading style sheet}
+
+\newglossaryentry{sample}{name={sample},description={sample}}
+
+\newcommand*{\lastruncount}[1]{%
+Overall number of times the \texttt{#1} entry is used in
+this chapter: \glsentryprevcount{#1}. (Information obtained
+from previous run.)%
+}
+
+\newcommand*{\currentruncount}[1]{%
+Number of times the \texttt{#1} entry has been used this
+chapter so far: \glsentrycurrcount{#1}.%
+}
+
+\newcommand*{\triggertest}[1]{%
+Normal usage of \texttt{\char`\\gls} \glsxtrifcounttrigger{#1}{has}{hasn't} been
+suppressed for the \texttt{#1} entry in this chapter.%
+}
+
+\begin{document}
+
+This is a sample document that uses entry counting per unit. The unit entry counting
+has been enabled on the \texttt{abbreviation} category.
+The unit has been set to
+``\glsgetcategoryattribute{abbreviation}{unitcount}''.
+This means that abbreviations will only be added to the glossary if
+they are used more than $n$ times per
+\glsgetcategoryattribute{abbreviation}{unitcount},
+where in this document $n$ has been set to
+\glsgetcategoryattribute{abbreviation}{entrycount}.
+Entries in other categories behave as normal.
+
+\chapter{Sample}
+
+\lastruncount{xml}
+
+Used once: \gls{html}.
+
+Used twice: \gls{xml} and \gls{xml}.
+
+Used three times: \gls{css} and \gls{css} and \gls{css}.
+
+Used once but this entry is in the ``general'' category
+which doesn't have the entry unit counting set:
+\gls{sample}.
+
+\currentruncount{xml}
+
+\triggertest{xml}
+
+\currentruncount{css}
+
+\triggertest{css}
+
+\chapter{Another Sample}
+
+Used once in this chapter: \gls{xml}.
+
+Used twice in this chapter: \gls{css} and \gls{css}.
+
+\currentruncount{css}
+
+\triggertest{css}
+
+Total number of times the \texttt{css} entry was used
+throughout the document on the previous run:
+\glsentryprevtotalcount{css}.
+
+Total number of times the \texttt{xml} entry was used
+throughout the document on the previous run:
+\glsentryprevtotalcount{xml}.
+
+\printglossaries
+
+\end{document}
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample.pdf b/macros/latex/contrib/glossaries-extra/samples/sample.pdf
new file mode 100644
index 0000000000..c5fb78f8f9
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample.pdf
Binary files differ
diff --git a/macros/latex/contrib/glossaries-extra/samples/sample.tex b/macros/latex/contrib/glossaries-extra/samples/sample.tex
new file mode 100644
index 0000000000..42e2f4d677
--- /dev/null
+++ b/macros/latex/contrib/glossaries-extra/samples/sample.tex
@@ -0,0 +1,26 @@
+% arara: pdflatex
+% arara: makeglossaries
+% arara: pdflatex
+% arara: pdflatex
+\documentclass{article}
+
+\usepackage[colorlinks]{hyperref}
+\usepackage{glossaries-extra}
+\usepackage{glossary-mcols}
+\setglossarystyle{mcolindex}
+
+\makeglossaries
+
+\loadglsentries{example-glossaries-brief}
+
+\begin{document}
+
+\tableofcontents
+
+\section{Sample}
+
+Entries: \forglsentries{\thislabel}{\gls{\thislabel}. }
+
+\printglossaries
+
+\end{document}