2.1 (2026-04-21)

 * Corrected current release

 * Provide \@glossary@write@seclabel (glossaries v5.1+)

 * Added support for glossaries.sty saveglossarygroups

2.0 (2026-03-06):

 * glossaries-extra.sty:

  - Changed default definition of \glsxtrabbrvpluralsuffix 
    to use \glsacrpluralsuffix instead of \glspluralsuffix

1.9 (2025-11-03):

 * glossaries-extra.sty:

  - added \glsxtrseeitemformat

  - added \@printunsrtglossary@unit@nosec 

1.8 (2025-08-13):

 * glossaries-extra-bib2gls.sty:

  - added "dgls" hooks:

    \predglshook
    \predglslinkhook
    \predglsfieldhook

1.7 (2025-05-14):

 * glossaries-extra-stylemods.sty:

  - bug fix: use protected expansion for \eglssetwidest and \xglssetwidest

1.6 (2025-04-12)

 * glossaries-extra.sty:

  - provide \GLOSSentryname and \GlossEntryName (glossaries.sty v4.59+)
    and redefine as per \Glossentryname

  - added \GLOSSentrynameother and \GlossEntryNameOther

 * glossaries-extra-stylemods.sty:

  - check for new functions provided by glossary-tree v4.59+

 * New file:

  - example-glossaries-constants.bib
    (bib2gls counterpart to example-glossaries-constants.tex
     provided with glossaries.sty v4.59+)

1.59 (2025-03-18)

  - added \GlsXtrClearAutoAddOnFormat

  - bug fix: undefined control sequence \@gls@noidx@nosanitizesort
    when using sanitizesort=false with \makeglossaries[...]

1.58 (2025-03-12)

  - check for new glossaries v4.57 update to \printnoidxglossary

  - \glsforeachincategory : check for empty glossary

  - bug fix issue #279: Misspelt commands names 
   https://www.dickimaw-books.com/bugtracker.php?key=279

  - corrections to user manual

1.57 (2025-03-04)

  - bug fix: \glsfmtfirstpl produces \GLSfmtfirstpl variant PDF bookmark

  - corrections to manual

1.56 (2025-02-07)

 * glossaries-extra-bib2gls.sty:

   - new punctuation rules:

     \glsxtrGeneralPuncRules
     \glsxtrhyphenIrules
     \glsxtrhyphenIIrules
     \glsxtrminusrules
     \glsxtrgeneralpuncIIIrules
     \glsxtrgeneralpuncbracketIrules
     \glsxtrgeneralpuncbracketIIrules
     \glsxtrgeneralpuncbracketIIIrules
     \glsxtrgeneralpuncbracketIVrules
     \glsxtrgeneralpuncdotrules

1.55 (2025-01-29)

 * glossaries-extra.sty:

   - new command \glsbibdata[options]{bib-list} which is a shortcut
     for \GlsXtrLoadResources[src={bib-list},options]

   - deprecated \glsxtrresourcefile (use \glsbibdata instead)

   - new utility commands:

     \glossaries_if_field_exists[_p]:nn[TF]
     \glossaries_if_field_set[_p]:nn[TF]
     \glossaries_if_field_eq[_p]:nnN[TF]
     \glossaries_if_field_eq:nnn[TF]
     \glossaries_if_field_eq_field[_p]:nnn[TF]
     \glossaries_if_field_eq_field[_p]:nnnn[TF]
     \glossaries_use_field:nn

1.54 (2025-01-03):

 * glossaries-extra.sty:

   - added \glsxtrprenamehook

   - added check for \glsdohyperlinkhook

   - added \glsxtrtargetdup

   - added \glspdfsentencecase

   - added \BibGlsOptions

   - added:
      \Glossentrynameother
      \Glsxtrglossentry
      \GlsXtrStandaloneEntryHeadNameFirstUc
      \GlsXtrStandaloneEntryPdfNameFirstUc
      \GlsXtrStandaloneEntryNameFirstUc
      \Glsxtrglossentryother
      \GlsXtrStandaloneEntryHeadOtherFirstUc
      \GlsXtrStandaloneEntryPdfOtherFirstUc
      \GlsXtrStandaloneEntryOtherFirstUc

   - automake: added check for glossaries v4.55 new code
     to support TEXMF_OUTPUT_DIRECTORY

   - bug fix: corrected long-postshort-sc-user and
     long-postshort-sc-user-desc inline full formats
     (duplicated parenthetical content)

   - bug fix: corrected \GlsXtrIfInGlossary

   - bug fix: \mgls etc set \glsxtrifwasglslike and \glsxtrcurrentfield

 * glossary-bookindex.sty:

   - added
      \glsxtrbookindextarget
      \glsxtrbookindexsubtarget

   - added \glsxtrbookindexsubsubitem

 * glossaries-extra-bib2gls.sty:

   - added \IfNotBibGls
   - added \glsxtrcontrolIrules and \glsxtrcontrolIIrules

1.53 (2023-09-29):

 * added test file example-glossaries-utf8.bib

 * glossaries-extra.sty:

  - updated to pick up changes to glossary-hypernav 4.53

1.52 (2023-06-28):

 * glossaries-extra.sty:

  - bug fix: mgls records not written to aux file if tikz loaded 
    https://www.dickimaw-books.com/bugtracker.php?key=262

  - bug fix: typo in name of command \pretoglossarypreamble
    (was erroneously defined as \preglossarypreamble). Old name
    retained for backward-compatibility but use is deprecated in new
    documents.
    https://www.dickimaw-books.com/bugtracker.php?key=220

1.51 (2023-04-24):

 * glossaries-extra.sty

  - added \glsxtrtarget

  - added \glsxtrpInit, \Glsps, \Glspt, \GLSps and \GLSpt

  - bug fix: corrected \glsxtrshortlonguserdescname to use long singular (not
    plural)

  - bug fix: All-cap abbreviations lead to undefined control sequence when used chapters/sections of books 
   https://www.dickimaw-books.com/bugtracker.php?key=251

  - added \GlossariesExtraInfo

 * glossaries-extra-bib2gls.sty

  - added \GlsXtrResourceInitEscSequences

  - bug fix: clear selection list for \dglsfield if fallback found

1.50 (2022-11-08):

 * glossaries-extra.sty

   - added new hooks used by \printunsrtglossary

     \printunsrtglossarypostentryprocesshook
     \printunsrtglossarygrouphook
     \printunsrtglossarypostbegin
     \printunsrtglossarypreend

   - \printunsrtglossary no longer adds \glsresetentrylist after
     \glossaryheader

   - allow an empty value in \glsxtrsetglossarylabel to suppress the
     label

   - new commands: \glsstartrange, \glsendrange and \GlsXtrSetDefaultRangeFormat

 * example-glossaries-user.bib

   - new file corresponding to example-glossaries-user.tex

 * glossary-table.sty:

   - moved other field inside \glstableNameSingleSuppl

   - changed \GlsXtrIfFieldUndef to \ifglshasdesc, \ifglshassymbol
     and \ifglsfieldvoid, as appropriate

   - moved child list inside \glstableblockentry

   - redesigned table style to move conditionals outside of
     longtable.

   - added new block styles:

     name-symbol-other-desc
     name-other-symbol-desc
     desc-symbol-other-name
     desc-other-symbol-name
     name-other-desc
     desc-other-name

 * glossary-longextra.sty:

   - added custom styles

1.49 (2022-10-14):

 * Rollback to v1.48 available.

 * glossaries-extra.sty:

   - Case-changing support now tries to detect new mfirstuc.sty v2.08
     commands (which use LaTeX3). If available, mappings will be established for
     \makefirstuc. For the best support, ensure you have 
     mfirstuc v2.08 and glossaries v4.50 when they become available.

   - long form commands like \glsxtrlong now set \glsxtrifwasfirstuse
     to \@firstoftwo to simulate first use for the post-link hook.
     This is implemented by the new command \glsxtrsetlongfirstuse
     To restore the original behaviour, redefine this command:

     \renewcommand{\glsxtrsetlongfirstuse}[1]{%
      \letcs\glsxtrifwasfirstuse{@secondoftwo}%
     }

   - new hook to implement retainfirstuseperiod attribute:
     \glsxtrdiscardperiodretainfirstuse

     Note that the retainfirstuseperiod attribute behaves slightly differently.
     Now the period will only be discarded if it follows subsequent
     use of commands like \gls or the short commands like
     \glsxtrshort (not for commands like \glsuseri). 
     To restore the original behaviour:

     \renewcommand*{\glsxtrdiscardperiodretainfirstuse}[3]{%
      \glsxtrifwasfirstuse{#3}{\glsxtrifperiod{#2}{#3}}%
     }

   - The definition of \glsdefaultshortaccess has been restored to
     the original definition provided by glossaries-accsupp.sty. If
     you want the definition that was introduced to glossaries-extra v1.42
     you need to do:

     \renewcommand{\glsdefaultshortaccess}[2]{#1 (#2)}

   - entry counting now has associated conditional \ifglsresetcurrcount
     which determines whether or not to set the counter back to 0
     when the first use flag is reset. (Issue #205
     https://www.dickimaw-books.com/bugtracker.php?key=205)

     The default is now \glsresetcurrcountfalse. This changes the 
     behaviour from older versions, but makes more sense with the
     \cgls commands. If the previous behaviour is required use 
     \glsresetcurrcounttrue

   - Fixed bug #194 (setting mathrel category gives ordinary spacing
     instead of mathrel spacing) 
     https://www.dickimaw-books.com/bugtracker.php?key=194

     This issue was caused by the grouping in \glslinkwrcontent so
     this command now simply does its argument to avoid this issue.

     The indexing whatsit is now encapsulated with \glsencapwrcontent, 
     which adds grouping to help prevent spacing issues.

     To revert back to the previous behaviour:

     \renewcommand*{\glslinkwrcontent}[1]{{#1}}
     \renewcommand*{\glsencapwrcontent}[1]{#1}

     Note that \glsencapwrcontent has also been added to
     glossaries.sty v4.50 so is defined with \providecommand in 
     glossaries-extra.sty

   - added support for bib2gls v3.0 `group-level` option
     (hierarchical letter groups). New command (only supported by
     \printunsrtglossary and \printunsrtinnerglossary):

     \glssubgroupheading

     If you need this setting for styles provided with
     glossaries.sty, use the stylemods option to patch those styles
     to include this command.

   - \printunsrtglossary now has extra commands that may be
     referenced in \printunsrtglossaryentryprocesshook:

     \glscurrententrylevel
     \glscurrentrootentry
     \glscurrenttoplevelentry

   - \print...glossary set of commands have new options: 
     preamble and postamble

   - \printunsrtglossary new option : flatten

   - added starred version of \glsxtrcopytoglossary

   - \glsxtrenablerecordcount now adjusts the shortcut commands \ab,
     \ac etc to use \rgls etc

   - new commands:

     \GlsXtrSetPlusModifier
     \GlsXtrSetStarModifier
     \GlsXtrIfInGlossary
     \setupglslink
     \setupglsadd
     \glsxtrseelists \glsxtrseelistsencap \glsxtrseelistsdelim
     \glsxtrtaggedlist \glsxtrtaggedlistsep
     \glsentryindexcount \glsifindexed
     \glsaddallunindexed \glsxtrnoidxgroups
     \printunsrtglossaryunitpostskip
     \glsxtrAddCounterRecordHook
     \glsxtrnewglslink \glsxtrnewglsdisp
     \glsxtraliashook
     \GlsXtrStandaloneEntryPdfName
     \GlsXtrStandaloneEntryHeadName
     \GlsXtrStandaloneEntryPdfOther
     \GlsXtrStandaloneEntryHeadOther
     \GlsXtrUnsetBufferEnableRepeatLocal
     \GlsXtrResetLocalBuffer
     \GlsXtrClearUnsetBuffer

   - added check for \GetTitleStringDisableCommands to patch
     for \glsxtrtitleorpdforheading

   - new placeholder commands for post-link hooks:

     \glsxtrifwasglslike, \glsxtrifwasglslikeandfirstuse,
     \glsxtrifwassubsequentuse, \glsxtrifallcaps,
     \glsxtrcurrentfield, \glsxtrifwassubsequentorshort

   - extra values for shortcuts option: acother and abother

   - new user-level command \glsxtraddunusedxrefs in the definition of
     \glsxtraddallcrossrefs

   - added postunset, preunset and prereset \gls options

   - added innertextformat \gls option and associated commands:

     \glsxtrgenentrytextfmt
     \glsxtrdefaultentrytextfmt
     \glsxtrattrentrytextfmt
     \glsaccessfmt...

   - new attributes: encapinnerfmt, encapnocase, encapnocaseinnerfmt

   - new commands for appending to the set of default \gls options:

     \GlsXtrAppToDefaultGlsOpts
     \GlsXtrPreToDefaultGlsOpts

   - abbreviation style code has been moved into a separate file
     glossaries-extra-abbrstyles.def which is automatically input
     by glossaries-extra.sty

   - new helper commands for abbreviation styles:

     \glsxtrshortformat
     \glsxtrshortplformat
     \Glsxtrshortformat
     \Glsxtrshortplformat

     \glsxtrlongformat
     \glsxtrlongplformat
     \Glsxtrlongformat
     \Glsxtrlongplformat

     \glsxtrlongshortformat
     \glsxtrlongshortplformat
     \Glsxtrlongshortformat
     \Glsxtrlongshortplformat

     \glsxtrshortlongformat
     \glsxtrshortlongplformat
     \Glsxtrshortlongformat
     \Glsxtrshortlongplformat

     \glsxtrfootnotelongformat
     \glsxtrfootnotelongplformat
     \glsxtrfootnotepostlongformat

     \glsxtrrevert
     \glsxtrdefaultrevert
     \glsxtrscrevert
     \glsxtrscuserrevert
     \glsxtrsconlyrevert
     \glsxtrsmrevert
     \glsxtremrevert

   - debug=showwrgloss now also shows the wrglossary counter if 
     indexcounter has been set

   - made \glsxtrdopostpunc robust

   - added support for \glsindexingsetting (new to glossaries.sty v4.50)

   - record option: test for \inputencodingname switched to
     \ifdefvoid and UTF-8 assumed if void.

   - new package option 'bibglsaux'

   - support for glossaries-prefix with abbreviations:

     \pglsxtrshort, \pglsxtrshortpl, \pglsxtrlong, \pglsxtrlongpl
     \pglsfmtshort, \pglsfmtshortpl, \pglsfmtlong, \pglsfmtlongpl

     and sentence-case and all-caps versions

   - bug fix: indexcounter with record=nameref shows the wrglossary
     value instead of the page number

   - bug fix: \GlsXtrDualBackLink showing label not text if dual
     field not set

   - bug fix #206: default shortaccess is using UTF-16BE
      https://www.dickimaw-books.com/bugtracker.php?key=206

   - bug fix: shortplural and longplural in optional argument of
     \newabbreviation ignore attributes

   - bug fix: markwords and markshortwords attribute not working
     correctly for plurals

   - bug fix: some abbreviation styles had incorrect capitalisation
     for \Gls...

   - bug fix: corrected name of longpluralaccess field

   - bug fix #192: Undefined control sequences with \mgls and bib2gls
     https://www.dickimaw-books.com/bugtracker.php?key=192

   - bug fix #193: \Glsxtrhiername fails with child entries 
     https://www.dickimaw-books.com/bugtracker.php?key=193

   - bug fix #171: issue with base options passed if glossaries.sty
     already loaded
     https://www.dickimaw-books.com/bugtracker.php?key=171

   - bug fix: corrected spelling of \GlsXtrLetField

   - bug fix: don't fallback on loclist field if \GlsXtrLocationField has
     been changed (since this indicates that the given field is intended and
     should be left blank if not set).

   - bug fix: entry counting not working with docdef=restricted

   - bug fix: corrected spelling of \ifglshasshort in \glssetcombinedsepnarrow
     \glssetcombinedsepabbrvnone and \glssetcombinedsepabbrvnbsp

   - bug fix: corrected arguments to \GlsXtrStandaloneEntryOther
     within the definition of \@glsxtrglossentryother

 * glossaries-extra-stylemods.sty:

   - added new sub-group command \glssubgroupheading to styles.

 * glossary-bookindex.sty:

   - added new sub-group command \glssubgroupheading to styles.

   - new commands to adjust the style:

     \glsxtrbookindexpregroupskip
     \glsxtrbookindexpostgroupskip
     \glsxtrbookindexpresubgroupskip
     \glsxtrbookindexpostsubgroupskip
     \glsxtrbookindexformatsubheader
     \glsxtrbookindexsubbookmark

 * glossary-longextra.sty:

   - added new sub-group command \glssubgroupheading to styles.

   - new command to adjust the style:

     \glslongextraSubGroupHeading

   - new styles: long-sym-desc, long-desc-sym, abbr-short-long,
     abbr-long-short and associated commands

 * glossary-topic.sty:

   - added new sub-group command \glssubgroupheading to styles.

   - new command to adjust the style:

     \glstopicSubGroupHeading

 * glossary-table.sty: new package

 * glossaries-extra-bib2gls.sty:

   - new command for use with record=nameref and indexcounter:

     \glsxtrwrglossarylocfmt

   - new commands defined or used by \glsxtrdisplaylocnameref:

       \glsxtrsetactualanchor
       \glsxtrlocationanchor
       \glsxtrrecentanchor
       \glsxtractualanchor
       \glsxtrtitlednamereflink

   - new conditional for the prefix label fallback (\dgls etc):
     \ifGlsXtrPrefixLabelFallbackLast

   - \dgls etc will now record all possible prefixes when there's no
     match to assist document build on the first run.

   - new commands: \dglsfield, \dGlsfield, \dGLSfield, \newdglsfield
     and \newdglsfieldlike

   - added General Latin subset rules:

     \glsxtrGeneralLatinAtoMrules
     \glsxtrGeneralLatinNtoZrules
     \glsxtrGeneralLatinAtoGrules
     \glsxtrGeneralLatinHtoMrules
     \glsxtrGeneralLatinNtoSrules
     \glsxtrGeneralLatinTtoZrules

   - subdivided \glsxtrgeneralpuncIrules into:

     \glsxtrgeneralpuncmarksrules
     \glsxtrgeneralpuncaccentsrules
     \glsxtrgeneralpuncquoterules
     \glsxtrgeneralpuncbracketrules
     \glsxtrgeneralpuncsignrules

   - added shortcut rules:

     \glsxtrIgnorableRules
     \glsxtrGeneralInitRules

   - new command: \IfTeXParserLib

1.48 (2021-11-22):

 * glossaries-extra.sty:

   - new command \glslinkwrcontent used to encapsulate link text and
     indexing within commands like \gls and \glslink. This adds
     grouping, which will hopefully fix issue #189
     https://www.dickimaw-books.com/bugtracker.php?key=189
     (spacing issues caused by whatsit)

     This is currently added as a trial. If no issues are reported
     it will be added to the base package as well.

     If the grouping causes a problem, redefine this command without
     it:

     \renewcommand*{\glslinkwrcontent}[1]{#1}


   - New multi (combined/compound) entry feature:

        \multiglossaryentry and associated commands 

     See chapter "Multi (or Compound) Entries" for details.

   - New commands:

     \glssetcategoriesattribute
     \glssetcategoriesattributes

   - bug fix #190: hypergroup, \glsnavhyperlinkname and targetnameprefix 
     don't work together 
     https://www.dickimaw-books.com/bugtracker.php?key=190

   - new abbreviation styles:

     long-only-short-sc-only
     long-only-short-sc-only-desc
     long-postshort-sc-user
     long-postshort-sc-user-desc

   - new debugging package option `showtargets`

 * glossaries-extra-bib2gls.sty:

   - added multi-entry commands for use with bib2gls:

     \glsxtrmultientryadjustedname
     \Glsxtrmultientryadjustedname
     \GlsXtrmultientryadjustedname
     \GLSxtrmultientryadjustedname

     \glsxtrmultientryadjustednamesep
     \glsxtrmultientryadjustednamepresep
     \glsxtrmultientryadjustednamepostsep

     \glsxtrmultientryadjustednamefmt
     \Glsxtrmultientryadjustednamefmt
     \GlsXtrmultientryadjustednamefmt
     \GLSxtrmultientryadjustednamefmt

     \glsxtrmultientryadjustednameother
     \Glsxtrmultientryadjustednameother
     \GlsXtrmultientryadjustednameother
     \GLSxtrmultientryadjustednameother

1.47 (2021-11-04):

 * glossaries-extra.sty:

   - bug fix #185: \s@GlsXtrIfFieldNonZero not defined
     https://www.dickimaw-books.com/bugtracker.php?key=185

   - bug fix: bug fix #175 causes \glscurrentfieldvalue to be redefined

   - new commands:

       \glsxtrapptocsvfield
       \GlsXtrIfValueInFieldCsvList
       \xGlsXtrIfValueInFieldCsvList
       \glsunsetcategoryattribute

   - \glsseeitem list (provided by glossaries.sty) is now redefined
     to make it more flexible. New helper commands:

       \glsseefirstitem
       \glsseelastoxfordsep

   - added starred version of \glsxtrforcsvfield

   - added check for existence of \glscapitalisewords

 * glossaries-extra-stylemods.sty:

   - added

     \glslistitem
     \glsaltlistitem
     \glslistgroupheaderitem
     \glslistgroupafterheader
     \glslistinit

 * glossaries-extra-bib2gls.sty:

   - added starred version of \GlsXtrIfHasNonZeroChildCount

1.46 (2021-09-20):

 * Test bib files added to provide bib2gls support for the
   corresponding test files added to glossaries v4.47:

       example-glossaries-childmultipar.bib
       example-glossaries-longchild.bib

 * glossaries-extra.sty:

   - Package option record=alsoindex has been changed to record=hybrid 
     (alsoindex is now a deprecated synonym).

     This name change is to avoid ambiguity. The "alsoindex" refers to not
     only adding records to the aux file (for bib2gls) but also indexing 
     using the more conventional makeindex/xindy route. This hybrid approach
     is provided for the rare instances where an existing xindy
     rule or module is too complicated to convert to a bib2gls rule but the
     entries need to be fetched from a bib file. There's
     no benefit in using this option with makeindex.

   - Altered the warning text if \printglossary (or
     \printglossaries) is omitted with record=hybrid (since the
     default text with \makeglossaries provided by glossaries.sty 
     assumes no bib2gls).

   - Bug fix #175: https://www.dickimaw-books.com/bugtracker.php?key=175 
     (Spurious space with hyperoutside being false in math mode)

     This is actually a bug in \@glsxtrsetaliasnoindex which
     introduced unwanted scoping in v1.21 when \ifglshasfield (which
     doesn't add grouping) was replaced with the unstarred version of
     \glsxtrifhasfield (which does). This was causing
     \glsxtrsetaliasnoindex to be scoped so it no longer had any
     effect but it also introduced {} which only makes a noticeable
     visual difference under very specific circumstances, such as
     the one in the bug report.

   - replaced some instances of \edef with \protected@edef when
     defining control sequences that store labels or lists of
     labels. Similarly for \xdef and \eappto. (Aiming towards support 
     for UTF-8 characters in labels with PDFLaTeX, but may not be fully 
     implemented so not yet documented.)

     Note that letter group formations using TeX
     (\printnoidxglossary or \printunsrtglossary without bib2gls) still
     don't work if the sort value starts with a UTF-8 character with
     PDFLaTeX. (This is also a limitation of makeindex regardless of 
     the TeX engine.)

 * glossaries-extra-stylemods.sty:

   - Bug fix #181: https://www.dickimaw-books.com/bugtracker.php?key=181
     (stylemods alttree introduces a space at the start of descriptions)

     New commands have now been added to replace the use of 
     \glstreepredesc and \glstreechildpredesc (which were causing
     the problem): \glsalttreepredesc and \glsalttreechildpredesc

 * glossary-topic.sty:

   - Bug fix #176: https://www.dickimaw-books.com/bugtracker.php?key=176
      (Last displayed topic subitem has invalid indentation)

   - Bug fix #182: https://www.dickimaw-books.com/bugtracker.php?key=182
      (topic style doesn't retain hangindent for multi-paragraph descriptions)

1.45 (2020-04-01):

 * glossaries-extra-stylemods.sty:

   - Bug fix: removed duplication of description in treenoname style

   - New command: \glstreenonameChildDescLoc


1.44 (2020-03-23):

 * glossaries-extra.sty:

   - New command \printunsrtinnerglossary

   - Added 'leveloffset' and 'groups' keys to \printunsrtglossary options.

   - Added check for \@printgloss@checkexists (new to glossaries.sty v4.46)
     This will restore the glossary existence check for \printglossary and
     \printnoidxglossary

   - \glswriteentry now uses \GlsXtrIfUnusedOrUndefined instead of
     \ifglsused to allow 'indexonlyfirst' to work with bib2gls

 * glossaries-extra-stylemods.sty:

   - Bug fix: removed duplication of description in alttree style

1.43 (2020-02-28):

 Bug fix: corrected bug in \glsxtrentryfmt that caused an infinite loop

1.42 (2020-02-13):

 * glossaries-extra.sty:

   - added support for glossaries.sty 'disablemakegloss' option
     (introduced to glossaries.sty v4.45).

   - new package option 'prefix' automatically loads glossaries-prefix.sty

   - added warnings if \forallacronyms, \acrshort etc are used with 
     new abbreviation interface.

   - added warning if order=letter used with record=only or record=nameref

   - added check for existence of \alsoname

   - changed \glsseeitemformat, \glsxtrhiername, \Glsxtrhiername,
     \GlsXtrhiername, \GLSxtrhiername, \GLSXTRhiername
     to use \glsfmtname and \glsfmttext (or case-variants) 
     to ensure formatting is applied.

   - \glsfmtfull and \Glsfmtfull PDF case now use \glspdffmtfull

   - \glsfmtfullpl and \Glsfmtfullpl PDF case now use \glspdffmtfullpl

   - added missing text key to long-short, short-long, footnote,
     postfootnote, long-short-sc, short-sc-long, short-sc-footnote,
     short-sc-postfootnote, long-short-sm, short-sm-long,
     short-sm-footnote, short-sm-postfootnote, long-short-em,
     long-em-short-em, short-em-long, short-em-long-em,
     short-em-footnote, short-em-postfootnote, long-short-user,
     long-postshort-user, short-postlong-user, short-long-user,
     long-hyphen-noshort-desc-noreg, long-hyphen-postshort-hyphen,
     short-hyphen-long-hyphen, short-hyphen-postlong-hyphen
     styles.

   - new abbreviation styles: short-footnote-desc (and synonym
     footnote-desc), short-postfootnote-desc (and synonym
     postfootnote-desc), short-sc-footnote-desc,
     short-sc-postfootnote-desc, short-sm-footnote-desc, 
     short-sm-postfootnote-desc, short-em-footnote-desc,
     short-em-postfootnote-desc.

   - added glosssymbolfont attribute

   - \glossentrysymbol: added check for \texorpdfstring (the TeX
     inner part is now robust)

   - new entry formatting commands: 

     \glspdffmtfull, \glspdffmtfullpl, 
     \GLSfmtname, \GLSfmttext, \GLSfmtplural, \GLSfmtfirst, \GLSfmtfirstpl,
     \GLSfmtlong, \GLSfmtlongpl, \GLSfmtfull, \GLSfmtfullpl
     \GLSxtrtitleshort, \GLSxtrtitleshortpl, \GLSxtrtitlename,
     \GLSxtrtitletext, \GLSxtrtitleplural, \GLSxtrtitlefirst,
     \GLSxtrtitlefirstplural, \GLSxtrtitlelong, \Glsxtrtitlelongpl,
     \GLSxtrtitlefull, \GLSxtrtitlefullpl,
     \glsxtrpdfentryfmt (used by \glsxtrentryfmt in PDF bookmarks)

   - new entry referencing command: \glsentrypdfsymbol
     
   - new cross-referencing command: \glsxtrusealias

   - new buffering command: \GlsXtrDiscardUnsetBuffering

   - new list commands: 

        \glsxtrfieldformatlist
        \glsxtrfieldformatcsvlist
        \GlsXtrIfFieldValueInCsvList
        \forallabbreviationlists

   - Bug fixes: 

      - corrected interference caused by 'acronym'/'acronyms'
        package option with abbreviation display style

      - moved \protect inside \glsxtrscsuffix (otherwise it
        interferes with all caps)

      - corrected missing space factor with 'insertdots' attribute

      - \glslink with record was causing an undefined control
        sequence error (\glslabel) in the post-link hook when
        entries are undefined

      - restored original definition of \glsdohyperlink and
        added \glsxtrdohyperlink to reference attributes instead.

      - \GlsXtrSetAltModifier now has a check to ensure '*' or '+'
        haven't been used as the alternative modifier.

      - corrected accessibility support for abbreviations

      - redefine \@gls@entry@field so that it uses \csuse instead of
        \csname (in the event commands like \glsentrytext are used
        in captions or section headings with bib2gls)

 * glossaries-extra-bib2gls.sty:

   - \glsxtrdisplaylocnameref now checks for the existence of
     \glsxtr<counter>locfmt

   - New command: \glsxtrequationlocfmt

   - Redefined \glsdisplaynumberlist and \glsentrynumberlist
     to work with bib2gls

 * glossary-bookindex.sty:

   - replaced hardcoded 'index.' prefix in pdfbookmark with
     new command \glsxtrbookindexbookmarkprefix

 * glossaries-extra-stylemods.sty:

   - new commands:

      \glstreeNoDescSymbolPreLocation
      \glstreegroupheaderskip

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.
